--- gcc-4.4-4.4.7.orig/debian/FAQ.gcj +++ gcc-4.4-4.4.7/debian/FAQ.gcj @@ -0,0 +1,494 @@ +The GCJ FAQ +=========== + + The latest version of this document is always available at + http://gcc.gnu.org/java/faq.html. + + General Questions + + What license is used for libgcj? + How can I report a bug in libgcj? + How can I contribute to libgcj + Is libgcj part of GCC? + Will gcj and libgcj work on my machine? + How can I debug my Java program? + Can I interface byte-compiled and native java code? + + + Java Feature Support + + What Java API's are supported? How complete is + the support? + Does GCJ support using straight C native methods + ala JNI? + Why does GCJ use CNI? + What is the state of AWT support? + How about support for Swing ? + What support is there for RMI ? + Can I use any code from other OpenSource projects + to supplement libgcj's current features ? + What features of the Java language are/arn't supported + + + Build Issues + + I need something more recent than the last release; how + should I build it? + Linker bug on Solaris + Can I configure/build in the source tree? + My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + + Gcj Compile/Link Questions + + Why do I get undefined reference to `main' errors? + Can GCJ only handle source code? + "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + Where does GCJ look for files? + How does gcj resolve wether to compile .class or .java files? + I'm getting link errors! + I'm getting 'undefined symbol: __dso_handle' + + + Runtime Questions + + My program is dumping core! What's going on? + When I run the debugger I get a SEGV in the GC! What's going on? + I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + Can I profile Garbage Collection? + How do I increase the runtime's initial and maximum heap sizes? + How can I profile my application? + My program seems to hang and doesn't produce any output + + + Programming Issues + + Are there any examples of how to use CNI? + Is it possible to invoke GCJ compiled Java code from a + C++ application? + +General Questions +================= + + 1.1 What license is used for libgcj? + + libgcj is distributed under the GPL, with the 'libgcc exception'. + This means that linking with libgcj does not by itself cause + your program to fall under the GPL. See LIBGCJ_LICENSE in + the source tree for more details. + + 1.2 How can I report a bug in libgcj? + + libgcj has a corresponding Gnats bug database which you can + browse. You can also submit new bug reports from the Gnats + page. + + 1.3 How can I contribute to libgcj? + + You can send simple bug fixes in as patches. Please follow + the GCC guidelines for submitting patches. For more complex + changes, you must sign copyright over to the Free Software + Foundation. See the contribution page for details. + + 1.4 Is libgcj part of GCC? + + Yes, libgcj is now part of GCC. It can be downloaded, + configured and built as one single tree. + + 1.5 Will gcj and libgcj work on my machine? + + Gcj and libgcj are known to work more or less with IA-32 and + Sparc Solaris, Tru64 Unix, as well as IA-32, IA-64, Alpha, + and PowerPC Linux. They might work on other + systems. Generally speaking, porting to a new system should + not be hard. This would be a good way to volunteer. + + 1.6 How can I debug my Java program? + + gdb 5.0 includes support for debugging gcj-compiled Java + programs. For more information please read Java Debugging + with gdb. + + 1.7 Can I interface byte-compiled and native java code + + libgcj has a bytecode interpreter that allows you to mix + .class files with compiled code. It works pretty + transparently: if a compiled version of a class is not found + in the application binary or linked shared libraries, the + class loader will search for a bytecode version in your + classpath, much like a VM would. Be sure to build libgcj + with the --enable-interpreter option to enable this + functionality. + + The program "gij" provides a front end to the interpreter + that behaves much like a traditional virtual machine. You + can even use "gij" to run a shared library which is compiled + from java code and contains a main method: + + $ gcj -shared -o lib-HelloWorld.so HelloWorld.java + $ gij HelloWorld + + This works because gij uses Class.forName, which knows how + to load shared objects. + +Java Feature Support +==================== + + 2.1 What Java API's are supported? How complete is + the support? + + Matt Welsh writes: + + Just look in the 'libjava' directory of libgcj and see + what classes are there. Most GUI stuff isn't there yet, + that's true, but many of the other classes are easy to add + if they don't yet exist. + + I think it's important to stress that there is a big + difference between Java and the many libraries which Java + supports. Unfortunately, Sun's promise of "write once, run + everywhere" assumes much more than a JVM: you also need + the full set of JDK libraries. Considering that new Java + APIs come out every week, it's going to be impossible to + track everything. + + To make things worse, you can't simply run Sun's JDK + classes on any old JVM -- they assume that a bunch of + native methods are also defined. Since this native method + requirement isn't defined by the JDK specs, you're + effectively constrained to using Sun's JVMs if you want to + use Sun's JDK libraries. Oh yes -- you could also + reimplement all of those native methods yourself, and make + sure they behave exactly as Sun's do. Note that they're + undocumented! + + 2.2 Does GCJ support using straight C native methods + ala JNI? + + Yes. libgcj now has experimental support for JNI, in + addition to its native Compiled Native Interface (CNI). gcjh + will generate JNI stubs and headers using the "-jni" + option. However, we do prefer CNI: it is more efficient, + easier to write, and (at least potentially) easier to debug. + + 2.3 Why does GCJ use CNI? + + Per Bothner explains: + + We use CNI because we think it is a better solution, + especially for a Java implementation that is based on the + idea that Java is just another programming language that + can be implemented using standard compilation + techniques. Given that, and the idea that languages + implemented using Gcc should be compatible where it makes + sense, it follows that the Java calling convention should + be as similar as practical to that used for other + languages, especially C++, since we can think of Java as a + subset of C++. CNI is just a set of helper functions and + conventions built on the idea that C++ and Java have the + *same* calling convention and object layout; they are + binary compatible. (This is a simplification, but close + enough.) + + 2.4 What is the state of AWT support? + + Work is in progress to implement AWT and Java2D. We intend + to support both GTK and xlib peers written using CNI. Some + components are already working atop the xlib peers. + + 2.5 How about support for Swing? + + Once AWT support is working then Swing support can be + considered. There is at least one free-software partial + implementations of Swing that may be usable. + + 2.6 What support is there for RMI? + + RMI code exists on the CVS trunk (aka gcc 3.1), but it has + not been heavily tested. This code was donated by + Transvirtual Technologies. + + 2.7 Can I use any code from other OpenSource + projects to supplement libgcj's current features? + + Certainly. However, in many cases, if you wanted to + contribute the code back into the official libgcj + distribution, we would require that the original author(s) + assign copyright to the Free Software Foundation. As of + March 6, 2000, libgcj has been relicenced, and copyright + has been assigned to the FSF. This allows us to share and + merge much of the libgcj codebase with the Classpath + project. Our eventual goal is for Classpath to be an + upstream source provider for libgcj, however it will be + some time before this becomes reality: libgcj and Classpath + have different implementations of many core java + classes. In order to merge them, we need to select the best + (most efficient, cleanest) implementation of each + method/class/package, resolve any conflicts created by the + merge, and test the final result. Needless to say, this is + a lot of work. If you can help out, please let us know! + + 2.8 What features of the Java language are/aren't supported. + + GCJ supports all Java language constructs as per the Java + language Specification. Recent GCJ snapshots have added + support for most JDK1.1 (and beyond) language features, + including inner classes. + +Build Issues +============ + + 3.1 I need something more recent than the last release. + How should I build it? + + Please read here: http://gcc.gnu.org/java/build-snapshot.html + + 3.2 Linker bug on Solaris + + There is a known problem with the native Solaris linker when + using gcc/gcj. A good indication you've run into this + problem is if you get an error that looks like the following + when building libgcj: + +ld: warning: option -o appears more than once, first setting taken +ld: fatal: file libfoo.so: cannot open file: No such file or directory +ld: fatal: File processing errors. No output written to .libs/libfoo.so +collect2: ld returned 1 exit status + + A known workaround for this and other reported link problems + on the various releases of Solaris is to build gcc/gcj with + the latest GNU binutils instead of the native Solaris + ld. The most straightforward way to do this is to build and + install binutils, and then reference it in the configure for + gcc via --with-ld=/path_to_binutils_install/bin/ld + (--with-as may also be similarly specified but is not + believed to be required). + + Please note, gcc/gcj must be built using GNU ld prior to + doing a clean build of libgcj! + + 3.3 Can I configure/build in the source tree? + + No. You cannot configure/build in the source tree. If you + try, you'll see something like: + + $ ./configure [...] + Configuring for a i686-pc-linux-gnu host. + *** Cannot currently configure in source tree. + + Instead, you must build in another directory. E.g.: + + $ mkdir build + $ cd build + $ ../configure [...] + + 3.4 My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + If you're using Linux, this probably means you need to + upgrade to a newwer, glibc (libc6) based Linux + distribution. libgcj does not support the older linux libc5. + It might be possible to get a working libgcj by changing + occurances of "sigcontext_struct" to "sigcontext", however + this has not been tested. Even if it works, it is likely + that there are other issues with older libc versions that + would prevent libgcj from working correctly (threads bugs, + for example). + +Gcj Compile/Link Questions +========================== + + 4.1 Why do I get undefined reference to `main' errors? + + When using gcj to link a Java program, you must use the --main= + option to indicate the class that has the desired main method. + This is because every Java class can have a main method, thus + you have to tell gcj which one to use. + + 4.2 Can GCJ only handle source code? + + GCJ will compile both source (.java) and bytecode (.class) + files. However, in many cases the native code produced by + compiling from source is better optimized than that compiled + from .class files. + + Per Bothner explains: + + The reason is that when you compile to bytecode you lose a + lot of information about program structure etc. That + information helps in generating better code. We can in + theory recover the information we need by analysing the + structure of the bytecodes, but it is sometimes difficult + - or sometimes it just that no-one has gotten around to + it. Specific examples include loop structure (gcc + generates better code with explicit loops rather than with + the equivalent spaghetti code), array initializers, and + the JDK 1.1 `CLASS.class' syntax, all of which are + represented using more low-level constructs in bytecode. + + 4.3 "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + + The behavior of "gcj -C" is not at all like javac or jikes, + which will compile (not just scan) all .java's which are out + of date with regard to their .class's. + + 4.4 Where does GCJ look for files? + + GCJ looks for classes to compile based on the CLASSPATH + environment variable. libgcj.jar and other files are found + relative to the path of the compiler itself, so it is safe + to move the entire compiler tree to a different path, and + there is no need to include libgcj.jar in your CLASSPATH. + + 4.5 How does gcj resolve whether to compile .class or .java files? + + GCJ compiles only the files presented to it on the command + line. However, it also needs to scan other files in order to + determine the layout of other classes and check for errors + in your code. For these dependencies, GCJ will favour + .class files if they are available because it is faster to + parse a class file than source code. + + 4.6 I'm getting link errors + + If you get errors at link time that refer to 'undefined + reference to `java::lang::Object type_info function', verify + that you have compiled any CNI C++ files with the -fno-rtti + option. This is only required for versions of GCJ earlier + than 3.0. + + 4.7 I'm getting 'undefined symbol: __dso_handle' + + Some versions of the GNU linker have broken support for the + '.hidden' directive, which results in problems with shared + libraries built with recent versions of gcc. + + There are three solutions: + + - downgrade to binutils that don't support .hidden at all, + - upgrade to a recent binutils, or + - undef the HAVE_GAS_HIDDEN definition in gcc's auto-host.h + (and rebuild gcc). + +Runtime Questions +================= + + 5.1 My program is dumping core! What's going on? + + It could be any number of things. One common mistake is + having your CLASSPATH environment variable pointing at a + third party's java.lang and friends. Either unset CLASSPATH, + or make sure it does not refer to core libraries other than + those found in libgcj.jar.Note that newwer versions of GCJ + will reject the core class library if it wasn't generated by + GCJ itself. + + 5.2 When I run the debugger I get a SEGV in the GC! What's going on? + + This is "normal"; the Garbage Collector (GC) uses it to + determine stack boundaries. It is ordinarily caught and + handled by the GC -- you can see this in the debugger by + using cont to continue to the "real" segv. + + 5.3 I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + + A few things: + + - If your programs allocate many small, short lived objects, + the heap could be filling and triggering GC too + regularly. Try increasing the initial and maximum heap sizes + as per 5.5 How do I increase the runtime's initial and + maximum heap size? + - RE - array accesses. We have sub-optimal runtime checking + code, and the compiler is still not so smart about + automatically removing array checks. If your code is ready, + and it doesn't rely on them, try compiling with + --no-bounds-check. + - Try static linking. On many platforms, dynamic (PIC) + function calls are more expensive than static ones. In + particular, the interaction with boehm-gc seems to incur + extra overhead when shared libraries are used. + - If your Java application doesn't need threads, try + building libgcj using --enable-threads=none. Portions of the + libgcj runtime are still more efficient when + single-threaded. + + 5.4 Can I profile Garbage Collection? + + It is possible to turn on verbose GC output by supressing + the -DSILENT flag during build. One way to do this is to + comment out the line with #define SILENT 1 from + boehm-gc/configure before configuring libgcj. The GC will + print collection statistics to stdout. (Rebuilding boehm-gc + alone without this flag doesn't seem to work.) + + 5.5 How do I increase the runtime's initial and maximum heap sizes? + + Some programs that allocate many small, short-lived objects + can cause the default-sized heap to fill quickly and GC + often. With the 2.95.1 release there is no means to adjust + the heap at runtime. Recent snapshots provide the -ms and + -mx arguments to gij to specify the initial and maximum heap + sizes, respectively. + + 5.6 How can I profile my application? + + Currently, only single threaded Java code may be used by the + profiler (gprof). POSIX threads seem to be incompatible with + the gmon stuff. A couple of other tools that have been + mentioned on the GCJ mailing list are sprof and cprof. The + former is part of GNU libc. + + 5.7 My program seems to hang and doesn't produce any output + + Some versions had a bug in the iconv support. You can work + around it by setting LANG=en_US.UTF-8 at runtime, or give + the following option during compile time + -Dfile.encoding=UTF-8. This problem should no longer occur + as of November 1, 2000. + +Programming Issues +================== + + 6.1 Are there any examples of how to use CNI? + + Glenn Chambers has created a couple of trivial examples for + version 2.95 and version 3.0. As a comparison, here is the + same example as a JNI application using Kaffe. The same + code will work with GCJ, as shown here. + + Note that for version 2.95, you must compile the C++ files + used for CNI with the -fno-rtti option. This constraint + does not apply in version 3.0 and later. + + The primary source of documentation for CNI is at + http://gcc.gnu.org/java/papers/cni/t1.html + + 6.2 Is it possible to invoke GCJ compiled Java code from a + C++ application? + + Yes, GCJ 3.1 supports a CNI-based invocation interface as + well as the traditional JNI invocation API. See the GCJ + Manual for more details on how to use the CNI interface. + +Please send FSF & GNU inquiries & questions tognu@gnu.org.There are +also other waysto contact the FSF. + +These pages are maintained by The GCC team. + +Please send comments on these web pages and GCC to our publicmailing +list at gcc@gnu.org orgcc@gcc.gnu.org, send other questions to +gnu@gnu.org. + +Copyright (C) Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111, USA. + +Verbatim copying and distribution of this entire article is permitted +in any medium, provided this notice is preserved. + +Last modified 2003-04-30 --- gcc-4.4-4.4.7.orig/debian/NEWS.gcc +++ gcc-4.4-4.4.7/debian/NEWS.gcc @@ -0,0 +1,659 @@ +GCC 4.4 Release Series -- Changes, New Features, and Fixes +========================================================== + + +Caveats +======= + +- __builtin_stdarg_start has been completely removed from GCC. + Support for had been deprecated since GCC 4.0. Use + __builtin_va_start as a replacement. + +- Some of the errors issued by the C++ front end that could be + downgraded to warnings in previous releases by using -fpermissive + are now warnings by default. They can be converted into errors by + using -pedantic-errors. + +- Use of the cpp assertion extension will now emit a warning when + -Wdeprecated or -pedantic is used. This extension has been + deprecated for many years, but never warned about. + +- Packed bit-fields of type char were not properly bit-packed on many + targets prior to GCC 4.4. On these targets, the fix in GCC 4.4 + causes an ABI change. For example there is no longer a 4-bit + padding between field a and b in this structure: + + struct foo + { + char a:4; + char b:8; + } __attribute__ ((packed)); + + There is a new warning to help identify fields that are affected: + + foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4 + + The warning can be disabled with -Wno-packed-bitfield-compat. + +- On ARM EABI targets, the C++ mangling of the va_list type has been + changed to conform to the current revision of the EABI. This does + not affect the libstdc++ library included with GCC. + +- The SCOUNT and POS bits of the MIPS DSP control register are now + treated as global. Previous versions of GCC treated these fields as + call-clobbered instead. + +- The MIPS port no longer recognizes the h asm constraint. It was + necessary to remove this constraint in order to avoid generating + unpredictable code sequences. + + One of the main uses of the h constraint was to extract the high + part of a multiplication on 64-bit targets. For example: + + asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y)); + + You can now achieve the same effect using 128-bit types: + + typedef unsigned int uint128_t __attribute__((mode(TI))); + result = ((uint128_t) x * y) >> 64; + +- The second sequence is better in many ways. For example, if x and y + are constants, the compiler can perform the multiplication at + compile time. If x and y are not constants, the compiler can + schedule the runtime multiplication better than it can schedule an + asm statement. + +- Support for a number of older systems and recently unmaintained or + untested target ports of GCC has been declared obsolete in GCC 4.4. + Unless there is activity to revive them, the next release of GCC + will have their sources permanently removed. + +- The following ports for individual systems on particular + architectures have been obsoleted: + + - Generic a.out on IA32 and m68k (i[34567]86-*-aout*, m68k-*-aout*) + - Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*, + armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*, + sh-*-*). This does not affect other more specific targets using + the COFF object format on those architectures, or the more + specific H8300 and SH targets (h8300-*-rtems*, h8300-*-elf*, + sh-*-elf*, sh-*-symbianelf*, sh-*-linux*, sh-*-netbsdelf*, + sh-*-rtems*, sh-wrs-vxworks). + - 2BSD on PDP-11 (pdp11-*-bsd) + - AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*, + powerpc-ibm-aix4.[12]*) + - Tuning support for Itanium1 (Merced) variants. Note that code + tuned for Itanium2 should also run correctly on Itanium1. + +- The protoize and unprotoize utilities have been obsoleted and will + be removed in GCC 4.5. These utilities have not been installed by + default since GCC 3.0. + +- Support has been removed for all the configurations obsoleted in + GCC 4.3. + +- Unknown -Wno-* options are now silently ignored by GCC if no other + diagnostics are issued. If other diagnostics are issued, then GCC + warns about the unknown options. + +- More information on porting to GCC 4.4 from previous versions of GCC + can be found in the porting guide for this release. + + +General Optimizer Improvements +============================== + +- A new command-line switch -findirect-inlining has been added. When + turned on it allows the inliner to also inline indirect calls that + are discovered to have known targets at compile time thanks to + previous inlining. + +- A new command-line switch -ftree-switch-conversion has been added. + This new pass turns simple initializations of scalar variables in + switch statements into initializations from a static array, given + that all the values are known at compile time and the ratio between + the new array size and the original switch branches does not exceed + the parameter --param switch-conversion-max-branch-ratio (default is + eight). + +- A new command-line switch -ftree-builtin-call-dce has been added. + This optimization eliminates unnecessary calls to certain builtin + functions when the return value is not used, in cases where the + calls can not be eliminated entirely because the function may set + errno. This optimization is on by default at -O2 and above. + +- A new command-line switch -fconserve-stack directs the compiler to + minimize stack usage even if it makes the generated code slower. + This affects inlining decisions. + +- When the assembler supports it, the compiler will now emit unwind + information using assembler .cfi directives. This makes it possible + to use such directives in inline assembler code. The new option + -fno-dwarf2-cfi-asm directs the compiler to not use .cfi directives. + +- The Graphite branch has been merged. This merge has brought in a + new framework for loop optimizations based on a polyhedral + intermediate representation. These optimizations apply to all the + languages supported by GCC. The following new code transformations + are available in GCC 4.4: + + - -floop-interchange performs loop interchange transformations on + loops. Interchanging two nested loops switches the inner and + outer loops. For example, given a loop like: + + DO J = 1, M + DO I = 1, N + A(J, I) = A(J, I) * C + ENDDO + ENDDO + + loop interchange will transform the loop as if the user had written: + + DO I = 1, N + DO J = 1, M + A(J, I) = A(J, I) * C + ENDDO + ENDDO + + which can be beneficial when N is larger than the caches, because + in Fortran, the elements of an array are stored in memory + contiguously by column, and the original loop iterates over rows, + potentially creating at each access a cache miss. + + - -floop-strip-mine performs loop strip mining transformations on + loops. Strip mining splits a loop into two nested loops. The + outer loop has strides equal to the strip size and the inner loop + has strides of the original loop within a strip. For example, + given a loop like: + + DO I = 1, N + A(I) = A(I) + C + ENDDO + + loop strip mining will transform the loop as if the user had written: + + DO II = 1, N, 4 + DO I = II, min (II + 3, N) + A(I) = A(I) + C + ENDDO + ENDDO + + - -floop-block performs loop blocking transformations on loops. + Blocking strip mines each loop in the loop nest such that the + memory accesses of the element loops fit inside caches. For + example, given a loop like: + + DO I = 1, N + DO J = 1, M + A(J, I) = B(I) + C(J) + ENDDO + ENDDO + + loop blocking will transform the loop as if the user had written: + + DO II = 1, N, 64 + DO JJ = 1, M, 64 + DO I = II, min (II + 63, N) + DO J = JJ, min (JJ + 63, M) + A(J, I) = B(I) + C(J) + ENDDO + ENDDO + ENDDO + ENDDO + + which can be beneficial when M is larger than the caches, because + the innermost loop will iterate over a smaller amount of data that + can be kept in the caches. + +- A new register allocator has replaced the old one. It is called + integrated register allocator (IRA) because coalescing, register + live range splitting, and hard register preferencing are done + on-the-fly during coloring. It also has better integration with the + reload pass. IRA is a regional register allocator which uses modern + Chaitin-Briggs coloring instead of Chow's priority coloring used in + the old register allocator. More info about IRA internals and + options can be found in the GCC manuals. + +- A new instruction scheduler and software pipeliner, based on the + selective scheduling approach, has been added. The new pass + performs instruction unification, register renaming, substitution + through register copies, and speculation during scheduling. The + software pipeliner is able to pipeline non-countable loops. The new + pass is targeted at scheduling-eager in-order platforms. In GCC 4.4 + it is available for the Intel Itanium platform working by default as + the second scheduling pass (after register allocation) at the -O3 + optimization level. + +- When using -fprofile-generate with a multi-threaded program, the + profile counts may be slightly wrong due to race conditions. The + new -fprofile-correction option directs the compiler to apply + heuristics to smooth out the inconsistencies. By default the + compiler will give an error message when it finds an inconsistent + profile. + +- The new -fprofile-dir=PATH option permits setting the directory + where profile data files are stored when using -fprofile-generate + and friends, and the directory used when reading profile data files + using -fprofile-use and friends. + + +New warning options +=================== + +- The new -Wframe-larger-than=NUMBER option directs GCC to emit a + warning if any stack frame is larger than NUMBER bytes. This may be + used to help ensure that code fits within a limited amount of stack + space. + +- The new -Wno-mudflap option disables warnings about constructs which + can not be instrumented when using -fmudflap. + + +New Languages and Language specific improvements +================================================ + +- Version 3.0 of the OpenMP specification is now supported for the C, + C++, and Fortran compilers. + + +C family +-------- + +- A new optimize attribute was added to allow programmers to change + the optimization level and particular optimization options for an + individual function. You can also change the optimization options + via the GCC optimize pragma for functions defined after the pragma. + The GCC push_options pragma and the GCC pop_options pragma allow you + temporarily save and restore the options used. The GCC + reset_options pragma restores the options to what was specified on + the command line. + +- Uninitialized warnings do not require enabling optimization anymore, + that is, -Wuninitialized can be used together with -O0. + Nonetheless, the warnings given by -Wuninitialized will probably be + more accurate if optimization is enabled. + +- -Wparentheses now warns about expressions such as (!x | y) and (!x & y). + Using explicit parentheses, such as in ((!x) | y), silences this warning. + +- -Wsequence-points now warns within if, while,do while and for + conditions, and within for begin/end expressions. + +- A new option -dU is available to dump definitions of preprocessor + macros that are tested or expanded. + + +C++ +--- + +- Improved experimental support for the upcoming ISO C++ standard, + C++0x. Including support for auto, inline namespaces, generalized + initializer lists, defaulted and deleted functions, new character + types, and scoped enums. + +- Those errors that may be downgraded to warnings to build legacy code + now mention -fpermissive when -fdiagnostics-show-option is enabled. + +- -Wconversion now warns if the result of a static_cast to enumeral + type is unspecified because the value is outside the range of the + enumeral type. + +- -Wuninitialized now warns if a non-static reference or non-static + const member appears in a class without constructors. + +- G++ now properly implements value-initialization, so objects with an + initializer of () and an implicitly defined default constructor will + be zero-initialized before the default constructor is called. + + +Runtime Library (libstdc++) +--------------------------- + +- Improved experimental support for the upcoming ISO C++ standard, + C++0x, including: + + - Support for , , , + , , , , + , and . + + - unique_ptr, additions, exception propagation, and + support for the new character types in and . + + - Existing facilities now exploit initializer lists, defaulted and + deleted functions, and the newly implemented core C++0x features. + + - The standard containers are more efficient together with stateful + allocators. + +- Experimental support for non-standard pointer types in containers. + The long standing libstdc++/30928 has been fixed for targets running + glibc 2.10 or later. + +- As usual, many small and larger bug fixes, in particular quite a few + corner cases in . + + +Fortran +------- + +- GNU Fortran now employs libcpp directly instead of using cc1 as an + external preprocessor. The -cpp option was added to allow manual + invocation of the preprocessor without relying on filename + extensions. + +- The -Warray-temporaries option warns about array temporaries + generated by the compiler, as an aid to optimization. + +- The -fcheck-array-temporaries option has been added, printing a + notification at run time, when an array temporary had to be created + for an function argument. Contrary to -Warray-temporaries the + warning is only printed if the array is noncontiguous. + +- Improved generation of DWARF debugging symbols + +- If using an intrinsic not part of the selected standard (via -std= + and -fall-intrinsics) gfortran will now treat it as if this + procedure were declared EXTERNAL and try to link to a user-supplied + procedure. -Wintrinsics-std will warn whenever this happens. The + now-useless option -Wnonstd-intrinsic was removed. + +- The flag -falign-commons has been added to control the alignment of + variables in COMMON blocks, which is enabled by default in line with + previous GCC version. Using -fno-align-commons one can force commons + to be contiguous in memory as required by the Fortran standard, + however, this slows down the memory access. The option + -Walign-commons, which is enabled by default, warns when padding + bytes were added for alignment. The proper solution is to sort the + common objects by decreasing storage size, which avoids the + alignment problems. + +- Fortran 2003 support has been extended: + + - Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is now + supported (except internal reads from/writes to wide strings). + -fbackslash now supports also \unnnn and \Unnnnnnnn to enter + Unicode characters. + + - Asynchronous I/O (implemented as synchronous I/O) and the + decimal=, size=, sign=, pad=, blank=, and delim= specifiers are + now supported in I/O statements. + + - Support for Fortran 2003 structure constructors and for array + constructor with typespec has been added. + + - Procedure Pointers (but not yet as component in derived types and + as function results) are now supported. + + - Abstract types, type extension, and type-bound procedures (both + PROCEDURE and GENERIC but not as operators). Note: As + CLASS/polymorphyic types are not implemented, type-bound + procedures with PASS accept as non-standard extension TYPE + arguments. + +- Fortran 2008 support has been added: + + - The -std=f2008 option and support for the file extensions .f2008 + and .F2008 has been added. + + - The g0 format descriptor is now supported. + + - The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH, ERF, + ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED are now + available (some of them existed as GNU extension before). Note: + The hyperbolic functions are not yet supporting complex arguments + and the three- argument version of BESSEL_*N is not available. + + - The bit intrinsics LEADZ and TRAILZ have been added. + + +Java (GCJ) +---------- + + +Ada +--- + +- The Ada runtime now supports multilibs on many platforms including + x86_64, SPARC and PowerPC. Their build is enabled by default. + + +New Targets and Target Specific Improvements +============================================ + +ARM +--- + +- GCC now supports optimizing for the Cortex-A9, Cortex-R4 and + Cortex-R4F processors and has many other improvements to + optimization for ARM processors. + +- GCC now supports the VFPv3 variant with 16 double-precision + registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been + renamed to -mfpu=vfpv3. + +- GCC now supports the -mfix-cortex-m3-ldrd option to work around an + erratum on Cortex-M3 processors. + +- GCC now supports the __sync_* atomic operations for ARM EABI GNU/Linux. + +- The section anchors optimization is now enabled by default when + optimizing for ARM. + +- GCC now uses a new EABI-compatible profiling interface for EABI + targets. This requires a function __gnu_mcount_nc, which is + provided by GNU libc versions 2.8 and later. + + +AVR +--- + +- The -mno-tablejump option has been deprecated because it has the + same effect as the -fno-jump-tables option. + +- Added support for these new AVR devices: + + - ATA6289 + - ATtiny13A + - ATtiny87 + - ATtiny167 + - ATtiny327 + - ATmega8C1 + - ATmega16C1 + - ATmega32C1 + - ATmega8M1 + - ATmega16M1 + - ATmega32M1 + - ATmega32U4 + - ATmega16HVB + - ATmega4HVD + - ATmega8HVD + - ATmega64C1 + - ATmega64M1 + - ATmega16U4 + - ATmega32U6 + - ATmega128RFA1 + - AT90PWM81 + - AT90SCR100 + - M3000F + - M3000S + - M3001B + + +IA-32/x86-64 +------------ + +- Support for Intel AES built-in functions and code generation is + available via -maes. + +- Support for Intel PCLMUL built-in function and code generation is + available via -mpclmul. + +- Support for Intel AVX built-in functions and code generation is + available via -mavx. + +- Automatically align the stack for local variables with alignment + requirement. + +- GCC can now utilize the SVML library for vectorizing calls to a set + of C99 functions if -mveclibabi=svml is specified and you link to an + SVML ABI compatible library. + +- A new target attribute was added to allow programmers to change the + target options like -msse2 or -march=k8 for an individual function. + You can also change the target options via the GCC target pragma for + functions defined after the pragma. + +- GCC can now be configured with options --with-arch-32, + --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and + --with-tune-64 to control the default optimization separately for + 32-bit and 64-bit modes. + + +IA-32/IA64 +---------- + +- Support for __float128 (TFmode) IEEE quad type and corresponding + TCmode IEEE complex quad type is available via the soft-fp library + on IA-32/IA64 targets. This includes basic arithmetic operations + (addition, subtraction, negation, multiplication and division) on + __float128 real and TCmode complex values, the full set of IEEE + comparisons between __float128 values, conversions to and from + float, double and long double floating point types, as well as + conversions to and from signed or unsigned integer, signed or + unsigned long integer and signed or unsigned quad (TImode, IA64 + only) integer types. Additionally, all operations generate the full + set of IEEE exceptions and support the full set of IEEE rounding + modes. + + +M68K/ColdFire +------------- + +- GCC now supports instruction scheduling for ColdFire V1, V3 and V4 + processors. (Scheduling support for ColdFire V2 processors was + added in GCC 4.3.) GCC now supports the -mxgot option to support + programs requiring many GOT entries on ColdFire. The + m68k-*-linux-gnu target now builds multilibs by default. + + +MIPS +---- + +- MIPS Technologies have extended the original MIPS SVR4 ABI to + include support for procedure linkage tables (PLTs) and copy + relocations. These extensions allow GNU/Linux executables to use a + significantly more efficient code model than the one defined by the + original ABI. + + GCC support for this code model is available via a new command-line + option, -mplt. There is also a new configure-time option, + --with-mips-plt, to make -mplt the default. + + The new code model requires support from the assembler, the linker, + and the runtime C library. This support is available in binutils + 2.19 and GLIBC 2.9. + +- GCC can now generate MIPS16 code for 32-bit GNU/Linux executables + and 32-bit GNU/Linux shared libraries. This feature requires GNU + binutils 2.19 or above. + +- Support for RMI's XLR processor is now available through the + -march=xlr and -mtune=xlr options. + +- 64-bit targets can now perform 128-bit multiplications inline, + instead of relying on a libgcc function. + +- Native GNU/Linux toolchains now support -march=native and + -mtune=native, which select the host processor. + +- GCC now supports the R10K, R12K, R14K and R16K processors. The + canonical -march= and -mtune= names for these processors are r10000, + r12000, r14000 and r16000 respectively. + +- GCC can now work around the side effects of speculative execution on + R10K processors. Please see the documentation of the + -mr10k-cache-barrier option for details. + +- Support for the MIPS64 Release 2 instruction set has been added. + The option -march=mips64r2 enables generation of these instructions. + +- GCC now supports Cavium Networks' Octeon processor. This support is + available through the -march=octeon and -mtune=octeon options. + +- GCC now supports STMicroelectronics' Loongson 2E/2F processors. The + canonical -march= and -mtune= names for these processors are + loongson2e and loongson2f. + + +picochip +-------- + +Picochip is a 16-bit processor. A typical picoChip contains over 250 +small cores, each with small amounts of memory. There are three +processor variants (STAN, MEM and CTRL) with different instruction +sets and memory configurations and they can be chosen using the -mae +option. + +This port is intended to be a "C" only port. + + +Power Architecture and PowerPC +------------------------------ + +- GCC now supports the e300c2, e300c3 and e500mc processors. + +- GCC now supports Xilinx processors with a single-precision FPU. + +- Decimal floating point is now supported for e500 processors. + + +S/390, zSeries and System z9/z10 +-------------------------------- + +- Support for the IBM System z10 EC/BC processor has been added. When + using the -march=z10 option, the compiler will generate code making + use of instructions provided by the General-Instruction-Extension + Facility and the Execute-Extension Facility. + + +VxWorks +------- + +- GCC now supports the thread-local storage mechanism used on VxWorks. + + +Xtensa +------ + +- GCC now supports thread-local storage (TLS) for Xtensa processor + configurations that include the Thread Pointer option. TLS also + requires support from the assembler and linker; this support is + provided in the GNU binutils beginning with version 2.19. + + +Documentation improvements +========================== + +Other significant improvements +============================== + + +------------------------------------------------------------------------------ +Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are +also other ways to contact the FSF. + +These pages are maintained by the GCC team. + +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. Please send comments on these web pages and +the development of GCC to our developer mailing list at gcc@gnu.org or +gcc@gcc.gnu.org. All of our lists have public archives. + +Copyright (C) Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110, USA. + +Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved. + +Last modified 2009-04-21 --- gcc-4.4-4.4.7.orig/debian/NEWS.html +++ gcc-4.4-4.4.7/debian/NEWS.html @@ -0,0 +1,763 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 4.4 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

+GCC 4.4 Release Series
Changes, New Features, and Fixes +

+ +

Caveats

+ +
    +
  • __builtin_stdarg_start has been completely + removed from GCC. Support for <varargs.h> had + been deprecated since GCC 4.0. Use + __builtin_va_start as a replacement.
  • + +
  • Some of the errors issued by the C++ front end that could be + downgraded to warnings in previous releases by using + -fpermissive are now warnings by default. They can be + converted into errors by using -pedantic-errors.
  • + +
  • Use of the cpp assertion extension will now emit a warning + when -Wdeprecated or -pedantic is used. + This extension has been deprecated for many years, but never + warned about.
  • + +
  • Packed bit-fields of type char were not properly + bit-packed on many targets prior to GCC 4.4. On these targets, the fix in + GCC 4.4 causes an ABI change. For example there is no longer a 4-bit + padding between field a and b in this structure: +
    +    struct foo
    +    {
    +      char a:4;
    +      char b:8;
    +    } __attribute__ ((packed));
    +

    There is a new warning to help identify fields that are affected:

    +
    +    foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
    +

    The warning can be disabled with + -Wno-packed-bitfield-compat.

  • + +
  • On ARM EABI targets, the C++ mangling of + the va_list type has been changed to conform to the + current revision of the EABI. This does not affect the libstdc++ + library included with GCC.
  • + +
  • The SCOUNT and POS bits of the MIPS DSP control register are now + treated as global. Previous versions of GCC treated these fields as + call-clobbered instead.
  • + +
  • The MIPS port no longer recognizes the h + asm constraint. It was necessary to remove + this constraint in order to avoid generating unpredictable + code sequences. + +

    One of the main uses of the h constraint + was to extract the high part of a multiplication on + 64-bit targets. For example:

    +
    +    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
    +

    You can now achieve the same effect using 128-bit types:

    +
    +    typedef unsigned int uint128_t __attribute__((mode(TI)));
    +    result = ((uint128_t) x * y) >> 64;
    +

    The second sequence is better in many ways. For example, + if x and y are constants, the + compiler can perform the multiplication at compile time. + If x and y are not constants, + the compiler can schedule the runtime multiplication + better than it can schedule an asm statement.

    +
  • + +
  • Support for a number of older systems and recently + unmaintained or untested target ports of GCC has been declared + obsolete in GCC 4.4. Unless there is activity to revive them, the + next release of GCC will have their sources permanently + removed.

    + +

    The following ports for individual systems on particular + architectures have been obsoleted:

    + +
      +
    • Generic a.out on IA32 and m68k (i[34567]86-*-aout*, + m68k-*-aout*)
    • +
    • Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*, + armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*, + sh-*-*). This does not affect other more specific targets + using the COFF object format on those architectures, or the + more specific H8300 and SH targets (h8300-*-rtems*, + h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*, + sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
    • +
    • 2BSD on PDP-11 (pdp11-*-bsd)
    • +
    • AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*, + powerpc-ibm-aix4.[12]*)
    • +
    • Tuning support for Itanium1 (Merced) variants. Note that + code tuned for Itanium2 should also run correctly on Itanium1.
    • +
    + +
  • + +
  • The protoize and unprotoize + utilities have been obsoleted and will be removed in GCC 4.5. + These utilities have not been installed by default since GCC + 3.0.
  • + +
  • Support has been removed for all the configurations obsoleted + in GCC 4.3.
  • + +
  • Unknown -Wno-* options are now silently ignored + by GCC if no other diagnostics are issued. If other diagnostics + are issued, then GCC warns about the unknown options.
  • + +
  • More information on porting to GCC 4.4 from previous versions + of GCC can be found in + the porting + guide for this release.
  • +
+ +

General Optimizer Improvements

+ +
    +
  • A new command-line switch -findirect-inlining has been + added. When turned on it allows the inliner to also inline indirect + calls that are discovered to have known targets at compile time + thanks to previous inlining.
  • + +
  • A new command-line switch -ftree-switch-conversion has + been added. This new pass turns simple initializations of scalar + variables in switch statements into initializations from a static array, + given that all the values are known at compile time and the ratio between + the new array size and the original switch branches does not exceed + the parameter --param switch-conversion-max-branch-ratio + (default is eight).
  • + +
  • A new command-line switch -ftree-builtin-call-dce + has been added. This optimization eliminates unnecessary calls + to certain builtin functions when the return value is not used, + in cases where the calls can not be eliminated entirely because + the function may set errno. This optimization is + on by default at -O2 and above.
  • + +
  • A new command-line switch -fconserve-stack + directs the compiler to minimize stack usage even if it makes + the generated code slower. This affects inlining + decisions.
  • + +
  • When the assembler supports it, the compiler will now emit + unwind information using assembler .cfi directives. + This makes it possible to use such directives in inline + assembler code. The new option -fno-dwarf2-cfi-asm + directs the compiler to not use .cfi + directives.
  • + +
  • The Graphite + branch has been merged. This merge has brought in a new + framework for loop optimizations based on a polyhedral + intermediate representation. These optimizations apply to all + the languages supported by GCC. The following new code + transformations are available in GCC 4.4:

    + +
      +
    • -floop-interchange + performs loop interchange transformations on loops. Interchanging two + nested loops switches the inner and outer loops. For example, given a + loop like: +
      +          DO J = 1, M
      +            DO I = 1, N
      +              A(J, I) = A(J, I) * C
      +            ENDDO
      +          ENDDO
      +	  
      +

      loop interchange will transform the loop as if the user had written:

      +
      +          DO I = 1, N
      +            DO J = 1, M
      +              A(J, I) = A(J, I) * C
      +            ENDDO
      +          ENDDO
      +	      
      +

      which can be beneficial when N is larger than the caches, + because in Fortran, the elements of an array are stored in memory + contiguously by column, and the original loop iterates over rows, + potentially creating at each access a cache miss.

      +
    • +
    • -floop-strip-mine + performs loop strip mining transformations on loops. Strip mining + splits a loop into two nested loops. The outer loop has strides + equal to the strip size and the inner loop has strides of the + original loop within a strip. For example, given a loop like: +
      +          DO I = 1, N
      +            A(I) = A(I) + C
      +          ENDDO
      +	  
      +

      loop strip mining will transform the loop as if the user had written:

      +
      +          DO II = 1, N, 4
      +            DO I = II, min (II + 3, N)
      +              A(I) = A(I) + C
      +            ENDDO
      +          ENDDO
      +	    
      +
    • +
    • -floop-block + performs loop blocking transformations on loops. Blocking strip mines + each loop in the loop nest such that the memory accesses of the + element loops fit inside caches. For example, given a loop like: +
      +          DO I = 1, N
      +            DO J = 1, M
      +              A(J, I) = B(I) + C(J)
      +            ENDDO
      +          ENDDO
      +	  
      +

      loop blocking will transform the loop as if the user had written:

      +
      +          DO II = 1, N, 64
      +            DO JJ = 1, M, 64
      +              DO I = II, min (II + 63, N)
      +                DO J = JJ, min (JJ + 63, M)
      +                  A(J, I) = B(I) + C(J)
      +                ENDDO
      +              ENDDO
      +            ENDDO
      +          ENDDO
      +	  
      +

      which can be beneficial when M is larger than the caches, + because the innermost loop will iterate over a smaller amount of data + that can be kept in the caches.

      +
    • +
    +
  • +
  • A new register allocator has replaced the old one. It is + called integrated register allocator (IRA) + because coalescing, register live range splitting, and hard + register preferencing are done on-the-fly during coloring. It + also has better integration with the reload pass. IRA is a + regional register allocator which uses modern Chaitin-Briggs + coloring instead of Chow's priority coloring used in the old + register allocator. More info about IRA internals and options + can be found in the GCC manuals. +
  • +
  • A new instruction scheduler and software pipeliner, based on + the selective scheduling approach, has been added. The new pass + performs instruction unification, register renaming, substitution + through register copies, and speculation during scheduling. + The software pipeliner is able to pipeline non-countable loops. + The new pass is targeted at scheduling-eager in-order platforms. + In GCC 4.4 it is available for the Intel Itanium platform + working by default as the second scheduling pass (after register + allocation) at the -O3 optimization level. +
  • + +
  • When using -fprofile-generate with a + multi-threaded program, the profile counts may be slightly wrong + due to race conditions. The + new -fprofile-correction option directs the + compiler to apply heuristics to smooth out the inconsistencies. + By default the compiler will give an error message when it finds + an inconsistent profile.
  • + +
  • The new -fprofile-dir=PATH option permits setting + the directory where profile data files are stored when + using -fprofile-generate and friends, and the + directory used when reading profile data files + using -fprofile-use and friends.
  • + +
+ +

New warning options

+
    + +
  • The new -Wframe-larger-than=NUMBER option directs + GCC to emit a warning if any stack frame is larger + than NUMBER bytes. This may be used to help ensure that + code fits within a limited amount of stack space.
  • + +
  • The new -Wno-mudflap option disables warnings + about constructs which can not be instrumented when + using -fmudflap.
  • + +
+ +

New Languages and Language specific improvements

+ +
    +
  • Version 3.0 of the OpenMP specification + is now supported for the C, C++, and Fortran compilers.
  • +
+ +

C family

+ +
    +
  • A new optimize attribute was added to allow programmers to + change the optimization level and particular optimization options for an + individual function. You can also change the optimization options via the + GCC optimize pragma for functions defined after the pragma. + The GCC push_options pragma and the + GCC pop_options pragma allow you temporarily save and restore + the options used. The GCC reset_options pragma restores the + options to what was specified on the command line. +
  • + +
  • Uninitialized warnings do not require enabling optimization + anymore, that is, -Wuninitialized can be used + together with -O0. Nonetheless, the warnings given + by -Wuninitialized will probably be more accurate if + optimization is enabled. +
  • + +
  • -Wparentheses now warns about expressions such as + (!x | y) and (!x & y). Using explicit + parentheses, such as in ((!x) | y), silences this + warning.
  • + +
  • -Wsequence-points now warns within + if, while,do while + and for conditions, and within for + begin/end expressions. +
  • + +
  • A new option -dU is available to dump definitions + of preprocessor macros that are tested or expanded.
  • + +
+ +

C++

+
    +
  • Improved experimental support for + the upcoming ISO C++ standard, C++0x. Including support + for auto, inline namespaces, generalized initializer + lists, defaulted and deleted functions, new character types, and + scoped enums.
  • + +
  • Those errors that may be downgraded to warnings to build + legacy code now mention -fpermissive when + -fdiagnostics-show-option is enabled.
  • + +
  • -Wconversion now warns if the result of a + static_cast to enumeral type is unspecified because + the value is outside the range of the enumeral type. +
  • + +
  • -Wuninitialized now warns if a non-static + reference or non-static const member appears in a + class without constructors. +
  • + +
  • G++ now properly implements value-initialization, so objects with + an initializer of () and an implicitly defined default + constructor will be zero-initialized before the default constructor is + called.
  • +
+ +

Runtime Library (libstdc++)

+
    +
  • + Improved experimental support for the upcoming ISO C++ standard, + C++0x, including: +
      +
    • Support for <chrono>, <condition_variable>, + <cstdatomic>, <forward_list>, <initializer_list>, + <mutex>, <ratio>, <system_error>, and + <thread>.
    • +
    • unique_ptr, <algorithm> + additions, exception propagation, and support for the new + character types in <string> and <limits>.
    • +
    • Existing facilities now exploit initializer lists, defaulted and + deleted functions, and the newly implemented core C++0x features.
    • +
    • The standard containers are more efficient together with stateful + allocators.
    • +
    +
  • +
  • Experimental support for non-standard pointer types in containers.
  • +
  • The long standing libstdc++/30928 has been fixed for targets running + glibc 2.10 or later.
  • +
  • As usual, many small and larger bug fixes, in particular quite a few + corner cases in <locale>.
  • +
+ +

Fortran

+
    +
  • GNU Fortran now employs libcpp directly instead of using cc1 as an + external preprocessor. The + -cpp option was added to allow manual invocation of the + preprocessor without relying on filename extensions.
  • + +
  • The + -Warray-temporaries option warns about array temporaries + generated by the compiler, as an aid to optimization.
  • + +
  • The + -fcheck-array-temporaries option has been added, printing + a notification at run time, when an array temporary had to be created for + an function argument. Contrary to -Warray-temporaries the + warning is only printed if the array is noncontiguous.
  • + +
  • Improved generation of DWARF debugging symbols
  • + +
  • If using an intrinsic not part of the selected standard (via + -std= and -fall-intrinsics) gfortran will now + treat it as if this procedure were declared EXTERNAL and + try to link to a user-supplied procedure. -Wintrinsics-std + will warn whenever this happens. The now-useless option + -Wnonstd-intrinsic was removed.
  • + +
  • The flag -falign-commons has been added to control the + alignment of variables in COMMON blocks, which is enabled by default in + line with previous GCC version. Using -fno-align-commons one + can force commons to be contiguous in memory as required by the Fortran + standard, however, this slows down the memory access. The option + -Walign-commons, which is enabled by default, warns when + padding bytes were added for alignment. The proper solution is to sort + the common objects by decreasing storage size, which avoids the alignment + problems.
  • + +
  • Fortran 2003 support has been extended: +
      +
    • Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 + I/O is now supported (except internal reads from/writes to wide + strings). + -fbackslash now supports also + \unnnn and \Unnnnnnnn + to enter Unicode characters.
    • +
    • Asynchronous I/O (implemented as synchronous I/O) and the + decimal=, size=, sign=, + pad=, blank=, and delim= + specifiers are now supported in I/O statements.
    • +
    • Support for Fortran 2003 structure constructors and for + array constructor with typespec has been added.
    • +
    • Procedure Pointers (but not yet as component in derived types + and as function results) are now supported.
    • +
    • Abstract types, type extension, and type-bound procedures (both + PROCEDURE and GENERIC but not as + operators). Note: As CLASS/polymorphyic types are + not implemented, type-bound procedures with PASS + accept as non-standard extension TYPE arguments.
    • +
    +
  • +
  • Fortran 2008 support has been added: +
      +
    • The -std=f2008 option and support for the file + extensions .f2008 and .F2008 has been + added.
    • +
    • The g0 format descriptor is now supported.
    • +
    • The Fortran 2008 mathematical intrinsics ASINH, + ACOSH, ATANH, ERF, + ERFC, GAMMA, LOG_GAMMA, + BESSEL_*, HYPOT, + and ERFC_SCALED are now available + (some of them existed as GNU extension before). Note: The hyperbolic + functions are not yet supporting complex arguments and the three- + argument version of BESSEL_*N is not available.
    • +
    • The bit intrinsics LEADZ and TRAILZ + have been added.
    • +
    +
  • +
+ +

Java (GCJ)

+ +

Ada

+
    +
  • The Ada runtime now supports multilibs on many platforms including + x86_64, SPARC and PowerPC. Their build is enabled by default.
  • +
+ +

New Targets and Target Specific Improvements

+ +

ARM

+
    +
  • GCC now supports optimizing for the Cortex-A9, Cortex-R4 and + Cortex-R4F processors and has many other improvements to + optimization for ARM processors.
  • +
  • GCC now supports the VFPv3 variant with 16 double-precision + registers with -mfpu=vfpv3-d16. The + option -mfpu=vfp3 has been renamed + to -mfpu=vfpv3.
  • +
  • GCC now supports the -mfix-cortex-m3-ldrd option + to work around an erratum on Cortex-M3 processors.
  • +
  • GCC now supports the __sync_* atomic operations + for ARM EABI GNU/Linux.
  • +
  • The section anchors optimization is now enabled by default + when optimizing for ARM.
  • +
  • GCC now uses a new EABI-compatible profiling interface for + EABI targets. This requires a + function __gnu_mcount_nc, which is provided by GNU + libc versions 2.8 and later.
  • +
+ +

AVR

+
    +
  • The -mno-tablejump option has been deprecated because + it has the same effect as the -fno-jump-tables option.
  • +
  • Added support for these new AVR devices: +
      +
    • ATA6289
    • +
    • ATtiny13A
    • +
    • ATtiny87
    • +
    • ATtiny167
    • +
    • ATtiny327
    • +
    • ATmega8C1
    • +
    • ATmega16C1
    • +
    • ATmega32C1
    • +
    • ATmega8M1
    • +
    • ATmega16M1
    • +
    • ATmega32M1
    • +
    • ATmega32U4
    • +
    • ATmega16HVB
    • +
    • ATmega4HVD
    • +
    • ATmega8HVD
    • +
    • ATmega64C1
    • +
    • ATmega64M1
    • +
    • ATmega16U4
    • +
    • ATmega32U6
    • +
    • ATmega128RFA1
    • +
    • AT90PWM81
    • +
    • AT90SCR100
    • +
    • M3000F
    • +
    • M3000S
    • +
    • M3001B
    • +
    +
  • +
+ +

IA-32/x86-64

+
    +
  • Support for Intel AES built-in functions and code generation is + available via -maes.
  • +
  • Support for Intel PCLMUL built-in function and code generation is + available via -mpclmul.
  • +
  • Support for Intel AVX built-in functions and code generation is + available via -mavx.
  • +
  • Automatically align the stack for local variables with alignment + requirement.
  • +
  • GCC can now utilize the SVML library for vectorizing calls to + a set of C99 functions if -mveclibabi=svml is specified + and you link to an SVML ABI compatible library.
  • +
  • A new target attribute was added to allow programmers to change the target options like -msse2 or -march=k8 for an individual function. You can also change the target options via the GCC target pragma for functions defined after the pragma.
  • +
  • GCC can now be configured with + options --with-arch-32, --with-arch-64, + --with-cpu-32, --with-cpu-64, + --with-tune-32 and --with-tune-64 to + control the default optimization separately for 32-bit and 64-bit + modes.
  • +
+ +

IA-32/IA64

+
    +
  • Support for __float128 (TFmode) IEEE quad type and + corresponding TCmode IEEE complex quad type is available + via the soft-fp library on IA-32/IA64 targets. + This includes basic arithmetic operations (addition, subtraction, + negation, multiplication and division) on __float128 + real and TCmode complex values, the full set of IEEE comparisons + between __float128 values, conversions to and from + float, double and long double + floating point types, as well as conversions to and from + signed or unsigned integer, + signed or unsigned long integer and + signed or unsigned quad + (TImode, IA64 only) integer types. Additionally, + all operations generate the full set of IEEE exceptions and support + the full set of IEEE rounding modes.
  • +
+ +

M68K/ColdFire

+
    +
  • GCC now supports instruction scheduling for ColdFire V1, V3 + and V4 processors. (Scheduling support for ColdFire V2 processors + was added in GCC 4.3.)
  • +
  • GCC now supports the -mxgot option to support + programs requiring many GOT entries on ColdFire.
  • +
  • The m68k-*-linux-gnu target now builds multilibs by + default.
  • +
+ +

MIPS

+
    +
  • MIPS Technologies have extended the original MIPS SVR4 ABI + to include support for procedure linkage tables (PLTs) + and copy relocations. These extensions allow GNU/Linux + executables to use a significantly more efficient code + model than the one defined by the original ABI.

    + +

    GCC support for this code model is available via a + new command-line option, -mplt. There is also + a new configure-time option, --with-mips-plt, + to make -mplt the default.

    + +

    The new code model requires support from the assembler, + the linker, and the runtime C library. This support is available + in binutils 2.19 and GLIBC 2.9.

  • +
  • GCC can now generate MIPS16 code for 32-bit GNU/Linux executables + and 32-bit GNU/Linux shared libraries. This feature requires + GNU binutils 2.19 or above.
  • +
  • Support for RMI's XLR processor is now available through the + -march=xlr and -mtune=xlr options.
  • +
  • 64-bit targets can now perform 128-bit multiplications inline, + instead of relying on a libgcc function.
  • +
  • Native GNU/Linux toolchains now support -march=native + and -mtune=native, which select the host processor.
  • +
  • GCC now supports the R10K, R12K, R14K and R16K processors. The + canonical -march= and -mtune= names for + these processors are r10000, r12000, + r14000 and r16000 respectively.
  • +
  • GCC can now work around the side effects of speculative execution + on R10K processors. Please see the documentation of the + -mr10k-cache-barrier option for details.
  • +
  • Support for the MIPS64 Release 2 instruction set has been added. The + option -march=mips64r2 enables generation of these + instructions.
  • +
  • GCC now supports Cavium Networks' Octeon processor. This support is + available through the -march=octeon and + -mtune=octeon options.
  • +
  • GCC now supports STMicroelectronics' Loongson 2E/2F processors. The + canonical -march= and -mtune= names for + these processors are loongson2e and + loongson2f.
  • +
+ +

picochip

+ +

Picochip is a 16-bit processor. A typical picoChip contains over 250 + small cores, each with small amounts of memory. There are three processor + variants (STAN, MEM and CTRL) with different instruction sets and memory + configurations and they can be chosen using the -mae option. +

+ +

This port is intended to be a "C" only port.

+ +

Power Architecture and PowerPC

+
    +
  • GCC now supports the e300c2, e300c3 and e500mc processors.
  • +
  • GCC now supports Xilinx processors with a single-precision FPU.
  • +
  • Decimal floating point is now supported for e500 processors.
  • +
+ +

S/390, zSeries and System z9/z10

+
    +
  • Support for the IBM System z10 EC/BC processor has + been added. When using the -march=z10 option, + the compiler will generate code making use of instructions + provided by the General-Instruction-Extension Facility and the + Execute-Extension Facility.
  • +
+ +

VxWorks

+
    +
  • GCC now supports the thread-local storage mechanism used on + VxWorks.
  • +
+ +

Xtensa

+
    +
  • GCC now supports thread-local storage (TLS) for Xtensa processor + configurations that include the Thread Pointer option. TLS also requires + support from the assembler and linker; this support is provided in the + GNU binutils beginning with version 2.19.
  • +
+ +

Documentation improvements

+ +

Other significant improvements

+ + + + + + + + + + + + + + --- gcc-4.4-4.4.7.orig/debian/README +++ gcc-4.4-4.4.7/debian/README @@ -0,0 +1,33 @@ + 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 +Ray Dassen +Jeff Bailey (hurd-i386) +Joel Baker (netbsd-i386) +Philip Blundell (arm-linux) +Ben Collins (sparc-linux) +Randolph Chung (ia64-linux) +Falk Hueffner (alpha-linux) +Dan Jacobowitz (powerpc-linux) +Thiemo Seufer (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Ludovic Brenta (gnat) +Arthur Loiret (gdc) + +=============================================================================== --- gcc-4.4-4.4.7.orig/debian/README.Bugs.m4 +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/README.C++ +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/README.cross +++ gcc-4.4-4.4.7/debian/README.cross @@ -0,0 +1,144 @@ +Building cross-compiler Debian packages +--------------------------------------- + +It is possible to build C and C++ cross compilers and support libraries +from gcc-4.0 source package. This document describes how to do so. +Cross-compiler build support is not perfect yet, please send fixes +and improvements to debian-gcc@lists.debian.org and +debian-embedded@lists.debian.org + +Before you start, you should probably check available pre-built +cross-toolchain debs. Available at http://www.emdebian.org + +Old patches could be reached at + http://zigzag.lvk.cs.msu.su/~nikita/debian/ + +If they are no longer there, you may check EmDebian web site at + http://www.emdebian.org/ +or ask debian-embedded@lists.debian.org for newer location. + +Please check http://bugs.debian.org/391445 if you are about building +gcc-4.3 or above. + +Most of them has been merged with gcc debian sources. + +0. What's wrong with toolchain-source approach + +Package toolchain-source contains sources for binutils and gcc, as well as +some support scripts to build cross-compiler packages. They seem to work. + +However, there is one fundamental problem with this approach. +Gcc package is actively maintained and frequently updated. These updates +do contain bug fixes and improvements, especially for non-x86 architectures. +Cross-compilers built using toolchain-source will not get those fixes unless +toolchain-source package is updated after each binutils and gcc update. +The later is not hapenning in real life. For example, toolchain-source +was upgraded from gcc-3.2 to gcc-3.3 half a year later than gcc-3.3 became +Debian default compiler. + +Keeping toolchain-source package up-to-date requires lots of work, and seems +to be a waste of time. It is much better to build cross-compilers directly +from gcc source package. + + +1. What is needed to build a cross-compiler from gcc-4.3 source + +1.1. dpkg-cross package + +Dpkg-cross package contains several tools to manage cross-compile environment. + +It can convert native debian library and lib-dev packages for the target +architecture to binary-all packages that keep libraries and headers under +/usr/$(TARGET)/. + +Also it contains helper tools for cross-compiling debian packages. Some of +these tools are used while building libgcc1 and libstdc++ library packages. +The resulting library packages follow the same convensions as library packages +converted by dpkg-cross. + +Currently, at least version 1.18 of dpkg-cross is needed for cross-gcc +package build. Version 1.32 of dpkg-cross is needed in order to build gcc-4.3. + +1.2. cross-binutils for the target + +You need cross-binutils for your target to build cross-compiler. +Binutils-multiarch package will not work because it does not provide cross- +assemblers. + +If you don't want to use pre-built cross-binutils packages, you may build +your own from binutils debian source package, using patches posted to +bug #231707. Please use the latest of patch versions available there. + +Alternatively, you may use toolchain-source package to build cross-binutils +(but in this case you will probably also want to use toolchain-source +to build cross-compiler itself). However, multilib'ed cross-compilers may +not build or work with these binutils. + +1.3. libc for target + +You also need libc library and development packages for the target +architecture installed. + +To get those, download linux-kernel-headers, libc6, and libc6-dev binary +debs for your target, convert those using dpkg-cross -b, and install +resulting -arch-cross debs. Consult dpkg-cross manual page for more +information. + +Building with/for alternative libc's is not supported yet (but this is in +TODO). + +Note that if you plan to use your cross-toolchain to develop kernel drivers +or similar low-level things, you will probably also need kernel headers +for the exact kernel version that your target hardware uses. + + +2. Building cross-compiler packages + +Get gcc-4.3 source package. + +Unpack it using dpkg-source -x, and cd to the package directory. + +Set GCC_TARGET environment variable to the target architectire name. Note +that currently you should use debian architecture name (i.e 'powerpc' or 'arm'), +not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET +to GNU system type will cause cross-compiler build to fail. + +Instead of setting GCC_TARGET, target architecture name may be put into +debian/target file. If both GCC_TARGET is defined and debian/target file +exists, GCC_TARGET is used. + +Run debian/rules control. This will change debian/control file, +adjusting build-depends. By default, the packages will not depend on the +system -base package. A variable DEB_CROSS_INDEPENDENT has been merged with DEB_CROSS variable. + +You can then build with either + +$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot + +3. Using crosshurd + +Jeff Bailey suggests alternate way to setup +environment to build cross-compiler, using 'crosshurd' package. +Crosshurd is like debootstrap but cross-arch, and works on the Hurd, +Linux and FreeBSD. (The name is historical). + +If you setup your environment with crosshurd, you will need to fix symlinks +in lib and usr/lib to be relative instead of absolute. For example: + +lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> /lib/libcom_err.so.2 + +Needs to be changed to: + +lrwxrwxrwx 1 root root 20 2004-05-06 23:02 libcom_err.so -> ../../lib/libcom_err.so.2 + +Also, if you choose this method, set the environment variable 'with_sysroot' +to point to the ABSOLUTE PATH where the crosshurd was done. + +Note however that build-depends of cross-gcc and dependencies in generated +libgcc1 and libstdc++ packages assume that you use dpkg-cross to set up +your environment, and may be wrong or incomplete if you use alternate methods. +But probably you don't care. + +-- +Nikita V. Youshchenko - Jun 2004 +Hector Oron Martinez - Oct 2006 --- gcc-4.4-4.4.7.orig/debian/README.gnat +++ gcc-4.4-4.4.7/debian/README.gnat @@ -0,0 +1,22 @@ +If you want to develop Ada programs and libraries on Debian, please +read the Debian Policy for Ada: + +http://www.ada-france.org/debian/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. --- gcc-4.4-4.4.7.orig/debian/README.libstdc++-baseline.in +++ gcc-4.4-4.4.7/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcc-4.4-4.4.7.orig/debian/README.maintainers +++ gcc-4.4-4.4.7/debian/README.maintainers @@ -0,0 +1,237 @@ +-*- 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-4.3: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp, libmudflap, and libgcc. +gcj-4.3: Java. +gnat-4.3: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-4.3 source package, we produce, among many +others, a gcc-4.3-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-4.3/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 two packages, +gcj-4.3 and gnat-4.3. + +For gcj-4.3 and gnat-4.3, the "source tarball" just contains an empty +directory; e.g.: + +$ tar tzf gnat-4.3_4.3-20070609.orig.tar.gz +gnat-4.3-4.3-20070609.orig/ + +The build scripts for all source packages are the same, and they are +included, as usual, in the .diff.gz file. + +* 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: + +gcj-4.3 (4.3-20070609-1) unstable; urgency=low + + * Upload as gcj-4.3. + + -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 + +then, debian/rules will build only the Java binary packages. + +The second step is to unpack the GCC source tarball. This tarball is +either in the build directory (when building gcc-4.3), or in +/usr/src/gcc-4.3/gcc-.tar.bz2 (when building the other +source packages). + +The third 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 fourth 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 fifth 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 sixth 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 seventh 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 eighth 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-4.3 package. + +1) Create a .orig.tar.gz tarball containing a single, empty directory. + +$ mkdir gnat-4.3-4.3-20070609.orig +$ tar czf gnat-4.3_4.3-20070609.orig.tar.gz gnat-4.3-4.3-20070609.orig + +2) Install gcc-4.3-source, which contains the real sources: + +# apt-get install gcc-4.3-source + +3) Create a build directory: + +$ mkdir gnat-4.3-4.3-20070609; cd gnat-4.3-4.3-20070609 + +4) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-4.3/debian + +5) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-4.3" instead of "gcc-4.3". + +6) Generate the debian/control file, adjusted for gnat: + +$ debian/rules control + +7) Build: + +$ dpkg-buildpackage -rfakeroot + +* 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-4.3-4.3-20070901 ~/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. The patches are shell scripts located in debian/patches. +The file debian/rules.defs selects the language front-ends and +libraries to build. Then, based on that, debian/rules.patch selects +which patches to apply and in which order, then applies them and +produces a file listing the applied patches in order in +stamps/02-patch-stamp. + +There is currently no tool to help modify patches; you have to do it +by hand. Here is one possible way to do it: + +1) Apply all patches up to and EXCLUDING the patch you intend to + modify, in order. + +2) Make a deep copy of the src directory, e.g. + $ cp --archive src src.bak + +3) Apply the patch you intend to modify. + +4) Open the .dpatch file in your editor and remove the entire patch + section; leave alone the shell script part at the top. + +5) Change the files you want in the src directory. After making + changes, you can experiment with + $ make -C build -jK + (where K is the number of processor threads you have) + +6) $ diff -rNu src.bak src >> debian/patches/.dpatch + +7) Apply all remaining patches, to see if your change broke any of + them. + +8) $ svn commit debian/patches/.dpatch + +If you want to add a new patch, the procedure is similar. You must +first choose where in the list of patches you want to insert your new +patch. Then, apply all patches up to that point and start editing. +Do not forget to add a reference to your patch at the proper place in +debian/rules.patch. + +** Patching GCC with Quilt + +The above method uses an entire copy of the source tree, which is +currently 474 megabytes in size. If you are in a one-gigabyte ram +disk (see Hints above), this may be a problem. One solution to this +problem is to use quilt, which will only keep copies of the files +touched by patches, not all files. It also automates the updating of +a patch after you change the sources. + +Quilt however does not take into account the selection of patches made +in debian/rules.defs; instead it has a static list of patches. After +calling "debian/rules patch", you can generate such a list like this: + +$ egrep '^[^ ]+:' stamps/02-patch-stamp | \ + sed 's!:!.dpatch -p0!' > debian/patches/series + +Unfortunately, not all patches are applied with -p0; you must then +edit debian/patches/series by hand to replace -p0 with -p1 for a few +patches. + +Once you have your debian/patches/series: + +$ debian/rules unpatch +$ export QUILT_PATCHES=$PWD/debian/patches +$ cd src +$ quilt push -a (or quilt push ) +edit files at will; quilt add to add a new file to the patch +$ make -C ../build +$ quilt refresh +$ quilt push -a # check that no patch is broken +$ quilt pop -a +$ cd .. +$ debian/rules clean build +$ svn commit + +-- +Ludovic Brenta, 2007-12-05. --- gcc-4.4-4.4.7.orig/debian/README.snapshot +++ gcc-4.4-4.4.7/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, gij, gcj, 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-4.4-4.4.7.orig/debian/README.source +++ gcc-4.4-4.4.7/debian/README.source @@ -0,0 +1,14 @@ +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, configure scripts are regenerated +in the `patch' target. + +The source packages gcj-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-4.4-4.4.7.orig/debian/README.ssp +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/TODO +++ gcc-4.4-4.4.7/debian/TODO @@ -0,0 +1,50 @@ +(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, gcj-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 + +* Java + +- build java-gcj-compat from the gcc source? --- gcc-4.4-4.4.7.orig/debian/acats-killer.sh +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/changelog +++ gcc-4.4-4.4.7/debian/changelog @@ -0,0 +1,9368 @@ +gcc-4.4 (4.4.7-8ubuntu1) trusty; urgency=medium + + * Merge with Debian; remaining changes: + - Build from upstream tarball. + + -- Matthias Klose Thu, 20 Mar 2014 04:54:45 +0100 + +gcc-4.4 (4.4.7-8) unstable; urgency=medium + + * Suggest libppl13 instead of libppl12. + + -- Matthias Klose Thu, 20 Mar 2014 04:47:19 +0100 + +gcc-4.4 (4.4.7-7) unstable; urgency=medium + + * Fix build failure with linux-3.8 kernel headers. Closes: #735920. + * Remove the automake dependency for the -source package. Closes: #724373. + + -- Matthias Klose Sat, 18 Jan 2014 22:29:55 +0100 + +gcc-4.4 (4.4.7-6) unstable; urgency=medium + + * Fix build failure with linux-3.8 kernel headers. Closes: #731891. + + -- Matthias Klose Fri, 20 Dec 2013 13:19:55 +0100 + +gcc-4.4 (4.4.7-5ubuntu1) trusty; urgency=low + + * Fix build error with texinfo-5.1. + + -- Matthias Klose Wed, 04 Dec 2013 16:05:18 +0100 + +gcc-4.4 (4.4.7-5) unstable; urgency=low + + * Stop building mudflap packages. + * Stop building the spu cross compiler. + + -- Matthias Klose Wed, 04 Dec 2013 13:40:13 +0100 + +gcc-4.4 (4.4.7-4) unstable; urgency=low + + * Fix build failure with linux-3.8 kernel headers. Closes: #707387. + * Fix build failure on powerpcspe. Closes: #698496. + + -- Matthias Klose Thu, 09 May 2013 11:29:13 +0200 + +gcc-4.4 (4.4.7-3) unstable; urgency=low + + * Lower priority of the gcc-4.4-base package (closes: #498934). + * Replace versioned breaks for gcj-4.4-base with conflicts (closes: #677582). + Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back + gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading + gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). + + -- Matthias Klose Thu, 20 Sep 2012 16:00:47 +0200 + +gcc-4.4 (4.4.7-2ubuntu2) raring; urgency=low + + * Fix build failure with linux-3.8 kernel headers. + + -- Matthias Klose Wed, 30 Jan 2013 18:55:05 +0100 + +gcc-4.4 (4.4.7-2ubuntu1) quantal; urgency=low + + * Merge with Debian, remaining changes: + - Build from upstream tarball. + + -- Matthias Klose Mon, 20 Aug 2012 19:10:05 +0200 + +gcc-4.4 (4.4.7-2) unstable; urgency=low + + * Set the ARM hard-float linker path according to the consensus: + http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html + * Disable ObjC and Obj-C++ packages (Jonathan Nieder). Closes: #682349. + * Install architecture specific README.Debian. Closes: #650102, #669981. + + -- Matthias Klose Thu, 02 Aug 2012 22:03:39 +0200 + +gcc-4.4 (4.4.7-1ubuntu2) precise; urgency=low + + * Pursuant to the cross-distro consensus on the armhf linker path, + update arm-dynamic-linker.diff with Michael Hope's improved patch. + + -- Adam Conrad Fri, 13 Apr 2012 11:40:50 -0600 + +gcc-4.4 (4.4.7-1ubuntu1) precise; urgency=low + + * Merge with Debian, remaining changes: + - Build from upstream tarball. + + -- Matthias Klose Tue, 13 Mar 2012 17:14:03 +0100 + +gcc-4.4 (4.4.7-1) unstable; urgency=low + + * GCC 4.4.7 release. + + -- Matthias Klose Tue, 13 Mar 2012 16:57:34 +0100 + +gcc-4.4 (4.4.6-15ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 08 Mar 2012 20:02:02 +0100 + +gcc-4.4 (4.4.6-15) unstable; urgency=low + + * Update to SVN 20120308 from the gcc-4_4-branch (r185107). + - Fix PR tree-optimization/52430 (LP: #931637), PR target/52408 (hppa), + PR target/51408, PR target/51393 (x86 avx), PR c++/51344. + * gdc-4.4: Provide -{gdc,gdmd}-4.4 symlinks. + + -- Matthias Klose Thu, 08 Mar 2012 19:38:05 +0100 + +gcc-4.4 (4.4.6-14) unstable; urgency=low + + * Fix passing the dynamic linker on armel. + + -- Matthias Klose Thu, 08 Dec 2011 14:47:07 +0100 + +gcc-4.4 (4.4.6-13ubuntu1) precise; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 08 Dec 2011 01:46:26 +0100 + +gcc-4.4 (4.4.6-13) unstable; urgency=low + + * Update to SVN 20111207 from the gcc-4_4-branch (r182076). + - Fix PR bootstrap/50888. + * For ARM hard float, set the dynamic linker to + /lib/arm-linux-gnueabihf/ld-linux.so.3. + + -- Matthias Klose Wed, 07 Dec 2011 12:33:11 +0100 + +gcc-4.4 (4.4.6-12) unstable; urgency=low + + * Update to SVN 20111118 from the gcc-4_4-branch (r181473). + - PR target/30282, PR target/50691, PR target/50788, PR target/50737, + PR c++/50793, PR c++/50618, PR c++/48035, PR fortran/50659, + PR target/50737. + + -- Matthias Klose Fri, 18 Nov 2011 14:09:06 +0100 + +gcc-4.4 (4.4.6-11ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 16 Sep 2011 16:24:40 +0200 + +gcc-4.4 (4.4.6-11) unstable; urgency=medium + + * Update to SVN 20110916 from the gcc-4_4-branch (r178907). + - Fix PR target/50001, PR fortran/50050. + + [ Thorsten Glaser ] + * [m68k] Disable multilib. Closes: #638603. + * [m68k] Fix PR target/47908, taken from the 4.6 branch. Closes: #635918. + + [ Matthias Klose ] + * Let gdc recognize -imultilib (and ignore it). + * Fix the multiarch gdc include path. Closes: #641284. + + [ Aurelien Jarno ] + * gcc.c (for_each_path): Allocate memory for multiarch suffix. + + -- Matthias Klose Fri, 16 Sep 2011 16:15:19 +0200 + +gcc-4.4 (4.4.6-10) unstable; urgency=low + + * Fix non-biarch multiarch builds. + + -- Matthias Klose Thu, 01 Sep 2011 20:57:17 +0200 + +gcc-4.4 (4.4.6-9) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20110826 from the gcc-4_4-branch (r178096). + + * Re-work the multiarch patches. + * Break older gcj-4.4, gnat-4.4, gdc-4.4 versions, changed gcc_lib_dir. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Taken from the gnat-4.6 package: debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + * Fix libgnat* multiarch installation. + * For native builds, gcc -print-file-name now resolve . and .., + and removes the subminor version number. + + [ Aurelien Jarno ] + * Fix multiarch support on mipsel. + + -- Matthias Klose Wed, 31 Aug 2011 12:52:45 +0200 + +gcc-4.4 (4.4.6-8ubuntu2) oneiric; urgency=low + + * Update to SVN 20110826 from the gcc-4_4-branch (r178096). + + * Re-work the multiarch patches. + * Break older gcj-4.4, gnat-4.4, gdc-4.4 versions, changed gcc_lib_dir. + * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, + taken from the trunk. + * Taken from the gnat-4.6 package: debian/patches/ada-symbolic-tracebacks.diff + (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- + to gnatgcc; fixes FTBFS on i386 and closes: #637418. + * Fix libgnat* multiarch installation. + + -- Matthias Klose Fri, 26 Aug 2011 09:24:48 +0200 + +gcc-4.4 (4.4.6-8ubuntu1) oneiric; urgency=low + + * Merge with Debian. + + -- Matthias Klose Wed, 10 Aug 2011 14:37:18 +0200 + +gcc-4.4 (4.4.6-8) unstable; urgency=low + + * Update to SVN 20110810 from the gcc-4_4-branch (r176557). + - Fix PR target/50001, PR target/49920, PR target/47364, PR fortran/49791. + + [ Aurelien Jarno ] + * Add s390x support. + + [ Matthias Klose ] + * Configure for DEB_TARGET_MULTIARCH defaults. + + -- Matthias Klose Wed, 10 Aug 2011 11:37:39 +0200 + +gcc-4.4 (4.4.6-7) unstable; urgency=low + + * Update to SVN 20110721 from the gcc-4_4-branch (r176557). + - Fix PR tree-optimization/49615, PR tree-optimization/49572, + PR target/43603, PR rtl-optimization/48542, PR middle-end/48973, + PR middle-end/49640, PR rtl-optimization/49619, PR c++/49165, + PR middle-end/48973, PR tree-optimization/49039, PR target/49746, + PR target/49723. + + [ Aurelien Jarno ] + * Configure gdc with --disable-multilib on kfreebsd-amd64. Closes: #630101. + + [ Matthias Klose ] + * cpp-4.4: Add empty multiarch directories for the non-default multilibs, + needed for relative lookups from startfile_prefixes. + + -- Matthias Klose Thu, 21 Jul 2011 12:47:54 +0200 + +gcc-4.4 (4.4.6-6ubuntu1) oneiric; urgency=low + + * Update to SVN 20110708 from the gcc-4_4-branch (r176043). + - Fix PR tree-optimization/49615, PR tree-optimization/49572, + PR target/43603, PR rtl-optimization/48542. + + -- Matthias Klose Fri, 08 Jul 2011 18:32:22 +0200 + +gcc-4.4 (4.4.6-6) unstable; urgency=low + + * Fix applying the mips triarch/multiarch patches. + + -- Matthias Klose Sun, 12 Jun 2011 09:31:45 +0200 + +gcc-4.4 (4.4.6-5) unstable; urgency=low + + * Update to SVN 20110611 from the gcc-4_4-branch (r174958). + * Extend multiarch support for mips/mipsel. + + -- Matthias Klose Sat, 11 Jun 2011 21:10:12 +0200 + +gcc-4.4 (4.4.6-4) unstable; urgency=low + + * Update to SVN 20110606 from the gcc-4_4-branch (r174717). + - Fix PR fortran/48894, PR rtl-optimization/48932, + PR rtl-optimization/45593, PR tree-optimization/48837, PR c++/40975, + PR c++/48873, PR c++/48936, PR target/49133, PR rtl-optimization/49007, + PR rtl-optimization/40086, PR target/49186, PR target/43700. + * Check for large file support (backport from 4.6). + * Add some conditionals to build the package on older releases. + * Enable multiarch. + * Add multiarch attributes for gnat and libgnat packages. + * Add multiarch attributes for libgcj* packages. + * Fix some gnat lintian warnings. + + -- Matthias Klose Wed, 08 Jun 2011 02:34:53 +0200 + +gcc-4.4 (4.4.6-3ubuntu1) oneiric; urgency=low + + * Update to SVN 20110523 from the gcc-4_4-branch (r174066). + - Fix PR fortran/48894, PR rtl-optimization/48932, + PR rtl-optimization/45593, PR tree-optimization/48837, PR c++/40975, + PR c++/48873, PR c++/48936. + * Check for large file support (backport from 4.6). + * Add some conditionals to build the package on older releases. + + -- Matthias Klose Mon, 23 May 2011 15:31:57 +0200 + +gcc-4.4 (4.4.6-3) unstable; urgency=low + + * Update to SVN 20110504 from the gcc-4_4-branch (r173386). + - Fix PR target/48774, PR tree-optimization/48809, PR middle-end/48597, + PR target/48288, PR target/48366, PR target/48605, PR c++/42687, + PR c++/48594, PR other/48639. + + [ Matthias Klose ] + * debian/patches/ada-bug601133.diff: Don't use the subminor version number. + + [ Thorsten Glaser ] + * Re-enable common pkgs and libs on m68k for lack of gcc-4.[56]. + + -- Matthias Klose Wed, 04 May 2011 19:54:47 +0200 + +gcc-4.4 (4.4.6-2ubuntu1) oneiric; urgency=low + + * debian/patches/ada-bug601133.diff: Don't use the subminor version number. + + -- Matthias Klose Fri, 22 Apr 2011 16:31:10 +0200 + +gcc-4.4 (4.4.6-2) unstable; urgency=low + + * debian/rules (clean): Revert the previous change, breaks the clean target. + * Update the Linaro support for 4.4.6. + * Only apply armhf-triplet-backport when building with Linaro support. + * Adjust (build)-dependency to new libgmp-dev name. + + -- Matthias Klose Sun, 17 Apr 2011 12:20:44 +0200 + +gcc-4.4 (4.4.6-1) unstable; urgency=low + + * GCC 4.4.6 release. + + [ Matthias Klose ] + * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. + * Fix gdc build for multiarch. + * Fix gdc build with the Linaro branch. + * Fix D system include dir for multiarch locations. + * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported + from a patch sent on the upstream mailing-list. Closes: #621083. + + [Nicolas Boulenguez] + * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.4. + * debian/gnat.1: remove the version number of GCC. Mention gnathtml. + * debian/rules (clean): remove debian/rules.parameters. + + [Ludovic Brenta] + * debian/patches/ada-bug601133.diff: new. Closes: #601133. + + -- Matthias Klose Sat, 16 Apr 2011 12:38:08 +0200 + +gcc-4.4 (4.4.5-15) unstable; urgency=low + + [ Steve Langasek ] + * Backport multiarch support from gcc-4.5. + * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure + Multi-Arch: same doesn't get set for libmudflap when building an + Architecture: all cross-compiler package. + * debian/rules2: use $libdir for libiberty.a. + * debian/rules2: the spu build is not a multiarch build; look in the + correct directory. + * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, + not $(libdir)/jvm-exports. OTOH, libgcj_bc *is* in $(libdir). + * debian/patches/gcc-multiarch-*.diff: make sure we're using the same + set_multiarch_path definition for all variants. + * debian/control.m4: Make sure our libs Pre-Depend on + 'multiarch-support' when building for multiarch. + * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the + multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets + us use a common set of paths on both Debian and Ubuntu, regardless of + the target default optimization level. + * debian/rules.conf: when building for multiarch, we require a + libc-dev that supports the corresponding paths. + * debian/rules.conf: Make dpkg-dev versioned build-dependency + conditional on whether we want to build for multiarch. + * Add a new patch, gcc-multiarch+biarch.diff, used only when building for + multiarch to set our multilib paths to the correct relative directories. + * debian/rules.defs: support turning on multiarch build by distribution. + * debian/rules2: When DEB_HOST_MULTIARCH is available, use it as our + multiarch path. + * rename debian/patches/powerpc-biarch.diff to + debian/patches/gcc-powerpc-nof.diff as in gcc-4.5 and apply + unconditionally to disable softfloat, to keep this change from being + mixed into the biarch32/biarch64/multiarch patches. + * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of + the patch, namely, that the multilib dir for the default variant is + always equal to libdir (the multiarch dir), and we walk up the tree + to find lib for the secondary variant. + * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib + directory rewriting for biarch paths with multiarch as we do without; + still needed in the near term. This corrects a regression that leads to + a binutils misbuild. LP: #737887. + + [ Marcin Juszkiewicz ] + * Fixes issues with staged cross builds. LP: #741855, #741853. + * Fix libdir setting for multiarch enabled cross builds. LP: #741846. + * Drop alternatives for cross builds. LP: #676454. + + -- Matthias Klose Wed, 30 Mar 2011 08:56:15 +0200 + +gcc-4.4 (4.4.5-14) unstable; urgency=low + + * Update to SVN 20110313 from the gcc-4_4-branch (r170916). + - Fix PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47488, + PR fortran/47878, PR libfortran/47694. + * Don't run the libmudflap testsuite on hppa; times out on the buildd. + * Update gmp (build) dependencies. + + -- Matthias Klose Sun, 13 Mar 2011 19:10:37 +0100 + +gcc-4.4 (4.4.5-13) unstable; urgency=low + + * Update to SVN 20110227 from the gcc-4_4-branch (r170549). + - Fix PR fortran/47886, PR target/47840, PR tree-optimization/46620, + PR target/43653, PR fortran/47775, PR libfortran/47830. + + [ Sebastian Andrzej Siewior ] + * PR target/44364. + * Remove -many on powerpcspe (__SPE__). + * Remove classic FPU opcodes from libgcc if target has no support for them + (powerpcspe). + + [ Kees Cook ] + * debian/patches/gcc-default-ssp.patch: + - do not ignore -fstack-protector-all (LP: #691722) + - do not enable -fstack-protector with -ffreestanding. + + [ Matthias Klose ] + * Stop building packages now built from the gcc-4.5 source. + + -- Matthias Klose Sun, 27 Feb 2011 23:02:28 +0100 + +gcc-4.4 (4.4.5-12) unstable; urgency=medium + + * Fix build failure on ia64. + + -- Matthias Klose Wed, 16 Feb 2011 21:05:04 +0100 + +gcc-4.4 (4.4.5-11) unstable; urgency=low + + * Update to SVN 20110215 from the gcc-4_4-branch (r170176). + - Fix PR fortran/46753, PR libgomp/45240, PR target/22224, + PR middle-end/46534, PR tree-optimization/46663, PR c++/46538, + PR fortran/46794, PR fortran/45081, PR fortran/46753, PR target/43309, + PR target/45447, PR target/46915, PR target/40468, PR preprocessor/39213, + PR fortran/46874, PR boehm-gc/34544, PR target/44606, PR target/47318, + PR target/46880, PR middle-end/45852, PR rtl-optimization/46865, + PR c++/47589, PR c++/45894, PR fortran/47569, PR libstdc++/47354, + PR pch/14940. + + [ Marcin Juszkiewicz ] + * Apply ARM target configure options for stage1/stage2 cross builds. + LP: #684625. + * Allow to build only the -source package, and include the version + in the package name. LP: #682333. + * Fix biarch/triarch cross builds. + - dpkg-shlibdeps failed to find libraries for 64 or n32 builds + - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. + + [ Matthias Klose ] + * Update the Linaro support to the 4.4 2011.02 release. + * Pass --no-add-needed by default to the linker. See + http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols + in indirect dependent shared libraries" for more information. + + -- Matthias Klose Tue, 15 Feb 2011 15:02:30 +0100 + +gcc-4.4 (4.4.5-10) unstable; urgency=low + + * Update cell branch to apply on top of SVN 20101129. + + -- Matthias Klose Tue, 30 Nov 2010 13:40:42 +0100 + +gcc-4.4 (4.4.5-9) unstable; urgency=low + + * Update to SVN 20101129 from the gcc-4_4-branch (r167235). + - Fix PR fortran/46638 (wrong code), PR rtl-optimization/46337 (wrong code). + + [ Marcin Juszkiewicz ] + * Do not depend on target mpfr and zlib -dev packages for cross builds. + LP: #676027. + + [ Konstantinos Margaritis ] + * Add support for new target architecture `armhf'. Closes: #603948. + + [ Matthias Klose ] + * Fix powerpc and s390 builds when biarch is disabled. Closes: #604774. + * Update libgcc2 symbols file. Closes: #602099. + + -- Matthias Klose Mon, 29 Nov 2010 15:36:56 +0100 + +gcc-4.4 (4.4.5-8) unstable; urgency=low + + * Update to SVN 20101114 from the gcc-4_4-branch (r166728). + - Fix PR middle-end/43690, PR tree-optimization/46107, PR libgfortran/46373, + PR fortran/45742. + * Don't hardcode debian/patches when referencing patches. Addresses: #600502. + + -- Matthias Klose Sun, 14 Nov 2010 08:33:27 +0100 + +gcc-4.4 (4.4.5-7) unstable; urgency=low + + * Update to SVN 20101111 from the gcc-4_4-branch (r166584). + - Fix PR target/46419 (wrong code), PR libgfortran/46010 (wrong code). + + [ Thorsten Glaser ] + * debian/rules2: Re-enable multi{arch,lib} on m68k. + * debian/patches/m68k-multilib.diff: new, select which multi{arch,lib} + targets to build: keep 680x0 drop cpu32/fidoa (possibly re-evaluated + later but [Bug gas/12180] suggests both do not run Linux anyway). + * debian/patches/pr37053.diff: new, backported from trunk. + * debian/patches/pr46179.diff: new, taken from GCC BZ. + * debian/patches/pr39531.diff: new, taken from git URL from fthain. + * debian/patches/pr41064.diff: new, backported from trunk. + * debian/rules.patch: Add m68k-multilib, pr37053, pr46179, pr39531, + pr41064 on m68k. (pr37053 and pr41064 go together to avoid regressions.) + * debian/rules.defs: remove m68k from locale_no_cpus. + + -- Matthias Klose Thu, 11 Nov 2010 02:04:46 +0100 + +gcc-4.4 (4.4.5-6) unstable; urgency=low + + * Update to SVN 20101029 from the gcc-4_4-branch (r166075). + - Fix PR target/45946, PR fortran/46140. + * Fix patch failure on m68k. + + -- Matthias Klose Fri, 29 Oct 2010 22:45:07 +0200 + +gcc-4.4 (4.4.5-5) unstable; urgency=medium + + * Update to SVN 20101021 from the gcc-4_4-branch (r165755). + Fix PR fortran/42169, PR middle-end/46019 (wrong code), PR fortran/33595. + + [ Thorsten Glaser ] + * Add preliminary m68k support. Closes: #600835. + * debian/patches/gcc-multiarch.diff: Add m68k support. + * debian/rules2: Disable multi{arch,lib} on m68k for now. + * debian/patches/pr41302.diff: new, backported from trunk. + * debian/patches/pr43804.diff: new, taken from GCC BZ. + * debian/rules.patch: Add pr41302, pr43804 on m68k. + + [ Matthias Klose ] + * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), + taken from the trunk. + * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), + taken from the trunk. Closes: #600888. + + -- Matthias Klose Thu, 21 Oct 2010 11:46:36 +0200 + +gcc-4.4 (4.4.5-4) unstable; urgency=medium + + * Fix dangling libmudflap.so symlink. Closes: #600161. + + -- Matthias Klose Sat, 16 Oct 2010 03:44:07 +0200 + +gcc-4.4 (4.4.5-3) unstable; urgency=medium + + * Update to SVN 20101011 from the gcc-4_4-branch (r164607). + - Fix PR target/45820, PR target/45843, PR target/44575, + PR libfortran/45710, PR bootstrap/44621, PR libffi/45677. + - Remove patches applied in the gcc-4_4-branch. + + [ Matthias Klose ] + * Don't use gcc-snapshot for the gnat bootstrap on armel. + * Update the Linaro support to the 4.4 2010.10 release. + * For uploads to experimental, pass --no-add-needed to the linker. + + [ Ludovic Brenta ] + * debian/patches/ada-bug589164.diff: new. Addresses: #589164. + * debian/patches/ada-symbolic-tracebacks.diff: adjust to GCC 4.3 + (belatedly). Addresses: #582452. + + -- Matthias Klose Mon, 11 Oct 2010 17:33:55 +0200 + +gcc-4.4 (4.4.5-2) unstable; urgency=low + + * Fix PR target/45843, PR target/44575, wrong code (__builtin_va_arg + overwrites into adjacent stack location). + + -- Matthias Klose Mon, 04 Oct 2010 13:40:34 +0200 + +gcc-4.4 (4.4.5-1) unstable; urgency=low + + * GCC 4.4.5 final release. + - Fix PR target/44452. + + [ Aurelien Jarno ] + * Only apply gcc-multilib64dir on sparc64 not on sparc. + + [ Matthias Klose ] + * Fix PR libffi/45677, taken from the 4.5 branch. + + -- Matthias Klose Fri, 01 Oct 2010 13:34:32 +0200 + +gcc-4.4 (4.4.4-17) unstable; urgency=low + + * Don't use a hardcoded lib32/ on sparc, use lib64 for both sparc and + sparc64. Closes: #597996. + * Remove README.Debian from the source package to avoid confusion for + readers of the packaging. + + -- Matthias Klose Sat, 25 Sep 2010 13:02:49 +0200 + +gcc-4.4 (4.4.4-16) unstable; urgency=low + + * Update to SVN 20100924 from the gcc-4_4-branch (r164607, 4.4.5 release + candidate). + - Fix PR middle-end/44763, PR rtl-optimization/45728, PR target/35664, + PR middle-end/45678, PR tree-optimization/45709, PR libfortran/45532. + + [ Aurelien Jarno ] + * Use lib/ instead of lib64/ on sparc64. + + -- Matthias Klose Fri, 24 Sep 2010 23:00:45 +0200 + +gcc-4.4 (4.4.4-15) unstable; urgency=low + + * Update to SVN 20100913 from the gcc-4_4-branch (r164250). + - Fix PR rtl-optimization/44919. + + [ Marcin Juszkiewicz ] + * Fix priorities and sections for some cross packages. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + + [ Matthias Klose ] + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + * Add support to build from the Linaro 4.4 2010.09 release (disabled + by default). + * Tighten binutils dependencies to 2.20.1-15. + + [ Iain Buclaw ] + * Add copyrights and licenses for the gdc and libphobos. + * Updates from the gdc branch up to 20100912. + + -- Matthias Klose Fri, 17 Sep 2010 23:16:42 +0200 + +gcc-4.4 (4.4.4-14) unstable; urgency=medium + + * Update to SVN 20100909 from the gcc-4_4-branch (r164128). + - Fix PR middle-end/45312, PR middle-end/44554, PR middle-end/40386, + PR other/45443, PR target/45070, PR fortran/45595. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-14. + + [ Al Viro ] + * Fix installation of libgcc_s.so as a linker script for biarch builds. + + -- Matthias Klose Thu, 09 Sep 2010 22:19:45 +0200 + +gcc-4.4 (4.4.4-13) unstable; urgency=low + + * Always add dependencies on multilib library packages in *-multilib + packages. + * Fix installation of libgcc_s.so on architectures when libgcc_s.so is + a linker script, not a symlink (Steve Langasek). Closes: #595474. + * Remove the lib32gcc1 preinst script. Closes: #595495. + + -- Matthias Klose Sat, 04 Sep 2010 12:35:25 +0200 + +gcc-4.4 (4.4.4-12) unstable; urgency=low + + * Update to SVN 20100902 from the gcc-4_4-branch (r163781). + - Fix PR target/41484, PR middle-end/45423, PR rtl-optimization/45353, + PR c++/44991. + + [ Al Viro ] + * Merge rules for all flavours of libgomp, libmudflap, libobjc. + * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). + * gcc-4.4: libgcc_s.so.1 symlink creation on cross-builds. + * Enable gcc-multilib for cross-builds and fix what needs fixing. + * Enable g++-multilib for cross-builds, fix pathnames. + * Enable gobjc/gobjc++ multilib for cross-builds, fixes. + * Enable gfortran multilib for cross-builds, fix paths. + * Multilib dependency fixes for cross-builds. + * Fix builds with disabled biarch library packages. + * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch + to using them in rules.d/*; as the result, most of the explicit pathnames + in there are gone _and_ we get uniformity across different flavours. + * Merge bi-/tri-arch stuff in binary-gcc.mk. + * Merge rules for libgcc biarch variants. + * Merge rules for libstdc++ biarch variants. Fix n32 variant of + libstdc++-dbg removing _pic.a from the wrong place. + * Merge libgfortran rules. + * Merge rules for cxx-multi and objc-multi packages. + * Enable gcc-hppa64 in cross-gcc-to-hppa build. + + [ Iain Buclaw ] + * gdc: Added stubs for various functions referenced by $(C_TARGET_OBJS). + * gdc-ice-valist.diff: Fixed to handle armel's va_list type. + * gdc-stubs.diff: Fixed for powerpc. + + [ Matthias Klose ] + * Tighten binutils dependencies to 2.20.1-13. + * Update LAST_UPDATED file when applying upstream updates. + * Backport PR target/45070, taken from the 4.5 branch. + * Cleanup packaging files in gcc-source package. + * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). + + [ Marcin Juszkiewicz ] + * Create libgcc1 and gcc-*-base packages for stage2 cross builds. + LP: #628855. + + -- Matthias Klose Fri, 03 Sep 2010 12:41:10 +0200 + +gcc-4.4 (4.4.4-11) unstable; urgency=medium + + * Update to SVN 20100824 from the gcc-4_4-branch (r163521). + - Fix PR rtl-optimization/44691, PR rtl-optimization/42246, + PR rtl-optimization/42389, PR rtl-optimization/42388, + PR rtl-optimization/42294, PR rtl-optimization/39453, + PR rtl-optimization/42246, PR middle-end/42245, + PR rtl-optimization/42249, PR rtl-optimization/41697, + PR rtl-optimization/41697, PR rtl-optimization/40101, + PR target/45296, PR c++/45315. + + [ Marcin Juszkiewicz ] + * Fix building intermediate stages for cross builds. LP: #613401, #613404. + + [ Iain Buclaw ] + * Update gdc to upstream HG 20100824. + * Update gdc-4.4.diff. + + [ Matthias Klose ] + * Integrate and extend bi/tri-arch cross builds patches (Al Viro). + * Fix installation paths in bi/tri-arch libobjc and libmudflap packages + (Al Viro). + * Fix dependencies for mips* triarch library packages depend on *both* lib64* + and libn32* packages. Closes: #594540. + + -- Matthias Klose Fri, 27 Aug 2010 22:36:10 +0200 + +gcc-4.4 (4.4.4-9) unstable; urgency=medium + + * Update to SVN 20100816 from the gcc-4_4-branch (r163287). + - Fix PR middle-end/45262, PR middle-end/41551, PR target/44805, + PR tree-optimization/45109, PR target/44942, + PR middle-end/44632 (closes: #585925), + PR fortran/31588, PR fortran/43954 (closes: #576864), PR fortran/44660. + + [ Matthias Klose ] + * Allow overwriting of the PF macro used in the build from the environment + (Jim Heck). Closes: #588381. + * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. + * gnat-snapshot-build-fix.diff: Let gnat-4.4 build with gnat snapshots + from the trunk (20100803). + * On amd64 and i386, stop building packages built from the gcc-4.5 sources. + * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. + * Add the complete packaging to the -source package. LP: #608650. + * Drop the gcc-ix86-asm-generic32.diff patch. + * Bump version for intra-package dependencies. Addresses: #589337. + * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). + + [ Steve Langasek ] + * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current + case, but required for us to find the libraries when building for + multiarch + * Don't append multiarch paths to any multilib paths except for the default; + our biarch (multilib) builds need to remain independent of multiarch in + the near term, so we want to make sure we can find /usr/lib32 without + /usr/lib/i486-linux-gnu being available. + * debian/control.m4, debian/rules.conf: conditionally set packages to be + Multi-Arch: yes when MULTIARCH is defined. + + [ Marcin Juszkiewicz ] + * Allow building intermediate stages for cross builds. LP: #603497. + + -- Matthias Klose Tue, 17 Aug 2010 02:14:08 +0200 + +gcc-4.4 (4.4.4-8) unstable; urgency=medium + + * Update to SVN 20100728 from the gcc-4_4-branch (r162660). + - Fix PR target/44942, PR target/42869, PR c/44555, PR middle-end/42509, + PR tree-optimization/44977, PR fortran/45019. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + * Copy all debian/rules* files in the -source package. + + [ Matthias Klose ] + * Add descriptions for patches, where missing. + * Rebuild to depend on libmpfr4. + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + * Set Vcs attributes in control file. + * Fix PR java/40816, taken from the gcc-4_5-branch. Addresses: #589459. + * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS + (Jim Heck). Closes: #590102. + + -- Matthias Klose Sat, 31 Jul 2010 18:05:32 +0200 + +gcc-4.4 (4.4.4-7) unstable; urgency=low + + * Update to SVN 20100712 from the gcc-4_4-branch (r162081). + - Fix PR target/44597, PR target/44705, PR tree-optimization/40421, + PR tree-optimization/44683, PR c++/44587, PR fortran/43841, + PR fortran/43843, PR fortran/44582, PR fortran/44847, PR fortran/44773. + + [ Marcin Juszkiewicz ] + * cross-fixes.diff: Remove sh part. + * debian/rules2: Merge rules.d includes. + * Properly -name -dbg packages for cross builds. + * Various cross build fixes. + * Build libmudflap packages for cross builds. + * Merge debian/rules.conf bits for generating the control file + * Fix generation of maintainer scripts for cross packages. + * Build a gcc-base package for cross builds. + + [ Kees Cook ] + * Fix additional libstdc++ testsuite failures for hardening defaults. + + [ Matthias Klose ] + * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in + thumb mode (Andrew Stubbs). + + -- Matthias Klose Mon, 12 Jul 2010 20:12:29 +0200 + +gcc-4.4 (4.4.4-6) unstable; urgency=low + + * Update to SVN 20100622 from the gcc-4_4-branch (r161235). + - Fix PR bootstrap/44544, PR fortran/44536, PR target/44534, + PR tree-optimization/44508, PR target/44261, PR target/43740, + PR bootstrap/44426. PR c++/44627 (LP: #503668), PR target/39690. + + [ Matthias Klose ] + * Add M68K TLS support, backport from the 4.5 branch. Closes: #586060. + * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk + (Loic Minier). + * Fix Fortran cross-compiler build when not building the runtime library. + * Apply proposed fix for PR target/44626 (backport from the 4.5 branch). + LP: #564492. + * Add maintainer scripts for cross packages. + + [ Marcin Juszkiewicz ] + * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. + * ARM: speed up division on Thumb-2 (backport from the trunk). LP: #589779. + + -- Matthias Klose Fri, 25 Jun 2010 03:17:26 +0200 + +gcc-4.4 (4.4.4-5) unstable; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100612 from the gcc-4_4-branch (r160657). + - Fix PR target/44169, PR target/44481, PR target/44075, PR other/43838, + PR libstdc++/32499, PR libgcj/44216. + * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. + * Update libsupc++/vmi_class_type_info.cc from the 4.5 branch. + Closes: #584308. + * Export long double versions of "C" math library for arm-linux-gnueabi, + m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu + (32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. + * Remove the backport for the plugin support. + + [ Aurelien Jarno ] + * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double + versions of "C" math functions in libstdc++ as we need to keep the + ABI. Closes: #584610. + + -- Matthias Klose Sat, 12 Jun 2010 16:13:21 +0200 + +gcc-4.4 (4.4.4-4) unstable; urgency=medium + + * Update to SVN 20100602 from the gcc-4_4-branch (r160193). + - Fix PR c++/43555, PR fortran/44360. + * Don't bother with un-normalized paths in .la files, just remove them. + * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. + * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 + testsuite against the installed lib too. + * Configure with --enable-secureplt on powerpcspe. + * Fix PR target/44261, taken from the trunk. Closes: #582787. + * Apply proposed powerpc backport for PR target/44169. + * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when + configured for i586-linux-gnu or i686-linux-gnu. + + -- Matthias Klose Wed, 02 Jun 2010 23:41:12 +0200 + +gcc-4.4 (4.4.4-3) unstable; urgency=low + + * Update to SVN 20100527 from the gcc-4_4-branch (r159909). + - Fix PR rtl-optimization/39580, PR target/44199, PR target/43733, + PR target/44245, PR tree-optimization/43845, PR debug/44205, + PR bootstrap/43870, PR target/44074, PR target/44202, PR target/44074, + PR c++/44193. + + [ Matthias Klose ] + + * Enable multilibs again on powerpcspe. Closes: #579780. + * Fix setting CC for REVERSE_CROSS build (host == target,host != build). + Closes: #579779. + * Backport fix for PR rtl-optimization/39580 from the trunk. Closes: #576198. + * Fix setting biarch_cpu macro. + + [ Aurelien Jarno ] + + * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and + sparc64 builds. Closes: #583179. + + -- Matthias Klose Thu, 27 May 2010 08:45:06 +0200 + +gcc-4.4 (4.4.4-2) unstable; urgency=low + + [ Matthias Klose ] + + * Update to SVN 20100518 from the gcc-4_4-branch (r159527). + - Fix PR c/43893, PR other/43620, PR middle-end/44085, + PR documentation/44016, PR target/43744, PR debug/43370, + PR middle-end/43671, PR fortran/44036, PR fortran/44135. + * Update cell branch to 20100518. + * Update configury to be able to target i686 instead of i486 on i386. + * Ubuntu only: + - Configure --with-arch-32=i686. + - Pass --hash-style=gnu instead of --hash-style=both to the linker. + - Don't build packages built from the gcc-4.5 sources. + * Add libgcc4 to common libs (not built when built from gcc-4.5 sources). + * Preliminary architecture port for powerpcspe (Kyle Moffett). + Closes: #579780. + * Bump inter package dependencies to 4.4.4-1. Closes: #580148. + + [Ludovic Brenta] + + Merge from gnat-4.4 (4.4.4-3) unstable; urgency=low + + * debian/control.m4, debian/control, debian/rules.d/binary-ada.mk: make + upgrades from Lenny work without broken packages or hard decisions + (part II). + (libgnatvsn-dev, libgnatprj-dev): new dummy transition packages. + + Merge from gnat-4.4 (4.4.4-2) unstable; urgency=low + + * debian/control.m4, debian/control: make upgrades from Lenny work without + broken packages or hard decisions. + (gnat-4.4): replace all previous versions of gnat-X.Y. + (libgnat{vsn,prj}4.4-dev): + - Replace the corresponding 4.3 package in addition to Conflicting with it. + - Suggest the -dbg package, too. + (libgnat{vsn,prj}4.4-dbg): + - Depend on the -dev package, too. + - Do not recommend gnat-gdb, superseded by gdb. + (libgnatprj4.4-dbg): do not recommend libgnatprj-dev, no longer in the archive. + + -- Matthias Klose Tue, 18 May 2010 10:31:15 +0200 + +gcc-4.4 (4.4.4-1) unstable; urgency=low + + * GCC 4.4.4 release. Fixes compared to last upload: + - Fix PR middle-end/43570, PR libgomp/43706, PR libgomp/43569, + PR fortran/43836, PR libgcj/40860. + * Apply proposed patch for PR c/43893. + * Backport two libjava fixes from the trunk to run josm with gcj. + * gcc-4.4-plugin-dev: Don't build anymore. Unused. + + -- Matthias Klose Thu, 29 Apr 2010 12:52:45 +0200 + +gcc-4.4 (4.4.3-9) unstable; urgency=low + + * Update to SVN 20100420 from the gcc-4_4-branch (r158551). + - Fix PR middle-end/43337, PR target/43662, PR tree-optimization/43771, + PR tree-optimization/43769, PR fortran/43339. + * Revert change in last upload, not linking with --hash-style=both on + mips/mipsel. + * Apply proposed patch for PR libgcj/40860, handle --no-merge-exidx-entries. + + -- Matthias Klose Tue, 20 Apr 2010 15:59:18 +0200 + +gcc-4.4 (4.4.3-8) unstable; urgency=low + + * Update to SVN 20100417 from the gcc-4_4-branch (r157925). + - Fix PR target/38085, PR ada/41912, PR target/43643, PR middle-end/42956, + PR tree-optimization/43560, PR tree-optimization/43607, + PR middle-end/43614, PR tree-optimization/43186, PR target/43668, + PR tree-optimization/43629, PR target/43638, PR fortran/43539, + PR libstdc++/40518, PR target/43458, PR libfortran/43605. + * Link with --hash-style=both on mips/mipsel. + * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop + is not passed. + + -- Matthias Klose Sat, 17 Apr 2010 17:33:29 +0200 + +gcc-4.4 (4.4.3-7) unstable; urgency=low + + * Update to SVN 20100401 from the gcc-4_4-branch (r157925). + - Fix PR libfortran/43517, PR tree-optimization/43528, PR target/43524, + PR middle-end/43600, PR other/43562, PR target/39254, + PR target/42113, PR c/43381, PR c++/41185, PR c++/41786, + PR fortran/43409, PR fortran/43409, PR libfortran/43265, + PR fortran/43551, PR libfortran/43605. + + -- Matthias Klose Thu, 01 Apr 2010 21:17:34 +0200 + +gcc-4.4 (4.4.3-6) unstable; urgency=high + + * Update to SVN 20100325 from the gcc-4_4-branch (r157722). + - Fix PR libgomp/42942, PR target/43348, PR tree-optimization/43415, + PR rtl-optimization/43438, PR c++/43116, PR target/43305, + PR middle-end/43419, PR middle-end/42718, PR c/43385. + * gcc-4.4-plugin-dev: Include missing header. + * Apply fix for PR target/42321 from the trunk. + + -- Matthias Klose Thu, 25 Mar 2010 13:21:46 +0100 + +gcc-4.4 (4.4.3-5) unstable; urgency=medium + + * Update to SVN 20100321 from the gcc-4_4-branch (r157610). + - Fix PR target/43417. + * Fix build failure on ia64, don't apply pr43348 twice. + * Fix build failures building cross compilers configured --with-ld. + + -- Matthias Klose Sun, 21 Mar 2010 23:39:36 +0100 + +gcc-4.4 (4.4.3-4) unstable; urgency=low + + * Update to SVN 20100320 from the gcc-4_4-branch (r157597). + - Fix PR c/43248, PR middle-end/42233, PR bootstrap/43121, + PR tree-optimization/43220, PR ada/42253, PR fortran/43303, + PR fortran/43228, PR libfortran/43265, PR rtl-optimization/43360, + PR libfortran/43265. + * gcj-4.4-jre-headless: Stop providing java-virtual-machine. + * Backport plugin support from the trunk: + - Configure with --enable-plugin --disable-browser-plugin. + - Add build support for a gcc-4.4-plugin-dev package. + * Apply proposed fix for PR target/43348. LP: #531697. + * Apply proposed patch for PR middle-end/43323. + * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions + of "C" math functions in libstdc++; these are dropped when built + against glibc-2.11. + * ARM: Backport rev148072 from the trunk. + * Backport proposed patch to enable both gold and ld in a single toolchain. + New option -fuse-ld=ld.bfd, -fuse-ld=gold. + + -- Matthias Klose Sun, 21 Mar 2010 08:15:43 +0100 + +gcc-4.4 (4.4.3-3) unstable; urgency=low + + * Update to SVN 20100226 from the gcc-4_4-branch (r157081). + - Fix PR tree-optimization/42871, PR tree-optimization/42705, + PR debug/43010, PR middle-end/42995, PR tree-optimization/42462, + PR rtl-optimization/42952, PR c++/43024, PR c++/43033, + PR target/40887, PR libstdc++/21769. + - Fix out-of-range branches in Thumb-2 mode. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + + -- Matthias Klose Fri, 26 Feb 2010 04:37:36 +0100 + +gcc-4.4 (4.4.3-2) unstable; urgency=low + + * Update to SVN 20100131 from the gcc-4_4-branch (r156416). + - Fix PR fortran/42866, PR target/42841, PR target/38697, + PR bootstrap/42786, PR middle-end/42898, PR fortran/38324, + PR fortran/41044, PR fortran/41167, PR fortran/42736. + * ada-arm-eabi.diff: system-linux-armel.ads (Stack_Check_Probes): Set + to True. Taken from the trunk. + * Fix PR c++/42748, do not warn about changes to mangling of va_list + in system headers. + * Build gnat-4.4 on armel. + * On sh4-linux, use sh as java architecture name instead of sh4. + + -- Matthias Klose Sun, 31 Jan 2010 22:26:57 +0100 + +gcc-4.4 (4.4.3-1) unstable; urgency=low + + * GCC 4.4.3 release. Fixes compared to last upload: + - Fixes PR middle-end/42760, PR rtl-optimization/42691, + PR middle-end/42674, PR c++/42608, PR c/42721, PR middle-end/42667, + PR middle-end/40281, PR debug/42662, PR c++/42655, PR libjava/40859, + PR target/42774 (closes: #565455), PR target/42542 (ia64), + PR tree-optimization/42773, PR tree-optimization/41826. + * Update the gnat patch for arm from the trunk. + * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite + with -Wno-abi. + + -- Matthias Klose Thu, 21 Jan 2010 16:53:42 +0100 + +gcc-4.4 (4.4.2-9) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20100108 from the gcc-4_4-branch (r155727). + - Fixes PR tree-optimization/42337, PR target/42448, PR middle-end/42099, + PR target/42549 (closes: #560812), PR tree-optimization/41956, + PR target/42503, PR other/42611 (LP: #501921), PR target/42511, + PR target/42564, PR tree-optimization/42614, + PR target/42542 (LP: #403744). + * libgcj10: Move .so symlinks into gcj-4.4-jdk. Addresses: #563280. + * Don't use expect-tcl8.3 on hppa anymore. + * Merge gnat-4.4 changes back from 4.4.2-5. + * Default to v9a (ultrasparc) on sparc*-linux. + * gcj-4.4-jdk: Include /usr/lib/jvm-exports. + * Use 4.4.3 as the upstream version (we'll end up with this version + for the next release anyway). + * Always build libgcc4 on hppa, even if not building libgcc for other + archs (gcc-4.5 bumps the soversion on hppa to 6). + * Base the source build-dependency on the package version instead of the + gcc version. + * Build-depend on autogen again. + + [ Nobuhiro Iwamatsu ] + * Update gcc-multiarch patch for sh4. + + -- Matthias Klose Fri, 08 Jan 2010 08:40:35 +0100 + +gcc-4.4 (4.4.2-8) unstable; urgency=medium + + * Update to SVN 20091228 from the gcc-4_4-branch (r155494). + Fix PR middle-end/41344, PR tree-optimization/42231. + * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. + * Remove gcc-snapshot specific patches (now built from the gcc-4.5 + packaging). + * Remove extra chunk from the patch for PR target/40134, causing + bad code with -Os on powerpc. Closes: #550094. LP: #445534. + + -- Matthias Klose Tue, 29 Dec 2009 00:34:42 +0100 + +gcc-4.4 (4.4.2-7) unstable; urgency=low + + * Update to SVN 20091226 from the gcc-4_4-branch (r155468). + Fix PR rtl-optimization/42475, PR rtl-optimization/42429. + + [ Matthias Klose ] + * Don't call install-info directly, depend on dpkg | install-info instead. + * Remove obsolete fastjar packaging scripts. + * On ARM, pass --hash-style=both to ld. + * Enable multiarch for sh4. Closes: #546443. + + [ Nobuhiro Iwamatsu ] + * Backport from trunk Fix PR target/41993, [sh] ICE in create_pre_exit. + Closes: #556601. + + [ Arthur Loiret ] + * debian/rules.conf (gen_no_archs): Handle multiple arm ports. + + -- Matthias Klose Sat, 26 Dec 2009 10:12:35 +0100 + +gcc-4.4 (4.4.2-6) unstable; urgency=low + + * Update to SVN 20091220 from the gcc-4_4-branch (r155367). + Fix PR c++/42387, PR c++/41183. + + [ Matthias Klose ] + * Apply svn-doc-updates.diff for non DFSG builds. + * gcc-snapshot: + - Remove patches integrated upstream: pr40133.diff. Closes: #561550. + + [ Nobuhiro Iwamatsu ] + * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. + * Backport from trunk: [SH] Not run scheduling before reload as default. + Closes: #561429. + + [ Arthur Loiret ] + * Apply spu patches independently of the hardening patches; fix build + failure on powerpc. + + -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 + +gcc-4.4 (4.4.2-5) unstable; urgency=low + + * Update to SVN 20091212 from the gcc-4_4-branch (r155122). + Revert the fix for PR libstdc++/42261, fix PR fortran/42268, + PR target/42263, PR target/42263, PR target/41196, PR target/41939, + PR rtl-optimization/41574. + + [ Matthias Klose ] + * Regenerate svn-updates.diff. + * Disable biarch testsuite runs for libffi (broken and unused). + * Support xz compression of source tarballs. + * Fix typo in PR libstdc++/40133 to do the link tests. + * gcc-snapshot: + - Remove patches integrated upstream: pr40134-snap.diff. + - Update s390-biarch.diff for trunk. + + [ Aurelien Jarno ] + * Add sparc64 support: disable multilib and install the libraries + in /lib. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 + +gcc-4.4 (4.4.2-4) unstable; urgency=low + + * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: + PR target/42165, PR target/42113, PR libgfortran/42090, + PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, + PR libstdc++/42273 PR java/41991. + + [ Matthias Klose ] + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + * PR target/40134: Don't redefine LIB_SPEC on hppa. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. + * Pass -mimplicit-it=thumb to as by default on ARM, when configured + --with-mode=thumb. + * Fix boehm-gc build on ARM --with-mode=thumb. + * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). + * Build the spu cross compiler for powerpc from the cell-4_4-branch. + * gcj: add option -fuse-atomic-builtins (backport from the trunk). + + [ Arthur Loiret ] + * Make svn update interdiffs more readable. + + -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 + +gcc-4.4 (4.4.2-3) unstable; urgency=low + + * Update to SVN 20091118 from the gcc-4_4-branch (r154294). + Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, + PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, + PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, + PR c++/42061, + PR fortran/41772, PR fortran/41850, PR fortran/41909, + PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, + PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, + PR middle-end/42029. + * Snapshot builds: + - Patch updates. + - Configure with --disable-browser-plugin. + * Configure with --disable-libstdcxx-pch on hppa. + * Backport armel patches form the trunk: + - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + - Enable scheduling for Thumb-2, including the fix for PR target/42031. + - Fix PR target/41939, EABI violation in accessing values below the stack. + + -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 + +gcc-4.4 (4.4.2-2) unstable; urgency=low + + * Update to SVN 20091031 from the gcc-4_4-branch (r153603). + - Fix PR debug/40521, PR target/40913, PR middle-end/22072, + PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, + PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, + PR target/41702, PR c/41842, PR target/41762, PR c++/40808, + PR fortran/41777, PR libstdc++/40852. + * Snapshot builds: + - Configure with --enable-plugin, disable the gcjwebplugin by a patch. + Addresses: #551200. + - Proposed patch for PR lto/41652, compile lto-plugin with + -D_FILE_OFFSET_BITS=64 + - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. + * Fixes for reverse cross builds. + * On sparc default to v9 in 32bit mode. + * Fix __stack_chk_fail check for cross builds configured --with-headers. + * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). + + -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 + +gcc-4.4 (4.4.2-1) unstable; urgency=low + + * GCC 4.4.2 release. + - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, + PR c++/39863, PR c++/41038. + * Fix setting timeout for testsuite runs. + * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled + by default. + * gcj-4.4: Run the libffi testsuite as well. + * Add explicit build dependency on zlib1g-dev. + * Fix cross builds, add support for gomp and gfortran (only tested for + non-biarch targets). + * (Build-)depend on binutils-2.20. + * Fix up omp.h for multilibs (taken from Fedora). + + -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 + +gcc-4.4 (4.4.1-6) unstable; urgency=low + + * Snapshot builds: + - Add build dependency on libelfg0-dev (>= 0.8.12). + - Add build dependency on binutils-gold where available. + - Suggest binutils-gold; not perfect, it is required when using + -use-linker-plugin. + - Work around installation failure in the lto-plugin (PR lto/41569). + - Install java home symlinks in /usr/lib/jvm. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + * PR debug/40521: + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - Depend on binutils (>= 2.19.91.20091005). + * Update to SVN 20091005 from the gcc-4_4-branch (r152450). + - Fixes PR fortran/41479. + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 + +gcc-4.4 (4.4.1-5) unstable; urgency=medium + + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, + PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, + PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, + PR fortran/41515. + * Updates for snapshot builds: + - Fix build dependency on automake for snapshot builds. + - Update patches pr40134-snap and libjava-nobiarch-check-snap. + * Fix lintian errors in libstdc++ packages and lintian warnings in the + source package. + * Add debian/README.source. + * Don't apply PR libstdc++/39491 for the trunk anymore. + * Install java home symlinks for snapshot builds in /usr/lib/jvm, + including javac. Depend on ecj. Addresses #536102. + * Fix build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Link against -ldl instead of -lcloog -lppl. Exit with an error when using + the Graphite loop transformation infrastructure without having the + libcloog-ppl0 package installed (patch taken from Fedora). Packages + using these optimizations should build-depend on libcloog-ppl0. + gcc-4.4: Suggest the cloog runtime libraries. + * Install a hook _Unwind_DebugHook, called during unwinding. Intended as + a hook for a debugger to intercept exceptions. CFA is the CFA of the + target frame. HANDLER is the PC to which control will be transferred + (patch taken from Fedora). + + -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 + +gcc-4.4 (4.4.1-4) unstable; urgency=low + + * Update to SVN 20090911 from the gcc-4_4-branch (r151649). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005, PR target/41184, + PR bootstrap/41180, PR c++/41127, PR fortran/41258, + PR rtl-optimization/40861, PR target/41315, PR fortran/39876. + + [ Matthias Klose ] + * Avoid underscores in doc-base document id's to workaround a + dh_installdocs bug. + * Update file names for the Ada user's guide. + * Set Homepage attribute for packages. + * Update the patch for gnat on armel. + * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. + * Backport patch for PR tree-optimization/41101 from the trunk. + Closes: #541816. + * Update libstdc++6.symbols for symbols introduced with the fix + for PR libstdc++/41005. + * Apply proposed patches for PR libstdc++/40133 and PR target/40134. + Add symbols exception propagation support in libstdc++ on armel + to the libstdc++6 symbols. + + [ Ludovic Brenta] + Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low + * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: + better support for architectures that support only one exception + handling mechanism (SJLJ or ZCX). + + -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 + +gcc-4.4 (4.4.1-3) unstable; urgency=low + + * Update to SVN 20090822 from the gcc-4_4-branch (r151011). + - Fixes PR tree-optimization/41016, PR tree-optimization/41011, + PR tree-optimization/41008, PR tree-optimization/40991, + PR tree-optimization/40964, PR target/8603 (closes: #161432), + PR target/41019, PR target/41015, PR target/40957, PR target/40934, + PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, + PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, + PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, + PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, + PR libfortran/40962. + + [ Arthur Loiret ] + * Only use -fno-stack-protector when known to the stage1 compiler. + + [ Aurelien Jarno ] + * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and + upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). + Closes: #537466. + * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. + + [ Matthias Klose ] + * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot + builds good enough to build itself. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + * On armel build just one version of the ada run-time library. + * Update auto* build dependencies for snapshot builds. + * Apply proposed patch for PR target/40718. + + -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 + +gcc-4.4 (4.4.1-2) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090808 from the gcc-4_4-branch (r150577). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321, PR build/40010, PR fortran/40727, + PR build/40010, PR rtl-optimization/40924, PR c/39902, + PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, + PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, + PR target/40906. + * Bump GCC version required in dependencies to 4.4.1. + * Enable Ada for snapshot builds on all archs with a gnat package + available in the archive. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + + [ Aurelien Jarno ] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 + +gcc-4.4 (4.4.1-1) unstable; urgency=low + + * GCC 4.4.1 release. + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, + PR tree-optimization/40813 (ICE in OpenJDK build on sparc). + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + * Build-depend on libmpc-dev for snapshot builds. + * Fix build failure in cross builds (Hector Oron). Closes: #522597. + * Run the testsuite as part of the build target, not the install target. + + -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 + +gcc-4.4 (4.4.0-11) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20090715 from the gcc-4_4-branch (r149690). + - Corresponds to the 4.4.1 release candidate. + - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, + PR middle-end/40328, PR target/40587, PR middle-end/40585, + PR c++/40566, PR tree-optimization/40542, PR c/39902, + PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, + PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, + PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, + PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, + PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. + * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. + * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. + * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply + yet. + + [Emilio Pozuelo Monfort] + * Backport build-id support, configure with --enable-linker-build-id. + + -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 + +gcc-4.4 (4.4.0-10) unstable; urgency=low + + [ Arthur Loiret ] + * debian/rules.patch: Record the auto* calls to run them once only. + + [ Matthias Klose ] + * Update to SVN 20090627 from the gcc-4_4-branch (r149023). + - Fixes PR other/40024. + * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. + * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. + + -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 + +gcc-4.4 (4.4.0-9) unstable; urgency=high + + * Update to SVN 20090624 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. + * Continue the well planned lib32 transition on amd64, adding pre-dependencies + on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + * Fix spu fortran build in gcc-snapshot builds. + * Add missing symbols for 64bit libgfortran library. + * Update libstdc++ symbol files for sparc 64bit, adding symbols + for exception propagation support. + * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. + Closes: #533843. + + -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 + +gcc-4.4 (4.4.0-8) unstable; urgency=medium + + * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. + * Update to SVN 20090620 from the gcc-4_4-branch (r148747). + - Fixes PR fortran/39800, PR fortran/40402. + * Work around tar bug on kfreebsd unpacking java class file updates (#533356). + + -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 + +gcc-4.4 (4.4.0-7) unstable; urgency=medium + + * Update to SVN 20090618 from the gcc-4_4-branch (r148685). + - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, + PR fortran/40168, PR target/40470. + * On amd64, install 32bit libraries into /lib32 and /usr/lib32. + * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), + libc6-i386 (= 2.9-16). + * Handle serialver alternative in -jdk install scripts, not in -jre-headless. + + -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 + +gcc-4.4 (4.4.0-6) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090612 from the gcc-4_4-branch (r148433). + - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, + PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, + PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, + PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, + PR fortran/22423, PR libfortran/39667, PR libfortran/39782, + PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, + PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, + PR fortran/38654, PR libfortran/37754, PR libfortran/37754, + PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, + PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, + PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, + PR c++/40381, PR fortran/40019, PR fortran/39893. + * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. + * Let gjdoc --version use the Configuration class instead of + version.properties (Alexander Sack). LP: #385682. + * Preserve libgcc_s.so linker scripts. Closes: #532263. + + [Ludovic Brenta] + * debian/patches/ppc64-ada.dpatch, + debian/patches/ada-mips.dpatch, + debian/patches/ada-mipsel.dpatch: remove, merged upstream. + * debian/patches/*ada*.dpatch: + - rename to *.diff; + - remove the dpatch prologue shell script + - refresh with quilt -p ab and without time stamps + - adjust to GCC 4.4 + * debian/patches/ada-library-project-files-soname.diff, + debian/patches/ada-polyorb-dsa.diff, + debian/patches/pr39856.diff: new. + * debian/rules.patch: adjust accordingly. + * debian/rules.defs: re-enable Ada. + * debian/rules2: do a lean bootstrap when building Ada. + * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, + removed upstream. + + -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 + +gcc-4.4 (4.4.0-5) unstable; urgency=medium + + * Update to SVN 20090517 from the gcc-4_4-branch (r147630). + - Fixes PR tree-optimization/40062, PR middle-end/39986, + PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, + PR middle-end/40035, PR target/37179, PR middle-end/39666, + PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, + PR middle-end/40147, PR fortran/40018, PR target/40153. + + [ Matthias Klose ] + * Update libstdc++ symbols files. + * Update libgcc, libobjc, libstdc++ symbols files for armel. + * Fix version symlink in gcc_lib_dir. Closes: #527837. + * Fix symlinks for javac and header files in /usr/lib/jvm. + Closes: #528084. + * Don't build the stage1 compiler with -O with recent binutils (trunk). + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + * On mips/mipsel don't run the java testsuite with -mabi=64. + * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. + * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. + * Remove unneed '..' elements from symlinks in JAVA_HOME. + * Fix some lintian warnings for gcc-snapshot. + + [ Arthur Loiret ] + * Add missing dir separator to multiarch path. Closes: #527537. + + -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 + +gcc-4.4 (4.4.0-4) unstable; urgency=medium + + * Update to SVN 20090506 from the gcc-4_4-branch (r147161). + - Fixes PR rtl-optimization/39914, PR testsuite/39776, + PR tree-optimization/40022, PR libstdc++/39909. + + [ Matthias Klose ] + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libgcc and libstdc++ symbol files for mips and mipsel. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + [ Aurelien Jarno ] + * Fix libc name for biarch packages on kfreebsd-amd64. + + -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 + +gcc-4.4 (4.4.0-3) unstable; urgency=low + + * libstdc++-doc: Install the man pages again. + * Fix build configuration for the GC enabled ObjC runtime library. + * Fix thinko in autotools_files, resulting in autoconf not run in + some cases. + * Do link tests to check for the atomic builtins, enables exception + propagation support in libstdc++ on armel and hppa. + + -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 + +gcc-4.4 (4.4.0-2) unstable; urgency=low + + [ Samuel Thibault ] + * Enable java build on the hurd. + + [ Matthias Klose ] + * libobjc2.symbols.armel: Remove, use the default one. + * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 + symbols file on hppa. + * libstdc++6.symbols.armel: Fix error introduced with copy from the + arm symbols file. + * libstdc++6.symbols.*: Don't assume exception propagation support + enabled for all architectures (although it should on armel, hppa, + sparc). + * Disable the build of the ObjC garbage collection library on mips*, + working around a build failure. + + -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 + +gcc-4.4 (4.4.0-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20090429 from the gcc-4_4-branch (r146989). + * Configure java enabled builds with --enable-java-home. + * Integrate the bits previously found in java-gcj-compat. + * Rename the packages using the naming schema used for OpenJDK: + gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages + {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. + * Build the libgcj documentation with the just built gjdoc. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + * Don't include debug symbols for libstdc++.so.6, if the library is + built by a newer GCC version. + * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. + * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. + * gcc-4.4: Include libssp_nonshared.a. + * For ix86, set the java architecture directory to i386. + + [ Samuel Thibault ] + * Update Hurd changes. + * Configure with --enable-clocale=gnu on hurd-i386. + * debian/patches/hurd-pthread.diff: Reapply. + + -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 + +gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + + [ Aurelien Jarno ] + * kbsd-gnu.diff: remove parts merged upstream. + + [ Matthias Klose ] + * Remove conflicts/replaces for *-spu packages. + * Configure the spu cross compiler without --with-sysroot and + --enable-multiarch. + * Fix and reenable the gfortran-spu build. + * Work around build failures with missing libstdc++ baseline files. + * Install gjdoc man page. + * Fix java configuration with --enable-java-home and include symlinks + for JAVA_HOME in /usr/lib/jvm. + * Apply proposed fix for PR middle-end/39794. + * Install libstdc++ man pages with suffix .3cxx instead of .3. + Closes: #525244. + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + + -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 + +gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low + + * Final GCC 4.4.0 release. + + * Don't build the Fortran SPU cross compiler, currently broken. + * spu cross build: Build without spucache and spumea64. + * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Build using profiled bootstrap. + * Remove the gcc-4.4-base.postinst. Addresses: #524708. + * Update debian/copyright: Include runtime library exception, remove + D and Phobas license. + * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ + on hppa. + * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). + * Update NEWS files for 4.4. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + + -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 + +gcc-4.4 (4.4-20090418-1) experimental; urgency=low + + * Update to SVN 20090418 from the gcc-4_4-branch. + + [ Arthur Loiret ] + * Update patches: + - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: + Rebase on trunk. + - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: + Remove, merged in trunk. + - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 + branch yet. + - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, + gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. + - svn-class-updates, svn-doc-updates, svn-updates: Make empty. + - Refresh all others, and convert them all to quilt. + + * Build system improvements: + - Partial rewrite/refactor of rules files. + - Switch patch system to quilt. + - Autogenerate debian/copyright. + - Use the autoconf2.59 package. + + * multilib/multiarch support improvements: Closes: #369064, #484589. + - mips-triarch.diff: Replace with a newer version (approved upstream). + - s390-biarch.diff: Ditto. + - debian/rules2: Configure with --enable-targets=all on mips-linux, + mipsel-linux and s390-linux. + - gcc-multiarch.diff: New, add multiarch include directories and + libraries path to the system paths. + - debian/rules2: Configure with --enable-multiarch. Configure spu build + with --with-multiarch-defaults=spu-elf. + - multiarch-include.diff: Remove. + - debian/multiarch.inc: Ditto. + + * cross-compilers changes: + - Never build a separated -base package, don't symlink any doc dir. + - Build gobjc again. + + * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to + hopefully fix the massive failure. + * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS + on those archs due to a kernel bug triggered by lsb_release call. + Adresses: #524416. + * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is + enabled. Remove gpc and gdc patches. + * debian/rules.unpack (install_autotools_stamp): Remove. + * debian/rules.defs (configure_dependencies): Remove autotools dependency. + * debian/rules.conf: Add a copyright-file target. + * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. + Make gcc-4.4-source Depends on autoconf2.59. + Add myself to Uploaders. + * debian/rules.d/binary-source.mk: Don't build and install an embedded + copy or autoconf2.59 in gcc-4.4-source. + * debian/copyright.in: New. + + [ Matthias Klose ] + * Build gcj on hppa. + * Add support to build vfp optimized runtime libraries on armel. + * gcc-4.4-spu: Depend on newlib-spu. + * Fix sections of -dbg and java packages. + * gcc-default-ssp.dpatch: Set the default as well, when calling the + preprocessor. LP: #346126. + * Build-depend on quilt. + * Keep the copyright file in the archive. + * Remove conflict of the gcc-X.Y-source packages. + * Update removal of gfdl doc files for 4.4. + * Don't re-run the autotools (introduced with the switch to quilt). + * On arm and armel, install the arm_neon.h header. LP: #360819. + * When hardening options are turned on by default, patch the testsuite + to handle the hardening defaults (Kees Cook). + * Only run the patch target once. Avoids multiple autotool runs, but + doesn't reflect changes in the series file anymore. + * libgcj-doc: Fix documentation title. + * Fix gcj source build with recent build changes. + * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. + * gappletviewer: Include missing binary. + + [ Aurelien Jarno ] + * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). + * kbsd-gnu.diff: add fix for stuff broken by upstream. + + -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 + +gcc-4.4 (4.4-20090317-1) experimental; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). + + [Matthias Klose] + * Branch from the gcc-4.3 packaging. + * Remove *-trunk patches, update remaining patches for the trunk. + * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, + libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, + gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, + hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, + gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. + * Update patches for 4.4, mostly using the patches converted for quilt by + Arthur Loiret. + * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. + * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. + * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included + autoconf tarball. + * debian/rules.d/binary-{gcc,java}.mk: Install new header files. + * debian/libgfortran3.symbols.common: Remove symbol not generated by + gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. + * debian/rules.conf: Update for 4.4. + * Fix build dependencies and configure options for 4.4, which were applied + for snapshot builds only. + + [Arthur Loiret] + * Update patches from debian/patches: + - Remove backported fixes: + PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, + pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, + pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, + pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, + pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. + PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, + pr35965.dpatch, pr37661.dpatch. + PR libgcj: pr24170.dpatch, pr35020.dpatch. + PR gcov-profile: pr38292.dpatch. + PR other: pr28322.dpatch. + * debian/rules.patch: Update. + * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. + + -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 + +gcc-4.3 (4.3.3-5) unstable; urgency=low + + Merge from gnat-4.3 (4.3.3-1): + + [Petr Salinger] + * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. + Fixes: #512277. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely + successful yet). + * New upstream version. Fixes: #514565. + + [Matthias Klose] + * Update to SVN 20090301 from the gcc-4_3-branch. + - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, + PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, + PR target/39228, PR middle-end/36578, PR inline-asm/39058, + PR middle-end/37861. + * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. + * Require binutils-2.19.1. + + -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 + +gcc-4.3 (4.3.3-4) unstable; urgency=low + + * Fix Fix PR gcov-profile/38292 (wrong profile information), taken + from the trunk. + * Update to SVN 20090215 from the gcc-4_3-branch. + Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, + PR c/35433, PR tree-optimization/39041, PR target/38988, + PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, + PR c/36432, PR target/38991, PR c/39084, PR target/39118. + * Reapply the fix for PR middle-end/38615. + * Include autoconf-2.59 sources into the source package, and install as + part of the gcc-4.3-source package. + * Explicitely use autoconf-1.9. + * Disable building the gcjwebplugin. + * Don't configure with --enable-cld on amd64 and i386. + + -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 + +gcc-4.3 (4.3.3-3) unstable; urgency=medium + + * Revert fix for PR middle-end/38615. Closes: #513420. + + -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 + +gcc-4.3 (4.3.3-2) unstable; urgency=low + + * Update to SVN 20090127 from the gcc-4_3-branch. + - Fix PR tree-optimization/38359. Closes: #492505. + - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 + (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), + PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), + PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), + PR fortran/38672 (ice-on-valid-code). + * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. + + -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 + +gcc-4.3 (4.3.3-1) unstable; urgency=low + + * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). + * Fix PR middle-end/38615 (wrong code, taken from the trunk). + + -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 + +gcc-4.3 (4.3.2-4) unstable; urgency=medium + + * Update to SVN 20090119 from the gcc-4_3-branch. + - Fix PR tree-optimization/36765 (wrong code). + * Remove patch for PR 34571, applied upstream (fix build failure on alpha). + * Apply proposed patch for PR middle-end/38902 (wrong code). + + -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 + +gcc-4.3 (4.3.2-3) unstable; urgency=low + + * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). + - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, + PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, + PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, + PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, + PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. + - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. + * Fix PR middle-end/38616 (wrong code with -fstack-protector). + * Update backport for PR28322 (Gunther Nikl). + + -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 + +gcc-4.3 (4.3.2-2) unstable; urgency=low + + * Update to SVN 20090110 from the gcc-4_3-branch. + - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, + PR fortran/37469, PR libstdc++/38000. + + -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 + +gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low + + * Adjust build-dependencies for cross builds. Closes: #499998. + * Update to SVN 20081231 from the gcc-4_3-branch. + - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, + PR target/38402, PR testsuite/35677, PR tree-optimization/38478, + PR target/38054, PR middle-end/29056, PR testsuite/28870, + PR target/38254. + - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. + - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, + PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. + * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. + * Apply the Atomic builtins patch for PARISC. + + -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 + +gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low + + * Update to SVN 20081130 from the gcc-4_3-branch. + - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, + PR rtl-optimization/37489, PR target/35574, PR c/37924, + PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, + PR target/38016, PR target/37939, PR rtl-optimization/37769, + PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, + PR fortran/PR35769, PR fortran/37903, PR fortran/37749. + - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, + PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, + PR c++/37932, PR c++/38007. + - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, + PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. + - Fix PR target/38287. Closes: #506713. + * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken + from the trunk. + + -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 + +gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low + + * Update to SVN 20081117 from the gcc-4_3-branch. + * Add build dependencies on spu packages for snapshot builds. + * Add build dependency on libantlr-java for snapshot builds. + * Disable fortran on spu for snapshot builds. + * Add dependency on binutils-{hppa64,spu} for snapshot builds. + + -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 + +gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low + + * Update to SVN 20081023 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37882 (wrong code), + - Fortran regression fixes: PR fortran/37787, PR fortran/37723. + * Use gij-4.3 for builds in java maintainer mode. + * Don't run the testsuite with -fstack-protector for snapshot builds. + * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. + Don't disable multilibs, install additional components in the gcc-4.3-spu + package. + * Enable building the spu cross compiler for powerpc and ppc64 snapshot + builds. + * Apply proposed patch for PR tree-optimization/37868 (wrong code). + * Apply proposed patch to parallelize make check. + * For biarch builds, disable the gnat testsuite for the non-default + architecture (no biarch support in gnat yet). + + -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 + +gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low + + * Update to SVN 20081017 from the gcc-4_3-branch. + - General regression fixes: PR rtl-optimization/37408 (wrong code), + PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), + PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), + PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on + valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid + code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 + (ice on invalid code), PR tree-optimization/36343 (wrong code), + PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid + code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong + code), PR target/37466 (wrong code, AVR). + - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on + invalid code). + - Fortran regression fixes: PR fortran/37199, PR fortran/36214, + PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, + PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, + PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, + PR fortran/37794. + * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. + * Fix naming of bridge targets in gjavah (wrong header generation). + * Fix PR target/37661, SPARC64 int-to-TFmode conversions. + * Include the complete test summaries in a binary package, to allow + regression checking from the previous build. + * Tighten inter-package dependencies to (>= 4.3.2-1). + * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. + + -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 + +gcc-4.3 (4.3.2-1) unstable; urgency=medium + + [Matthias Klose] + * Final gcc-4.3.2 release (regression fixes). + - Remove the generated install docs from the tarball (GFDL licensed). + - C++ regression fixes: PR debug/37156. + - general regression fixes: PR debug/37156, PR target/37101. + - Java regression fixes: PR libgcj/8995. + * Update to SVN 20080905 from the gcc-4_3-branch. + - C++ regression fixes: PR c++/36741 (wrong diagnostic), + - general regression fixes: PR target/37184 (ice on valid code), + PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), + PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), + PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), + PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), + PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). + - Fortran regression fixes: PR fortran/37193 (rejects valid code). + * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. + * Don't build-depend on autogen on architectures where it is not installable + (needed for the fixincludes testsuite only); don't build-depend on it for + source packages not running the fixincludes testsuite. + + [Ludovic Brenta] + * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. + * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. + * Unconditionally build-depend on gnat when building gnat-4.3. + Fixes: #487564. + * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to + /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. + * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all + adalib directories. + * debian/patches/ada-alpha.dpatch: remove, applied upstream. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. + Closes: #248172. + * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. + * debian/patches/pr15808.dpatch (fixes: #246392), + debian/patches/pr30827.dpatch: new; backport from the trunk. + + -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 + +gcc-4.3 (4.3.1-9) unstable; urgency=low + + * Update to SVN 20080814 from the gcc-4_3-branch. + - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, + PR c++/36405, PR c++/36767, PR c++/36852. + - general regression fixes: PR target/36613, PR rtl-optimization/36998, + PR middle-end/37042, PR middle-end/35432, PR target/35659, + PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, + PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, + PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, + PR tree-optimization/36830, PR c/35746, PR middle-end/37014, + PR middle-end/37103. + - Fortran regression fixes: PR fortran/36132. + - Java regression fixes: PR libgcj/31890. + - Fixes PR middle-end/37090. Closes: #494815. + + -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 + +gcc-4.3 (4.3.1-8) unstable; urgency=low + + * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). + + -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 + +gcc-4.3 (4.3.1-7) unstable; urgency=low + + * Update to SVN 20080722 from the gcc-4_3-branch. + - Fix PR middle-end/36811, infinite loop building with -O3. + - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, + PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. + - Fortran regression fixes: PR fortran/36366, PR fortran/36824. + - general regression fixes: PR middle-end/36877, PR target/36780, + PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, + PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, + PR target/36780, PR target/35492, PR middle-end/36811, + PR rtl-optimization/36419, PR target/35802, PR target/36736, + PR target/34780. + * Revert PR tree-optimization/36262 on i386, causing miscompilation of + OpenJDK hotspot. + * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. + + -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 + +gcc-4.3 (4.3.1-6) unstable; urgency=low + + * Start the logwatch script on alpha as well to avoid timeouts in + the testsuite. + + -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 + +gcc-4.3 (4.3.1-5) unstable; urgency=low + + * Update to SVN 20080705 from the gcc-4_3-branch. + - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. + * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. + * Don't run the libjava testsuite with -mabi=n32. + * Update patch for PR other/28322, that unknown -Wno-* options do not + cause errors, but warnings instead. + * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael + Casadeval for the m68k port). Closes: #489234. + + -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 + +gcc-4.3 (4.3.1-4) unstable; urgency=low + + * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * Remove obsolete multiarch-lib patch. + + -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 + +gcc-4.3 (4.3.1-3) unstable; urgency=medium + + [Arthur Loiret] + * debian/rules2: + - configure sh4-linux with --with-multilib-list=m4,m4-nofpu + and --with-cpu=sh4. + - configure sparc-linux with --enable-targets=all on snapshot builds + (change already in 4.3.1-1). + * debian/rules.patch: Don't apply sh4-multilib.dpatch. + + [Matthias Klose] + * Update to SVN 20080628 from the gcc-4_3-branch. + - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. + Closes: #487115. + * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). + Closes: #483613. + * Do not create a /usr/lib/gcc//4.3.0 symlink. + * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. + * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). + + -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 + +gcc-4.3 (4.3.1-2) unstable; urgency=low + + * Update to SVN 20080610 from the gcc-4_3-branch. + - config.gcc: Fix quoting for in the enable_cld test. + * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. + * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. + * libjava: On armel apply kludge to fix unwinder infinitely looping 'til + it runs out of memory. + * Adjust dependencies to require GCC 4.3.1. + + -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 + +gcc-4.3 (4.3.1-1) unstable; urgency=high + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/pr16087.dpatch: new. Fixes: #248173. + * Correct the patches from the previous upload. + + [Ludovic Brenta] + * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the + bootstrap gnat. + * debian/rules2: when running the Ada test suite, do not run the multilib + tests as gnat does not support multilib yet. + * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). + + [Thiemo Seufer] + * debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. + Fixes: #482433. + + [Matthias Klose] + * GCC-4.3.1 release. + * Do not include standard system paths in libgcj pkgconfig file. + * Suggest the correct libmudflap0-dbg package. + * Fix PR libjava/35020, taken from the trunk. + * Apply proposed patch for PR tree-optimization/36343. + * On hurd-i386 with -fstack-protector do not link with libssp_nonshared + (Samuel Thibault). Closes: #483613. + * Apply proposed patch for PR tree-optimization/34244. + * Remove debian-revision in symbols files. + * Fix installation of all biarch -multilib packages which are not triarch. + * Fix some lintian warnings. + * Include library symlinks in gobjc and gfortran multilib packages, when + not building the library packages. + * Fix sections in doc-base files. + * Don't apply the sparc-biarch patch when building the gcc-snapshot package. + * libjava: Add @file support for gjavah & gjar. + * Apply patch for PR rtl-optimization/36111, taken from the trunk. + + * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: + - General + + Fix PR optimization/3511, inlined strlen() could be smarter. + Close: #86251. + - C + + Fix PR c/9072, Split of -Wconversion in two different flags. + Closes: #128950, #226952. + - C++/libstdc++ + + PR libstdc++/24660, implement versioning weak symbols in libstdc++. + Closes: #328421. + - Architecture specific: + - mips + + PR target/26560, unable to find a register to spill in class + 'FP_REGS'. Closes: #354439. + - sparc + + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. + + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. + Closes: #405065. + + Incorrect SSE2 code generation for vector initialization. + Closes: #406442. + + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. + Closes: #458072. + + Fix regression in code size with -Os compared to GCC-3.3. + Closes: #348298. + - C++ + + Fix initialization of global variables with non-constant initializer. + Closes: #446067. + + Fix ICE building muse. Closes: #429385. + * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: + - C++ + + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. + + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. + Closes: #356316. + + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. + Closes: #327346, #355909. + - Fortran + + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. + - Java + + Fix ICE using gcj with --coverage. Closes: #416326. + + PR libgcj/29869, LogManager class loading failure. Closes: #399251 + + PR swing/29547 setText (String) of JButton does not work + with HTML code. Closes: #392791. + + PR libgcj/29178, CharsetEncoder.canEncode() gives different results + than Sun version. Closes: #388596. + + PR java/8923, ICE when modifying a variable decleared "final static". + Closes: #351512. + + PR java/22507, segfault building Apache Cocoon. Closes: #318534. + + PR java/2499, class members should be inherited from implemented + interfaces. Closes: #225434. + + PR java/10581, ICE compiling freenet. Closes: #186922. + + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. + + PR java/32846, build failure on GNU/Hurd. Closes: #408888. + + PR java/29194, fails to import package from project. Closes: #369873. + + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. + Closes: #426742. + + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. + Closes: #433636. + - Architecture specific: + - alpha + + C++, fix segfault in constructor with -Os. Closes: #438436. + - hppa + + PR target/30131, ICE in propagate_one_insn. Closes: #397341. + - m32r + + PR target/28508, assembler error (operand out of range). + Closes: #417542. + - m68k + + PR target/34688, ICE in output_operand. Closes: #459429. + * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: + - General + + PR tree-optimization/33826, wrong code generation for infinitely + recursive functions. Closes: #445536. + - C++ + + PR c++/24791, ICE on invalid instantiation of template's static member. + Closes: #446698. + + [Aurelien Jarno] + * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. + + -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 + +gcc-4.3 (4.3.0-5) unstable; urgency=medium + + * Update to SVN 20080523 from the gcc-4_3-branch. + - Remove gcc-i386-emit-cld patch. + - On Debian amd64 and i386 configure with --enable-cld. + * Fix PR tree-optimization/36129, ICE with -fprofile-use. + * Add spu build dependencies independent of the architecture. + * Move arm -funroll-loops fix to arm-funroll-loops from + gfortran-armel-updates. Apply it on both arm and armel. + Closes: #476460. + * Use iceape-dev as a build dependency for Java enabled builds. + * Build the sru cross compiler from a separate source dir without applying + the hardening patches. + + -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 + +gcc-4.3 (4.3.0-4) unstable; urgency=low + + [ Aurelien Jarno ] + * Fix gnat-4.3 build on mips/mipsel. + * Update libgcc1 symbols for hurd-i386. + + [ Arthur Loiret ] + * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 + * Build depend on spu build dependencies only when building + as gcc-4.x source package. + * Disable spu for snapshot builds. + * Support sh4 targets: + - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux + - multiarch-include.dpatch: Don't apply on sh4. + + [ Matthias Klose ] + * Stop building libffi packages. + * Update to SVN 20080501 from the gcc-4_3-branch. + - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. + - Fixes mplayer build on powerpc. Closes: #475153. + * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. + * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. + * debian/patches/template.dpatch: Remove the `exit 0' line. + * Fix alternative names for amd64 cross builds. Addresses: #466422. + * debian/copyright: Update to GPLv3, remove the text of the GFDL + and reference the copy in common-licenses. + * Generate the locale data for the testsuite, if the locales package + is installed (not a dependency on all archs). + * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips + and mipsel. + * Do not include a symbols file for libobjc_gc.so. + * Add four more symbols to libgcj_bc, patch taken from the trunk. + * Adjust names of manual pages in the spu build on powerpc. + * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): + - Add Objective-C support. + - Fortran support patches. + - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. + * Build ObjC and Obj-C++ packages on armel. + * Reenable running the testsuite on m68k. + + [Samuel Tardieu, Ludovic Brenta] + * debian/patches/gnalasup_to_lapack.dpatch: new. + * debian/patches/pr34466.dpatch, + debian/patches/pr22255.dpatch, + debian/patches/pr33688.dpatch, + debian/patches/pr10768.dpatch, + debian/patches/pr28305.dpatch, + debian/patches/pr17985.dpatch (#278685) + debian/patches/pr15915.dpatch, + debian/patches/pr16098.dpatch, + debian/patches/pr18680.dpatch, + debian/patches/pr28733.dpatch, + debian/patches/pr22387.dpatch, + debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. + * debian/patches/rules.patch: apply them. + * debian/patches/pr35050.dpatch: update. + + [Andreas Jochens] + * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. + (#476868). + + [Ludovic Brenta] + * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. + * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to + the bootstrap compiler, as the patch breaks the detection of whether + the bootstrap compiler supports this option or not. + Fixes: #471192. Works around #471767. + * Merge Aurélien Jarno's mips patch. Fixes: #472854. + + [ Samuel Tardieu ] + * debian/patches/pr30740.dpatch: new Ada bug fix. + * debian/patches/pr35050.dpatch: new Ada bug fix. + + [ Xavier Grave ] + * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support + into new patches, out of ada-sjlj.dpatch. + * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. + + [Roman Zippel] + * PR target/25343, fix gcc.dg/pch/pch for m68k. + + -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 + +gcc-4.3 (4.3.0-3) unstable; urgency=medium + + [ Matthias Klose ] + * Update to SVN 20080401 from the gcc-4_3-branch. + - Fix PR middle-end/35705 (hppa only). + * Update libstdc++6 symbols for hurd-i386. Closes: #472334. + * Update symbol files for libgomp (ppc64). + * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. + * Update libstdc++ baseline symbols for hppa. + * Install powerpc specific header files new in 4.3. + * gcc-4.3-hppa64: Don't include the install tools in the package. + + [ Aurelien Jarno ] + * Fix gobjc-4.3-multilib dependencies. Closes: #473455. + * Fix gnat-4.3 build on mips/mipsel. + * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. + Closes: #472852. + * patches/config-ml.dpatch: also check for n32 multidir. + + [ Arthur Loiret ] + * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, + required for triarch. + * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. + + [ Andreas Jochens ] + * Fix build failures on ppc64. Closes: #472917. + - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB + variables. + - Removed ppc64-biarch.dpatch. + - Add debian/lib32gfortan3.symbols.ppc64. + + [ Arthur Loiret, Matthias Klose ] + * Build compilers for spu-elf target on powerpc and ppc64. + - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. + - Partly based on the work in Ubuntu on the spu toolchain. + + -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 + +gcc-4.3 (4.3.0-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080321 from the gcc-4_3-branch. + - Remove some broken code that attempts to enforce linker + constraints. Closes: #432541. + * Temporary fix, will be removed once a fixed kernel is available + in testing: Emit cld instruction when stringops are used (i386). + Do not expose the -mcld option until added upstream. Closes: #469567. + * Update NEWS files. + * libjava: Don't leak upon failed realloc (taken from the trunk). + * debian/rules2: The build is not yet prepared to take variables from + the environment; unexport and unset those. + + [Arthur Loiret/Aurelien Jarno] + * MIPS tri-arch support: + - mips-triarch.dpatch: new patch to default to o32 and follow the + glibc convention for n32 & 64 bit names. + - Rename $(biarch) and related vars into $(biarch64). + - Fix biarchsubdir to allow triarch. + - Add biarchn32 support. + - Add mips and mipsel to biarch64 and biarchn32 archs. + - Update binary rules for biarchn32 and libn32 targets. + - Fix multilib deps for triarch. + - control.m4: Add libn32 packages. + + -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 + +gcc-4.3 (4.3.0-1) unstable; urgency=low + + [Matthias Klose] + * GCC-4.3.0, final release. + * Update to SVN 20080309 from the gcc-4_3-branch. + * Build from a modified tarball, without GFDL documentation with + invariant sections and cover texts. + * debian/rules.unpack: Avoid make warnings. + * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. + * Stop building treelang (removed upstream). + * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. + + [Aurelien Jarno] + * Update libssp-gnu.dpatch and reenable it. + + -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 + +gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium + + * Update to SVN 20080301 from the gcc-4_3-branch. + * Include the biarch libobjc_gc library in the packages. + * Link libobjc_gc with libgcjgc_convenience.la. + * Add new symbols to libstdc++6 symbol files, remove the symbols for + support (reverted upstream for the 4.3 branch). + * Disable running the testsuite on m68k. + * Update PR other/28322, ignore only unknown -W* options. + + -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 + +gcc-4.3 (4.3-20080227-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080227 from the gcc-4_3-branch. + * Fix PR other/28322, GCC new warnings and compatibility. + Addresses: #367657. + + [Hector Oron] + * Fix cross-compile builds. Closes: #467471. + + -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 + +gcc-4.3 (4.3-20080219-1) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20080219 from the gcc-4_3-branch. + * Apply proposed patch for PR target/34571 (alpha). + * libgcj9-dev: Don't claim that the package contains the static + libraries. + * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. + Name the alternative xulrunner-1.9-javaplugin.so. + * libgcj-doc: Don't include the examples; these cannot be built + with the existing Makefile anyway. Addresses: #449608. + * Manpages for gc-analyze and grmic are GFDL. Don't include these when + building DFSG compliant packages. + * Fix build failure building amd64 cross-target libstdc++ packages + (Tim Bagot). Addresses: #464365. + * Fix typos in rename-info-files patch (Richard Guenther). + * Fix PR libgcj/24170. + + [Aurelien Jarno] + * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. + + [Ludovic Brenta] + * debian/rules.defs: Temporarily disable the testsuite when building gnat. + * debian/patches/libffi-configure.dpatch: run autoconf in the top-level + directory, where we've changed configure.ac; not in src/gcc. + * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't + change configure.ac. + * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. + Closes: #464801. + + -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 + +gcc-4.3 (4.3-20080202-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080202 from the trunk. + - Fix PR c/35017, pedwarns about valid code. Closes: #450506. + - Fix PR target/35045, wrong code generation with -O3 on i386. + Closes: #463478. + * gcj-4.3: On armel depend on g++-4.3. + * Re-enable build of libobjc_gc, using the internal version of boehm-gc. + Closes: #212248. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch, + debian/patches/ada-gcc-name.dpatch, + debian/patches/ada-symbolic-tracebacks.dpatch, + debian/patches/ada-link-lib.dpatch, + debian/patches/ada-libgnatvsn.dpatch, + debian/patches/ada-libgnatprj.dpatch, + debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. + * debian/README.gnat, debian/TODO, + debian/rules.d/binary-ada.mk: merge from gnat-4.2. + * debian/README.maintainers: add instructions for patching GCC. + * debian/patches/ada-driver.dpatch: remove, no longer used. + * debian/patches/libffi-configure.dpatch: do not patch the top-level + configure anymore; instead, rerun autoconf. This allows removing the + patch cleanly. + * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. + + -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 + +gcc-4.3 (4.3-20080127-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080126 from the trunk. + * Tighten build dependency on doxygen. + * Update libstdc++ patches to current svn. + * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. + + [ Aurelien Jarno] + * debian/multiarch.inc: change mipsel64 into mips64el. + + -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 + +gcc-4.3 (4.3-20080116-1) unstable; urgency=medium + + * Update to SVN 20080116 from the trunk. + * Update debian/watch. + * Build libgomp documentation without building libgomp. Addresses: #460660. + * Handle lzma compressed tarballs. + * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. + * Restore lost chunk in libjava-subdir.dpatch. + + -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 + +gcc-4.3 (4.3-20080112-1) unstable; urgency=low + + * Update to SVN 20080112 from the trunk. + * Tighten build-dependency on dpkg-dev (closes: #458894). + * Update symbol definitions for alpha. + * Build-depend on libmpfr-dev for all source packages. + + -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 + +gcc-4.3 (4.3-20080104-1) unstable; urgency=low + + * Update to SVN 20080104 from the trunk. + * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, + s390, sparc. + + -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 + +gcc-4.3 (4.3-20080102-1) unstable; urgency=low + + [ Matthias Klose ] + * Update to SVN 20080102 from the trunk. + - Fix 64bit biarch builds (addresses: #447443). + * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs + dependencies right. + * Use lib instead of lib64 as multilibdir on amd64 and ppc64. + * Build the java plugin always using libxul-dev. + * Add libgcj_bc to the libgcj9-0 shlibs file. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, + lib32gfortran3, lib64gfortran3. + Adjust build dependencies on dpkg-dev and debhelper. + * Do not build the java packages from the gcc-4.3 source package. + + [ Aurelien Jarno ] + * Disable amd64-biarch patch on kfreebsd-amd64. + + -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 + +gcc-4.3 (4.3-20071124-1) experimental; urgency=low + + [ Matthias Klose ] + * Update to SVN 20071124 from the trunk. + * Fix dependencies of lib*gcc1-dbg packages. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + + [ Aurelien Jarno ] + * Update kbsd-gnu patch. + * Remove kbsd-gnu-ada patch (merged upstream). + + -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 + +gcc-4.3 (4.3-20070930-1) experimental; urgency=low + + [Matthias Klose] + * Update to SVN 20070929 from the trunk. + * Update debian patches to the current trunk. + * Regenerate the control file. + * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit + multilib libraries to allow a sucessful build on 32bit kernels + (our buildds). Although we won't get 64bit test results this way ... + * Remove the build dependency on expect-tcl8.3. + * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Always set STAGE1_CFLAGS to -g -O2, only pass other settings + when configuring when required. + * Configure --with-bugurl, adjust the bug reporting instructions. + * gcc-4.3: Install new cpuid.h header. + * Fix installation of the s390 libstdc++ biarch headers. + * Install new bmmintrin.h, mmintrin-common.h headers. + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 + +gcc-4.3 (4.3-20070902-1) experimental; urgency=low + + * Upload to experimental. + + -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 + +gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070902 from the trunk. + * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. + * Only remove libgcj9's classmap db if no other libgcj9* library is + installed. + * A lot more updates for 4.3 packaging. + + -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 + +gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low + + * Update to SVN 20070901 from the trunk. + * First gcc-4.3 package build. + - Update patches for the *-linux-gnu builds. + - Update build files for 4.3. + * Add proposed patch for PR middle-end/33029. + * gcj-4.3: Install gc-analyze. + + -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 + +gcc-4.2 (4.2.2-7) unstable; urgency=low + + * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34762. LP: #182412. + * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. + * Build libgomp documentation without building libgomp. Closes: #460660. + * Restore gomp development files. Closes: #460736. + + -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 + +gcc-4.2 (4.2.2-6) unstable; urgency=low + + * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. + * Adjust build-dependency on debhelper, dpkg-dev. + * Fix gnat-4.2 build failure (addresses: #456867). + * Do not build packages built from the gcc-4.3 source. + + -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 + +gcc-4.2 (4.2.2-5) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/32889, ICE in delete_output_reload. + Closes: #444873, #445336, #451047. + - Fix PR target/34215, ICE in assign_386_stack_local. + Closes: #446714, #452451. + - Fix PR target/33848, reference to non-existent label at -O1 on + mips/mipsel. Closes: #441633. + * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling + symlink to libgcj_bc.so.1. Remove it temporarily. + * Add libgcj_bc to the libgcj8-1 shlibs file. + * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent + gdc changes. + * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, + lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, + lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build + dependencies on dpkg-dev and debhelper. + Adjust build-dependency on dpkg-dev. + + [Arthur Loiret] + * Fix gdc-4.2 build failure. + * Update gdc to upstream SVN 20071124. + - d-bi-attrs: Support attributes on declarations in other modules. + - d-codegen.cc (IRState::attributes): Support constant declarations as + string arguments. + * Enable libphobos: + - gdc-4.2.dpatch: Fix ICEs. + - gdc-4.2-build.dpatch: Update, make it cleaner. + * Install libphobos in the private gcc lib dir. + * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. + - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created + for anonymous unions. + - gcc/predict.c: Add null-pointer check. + * debian/rules.defs: Disable phobos on hurd-i386. + - gdc-hurd-proc_maps.dpatch: Remove. + + -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 + +gcc-4.2 (4.2.2-4) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. + Closes: #452108. + * Don't run the testsuite on hppa when expect-tcl8.3 is not available. + * Fix libgcc1-dbg doc directory symlink. Closes: #447969. + * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. + * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. + * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. + + [Arthur Loiret] + * Merge gdc-4.1 patches and build infrastructure: + - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. + - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. + - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. + - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. + - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. + - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. + - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. + - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a + struct on non-x86_64 archs by a FormatError. + - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. + - gdc-mips-gcc-config.dpatch: Add, fix build on mips. + - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. + + -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 + +gcc-4.2 (4.2.2-3) unstable; urgency=low + + * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. + - Fix build failure in libjava on mips/mipsel. + * Make 4.2.2-2 a requirement for frontends built from separate sources. + Addresses: #446596. + + -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 + +gcc-4.2 (4.2.2-2) unstable; urgency=low + + * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. + - Remove debian/patches/pr31899.dpatch, applied upstream. + - Remove debian/patches/pr33381.dpatch, applied upstream. + * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. + + -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 + +gcc-4.2 (4.2.2-1) unstable; urgency=low + + * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.2 release. + * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. + * Remove libjava-armeabi patch integrated upstream. + * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. + * Apply proposed patch for PR debug/31899. Closes: #445268. + + * Add niagara2 optimization support (David Miller). + + -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 + +gcc-4.2 (4.2.1-6) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. + - Fix PR middle-end/33382, ICE (closes: #441481). + - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). + - Fix PR libffi/28313, port to mips64 (closes: #358235). + * Fix PR tree-optimization/33099, PR tree-optimization/33381, + wrong code generation with VRP/SCEV. Closes: #440545, #443576. + * Update Hurd fixes (Samuel Thibault). + * When -fstack-protector is the default (Ubuntu), do not enable + -fstack-protector when -nostdlib is specified. LP: #77865. + * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass + other settings when required. + * Fix installation of the s390 libstdc++ biarch headers. + * Allow the powerpc build on a 32bit machine (without running the + biarch testsuite). + * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, + libgfortran. + * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems + to complete sucessfully with the expect package). + * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. + + * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: + - General + + PR rtl-optimization/21299, error in invalid asm statement. + Closes: #380121. + - C++ + + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility + around the declarations (closes: #307207, #324290, #423547). + + PR c++/21581, functions in anonymous namespaces default to "hidden" + visibility (closes: #278310). + + PR c++/4882, specialization of inner template using outer template + argument (closes: #269513). + + PR c++/6634, wrong parsing of "long long double" (closes: #247112). + + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti + is used (closes: #188943). + + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. + Closes: #178561. + + PR libstdc++/31638, string usage leads to warning with -Wcast-align. + Closes: #382153. + + Fix memory hog seen with g++-4.1. Closes: #411234. + - Fortran + + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). + + PR fortran/24285, allow dollars everywhere in format (closes: #324600). + + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by + format(f3.0). Closes: #397671. + + Fix ICE in gfc_get_extern_function_decl (closes: #396292). + - Architecture specific: + - i386 + + Fix error with -m64 (unable to find a register to spill in class + 'DIREG'). Closes: #430049. + - mips + + Fix ICE in tsubst (closes: #422303). + - s390 + + Fix ICE (segmentation fault) building dcmtk (closes: #435736). + + [Roman Zippel] + * Update the m68k patches. + + [Riku Voipio] + * Configure armeabi with --disable-sjlj-exceptions. + * armel testsuite takes ages, adjust build accordingly. + + [Ludovic Brenta and Xavier Grave] + * Add a version of the Ada run-time library using the setjump/longjump + exception handling mechanism (static library only). Use with + gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) + programs. + * Restore building libgnatvsn-dev and libgnatprj-dev. + + -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 + +gcc-4.2 (4.2.1-5) unstable; urgency=low + + * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. + - Fix PR debug/32610, LP: #121911. + * Apply proposed patches: + - Improve debug info for packed arrays with constant bounds + (PR fortran/22244). + - Fix ICE in rtl_for_decl_init on const vector initializers + (PR debug/32914). + - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). + - Fix libgcc.a(tramp.o) on ppc32. + - Fix redundant reg/mem stores/moves (PR target/30961). + * Update the -fdirectives-only backport. + * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. + * Update gpc patches and build support (not yet enabled). + * Fix gcc-snapshot hppa64 install target. + * Set the priority of the source package to optional. + * Remove .la files from the biarch libstdc++ debug packages, + conflict with the 3.4 package. Closes: #440490. + + [Arthur Loiret] + * Add build support for GDC. + + -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 + +gcc-4.2 (4.2.1-4) unstable; urgency=medium + + * gcc-4.2: Include missing std*.h header files. + + -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 + +gcc-4.2 (4.2.1-3) unstable; urgency=low + + * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. + * debian/rules.defs: Fix typo, run the checks in biarch mode too. + * libgcj8-awt: Loosen dependency on gcj-4.2-base. + * Build only needed multilib libraries when building as gcj or gnat. + * Always build biarch libgomp in biarch builds. + * debian/rules2: Adjust testsuite logs files for logwatch.sh. + * Include header files from $/gcc_lib_dir)/include-fixed. + * Backport from trunk: -fdirectives-only (when preprocessing, handle + directives, but do not expand macros). + * Report an ICE to apport (if apport is available and the environment + variable GCC_NOAPPORT is not set) + * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. + + -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 + +gcc-4.2 (4.2.1-2) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): + - Merge gcc-4_2-branch SVN 20070804. + - Imported classpath CVS 20070727. + - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). + - Remove patches integrated in the branches: pr32862. + - Update patches: libjava-subdir, libjava-jar. + - Add regenerated class files: svn-class-updates. + + * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. + * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. + * Period of grace is over, run the testsuite on m68k-linux again. + * Update infrastructure for the gcc-source package (Bastian Blank). + * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). + Closes: #433539. + * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. + * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating + WITHOUT_LANG, and WITHOUT_CHECK. + * debian/rules.defs, debian/rules.conf: Cache some often used macros. + + * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build + libffi for armel. + * gcj: Don't build the browser plugin in gcc-snapshot builds to get + rid of the xulrunner dependency. + * gcjwebplugin: Register for more browsers (package currently not built). + * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. + Closes: #422469. + * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). + * gcj: On arm and armel, use the ecj1 binary built from the ecj package. + * gcj: Don't require javac without java maintainer mode, remove build + dependencies on gcj and ecj, add build dependency on libecj-java. + + -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 + +gcc-4.2 (4.2.1-1) unstable; urgency=medium + + [Ludovic Brenta] + * debian/patches/ada-symbolic-tracebacks.c: remove all trace of + the function convert_addresses from adaint.c. Fixes FTBFS on alpha, + s390 and possibly other platforms. Closes: #433633. + * debian/control.m4: list myself as uploader if the source package name + is gnat. Relax build-dependency on gnat-4.2-source. + * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only + if building Fortran. + + [Matthias Klose] + * debian/rules.conf: Fix breakage of Fortran build dependencies introduced + by merge of the Ada bits. + * Don't include the gccbug binary anymore in the gcc package; upstream bug + reports should be reported to the upstream bug tracker at + http://gcc.gnu.org/bugzilla. + * Don't build and test libjava for the biarch architecture. + * Install gappletviewer man page. Addresses: #423094. + * debian/patches/m68k-java.dpatch: Readd. + * gjar: support @ arguments. + * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. + - Fix mips/mipsel builds. + * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. + * arm/armel doesn't have ssp support. Closes: #433172. + * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. + * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files + for the binary-indep target. + * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. + + [Arthur Loiret] + * Fix cross builds targeting x86_64. Closes: LP: #121834. + + -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 + +gcc-4.2 (4.2.1-0) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding + to the GCC-4.2.1 release. + - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. + * Apply proposed patch for PR tree-optimization/32723. + * Tighten build dependency on libmpfr-dev. + * On ia64, apply proposed patch for PR target/27880. Closes: #433719. + + [Hector Oron] + * Fix cross and reverse-cross builds. Closes: #432356. + + -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 + +gnat-4.2 (4.2-20070712-1) unstable; urgency=low + + * debian/rules.d/binary-ada.mk, debian/control.m4: + disable building libgnatvsn-dev and libgnatprj-dev, as they conflict + with packages from gnat-4.1. Will reenable them for the transition to + gnat-4.2. + * Upload as gnat-4.2. Closes: #432525. + + -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 + +gcc-4.2 (4.2-20070712-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. + - 4.2.1 RC2, built from SVN. + - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, + libjava, zlib from the trunk. + - debian/patches/arm-libffi.dpatch: Remove. + - Fixes ICE in update_equiv_regs. Closes: #432604. + * debian/control.m4: Restore build dependency on dejagnu. + * debian/patches/arm-gij.dpatch: Update. + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #432599. + + -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 + +gcc-4.2 (4.2-20070707-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. + - debian/patches/libjava-soname.dpatch: Remove. + - debian/patches/disable-configure-run-check.dpatch: Update. + * Only suggest multilib packages on multilib architectures. + * Point ICE messages to the 4.2 docdir. + * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. + * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). + * Include the hppa64 cross compiler on hppa snapshot builds. + * debian/patches/arm-libffi.dpatch: Update. + * libgcj-doc: Include the generated documentation. + * Fix building the libjava/classpath examples. + * Support reverse cross builds (Neil Williams). Closes: #431086. + + -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 + +gcc-4.2 (4.2-20070627-1) unstable; urgency=high + + [Matthias Klose] + * Update to SVN gcc-4_2-branch/20070626. + * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). + * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). + Addresses: #428741. + * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. + * README.Debian: Point to debian-toolchain for general toolchain topics. + * Use the generated locales for the libstdc++ build to fix the setting + of the gnu locale model. Closes: #428926, #429660. + * For ix86 lpia targets, configure --with-tune=i586. + * Make build dependency on gcc-4.1-multilib architecture specific. + * Do not ignore bootstrap comparision failure on ia64. + + [Ludovic Brenta] + * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. + * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. + * rules.conf: do not build libgomp as part of gnat-4.2. + * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or + lib64-dev only when building Java. + * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. + * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends + on gcc-4.2-base anymore. + * TODO: rewrite. + * README.gnat: include in gnat-4.2-base. Remove outdated information. + * README.maintainers: new. Include in gnat-4.2-base. + + [Hector Oron] + * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. + * Disables libssp0 for arm and armel targets when cross compiling. + * Updates README.cross. + * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. + + -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 + +gcc-4.2 (4.2-20070609-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070609. + - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. + * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). + - Remove patches integrated upstream: libjava-qt-peer, + classpath-config-guess. + * Do not build with --enable-java-maintainer-mode. + * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. + * Add target to apply patches up to a specific patch (Wouter Verhelst). + Closes: #424855. + * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. + * Apply proposed fix for PR target/28102. Closes: #426905. + * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. + * Update build macros for kfreebsd-amd64. Closes: #424693. + + -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 + +gcc-4.2 (4.2-20070528-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070528. + * Add backport for PR middle-end/20218. + * Add proposed PTA solver backport, PR tree-optimization/30052. + * Add backport for PR target/31868. + * Reenable the testsuite for arm, mips, mipsel. + + -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 + +gcc-4.2 (4.2-20070525-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070525. + * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). + * Do not explicitely configure for __cxa_atexit. + * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. + * Update m68k patches: + - Remove patches applied upstream: m68k-jumptable, m68k-gc, + - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, + m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, + m68k-align-code m68k-align-stack, m68k-symbolic-operand, + m68k-bitfield-offset. + - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move + m68k-secondary-addr-reload, m68k-notice-move. + - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. + * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. + * Temporarily disable the testsuite on slow architectures to get the + package built soon. + + -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 + +gcc-4.2 (4.2-20070516-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070516. + * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). + * Merge changes from gcc-4.1_4.1.2-7. + * Update NEWS files. + + -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 + +gcc-4.2 (4.2-20070502-1) unstable; urgency=low + + * Update to SVN gcc-4_2-branch/20070502. + - Remove pr11953 patch, integrated upstream. + * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). + * Adjust tetex/tex-live build dependency. + * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. + * Tighten (build) dependency on binutils. Addresses: #421197. + * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so + symlink. Adresses: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + + -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 + +gcc-4.2 (4.2-20070405-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070405. + * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). + * gcc-4.2-hppa64: Don't depend on libc6-dev. + * Robustify setting of make's -j flag. Closes: #410919. + * gcc-snapshot: Use the install_snap_stamp target for installation. + + -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 + +gcc-4.2 (4.2-20070307-1) experimental; urgency=low + + * Update to SVN gcc-4_2-branch/20070307. + * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). + * Build gnat from separate sources. + * Merge changes from gcc-4.1-4.1.2-1. + * Install into /usr/lib/gcc//4.2, to ease upgrades + between subminor versions. + * Configure --with-gxx-include-dir=/usr/include/c++/4.2 + + -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 + +gcc-4.2 (4.2-20070210-1) experimental; urgency=low + + * Merge Java backport from Ubuntu: + - Update to SVN gcc-4_2-branch/20070210. + - Update to SVN trunk/20070210 (gcc/java, libjava). + - Backout trunk specific gcc/java changes. + - Build-depend on gcj-4.1 and ecj-bootstrap. + - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. + - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers + are disabled by upstream again. + - Generate manual pages for the classpath tools from the classpath + documentation. + - Adopt packaging for the merged libjava. + - Update patches for the merged libjava: libjava-lib32-properties, + i386-biarch, reporting, libjava-soname, libjava-subdir, + libjava-lib32subdir. + - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, + libstdc++-docfixes. + + * Set priority of development packages to optional. + * debian/libgcjGCJ.postrm: Don't fail on purge when directories + don't exist anymore. Closes: #406017. + * debian/patches/gcc-textdomain.dpatch: Update for 4.2. + * Generate and install libgomp docs into gcc-4.2-doc. + + -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 + +gcc-4.2 (4.2-20070105-1) experimental; urgency=low + + * Update to SVN 20070105. + * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), + fix doxygen build (libstdc++-docfixes.dpatch). + * Enable parallel build by default on SMP machines. + + -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 + +gcc-4.2 (4.2-20061217-1) experimental; urgency=low + + * Update to SVN 20061217. + * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. + * Update patches to the current branch. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + + -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 + +gcc-4.2 (4.2-20061003-1) experimental; urgency=low + + * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. + * Don't install backup files in the doc directory, only one gcc-4.1 + upgrade was broken. Closes: #389366. + * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. + * Update link-libs.dpatch. + * Merge libgfortran2-dev into gfortran-4.2. + + -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 + +gcc-4.2 (4.2-20060923-1) experimental; urgency=low + + * Update to SVN 20060923. + * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. + + -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 + +gcc-4.2 (4.2-20060905-1) experimental; urgency=low + + * Update to SVN 20060905. + * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). + * Move gomp development files into gcc and gfortran. + * Build-depend on binutils (>= 2.17). + + -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 + +gcc-4.2 (4.2-20060818-1) experimental; urgency=low + + * Update to SVN 20060818. + - libjava-libgcjbc.dpatch: Remove, applied upstream. + * Merge changes from the Ubuntu gcj-4.2 package: + - libjava-soname.dpatch: Remove, applied upstream. + - libjava-native-libdir.dpatch: update. + - libffi-without-libgcj.dpatch: Remove, new libffi-configure to + enable --disable-libffi. + - Changes required for the classpath-0.92 update: + - New packages gappletviewer-4.2, gcjwebplugin-4.2. + - gij-4.2: Add keytool alternative. + - gcj-4.2: Add jarsigner alternative. + - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. + - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. + - libjava-library-path.dpatch: + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Adresses: #364820. + - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. + - Fix and renable the biarch build for sparc. + * Disable gnat for alpha, fails to build. + * Configure without --enable-objc-gc, fails to build. + + -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 + +gcc-4.2 (4.2-20060709-1) experimental; urgency=low + + * Test build, SVN trunk 20060709. + * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + * Rename libmudflap0-dev to libmudflap0-4.2-dev. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. + * Merge changes from the gcc-4.1 package. + + -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 + +gcc-4.2 (4.2-20060617-1) experimental; urgency=low + + * Test build, SVN trunk 20060617. + + [Matthias Klose] + * Configure using --enable-objc-gc, using the internal boehm-gc. + * Build-depend on bison (>= 1:2.3). + * Build the QT based awt peer library, not yet the same functionality + as the GTK based peer library. + * Update libjava-* patches. + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and + DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 + +gcc-4.2 (4.2-20060606-1) experimental; urgency=low + + * Test build, SVN trunk 20060606. + * Remove obsolete patches, update patches for 4.2. + * Update the biarch-include patches to work with mips-triarch. + * Disable Ada, not yet updated. + * New packages: libgomp*. + * Remove fastjar, not included upstream anymore. + + -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 + +gcc-4.1 (4.1.2-12) unstable; urgency=high + + * i386-biarch.dpatch: Update for the backport for PR target/31868. + Closes: #427185. + * m68k-libffi2.dpatch: Update. Closes: #425399. + + -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 + +gcc-4.1 (4.1.2-11) unstable; urgency=low + + * Update to SVN 20070601. + * Build the libmudflap0-dev package again. + * Don't build libffi, when the packages are not built. + + -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 + +gcc-4.1 (4.1.2-10) unstable; urgency=low + + * Regenerate the control file. + + -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 + +gcc-4.1 (4.1.2-9) unstable; urgency=low + + * Update to SVN 20070528. + * Don't build packages now built from the gcc-4.2 source (arm, m68k, + mips, mipsel). + * Add backport for PR middle-end/20218. + * Add backport for PR target/31868. + + -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 + +gcc-4.1 (4.1.2-8) unstable; urgency=low + + * Update to SVN 20070518. + * Don't build packages now built from the gcc-4.2 source. + + [ Aurelian Jarno ] + * Update libffi patch for ARM. Closes: #425011. + * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. + * Disable FFI, Java, ObjC for armel. + + -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 + +gcc-4.1 (4.1.2-7) unstable; urgency=low + + * Update to SVN 20070514. + * Link using --hash-style=both on supported architectures. Addresses: #421790. + * On hppa, build ecjx as a native binary. + * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). + Closes: #422978. + * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. + * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD + (Aurelian Jarno). Closes: #422995. + * Disable ssp on hurd-i386. Closes: #423757. + + -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 + +gcc-4.1 (4.1.2-6) unstable; urgency=low + + * Update libjava from the gcc-4.1 Fedora branch 20070504. + * gfortran-4.1: Fix the target of the libgfortran.so symlink. + Closes: #421362. + * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. + * Readd build dependency on binutils on arm. + * (Build-) depend on glibc (>= 2.5) for all architectures. + * Remove libssp packages from the control file. + * Fix wrong code generation on hppa when TLS variables are used. + Closes: #422421. + + -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 + +gcc-4.1 (4.1.2-5) unstable; urgency=low + + * Update to SVN 20070429. + * Update libjava from the gcc-4.1 Fedora branch 20070428. + * Update m68k patches: + - Remove pr25514, pr27736, applied upstream. + - Update m68k-java. + * Link using --hash-style=gnu/both. + * Tighten (build) dependency on binutils. Closes: #421197. + * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). + * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so + symlink. Closes: #421362. + * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. + * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. + * Temporarily remove build dependency on binutils on arm. + * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. + * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. + + -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 + +gcc-4.1 (4.1.2-4) unstable; urgency=medium + + * Update to SVN 20070423. + - Remove pr11953, applied upstream. + - Fix ld version detection in libstdc++v3. + * Update libjava from the gcc-4.1 Fedora branch 20070423. + * Merge libgfortran1-dev into gfortran-4.1. + * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. + * Don't link using --hash-style=gnu/both; loosen dependency on binutils. + * Don't revert the patch to fix PR c++/27227. + + -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 + +gcc-4.1 (4.1.2-3) experimental; urgency=low + + * Update to SVN 20070405. + * Update libjava from the gcc-4.1 Fedora branch 20070405. + * Robustify setting of make's -j flag. Closes: #414316. + * Only build the libssp packages, when building the common libraries. + * gcc-4.1-hppa64: Don't depend on libc6-dev. + + -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 + +gcc-4.1 (4.1.2-2) experimental; urgency=low + + * Update to SVN 20070306. + * Update libjava from the gcc-4.1 Fedora branch 20070306. + + [Matthias Klose] + * Don't install gij-wrapper anymore, directly register gij as a java + alternative. + * Don't install gcjh-wrapper anymore. + * Don't use exact versioned dependencies on gcj-base for libgcj and + libgcj-awt. + * Fix glibc build dependency for alpha. + * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. + * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. + * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. + * Install into /usr/lib/gcc//4.1, to ease upgrades + between minor versions. + Add compatibility symlinks in /4.1.2 to build gnat-4.1 + and gcj-4.1 from separate sources. + + -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 + +gcc-4.1 (4.1.2-1) experimental; urgency=low + + [Matthias Klose] + * Update to gcc-4.1.2. + * Update libjava backport patches, split out boehm-gc-backport patch. + * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. + * Correct mfctl instruction syntax (hppa), backport from the trunk. + * Backport PR java/9861 (name mangling updates). + * gcc.c (main): Call expandargv (backport from 4.2). + * Apply gcc dwarf2 unwinding patches from the trunk. + * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. + * Apply patches from the 4.1 branch for PR rtl-optimization/28772, + PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, + PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, + PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, + PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, + PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, + PR target/30634. + * Update NEWS files. + * Include a backport of the ecj+generics java updates as + gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. + * Do not build fastjar anymore from this source. + * debian/control.m4: Move expect-tcl8.3 before dejagnu. + * Work around firefox/icewhatever dropping plugin dependencies on xpcom. + * Refactor naming of libgcj packages in the build files. + * Make libstdc++-doc's build dependencies depending on the source package. + * Do not build packages on architectures, which are already built by gcc-4.2. + + * Merge the gcj generics backport from Ubuntu: + + - Merge the Java bits (eclipse based compiler, 1.5 compatibility, + classpath generics) from the gcc-4.1 Fedora branch. + - Drop all previous patches from the classpath-0.93 merge, keep + the boehm-gc backport (splitted out as a separate patch). + - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, + config/unwind_ipinfo.m4, taken from the Fedora branch. + - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches + integrated in the backport. + - Update patches for the merge: reporting, libjava-subdir, i386-biarch, + classpath-tooldoc, pr26885 + - Add libjava-dropped, libjava-install; dropped chunks from the merge. + - Add pr9861-nojava mangling changes, non-java parts for PR 9861. + - Add gcc-expandv, expand `@' parameters on the commandline; backport + from the trunk. + - Disable the m68k-gc patch, needs update for the merge. + - Configure --with-java-home set for 1.5.0. + - Configure with --enable-java-maintainer-mode to build the header + and class files on the fly. + - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. + - Build an empty libgcj-doc package; gjdoc currently cannot handle + generics. + - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events + testcase to pass. + - Tighten dependencies on shared libraries. + - Use /usr/lib/gcj-4-1-71 as private gcj subdir. + - Bump the libgcj soversion to 71, rename the libgcj7-0 package + to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. + - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. + - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. + - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, + tnameserv. + - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, + ecj-bootstrap-gcj. + - Add build dependency on ecj-bootstrap version providing the GCCMain + class. + - libgcj7-1: Recommend libgcj7-1-awt. + - Add build dependency on libmagic-dev. + - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before + starting the build. + - Make ecj1 available when running the testsuite. + - Fix build failure on sparc-linux. + - Fix gjavah compatibility problems (PR cp-tools/3070[67]). + - Fixed driver issue source files (PR driver/30714). + - Add (rudimentary) manual pages for classpath tools. + + [Kevin Brown] + * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages + containing debugging symbols for Ada libraries: libgnat-4.1-dbg, + libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. + + -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 + +gcc-4.1 (4.1.1ds2-30) experimental; urgency=low + + * Update to SVN 20070106. + * Do not revert the fixes for PR 25878, PR 29138, PR 29408. + * Don't build the packages built by gcc-4.2 source. + * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections + for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. + * Merge from Ubuntu: + - Backport g++ visibility patches from the FC gcc-4_1-branch. + - Update the long-double patches; require glibc-2.4 as a build dependency + on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to + require 4.1.1-21. + - On powerpc-linux configure using --enable-secureplt. Closes: #382748. + - When using the cpu-default-generic patch, build for generic x86-64 + on amd64 and i386 biarch. + - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, + s390, sparc). + * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. + * Split the gcc-long-double patch into a code and doc part. + * Set priority of development packages to optional. + * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. + + -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 + +gcc-4.1 (4.1.1ds2-22) unstable; urgency=high + + * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. + * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. + + -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 + +gcc-4.1 (4.1.1ds2-20) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061115. + - Fix PR tree-optimization/27891, ICE in tree_split_edge. + Closes: #370248, #391657, #394630. + - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. + Closes: #181096. + * Apply the libjava/net backport from the redhat/gcc-4_1-branch. + * Apply proposed patch for PR java/29805. + + [Roman Zippel] + * Build the ObjC and ObjC++ compilers in cross builds. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize + symbolic operands in addresses. + * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset + for register bitfields (combine expects shifts, but does a rotate). + * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. + + [Daniel Jacobowitz] + * Don't try to use _Unwind_Backtrace on SJLJ targets. + See bug #387875, #388505, GCC PR 29206. + + -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 + +gcc-4.1 (4.1.1ds2-19) unstable; urgency=low + + * Fix typo in arm-pragma-pack.dpatch. + + -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 + +gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20061028. + * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. + * Revert PR c++/29138, PR c++/29408. Closes: #392559. + * Revert PR c++/25878. Addresses: #387989. + * fastjar: Provide jar. Closes: #395397. + + [Ludovic Brenta] + * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. + debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. + + -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 + +gcc-4.1 (4.1.1ds2-17) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061020. + - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. + - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. + - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. + - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. + - Fix 3.4/4.0 backwards compatibility problem in libstdc++. + * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. + * Remove the INSTALL directory from the source tarball. Closes: #392974. + * Disable building the static libgcj; non-functional, and cutting + down build times. + * libgcj7-0: Tighten dependency on libgcj-common. + * libgcj7-dev: Install .pc file as libgcj-4.1.pc. + * README.cross: Updated (Hector Oron). Addresses: #380251. + * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. + + [Nikita V. Youshchenko] + * Fix typo in the cross build scripts. Closes: #391445. + + [Falk Hueffner] + * alpha-no-ev4-directive.dpatch: Fix kernel build failure. + + [Roman Zippel] + * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance + within code. + * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. + * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset + and register with -fomit-frame-pointer. + * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its + desired form to relieve reload. Closes: #390879. + * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands + during reloads. + * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting + an instruction. + * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads + to allow reload to get byte values into addr regs. Closes: #385327. + * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic + operands in addresses. + * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by + m68k-secondary-addr-reload.dpatch. + * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. + * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment + the register, if it's used multiple times in the instruction . + + -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 + +gcc-4.1 (4.1.1ds1-16) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20061008. + - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. + * libgcj7-0: Fix package removal. Closes: #390874. + * Configure with --disable-libssp on architectures that don't + support it (alpha, hppa, ia64, m68k, mips, mipsel). + * On hppa, remove build-dependency on dash. + * gij/gcj: Do not install slave links for the non DFSG manpages. + Closes: #390425, #390532. + * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap + files are found. Closes: #390966. + * Fix PR libstdc++/11953, extended for all linux architectures. + Closes: #391268. + * libffi4-dev: Conflict with libffi. Closes: #387561. + * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. + Closes: #390693. + * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. + * Add a README.ssp with minimal documentation about stack smashing + protection. Closes: #366094. + * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. + + [Roman Zippel] + * debian/patches/m68k-notice-move.dpatch: Don't set cc_status + for fp move without fp register. + + -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 + +gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium + + * Update to SVN 20060927. + - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. + - Fix typo in gcc documentation. Closes: #386180. + - Fix PR target/29230, wrong code generation on arm. Closes: #385505. + * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on + arm, m68k, hppa. Adresses: #388505. + * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. + Closes: #389539. + * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. + * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; + remove libjava-str2double.dpatch, pr28661.dpatch. + * Disable ssp on hppa, not supported. + * i386-biarch.dpatch: Avoid warnings about macro redefinitions. + + -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 + +gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060920. + - Fix PR c++/26957. Closes: #373257, #386910. + - Fix PR rtl-optimization/28243. Closes: #378325. + * Remove patch for PR rtl-optimization/28634, applied upstream. + * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). + (Petr Salinger). Closes: #385974. + * Merge from Ubuntu: + - Do not encode the subminor version in the jar files. + - Fix typo for the versioned gcj subdirectory in lib32gcj-0. + - When running the i386 binaries on amd64, adjust the properties + java.home, gnu.classpath.home.url, sun.boot.class.path, + gnu.gcj.precompiled.db.path. + - Configure the 32bit build on amd64 + --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. + - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, + s390, s390x, sparc, sparc64. + - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. + - Fix PR java/29013, invalid byte code generation. Closes: #386926. + - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the + backport of PR 28946 from the trunk (H.J. Lu). + * Backport PR classpath/28661 from the trunk. + * Don't ship the .la files for the java modules. Closes: #386228. + * gcj-4.1: Remove dangling symlink. Closes: #386430. + * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. + Closes: #361942. + * Fix infinite loop in string-to-double conversion on 64bit targets. + Closes: #348792. + * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. + * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. + * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory + accesses. Works around buildd configurations enabling this check by + default. Addresses: #364819. + + [Ludovic Brenta] + * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of + mlib-tgt.adb. Closes: #387826. + * debian/patches/ada-pr15802.dpatch: Backport from the trunk. + Closes: #246384. + * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by + gcc-defaults instead); conflict with gnat-4.2 which will soon be in + unstable. + + [Roman Zippel] + * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also + in the src of an instruction. + * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when + accessing the jumptable, gas can generate the correct offset size instead. + * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl + peepholes, so the correct DWARF2 information can be generated for stack + manipulations (Keep a few peepholes temporarily disabled). + * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while + reinserting REG_EH_REGION notes. + * debian/patches/m68k-return.dpatch: Don't use single return if fp register + have to be restored. Closes: #386864. + * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over + signal frames. + * Fix PR rtl-optimization/27736, backport from the trunk. + * Add java support for m68k. Closes: #312830, #340874, #381022. + + -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 + +gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium + + * Update to SVN 20060901; remove patches applied upstream: + - PR target/24367. + - PR c++/26670. + * Apply proposed patch for PR fortran/28908. + * Fix biarch symlinks in lib64stdc++ for cross builds. + * Fix biarch symlinks in lib32objc on amd64. + + -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 + +gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium + + [Matthias Klose] + * Update to SVN 20060830. + * Add backport of PR other/26208, bump libgcc1 shlibs dependency. + * Add backport of PR c++/26670. Closes: #356548. + * Apply proposed patch for PR target/24367 (s390). + * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. + * Build without GFDL licensed docs. Closes: #384036. + - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: + Split out -doc specific patches. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + + * Merge from Ubuntu: + - Backport the classpath-0.92, libjava, gcc/java merge from the + redhat/gcc-4_1-branch branch. + - Apply the proposed patch for PR libgcj/28698. + - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. + - Do not remove the rpath from libjvm.so and libjawt.so. Some + configure scripts rely on being able to link that libraries + directly. + - When running the i386 binaries on amd64, look in + /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + - Add /usr/lib/jni to java.library.path. Closes: #364820. + - Add debugging symbols for more binary packages to libgcj7-dbg. + Closes: #383705. + - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. + - Do not build the libgcj-bc and lib32gcj-bc packages anymore from + the gcj-4.1 source. + + [Roman Zippel] + * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. + Closes: #375522. + * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long + shifts and use more splits. Closes: #381572. + * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating + a byte push on the stack (invalid on m68k). Closes: #385021. + * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. + * debian/patches/pr25514.dpatch: Backport from the trunk. + * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM + so it works with 2.6 kernels. + * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: + Closes: #378599, #345574, #344041, #323426, #340293. + * Build the stage1 compiler using -g -O2; saves a few hours build time + and apparently is working at the moment. + + -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 + +gcc-4.1 (4.1.1-11) unstable; urgency=low + + * The "Our priority are our users, remove the documentation!" release. + + [Matthias Klose] + * Fix build failure building the hppa->hppa64 cross compiler. + * Update to SVN 20060814. + - Fix directory traversal vulnerability in fastjar. Closes: #368397. + CVE-2006-3619. + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + * Remove patch for PR rtl-optimization/28075, applied upstream. + * Apply proposed patch for PR rtl-optimization/28634, rounding problem with + -fdelayed-branch on hppa/mips. Closes: #381710. + * Fixed at least in 4.1.1-10: boost::date_time build failure. + Closes: #382352. + * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to + gcc-4.1-source. Closes: #381117. + * Backport of libffi from the trunk; needed for the java backport in + experimental. + * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. + * When building a package without the GFDL'd documentation, don't create + the alternative's slave links for manual pages for the java tools. + * Do not build the -doc packages and derived manual pages licensed under + the GFDL with invariant sections or cover texts. + * Only build the libssp package, if the target libc doesn't provide + ssp support. + * Run the complete testsuite, when building a standalone gcj package. + + [Roman Zippel] + * debian/patches/m68k-fjump.dpatch: + Always use as fjcc pseudo op, we rely heavily on as to generate the + right size for the jump instructions. Closes: #359281. + * debian/patches/m68k-gc.dpatch: + The thread suspend handler has to save all registers. + Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. + * debian/patches/m68k-save_pic.dpatch: + Correctly save the pic register, when not done by reload(). + (fixes _Unwind_RaiseException and thus exception handling). + * debian/patches/m68k-libffi.dpatch: Add support for closures. + * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression + past a zero_extract lvalue. + * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, + but preserve compatibility. + + [Christian Aichinger] + * Fix building a cross compiler targeted for ia64. Closes: #382627. + + -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 + +gcc-4.1 (4.1.1-10) unstable; urgency=low + + * Update to SVN 20060729. + - Fix PR c++/28225, segfault in type_dependent_expression_p. + Closes: #376148. + * Apply proposed patch for PR rtl-optimization/28075. + Closes: #373820. + * Apply proposed backport and proposed patch for PR rtl-optimization/28221. + Closes: #376084. + * libgcj7-jar: Loosen dependency on gcj-4.1-base. + * Add ssp header files to the private gcc includedir. + * Do not build the Ada packages from the gcc-4.1 source, introducing + a new gnat-4.1 source package. + * Build libgnat on alpha and s390 as well. + * Do not build the gnat-4.1-doc package (GFDL with invariant sections or + cover texts). + * Remove references to the stl-manual package. Closes: #378698. + + -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 + +gcc-4.1 (4.1.1-9) unstable; urgency=low + + * Update to SVN 20060715. + - Fix PR c++/28016, do not emit uninstantiated static data members. + Closes: #373895, #376871. + * Revert the patch to fix PR c++/27227. Closes: #378321. + * multiarch-include.dpatch: Renamed from biarch-include.dpatch; + apply for all architectures. + * Do not build the java compiler in gcc-4.1 package, just include the + options and specs in the gcc driver. + * Remove gnat-4.0 as an alternative build dependency. + * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. + The patch is disabled by default. + + -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 + +gcc-4.1 (4.1.1-8) unstable; urgency=medium + + * Update to SVN 20060708. + - Fix typo in gcov documentation. Closes: #375140. + - Fix typo in gccint documentation. Closes: #376412. + - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to + static method. PR target/27082. Closes: #369642. + + * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. + * Fix conflict, replace and provide libssp0-dev for cross compilers. + Closes: #377012. + * Ignore compiler warnings when checking whether compiler driver understands + Ada fails. Closes: #376660. + * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. + * README.C++: Remove non-existing URL. Closes: #347601. + * gij-4.1: Provide java2-runtime. Closes: #360906. + + * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: + - C++ + + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. + Closes: #228645. + - Java + + Fixed segmentation fault on compiling bad program. Closes: #165635 + * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: + - Stack protector available. Closes: #213994, #233208. + - Better documentation of -finline-limit option. Closes: #296047. + * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: + - General + + Fixed [unit-at-a-time] Using -O2 cannot detect missing return + statement in a function. Closes: #276843. + - C++ + + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. + + PR c++/21280, #pragma interface, templates, and "inline function used + but never defined". Closes: #364412. + - Architecture specific: + - m68k + + Segfault building glibc. Closes: #353618. + + ICE when trying to build boost. Closes: #321486. + * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: + - General + + Handling of #pragma GCC visibility for builtin functions. + Closes: #330279. + + gettext interpretation the two conditional strings as one. + Closes: #227193. + + ICE due to if-conversion. Closes: #335078. + + Fix unaligned accesses with __attribute__(packed) and memcpy. + Closes: #355297. + + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. + - Ada + + Link error not finding -laddr2line. Closes: #322849. + + ICE on invalid code. Closes: #333564. + - C++ + + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. + + The Compiler uses less memory than 4.0. Closes: #336225. + + Fix "fails to compare reverse map iterators". Closes: #362840. + + Fix "fail to generate code for base destructor defined inline with + pragma interface". Closes: #356435. + + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. + + Fix wrong warning: control may reach end of non-void function. + Closes: #319309. + + Fix bogus warning "statement has no effect" with template and + statement-expression. Closes: #336915. + + Fixed segfault on syntax error. Closes: #349087. + + Fix ICE with __builtin_constant_p in template argument. + Closes: #353366. + + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). + Closes: #244894. + - Fortran + + Fix wrong behaviour in unformatted writing. Closes: #369547. + - Java + + Fixed segfault on -fdump-tree-all-all. Closes: #344265. + + Fixed ant code completion in eclipse generating a nullpointer + exception. Closes: #337510. + + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. + + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. + + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). + Closes: #314704. + + Fixed error when displaying empty window with bound larger than the + displayed content. Closes: #324502. + + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. + + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. + Closes: #333733. + - libmudflap + + PR libmudflap/23170, libmudflap should not use functions marked + obsolescent by POSIX/SUS. Closes: #320398. + - Architecture specific: + - m68k + + FTBFS building tin. Closes: #323016. + + ICE with -g -fomit-frame-pointer. Closes: #331150. + + ICE in instantiate_virtual_regs_lossage. Closes: #333536. + + Wrong code generation with loop unrolling. Closes: #342121. + + ICEs while building gst-ffmpeg. Closes: #343692. + - mips + + Fix gjdoc build failure. Closes: #344986. + + Fix link failure for static libs and object files when xgot + needs to be used. Closes: #274942. + * gnat bug reports fixed since gnat-3.15p: + - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. + - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. + - Nonconforming parameter lists not detected. Closes: #243796. + - Illegal use clause not detected. Closes: #243797. + - Compiler enters infinite loop on illegal program with tagged records. + Closes: #243799. + - Compiler crashes on illegal program (missing discriminant, unconstrained + parent). Closes: #243800. + - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. + - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. + - Illegal program not detected (entry families). Closes: #243803. + - Illegal program not detected, RM 10.1.1(14). Closes: #243807. + - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. + - Illegal program not detected, RM 4.1.4(14). Closes: #243816. + - Bug box in Gigi, code=116, on legal program. Closes: #244225. + - Illegal program not detected, 12.7(10) (generic parameter is visible, + shouldn't be). Closes: #244483. + - Illegal program not detected, ambiguous aggregate. Closes: #244496. + - Bug box at sem_ch3.adb:8003. Closes: #244940. + - Bug box in Gigi, code=103, on illegal program. Closes: #244945. + - Legal program rejected, overloaded procedures. Closes: #246188. + - Bug box in Gigi, code=999, on legal program. Closes: #246388. + - Illegal program not detected, RM 10.1.6(3). Closes: #246389. + - Illegal program not detected, RM 3.10.2(24). Closes: #247014. + - Illegal program not detected, RM 3.9(17). Closes: #247015. + - Legal program rejected. Closes: #247016. + - Legal program rejected. Closes: #247021. + - Illegal program not detected, RM 4.7(3). Closes: #247022. + - Illegal program not detected, RM 3.10.2(27). Closes: #247562. + - Legal program rejected, "limited type has no stream attributes". + Closes: #247563. + - Wrong output from legal program. Closes: #247565. + - Compiler enters infinite loop on illegal program. Closes: #247567. + - Illegal program not detected, RM 8.6(31). Closes: #247568. + - Legal program rejected, visible declaration not seen. Closes: #247572. + - Illegal program not detected, RM 8.2(9). Closes: #247573. + - Wrong output from legal program, dereferencing access all T'Class. + Closes: #248171. + - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. + - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. + - Illegal program not detected, RM 3.4.1(5). Closes: #248679. + - Compiler ignores legal override of abstract subprogram. Closes: #248686. + - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. + Closes: #251266. + - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. + Closes: #263498. + - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 + with -gnat -gnatc. Closes: #267788. + - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected + subprogram. Closes: #269775. + - Stack overflow on illegal program, AI-306. Closes: #276225. + - Illegal program not detected, RM B.1(24). Closes: #276226. + - Wrong code generated with -O -fPIC. Closes: #306833. + - Obsolete: bashism's in debian/rules file. Closes: #370681. + - Supports more debian architectures. Closes: #171477. + + -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 + +gcc-4.1 (4.1.1-7) unstable; urgency=low + + * Prefer gnat-4.1 over gnat-4.0 as a build dependency. + * libssp0: Set priority to standard. + + -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 + +gcc-4.1 (4.1.1-6) unstable; urgency=low + + [Ludovic Brenta] + * Do not provide the symbolic link /usr/bin/gnatgcc; this will now + be provided by package gnat from the source package gcc-defaults. + * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), + not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) + which depends on gnat-4.1. + + [Matthias Klose] + * libjava: Change the default for enable_hash_synchronization_default + on PA-RISC. Tighten the libgcj7 shlibs version on hppa. + * Update to SVN 20060630. + * Apply proposed patch for PR 26991. + * Don't use the version for the libstdc++ shlibs dependency for the libgcj + shlibs dependency. + * Merge from Ubuntu edgy: + - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build + failure on sparc (Fabio M. Di Nitto). + - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). + - Run the testsuite with -fstack-protector as well. + + [Bastian Blank] + * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. + * Disable biarch only on request for cross builds. + * Use correct source directory for tarballs. + * Produce correct multiarch.inc for source builds. + + -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 + +gcc-4.1 (4.1.1-5) unstable; urgency=low + + * Fix build error running with dpkg-buildpackage -rsudo. + + -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 + +gcc-4.1 (4.1.1-4) unstable; urgency=low + + * Really do not backout the fix for PR c++/26068. + Closes: #372152, #372559. + * Update fastjar version string to 4.1. + * Disable pascal again. + + -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 + +gcc-4.1 (4.1.1-3) unstable; urgency=low + + * Update to SVN 20060608, do not revert the fix for PR c++/26068. + Closes: #372152, #372559. + * Fix build failures for Pascal, enable Pascal on all architectures. + * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). + Closes: #370661. + * Fix build fauilure in gcc/p with parallel make. + * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. + * Only build the gcc-4.1-source package, when building from the gcc-4.1 + source. + * Fix upgrade problem from standalone gcj-4.1. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + Closes: #372605. + * Backport PR libstdc++/25524 from the trunk, update the biarch-include + patch. mips triarch support can be added more easily. + + -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 + +gcc-4.1 (4.1.1-2) unstable; urgency=low + + * Update to SVN 20060604. + - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. + Closes: #356569. + - Fix PR target/27158, ICE in extract_insn with -maltivec. + Closes: #362307. + * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). + Closes: #370308. + * Mention Ada in copyright, update copyright file (Ludovic Brenta). + Closes: #366744. + * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. + * Don't include version control files in gcc-4.1-source. + + -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 + +gcc-4.1 (4.1.1-1) unstable; urgency=low + + [Matthias Klose] + * Update to SVN 20060601. + * Reenable the gpc build. + * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. + * Disable Ada for m32r targets. Closes: #367595. + * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. + * gcc-4.1: Add a conflict to the gcj-4.1 version with a different + gcc_libdir. + * Build gij/gcj for GNU/k*BSD. Closes: #367166. + * Update hurd-changes patch (Michael Banck). Closes: #369690. + * debian/copyright: Add exception for the gpc runtime library. + * Update gpc/gpc-doc package descriptions. + + [Ludovic Brenta] + * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] + to libgnatprj; remove them from gnatmake. + + -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 + +gcc-4.1 (4.1.0-4) unstable; urgency=low + + [Ludovic Brenta] + * Fix a stupid bug whereby fname.ad{b,s} would be included in both + libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. + Closes: #366733. + + -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 + +gcc-4.1 (4.1.0-3) unstable; urgency=low + + * Update to SVN 20060507. + * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. + * Always configure hppa64-linux-gnu with + --includedir=/usr/hppa64-linux-gnu/include. + * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. + * Call autoconf2.13 explicitely in the Ada patches, build-depend on + autoconf2.13. Closes: #365780. + * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared + libraries. + * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). + * Update proposed patch for PR26885 (May 2 version). + * Build the libxxstdc++-dbg packages, when not building the library pacakges. + * Do not include the _pic library in the libxxstdc++-dbg packages. + + -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 + +gcc-4.1 (4.1.0-2) unstable; urgency=medium + + * Update to SVN 20060428. + * Apply proposed patches for PR26885. + + * Keep libffi doc files in its own directory. Closes: #360466. + * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. + * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. + Closes: #356896. CVE-2006-1902. + * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, + PR target/11254, PR target/10274, backport from trunk (Randolph Chung). + * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). + Closes: #363289. + * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. + * Fix a pedantic report about a package description. Add a hint that + we do not like bug reports with locales other than "C". Closes: #361409. + * Enable the libjava interpreter on mips/mipsel. + * gcc-4.1-source: Depend on gcc-4.1-base. + * gnat-4.1: Fix permissions of .ali files. + * Build lib32gcj7 on amd64. + * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for + PR27194. + + [Ludovic Brenta] + * debian/patches/ada-default-project-path.dpatch: new. Change the + default search path for project files to the one specified + by the Debian Policy for Ada: /usr/share/ada/adainclude. + * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for + symbolic tracebacks in exceptions. + * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. + * debian/patches/ada-link-lib.dpatch: changed. + - Instead of building libada as a target library only, build it as + both a host and, if different, target library. + - Build the GNAT tools in their top-level directory; do not use + recursive makefiles. + - Link the GNAT tools dynamically against libgnat. + - Apply proposed fix for PR27300. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatvsn.dpatch: new. + - Introduce a new shared library named libgnatvsn, containing + common components of GNAT under the GNAT-Modified GPL, for + use in GNAT tools, ASIS, GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-libgnatprj.dpatch: new. + - Introduce a new shared library named libgnatprj, containing the + GNAT Project Manager, i.e. the parts of GNAT that parses project + files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. + - Link the gnat tools against this new library. + - Rerun autoconf (Matthias Klose). + * debian/patches/ada-acats.dpatch: new. + - When running the ACATS, look for the gnat tools in their new + directory (build/gnattools), and for the shared libraries in + build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. + * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. + * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: + libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place + the *.gpr files in their respective -dev packages. + + -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 + +gcc-4.1 (4.1.0-1) unstable; urgency=low + + * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). + * libgcj-common: Move removal of docdir from preinst into postinst. + * libgcj7: Move removal of docdir from preinst into postinst. + * Drop alternative build dependency on gnat-3.4, not built anymore. + * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). + * debian/patches/libjava-stacktrace.dpatch: Add support to print file names + and line numbers in stacktraces. + * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk + in the libgcj7-dbg and lib32gcj7-dbg packages. + * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, + add recommendations on binutils and libgcj-dev. Mention the requirement + of binutils for the stacktraces. + * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. + Closes: #355439. + * gij/gcj: Install one alternative for each command, do not use slave + links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. + * Fix for PR tree-optimization/26587, taken from the 4.1 branch. + * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). + * Configure with --enable-clocale=gnu, even if not building C++ packages. + * Remove runtime path from biarch libraries as well. + * PR middle-end/26557 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #349083. + * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from + the gcc-4_1-branch. Closes: #356231. + * PR middle-end/26004 (rejects-vaild-code, regression), taken from + the gcc-4_1-branch. + * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. + * Configure --with-cpu=v8 on sparc. + * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h + (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. + (John David Anglin). Closes: #353346. + * Point to the 4.1 version of README.Bugs (closes: #356230). + * Disable the libmudflap testsuite on alpha (getting killed). + + -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 + +gcc-4.1 (4.1.0-0) experimental; urgency=low + + * GCC 4.1.0 final release. + * Build the packages for the Java language from a separate source. + * Update NEWS.html, NEWS.gcc. + * libgcj-doc: Auto generated API documentation for libgcj7, classpath + example programs. + * Add gjdoc to Build-Depends-Indep. + * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. + * Internal ssp headers now installed in the gcc libdir. + * Do not build gcj-4.1-base when building the gcc-4.1 packages. + * When building as gcj-4.1, use the tarball from the gcc-4.1-source + package. + + [Ludovic Brenta] + * Allow to enable and disable NLS and bootstrapping from the environment. + - Adding "nls" to WITHOUT_LANG disables NLS support. + - If WITH_BOOTSTRAP is set, debian/rules2 calls configure + --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If + WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping + option and calls "make profiledbootstrap" or "make bootstrap-lean" + depending on the target CPU. + Currently overwritten to default to "bootstrap". + + -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 + +gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low + + * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). + * Update gcc-version patch for gcc-4.1. + * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. + * libjava awt & swing update, taken from trunk 2006-02-16. + * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. + * Shorten build-dependency line (work around buildd problems + on arm* and mips*). + * New patch gcc-ice-hack (saving the preprocessed source on an ICE), + taken from Fedora. + + -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 + +gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low + + * Update to SVN 20060212, taken from the 4.1 release branch. + * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. + + -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 + +gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low + + * Update to SVN 20060127, taken from the 4.1 release branch. + - On hppa, bump the libgcc soversion to 4. + * Add an option not to depend on the system -base package for cross compiler + (Ian Wienand). Closes: #347484. + * Remove workaround increasing the stack size limit for some architectures, + not needed anymore on ia64. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * libstdc++6: Properly upgrade the doc directory. Closes: #346171. + * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. + * Set default 32bit ix86 architecture to i486. + + -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 + +gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low + + * Update to SVN 20060107, taken from the 4.1 release branch. + - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. + * Remove binary packages from the control file, which aren't built + yet on any architecture. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * libffi [arm]: Add support for closures, libjava [arm]: enable the gij + interpreter (Phil Blundell). Addresses: #337263. + * For the gcj standalone build, include cc1 into the gcj-4.1 package, + needed for linking java programs compiled to native code. + + -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 + +gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low + + * Update to SVN 20051210, taken from the 4.1 release branch. + * Prepare to build the java packages from it's own source (merged + from Ubuntu). + - Build the java packages from the gcc-4.1 source, as long as packages + are prepared for experimental. + - When built as gcj, run only the libjava testsuite, don't build the + libstdc++ debug packages, don't package the gcc source. + - Loosen package dependencies, when java packages are built from + separate sources. + - Fix gcj hppa build, when java packages are built from separate sources. + - gij-4.1: Install test-summary, when doing separate builds. + - Allow java packages be installed independent from other packages built + from the source package. + - Rename libgcj7-common to libgcj7-jar. + - Introduce a gcj-4.1-base package to completely separate the two and not + duplicate the changelog in each gcj/gij package. + * Java related changes: + - libjava-xml-transform: Update from classpath trunk, needed for + eclipse (Michael Koch), applied upstream. + - Fix java wrapper scripts to point to 4.1 (closes: #341710). + - Reenable java on mips and mipsel. + - Fix libgcj6 dependency. Ubuntu #19935. + - Add libxt-dev as a java build dependency. autoconf explicitely checks + for X11/Intrinsic.h. + * Ada related changes: + - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, + mips, mipsel and s390. + - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. + - Remove ada bootstrap workaround for alpha. + * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. + * Remove obsolete patch: libstdc++-automake. + * Remove patch integrated upstream: libffi-mips. + * Fix the installation of the hppa64 compiler in snapshot builds. + * Rename libgfortran0* to libgfortran1* (upstream soversion change). + * Add a dependency on libc-dev for all compilers / -dev packages except + gcc (which can be used for kernel builds without libc-dev). + * libffi4-dev: Fix package description. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Addresses: #341147. + * Fix installation of biarch libstdc++ headers on amd64. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). Remove the cpu-default-* patches. + * debian/control.m4: Fix libxxgcc package names. + * Update the build infrastructure to build cross compilers + (Nikita V. Youshchenko). + * Tighten binutils (build-)dependency. Closes: #342484. + * Symlink more doc directories. + * debian/control.m4: Explicitely set Architecture for biarch packages. + + -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 + +gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low + + * Build Java packages only. + * Update to SVN 20051121, taken from the 4.1 release branch. + - Remove libjava-saxdriver-fix patch, applied upstream. + - Remove ada-gnat-version patch, applied upstream. + * Fix FTBFS in biarch builds on 32bit kernels. + * Update libstdc++-doc doc-base file (closes: #339046). + * Remove obsolete patch: gcc-alpha-ada_fix. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Fix sparc and s390 biarch patches to build the 64bit libffi. + * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. + * Install spe.h header on powerpc. + * Add libasound build dependencies. + * libgcj: Fix installation of libgjsmalsa library. + * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, + libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, + gpc-no-gpidump, libgpc-shared, acats-expect. + * Fix references to manuals in gnat(1). Ubuntu #19772. + * Remove build dependency on xlibs-dev, add libxtst-dev. + * Do not configure with --disable-werror. + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * debian/gcj-wrapper: Accept -Xss. + * Do not build biarch java on Debian (missing biarch libasound). + * Do not build the java packages from this source package, avoiding + dependencies on X. + + -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 + +gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low + + * Configure libstdc++ using the default allocator. + * Update to 20051112, taken from the svn trunk. + + -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 + +gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low + + * UNRELEASED + * First snapshot of gcc-4.1 (CVS 20051019). + - adds SSP support (closes: #213994, #233208). + * Remove patches applied upstream/not needed anymore. + * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, + rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, + libjava-biarch-awt, ada-gcc-name. + * Disable patches: + - 323016, m68k, necessary for 4.1? + * debian/copyright: Update for 4.1. + * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: + Update for 4.1, add support for Obj-C++ and SSP. + * Fix generation of Ada docs in info format. + * Set Ada library version to 4.1. + * Drop gnat-3.3 as an alternative build dependency. + * Use fortran instead of f95 for the build files. + * Update build support for awt peer libs. + * Add packaging support for SSP library. + * Add packaging support for Obj-C++. + * Run the testsuite for -march=i686 on i386 and amd64 as well. + * Fix generation of Pascal docs in html format. + * Update config-ml patches to build libssp biarch. + * Disable libssp for hppa64 build. + * libgcj7-dev: Install jni_md.h. + * Disable gnat for powerpc, currently fails to build. + * Add biarch runtime lib packages for ssp, mudflap, ffi. + * Do not explicitely configure with --enable-java-gc=boehm, which is the + default. + * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. + * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. + * Build-depend on expect-tcl8.3 on all architectures. + * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on + amd64-libs. + * Disable ada on alpha mips mipsel powerpc s390, currently broken. + + -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 + +gcc-4.0 (4.0.2-3) unstable; urgency=low + + * Update to CVS 20051015, taken from the gcc-4_0-branch. + - gcc man page fixes (closes: #327254, #330099). + - PR java/19870, PR java/20338, PR java/21844, PR java/21540: + Remove Debian patches. + - Applied libjava-echo-fix patch. + - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. + Closes: #329840. + - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. + - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). + * Update generated Ada files. + * Fix logic to disable mudflap and Obj-C++ via the environment. + * Remove f77 build bits. + * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). + * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is + not necessary for byte-code compilations, but for compilations to native + code. For compilations to byte-code, use a better compiler like ecj + for now (found in the ecj-bootstrap package). + * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. + * Fix with_libnof logic for cross-compilations (Josh Triplett). + Closes: #333951. + * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. + Closes: #333954. + * On i386, build-depend on libc6-dev-amd64. Closes: #329108. + * (Build-)depend on glibc 2.3.5-5. + + -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 + +gcc-4.0 (4.0.2-2) unstable; urgency=low + + * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the + changes between 4.0.2 RC3 and the final 4.0.2 release, missing from + the upstream tarball. Remove patches applied upstream (gcc-c-decl, + pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). + * On ix86 architectures run the testsuite for -march=i686 as well. + * Build libffi on the Hurd (closes: #328705). + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. + * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). + * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. + * Add workaround not to make libmudflap _start/_end not small data on + mips/mipsel, taken from CVS HEAD. + * Don't build the nof libraries on powerpc. + * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. + + -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 + +gcc-4.0 (4.0.2-1) unstable; urgency=low + + * GCC 4.0.2 release. + * lib64stdc++6: Set priority to optional. + * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). + Backport from CVS HEAD, Michael Koch. + * Apply java patches, proposed for the 4.0 branch: PR java/24018, + PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, + PR java/20338. + * Update the expect/pty test to actually call expect directly, rather + than test for the existence of PTYs, since a working expect is what + we really care about, not random device files (Adam Conrad). + Closes: #329715. + * Add build dependencies on lib64z1-dev. + * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from + 4.0.1 + + -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 + +gcc-4.0 (4.0.1-9) unstable; urgency=low + + * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). + * Apply patches: + - Fix PR java/21418: Order of source files matters when compiling, + backported from mainline. + - Fix for PR 23043, backported form mainline. + - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. + * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). + * Fail the build early, if the system doesn't have any pty devices + created in /dev. Needed for running the testsuite. + * Update hurd changes again (closes: #328973). + + -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 + +gcc-4.0 (4.0.1-8) unstable; urgency=medium + + * Update to CVS 20050917, taken from the gcc-4_0-branch. + - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). + * Fix PR java/23891, eclipse bootstrap. + * Set priority of gcc-4.0-hppa64 package to standard. + * Bump standards version to 3.6.2. + * Fix java wrapper script, mishandles command line options with arguments. + Patch from Olly Betts. Closes: #296456. + * Bump epoch of the lib32gcc1 package to the same epoch as for the the + libgcc1 and lib64gcc1 packages. + * Fix some lintian warnings. + * Build libffi on the Hurd (closes: #328705). + * For biarch builds, disable the testsuite for the non-default architecture + for runtime libraries, which are not built by default (libjava). + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Install Ada .ali files read-only. + + -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 + +gcc-4.0 (4.0.1-7) unstable; urgency=low + + * Update to CVS 20050913, taken from the gcc-4_0-branch. + - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). + - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. + Closes: #321215. + - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. + Closes: ##322170. + * Install 'altivec.h' on ppc64 (closes: #323945). + * Install locale data with the versioned package name (closes: #321591). + * Fix fastjar build without building libjava. + * On hppa, don't build using gcc-3.3 when ada is disabled. + * On m68k, don't build the stage1 compiler using -O. + + * Ludovic Brenta + - Allow the choice whether or not to build with NLS. + - Fix a typo whereby libffi was always enabled on i386. + + -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 + +gcc-4.0 (4.0.1-6) unstable; urgency=low + + * Update to CVS 20050821, taken from the gcc-4_0-branch. + - debian/patches/pr21562.dpatch: Removed, applied upstream. + - debian/patches/libjava-awt-name.dpatch: Updated. + - debian/patches/classpath-20050618.dpatch: Updated. + * Use all available CPU's for the check target, unless USE_NJOBS == no. + * debian/patches/biarch-include.dpatch: Include + /usr/local/include/-linux-gnu before including /usr/local/include. + * Fix biarch system include directories for the non-default architecture. + * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. + + -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 + +gcc-4.0 (4.0.1-5) unstable; urgency=low + + * Update to CVS 20050816, taken from the gcc-4_0-branch. + - Fix PR middle-end/23369, wrong code generation for funcptr comparison + on hppa. Closes: #321785. + - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). + * Build-depend on libcairo2-dev (they say, that's the final package name ...) + * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy + of the .la files in the libgcj6 package into this directory. + Closes: #322576. + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Remove build dependencies for gpc. + * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). + * Synchronize with Ubuntu. + + -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 + +gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low + + * Jeff Bailey + + Enable i386 biarch using biarch glibc (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64 + - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + - debian/rules2: Enable biarch build in Ubuntu. + + * Matthias Klose + + - Add shlibs file and dependency information for the lib32gcc1 package. + - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). + - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. + Closes: #321016. + - libffi-hppa.dpatch: Remove, applied upstream. + + -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 + +gcc-4.0 (4.0.1-4) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Update to CVS 20050806, taken from the gcc-4_0-branch. + * Build depend on libcairo0.6.0-dev (closes: #321540). + * Fix Ada build on the hurd (closes: #321350). + * Update libffi for mips (Thiemo Seufer). Closes: #321100. + * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). + Closes: #320915. + * Add libXXgcc1 build dependencies for biarch builds. + + -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 + +gcc-4.0 (4.0.1-3) unstable; urgency=medium + + * Update to CVS 20050725, taken from the gcc-4_0-branch. + - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). + * Synchronize with Ubuntu. + * Fix applying hurd specific patches for the hurd build (closes: #318443). + * Do not build-depend on libmpfr-dev on architectures, where fortran + is not built. + * Apply biarch include patch on ppc64 as well (closes: #318603). + * Correct libstdc++-dev package description (closes: #319082). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. + Closes: #319818. + + -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 + +gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low + + * Update to CVS 20050720, taken from the gcc-4_0-branch. + - Fix PR22278, volatile issues, seen when building xorg. + * Build against new libcairo1-dev (0.5.2). + + -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 + +gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low + + * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. + + -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 + +gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + * Update to CVS 20050718, taken from the gcc-4_0-branch. + - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer + to struct the class derives from generates wrong code. + * Build biarch runtime libraries for Fortran and ObjC. + * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ + is dlclosed). Closes: #293466. + + -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 + +gcc-4.0 (4.0.1-2) unstable; urgency=low + + * Don't apply the patch to make -mieee the default on alpha-linux-gnu. + Causes the bootstrap to fail on alpha-linux-gnu. + + -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 + +gcc-4.0 (4.0.1-1) unstable; urgency=high + + * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. + * Build fastjar on mips/mipsel, fix fastjar build without building java. + * Disable the comparision check on unstable/ia64. adaint.o differs, + currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. + * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. + * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. + * On powerpc, don't build with -j >1, apparently doesn't succeeds + on the Debian buildd. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (Tyson Whitehead). + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Move new java headers from libstdc++-dev to libgcj-dev, add replaces + line. + * Update classpath patch to work with cairo-0.5.1. Patch provided by + Michael Koch. + * Further classpath updates for gnu.xml and javax.swing.text.html. + Patch provided by Michael Koch. + * Require binutils (>= 2.16.1) as a build dependency and a dependency. + * On i386, require amd64-libs-dev (>= 1.2). + * Update debian/NEWS.{html,gcc}. + + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: + - General: + + PR rtl-optimization/2960: Duplicate loop conditions even with -Os + Closes: #94701. + + PR optimization/3995: i386 optimisation: joining tests. + Closes: #105309. + + PR rtl-optimization/11635: Unnecessary store onto stack, more + curefully expand union cast (closes: #202016). + + PR target/7618: vararg disallowed in virtual function. Closes: #205404. + + Large array problem on 64 bit platforms (closes: #209152). + + Mark more strings as translatable (closes: #227129). + + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. + + Better code generation for if(!p) return NULL;return p; + Closes: #242318. + + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. + Closes: #255801. + + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). + + Link error building memtest (closes: #281445). + - Ada: + + PR ada/12450: Constraint error for valid input (closes: #210844). + + PR ada/13620: miscompilation of array initializer with + -O3 -fprofile-arcs. Closes: #226244. + - C: + + PR c/6897: Code produced with -fPIC reserves EBX, but compiles + bad __asm__ anyway (closes: #73065). + + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. + Closes: #121282. + + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. + Closes: #177303. + + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. + + PR other/11370: -Wunreachable-code gives false complaints. + Closes: #196600. + + PR c/11369: Too relaxed checking with -Wstrict-prototypes. + Closes: #197504. + + PR c/11445: False positive warning with -Wunreachable-code. + Closes: #200140. + + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long + support when in C99 mode. Closes: #200392. + + PR c/456: Handling of constant expressions. Closes: #225935. + + ICE on invalid #define with -traditional (closes: #242916). + + No warning when initializing a variable with itself, new option + -Winit-self (closes: #293957). + - C++: + + C++ parse error (closes: #42946). + + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 + debug mode). Closes: #128993. + + Parse errors in nested constructor calls (closes: #138561). + + PR optimization/1823: -ftrapv aborts with pointer difference due to + division optimization. Closes: #169862. + + ICE on invalid code (closes: #176101). + + PR c++/10199: ICE handling method parametrized by template. + Closes: #185604. + + High memory usage building packages OpenOffice.org and MythTV. + Closes: #194345, #194513. + + Improved documentation of std::lower_bound (closes: #196380). + + ICE in regenerate_decl_from_template (closes: #197674). + + PR c++/11444: Function fails to propagate up class tree + (template-related). Closes: #198042. + + ICE when using namespaced typedef of primitive type as struct. + Closes: #198261. + + Bug using streambuf / iostream to read from a named pipe. + Closes: #216105. + + PR c++/11437: ICE in lookup_name_real (closes: #200011). + + Add large file support (LFS) in libstdc++ (closes: #220000). + + PR c++/13621: ICE compiling a statement expression returning type + string (closes: #224413). + + g++ doesn't find inherited inner class after template instantiation. + Closes: #227518. + + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. + Closes: #229642. + + Missing symbol _M_setstate in libstdc++ (closes: #232709). + + Unable to parse declaration of inline constructor explicit + specialization (closes: #234709). + + ICE (segfault) on invalid C++ code (closes: #246031). + + ICE in lookup_tempate_function (closes: #262441). + + Undefined symbols in libstdc++, when using specials char_traits. + Closes: #266110. + + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE + causes infinite recursion (closes: #270795). + + ICE in tree_low_cst (closes: #276291). + + ICE in in expand_call (closes: #283503). + + typeof operator is misparsed in a template function (closes: #288555). + + ICE in tree_low_cs (closes: #291374). + + Improve uninformative error messages (closes: #292961, #293076). + + ICE on array initialization (closes: #294560). + + Failure to build xine-lib with -finline-functions (closes: #306854). + - Java: + + Fix error finding files in subdirectories (closes: #195480). + + Implement java.text.CollationElementIterator lacks getOffset(). + Closes: #259789. + - Treelang: + + Pointer truncation on 64bit architectures (closes: #308367). + - Architecture specific: + - alpha + + PR debug/10695: ICE on alpha while building agistudio. + Closes: #192568. + + ICE when building fceu (closes: #228018, #252764). + - amd64 + + Miscompilation of Objective-C code (closes: #250174). + + g++ hangs compiling k3d on amd64 (closes: #285364). + - arm + + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. + Closes: #285238. + - i386 + + PR target/4106: i386 -fPIC asm ebx clobber no error. + Closes: #153472. + + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. + + Wrong code generation on at least ix86 (closes: #275655). + - m68k + + PR target/9201: ICE compiling octave-2.1 (closes: #175478). + + ICE in verify_initial_elim_offsets (closes: #204407, #257012). + + g77 generates invalid assembly code (closes: #225621). + + ICE in verify_local_live_at_start (closes #245584). + - powerpc + + PR optimization/12828: -floop-optimize is unstable on PowerPC (float + to int conversion problem). Closes: #218219. + + PR target/13619: ICE building altivec code in ffmpeg. + Closes: #226148. + + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. + - sparc + + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). + + Wrong optimization on sparc32 when building linux kernel. + Closes: #254626. + + * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: + - General: + + PR rtl-optimization/6901: Optimizer improvement (removing unused + local variables). Closes: #67206. + + PR middle-end/179: Failure to detect use of unitialized variable + with -O -Wall. Closes: #117765. + + ICE building glibc's nptl on amd64 (closes: #260710, #307993). + + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. + + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. + - Ada: + + PR ada/10889: Convention Fortran matrices mishandled in generics. + Closes: #192135. + + PR ada/13897: Implement tasking on powerpc. Closes: #225346. + - C: + + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. + + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. + + PR c/12867: Incorrect warning message (void format, should be void* + format). Closes: #217360. + + PR c/16066: PR 16066] i386 loop strength reduction bug. + Closes: #254659. + - C++: + + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. + + PR translation/16025: ICE with unsupported locale(closes: #242158). + + PR c++/15125: -Wformat doesn't warn for different types in fprintf. + Closes: #243507. + + PR c++/15214: Warn only if the dtor is non-private or the class has + friends. (closes: #246639). + + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. + Closes: #262934. + + PR libstdc++/17223: Missing .so references in generated libstdc++ + manpages. Closes: #262956. + + libstdc++-doc: Improve man pages (closes: #280910). + + PR c++/19006: ICE in tree_low_cst. Closes: #285692. + + g++ does not check arguments to fprintf. Closes: #281847. + - Java: + + PR java/7304: gcj ICE (closes: #152501). + + PR libgcj/7305: Installation of headers not directly in /usr/include. + Closes: #195483. + + PR libgcj/11941: libgcj timezone handling (closes: #203212). + + PR java/14709: gcj fails to wait for its child processes on exec(). + Closes: #238432. + + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). + Closes: #275547. + + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. + + PR java/19711: gcj segfaults instead of reporting the ambiguous + expression. Closes: #286715. + + Static libgcj contains repeated archive members (closes: #298263). + - Architecture specific: + - alpha + + Unaligned accesses with ?-operator (closes: #301983). + - arm + + Compilation error of glibc-2.3.4 on arm (closes: #298508). + - m68k + + ICE in add_insn_before (closes: #248432). + - mips + + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). + - powerpc + + ICE in extract_insn (closes: #311128). + + * Closing bug reports as wontfix: + - g++ defines _GNU_SOURCE when using the libstdc++ header files. + Behaviour did change since 3.0. Closes: #126703, #164872. + + -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 + +gcc-4.0 (4.0.0ds2-12) unstable; urgency=high + + * Update to CVS 20050701, taken from the gcc-4_0-branch. + * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport + from mainline. + * Disable Fortran on m68k. Currently FTBFS. + * Split multiarch-include/lib patches. Update multiarch-include patch. + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Configure --with-java-home, as used by java-gcj-compat. + Closes: #315646. + * Make libgcj-dbg packages priority extra. + * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. + * On m68k, do not create the default classmap.db in the gcj postinst. + See #312830. + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. + * On amd64, don't reference lib64, but instead lib (lib64 is a symlink + to lib). Closes: #293050. + * Remove references to build directories from the .la files. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * Disable Ada for sh3 sh3eb sh4 sh4eb. + * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. + Closes: #316499. + + -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 + +gcc-4.0 (4.0.0ds1-11) unstable; urgency=low + + * debian/rules.defs: Disable Ada for alpha. + * debian/rules.conf: Fix typo in type-handling replacement code. + * Don't ship an empty libgcj6-dbg package. + + -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 + +gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium + + * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch + to fix libstdc++ 3.4.5/4.0 compatibility. + * type-handling output became insane. Don't use it anymore. + * Drop the reference to the stl-manual package (closes: #314983). + * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. + Closes: #315140. + * Terminate the acats-killer process, even if the build is aborted + by the user (closes: #314405). + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build + files. + * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop + build dependency on libcairo-dev. + * Fix setting of the system header directory for the hurd (Michael Banck). + Closes: #315386. + * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. + + -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low + + * Fix version number in libgcj shlibs file. + + -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 + +gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low + + * Update to 4.0.1, release candidate 2. + * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Rename libawt to libgcjawt to avoid conflicts with other + libawt implementations (backport from HEAD). + * Update classpath awt, swing and xml parser for HTML support in swing. + Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. + * Remove the libgcj-buffer-strategy path, part of the classpath update. + * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. + * Require cairo-0.5 as build dependency. + * gij-4.0: Provide java1-runtime. + * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). + * gcj-4.0: Provide an rmic alternative (using grmic-4.0). + * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. + Closes: #312741. + * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. + * Apply proposed patch for PR 18421 and PR 18719 (m68k only). + * Apply proposed path for PR 21562. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. + * gnat-4.0: only depend on libgnat, when a shared libgnat is built. + * gfortran-4.0: Depend on libgmp3c2 | libgmp3. + * On hppa, explicitely use gcc-3.3 as a build dependency in the case + that Ada is disabled. + * libmudflap: Always build the library for the non-default biarch + architecture, or else the test results show link failures. + + -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 + +gcc-4.0 (4.0.0-9) unstable; urgency=low + + * Upload to unstable. + + -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 + +gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low + + * debian/control: Regenerate. + + -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 + +gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low + + * Fix powerpc-config-ml patch. + + -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 + +gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low + + * powerpc biarch support: + - Enable powerpc biarch support, build lib64gcc1 on powerpc. + - Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + - Apply the same patch to the other runtime librararies as well. + - Run the testsuite with -m64, if we can execute 64bit binaries. + - Add libc6-dev-ppc64 as build dependency for powerpc. + * 32bit gcj libs for amd64. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * Update to CVS 20050603, taken from the gcc-4_0-branch. + * g++-4.0 provides c++abi2-dev. + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * Build libgfortran for biarch as well, else the testsuite will fail. + + -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 + +gcc-4.0 (4.0.0-8) experimental; urgency=low + + * Synchronize with Ubuntu. + + -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 + +gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low + + * Fix build failures for builds with disabled testsuite. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. + * Add the debugging symbols of the optimzed libstdc++ build in the + lib*stdc++6-dbg packages as well. + * Build a libgcj6-dbg package. + * Update to CVS 20050522, taken from the gcc-4_0-branch. + * Add Ada support for the ppc64 architecture (Andreas Jochens): + * debian/patches/ppc64-ada.dpatch + - Add gcc/ada/system-linux-ppc64.ads, which has been copied from + gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 + instead of 32. + - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. + * debian/rules.patch + - Use ppc64-ada patch on ppc64. + * debian/rules.d/binary-ada.mk + Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, + libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. + Closes: #308948. + * Add libc6-dev-i386 as an alternative build dependency for amd64. + Closes: #305690. + + -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 + +gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low + + * Don't trust dpkg-architecture (1.13.4), it "hurds" ... + + -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 + +gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low + + * libgcj6-dev: Don't provide libgcj-dev. + + -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 + +gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low + + * Update to CVS 20050517, taken from the gcc-4_0-branch. + * Apply proposed patch for PR21293. + + -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 + +gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low + + * Update to CVS 20050515, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 + +gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 + +gcc-4.0 (4.0.0-7) experimental; urgency=low + + * Update to CVS 20050509, taken from the gcc-4_0-branch. + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma + inside []. + * Tighten shlibs dependencies to require the current version. + + -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 + +gcc-4.0 (4.0.0-6) experimental; urgency=low + + * Update to CVS 20050508, taken from the gcc-4_0-branch. + + -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 + +gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low + + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + + -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 + +gcc-4.0 (4.0.0-5) breezy; urgency=low + + * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). + * Update to CVS 20050507, taken from the gcc-4_0-branch. + * gcj-4.0: Install gjnih. + * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. + Backport from 4.1. + * Fix all lintian errors and most of the warnings. + + -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 + +gcc-4.0 (4.0.0-4) breezy; urgency=low + + * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. + + -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 + +gcc-4.0 (4.0.0-3) breezy; urgency=low + + * Update to CVS 20050506, taken from the gcc-4_0-branch. + * Update priority of java alternatives to 40. + * Move gcj-dbtool to gij package, move the default classmap.db to + /var/lib/gcj-4.0/classmap.db. Create it in the postinst. + * Fix gcc-4.0-hppa64 postinst (closes: #307762). + * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 + +gcc-4.0 (4.0.0-2) experimental; urgency=low + + * GCC 4.0.0 release. + * Update to CVS 20050503, taken from the gcc-4_0-branch. + * Add gnat-4.0 as an alternative build dependency (closes: #305690). + + -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 + +gcc-4.0 (4.0.0-1) experimental; urgency=low + + * GCC 4.0.0 release. + + -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 + +gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low + + * CVS 20050413, taken from the gcc-4_0-branch. + * Add proposed patches for PR20126, PR20490, PR20929. + + -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 + +gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low + + * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. + - C++ fix for "optimizer breaks function inlining". Closes: #302989. + * Append the GCC version to the fastjar/grepjar version string. + * Use short file names in the libstdc++ docs (closes: #301140). + * Fix libstdc++-dbg dependencies (closes: #303866). + + -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 + +gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low + + * CVS 20050326, taken from the gcc-4_0-branch. + * Reenable Ada on ia64. + * Build libgnat on hppa, sparc, s390 again. + * ppc64 support (Andreas Jochens): + * debian/control.m4 + - Add libc6-dev-powerpc [ppc64] to the Build-Depends. + - Change the Description for lib32gcc1: s/ia32/32 bit Version/ + * debian/rules.defs + - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib + facilities as amd64. + * debian/rules.d/binary-gcc.mk + - Correct an error in the 'files_gcc' definition for biarch_ia32 + (replace '64' by '32'). + * debian/rules2 + - Do not use '--disable-multilib' on powerpc64-linux. + Use '--disable-nof --disable-softfloat' instead. + * debian/rules.d/binary-libstdcxx.mk + - Put the 32 bit libstdc++ files in '/usr/lib32'. + * debian/rules.patch + - Apply 'ppc64-biarch' patch on ppc64. + * debian/patches/ppc64-biarch.dpatch + - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and + /lib32 for 32 bit libraries. + - Add multilib handling to src/config-ml.in (taken from + amd64-biarch.dpatch). + * Rename biarch_ia32 to biarch32, as suggsted by Andreas. + * Use /bin/dash on hppa. + * Reenable the build of the hppa64 compiler. + * Enable parallel builds by defaults (set environment variale USE_NJOBS=no + or USE_NJOBS= to modify the default, which is to use the + number of available processors). + + -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 + +gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low + + * CVS 20050322, taken from the gcc-4_0-branch. + - Add proposed fix for PR19406. + * Configure --with-gtk-cairo only if version 0.3.0 is found. + * Split out gcc-4.0-locales package. Better chance of getting + bug reports in english language. + + -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 + +gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low + + * CVS 20050304, taken from the gcc-4_0-branch. + * Build the treelang compiler. + + -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low + + * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. + + -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low + + * Add patch from PR20160, avoid creating archives with components + that have duplicate basenames. + + -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 + +gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low + + * CVS 20050301, taken from the gcc-4_0-branch. + Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. + * Add fastjar-4.0 binary and manpage. Some java packages append it + for all java related tools. + * Add libgcj6-src package for source code availability in IDE's. + * On hppa, disable the build of the hppa64 cross compiler, disable + java, disable running the testsuite (request by Lamont). + * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). + * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. + Work around libtool problems install libjawt. + Install jawt header files in libgcj6-dev. + * Add workaround for PR debug/19769. + + -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low + + * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. + + -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low + + * Disable Ada for powerpc. + + -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 + +gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low + + * Avoid build dependency on type-handling. + * Install 32bit libs on amd64 in /lib32 and /usr/lib32. + + -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 + +gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). + + -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 + +gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. + * Call the 4.0 gcx versions in the java wrappers (closes: #291075). + * Correctly install libgij (closes: #291077). + * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). + + -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 + +gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. + * Update cross build patches (Nikita V. Youshchenko). + * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. + Doesn't yet bootstrap on alpha, hppa, ia64. + + -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 + +gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. + + -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 + +gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. + * Lot's of merges and updates from the gcc-3.4 packages. + + -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 + +gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. + - Addresses many issues with the libstdc++ man pages (closes: #278549). + * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least + these are known to be broken at the time of the snapshot. + * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. + * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Fixes: #274362. + * Update libffi-mips patch (closes: #274096). + * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. + * Update sparc biarch patch. + * Fix symlinks for gfortran manpage (closes: #278548). + * Update cross build patches (Nikita V. Youshchenko). + * Update Ada patches (Ludovic Brenta). + + -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 + +gcc-4.0 (4.0-0pre0) experimental; urgency=low + + * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. + + * Matthias Klose + + - Integrate accumulated packaging patches from gcc-3.4. + - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). + - libffi4-dev: conflict with libffi3-dev (closes: #265939). + + * Robert Millan + + * control.m4: + - s/locale_no_archs !hurd-i386/locale_no_archs/g + (This is now handled in rules.defs. [1]) + - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] + - Add type-handling to build-deps. [3] + * rules.conf: + - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] + - Generate *_no_archs variables with type-handling and use them for + for m4's -D parameters. [3] + * rules.defs: + - use filter instead of findstring [1]. + - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. + - enable java for kfreebsd-gnu [6] + - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] + - enable libgc for kfreebsd-gnu [6] + - enable checks for kfreebsd-gnu and knetbsd-gnu [7] + - enable locales for kfreebsd-gnu and gnu [1] [8]. + * Closes: #264025. + + -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 + +gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. + * Install locale data with versioned package name (closes: #260497). + * Fix libgnat symlinks. + + -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 + +gcc-3.5 (3.5-0pre0) experimental; urgency=low + + * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. + + -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 + +gcc-3.4 (3.4.1-1) experimental; urgency=low + + * gcc-3.4.1 final release. + - configured wth --enable-libstdcxx-allocator=mt. + * Fixes for generating cross compiler packages (Jeff Bailey). + + -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (ss-970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 --- gcc-4.4-4.4.7.orig/debian/changelog-4.4 +++ gcc-4.4-4.4.7/debian/changelog-4.4 @@ -0,0 +1,36 @@ + * Closing reports reported against gcc-4.1 and fixed in gcc-4.4: + - General + + + - C + + + - C++/libstdc++ + + + - Fortran + - Java + - Architecture specific: + - mips + - sparc + * Closing reports reported against gcc-4.2 and fixed in gcc-4.4: + - General + + + - C + + + - C++/libstdc++ + + + - Fortran + - Java + - Architecture specific: + - mips + - sparc + * Closing reports reported against gcc-4.3 and fixed in gcc-4.4: + - General + + + - C + + + - C++/libstdc++ + + + - Fortran + - Java + - Architecture specific: + - mips + - sparc --- gcc-4.4-4.4.7.orig/debian/compat +++ gcc-4.4-4.4.7/debian/compat @@ -0,0 +1 @@ +5 --- gcc-4.4-4.4.7.orig/debian/control +++ gcc-4.4-4.4.7/debian/control @@ -0,0 +1,292 @@ +Source: gcc-4.4 +Section: devel +Priority: optional +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose , Arthur Loiret +Standards-Version: 3.9.5 +Build-Depends: dpkg-dev (>= 1.16.0~ubuntu4), debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 s390x sparc kfreebsd-amd64], 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-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390 [s390x], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 kfreebsd-amd64 s390x], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], m4, libtool, autoconf2.59, libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, binutils (>= 2.20.1-15~) | binutils-multiarch (>= 2.20.1-15~), binutils-hppa64 (>= 2.20.1-15~) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), locales [!knetbsd-i386 !knetbsd-alpha], procps, sharutils, libcloog-ppl-dev (>= 0.15.8-1~), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), dejagnu [!m68k !hurd-i386 !hurd-alpha], autogen, realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt +Build-Depends-Indep: doxygen (>= 1.4.2), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base, +Homepage: http://gcc.gnu.org/ +Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc-4.4/ +Vcs-Svn: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc-4.4 + +Package: gcc-4.4-base +Architecture: any +Multi-Arch: same +Section: libs +Priority: optional +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: gnat-4.4-base (<< 4.4.6-3~) +Conflicts: gcj-4.4-base (<< 4.4.6-9~) +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: gcc-4.4 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), cpp-4.4 (= ${gcc:Version}), binutils (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: ${gcc:multilib}, libmudflap0-4.4-dev (>= ${gcc:Version}), gcc-4.4-doc (>= ${gcc:SoftVersion}), gcc-4.4-locales (>= ${gcc:SoftVersion}), libgcc1-dbg, libgomp1-dbg, libmudflap0-dbg, ${dep:libcloog}, ${dep:gold} +Provides: c-compiler +Description: GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-4.4-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ${dep:libgompbiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libmudflapbiarch} +Description: GNU C compiler (multilib files) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). + +Package: gcc-4.4-hppa64 +Architecture: hppa +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3) +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +Package: gcc-4.4-spu +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends} +Provides: spu-gcc +Description: SPU cross-compiler (preprocessor and C compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor + and C compiler). + +Package: g++-4.4-spu +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: spu-g++ +Description: SPU cross-compiler (C++ compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler). + +Package: gfortran-4.4-spu +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: spu-gfortran +Description: SPU cross-compiler (Fortran compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler). + +Package: cpp-4.4 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc-4.4-locales (>= ${gcc:SoftVersion}) +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-4.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.4-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-4.4-locales +Architecture: all +Section: devel +Priority: optional +Depends: gcc-4.4-base (>= ${gcc:SoftVersion}), cpp-4.4 (>= ${gcc:SoftVersion}), ${misc:Depends} +Recommends: gcc-4.4 (>= ${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++-4.4 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (= ${gcc:Version}), libstdc++6-4.4-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler, c++abi2-dev +Suggests: ${gxx:multilib}, gcc-4.4-doc (>= ${gcc:SoftVersion}), libstdc++6-4.4-dbg +Description: GNU C++ compiler + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + +Package: g++-4.4-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), g++-4.4 (= ${gcc:Version}), gcc-4.4-multilib (= ${gcc:Version}), ${dep:libcxxbiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib files) + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). + +Package: protoize +Architecture: any +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Create/remove ANSI prototypes from C code + "protoize" can be used to add prototypes to a program, thus converting + the program to ANSI C in one respect. The companion program "unprotoize" + does the reverse: it removes argument types from any prototypes + that are found. + +Package: gfortran-4.4 +Architecture: any +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (= ${gcc:Version}), libgfortran3 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler +Suggests: ${gfortran:multilib}, gfortran-4.4-doc, libgfortran3-dbg +Replaces: libgfortran3-dev +Description: GNU Fortran 95 compiler + This is the GNU Fortran compiler, which compiles + Fortran 95 on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gfortran-4.4-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 s390x sparc +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gfortran-4.4 (= ${gcc:Version}), gcc-4.4-multilib (= ${gcc:Version}), ${dep:libgfortranbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran 95 compiler (multilib files) + This is the GNU Fortran compiler, which compiles Fortran 95 on platforms + supported by the gcc compiler. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). + +Package: gfortran-4.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.4-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran 95 compiler in info format. + +Package: libstdc++6-4.4-dev +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), g++-4.4 (= ${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++6-4.4-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++6-4.4-pic +Architecture: any +Section: libdevel +Priority: extra +Depends: gcc-4.4-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libstdc++6-4.4-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-4.4-dbg +Architecture: any +Section: debug +Priority: extra +Depends: gcc-4.4-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), libgcc1-dbg, ${shlibs:Depends}, ${misc:Depends} +Recommends: libstdc++6-4.4-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 +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib32stdc++6-4.4-dbg +Architecture: amd64 ppc64 kfreebsd-amd64 s390x +Section: debug +Priority: extra +Depends: gcc-4.4-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), libstdc++6-4.4-dev (= ${gcc:Version}), lib32gcc1-dbg, ${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 +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: lib64stdc++6-4.4-dbg +Architecture: i386 powerpc sparc s390 mips mipsel +Section: debug +Priority: extra +Depends: gcc-4.4-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), libstdc++6-4.4-dev (= ${gcc:Version}), lib64gcc1-dbg, ${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 +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libn32stdc++6-4.4-dbg +Architecture: mips mipsel +Section: debug +Priority: extra +Depends: gcc-4.4-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), libstdc++6-4.4-dev (= ${gcc:Version}), libn32gcc1-dbg, ${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 +Description: GNU Standard C++ Library v3 (debugging files) + This package contains the shared library of libstdc++ compiled with + debugging symbols. + +Package: libstdc++6-4.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.4-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 +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: gcc-4.4-soft-float +Architecture: arm armel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: gcc-soft-float-ss +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-4.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-4.4-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-4.4-source +Architecture: all +Priority: optional +Depends: make (>= 3.81), autoconf2.59, quilt, patchutils, ${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-4.4-4.4.7.orig/debian/control.m4 +++ gcc-4.4-4.4.7/debian/control.m4 @@ -0,0 +1,1865 @@ +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(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') + +divert`'dnl +dnl -------------------------------------------------------------------------- +Source: SRCNAME +Section: devel +Priority: PRI(optional) +ifelse(DIST,`Ubuntu',`dnl +ifelse(regexp(SRCNAME, `gnat\|gpc-|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 , Matthias Klose +', regexp(SRCNAME, `gdc'),0,`dnl +Uploaders: Iain Buclaw , Arthur Loiret , Matthias Klose +', regexp(SRCNAME, `gpc'),0,`dnl +Uploaders: Matthias Klose +', `dnl +Uploaders: Matthias Klose , Arthur Loiret +')dnl SRCNAME +Standards-Version: 3.9.5 +ifdef(`TARGET',`dnl cross +Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), dpkg-cross (>= 1.25.99), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTOGEN_BUILD_DEP CLOOG_BUILD_DEP AUTO_BUILD_DEP SOURCE_BUILD_DEP CROSS_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, make (>= 3.81), quilt +',`dnl native +Build-Depends: DPKG_BUILD_DEP debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 s390x sparc kfreebsd-amd64], LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP AUTO_BUILD_DEP AUTOGEN_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], zlib1g-dev, gawk, lzma, xz-utils, patchutils, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), FORTRAN_BUILD_DEP locales [locale_no_archs], procps, sharutils, PASCAL_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP SPU_BUILD_DEP CLOOG_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP ELF_BUILD_DEP CHECK_BUILD_DEP GDC_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81), quilt +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP +')dnl +dnl Build-Conflicts: qt3-dev-tools +ifelse(regexp(SRCNAME, `gnat'),0,`dnl +Homepage: http://gcc.gnu.org/ +', regexp(SRCNAME, `gdc'),0,`dnl +Homepage: http://bitbucket.org/goshawk/gdc +', regexp(SRCNAME, `gpc'),0,`dnl +Homepage: http://www.gnu-pascal.de/gpc/h-index.html +', `dnl +Homepage: http://gcc.gnu.org/ +')dnl SRCNAME +Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc`'PV/ +Vcs-Svn: svn://svn.debian.org/svn/gcccvs/branches/sid/gcc`'PV + +ifelse(SRCNAME,gcc-snapshot,`dnl +Package: gcc-snapshot +Architecture: any +Section: devel +Priority: extra +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') +Description: A 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(`BASETARGET', `') +define(`BASEDEP', `gcc`'PV-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'PV-base (>= ${gcc:SoftVersion})') + +dnl base, when building libgcc out of the gcj source; needed if new symbols +dnl in libgcc are used in libgcj. +ifelse(index(SRCNAME, `gcj'), 0, ` +define(`BASEDEP', `gcj`'PV-base (= ${gcj:Version})') +define(`SOFTBASEDEP', `gcj`'PV-base (>= ${gcj:SoftVersion})') +') + +ifdef(`TARGET', `', ` +ifenabled(`gccbase',` + +Package: gcc`'PV-base +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +')`'dnl +Section: libs +Priority: PRI(required) +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Breaks: gnat-4.4-base (<< 4.4.6-3~) +Conflicts: gcj-4.4-base (<< 4.4.6-9~) +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 +')`'dnl native + +ifenabled(`gccxbase',` +dnl override default base package dependencies to cross version +dnl This creates a toolchain that doesnt depend on the system -base packages +define(`BASETARGET', `PV`'TS') +define(`BASEDEP', `gcc`'BASETARGET-base (= ${gcc:Version})') +define(`SOFTBASEDEP', `gcc`'BASETARGET-base (>= ${gcc:SoftVersion})') + +Package: gcc`'BASETARGET-base +Architecture: any +Section: devel +Priority: PRI(extra) +Depends: ${misc:Depends} +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). +')`'dnl + +ifenabled(`java',` +Package: gcj`'PV-base +Architecture: any +Section: libs +Priority: PRI(optional) +Depends: ${misc:Depends} +Description: GCC, the GNU Compiler Collection (gcj base package) + This package contains files common to all java related packages + built from the GNU Compiler Collection (GCC). +')`'dnl java + +ifenabled(`ada',` +Package: gnat`'PV-base +Architecture: any +Section: libs +Priority: PRI(optional) +Depends: ${misc:Depends} +Breaks: gcc-4.4 (<< 4.4.6-9~) +Description: GCC, the GNU Compiler Collection (gnat base package) + This package contains files common to all Ada related packages + built from the GNU Compiler Collection (GCC). +')`'dnl ada + +ifenabled(`libgcc',` +Package: libgcc1`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libgcc1-TARGET-dcv1 +',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'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 +Architecture: ifdef(`TARGET',`all',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libgcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends} +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'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 +Architecture: ifdef(`TARGET',`all',`m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 +',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'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 +Architecture: ifdef(`TARGET',`all',`m68k') +Section: debug +Priority: extra +Depends: BASEDEP, libgcc2`'LS (= ${gcc:Version}), ${misc:Depends} +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'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(`lib4gcc',` +Package: libgcc4`'LS +Architecture: ifdef(`TARGET',`all',`hppa') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: ifdef(`STANDALONEJAVA',`gcj`'PV-base (>= ${gcj:Version})',`BASEDEP'), ${shlibs:Depends}, ${misc:Depends} +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 +Architecture: ifdef(`TARGET',`all',`hppa') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl +Section: debug +Priority: extra +Depends: BASEDEP, libgcc4`'LS (= ${gcc:Version}), ${misc:Depends} +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 lib4gcc + +ifenabled(`lib64gcc',` +Package: lib64gcc1`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: libgcc`'GCC_SO`'LS (<= 1:3.3-0pre9) +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 +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib64gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends} +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(`lib32gcc',` +Package: lib32gcc1`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'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 +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib32gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends} +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(`libneongcc',` +Package: libgcc1-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +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(`libn32gcc',` +Package: libn32gcc1`'LS +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${dep:libcbiarch}, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: libgcc`'GCC_SO`'LS (<= 1:3.3-0pre9) +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 +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libn32gcc1`'LS (= ${gcc:EpochVersion}), ${misc:Depends} +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 + +ifdef(`TARGET', `', ` +ifenabled(`libgmath',` +Package: libgccmath`'GCCMATH_SO`'LS +Architecture: i386 +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: GCC math support library + Support library for GCC. + +Package: lib32gccmath`'GCCMATH_SO`'LS +Architecture: amd64 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: GCC math support library (32bit) + Support library for GCC. + +Package: lib64gccmath`'GCCMATH_SO`'LS +Architecture: i386 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: GCC math support library (64bit) + Support library for GCC. +')`'dnl +')`'dnl native + +ifenabled(`cdev',` +Package: gcc`'PV`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: ${dep:libcdev} +Suggests: ${gcc:multilib}, libmudflap`'MF_SO`'PV-dev`'LS (>= ${gcc:Version}), gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}), libgcc`'GCC_SO-dbg`'LS, libgomp`'GOMP_SO-dbg`'LS, libmudflap`'MF_SO-dbg`'LS, ${dep:libcloog}, ${dep:gold} +Provides: c-compiler`'TS +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) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ${dep:libgompbiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libmudflapbiarch} +Description: GNU C compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). +')`'dnl multilib + +ifenabled(`plugindev',` +Package: gcc`'PV-plugin-dev`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP ${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. +')`'dnl plugindev +')`'dnl cdev + +ifenabled(`cdev',` +Package: gcc`'PV-hppa64 +Architecture: ifdef(`TARGET',`any',hppa) +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3) +Description: GNU C compiler (cross compiler for hppa64) + This is the GNU C compiler, a fairly portable optimizing compiler for C. + +ifdef(`TARGET', `', ` +Package: gcc`'PV-spu +Architecture: powerpc ppc64 +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, binutils-spu (>= 2.18.1~cvs20080103-3), newlib-spu, ${shlibs:Depends}, ${misc:Depends} +Provides: spu-gcc +Description: SPU cross-compiler (preprocessor and C compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (preprocessor + and C compiler). + +Package: g++`'PV-spu +Architecture: powerpc ppc64 +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: spu-g++ +Description: SPU cross-compiler (C++ compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (C++ compiler). + +Package: gfortran`'PV-spu +Architecture: powerpc ppc64 +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV-spu (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: spu-gfortran +Description: SPU cross-compiler (Fortran compiler) + GNU Compiler Collection for the Cell Broadband Engine SPU (Fortran compiler). + +')`'dnl native +')`'dnl cdev + +ifenabled(`cdev',` +Package: cpp`'PV`'TS +Architecture: any +Section: ifdef(`TARGET',`devel',`interpreters') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +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 +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev') +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libstdc++CXX_SO`'PV-dbg`'LS +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) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarch}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${dep:libcxxbiarchdbg} +Description: GNU C++ compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`mudflap',` +ifenabled(`libmudf',` +Package: libmudflap`'MF_SO`'LS +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: GCC mudflap shared support libraries + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: libmudflap`'MF_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl +Section: debug +Priority: extra +Depends: BASEDEP, libmudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends} +Description: GCC mudflap shared support libraries (debug symbols) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib32mudflap`'MF_SO`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libmudflap0 (<< 4.1) +Conflicts: ${confl:lib32} +Description: GCC mudflap shared support libraries (32bit) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib32mudflap`'MF_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends} +Description: GCC mudflap shared support libraries (32 bit debug symbols) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib64mudflap`'MF_SO`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libmudflap0 (<< 4.1) +Description: GCC mudflap shared support libraries (64bit) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib64mudflap`'MF_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib64mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends} +Description: GCC mudflap shared support libraries (64 bit debug symbols) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: libn32mudflap`'MF_SO`'LS +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libmudflap0 (<< 4.1) +Description: GCC mudflap shared support libraries (n32) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: libn32mudflap`'MF_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libn32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends} +Description: GCC mudflap shared support libraries (n32 debug symbols) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. +')`'dnl libmudf + +Package: libmudflap`'MF_SO`'PV-dev`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, libmudflap`'MF_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: ${sug:libmudflapdev} +Conflicts: libmudflap0-dev +Description: GCC mudflap support libraries (development files) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + . + This package contains the headers and the static libraries. +')`'dnl mudflap + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO`'LS +Architecture: any +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +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 +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +Conflicts: ${confl:lib32} +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 +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +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 +Architecture: biarchn32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Replaces: libssp0 (<< 4.1) +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. +')`'dnl +')`'dnl native + +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library + GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers + in the GNU Compiler Collection. + +Package: libgomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libgomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends} +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl +Description: GCC OpenMP (GOMP) support library (debug symbols) + GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${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 95 compilers + in the GNU Compiler Collection. + +Package: lib32gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib32gomp`'GOMP_SO`'LS (= ${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 95 compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${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 95 compilers + in the GNU Compiler Collection. + +Package: lib64gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib64gomp`'GOMP_SO`'LS (= ${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 95 compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${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 95 compilers + in the GNU Compiler Collection. + +Package: libn32gomp`'GOMP_SO-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libn32gomp`'GOMP_SO`'LS (= ${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 95 compilers + +ifenabled(`libneongomp',` +Package: libgomp`'GOMP_SO-neon`'LS +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +Description: GCC OpenMP (GOMP) support library [neon optimized] + GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 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(`proto',` +Package: protoize +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Create/remove ANSI prototypes from C code + "protoize" can be used to add prototypes to a program, thus converting + the program to ANSI C in one respect. The companion program "unprotoize" + does the reverse: it removes argument types from any prototypes + that are found. +')`'dnl proto + +ifenabled(`objpp',` +ifenabled(`objppdev',` +Package: gobjc++`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libobjc`'OBJC_SO`'LS (>= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler`'TS +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) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C++ compiler (multilib files) + This is the GNU Objective-C++ compiler, which compiles Objective-C++ on + platforms supported by the gcc compiler. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl obcpp + +ifenabled(`objc',` +ifenabled(`objcdev',` +Package: gobjc`'PV`'TS +Architecture: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc`'OBJC_SO`'LS (>= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libobjc`'OBJC_SO-dbg`'LS +Provides: objc-compiler`'TS +ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `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) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Objective-C compiler (multilib files)`'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. + . + On architectures with multilib support, the package contains files + and dependencies for the non-default multilib architecture(s). +')`'dnl multilib +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +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 +Section: debug +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl +Priority: extra +Depends: BASEDEP, libobjc`'OBJC_SO`'LS (= ${gcc:Version}), libgcc`'GCC_SO-dbg`'LS, ${misc:Depends} +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 +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib64objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Priority: extra +Depends: BASEDEP, lib64objc`'OBJC_SO`'LS (= ${gcc:Version}), lib64gcc`'GCC_SO-dbg`'LS, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: gcc`'PV-base (>= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. + +Package: lib32objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Priority: extra +Depends: BASEDEP, lib32objc`'OBJC_SO`'LS (= ${gcc:Version}), lib32gcc`'GCC_SO-dbg`'LS, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib32objc + +ifenabled(`libn32objc',` +Package: libn32objc`'OBJC_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: gcc`'PV-base (>= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Objective-C applications (n32) + Library needed for GNU ObjC applications linked against the shared library. + +Package: libn32objc`'OBJC_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Priority: extra +Depends: BASEDEP, libn32objc`'OBJC_SO`'LS (= ${gcc:Version}), libn32gcc`'GCC_SO-dbg`'LS, ${misc:Depends} +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(`libneonobjc',` +Package: libobjc`'OBJC_SO-neon`'LS +Section: libs +Architecture: NEON_ARCHS +Priority: PRI(optional) +Depends: BASEDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +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 +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libgfortran`'FORTRAN_SO`'LS (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Provides: fortran95-compiler +Suggests: ${gfortran:multilib}, gfortran`'PV-doc, libgfortran`'FORTRAN_SO-dbg`'LS +Replaces: libgfortran`'FORTRAN_SO-dev +Description: GNU Fortran 95 compiler + This is the GNU Fortran compiler, which compiles + Fortran 95 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) +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: GNU Fortran 95 compiler (multilib files)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `') + This is the GNU Fortran compiler, which compiles Fortran 95 on platforms + supported by the gcc compiler. + . + On architectures with multilib support, the package contains files + and dependencies 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 95 compiler in info `format'. +')`'dnl gfdldoc +')`'dnl fdev + +ifenabled(`libgfortran',` +Package: libgfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. + +Package: libgfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`any') +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +'))`'dnl +Priority: extra +Depends: BASEDEP, libgfortran`'FORTRAN_SO`'LS (= ${gcc:Version}), ${misc:Depends} +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 +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${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: lib64gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Priority: extra +Depends: BASEDEP, lib64gfortran`'FORTRAN_SO`'LS (= ${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. +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${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: lib32gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Priority: extra +Depends: BASEDEP, lib32gfortran`'FORTRAN_SO`'LS (= ${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. +')`'dnl lib32gfortran + +ifenabled(`libn32gfortran',` +Package: libn32gfortran`'FORTRAN_SO`'LS +Section: ifdef(`TARGET',`devel',`libs') +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${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: libn32gfortran`'FORTRAN_SO-dbg`'LS +Section: debug +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Priority: extra +Depends: BASEDEP, libn32gfortran`'FORTRAN_SO`'LS (= ${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. +')`'dnl libn32gfortran + +ifenabled(`libneongfortran',` +Package: libgfortran`'FORTRAN_SO-neon`'LS +Section: libs +Architecture: NEON_ARCHS +ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +')`'dnl +Priority: extra +Depends: BASEDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends} +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(`java',` +ifenabled(`gcj',` +Package: gcj`'PV-jdk +Section: java +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), ${dep:gcj}, ${dep:libcdev}, gcj`'PV-jre (= ${gcj:Version}), libgcj`'GCJ_SO-dev (= ${gcj:Version}), gcj`'PV-jre-lib (>= ${gcj:SoftVersion}), ${dep:ecj}, fastjar, libgcj-bc, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Recommends: libecj-java-gcj +Suggests: gcj`'PV-source (>= ${gcj:SoftVersion}), libgcj`'GCJ_SO-dbg +Provides: java-compiler, java-sdk, java2-sdk, java5-sdk +Conflicts: gcj-4.4, cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1) +Replaces: libgcj10 (<< 4.4.2-8) +Description: gcj and classpath development tools for Java(TM) + GCJ is a front end to the GCC compiler which can natively compile both + Java(tm) source and bytecode files. The compiler can also generate class + files. Other java development tools from classpath are included in this + package. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-SDK-like interface to the GCJ tool set. +')`'dnl gcj + +ifenabled(`libgcj',` +ifenabled(`libgcjcommon',` +Package: libgcj-common +Section: java +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), ${misc:Depends} +Conflicts: classpath (<= 0.04-4) +Replaces: java-gcj-compat (<< 1.0.65-3), java-gcj-compat-dev (<< 1.0.65-3) +Description: Java runtime library (common files) + This package contains files shared by classpath and libgcj libraries. +')`'dnl libgcjcommon + +Package: gcj`'PV-jre-headless +Priority: optional +Section: java +Architecture: any +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends} +Suggests: fastjar, gcj`'PV-jdk (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}) +Conflicts: gij-4.4, java-gcj-compat (<< 1.0.76-4) +Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless +Description: Java runtime environment using GIJ/classpath (headless version) + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set, + limited to the headless tools and libraries. + +Package: gcj`'PV-jre +Section: java +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), gcj`'PV-jre-headless (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime +Description: Java runtime environment using GIJ/classpath + GIJ is a Java bytecode interpreter, not limited to interpreting bytecode. + It includes a class loader which can dynamically load shared objects, so + it is possible to give it the name of a class which has been compiled and + put into a shared library on the class path. + . + The package contains as well a collection of wrapper scripts and symlinks. + It is meant to provide a Java-RTE-like interface to the GIJ/GCJ tool set. + +Package: libgcj`'LIBGCJ_EXT +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends} +Recommends: gcj`'PV-jre-lib (>= ${gcj:SoftVersion}) +Suggests: libgcj`'GCJ_SO-dbg, libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}) +Replaces: gij-4.4 (<< 4.4.0-1) +Description: Java runtime library for use with gcj + This is the runtime that goes along with the gcj front end to + gcc. libgcj includes parts of the Java Class Libraries, plus glue to + connect the libraries to the compiler and the underlying OS. + . + To show file names and line numbers in stack traces, the packages + libgcj`'GCJ_SO-dbg and binutils are required. + +Package: gcj`'PV-jre-lib +Section: java +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: Java runtime library for use with gcj (jar files) + This is the jar file that goes along with the gcj front end to gcc. + +ifenabled(`gcjbc',` +Package: libgcj-bc +Section: java +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj`'LIBGCJ_EXT (>= ${gcj:Version}), ${misc:Depends} +Description: Link time only library for use with gcj + A fake library that is used at link time only. It ensures that + binaries built with the BC-ABI link against a constant SONAME. + This way, BC-ABI binaries continue to work if the SONAME underlying + libgcj.so changes. +')`'dnl gcjbc + +Package: libgcj`'LIBGCJ_EXT-awt +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Suggests: ${pkg:gcjqt} +Description: AWT peer runtime libraries for use with gcj + These are runtime libraries holding the AWT peer implementations + for libgcj (currently the GTK+ based peer library is required, the + QT bases library is not built). + +ifenabled(`gtkpeer',` +Package: libgcj`'GCJ_SO-awt-gtk +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: AWT GTK+ peer runtime library for use with libgcj + This is the runtime library holding the GTK+ based AWT peer + implementation for libgcj. +')`'dnl gtkpeer + +ifenabled(`qtpeer',` +Package: libgcj`'GCJ_SO-awt-qt +Section: libs +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: AWT QT peer runtime library for use with libgcj + This is the runtime library holding the QT based AWT peer + implementation for libgcj. +')`'dnl qtpeer +')`'dnl libgcj + +ifenabled(`libgcjdev',` +Package: libgcj`'GCJ_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), gcj`'PV-jdk (= ${gcj:Version}), gcj`'PV-jre-lib (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Suggests: libgcj-doc +Description: Java development headers for use with gcj + These are the development headers that go along with the gcj front end + to gcc. libgcj includes parts of the Java Class Libraries, plus glue + to connect the libraries to the compiler and the underlying OS. + +Package: libgcj`'GCJ_SO-dbg +Section: debug +Architecture: any +Priority: extra +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${misc:Depends} +Recommends: binutils, libc6-dbg | libc-dbg +Description: Debugging symbols for libraries provided in libgcj`'GCJ_SO-dev + The package provides debugging symbols for the libraries provided + in libgcj`'GCJ_SO-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: gcj`'PV-source +Section: java +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), gcj`'PV-jdk (>= ${gcj:SoftVersion}), ${misc:Depends} +Description: GCJ java sources for use in IDEs like eclipse and netbeans + These are the java source files packaged as a zip file for use in development + environments like eclipse and netbeans. + +ifenabled(`gcjdoc',` +Package: libgcj-doc +Section: doc +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), ${misc:Depends} +Enhances: libgcj`'GCJ_SO-dev +Provides: classpath-doc +Description: libgcj API documentation and example programs + Autogenerated documentation describing the API of the libgcj library. + Sources and precompiled example programs from the classpath library. +')`'dnl gcjdoc +')`'dnl libgcjdev +')`'dnl java + +ifenabled(`c++',` +ifenabled(`libcxx',` +Package: libstdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(required)) +Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++CXX_SO-TARGET-dcv1 +',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Conflicts: scim (<< 1.4.2-1) +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 +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, lib32gcc1`'LS, ${shlibs:Depends}, ${misc:Depends} +Conflicts: ${confl:lib32} +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'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 +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${shlibs:Depends}, lib64gcc1`'LS, ${misc:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'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 +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, ${shlibs:Depends}, libn32gcc1`'LS, ${misc:Depends} +ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 +',`')`'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(`libneoncxx',` +Package: libstdc++CXX_SO-neon +Architecture: NEON_ARCHS +Section: libs +Priority: extra +Depends: BASEDEP, libc6-neon, libgcc1-neon, ${shlibs:Depends}, ${misc:Depends} +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++CXX_SO`'PV-dev`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), ${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++CXX_SO`'PV-doc +')`'dnl native +Provides: libstdc++-dev`'LS`'dnl +ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1, libstdc++CXX_SO-dev-TARGET-dcv1 +',` +')`'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++CXX_SO`'PV-pic`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++CXX_SO-pic-TARGET-dcv1 +',`')`'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 +Architecture: ifdef(`TARGET',`all',`any') +Section: debug +Priority: extra +Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}), libgcc`'GCC_SO-dbg`'LS, ${shlibs:Depends}, ${misc:Depends} +ifdef(`TARGET',`Provides: libstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Recommends: libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}) +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 +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++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), lib32gcc`'GCC_SO-dbg`'LS, ${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 +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++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: debug +Priority: extra +Depends: BASEDEP, lib64stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), lib64gcc`'GCC_SO-dbg`'LS, ${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 +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++CXX_SO`'PV-dbg`'LS +Architecture: ifdef(`TARGET',`all',`biarchn32_archs') +Section: debug +Priority: extra +Depends: BASEDEP, libn32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}), libn32gcc`'GCC_SO-dbg`'LS, ${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 +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 + +ifdef(`TARGET', `', ` +Package: libstdc++CXX_SO`'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 +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 +Architecture: any +Priority: PRI(optional) +ifdef(`MULTIARCH', `Pre-Depends: multiarch-support +')`'dnl +Depends: gnat`'PV-base (= ${gnat:Version}), gcc`'PV (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual, gprbuild, gnat-gps +Provides: ada-compiler +Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3 +Replaces: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-4.0, gnat-4.1, gnat-4.2, gnat-4.3 +Description: GNU Ada compiler + This is the GNU Ada compiler, which compiles Ada on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. + +ifenabled(`libgnat',` +Package: libgnat`'-GNAT_V +Section: libs +Architecture: any +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Ada applications + Library needed for GNU Ada applications linked against the shared library. + +Package: libgnat`'-GNAT_V-dbg +Section: debug +Architecture: any +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Priority: extra +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'-GNAT_V (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), ${misc:Depends} +Description: Runtime library for GNU Ada applications + Debugging symbols for the library needed for GNU Ada applications linked + against the shared library. + +Package: libgnatvsn-dev +Section: libdevel +Architecture: all +Priority: PRI(optional) +Depends: libgnatvsn`'GNAT_V-dev (= ${gnat:Version}), gnat`'PV-base (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada compiler version library - development files + This is a dummy transition package to ease upgrades from Debian 5.0 + Lenny. You can safely remove it. + +Package: libgnatvsn`'GNAT_V-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatvsn-dev (<< `'GNAT_V), libgnatvsn4.1-dev, libgnatvsn4.3-dev +Replaces: libgnatvsn-dev (<< `'GNAT_V), libgnatvsn4.1-dev, libgnatvsn4.3-dev +Suggests: libgnatvsn`'GNAT_V-dbg +Description: GNU Ada compiler version library - development files + This library exports selected components of GNAT, the GNU Ada compiler, for use + in other packages, most notably ASIS and ASIS-based packages. 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 +Architecture: any +Priority: PRI(optional) +Section: libs +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada compiler version library + This library exports selected components of GNAT, the GNU Ada compiler, for use + in other packages, most notably ASIS and ASIS-based packages. It is licensed + under the GNAT-Modified GPL, allowing to link proprietary programs with it. + . + This package contains the run-time shared library. + +Package: libgnatvsn`'GNAT_V-dbg +Architecture: any +Priority: extra +Section: debug +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Depends: gnat`'PV-base (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V-dev (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada compiler version library + This library exports selected components of GNAT, the GNU Ada compiler, for use + in other packages, most notably ASIS and ASIS-based packages. It is licensed + under the GNAT-Modified GPL, allowing to link proprietary programs with it. + . + This package contains the debugging symbols for the run-time shared library. + +Package: libgnatprj-dev +Section: libdevel +Architecture: all +Priority: PRI(optional) +Depends: libgnatprj`'GNAT_V-dev (= ${gnat:Version}), gnat`'PV-base (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada compiler version library - development files + This is a dummy transition package to ease upgrades from Debian 5.0 + Lenny. You can safely remove it. + +Package: libgnatprj`'GNAT_V-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V-dev (= ${gnat:Version}), ${misc:Depends} +Conflicts: libgnatprj-dev (<< `'GNAT_V), libgnatprj4.1-dev, libgnatprj4.3-dev +Replaces: libgnatprj-dev (<< `'GNAT_V), libgnatprj4.1-dev, libgnatprj4.3-dev +Suggests: libgnatprj`'GNAT_V-dbg +Description: GNU Ada Project Manager development files + GNAT, the GNU Ada compiler, uses project files to organise source and object + files in large-scale development efforts. Several other tools, such as + ASIS tools (package asis-programs) and GNAT Programming Studio (package + gnat-gps) also use project files. This library contains the necessary + support; it was built from GNAT itself. It is licensed under the pure GPL; + all programs that use it must also be distributed under the GPL, or not + distributed at all. + . + This package contains development files: install it to develop applications + that understand GNAT project files. + +Package: libgnatprj`'GNAT_V +Architecture: any +Priority: PRI(optional) +Section: libs +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada Project Manager + GNAT, the GNU Ada compiler, uses project files to organise source and object + files in large-scale development efforts. Several other tools, such as + ASIS tools (package asis-programs) and GNAT Programming Studio (package + gnat-gps) also use project files. This library contains the necessary + support; it was built from GNAT itself. It is licensed under the pure GPL; + all programs that use it must also be distributed under the GPL, or not + distributed at all. + . + This package contains the run-time shared library. + +Package: libgnatprj`'GNAT_V-dbg +Architecture: any +Priority: extra +Section: debug +ifdef(`TARGET',`',ifdef(`MULTIARCH', `Multi-Arch: same +Pre-Depends: multiarch-support +'))`'dnl +Depends: gnat`'PV-base (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), libgnatprj`'GNAT_V-dev (= ${gnat:Version}), ${misc:Depends} +Description: GNU Ada Project Manager + GNAT, the GNU Ada compiler, uses project files to organise source and object + files in large-scale development efforts. Several other tools, such as + ASIS tools (package asis-programs) and GNAT Programming Studio (package + gnat-gps) also use project files. This library contains the necessary + support; it was built from GNAT itself. It is licensed under the pure GPL; + all programs that use it must also be distributed under the GPL, or not + distributed at all. + . + This package contains the debugging symbols for the run-time shared library. +')`'dnl libgnat + +ifenabled(`lib64gnat',` +Package: lib64gnat`'-GNAT_V +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: Runtime library for GNU Ada applications + Library needed for GNU Ada applications linked against the shared library. +')`'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 +Description: Documentation for the GNU Ada compiler (gnat) + Documentation for the GNU Ada compiler in info `format'. +')`'dnl gfdldoc +')`'dnl ada + +ifenabled(`pascal',` +Package: gpc`'PV +Architecture: any +Priority: PRI(optional) +Depends: SOFTBASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} +Recommends: libgmp3-dev, libncurses5-dev +Suggests: gpc`'PV-doc (>= ${gpc:Version}) +Provides: pascal-compiler +Description: GNU Pascal compiler + This is the GNU Pascal compiler, which compiles Pascal on platforms supported + by the gcc compiler. It uses the gcc backend to generate optimized code. +Homepage: http://www.gnu-pascal.de/gpc/h-index.html + +Package: gpc`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: SOFTBASEDEP, dpkg (>= 1.15.4) | install-info, ${misc:Depends} +Replaces: gpc (<= 2.91.58-3) +Suggests: gpc`'PV +Description: Documentation for the GNU Pascal compiler (gpc) + Documentation for the GNU Pascal compiler in info `format'. +Homepage: http://www.gnu-pascal.de/gpc/h-index.html +')`'dnl pascal + +ifenabled(`d ',` +Package: gdc`'PV +Architecture: any +Priority: PRI(optional) +Depends: SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}) [libphobos_no_archs], ${shlibs:Depends}, ${misc:Depends} +Provides: d-compiler, d-v1-compiler +Replaces: gdc (<< 4.4.6-5) +Description: D compiler (version 1), based on the GCC backend + This is the D compiler, which compiles D on platforms supported by the gcc + compiler. It uses the GCC backend to generate optimised code. + . + This compiler supports D language version 1. +Homepage: https://bitbucket.org/goshawk/gdc + +ifenabled(`libphobos',` +Package: libphobos`'PHOBOS_V`'PV`'TS-dev +Architecture: any +Section: libdevel +Priority: PRI(optional) +Depends: gdc`'PV`'TS (= ${gdc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} +Provides: libphobos`'PHOBOS_V`'TS-dev +Description: Phobos D standard library + This is the Phobos standard library that comes with the D compiler. + . + For more information check http://www.digitalmars.com/d/phobos/phobos.html +')`'dnl libphobos +')`'dnl d + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +Package: gcc`'PV-soft-float +Architecture: arm armel +Priority: PRI(optional) +Depends: BASEDEP, ifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} +Replaces: gcc-soft-float-ss +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} +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 + +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 +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 (>= 3.81), autoconf2.59, quilt, patchutils, ${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-4.4-4.4.7.orig/debian/copyright +++ gcc-4.4-4.4.7/debian/copyright @@ -0,0 +1,339 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Java, 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://gnu-pascal.de/alpha/ (for GNU Pascal) + http://bitbucket.org/goshawk/gdc (for D) + +The current gcc-4.4 source package is taken from the SVN gcc-4_4-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-4.4 libgnat-4.4 gnat-4.4-doc +C gcc-4.4 gcc-4.4-doc +C++ g++-4.4 libstdc++6 libstdc++6-4.4-doc +D gdc-4.4 +Fortran 95 gfortran-4.4 libgfortran3 gfortran-4.4-doc +Java gcj-4.4 libgcj10 libgcj-doc +Objective C gobjc-4.4 libobjc2 +Objective C++ gobjc++-4.4 + +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-4.4-dbg libstdc++6-4.4-pic +D libphobos-4.4-dev +Java libgcj10-src libgcj10-dev libgcj10-dbg + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +gcc-4.4-base Base files common to all compilers +gcc-4.4-soft-float Software floating point (ARM only) +gcc-4.4-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn4.4 GNAT version library +libgnatprj-dev, libgnatprj4.4 GNAT Project Manager library + +C: +cpp-4.4, cpp-4.4-doc GNU C Preprocessor +libmudflap0-dev, libmudflap0 Library for instrumenting pointers +libssp0-dev, libssp0 GCC stack smashing protection library +fixincludes Fix non-ANSI header files +protoize Create/remove ANSI prototypes from C code + +Java: +gij The Java bytecode interpreter and VM +libgcj-common Common files for the Java run-time +libgcj10-awt The Abstract Windowing Toolkit +libgcj10-jar Java ARchive for the Java run-time + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support 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 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). + - libdecnumber + - libgomp + - libssp + - libstdc++-v3 + - libobjc + - libmudflap + - libgfortran + - The libgnat-4.4 Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + +In contrast, libgnatprj is licensed under the terms of the pure GNU +General Public License. + +The libgcj library is licensed under the terms of the GNU General +Public License, with a special exception: + + Linking this library statically or dynamically with other modules + is making a combined work based on this library. Thus, the terms + and conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also + meet, for each linked independent module, the terms and conditions + of the license of that module. An independent module is a module + which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the + library, but you are not obligated to do so. If you do not wish + to do so, delete this exception statement from your version. + +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. + + +D: +gdc-4.4 GNU D Compiler +libphobos-4.4-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. + --- gcc-4.4-4.4.7.orig/debian/copyright.in +++ gcc-4.4-4.4.7/debian/copyright.in @@ -0,0 +1,339 @@ +This is the Debian GNU/Linux prepackaged version of the GNU compiler +collection, containing Ada, C, C++, Fortran 95, Java, 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://gnu-pascal.de/alpha/ (for GNU Pascal) + http://bitbucket.org/goshawk/gdc (for D) + +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 +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 +Java gcj-@BV@ libgcj10 libgcj-doc +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 +Java libgcj10-src libgcj10-dev libgcj10-dbg + +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 +libgnatprj-dev, libgnatprj@BV@ GNAT Project Manager library + +C: +cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor +libmudflap0-dev, libmudflap0 Library for instrumenting pointers +libssp0-dev, libssp0 GCC stack smashing protection library +fixincludes Fix non-ANSI header files +protoize Create/remove ANSI prototypes from C code + +Java: +gij The Java bytecode interpreter and VM +libgcj-common Common files for the Java run-time +libgcj10-awt The Abstract Windowing Toolkit +libgcj10-jar Java ARchive for the Java run-time + +C, C++ and Fortran 95: +libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support 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 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). + - libdecnumber + - libgomp + - libssp + - libstdc++-v3 + - libobjc + - libmudflap + - libgfortran + - The libgnat-@BV@ Ada support library and libgnatvsn library. + - Various config files in gcc/config/ used in runtime libraries. + +In contrast, libgnatprj is licensed under the terms of the pure GNU +General Public License. + +The libgcj library is licensed under the terms of the GNU General +Public License, with a special exception: + + Linking this library statically or dynamically with other modules + is making a combined work based on this library. Thus, the terms + and conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give + you permission to link this library with independent modules to + produce an executable, regardless of the license terms of these + independent modules, and to copy and distribute the resulting + executable under terms of your choice, provided that you also + meet, for each linked independent module, the terms and conditions + of the license of that module. An independent module is a module + which is not derived from or based on this library. If you modify + this library, you may extend this exception to your version of the + library, but you are not obligated to do so. If you do not wish + to do so, delete this exception statement from your version. + +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. + + +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. + --- gcc-4.4-4.4.7.orig/debian/cpp-BV-CRB.preinst.in +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/dh_doclink +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/dh_rmemptydirs +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/dummy-man.1 +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/dummy.texi +++ gcc-4.4-4.4.7/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) --- gcc-4.4-4.4.7.orig/debian/fixincludes.in +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/g++-BV-CRB.preinst.in +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/g++-BV-spu.overrides +++ gcc-4.4-4.4.7/debian/g++-BV-spu.overrides @@ -0,0 +1,2 @@ +g++-@BV@-spu: non-standard-dir-in-usr usr/spu/ +g++-@BV@-spu: file-in-unusual-dir --- gcc-4.4-4.4.7.orig/debian/gcc-BV-CRB.preinst.in +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-BV-hppa64.postinst +++ gcc-4.4-4.4.7/debian/gcc-BV-hppa64.postinst @@ -0,0 +1,13 @@ +#! /bin/sh -e + +prio=$(echo @BV@ | sed 's/\.//g') + +update-alternatives --quiet \ + --install /usr/bin/hppa64-linux-gnu-gcc \ + hppa64-linux-gnu-gcc \ + /usr/bin/hppa64-linux-gnu-gcc-@BV@ \ + $prio + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.7.orig/debian/gcc-BV-hppa64.prerm +++ gcc-4.4-4.4.7/debian/gcc-BV-hppa64.prerm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --quiet \ + --remove hppa64-linux-gcc /usr/bin/hppa64-linux-gnu-gcc-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.7.orig/debian/gcc-BV-source.overrides +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-BV-spu.overrides +++ gcc-4.4-4.4.7/debian/gcc-BV-spu.overrides @@ -0,0 +1,2 @@ +gcc-@BV@-spu: non-standard-dir-in-usr usr/spu/ +gcc-@BV@-spu: file-in-unusual-dir --- gcc-4.4-4.4.7.orig/debian/gcc-dummy.texi +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gcc-snapshot.overrides +++ gcc-4.4-4.4.7/debian/gcc-snapshot.overrides @@ -0,0 +1 @@ + --- gcc-4.4-4.4.7.orig/debian/gcc-snapshot.prerm +++ gcc-4.4-4.4.7/debian/gcc-snapshot.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +rm -f /usr/lib/gcc-snapshot/share/python/*.py[co] + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jdk.doc-base +++ gcc-4.4-4.4.7/debian/gcj-BV-jdk.doc-base @@ -0,0 +1,15 @@ +Document: gcj-@BV@ +Title: The GNU Ahead-of-time Compiler for the Java Language +Author: Various +Abstract: This manual describes how to use gcj, the GNU compiler for + the Java programming language. gcj can generate both .class files and + object files, and it can read both Java source code and .class files. +Section: Programming/Java + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/java/gcj.html +Files: /usr/share/doc/gcc-@BV@-base/java/gcj.html + +Format: info +Index: /usr/share/info/gcj-@BV@.info.gz +Files: /usr/share/info/gcj-@BV@* --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jdk.overrides +++ gcc-4.4-4.4.7/debian/gcj-BV-jdk.overrides @@ -0,0 +1 @@ +gcj-@BV@-jdk binary: wrong-name-for-upstream-changelog --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jdk.postinst +++ gcc-4.4-4.4.7/debian/gcj-BV-jdk.postinst @@ -0,0 +1,45 @@ +#! /bin/sh -e + +if [ -d /usr/share/doc/gcc-@BV@-base/java ] && [ ! -h /usr/share/doc/gcc-@BV@-base/java ]; then + rm -rf /usr/share/doc/gcc-@BV@-base/java + ln -s ../gcj-@BV@-base /usr/share/doc/gcc-@BV@-base/java +fi + +prio=@java_priority@ +update-alternatives --quiet \ + --install /usr/bin/javac javac /usr/bin/gcj-wrapper-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/gcj-wrapper-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/jar jar /usr/bin/gjar-@BV@ $prio \ + --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/gjar-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/jarsigner jarsigner /usr/bin/gjarsigner-@BV@ $prio \ + --slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/share/man/man1/gjarsigner-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/javah javah /usr/bin/gjavah-@BV@ $prio \ + --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/share/man/man1/gjavah-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/javadoc javadoc /usr/bin/gjdoc-@BV@ $prio \ + --slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/share/man/man1/gjdoc-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/native2ascii native2ascii /usr/bin/gnative2ascii-@BV@ $prio \ + --slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/share/man/man1/gnative2ascii-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmic rmic /usr/bin/grmic-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/share/man/man1/grmic-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/serialver serialver /usr/bin/gserialver-@BV@ $prio \ + --slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/share/man/man1/gserialver-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/tnameserv tnameserv /usr/bin/gtnameserv-@BV@ $prio \ + --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/share/man/man1/gtnameserv-@BV@.1.gz + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jdk.prerm +++ gcc-4.4-4.4.7/debian/gcj-BV-jdk.prerm @@ -0,0 +1,15 @@ +#! /bin/sh -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove javac /usr/bin/gcj-wrapper-@BV@ + update-alternatives --quiet --remove jar /usr/bin/gjar-@BV@ + update-alternatives --quiet --remove jarsigner /usr/bin/gjarsigner-@BV@ + update-alternatives --quiet --remove javah /usr/bin/gjavah-@BV@ + update-alternatives --quiet --remove javadoc /usr/bin/gjdoc-@BV@ + update-alternatives --quiet --remove native2ascii /usr/bin/gnative2ascii-@BV@ + update-alternatives --quiet --remove rmic /usr/bin/grmic-@BV@ + update-alternatives --quiet --remove serialver /usr/bin/gserialver-@BV@ + update-alternatives --quiet --remove tnameserv /usr/bin/gtnameserv-@BV@ +fi + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jre-headless.overrides +++ gcc-4.4-4.4.7/debian/gcj-BV-jre-headless.overrides @@ -0,0 +1,2 @@ +# pick up the exact version, in case another gcj version is installed +gcj-@BV@-jre-headless binary: binary-or-shlib-defines-rpath --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jre-headless.postinst +++ gcc-4.4-4.4.7/debian/gcj-BV-jre-headless.postinst @@ -0,0 +1,48 @@ +#! /bin/sh -e + +prio=@java_priority@ + +update-alternatives --quiet \ + --install /usr/bin/java java /usr/bin/gij-@BV@ $prio \ + @GFDL@--slave /usr/share/man/man1/java.1.gz java.1.gz /usr/share/man/man1/gij-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmiregistry rmiregistry /usr/bin/grmiregistry-@BV@ $prio \ + --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/share/man/man1/grmiregistry-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/keytool keytool /usr/bin/gkeytool-@BV@ $prio \ + --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/share/man/man1/gkeytool-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/orbd orbd /usr/bin/gorbd-@BV@ $prio \ + --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/share/man/man1/gorbd-@BV@.1.gz + +update-alternatives --quiet \ + --install /usr/bin/rmid rmid /usr/bin/grmid-@BV@ $prio \ + --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/share/man/man1/grmid-@BV@.1.gz + +case "$1" in +configure) + if [ ! -f /var/lib/gcj-@BV@/classmap.db ]; then + uname=$(uname -m) + mkdir -p /var/lib/gcj-@BV@ + if gcj-dbtool-@BV@ -n /var/lib/gcj-@BV@/classmap.db; then + case "$uname" in arm*|m68k|parisc*) + echo >&2 "gcj-dbtool succeeded unexpectedly" + esac + else + case "$uname" in + arm*|m68k|parisc*) + echo >&2 "ERROR: gcj-dbtool did fail; known problem on $uname";; + *) + exit 2 + esac + touch /var/lib/gcj-@BV@/classmap.db + fi + fi +esac + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jre-headless.postrm +++ gcc-4.4-4.4.7/debian/gcj-BV-jre-headless.postrm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +case "$1" in + purge) + rm -f /var/lib/gcj-@BV@/classmap.db +esac + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.7.orig/debian/gcj-BV-jre-headless.prerm +++ gcc-4.4-4.4.7/debian/gcj-BV-jre-headless.prerm @@ -0,0 +1,13 @@ +#! /bin/sh -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove java /usr/bin/gij-@BV@ + update-alternatives --quiet --remove rmiregistry /usr/bin/grmiregistry-@BV@ + update-alternatives --quiet --remove keytool /usr/bin/gkeytool-@BV@ + update-alternatives --quiet --remove orbd /usr/bin/gorbd-@BV@ + update-alternatives --quiet --remove rmid /usr/bin/grmid-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.7.orig/debian/gcj-wrapper-BV +++ gcc-4.4-4.4.7/debian/gcj-wrapper-BV @@ -0,0 +1,91 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java compiler. +# +# Command-line arguments should be in the style of Sun's Java compiler; +# these will be converted to gcj arguments before being passed to the +# gcj itself. +# +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gcj-wrapper-3.2 shell script. + +use strict; + +# The real Java compiler: +my $javaCompiler = '/usr/bin/gcj-@BV@'; + +# The command-line arguments to pass to the real Java compiler: +my @commandLine; + +# The warning flags to pass to the GNU Java compiler: +my $warnings = '-Wall'; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; +my $copyNextArg = 0; +my $ignoreNextArg = 0; +my $appendNextArg = ''; +foreach my $arg (@ARGV) { + # See if we already know what to do with this argument. + if ($ignoreNextArg) { + # Throw it away. + $ignoreNextArg = 0; + next; + } elsif ($copyNextArg or not $parsingOptions) { + # Copy it directly. + push @commandLine, $arg; + $copyNextArg = 0; + next; + } elsif ($appendNextArg) { + # Append it to $appendNextArg and then copy directly. + push @commandLine, ($appendNextArg . $arg); + $appendNextArg = ''; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') { + $appendNextArg = '--classpath='; + } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or + $arg eq '-extdirs') { + $appendNextArg = '-' . $arg . '='; + } elsif ($arg eq '-d') { + push @commandLine, '-d'; + $copyNextArg = 1; + } elsif ($arg eq '-nowarn') { + $warnings = ''; + } elsif ($arg =~ /^-g/) { + # Some kind of debugging option - just switch debugging on. + push @commandLine, '-g' if ($arg ne '-g:none'); + } elsif ($arg eq '-O') { + push @commandLine, '-O2'; + } elsif ($arg eq '-Xss') { + push @commandLine, $arg; + } elsif ($arg =~ /^-X/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-X'); + } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') { + # An unsupported option with a following argument. + $ignoreNextArg = 1; + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java compiler. +my @fullCommandLine = ( $javaCompiler, '-C' ); +push @fullCommandLine, $warnings if ($warnings); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.4-4.4.7.orig/debian/gcj-wrapper-BV.1 +++ gcc-4.4-4.4.7/debian/gcj-wrapper-BV.1 @@ -0,0 +1,20 @@ +.TH GCJ-WRAPPER 1 "June 6, 2002" gcj-wrapper "Java User's Manual" +.SH NAME +gcj-wrapper \- a wrapper around gcj + +.SH SYNOPSIS +gcj-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcj-wrapper\fR is a wrapper around gcj(1) to be called as the java +compiler. Options different for javac(1) and gcj(1) are translated, +options unknown to gcj(1) are silently ignored. + +.SH OPTIONS +See gcj-@BV@(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcj-@BV@(1) +, +.BR javac(1) --- gcc-4.4-4.4.7.orig/debian/gcjh-wrapper-BV +++ gcc-4.4-4.4.7/debian/gcjh-wrapper-BV @@ -0,0 +1,86 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java header generator. +# +# Command-line arguments should be in the style of Sun's javah command; +# these will be converted to gcjh arguments before being passed to the +# gcjh itself. +# +# Copyright (C) 2003 by Peter Hawkins +# Haphazardly hacked up based on the gcj-wrapper perl script. +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gcj-wrapper-3.2 shell script. + +use strict; + +# The real Java header generator: +my $javaHeaderGen = '/usr/bin/gcjh-@BV@'; + +# The command-line arguments to pass to the real Java compiler: +my @commandLine; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; +my $copyNextArg = 0; +my $ignoreNextArg = 0; +my $appendNextArg = ''; +foreach my $arg (@ARGV) { + # See if we already know what to do with this argument. + if ($ignoreNextArg) { + # Throw it away. + $ignoreNextArg = 0; + next; + } elsif ($copyNextArg or not $parsingOptions) { + # Copy it directly. + push @commandLine, $arg; + $copyNextArg = 0; + next; + } elsif ($appendNextArg) { + # Append it to $appendNextArg and then copy directly. + push @commandLine, ($appendNextArg . $arg); + $appendNextArg = ''; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-verbose') { + push @commandLine, '--verbose'; + } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') { + $appendNextArg = '--classpath='; + } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or + $arg eq '-extdirs') { + $appendNextArg = "-".$arg . '='; + } elsif ($arg eq '-d') { + push @commandLine, '-d'; + $copyNextArg = 1; + } elsif ($arg eq '-o') { + push @commandLine, '-o'; + $copyNextArg = 1; + } elsif ($arg eq '-stubs') { + push @commandLine, '-stubs'; + } elsif ($arg eq '-jni') { + push @commandLine, '-jni'; + } elsif ($arg =~ /^-old/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-old'); + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java header generator. +my @fullCommandLine = ( $javaHeaderGen ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.4-4.4.7.orig/debian/gcjh-wrapper-BV.1 +++ gcc-4.4-4.4.7/debian/gcjh-wrapper-BV.1 @@ -0,0 +1,20 @@ +.TH GCJH-WRAPPER 1 "June 6, 2002" gcjh-wrapper "Java User's Manual" +.SH NAME +gcjh-wrapper \- a wrapper around gcjh + +.SH SYNOPSIS +gcjh-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcjh-wrapper\fR is a wrapper around gcjh(1) to be called as the java header +compiler. Options different for javah(1) and gcjh(1) are translated, +options unknown to gcjh(1) are silently ignored. + +.SH OPTIONS +See gcjh-@BV@(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcjh-@BV@(1) +, +.BR javah(1) --- gcc-4.4-4.4.7.orig/debian/gfortran-BV-CRB.preinst.in +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gfortran-BV-doc.doc-base +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gfortran-BV-spu.overrides +++ gcc-4.4-4.4.7/debian/gfortran-BV-spu.overrides @@ -0,0 +1,2 @@ +gfortran-@BV@-spu: non-standard-dir-in-usr usr/spu/ +gfortran-@BV@-spu: file-in-unusual-dir --- gcc-4.4-4.4.7.orig/debian/gij-hppa +++ gcc-4.4-4.4.7/debian/gij-hppa @@ -0,0 +1,20 @@ +#! /bin/sh + +prctl= + +case "$(prctl --unaligned=)" in *signal) + echo >&2 "$(basename $0): ignore unaligned memory accesses" + prctl="prctl --unaligned=default" +esac + +exec $prctl /usr/bin/gij-4.4.bin "$@" +#! /bin/sh + +prctl= + +case "$(prctl --unaligned=)" in *signal) + echo >&2 "$(basename $0): ignore unaligned memory accesses" + prctl="prctl --unaligned=default" +esac + +exec $prctl /usr/bin/gij-4.4.bin "$@" --- gcc-4.4-4.4.7.orig/debian/gij-wrapper-BV +++ gcc-4.4-4.4.7/debian/gij-wrapper-BV @@ -0,0 +1,98 @@ +#!/usr/bin/perl -w +# +# Starts the GNU Java interpreter. +# +# Command-line arguments should be in the style of Sun's Java runtime; +# these will be converted to gij arguments before being passed to the +# gij itself. +# +# The Debian JNI module directory and any other specified JNI +# directories will be included on the JNI search path. +# +# Copyright (C) 2002-2003 by Ben Burton +# Based on the original gij-wrapper-3.2 shell script. + +use strict; + +# The real Java runtime: +my $javaRuntime = '/usr/bin/gij-@BV@'; + +# The debian JNI module directory: +my $debianJNIDir = '/usr/lib/jni'; + +# The command-line arguments to pass to the real Java runtime: +my @commandLine; + +# The full JNI search path to use: +my $JNIPath = ''; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; + +# Flag used to copy argument to -classpath or -cp. +my $copyNext = 0; +foreach my $arg (@ARGV) { + if (not $parsingOptions) { + # We're done parsing options; just copy all remaining arguments directly. + push @commandLine, $arg; + next; + } + if ($copyNext) { + push @commandLine, $arg; + $copyNext = 0; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-cp' or $arg eq '--cp') { + push @commandLine, '-cp'; + $copyNext = 1; + } elsif ($arg eq '-classpath' or $arg eq '--classpath') { + push @commandLine, '-classpath'; + $copyNext = 1; + } elsif ($arg =~ /^-Djava.library.path=(.+)$/) { + # A component of the JNI search path has been given. + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $1; + } else { + $JNIPath = $1; + } + } elsif ($arg eq '-jar' or $arg =~ /^-D/) { + # Copy the argument directly. + push @commandLine, $arg; + } elsif ($arg =~ /^-/) { + # An unrecognised option has been passed - just drop it. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Add the debian JNI module directory to the JNI search path if it's not +# already there. +if ($JNIPath !~ /(^|:)$debianJNIDir($|:)/) { + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $debianJNIDir; + } else { + $JNIPath = $debianJNIDir; + } +} + +# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path, +# since gij uses libltdl to dlopen JNI modules. +if ($ENV{LTDL_LIBRARY_PATH}) { + $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':' . $JNIPath; +} else { + $ENV{LTDL_LIBRARY_PATH} = $JNIPath; +} + +# Call the real Java runtime. +my @fullCommandLine = ( $javaRuntime ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-4.4-4.4.7.orig/debian/gij-wrapper-BV.1 +++ gcc-4.4-4.4.7/debian/gij-wrapper-BV.1 @@ -0,0 +1,22 @@ +.TH GIJ-WRAPPER 1 "August 11, 2001" gij-wrapper "Java User's Manual" +.SH NAME +gij-wrapper \- a wrapper around gij + +.SH SYNOPSIS +gij-wrapper [\fB\s-1OPTION\s0\fR] ... \fI\s-1JARFILE\s0\fR [\fI\s-1ARGS\s0\fR...] +.PP +gij-wrapper [\fB\-jar\fR] [\fB\s-1OPTION\s0\fR] ... \fI\s-1CLASS\s0\fR [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgij-wrapper\fR is a wrapper around gij(1) to be called as the java +interpreter. Options different for java(1) and gij(1) are translated, +options unknown to gij(1) are silently ignored. + +.SH OPTIONS +See gij-@BV@(1) for a list of options that gij understands. + +.SH "SEE ALSO" +.BR gij-@BV@(1) +, +.BR java(1) --- gcc-4.4-4.4.7.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gnat-BV-doc.doc-base.style +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/gnat-BV.overrides +++ gcc-4.4-4.4.7/debian/gnat-BV.overrides @@ -0,0 +1 @@ +gnat-@BV@: quilt-build-dep-but-no-series-file --- gcc-4.4-4.4.7.orig/debian/gnat.1 +++ gcc-4.4-4.4.7/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, gnatkr, gnatlink, +gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref, gnathtml \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT, a freely available Ada compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.4 +and +.B info gnat-rm-4.4 +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-4.4-4.4.7.orig/debian/gnatprj.gpr +++ gcc-4.4-4.4.7/debian/gnatprj.gpr @@ -0,0 +1,32 @@ +-- Project file for use with GNAT +-- Copyright (c) 2005, 2008 Ludovic Brenta +-- +-- 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. +-- +-- This project file is designed to help build applications that use +-- GNAT project files. Here is an example of how to use this project file: +-- +-- with "gnatprj"; +-- project Example is +-- for Object_Dir use "obj"; +-- for Exec_Dir use "."; +-- for Main use ("example"); +-- end Example; + +with "gnatvsn.gpr"; +project Gnatprj is + for Library_Name use "gnatprj"; + for Library_Dir use "/usr/lib"; + for Library_Kind use "dynamic"; + for Source_Dirs use ("/usr/share/ada/adainclude/gnatprj"); + for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatprj"; + for Externally_Built use "true"; +end Gnatprj; --- gcc-4.4-4.4.7.orig/debian/gnatvsn.gpr +++ gcc-4.4-4.4.7/debian/gnatvsn.gpr @@ -0,0 +1,31 @@ +-- Project file for use with GNAT +-- Copyright (c) 2005, 2008 Ludovic Brenta +-- +-- 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. +-- +-- This project file is designed to help build applications that use +-- GNAT project files. Here is an example of how to use this project file: +-- +-- with "gnatvsn"; +-- project Example is +-- for Object_Dir use "obj"; +-- for Exec_Dir use "."; +-- for Main use ("example"); +-- end Example; + +project Gnatvsn is + for Library_Name use "gnatvsn"; + for Library_Dir use "/usr/lib"; + for Library_Kind use "dynamic"; + for Source_Dirs use ("/usr/share/ada/adainclude/gnatvsn"); + for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatvsn"; + for Externally_Built use "true"; +end Gnatvsn; --- gcc-4.4-4.4.7.orig/debian/gpc-BV-doc.doc-base.gpc +++ gcc-4.4-4.4.7/debian/gpc-BV-doc.doc-base.gpc @@ -0,0 +1,15 @@ +Document: gpc-@BV@-doc +Title: The GNU Pascal Compiler +Author: Various +Abstract: This manual documents how to run, install and maintain the + GNU Pascal compiler (GPC), as well as its new features and + incompatibilities, and how to report bugs. +Section: Programming/Pascal + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/pascal/gpc.html +Files: /usr/share/doc/gcc-@BV@-base/pascal/gpc.html + +Format: info +Index: /usr/share/info/gpc-@BV@.info.gz +Files: /usr/share/info/gpc-@BV@* --- gcc-4.4-4.4.7.orig/debian/gpc-BV-doc.doc-base.gpcs +++ gcc-4.4-4.4.7/debian/gpc-BV-doc.doc-base.gpcs @@ -0,0 +1,23 @@ +Document: gpcs-@BV@-doc +Title: The GNU Pascal Coding Standards +Author: Various +Abstract: The GNU Pascal Coding Standards were designed by a group of + GNU Pascal project volunteers. The aim of this document is extending + the GNU Coding Standards with specific information relating Pascal + programming. As a matter of fact, the information contained in the + GNU Coding Standards mainly pertains to programs written in the C + language. On the other hand, they also explain many of the rules and + principles that are useful for writing portable, robust and reliable + programs. Most of those general topics could be shared with this + document with just a few specific notes, thus cross references are + provided which will lead you to the more extensive information + contained in the GNU Coding Standards. +Section: Programming/Pascal + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/pascal/gpcs.html +Files: /usr/share/doc/gcc-@BV@-base/pascal/gpcs.html + +Format: info +Index: /usr/share/info/gpcs-@BV@.info.gz +Files: /usr/share/info/gpcs-@BV@* --- gcc-4.4-4.4.7.orig/debian/jdb.sh +++ gcc-4.4-4.4.7/debian/jdb.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Placeholder script to fake a +# JDK compatible JAVA_HOME directory. + +echo >&2 "This script is only a placeholder." +echo >&2 "Some programs need a JDK rather than only a JRE to work." +echo >&2 "They test for this tool to detect a JDK installation, but" +echo >&2 "don't really need its functionality to work correctly." --- gcc-4.4-4.4.7.orig/debian/lib32gcc1.symbols.amd64 +++ gcc-4.4-4.4.7/debian/lib32gcc1.symbols.amd64 @@ -0,0 +1,132 @@ +libgcc_s.so.1 lib32gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.4-4.4.7.orig/debian/lib32gccLC.postinst +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/lib32gfortran3.symbols +++ gcc-4.4-4.4.7/debian/lib32gfortran3.symbols @@ -0,0 +1,3 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.4-4.4.7.orig/debian/lib32gfortran3.symbols.ppc64 +++ gcc-4.4-4.4.7/debian/lib32gfortran3.symbols.ppc64 @@ -0,0 +1,3 @@ +libgfortran.so.3 lib32gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.4-4.4.7.orig/debian/lib32gomp1.symbols +++ gcc-4.4-4.4.7/debian/lib32gomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 lib32gomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.4-4.4.7.orig/debian/lib32gomp1.symbols.ppc64 +++ gcc-4.4-4.4.7/debian/lib32gomp1.symbols.ppc64 @@ -0,0 +1,4 @@ +libgomp.so.1 lib32gomp1 #MINVER# +#include "libgomp1.symbols.common" + omp_unset_nest_lock@Base 4.3.0 + omp_unset_nest_lock_@Base 4.3.0 --- gcc-4.4-4.4.7.orig/debian/lib32objc2.symbols +++ gcc-4.4-4.4.7/debian/lib32objc2.symbols @@ -0,0 +1,3 @@ +libobjc.so.2 lib32objc2 #MINVER# +#include "libobjc2.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.4-4.4.7.orig/debian/lib32stdc++6.symbols.amd64 +++ gcc-4.4-4.4.7/debian/lib32stdc++6.symbols.amd64 @@ -0,0 +1,6 @@ +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 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.4-4.4.7.orig/debian/lib32stdc++CXX.postinst +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/lib64gcc1.symbols.i386 +++ gcc-4.4-4.4.7/debian/lib64gcc1.symbols.i386 @@ -0,0 +1,144 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GCC_3.0 1:4.1.1 + __deregister_frame_info@GCC_3.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.3 + __divtc3@GCC_4.3.0 1:4.4.0 + __divtf3@GCC_4.3.0 1:4.3 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.3.0 1:4.3 + __extenddftf2@GCC_4.3.0 1:4.3 + __extendsftf2@GCC_4.3.0 1:4.3 + __extendxftf2@GCC_4.3.0 1:4.3 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.3.0 1:4.3 + __fixtfsi@GCC_4.3.0 1:4.3 + __fixtfti@GCC_4.3.0 1:4.3 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.3.0 1:4.3 + __fixunstfsi@GCC_4.3.0 1:4.3 + __fixunstfti@GCC_4.3.0 1:4.3 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.3.0 1:4.3 + __floatsitf@GCC_4.3.0 1:4.3 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.3.0 1:4.3 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.3.0 1:4.3 + __floatunsitf@GCC_4.3.0 1:4.3 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.3.0 1:4.3 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.3.0 1:4.3 + __gttf2@GCC_3.0 1:4.3 + __gttf2@GCC_4.3.0 1:4.4.0 + __letf2@GCC_4.3.0 1:4.3 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.3 + __lttf2@GCC_4.3.0 1:4.4.0 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.3 + __multc3@GCC_4.3.0 1:4.4.0 + __multf3@GCC_4.3.0 1:4.3 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.3.0 1:4.3 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_3.0 1:4.3 + __netf2@GCC_4.3.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.3 + __powitf2@GCC_4.3.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GCC_3.0 1:4.1.1 + __register_frame_info@GCC_3.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GCC_3.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GCC_3.0 1:4.1.1 + __subtf3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.3.0 1:4.3 + __trunctfsf2@GCC_4.3.0 1:4.3 + __trunctfxf2@GCC_4.3.0 1:4.3 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.3.0 1:4.3 --- gcc-4.4-4.4.7.orig/debian/lib64gcc1.symbols.powerpc +++ gcc-4.4-4.4.7/debian/lib64gcc1.symbols.powerpc @@ -0,0 +1,126 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_3.4.4 1:4.1.1 + __gcc_qdiv@GCC_3.4.4 1:4.1.1 + __gcc_qmul@GCC_3.4.4 1:4.1.1 + __gcc_qsub@GCC_3.4.4 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + _xlqadd@GCC_3.4 1:4.1.1 + _xlqdiv@GCC_3.4 1:4.1.1 + _xlqmul@GCC_3.4 1:4.1.1 + _xlqsub@GCC_3.4 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/lib64gcc1.symbols.s390 +++ gcc-4.4-4.4.7/debian/lib64gcc1.symbols.s390 @@ -0,0 +1,107 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_4.1.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.1.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/lib64gcc1.symbols.sparc +++ gcc-4.4-4.4.7/debian/lib64gcc1.symbols.sparc @@ -0,0 +1,106 @@ +libgcc_s.so.1 lib64gcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.2@GLIBC_2.2 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.2 1:4.1.1 + __deregister_frame_info@GLIBC_2.2 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.1.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.2 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.1.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.2 1:4.1.1 + __register_frame_info@GLIBC_2.2 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.2 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.2 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/lib64gccLC.postinst +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/lib64gfortran3.symbols +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gfortran3.symbols.mips +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols.mips @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gfortran3.symbols.mipsel +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols.mipsel @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gfortran3.symbols.powerpc +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols.powerpc @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gfortran3.symbols.s390 +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols.s390 @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gfortran3.symbols.sparc +++ gcc-4.4-4.4.7/debian/lib64gfortran3.symbols.sparc @@ -0,0 +1,5 @@ +libgfortran.so.3 lib64gfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/lib64gomp1.symbols +++ gcc-4.4-4.4.7/debian/lib64gomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 lib64gomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.4-4.4.7.orig/debian/lib64objc2.symbols +++ gcc-4.4-4.4.7/debian/lib64objc2.symbols @@ -0,0 +1,3 @@ +libobjc.so.2 lib64objc2 #MINVER# +#include "libobjc2.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.4-4.4.7.orig/debian/lib64stdc++6.symbols.i386 +++ gcc-4.4-4.4.7/debian/lib64stdc++6.symbols.i386 @@ -0,0 +1,31 @@ +libstdc++.so.6 lib64stdc++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 +#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 --- gcc-4.4-4.4.7.orig/debian/lib64stdc++6.symbols.powerpc +++ gcc-4.4-4.4.7/debian/lib64stdc++6.symbols.powerpc @@ -0,0 +1,9 @@ +libstdc++.so.6 lib64stdc++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" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.4-4.4.7.orig/debian/lib64stdc++6.symbols.s390 +++ gcc-4.4-4.4.7/debian/lib64stdc++6.symbols.s390 @@ -0,0 +1,11 @@ +libstdc++.so.6 lib64stdc++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 +#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-4.4-4.4.7.orig/debian/lib64stdc++6.symbols.sparc +++ gcc-4.4-4.4.7/debian/lib64stdc++6.symbols.sparc @@ -0,0 +1,9 @@ +libstdc++.so.6 lib64stdc++6 #MINVER# +#include "libstdc++6.symbols.64bit" +#include "libstdc++6.symbols.excprop" + _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-4.4-4.4.7.orig/debian/lib64stdc++CXX.postinst +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/libgcc1.symbols.aeabi +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.aeabi @@ -0,0 +1,65 @@ + __aeabi_cdcmpeq@GCC_3.5 1:4.4.0 + __aeabi_cdcmple@GCC_3.5 1:4.4.0 + __aeabi_cdrcmple@GCC_3.5 1:4.4.0 + __aeabi_cfcmpeq@GCC_3.5 1:4.4.0 + __aeabi_cfcmple@GCC_3.5 1:4.4.0 + __aeabi_cfrcmple@GCC_3.5 1:4.4.0 + __aeabi_d2f@GCC_3.5 1:4.4.0 + __aeabi_d2iz@GCC_3.5 1:4.4.0 + __aeabi_d2lz@GCC_3.5 1:4.4.0 + __aeabi_d2uiz@GCC_3.5 1:4.4.0 + __aeabi_d2ulz@GCC_3.5 1:4.4.0 + __aeabi_dadd@GCC_3.5 1:4.4.0 + __aeabi_dcmpeq@GCC_3.5 1:4.4.0 + __aeabi_dcmpge@GCC_3.5 1:4.4.0 + __aeabi_dcmpgt@GCC_3.5 1:4.4.0 + __aeabi_dcmple@GCC_3.5 1:4.4.0 + __aeabi_dcmplt@GCC_3.5 1:4.4.0 + __aeabi_dcmpun@GCC_3.5 1:4.4.0 + __aeabi_ddiv@GCC_3.5 1:4.4.0 + __aeabi_dmul@GCC_3.5 1:4.4.0 + __aeabi_dneg@GCC_3.5 1:4.4.0 + __aeabi_drsub@GCC_3.5 1:4.4.0 + __aeabi_dsub@GCC_3.5 1:4.4.0 + __aeabi_f2d@GCC_3.5 1:4.4.0 + __aeabi_f2iz@GCC_3.5 1:4.4.0 + __aeabi_f2lz@GCC_3.5 1:4.4.0 + __aeabi_f2uiz@GCC_3.5 1:4.4.0 + __aeabi_f2ulz@GCC_3.5 1:4.4.0 + __aeabi_fadd@GCC_3.5 1:4.4.0 + __aeabi_fcmpeq@GCC_3.5 1:4.4.0 + __aeabi_fcmpge@GCC_3.5 1:4.4.0 + __aeabi_fcmpgt@GCC_3.5 1:4.4.0 + __aeabi_fcmple@GCC_3.5 1:4.4.0 + __aeabi_fcmplt@GCC_3.5 1:4.4.0 + __aeabi_fcmpun@GCC_3.5 1:4.4.0 + __aeabi_fdiv@GCC_3.5 1:4.4.0 + __aeabi_fmul@GCC_3.5 1:4.4.0 + __aeabi_fneg@GCC_3.5 1:4.4.0 + __aeabi_frsub@GCC_3.5 1:4.4.0 + __aeabi_fsub@GCC_3.5 1:4.4.0 + __aeabi_i2d@GCC_3.5 1:4.4.0 + __aeabi_i2f@GCC_3.5 1:4.4.0 + __aeabi_idiv@GCC_3.5 1:4.4.0 + __aeabi_idivmod@GCC_3.5 1:4.4.0 + __aeabi_l2d@GCC_3.5 1:4.4.0 + __aeabi_l2f@GCC_3.5 1:4.4.0 + __aeabi_lasr@GCC_3.5 1:4.4.0 + __aeabi_lcmp@GCC_3.5 1:4.4.0 + __aeabi_ldivmod@GCC_3.5 1:4.4.0 + __aeabi_llsl@GCC_3.5 1:4.4.0 + __aeabi_llsr@GCC_3.5 1:4.4.0 + __aeabi_lmul@GCC_3.5 1:4.4.0 + __aeabi_ui2d@GCC_3.5 1:4.4.0 + __aeabi_ui2f@GCC_3.5 1:4.4.0 + __aeabi_uidiv@GCC_3.5 1:4.4.0 + __aeabi_uidivmod@GCC_3.5 1:4.4.0 + __aeabi_ul2d@GCC_3.5 1:4.4.0 + __aeabi_ul2f@GCC_3.5 1:4.4.0 + __aeabi_ulcmp@GCC_3.5 1:4.4.0 + __aeabi_uldivmod@GCC_3.5 1:4.4.0 + __aeabi_unwind_cpp_pr0@GCC_3.5 1:4.4.0 + __aeabi_uread4@GCC_3.5 1:4.4.0 + __aeabi_uread8@GCC_3.5 1:4.4.0 + __aeabi_uwrite4@GCC_3.5 1:4.4.0 + __aeabi_uwrite8@GCC_3.5 1:4.4.0 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.alpha +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.alpha @@ -0,0 +1,107 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_LDBL_4.0.0 1:4.2.1 + __divti3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfti@GCC_3.0 1:4.2.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfti@GCC_3.0 1:4.2.1 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.2.1 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrti3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_LDBL_4.0.0 1:4.2.1 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_LDBL_4.0.0 1:4.2.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.amd64 +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.amd64 @@ -0,0 +1,144 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __deregister_frame@GCC_3.0 1:4.1.1 + __deregister_frame_info@GCC_3.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.0.0 1:4.3 + __divtc3@GCC_4.3.0 1:4.4.0 + __divtf3@GCC_4.3.0 1:4.3 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.3.0 1:4.3 + __extenddftf2@GCC_4.3.0 1:4.3 + __extendsftf2@GCC_4.3.0 1:4.3 + __extendxftf2@GCC_4.3.0 1:4.3 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.3.0 1:4.3 + __fixtfsi@GCC_4.3.0 1:4.3 + __fixtfti@GCC_4.3.0 1:4.3 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.3.0 1:4.3 + __fixunstfsi@GCC_4.3.0 1:4.3 + __fixunstfti@GCC_4.3.0 1:4.3 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.3.0 1:4.3 + __floatsitf@GCC_4.3.0 1:4.3 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_4.3.0 1:4.3 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.3.0 1:4.3 + __floatunsitf@GCC_4.3.0 1:4.3 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntitf@GCC_4.3.0 1:4.3 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.3.0 1:4.3 + __gttf2@GCC_3.0 1:4.3 + __gttf2@GCC_4.3.0 1:4.4.0 + __letf2@GCC_4.3.0 1:4.3 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_3.0 1:4.3 + __lttf2@GCC_4.3.0 1:4.4.0 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.0.0 1:4.3 + __multc3@GCC_4.3.0 1:4.4.0 + __multf3@GCC_4.3.0 1:4.3 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.3.0 1:4.3 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_3.0 1:4.3 + __netf2@GCC_4.3.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.0.0 1:4.3 + __powitf2@GCC_4.3.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GCC_3.0 1:4.1.1 + __register_frame_info@GCC_3.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GCC_3.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GCC_3.0 1:4.1.1 + __subtf3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.3.0 1:4.3 + __trunctfsf2@GCC_4.3.0 1:4.3 + __trunctfxf2@GCC_4.3.0 1:4.3 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.3.0 1:4.3 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.armel +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.armel @@ -0,0 +1,119 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_3.5@GCC_3.5 1:4.3.0 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_4.3.0 1:4.3.0 + _Unwind_Complete@GCC_3.5 1:4.3.0 + _Unwind_DeleteException@GCC_3.0 1:4.3.0 + _Unwind_ForcedUnwind@GCC_3.0 1:4.3.0 + _Unwind_GetCFA@GCC_3.3 1:4.3.0 + _Unwind_GetDataRelBase@GCC_3.0 1:4.3.0 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.3.0 + _Unwind_GetRegionStart@GCC_3.0 1:4.3.0 + _Unwind_GetTextRelBase@GCC_3.0 1:4.3.0 + _Unwind_RaiseException@GCC_3.0 1:4.3.0 + _Unwind_Resume@GCC_3.0 1:4.3.0 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.3.0 + _Unwind_VRS_Get@GCC_3.5 1:4.3.0 + _Unwind_VRS_Pop@GCC_3.5 1:4.3.0 + _Unwind_VRS_Set@GCC_3.5 1:4.3.0 + __absvdi2@GCC_3.0 1:4.3.0 + __absvsi2@GCC_3.0 1:4.3.0 + __adddf3@GCC_3.0 1:4.3.0 + __addsf3@GCC_3.0 1:4.3.0 + __addvdi3@GCC_3.0 1:4.3.0 + __addvsi3@GCC_3.0 1:4.3.0 + __ashldi3@GCC_3.0 1:4.3.0 + __ashrdi3@GCC_3.0 1:4.3.0 + __bswapdi2@GCC_4.3.0 1:4.3.0 + __bswapsi2@GCC_4.3.0 1:4.3.0 + __clear_cache@GCC_3.0 1:4.3.0 + __clzdi2@GCC_3.4 1:4.3.0 + __clzsi2@GCC_3.4 1:4.3.0 + __cmpdi2@GCC_3.0 1:4.3.0 + __ctzdi2@GCC_3.4 1:4.3.0 + __ctzsi2@GCC_3.4 1:4.3.0 + __divdc3@GCC_4.0.0 1:4.3.0 + __divdf3@GCC_3.0 1:4.3.0 + __divdi3@GLIBC_2.0 1:4.3.0 + __divsc3@GCC_4.0.0 1:4.3.0 + __divsf3@GCC_3.0 1:4.3.0 + __divsi3@GCC_3.0 1:4.3.0 + __emutls_get_address@GCC_4.3.0 1:4.3.0 + __emutls_register_common@GCC_4.3.0 1:4.3.0 + __enable_execute_stack@GCC_3.4.2 1:4.3.0 + __eqdf2@GCC_3.0 1:4.3.0 + __eqsf2@GCC_3.0 1:4.3.0 + __extendsfdf2@GCC_3.0 1:4.3.0 + __ffsdi2@GCC_3.0 1:4.3.0 + __ffssi2@GCC_4.3.0 1:4.3.0 + __fixdfdi@GCC_3.0 1:4.3.0 + __fixdfsi@GCC_3.0 1:4.3.0 + __fixsfdi@GCC_3.0 1:4.3.0 + __fixsfsi@GCC_3.0 1:4.3.0 + __fixunsdfdi@GCC_3.0 1:4.3.0 + __fixunsdfsi@GCC_3.0 1:4.3.0 + __fixunssfdi@GCC_3.0 1:4.3.0 + __fixunssfsi@GCC_3.0 1:4.3.0 + __floatdidf@GCC_3.0 1:4.3.0 + __floatdisf@GCC_3.0 1:4.3.0 + __floatsidf@GCC_3.0 1:4.3.0 + __floatsisf@GCC_3.0 1:4.3.0 + __floatundidf@GCC_4.2.0 1:4.3.0 + __floatundisf@GCC_4.2.0 1:4.3.0 + __floatunsidf@GCC_4.2.0 1:4.3.0 + __floatunsisf@GCC_4.2.0 1:4.3.0 + __gcc_personality_v0@GCC_3.3.1 1:4.3.0 + __gedf2@GCC_3.0 1:4.3.0 + __gesf2@GCC_3.0 1:4.3.0 + __gnu_unwind_frame@GCC_3.5 1:4.3.0 + __gtdf2@GCC_3.0 1:4.3.0 + __gtsf2@GCC_3.0 1:4.3.0 + __ledf2@GCC_3.0 1:4.3.0 + __lesf2@GCC_3.0 1:4.3.0 + __lshrdi3@GCC_3.0 1:4.3.0 + __ltdf2@GCC_3.0 1:4.3.0 + __ltsf2@GCC_3.0 1:4.3.0 + __moddi3@GLIBC_2.0 1:4.3.0 + __modsi3@GCC_3.0 1:4.3.0 + __muldc3@GCC_4.0.0 1:4.3.0 + __muldf3@GCC_3.0 1:4.3.0 + __muldi3@GCC_3.0 1:4.3.0 + __mulsc3@GCC_4.0.0 1:4.3.0 + __mulsf3@GCC_3.0 1:4.3.0 + __mulvdi3@GCC_3.0 1:4.3.0 + __mulvsi3@GCC_3.0 1:4.3.0 + __nedf2@GCC_3.0 1:4.3.0 + __negdf2@GCC_3.0 1:4.3.0 + __negdi2@GCC_3.0 1:4.3.0 + __negsf2@GCC_3.0 1:4.3.0 + __negvdi2@GCC_3.0 1:4.3.0 + __negvsi2@GCC_3.0 1:4.3.0 + __nesf2@GCC_3.0 1:4.3.0 + __paritydi2@GCC_3.4 1:4.3.0 + __paritysi2@GCC_3.4 1:4.3.0 + __popcountdi2@GCC_3.4 1:4.3.0 + __popcountsi2@GCC_3.4 1:4.3.0 + __powidf2@GCC_4.0.0 1:4.3.0 + __powisf2@GCC_4.0.0 1:4.3.0 + __subdf3@GCC_3.0 1:4.3.0 + __subsf3@GCC_3.0 1:4.3.0 + __subvdi3@GCC_3.0 1:4.3.0 + __subvsi3@GCC_3.0 1:4.3.0 + __truncdfsf2@GCC_3.0 1:4.3.0 + __ucmpdi2@GCC_3.0 1:4.3.0 + __udivdi3@GLIBC_2.0 1:4.3.0 + __udivmoddi4@GCC_3.0 1:4.3.0 + __udivsi3@GCC_3.0 1:4.3.0 + __umoddi3@GLIBC_2.0 1:4.3.0 + __umodsi3@GCC_3.0 1:4.3.0 + __unorddf2@GCC_3.3.4 1:4.3.0 + __unordsf2@GCC_3.3.4 1:4.3.0 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.hurd-i386 +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.hurd-i386 @@ -0,0 +1,101 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 4.2.1 + GCC_3.3.1@GCC_3.3.1 4.2.1 + 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 1:4.3.0 + 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 + __addvdi3@GCC_3.0 4.2.1 + __addvsi3@GCC_3.0 4.2.1 + __ashldi3@GCC_3.0 4.2.1 + __ashrdi3@GCC_3.0 4.2.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 4.2.1 + __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 + __divdi3@GLIBC_2.0 4.2.1 + __divsc3@GCC_4.0.0 4.2.1 + __divxc3@GCC_4.0.0 4.2.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 4.2.1 + __fixsfdi@GCC_3.0 4.2.1 + __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 + __floatdidf@GCC_3.0 4.2.1 + __floatdisf@GCC_3.0 4.2.1 + __floatdixf@GCC_3.0 4.2.1 + __floatundidf@GCC_4.2.0 4.2.1 + __floatundisf@GCC_4.2.0 4.2.1 + __floatundixf@GCC_4.2.0 4.2.1 + __frame_state_for@GLIBC_2.0 4.2.1 + __gcc_personality_v0@GCC_3.3.1 4.2.1 + __lshrdi3@GCC_3.0 4.2.1 + __moddi3@GLIBC_2.0 4.2.1 + __muldc3@GCC_4.0.0 4.2.1 + __muldi3@GCC_3.0 4.2.1 + __mulsc3@GCC_4.0.0 4.2.1 + __mulvdi3@GCC_3.0 4.2.1 + __mulvsi3@GCC_3.0 4.2.1 + __mulxc3@GCC_4.0.0 4.2.1 + __negdi2@GCC_3.0 4.2.1 + __negvdi2@GCC_3.0 4.2.1 + __negvsi2@GCC_3.0 4.2.1 + __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 + __subvdi3@GCC_3.0 4.2.1 + __subvsi3@GCC_3.0 4.2.1 + __ucmpdi2@GCC_3.0 4.2.1 + __udivdi3@GLIBC_2.0 4.2.1 + __udivmoddi4@GCC_3.0 4.2.1 + __umoddi3@GLIBC_2.0 4.2.1 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.i386 +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.i386 @@ -0,0 +1,132 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.ia64 +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.ia64 @@ -0,0 +1,145 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.2@GCC_3.3.2 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4.4@GCC_3.4.4 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetBSP@GCC_3.3.2 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __absvti2@GCC_3.4.4 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __addvti3@GCC_3.4.4 1:4.1.1 + __ashlti3@GCC_3.0 1:4.1.1 + __ashrti3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzti2@GCC_3.4 1:4.1.1 + __cmpti2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzti2@GCC_3.4 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsi3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_3.0 1:4.1.1 + __divti3@GCC_3.0 1:4.1.1 + __divxc3@GCC_4.0.0 1:4.1.1 + __divxf3@GCC_3.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffsti2@GCC_3.0 1:4.1.1 + __fixdfti@GCC_3.0 1:4.1.1 + __fixsfti@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixtfti@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfti@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfti@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunstfti@GCC_3.0 1:4.1.1 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfti@GCC_3.0 1:4.1.1 + __fixxfti@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floattidf@GCC_3.0 1:4.1.1 + __floattisf@GCC_3.0 1:4.1.1 + __floattitf@GCC_3.0 1:4.1.1 + __floattixf@GCC_3.0 1:4.1.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __floatuntidf@GCC_4.2.0 1:4.2.1 + __floatuntisf@GCC_4.2.0 1:4.2.1 + __floatuntixf@GCC_4.2.0 1:4.2.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __ia64_nonlocal_goto@GCC_3.0 1:4.1.1 + __ia64_restore_stack_nonlocal@GCC_3.0 1:4.1.1 + __ia64_save_stack_nonlocal@GCC_3.0 1:4.1.1 + __ia64_trampoline@GCC_3.0 1:4.1.1 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrti3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __modsi3@GCC_3.0 1:4.1.1 + __modti3@GCC_3.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __multi3@GCC_3.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulvti3@GCC_3.4.4 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negti2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __negvti2@GCC_3.4.4 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __parityti2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountti2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __subvti3@GCC_3.4.4 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpti2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmodti4@GCC_3.0 1:4.1.1 + __udivsi3@GCC_3.0 1:4.1.1 + __udivti3@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __umodsi3@GCC_3.0 1:4.1.1 + __umodti3@GCC_3.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.lpia +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.lpia @@ -0,0 +1,132 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addtf3@GCC_4.4.0 1:4.4.0 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __copysigntf3@GCC_4.4.0 1:4.4.0 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.4.0 1:4.4.0 + __divtf3@GCC_4.4.0 1:4.4.0 + __divxc3@GCC_4.0.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqtf2@GCC_4.4.0 1:4.4.0 + __extenddftf2@GCC_4.4.0 1:4.4.0 + __extendsftf2@GCC_4.4.0 1:4.4.0 + __fabstf2@GCC_4.4.0 1:4.4.0 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.4.0 1:4.4.0 + __fixtfsi@GCC_4.4.0 1:4.4.0 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.4.0 1:4.4.0 + __fixunstfsi@GCC_4.4.0 1:4.4.0 + __fixunsxfdi@GCC_3.0 1:4.1.1 + __fixunsxfsi@GCC_3.0 1:4.1.1 + __fixxfdi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.4.0 1:4.4.0 + __floatdixf@GCC_3.0 1:4.1.1 + __floatsitf@GCC_4.4.0 1:4.4.0 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.4.0 1:4.4.0 + __floatundixf@GCC_4.2.0 1:4.2.1 + __floatunsitf@GCC_4.4.0 1:4.4.0 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __getf2@GCC_4.4.0 1:4.4.0 + __gttf2@GCC_4.4.0 1:4.4.0 + __letf2@GCC_4.4.0 1:4.4.0 + __lshrdi3@GCC_3.0 1:4.1.1 + __lttf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.4.0 1:4.4.0 + __multf3@GCC_4.4.0 1:4.4.0 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __mulxc3@GCC_4.0.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negtf2@GCC_4.4.0 1:4.4.0 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __netf2@GCC_4.4.0 1:4.4.0 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.4.0 1:4.4.0 + __powixf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subtf3@GCC_4.4.0 1:4.4.0 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trunctfdf2@GCC_4.4.0 1:4.4.0 + __trunctfsf2@GCC_4.4.0 1:4.4.0 + __trunctfxf2@GCC_4.4.0 1:4.4.0 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unordtf2@GCC_4.4.0 1:4.4.0 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.mips +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.mips @@ -0,0 +1,1219 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldi3@GCC_3.0 1:4.1.1 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdi3@GCC_3.0 1:4.1.1 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdi2@GCC_3.0 1:4.1.1 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __mips16_adddf3@GCC_4.4.0 1:4.4.0 + __mips16_addsf3@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0 + __mips16_divdf3@GCC_4.4.0 1:4.4.0 + __mips16_divsf3@GCC_4.4.0 1:4.4.0 + __mips16_eqdf2@GCC_4.4.0 1:4.4.0 + __mips16_eqsf2@GCC_4.4.0 1:4.4.0 + __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0 + __mips16_floatsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatsisf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsisf@GCC_4.4.0 1:4.4.0 + __mips16_gedf2@GCC_4.4.0 1:4.4.0 + __mips16_gesf2@GCC_4.4.0 1:4.4.0 + __mips16_gtdf2@GCC_4.4.0 1:4.4.0 + __mips16_gtsf2@GCC_4.4.0 1:4.4.0 + __mips16_ledf2@GCC_4.4.0 1:4.4.0 + __mips16_lesf2@GCC_4.4.0 1:4.4.0 + __mips16_ltdf2@GCC_4.4.0 1:4.4.0 + __mips16_ltsf2@GCC_4.4.0 1:4.4.0 + __mips16_muldf3@GCC_4.4.0 1:4.4.0 + __mips16_mulsf3@GCC_4.4.0 1:4.4.0 + __mips16_nedf2@GCC_4.4.0 1:4.4.0 + __mips16_nesf2@GCC_4.4.0 1:4.4.0 + __mips16_ret_dc@GCC_4.4.0 1:4.4.0 + __mips16_ret_df@GCC_4.4.0 1:4.4.0 + __mips16_ret_sc@GCC_4.4.0 1:4.4.0 + __mips16_ret_sf@GCC_4.4.0 1:4.4.0 + __mips16_subdf3@GCC_4.4.0 1:4.4.0 + __mips16_subsf3@GCC_4.4.0 1:4.4.0 + __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_synchronize@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.mipsel +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.mipsel @@ -0,0 +1,1219 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_4.4.0@GCC_4.4.0 1:4.4.0 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addda3@GCC_4.3.0 1:4.3 + __adddf3@GCC_3.0 1:4.1.1 + __adddq3@GCC_4.3.0 1:4.3 + __addha3@GCC_4.3.0 1:4.3 + __addhq3@GCC_4.3.0 1:4.3 + __addqq3@GCC_4.3.0 1:4.3 + __addsa3@GCC_4.3.0 1:4.3 + __addsf3@GCC_3.0 1:4.1.1 + __addsq3@GCC_4.3.0 1:4.3 + __adduda3@GCC_4.3.0 1:4.3 + __addudq3@GCC_4.3.0 1:4.3 + __adduha3@GCC_4.3.0 1:4.3 + __adduhq3@GCC_4.3.0 1:4.3 + __adduqq3@GCC_4.3.0 1:4.3 + __addusa3@GCC_4.3.0 1:4.3 + __addusq3@GCC_4.3.0 1:4.3 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashlda3@GCC_4.3.0 1:4.3 + __ashldi3@GCC_3.0 1:4.1.1 + __ashldq3@GCC_4.3.0 1:4.3 + __ashlha3@GCC_4.3.0 1:4.3 + __ashlhq3@GCC_4.3.0 1:4.3 + __ashlqq3@GCC_4.3.0 1:4.3 + __ashlsa3@GCC_4.3.0 1:4.3 + __ashlsq3@GCC_4.3.0 1:4.3 + __ashluda3@GCC_4.3.0 1:4.3 + __ashludq3@GCC_4.3.0 1:4.3 + __ashluha3@GCC_4.3.0 1:4.3 + __ashluhq3@GCC_4.3.0 1:4.3 + __ashluqq3@GCC_4.3.0 1:4.3 + __ashlusa3@GCC_4.3.0 1:4.3 + __ashlusq3@GCC_4.3.0 1:4.3 + __ashrda3@GCC_4.3.0 1:4.3 + __ashrdi3@GCC_3.0 1:4.1.1 + __ashrdq3@GCC_4.3.0 1:4.3 + __ashrha3@GCC_4.3.0 1:4.3 + __ashrhq3@GCC_4.3.0 1:4.3 + __ashrqq3@GCC_4.3.0 1:4.3 + __ashrsa3@GCC_4.3.0 1:4.3 + __ashrsq3@GCC_4.3.0 1:4.3 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpda2@GCC_4.3.0 1:4.3 + __cmpdi2@GCC_3.0 1:4.1.1 + __cmpdq2@GCC_4.3.0 1:4.3 + __cmpha2@GCC_4.3.0 1:4.3 + __cmphq2@GCC_4.3.0 1:4.3 + __cmpqq2@GCC_4.3.0 1:4.3 + __cmpsa2@GCC_4.3.0 1:4.3 + __cmpsq2@GCC_4.3.0 1:4.3 + __cmpuda2@GCC_4.3.0 1:4.3 + __cmpudq2@GCC_4.3.0 1:4.3 + __cmpuha2@GCC_4.3.0 1:4.3 + __cmpuhq2@GCC_4.3.0 1:4.3 + __cmpuqq2@GCC_4.3.0 1:4.3 + __cmpusa2@GCC_4.3.0 1:4.3 + __cmpusq2@GCC_4.3.0 1:4.3 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divda3@GCC_4.3.0 1:4.3 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divdq3@GCC_4.3.0 1:4.3 + __divha3@GCC_4.3.0 1:4.3 + __divhq3@GCC_4.3.0 1:4.3 + __divqq3@GCC_4.3.0 1:4.3 + __divsa3@GCC_4.3.0 1:4.3 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divsq3@GCC_4.3.0 1:4.3 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __fractdadf@GCC_4.3.0 1:4.3 + __fractdadi@GCC_4.3.0 1:4.3 + __fractdadq@GCC_4.3.0 1:4.3 + __fractdaha2@GCC_4.3.0 1:4.3 + __fractdahi@GCC_4.3.0 1:4.3 + __fractdahq@GCC_4.3.0 1:4.3 + __fractdaqi@GCC_4.3.0 1:4.3 + __fractdaqq@GCC_4.3.0 1:4.3 + __fractdasa2@GCC_4.3.0 1:4.3 + __fractdasf@GCC_4.3.0 1:4.3 + __fractdasi@GCC_4.3.0 1:4.3 + __fractdasq@GCC_4.3.0 1:4.3 + __fractdauda@GCC_4.3.0 1:4.3 + __fractdaudq@GCC_4.3.0 1:4.3 + __fractdauha@GCC_4.3.0 1:4.3 + __fractdauhq@GCC_4.3.0 1:4.3 + __fractdauqq@GCC_4.3.0 1:4.3 + __fractdausa@GCC_4.3.0 1:4.3 + __fractdausq@GCC_4.3.0 1:4.3 + __fractdfda@GCC_4.3.0 1:4.3 + __fractdfdq@GCC_4.3.0 1:4.3 + __fractdfha@GCC_4.3.0 1:4.3 + __fractdfhq@GCC_4.3.0 1:4.3 + __fractdfqq@GCC_4.3.0 1:4.3 + __fractdfsa@GCC_4.3.0 1:4.3 + __fractdfsq@GCC_4.3.0 1:4.3 + __fractdfuda@GCC_4.3.0 1:4.3 + __fractdfudq@GCC_4.3.0 1:4.3 + __fractdfuha@GCC_4.3.0 1:4.3 + __fractdfuhq@GCC_4.3.0 1:4.3 + __fractdfuqq@GCC_4.3.0 1:4.3 + __fractdfusa@GCC_4.3.0 1:4.3 + __fractdfusq@GCC_4.3.0 1:4.3 + __fractdida@GCC_4.3.0 1:4.3 + __fractdidq@GCC_4.3.0 1:4.3 + __fractdiha@GCC_4.3.0 1:4.3 + __fractdihq@GCC_4.3.0 1:4.3 + __fractdiqq@GCC_4.3.0 1:4.3 + __fractdisa@GCC_4.3.0 1:4.3 + __fractdisq@GCC_4.3.0 1:4.3 + __fractdiuda@GCC_4.3.0 1:4.3 + __fractdiudq@GCC_4.3.0 1:4.3 + __fractdiuha@GCC_4.3.0 1:4.3 + __fractdiuhq@GCC_4.3.0 1:4.3 + __fractdiuqq@GCC_4.3.0 1:4.3 + __fractdiusa@GCC_4.3.0 1:4.3 + __fractdiusq@GCC_4.3.0 1:4.3 + __fractdqda@GCC_4.3.0 1:4.3 + __fractdqdf@GCC_4.3.0 1:4.3 + __fractdqdi@GCC_4.3.0 1:4.3 + __fractdqha@GCC_4.3.0 1:4.3 + __fractdqhi@GCC_4.3.0 1:4.3 + __fractdqhq2@GCC_4.3.0 1:4.3 + __fractdqqi@GCC_4.3.0 1:4.3 + __fractdqqq2@GCC_4.3.0 1:4.3 + __fractdqsa@GCC_4.3.0 1:4.3 + __fractdqsf@GCC_4.3.0 1:4.3 + __fractdqsi@GCC_4.3.0 1:4.3 + __fractdqsq2@GCC_4.3.0 1:4.3 + __fractdquda@GCC_4.3.0 1:4.3 + __fractdqudq@GCC_4.3.0 1:4.3 + __fractdquha@GCC_4.3.0 1:4.3 + __fractdquhq@GCC_4.3.0 1:4.3 + __fractdquqq@GCC_4.3.0 1:4.3 + __fractdqusa@GCC_4.3.0 1:4.3 + __fractdqusq@GCC_4.3.0 1:4.3 + __fracthada2@GCC_4.3.0 1:4.3 + __fracthadf@GCC_4.3.0 1:4.3 + __fracthadi@GCC_4.3.0 1:4.3 + __fracthadq@GCC_4.3.0 1:4.3 + __fracthahi@GCC_4.3.0 1:4.3 + __fracthahq@GCC_4.3.0 1:4.3 + __fracthaqi@GCC_4.3.0 1:4.3 + __fracthaqq@GCC_4.3.0 1:4.3 + __fracthasa2@GCC_4.3.0 1:4.3 + __fracthasf@GCC_4.3.0 1:4.3 + __fracthasi@GCC_4.3.0 1:4.3 + __fracthasq@GCC_4.3.0 1:4.3 + __fracthauda@GCC_4.3.0 1:4.3 + __fracthaudq@GCC_4.3.0 1:4.3 + __fracthauha@GCC_4.3.0 1:4.3 + __fracthauhq@GCC_4.3.0 1:4.3 + __fracthauqq@GCC_4.3.0 1:4.3 + __fracthausa@GCC_4.3.0 1:4.3 + __fracthausq@GCC_4.3.0 1:4.3 + __fracthida@GCC_4.3.0 1:4.3 + __fracthidq@GCC_4.3.0 1:4.3 + __fracthiha@GCC_4.3.0 1:4.3 + __fracthihq@GCC_4.3.0 1:4.3 + __fracthiqq@GCC_4.3.0 1:4.3 + __fracthisa@GCC_4.3.0 1:4.3 + __fracthisq@GCC_4.3.0 1:4.3 + __fracthiuda@GCC_4.3.0 1:4.3 + __fracthiudq@GCC_4.3.0 1:4.3 + __fracthiuha@GCC_4.3.0 1:4.3 + __fracthiuhq@GCC_4.3.0 1:4.3 + __fracthiuqq@GCC_4.3.0 1:4.3 + __fracthiusa@GCC_4.3.0 1:4.3 + __fracthiusq@GCC_4.3.0 1:4.3 + __fracthqda@GCC_4.3.0 1:4.3 + __fracthqdf@GCC_4.3.0 1:4.3 + __fracthqdi@GCC_4.3.0 1:4.3 + __fracthqdq2@GCC_4.3.0 1:4.3 + __fracthqha@GCC_4.3.0 1:4.3 + __fracthqhi@GCC_4.3.0 1:4.3 + __fracthqqi@GCC_4.3.0 1:4.3 + __fracthqqq2@GCC_4.3.0 1:4.3 + __fracthqsa@GCC_4.3.0 1:4.3 + __fracthqsf@GCC_4.3.0 1:4.3 + __fracthqsi@GCC_4.3.0 1:4.3 + __fracthqsq2@GCC_4.3.0 1:4.3 + __fracthquda@GCC_4.3.0 1:4.3 + __fracthqudq@GCC_4.3.0 1:4.3 + __fracthquha@GCC_4.3.0 1:4.3 + __fracthquhq@GCC_4.3.0 1:4.3 + __fracthquqq@GCC_4.3.0 1:4.3 + __fracthqusa@GCC_4.3.0 1:4.3 + __fracthqusq@GCC_4.3.0 1:4.3 + __fractqida@GCC_4.3.0 1:4.3 + __fractqidq@GCC_4.3.0 1:4.3 + __fractqiha@GCC_4.3.0 1:4.3 + __fractqihq@GCC_4.3.0 1:4.3 + __fractqiqq@GCC_4.3.0 1:4.3 + __fractqisa@GCC_4.3.0 1:4.3 + __fractqisq@GCC_4.3.0 1:4.3 + __fractqiuda@GCC_4.3.0 1:4.3 + __fractqiudq@GCC_4.3.0 1:4.3 + __fractqiuha@GCC_4.3.0 1:4.3 + __fractqiuhq@GCC_4.3.0 1:4.3 + __fractqiuqq@GCC_4.3.0 1:4.3 + __fractqiusa@GCC_4.3.0 1:4.3 + __fractqiusq@GCC_4.3.0 1:4.3 + __fractqqda@GCC_4.3.0 1:4.3 + __fractqqdf@GCC_4.3.0 1:4.3 + __fractqqdi@GCC_4.3.0 1:4.3 + __fractqqdq2@GCC_4.3.0 1:4.3 + __fractqqha@GCC_4.3.0 1:4.3 + __fractqqhi@GCC_4.3.0 1:4.3 + __fractqqhq2@GCC_4.3.0 1:4.3 + __fractqqqi@GCC_4.3.0 1:4.3 + __fractqqsa@GCC_4.3.0 1:4.3 + __fractqqsf@GCC_4.3.0 1:4.3 + __fractqqsi@GCC_4.3.0 1:4.3 + __fractqqsq2@GCC_4.3.0 1:4.3 + __fractqquda@GCC_4.3.0 1:4.3 + __fractqqudq@GCC_4.3.0 1:4.3 + __fractqquha@GCC_4.3.0 1:4.3 + __fractqquhq@GCC_4.3.0 1:4.3 + __fractqquqq@GCC_4.3.0 1:4.3 + __fractqqusa@GCC_4.3.0 1:4.3 + __fractqqusq@GCC_4.3.0 1:4.3 + __fractsada2@GCC_4.3.0 1:4.3 + __fractsadf@GCC_4.3.0 1:4.3 + __fractsadi@GCC_4.3.0 1:4.3 + __fractsadq@GCC_4.3.0 1:4.3 + __fractsaha2@GCC_4.3.0 1:4.3 + __fractsahi@GCC_4.3.0 1:4.3 + __fractsahq@GCC_4.3.0 1:4.3 + __fractsaqi@GCC_4.3.0 1:4.3 + __fractsaqq@GCC_4.3.0 1:4.3 + __fractsasf@GCC_4.3.0 1:4.3 + __fractsasi@GCC_4.3.0 1:4.3 + __fractsasq@GCC_4.3.0 1:4.3 + __fractsauda@GCC_4.3.0 1:4.3 + __fractsaudq@GCC_4.3.0 1:4.3 + __fractsauha@GCC_4.3.0 1:4.3 + __fractsauhq@GCC_4.3.0 1:4.3 + __fractsauqq@GCC_4.3.0 1:4.3 + __fractsausa@GCC_4.3.0 1:4.3 + __fractsausq@GCC_4.3.0 1:4.3 + __fractsfda@GCC_4.3.0 1:4.3 + __fractsfdq@GCC_4.3.0 1:4.3 + __fractsfha@GCC_4.3.0 1:4.3 + __fractsfhq@GCC_4.3.0 1:4.3 + __fractsfqq@GCC_4.3.0 1:4.3 + __fractsfsa@GCC_4.3.0 1:4.3 + __fractsfsq@GCC_4.3.0 1:4.3 + __fractsfuda@GCC_4.3.0 1:4.3 + __fractsfudq@GCC_4.3.0 1:4.3 + __fractsfuha@GCC_4.3.0 1:4.3 + __fractsfuhq@GCC_4.3.0 1:4.3 + __fractsfuqq@GCC_4.3.0 1:4.3 + __fractsfusa@GCC_4.3.0 1:4.3 + __fractsfusq@GCC_4.3.0 1:4.3 + __fractsida@GCC_4.3.0 1:4.3 + __fractsidq@GCC_4.3.0 1:4.3 + __fractsiha@GCC_4.3.0 1:4.3 + __fractsihq@GCC_4.3.0 1:4.3 + __fractsiqq@GCC_4.3.0 1:4.3 + __fractsisa@GCC_4.3.0 1:4.3 + __fractsisq@GCC_4.3.0 1:4.3 + __fractsiuda@GCC_4.3.0 1:4.3 + __fractsiudq@GCC_4.3.0 1:4.3 + __fractsiuha@GCC_4.3.0 1:4.3 + __fractsiuhq@GCC_4.3.0 1:4.3 + __fractsiuqq@GCC_4.3.0 1:4.3 + __fractsiusa@GCC_4.3.0 1:4.3 + __fractsiusq@GCC_4.3.0 1:4.3 + __fractsqda@GCC_4.3.0 1:4.3 + __fractsqdf@GCC_4.3.0 1:4.3 + __fractsqdi@GCC_4.3.0 1:4.3 + __fractsqdq2@GCC_4.3.0 1:4.3 + __fractsqha@GCC_4.3.0 1:4.3 + __fractsqhi@GCC_4.3.0 1:4.3 + __fractsqhq2@GCC_4.3.0 1:4.3 + __fractsqqi@GCC_4.3.0 1:4.3 + __fractsqqq2@GCC_4.3.0 1:4.3 + __fractsqsa@GCC_4.3.0 1:4.3 + __fractsqsf@GCC_4.3.0 1:4.3 + __fractsqsi@GCC_4.3.0 1:4.3 + __fractsquda@GCC_4.3.0 1:4.3 + __fractsqudq@GCC_4.3.0 1:4.3 + __fractsquha@GCC_4.3.0 1:4.3 + __fractsquhq@GCC_4.3.0 1:4.3 + __fractsquqq@GCC_4.3.0 1:4.3 + __fractsqusa@GCC_4.3.0 1:4.3 + __fractsqusq@GCC_4.3.0 1:4.3 + __fractudada@GCC_4.3.0 1:4.3 + __fractudadf@GCC_4.3.0 1:4.3 + __fractudadi@GCC_4.3.0 1:4.3 + __fractudadq@GCC_4.3.0 1:4.3 + __fractudaha@GCC_4.3.0 1:4.3 + __fractudahi@GCC_4.3.0 1:4.3 + __fractudahq@GCC_4.3.0 1:4.3 + __fractudaqi@GCC_4.3.0 1:4.3 + __fractudaqq@GCC_4.3.0 1:4.3 + __fractudasa@GCC_4.3.0 1:4.3 + __fractudasf@GCC_4.3.0 1:4.3 + __fractudasi@GCC_4.3.0 1:4.3 + __fractudasq@GCC_4.3.0 1:4.3 + __fractudaudq@GCC_4.3.0 1:4.3 + __fractudauha2@GCC_4.3.0 1:4.3 + __fractudauhq@GCC_4.3.0 1:4.3 + __fractudauqq@GCC_4.3.0 1:4.3 + __fractudausa2@GCC_4.3.0 1:4.3 + __fractudausq@GCC_4.3.0 1:4.3 + __fractudqda@GCC_4.3.0 1:4.3 + __fractudqdf@GCC_4.3.0 1:4.3 + __fractudqdi@GCC_4.3.0 1:4.3 + __fractudqdq@GCC_4.3.0 1:4.3 + __fractudqha@GCC_4.3.0 1:4.3 + __fractudqhi@GCC_4.3.0 1:4.3 + __fractudqhq@GCC_4.3.0 1:4.3 + __fractudqqi@GCC_4.3.0 1:4.3 + __fractudqqq@GCC_4.3.0 1:4.3 + __fractudqsa@GCC_4.3.0 1:4.3 + __fractudqsf@GCC_4.3.0 1:4.3 + __fractudqsi@GCC_4.3.0 1:4.3 + __fractudqsq@GCC_4.3.0 1:4.3 + __fractudquda@GCC_4.3.0 1:4.3 + __fractudquha@GCC_4.3.0 1:4.3 + __fractudquhq2@GCC_4.3.0 1:4.3 + __fractudquqq2@GCC_4.3.0 1:4.3 + __fractudqusa@GCC_4.3.0 1:4.3 + __fractudqusq2@GCC_4.3.0 1:4.3 + __fractuhada@GCC_4.3.0 1:4.3 + __fractuhadf@GCC_4.3.0 1:4.3 + __fractuhadi@GCC_4.3.0 1:4.3 + __fractuhadq@GCC_4.3.0 1:4.3 + __fractuhaha@GCC_4.3.0 1:4.3 + __fractuhahi@GCC_4.3.0 1:4.3 + __fractuhahq@GCC_4.3.0 1:4.3 + __fractuhaqi@GCC_4.3.0 1:4.3 + __fractuhaqq@GCC_4.3.0 1:4.3 + __fractuhasa@GCC_4.3.0 1:4.3 + __fractuhasf@GCC_4.3.0 1:4.3 + __fractuhasi@GCC_4.3.0 1:4.3 + __fractuhasq@GCC_4.3.0 1:4.3 + __fractuhauda2@GCC_4.3.0 1:4.3 + __fractuhaudq@GCC_4.3.0 1:4.3 + __fractuhauhq@GCC_4.3.0 1:4.3 + __fractuhauqq@GCC_4.3.0 1:4.3 + __fractuhausa2@GCC_4.3.0 1:4.3 + __fractuhausq@GCC_4.3.0 1:4.3 + __fractuhqda@GCC_4.3.0 1:4.3 + __fractuhqdf@GCC_4.3.0 1:4.3 + __fractuhqdi@GCC_4.3.0 1:4.3 + __fractuhqdq@GCC_4.3.0 1:4.3 + __fractuhqha@GCC_4.3.0 1:4.3 + __fractuhqhi@GCC_4.3.0 1:4.3 + __fractuhqhq@GCC_4.3.0 1:4.3 + __fractuhqqi@GCC_4.3.0 1:4.3 + __fractuhqqq@GCC_4.3.0 1:4.3 + __fractuhqsa@GCC_4.3.0 1:4.3 + __fractuhqsf@GCC_4.3.0 1:4.3 + __fractuhqsi@GCC_4.3.0 1:4.3 + __fractuhqsq@GCC_4.3.0 1:4.3 + __fractuhquda@GCC_4.3.0 1:4.3 + __fractuhqudq2@GCC_4.3.0 1:4.3 + __fractuhquha@GCC_4.3.0 1:4.3 + __fractuhquqq2@GCC_4.3.0 1:4.3 + __fractuhqusa@GCC_4.3.0 1:4.3 + __fractuhqusq2@GCC_4.3.0 1:4.3 + __fractunsdadi@GCC_4.3.0 1:4.3 + __fractunsdahi@GCC_4.3.0 1:4.3 + __fractunsdaqi@GCC_4.3.0 1:4.3 + __fractunsdasi@GCC_4.3.0 1:4.3 + __fractunsdida@GCC_4.3.0 1:4.3 + __fractunsdidq@GCC_4.3.0 1:4.3 + __fractunsdiha@GCC_4.3.0 1:4.3 + __fractunsdihq@GCC_4.3.0 1:4.3 + __fractunsdiqq@GCC_4.3.0 1:4.3 + __fractunsdisa@GCC_4.3.0 1:4.3 + __fractunsdisq@GCC_4.3.0 1:4.3 + __fractunsdiuda@GCC_4.3.0 1:4.3 + __fractunsdiudq@GCC_4.3.0 1:4.3 + __fractunsdiuha@GCC_4.3.0 1:4.3 + __fractunsdiuhq@GCC_4.3.0 1:4.3 + __fractunsdiuqq@GCC_4.3.0 1:4.3 + __fractunsdiusa@GCC_4.3.0 1:4.3 + __fractunsdiusq@GCC_4.3.0 1:4.3 + __fractunsdqdi@GCC_4.3.0 1:4.3 + __fractunsdqhi@GCC_4.3.0 1:4.3 + __fractunsdqqi@GCC_4.3.0 1:4.3 + __fractunsdqsi@GCC_4.3.0 1:4.3 + __fractunshadi@GCC_4.3.0 1:4.3 + __fractunshahi@GCC_4.3.0 1:4.3 + __fractunshaqi@GCC_4.3.0 1:4.3 + __fractunshasi@GCC_4.3.0 1:4.3 + __fractunshida@GCC_4.3.0 1:4.3 + __fractunshidq@GCC_4.3.0 1:4.3 + __fractunshiha@GCC_4.3.0 1:4.3 + __fractunshihq@GCC_4.3.0 1:4.3 + __fractunshiqq@GCC_4.3.0 1:4.3 + __fractunshisa@GCC_4.3.0 1:4.3 + __fractunshisq@GCC_4.3.0 1:4.3 + __fractunshiuda@GCC_4.3.0 1:4.3 + __fractunshiudq@GCC_4.3.0 1:4.3 + __fractunshiuha@GCC_4.3.0 1:4.3 + __fractunshiuhq@GCC_4.3.0 1:4.3 + __fractunshiuqq@GCC_4.3.0 1:4.3 + __fractunshiusa@GCC_4.3.0 1:4.3 + __fractunshiusq@GCC_4.3.0 1:4.3 + __fractunshqdi@GCC_4.3.0 1:4.3 + __fractunshqhi@GCC_4.3.0 1:4.3 + __fractunshqqi@GCC_4.3.0 1:4.3 + __fractunshqsi@GCC_4.3.0 1:4.3 + __fractunsqida@GCC_4.3.0 1:4.3 + __fractunsqidq@GCC_4.3.0 1:4.3 + __fractunsqiha@GCC_4.3.0 1:4.3 + __fractunsqihq@GCC_4.3.0 1:4.3 + __fractunsqiqq@GCC_4.3.0 1:4.3 + __fractunsqisa@GCC_4.3.0 1:4.3 + __fractunsqisq@GCC_4.3.0 1:4.3 + __fractunsqiuda@GCC_4.3.0 1:4.3 + __fractunsqiudq@GCC_4.3.0 1:4.3 + __fractunsqiuha@GCC_4.3.0 1:4.3 + __fractunsqiuhq@GCC_4.3.0 1:4.3 + __fractunsqiuqq@GCC_4.3.0 1:4.3 + __fractunsqiusa@GCC_4.3.0 1:4.3 + __fractunsqiusq@GCC_4.3.0 1:4.3 + __fractunsqqdi@GCC_4.3.0 1:4.3 + __fractunsqqhi@GCC_4.3.0 1:4.3 + __fractunsqqqi@GCC_4.3.0 1:4.3 + __fractunsqqsi@GCC_4.3.0 1:4.3 + __fractunssadi@GCC_4.3.0 1:4.3 + __fractunssahi@GCC_4.3.0 1:4.3 + __fractunssaqi@GCC_4.3.0 1:4.3 + __fractunssasi@GCC_4.3.0 1:4.3 + __fractunssida@GCC_4.3.0 1:4.3 + __fractunssidq@GCC_4.3.0 1:4.3 + __fractunssiha@GCC_4.3.0 1:4.3 + __fractunssihq@GCC_4.3.0 1:4.3 + __fractunssiqq@GCC_4.3.0 1:4.3 + __fractunssisa@GCC_4.3.0 1:4.3 + __fractunssisq@GCC_4.3.0 1:4.3 + __fractunssiuda@GCC_4.3.0 1:4.3 + __fractunssiudq@GCC_4.3.0 1:4.3 + __fractunssiuha@GCC_4.3.0 1:4.3 + __fractunssiuhq@GCC_4.3.0 1:4.3 + __fractunssiuqq@GCC_4.3.0 1:4.3 + __fractunssiusa@GCC_4.3.0 1:4.3 + __fractunssiusq@GCC_4.3.0 1:4.3 + __fractunssqdi@GCC_4.3.0 1:4.3 + __fractunssqhi@GCC_4.3.0 1:4.3 + __fractunssqqi@GCC_4.3.0 1:4.3 + __fractunssqsi@GCC_4.3.0 1:4.3 + __fractunsudadi@GCC_4.3.0 1:4.3 + __fractunsudahi@GCC_4.3.0 1:4.3 + __fractunsudaqi@GCC_4.3.0 1:4.3 + __fractunsudasi@GCC_4.3.0 1:4.3 + __fractunsudqdi@GCC_4.3.0 1:4.3 + __fractunsudqhi@GCC_4.3.0 1:4.3 + __fractunsudqqi@GCC_4.3.0 1:4.3 + __fractunsudqsi@GCC_4.3.0 1:4.3 + __fractunsuhadi@GCC_4.3.0 1:4.3 + __fractunsuhahi@GCC_4.3.0 1:4.3 + __fractunsuhaqi@GCC_4.3.0 1:4.3 + __fractunsuhasi@GCC_4.3.0 1:4.3 + __fractunsuhqdi@GCC_4.3.0 1:4.3 + __fractunsuhqhi@GCC_4.3.0 1:4.3 + __fractunsuhqqi@GCC_4.3.0 1:4.3 + __fractunsuhqsi@GCC_4.3.0 1:4.3 + __fractunsuqqdi@GCC_4.3.0 1:4.3 + __fractunsuqqhi@GCC_4.3.0 1:4.3 + __fractunsuqqqi@GCC_4.3.0 1:4.3 + __fractunsuqqsi@GCC_4.3.0 1:4.3 + __fractunsusadi@GCC_4.3.0 1:4.3 + __fractunsusahi@GCC_4.3.0 1:4.3 + __fractunsusaqi@GCC_4.3.0 1:4.3 + __fractunsusasi@GCC_4.3.0 1:4.3 + __fractunsusqdi@GCC_4.3.0 1:4.3 + __fractunsusqhi@GCC_4.3.0 1:4.3 + __fractunsusqqi@GCC_4.3.0 1:4.3 + __fractunsusqsi@GCC_4.3.0 1:4.3 + __fractuqqda@GCC_4.3.0 1:4.3 + __fractuqqdf@GCC_4.3.0 1:4.3 + __fractuqqdi@GCC_4.3.0 1:4.3 + __fractuqqdq@GCC_4.3.0 1:4.3 + __fractuqqha@GCC_4.3.0 1:4.3 + __fractuqqhi@GCC_4.3.0 1:4.3 + __fractuqqhq@GCC_4.3.0 1:4.3 + __fractuqqqi@GCC_4.3.0 1:4.3 + __fractuqqqq@GCC_4.3.0 1:4.3 + __fractuqqsa@GCC_4.3.0 1:4.3 + __fractuqqsf@GCC_4.3.0 1:4.3 + __fractuqqsi@GCC_4.3.0 1:4.3 + __fractuqqsq@GCC_4.3.0 1:4.3 + __fractuqquda@GCC_4.3.0 1:4.3 + __fractuqqudq2@GCC_4.3.0 1:4.3 + __fractuqquha@GCC_4.3.0 1:4.3 + __fractuqquhq2@GCC_4.3.0 1:4.3 + __fractuqqusa@GCC_4.3.0 1:4.3 + __fractuqqusq2@GCC_4.3.0 1:4.3 + __fractusada@GCC_4.3.0 1:4.3 + __fractusadf@GCC_4.3.0 1:4.3 + __fractusadi@GCC_4.3.0 1:4.3 + __fractusadq@GCC_4.3.0 1:4.3 + __fractusaha@GCC_4.3.0 1:4.3 + __fractusahi@GCC_4.3.0 1:4.3 + __fractusahq@GCC_4.3.0 1:4.3 + __fractusaqi@GCC_4.3.0 1:4.3 + __fractusaqq@GCC_4.3.0 1:4.3 + __fractusasa@GCC_4.3.0 1:4.3 + __fractusasf@GCC_4.3.0 1:4.3 + __fractusasi@GCC_4.3.0 1:4.3 + __fractusasq@GCC_4.3.0 1:4.3 + __fractusauda2@GCC_4.3.0 1:4.3 + __fractusaudq@GCC_4.3.0 1:4.3 + __fractusauha2@GCC_4.3.0 1:4.3 + __fractusauhq@GCC_4.3.0 1:4.3 + __fractusauqq@GCC_4.3.0 1:4.3 + __fractusausq@GCC_4.3.0 1:4.3 + __fractusqda@GCC_4.3.0 1:4.3 + __fractusqdf@GCC_4.3.0 1:4.3 + __fractusqdi@GCC_4.3.0 1:4.3 + __fractusqdq@GCC_4.3.0 1:4.3 + __fractusqha@GCC_4.3.0 1:4.3 + __fractusqhi@GCC_4.3.0 1:4.3 + __fractusqhq@GCC_4.3.0 1:4.3 + __fractusqqi@GCC_4.3.0 1:4.3 + __fractusqqq@GCC_4.3.0 1:4.3 + __fractusqsa@GCC_4.3.0 1:4.3 + __fractusqsf@GCC_4.3.0 1:4.3 + __fractusqsi@GCC_4.3.0 1:4.3 + __fractusqsq@GCC_4.3.0 1:4.3 + __fractusquda@GCC_4.3.0 1:4.3 + __fractusqudq2@GCC_4.3.0 1:4.3 + __fractusquha@GCC_4.3.0 1:4.3 + __fractusquhq2@GCC_4.3.0 1:4.3 + __fractusquqq2@GCC_4.3.0 1:4.3 + __fractusqusa@GCC_4.3.0 1:4.3 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __lshruda3@GCC_4.3.0 1:4.3 + __lshrudq3@GCC_4.3.0 1:4.3 + __lshruha3@GCC_4.3.0 1:4.3 + __lshruhq3@GCC_4.3.0 1:4.3 + __lshruqq3@GCC_4.3.0 1:4.3 + __lshrusa3@GCC_4.3.0 1:4.3 + __lshrusq3@GCC_4.3.0 1:4.3 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __mips16_adddf3@GCC_4.4.0 1:4.4.0 + __mips16_addsf3@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_dc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_df_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sc_9@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_0@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_10@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_1@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_2@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_5@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_6@GCC_4.4.0 1:4.4.0 + __mips16_call_stub_sf_9@GCC_4.4.0 1:4.4.0 + __mips16_divdf3@GCC_4.4.0 1:4.4.0 + __mips16_divsf3@GCC_4.4.0 1:4.4.0 + __mips16_eqdf2@GCC_4.4.0 1:4.4.0 + __mips16_eqsf2@GCC_4.4.0 1:4.4.0 + __mips16_extendsfdf2@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncdfsi@GCC_4.4.0 1:4.4.0 + __mips16_fix_truncsfsi@GCC_4.4.0 1:4.4.0 + __mips16_floatsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatsisf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsidf@GCC_4.4.0 1:4.4.0 + __mips16_floatunsisf@GCC_4.4.0 1:4.4.0 + __mips16_gedf2@GCC_4.4.0 1:4.4.0 + __mips16_gesf2@GCC_4.4.0 1:4.4.0 + __mips16_gtdf2@GCC_4.4.0 1:4.4.0 + __mips16_gtsf2@GCC_4.4.0 1:4.4.0 + __mips16_ledf2@GCC_4.4.0 1:4.4.0 + __mips16_lesf2@GCC_4.4.0 1:4.4.0 + __mips16_ltdf2@GCC_4.4.0 1:4.4.0 + __mips16_ltsf2@GCC_4.4.0 1:4.4.0 + __mips16_muldf3@GCC_4.4.0 1:4.4.0 + __mips16_mulsf3@GCC_4.4.0 1:4.4.0 + __mips16_nedf2@GCC_4.4.0 1:4.4.0 + __mips16_nesf2@GCC_4.4.0 1:4.4.0 + __mips16_ret_dc@GCC_4.4.0 1:4.4.0 + __mips16_ret_df@GCC_4.4.0 1:4.4.0 + __mips16_ret_sc@GCC_4.4.0 1:4.4.0 + __mips16_ret_sf@GCC_4.4.0 1:4.4.0 + __mips16_subdf3@GCC_4.4.0 1:4.4.0 + __mips16_subsf3@GCC_4.4.0 1:4.4.0 + __mips16_truncdfsf2@GCC_4.4.0 1:4.4.0 + __moddi3@GLIBC_2.0 1:4.1.1 + __mulda3@GCC_4.3.0 1:4.3 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __muldq3@GCC_4.3.0 1:4.3 + __mulha3@GCC_4.3.0 1:4.3 + __mulhq3@GCC_4.3.0 1:4.3 + __mulqq3@GCC_4.3.0 1:4.3 + __mulsa3@GCC_4.3.0 1:4.3 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __mulsq3@GCC_4.3.0 1:4.3 + __muluda3@GCC_4.3.0 1:4.3 + __muludq3@GCC_4.3.0 1:4.3 + __muluha3@GCC_4.3.0 1:4.3 + __muluhq3@GCC_4.3.0 1:4.3 + __muluqq3@GCC_4.3.0 1:4.3 + __mulusa3@GCC_4.3.0 1:4.3 + __mulusq3@GCC_4.3.0 1:4.3 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negda2@GCC_4.3.0 1:4.3 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negdq2@GCC_4.3.0 1:4.3 + __negha2@GCC_4.3.0 1:4.3 + __neghq2@GCC_4.3.0 1:4.3 + __negqq2@GCC_4.3.0 1:4.3 + __negsa2@GCC_4.3.0 1:4.3 + __negsf2@GCC_3.0 1:4.1.1 + __negsq2@GCC_4.3.0 1:4.3 + __neguda2@GCC_4.3.0 1:4.3 + __negudq2@GCC_4.3.0 1:4.3 + __neguha2@GCC_4.3.0 1:4.3 + __neguhq2@GCC_4.3.0 1:4.3 + __neguqq2@GCC_4.3.0 1:4.3 + __negusa2@GCC_4.3.0 1:4.3 + __negusq2@GCC_4.3.0 1:4.3 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __satfractdadq@GCC_4.3.0 1:4.3 + __satfractdaha2@GCC_4.3.0 1:4.3 + __satfractdahq@GCC_4.3.0 1:4.3 + __satfractdaqq@GCC_4.3.0 1:4.3 + __satfractdasa2@GCC_4.3.0 1:4.3 + __satfractdasq@GCC_4.3.0 1:4.3 + __satfractdauda@GCC_4.3.0 1:4.3 + __satfractdaudq@GCC_4.3.0 1:4.3 + __satfractdauha@GCC_4.3.0 1:4.3 + __satfractdauhq@GCC_4.3.0 1:4.3 + __satfractdauqq@GCC_4.3.0 1:4.3 + __satfractdausa@GCC_4.3.0 1:4.3 + __satfractdausq@GCC_4.3.0 1:4.3 + __satfractdfda@GCC_4.3.0 1:4.3 + __satfractdfdq@GCC_4.3.0 1:4.3 + __satfractdfha@GCC_4.3.0 1:4.3 + __satfractdfhq@GCC_4.3.0 1:4.3 + __satfractdfqq@GCC_4.3.0 1:4.3 + __satfractdfsa@GCC_4.3.0 1:4.3 + __satfractdfsq@GCC_4.3.0 1:4.3 + __satfractdfuda@GCC_4.3.0 1:4.3 + __satfractdfudq@GCC_4.3.0 1:4.3 + __satfractdfuha@GCC_4.3.0 1:4.3 + __satfractdfuhq@GCC_4.3.0 1:4.3 + __satfractdfuqq@GCC_4.3.0 1:4.3 + __satfractdfusa@GCC_4.3.0 1:4.3 + __satfractdfusq@GCC_4.3.0 1:4.3 + __satfractdida@GCC_4.3.0 1:4.3 + __satfractdidq@GCC_4.3.0 1:4.3 + __satfractdiha@GCC_4.3.0 1:4.3 + __satfractdihq@GCC_4.3.0 1:4.3 + __satfractdiqq@GCC_4.3.0 1:4.3 + __satfractdisa@GCC_4.3.0 1:4.3 + __satfractdisq@GCC_4.3.0 1:4.3 + __satfractdiuda@GCC_4.3.0 1:4.3 + __satfractdiudq@GCC_4.3.0 1:4.3 + __satfractdiuha@GCC_4.3.0 1:4.3 + __satfractdiuhq@GCC_4.3.0 1:4.3 + __satfractdiuqq@GCC_4.3.0 1:4.3 + __satfractdiusa@GCC_4.3.0 1:4.3 + __satfractdiusq@GCC_4.3.0 1:4.3 + __satfractdqda@GCC_4.3.0 1:4.3 + __satfractdqha@GCC_4.3.0 1:4.3 + __satfractdqhq2@GCC_4.3.0 1:4.3 + __satfractdqqq2@GCC_4.3.0 1:4.3 + __satfractdqsa@GCC_4.3.0 1:4.3 + __satfractdqsq2@GCC_4.3.0 1:4.3 + __satfractdquda@GCC_4.3.0 1:4.3 + __satfractdqudq@GCC_4.3.0 1:4.3 + __satfractdquha@GCC_4.3.0 1:4.3 + __satfractdquhq@GCC_4.3.0 1:4.3 + __satfractdquqq@GCC_4.3.0 1:4.3 + __satfractdqusa@GCC_4.3.0 1:4.3 + __satfractdqusq@GCC_4.3.0 1:4.3 + __satfracthada2@GCC_4.3.0 1:4.3 + __satfracthadq@GCC_4.3.0 1:4.3 + __satfracthahq@GCC_4.3.0 1:4.3 + __satfracthaqq@GCC_4.3.0 1:4.3 + __satfracthasa2@GCC_4.3.0 1:4.3 + __satfracthasq@GCC_4.3.0 1:4.3 + __satfracthauda@GCC_4.3.0 1:4.3 + __satfracthaudq@GCC_4.3.0 1:4.3 + __satfracthauha@GCC_4.3.0 1:4.3 + __satfracthauhq@GCC_4.3.0 1:4.3 + __satfracthauqq@GCC_4.3.0 1:4.3 + __satfracthausa@GCC_4.3.0 1:4.3 + __satfracthausq@GCC_4.3.0 1:4.3 + __satfracthida@GCC_4.3.0 1:4.3 + __satfracthidq@GCC_4.3.0 1:4.3 + __satfracthiha@GCC_4.3.0 1:4.3 + __satfracthihq@GCC_4.3.0 1:4.3 + __satfracthiqq@GCC_4.3.0 1:4.3 + __satfracthisa@GCC_4.3.0 1:4.3 + __satfracthisq@GCC_4.3.0 1:4.3 + __satfracthiuda@GCC_4.3.0 1:4.3 + __satfracthiudq@GCC_4.3.0 1:4.3 + __satfracthiuha@GCC_4.3.0 1:4.3 + __satfracthiuhq@GCC_4.3.0 1:4.3 + __satfracthiuqq@GCC_4.3.0 1:4.3 + __satfracthiusa@GCC_4.3.0 1:4.3 + __satfracthiusq@GCC_4.3.0 1:4.3 + __satfracthqda@GCC_4.3.0 1:4.3 + __satfracthqdq2@GCC_4.3.0 1:4.3 + __satfracthqha@GCC_4.3.0 1:4.3 + __satfracthqqq2@GCC_4.3.0 1:4.3 + __satfracthqsa@GCC_4.3.0 1:4.3 + __satfracthqsq2@GCC_4.3.0 1:4.3 + __satfracthquda@GCC_4.3.0 1:4.3 + __satfracthqudq@GCC_4.3.0 1:4.3 + __satfracthquha@GCC_4.3.0 1:4.3 + __satfracthquhq@GCC_4.3.0 1:4.3 + __satfracthquqq@GCC_4.3.0 1:4.3 + __satfracthqusa@GCC_4.3.0 1:4.3 + __satfracthqusq@GCC_4.3.0 1:4.3 + __satfractqida@GCC_4.3.0 1:4.3 + __satfractqidq@GCC_4.3.0 1:4.3 + __satfractqiha@GCC_4.3.0 1:4.3 + __satfractqihq@GCC_4.3.0 1:4.3 + __satfractqiqq@GCC_4.3.0 1:4.3 + __satfractqisa@GCC_4.3.0 1:4.3 + __satfractqisq@GCC_4.3.0 1:4.3 + __satfractqiuda@GCC_4.3.0 1:4.3 + __satfractqiudq@GCC_4.3.0 1:4.3 + __satfractqiuha@GCC_4.3.0 1:4.3 + __satfractqiuhq@GCC_4.3.0 1:4.3 + __satfractqiuqq@GCC_4.3.0 1:4.3 + __satfractqiusa@GCC_4.3.0 1:4.3 + __satfractqiusq@GCC_4.3.0 1:4.3 + __satfractqqda@GCC_4.3.0 1:4.3 + __satfractqqdq2@GCC_4.3.0 1:4.3 + __satfractqqha@GCC_4.3.0 1:4.3 + __satfractqqhq2@GCC_4.3.0 1:4.3 + __satfractqqsa@GCC_4.3.0 1:4.3 + __satfractqqsq2@GCC_4.3.0 1:4.3 + __satfractqquda@GCC_4.3.0 1:4.3 + __satfractqqudq@GCC_4.3.0 1:4.3 + __satfractqquha@GCC_4.3.0 1:4.3 + __satfractqquhq@GCC_4.3.0 1:4.3 + __satfractqquqq@GCC_4.3.0 1:4.3 + __satfractqqusa@GCC_4.3.0 1:4.3 + __satfractqqusq@GCC_4.3.0 1:4.3 + __satfractsada2@GCC_4.3.0 1:4.3 + __satfractsadq@GCC_4.3.0 1:4.3 + __satfractsaha2@GCC_4.3.0 1:4.3 + __satfractsahq@GCC_4.3.0 1:4.3 + __satfractsaqq@GCC_4.3.0 1:4.3 + __satfractsasq@GCC_4.3.0 1:4.3 + __satfractsauda@GCC_4.3.0 1:4.3 + __satfractsaudq@GCC_4.3.0 1:4.3 + __satfractsauha@GCC_4.3.0 1:4.3 + __satfractsauhq@GCC_4.3.0 1:4.3 + __satfractsauqq@GCC_4.3.0 1:4.3 + __satfractsausa@GCC_4.3.0 1:4.3 + __satfractsausq@GCC_4.3.0 1:4.3 + __satfractsfda@GCC_4.3.0 1:4.3 + __satfractsfdq@GCC_4.3.0 1:4.3 + __satfractsfha@GCC_4.3.0 1:4.3 + __satfractsfhq@GCC_4.3.0 1:4.3 + __satfractsfqq@GCC_4.3.0 1:4.3 + __satfractsfsa@GCC_4.3.0 1:4.3 + __satfractsfsq@GCC_4.3.0 1:4.3 + __satfractsfuda@GCC_4.3.0 1:4.3 + __satfractsfudq@GCC_4.3.0 1:4.3 + __satfractsfuha@GCC_4.3.0 1:4.3 + __satfractsfuhq@GCC_4.3.0 1:4.3 + __satfractsfuqq@GCC_4.3.0 1:4.3 + __satfractsfusa@GCC_4.3.0 1:4.3 + __satfractsfusq@GCC_4.3.0 1:4.3 + __satfractsida@GCC_4.3.0 1:4.3 + __satfractsidq@GCC_4.3.0 1:4.3 + __satfractsiha@GCC_4.3.0 1:4.3 + __satfractsihq@GCC_4.3.0 1:4.3 + __satfractsiqq@GCC_4.3.0 1:4.3 + __satfractsisa@GCC_4.3.0 1:4.3 + __satfractsisq@GCC_4.3.0 1:4.3 + __satfractsiuda@GCC_4.3.0 1:4.3 + __satfractsiudq@GCC_4.3.0 1:4.3 + __satfractsiuha@GCC_4.3.0 1:4.3 + __satfractsiuhq@GCC_4.3.0 1:4.3 + __satfractsiuqq@GCC_4.3.0 1:4.3 + __satfractsiusa@GCC_4.3.0 1:4.3 + __satfractsiusq@GCC_4.3.0 1:4.3 + __satfractsqda@GCC_4.3.0 1:4.3 + __satfractsqdq2@GCC_4.3.0 1:4.3 + __satfractsqha@GCC_4.3.0 1:4.3 + __satfractsqhq2@GCC_4.3.0 1:4.3 + __satfractsqqq2@GCC_4.3.0 1:4.3 + __satfractsqsa@GCC_4.3.0 1:4.3 + __satfractsquda@GCC_4.3.0 1:4.3 + __satfractsqudq@GCC_4.3.0 1:4.3 + __satfractsquha@GCC_4.3.0 1:4.3 + __satfractsquhq@GCC_4.3.0 1:4.3 + __satfractsquqq@GCC_4.3.0 1:4.3 + __satfractsqusa@GCC_4.3.0 1:4.3 + __satfractsqusq@GCC_4.3.0 1:4.3 + __satfractudada@GCC_4.3.0 1:4.3 + __satfractudadq@GCC_4.3.0 1:4.3 + __satfractudaha@GCC_4.3.0 1:4.3 + __satfractudahq@GCC_4.3.0 1:4.3 + __satfractudaqq@GCC_4.3.0 1:4.3 + __satfractudasa@GCC_4.3.0 1:4.3 + __satfractudasq@GCC_4.3.0 1:4.3 + __satfractudaudq@GCC_4.3.0 1:4.3 + __satfractudauha2@GCC_4.3.0 1:4.3 + __satfractudauhq@GCC_4.3.0 1:4.3 + __satfractudauqq@GCC_4.3.0 1:4.3 + __satfractudausa2@GCC_4.3.0 1:4.3 + __satfractudausq@GCC_4.3.0 1:4.3 + __satfractudqda@GCC_4.3.0 1:4.3 + __satfractudqdq@GCC_4.3.0 1:4.3 + __satfractudqha@GCC_4.3.0 1:4.3 + __satfractudqhq@GCC_4.3.0 1:4.3 + __satfractudqqq@GCC_4.3.0 1:4.3 + __satfractudqsa@GCC_4.3.0 1:4.3 + __satfractudqsq@GCC_4.3.0 1:4.3 + __satfractudquda@GCC_4.3.0 1:4.3 + __satfractudquha@GCC_4.3.0 1:4.3 + __satfractudquhq2@GCC_4.3.0 1:4.3 + __satfractudquqq2@GCC_4.3.0 1:4.3 + __satfractudqusa@GCC_4.3.0 1:4.3 + __satfractudqusq2@GCC_4.3.0 1:4.3 + __satfractuhada@GCC_4.3.0 1:4.3 + __satfractuhadq@GCC_4.3.0 1:4.3 + __satfractuhaha@GCC_4.3.0 1:4.3 + __satfractuhahq@GCC_4.3.0 1:4.3 + __satfractuhaqq@GCC_4.3.0 1:4.3 + __satfractuhasa@GCC_4.3.0 1:4.3 + __satfractuhasq@GCC_4.3.0 1:4.3 + __satfractuhauda2@GCC_4.3.0 1:4.3 + __satfractuhaudq@GCC_4.3.0 1:4.3 + __satfractuhauhq@GCC_4.3.0 1:4.3 + __satfractuhauqq@GCC_4.3.0 1:4.3 + __satfractuhausa2@GCC_4.3.0 1:4.3 + __satfractuhausq@GCC_4.3.0 1:4.3 + __satfractuhqda@GCC_4.3.0 1:4.3 + __satfractuhqdq@GCC_4.3.0 1:4.3 + __satfractuhqha@GCC_4.3.0 1:4.3 + __satfractuhqhq@GCC_4.3.0 1:4.3 + __satfractuhqqq@GCC_4.3.0 1:4.3 + __satfractuhqsa@GCC_4.3.0 1:4.3 + __satfractuhqsq@GCC_4.3.0 1:4.3 + __satfractuhquda@GCC_4.3.0 1:4.3 + __satfractuhqudq2@GCC_4.3.0 1:4.3 + __satfractuhquha@GCC_4.3.0 1:4.3 + __satfractuhquqq2@GCC_4.3.0 1:4.3 + __satfractuhqusa@GCC_4.3.0 1:4.3 + __satfractuhqusq2@GCC_4.3.0 1:4.3 + __satfractunsdida@GCC_4.3.0 1:4.3 + __satfractunsdidq@GCC_4.3.0 1:4.3 + __satfractunsdiha@GCC_4.3.0 1:4.3 + __satfractunsdihq@GCC_4.3.0 1:4.3 + __satfractunsdiqq@GCC_4.3.0 1:4.3 + __satfractunsdisa@GCC_4.3.0 1:4.3 + __satfractunsdisq@GCC_4.3.0 1:4.3 + __satfractunsdiuda@GCC_4.3.0 1:4.3 + __satfractunsdiudq@GCC_4.3.0 1:4.3 + __satfractunsdiuha@GCC_4.3.0 1:4.3 + __satfractunsdiuhq@GCC_4.3.0 1:4.3 + __satfractunsdiuqq@GCC_4.3.0 1:4.3 + __satfractunsdiusa@GCC_4.3.0 1:4.3 + __satfractunsdiusq@GCC_4.3.0 1:4.3 + __satfractunshida@GCC_4.3.0 1:4.3 + __satfractunshidq@GCC_4.3.0 1:4.3 + __satfractunshiha@GCC_4.3.0 1:4.3 + __satfractunshihq@GCC_4.3.0 1:4.3 + __satfractunshiqq@GCC_4.3.0 1:4.3 + __satfractunshisa@GCC_4.3.0 1:4.3 + __satfractunshisq@GCC_4.3.0 1:4.3 + __satfractunshiuda@GCC_4.3.0 1:4.3 + __satfractunshiudq@GCC_4.3.0 1:4.3 + __satfractunshiuha@GCC_4.3.0 1:4.3 + __satfractunshiuhq@GCC_4.3.0 1:4.3 + __satfractunshiuqq@GCC_4.3.0 1:4.3 + __satfractunshiusa@GCC_4.3.0 1:4.3 + __satfractunshiusq@GCC_4.3.0 1:4.3 + __satfractunsqida@GCC_4.3.0 1:4.3 + __satfractunsqidq@GCC_4.3.0 1:4.3 + __satfractunsqiha@GCC_4.3.0 1:4.3 + __satfractunsqihq@GCC_4.3.0 1:4.3 + __satfractunsqiqq@GCC_4.3.0 1:4.3 + __satfractunsqisa@GCC_4.3.0 1:4.3 + __satfractunsqisq@GCC_4.3.0 1:4.3 + __satfractunsqiuda@GCC_4.3.0 1:4.3 + __satfractunsqiudq@GCC_4.3.0 1:4.3 + __satfractunsqiuha@GCC_4.3.0 1:4.3 + __satfractunsqiuhq@GCC_4.3.0 1:4.3 + __satfractunsqiuqq@GCC_4.3.0 1:4.3 + __satfractunsqiusa@GCC_4.3.0 1:4.3 + __satfractunsqiusq@GCC_4.3.0 1:4.3 + __satfractunssida@GCC_4.3.0 1:4.3 + __satfractunssidq@GCC_4.3.0 1:4.3 + __satfractunssiha@GCC_4.3.0 1:4.3 + __satfractunssihq@GCC_4.3.0 1:4.3 + __satfractunssiqq@GCC_4.3.0 1:4.3 + __satfractunssisa@GCC_4.3.0 1:4.3 + __satfractunssisq@GCC_4.3.0 1:4.3 + __satfractunssiuda@GCC_4.3.0 1:4.3 + __satfractunssiudq@GCC_4.3.0 1:4.3 + __satfractunssiuha@GCC_4.3.0 1:4.3 + __satfractunssiuhq@GCC_4.3.0 1:4.3 + __satfractunssiuqq@GCC_4.3.0 1:4.3 + __satfractunssiusa@GCC_4.3.0 1:4.3 + __satfractunssiusq@GCC_4.3.0 1:4.3 + __satfractuqqda@GCC_4.3.0 1:4.3 + __satfractuqqdq@GCC_4.3.0 1:4.3 + __satfractuqqha@GCC_4.3.0 1:4.3 + __satfractuqqhq@GCC_4.3.0 1:4.3 + __satfractuqqqq@GCC_4.3.0 1:4.3 + __satfractuqqsa@GCC_4.3.0 1:4.3 + __satfractuqqsq@GCC_4.3.0 1:4.3 + __satfractuqquda@GCC_4.3.0 1:4.3 + __satfractuqqudq2@GCC_4.3.0 1:4.3 + __satfractuqquha@GCC_4.3.0 1:4.3 + __satfractuqquhq2@GCC_4.3.0 1:4.3 + __satfractuqqusa@GCC_4.3.0 1:4.3 + __satfractuqqusq2@GCC_4.3.0 1:4.3 + __satfractusada@GCC_4.3.0 1:4.3 + __satfractusadq@GCC_4.3.0 1:4.3 + __satfractusaha@GCC_4.3.0 1:4.3 + __satfractusahq@GCC_4.3.0 1:4.3 + __satfractusaqq@GCC_4.3.0 1:4.3 + __satfractusasa@GCC_4.3.0 1:4.3 + __satfractusasq@GCC_4.3.0 1:4.3 + __satfractusauda2@GCC_4.3.0 1:4.3 + __satfractusaudq@GCC_4.3.0 1:4.3 + __satfractusauha2@GCC_4.3.0 1:4.3 + __satfractusauhq@GCC_4.3.0 1:4.3 + __satfractusauqq@GCC_4.3.0 1:4.3 + __satfractusausq@GCC_4.3.0 1:4.3 + __satfractusqda@GCC_4.3.0 1:4.3 + __satfractusqdq@GCC_4.3.0 1:4.3 + __satfractusqha@GCC_4.3.0 1:4.3 + __satfractusqhq@GCC_4.3.0 1:4.3 + __satfractusqqq@GCC_4.3.0 1:4.3 + __satfractusqsa@GCC_4.3.0 1:4.3 + __satfractusqsq@GCC_4.3.0 1:4.3 + __satfractusquda@GCC_4.3.0 1:4.3 + __satfractusqudq2@GCC_4.3.0 1:4.3 + __satfractusquha@GCC_4.3.0 1:4.3 + __satfractusquhq2@GCC_4.3.0 1:4.3 + __satfractusquqq2@GCC_4.3.0 1:4.3 + __satfractusqusa@GCC_4.3.0 1:4.3 + __ssaddda3@GCC_4.3.0 1:4.3 + __ssadddq3@GCC_4.3.0 1:4.3 + __ssaddha3@GCC_4.3.0 1:4.3 + __ssaddhq3@GCC_4.3.0 1:4.3 + __ssaddqq3@GCC_4.3.0 1:4.3 + __ssaddsa3@GCC_4.3.0 1:4.3 + __ssaddsq3@GCC_4.3.0 1:4.3 + __ssashlda3@GCC_4.3.0 1:4.3 + __ssashldq3@GCC_4.3.0 1:4.3 + __ssashlha3@GCC_4.3.0 1:4.3 + __ssashlhq3@GCC_4.3.0 1:4.3 + __ssashlqq3@GCC_4.3.0 1:4.3 + __ssashlsa3@GCC_4.3.0 1:4.3 + __ssashlsq3@GCC_4.3.0 1:4.3 + __ssdivda3@GCC_4.3.0 1:4.3 + __ssdivdq3@GCC_4.3.0 1:4.3 + __ssdivha3@GCC_4.3.0 1:4.3 + __ssdivhq3@GCC_4.3.0 1:4.3 + __ssdivqq3@GCC_4.3.0 1:4.3 + __ssdivsa3@GCC_4.3.0 1:4.3 + __ssdivsq3@GCC_4.3.0 1:4.3 + __ssmulda3@GCC_4.3.0 1:4.3 + __ssmuldq3@GCC_4.3.0 1:4.3 + __ssmulha3@GCC_4.3.0 1:4.3 + __ssmulhq3@GCC_4.3.0 1:4.3 + __ssmulqq3@GCC_4.3.0 1:4.3 + __ssmulsa3@GCC_4.3.0 1:4.3 + __ssmulsq3@GCC_4.3.0 1:4.3 + __ssnegda2@GCC_4.3.0 1:4.3 + __ssnegdq2@GCC_4.3.0 1:4.3 + __ssnegha2@GCC_4.3.0 1:4.3 + __ssneghq2@GCC_4.3.0 1:4.3 + __ssnegqq2@GCC_4.3.0 1:4.3 + __ssnegsa2@GCC_4.3.0 1:4.3 + __ssnegsq2@GCC_4.3.0 1:4.3 + __sssubda3@GCC_4.3.0 1:4.3 + __sssubdq3@GCC_4.3.0 1:4.3 + __sssubha3@GCC_4.3.0 1:4.3 + __sssubhq3@GCC_4.3.0 1:4.3 + __sssubqq3@GCC_4.3.0 1:4.3 + __sssubsa3@GCC_4.3.0 1:4.3 + __sssubsq3@GCC_4.3.0 1:4.3 + __subda3@GCC_4.3.0 1:4.3 + __subdf3@GCC_3.0 1:4.1.1 + __subdq3@GCC_4.3.0 1:4.3 + __subha3@GCC_4.3.0 1:4.3 + __subhq3@GCC_4.3.0 1:4.3 + __subqq3@GCC_4.3.0 1:4.3 + __subsa3@GCC_4.3.0 1:4.3 + __subsf3@GCC_3.0 1:4.1.1 + __subsq3@GCC_4.3.0 1:4.3 + __subuda3@GCC_4.3.0 1:4.3 + __subudq3@GCC_4.3.0 1:4.3 + __subuha3@GCC_4.3.0 1:4.3 + __subuhq3@GCC_4.3.0 1:4.3 + __subuqq3@GCC_4.3.0 1:4.3 + __subusa3@GCC_4.3.0 1:4.3 + __subusq3@GCC_4.3.0 1:4.3 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __sync_add_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_add_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_and_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_bool_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_add_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_and_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_nand_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_or_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_sub_4@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_1@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_2@GCC_4.4.0 1:4.4.0 + __sync_fetch_and_xor_4@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_1@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_2@GCC_4.4.0 1:4.4.0 + __sync_lock_test_and_set_4@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_nand_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_or_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_sub_and_fetch_4@GCC_4.4.0 1:4.4.0 + __sync_synchronize@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_1@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_2@GCC_4.4.0 1:4.4.0 + __sync_val_compare_and_swap_4@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_1@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_2@GCC_4.4.0 1:4.4.0 + __sync_xor_and_fetch_4@GCC_4.4.0 1:4.4.0 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __udivuda3@GCC_4.3.0 1:4.3 + __udivudq3@GCC_4.3.0 1:4.3 + __udivuha3@GCC_4.3.0 1:4.3 + __udivuhq3@GCC_4.3.0 1:4.3 + __udivuqq3@GCC_4.3.0 1:4.3 + __udivusa3@GCC_4.3.0 1:4.3 + __udivusq3@GCC_4.3.0 1:4.3 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 + __usadduda3@GCC_4.3.0 1:4.3 + __usaddudq3@GCC_4.3.0 1:4.3 + __usadduha3@GCC_4.3.0 1:4.3 + __usadduhq3@GCC_4.3.0 1:4.3 + __usadduqq3@GCC_4.3.0 1:4.3 + __usaddusa3@GCC_4.3.0 1:4.3 + __usaddusq3@GCC_4.3.0 1:4.3 + __usashluda3@GCC_4.3.0 1:4.3 + __usashludq3@GCC_4.3.0 1:4.3 + __usashluha3@GCC_4.3.0 1:4.3 + __usashluhq3@GCC_4.3.0 1:4.3 + __usashluqq3@GCC_4.3.0 1:4.3 + __usashlusa3@GCC_4.3.0 1:4.3 + __usashlusq3@GCC_4.3.0 1:4.3 + __usdivuda3@GCC_4.3.0 1:4.3 + __usdivudq3@GCC_4.3.0 1:4.3 + __usdivuha3@GCC_4.3.0 1:4.3 + __usdivuhq3@GCC_4.3.0 1:4.3 + __usdivuqq3@GCC_4.3.0 1:4.3 + __usdivusa3@GCC_4.3.0 1:4.3 + __usdivusq3@GCC_4.3.0 1:4.3 + __usmuluda3@GCC_4.3.0 1:4.3 + __usmuludq3@GCC_4.3.0 1:4.3 + __usmuluha3@GCC_4.3.0 1:4.3 + __usmuluhq3@GCC_4.3.0 1:4.3 + __usmuluqq3@GCC_4.3.0 1:4.3 + __usmulusa3@GCC_4.3.0 1:4.3 + __usmulusq3@GCC_4.3.0 1:4.3 + __usneguda2@GCC_4.3.0 1:4.3 + __usnegudq2@GCC_4.3.0 1:4.3 + __usneguha2@GCC_4.3.0 1:4.3 + __usneguhq2@GCC_4.3.0 1:4.3 + __usneguqq2@GCC_4.3.0 1:4.3 + __usnegusa2@GCC_4.3.0 1:4.3 + __usnegusq2@GCC_4.3.0 1:4.3 + __ussubuda3@GCC_4.3.0 1:4.3 + __ussubudq3@GCC_4.3.0 1:4.3 + __ussubuha3@GCC_4.3.0 1:4.3 + __ussubuhq3@GCC_4.3.0 1:4.3 + __ussubuqq3@GCC_4.3.0 1:4.3 + __ussubusa3@GCC_4.3.0 1:4.3 + __ussubusq3@GCC_4.3.0 1:4.3 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.powerpc +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.powerpc @@ -0,0 +1,139 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3.4@GCC_3.3.4 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __adddf3@GCC_3.0 1:4.1.1 + __addsf3@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdf3@GCC_3.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divsf3@GCC_3.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __eqdf2@GCC_3.0 1:4.1.1 + __eqsf2@GCC_3.0 1:4.1.1 + __extendsfdf2@GCC_3.0 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixdfsi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixsfsi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatsidf@GCC_3.0 1:4.1.1 + __floatsisf@GCC_3.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __floatunsidf@GCC_4.2.0 1:4.2.1 + __floatunsisf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __gcc_qadd@GCC_4.1.0 1:4.1.1 + __gcc_qdiv@GCC_4.1.0 1:4.1.1 + __gcc_qmul@GCC_4.1.0 1:4.1.1 + __gcc_qsub@GCC_4.1.0 1:4.1.1 + __gedf2@GCC_3.0 1:4.1.1 + __gesf2@GCC_3.0 1:4.1.1 + __gtdf2@GCC_3.0 1:4.1.1 + __gtsf2@GCC_3.0 1:4.1.1 + __ledf2@GCC_3.0 1:4.1.1 + __lesf2@GCC_3.0 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __ltdf2@GCC_3.0 1:4.1.1 + __ltsf2@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldf3@GCC_3.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __mulsf3@GCC_3.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __nedf2@GCC_3.0 1:4.1.1 + __negdf2@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negsf2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __nesf2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subdf3@GCC_3.0 1:4.1.1 + __subsf3@GCC_3.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __trampoline_setup@GCC_3.4.2 1:4.1.1 + __truncdfsf2@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 + __unorddf2@GCC_3.3.4 1:4.1.1 + __unordsf2@GCC_3.3.4 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.s390 +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.s390 @@ -0,0 +1,101 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.1.0@GCC_4.1.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_4.1.0 1:4.1.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_4.1.0 1:4.1.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_4.1.0 1:4.1.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_4.1.0 1:4.1.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_4.1.0 1:4.1.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_4.1.0 1:4.1.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/libgcc1.symbols.sparc +++ gcc-4.4-4.4.7/debian/libgcc1.symbols.sparc @@ -0,0 +1,102 @@ +libgcc_s.so.1 libgcc1 #MINVER# + GCC_3.0@GCC_3.0 1:4.1.1 + GCC_3.3.1@GCC_3.3.1 1:4.1.1 + GCC_3.3@GCC_3.3 1:4.1.1 + GCC_3.4.2@GCC_3.4.2 1:4.1.1 + GCC_3.4@GCC_3.4 1:4.1.1 + GCC_4.0.0@GCC_4.0.0 1:4.1.1 + GCC_4.2.0@GCC_4.2.0 1:4.1.1 + GCC_4.3.0@GCC_4.3.0 1:4.3 + GCC_LDBL_3.0@GCC_LDBL_3.0 1:4.2.1 + GCC_LDBL_4.0.0@GCC_LDBL_4.0.0 1:4.2.1 + GLIBC_2.0@GLIBC_2.0 1:4.1.1 + _Unwind_Backtrace@GCC_3.3 1:4.1.1 + _Unwind_DeleteException@GCC_3.0 1:4.1.1 + _Unwind_FindEnclosingFunction@GCC_3.3 1:4.1.1 + _Unwind_Find_FDE@GCC_3.0 1:4.1.1 + _Unwind_ForcedUnwind@GCC_3.0 1:4.1.1 + _Unwind_GetCFA@GCC_3.3 1:4.1.1 + _Unwind_GetDataRelBase@GCC_3.0 1:4.1.1 + _Unwind_GetGR@GCC_3.0 1:4.1.1 + _Unwind_GetIP@GCC_3.0 1:4.1.1 + _Unwind_GetIPInfo@GCC_4.2.0 1:4.1.1 + _Unwind_GetLanguageSpecificData@GCC_3.0 1:4.1.1 + _Unwind_GetRegionStart@GCC_3.0 1:4.1.1 + _Unwind_GetTextRelBase@GCC_3.0 1:4.1.1 + _Unwind_RaiseException@GCC_3.0 1:4.1.1 + _Unwind_Resume@GCC_3.0 1:4.1.1 + _Unwind_Resume_or_Rethrow@GCC_3.3 1:4.1.1 + _Unwind_SetGR@GCC_3.0 1:4.1.1 + _Unwind_SetIP@GCC_3.0 1:4.1.1 + __absvdi2@GCC_3.0 1:4.1.1 + __absvsi2@GCC_3.0 1:4.1.1 + __addvdi3@GCC_3.0 1:4.1.1 + __addvsi3@GCC_3.0 1:4.1.1 + __ashldi3@GCC_3.0 1:4.1.1 + __ashrdi3@GCC_3.0 1:4.1.1 + __bswapdi2@GCC_4.3.0 1:4.3 + __bswapsi2@GCC_4.3.0 1:4.3 + __clear_cache@GCC_3.0 1:4.1.1 + __clzdi2@GCC_3.4 1:4.1.1 + __clzsi2@GCC_3.4 1:4.1.1 + __cmpdi2@GCC_3.0 1:4.1.1 + __ctzdi2@GCC_3.4 1:4.1.1 + __ctzsi2@GCC_3.4 1:4.1.1 + __deregister_frame@GLIBC_2.0 1:4.1.1 + __deregister_frame_info@GLIBC_2.0 1:4.1.1 + __deregister_frame_info_bases@GCC_3.0 1:4.1.1 + __divdc3@GCC_4.0.0 1:4.1.1 + __divdi3@GLIBC_2.0 1:4.1.1 + __divsc3@GCC_4.0.0 1:4.1.1 + __divtc3@GCC_LDBL_4.0.0 1:4.2.1 + __emutls_get_address@GCC_4.3.0 1:4.3 + __emutls_register_common@GCC_4.3.0 1:4.3 + __enable_execute_stack@GCC_3.4.2 1:4.1.1 + __ffsdi2@GCC_3.0 1:4.1.1 + __ffssi2@GCC_4.3.0 1:4.3 + __fixdfdi@GCC_3.0 1:4.1.1 + __fixsfdi@GCC_3.0 1:4.1.1 + __fixtfdi@GCC_LDBL_3.0 1:4.2.1 + __fixunsdfdi@GCC_3.0 1:4.1.1 + __fixunsdfsi@GCC_3.0 1:4.1.1 + __fixunssfdi@GCC_3.0 1:4.1.1 + __fixunssfsi@GCC_3.0 1:4.1.1 + __fixunstfdi@GCC_LDBL_3.0 1:4.2.1 + __floatdidf@GCC_3.0 1:4.1.1 + __floatdisf@GCC_3.0 1:4.1.1 + __floatditf@GCC_LDBL_3.0 1:4.2.1 + __floatundidf@GCC_4.2.0 1:4.2.1 + __floatundisf@GCC_4.2.0 1:4.2.1 + __floatunditf@GCC_4.2.0 1:4.2.1 + __frame_state_for@GLIBC_2.0 1:4.1.1 + __gcc_personality_v0@GCC_3.3.1 1:4.1.1 + __lshrdi3@GCC_3.0 1:4.1.1 + __moddi3@GLIBC_2.0 1:4.1.1 + __muldc3@GCC_4.0.0 1:4.1.1 + __muldi3@GCC_3.0 1:4.1.1 + __mulsc3@GCC_4.0.0 1:4.1.1 + __multc3@GCC_LDBL_4.0.0 1:4.2.1 + __mulvdi3@GCC_3.0 1:4.1.1 + __mulvsi3@GCC_3.0 1:4.1.1 + __negdi2@GCC_3.0 1:4.1.1 + __negvdi2@GCC_3.0 1:4.1.1 + __negvsi2@GCC_3.0 1:4.1.1 + __paritydi2@GCC_3.4 1:4.1.1 + __paritysi2@GCC_3.4 1:4.1.1 + __popcountdi2@GCC_3.4 1:4.1.1 + __popcountsi2@GCC_3.4 1:4.1.1 + __powidf2@GCC_4.0.0 1:4.1.1 + __powisf2@GCC_4.0.0 1:4.1.1 + __powitf2@GCC_LDBL_4.0.0 1:4.2.1 + __register_frame@GLIBC_2.0 1:4.1.1 + __register_frame_info@GLIBC_2.0 1:4.1.1 + __register_frame_info_bases@GCC_3.0 1:4.1.1 + __register_frame_info_table@GLIBC_2.0 1:4.1.1 + __register_frame_info_table_bases@GCC_3.0 1:4.1.1 + __register_frame_table@GLIBC_2.0 1:4.1.1 + __subvdi3@GCC_3.0 1:4.1.1 + __subvsi3@GCC_3.0 1:4.1.1 + __ucmpdi2@GCC_3.0 1:4.1.1 + __udivdi3@GLIBC_2.0 1:4.1.1 + __udivmoddi4@GCC_3.0 1:4.1.1 + __umoddi3@GLIBC_2.0 1:4.1.1 --- gcc-4.4-4.4.7.orig/debian/libgcc2.symbols.m68k +++ gcc-4.4-4.4.7/debian/libgcc2.symbols.m68k @@ -0,0 +1,157 @@ +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 + 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 + __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 --- gcc-4.4-4.4.7.orig/debian/libgcc4.symbols.hppa +++ gcc-4.4-4.4.7/debian/libgcc4.symbols.hppa @@ -0,0 +1,93 @@ +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 + 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 + __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-4.4-4.4.7.orig/debian/libgccLC.postinst +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/libgcj-common.postinst +++ gcc-4.4-4.4.7/debian/libgcj-common.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcj-common + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf $docdir + ln -s gcj-@BV@-base $docdir + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/libgcj-common.preinst +++ gcc-4.4-4.4.7/debian/libgcj-common.preinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + upgrade|install) + if [ -n "$2" ] && [ -h /usr/share/doc/libgcj-common ] \ + && dpkg --compare-versions "$2" lt 1:4.0.2-10 + then + rm -f /usr/share/doc/libgcj-common + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/libgcj-doc.doc-base +++ gcc-4.4-4.4.7/debian/libgcj-doc.doc-base @@ -0,0 +1,10 @@ +Document: libgcj-doc +Title: The GNU LibGCJ Classpath library +Author: Various +Abstract: Autogenerated documentation describing the libgcj + library (GCC 4.4), based on the classpath library. +Section: Programming/Java + +Format: html +Index: /usr/share/doc/gcj-4.4-base/api/index.html +Files: /usr/share/doc/gcj-4.4-base/api/*.html --- gcc-4.4-4.4.7.orig/debian/libgcjGCJ-awt.overrides +++ gcc-4.4-4.4.7/debian/libgcjGCJ-awt.overrides @@ -0,0 +1,2 @@ +# pick up the exact version, in case another gcj version is installed +libgcj@GCJ@-awt binary: binary-or-shlib-defines-rpath --- gcc-4.4-4.4.7.orig/debian/libgcjGCJ-dev.overrides +++ gcc-4.4-4.4.7/debian/libgcjGCJ-dev.overrides @@ -0,0 +1 @@ +libgcj@GCJ@-dev binary: library-not-linked-against-libc --- gcc-4.4-4.4.7.orig/debian/libgcjGCJ.overrides +++ gcc-4.4-4.4.7/debian/libgcjGCJ.overrides @@ -0,0 +1,9 @@ +# pick up the exact version, in case another gcj version is installed +libgcj@GCJ@ binary: binary-or-shlib-defines-rpath + +# intended +libgcj@GCJ@ binary: unused-shlib-entry-in-control-file +libgcj@GCJ@ binary: shlibs-declares-dependency-on-other-package + +# keep patched ltdl copy +libgcj@GCJ@ binary: embedded-library --- gcc-4.4-4.4.7.orig/debian/libgcjLGCJ.postinst +++ gcc-4.4-4.4.7/debian/libgcjLGCJ.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + docdir=/usr/share/doc/libgcj@GCJ@ + if [ -d $docdir ] && [ ! -h $docdir ]; then + rm -rf /usr/share/doc/libgcj@GCJ@ + ln -s gcj-@BV@-base /usr/share/doc/libgcj@GCJ@ + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/libgcjLGCJ.postrm +++ gcc-4.4-4.4.7/debian/libgcjLGCJ.postrm @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + remove|purge) + # only purge if no other library is installed. + if [ -z "$(ls /usr/lib/libgcj.so.@GCJ@* 2>/dev/null)" ]; then + rm -f /var/lib/gcj-@BV@/classmap.db + rmdir --ignore-fail-on-non-empty /var/lib/gcj-@BV@ 2>/dev/null || true + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.10 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.10 @@ -0,0 +1,96 @@ + __iso_c_binding_c_f_pointer_c10@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r10@GFORTRAN_1.0 4.3 + _gfortran_arandom_r10@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_10@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r10@GFORTRAN_1.1 4.4.0 + _gfortran_exponent_r10@GFORTRAN_1.0 4.3 + _gfortran_fraction_r10@GFORTRAN_1.0 4.3 + _gfortran_matmul_c10@GFORTRAN_1.0 4.3 + _gfortran_matmul_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_maxval_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_minval_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_mminval_r10@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c10@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r10@GFORTRAN_1.0 4.3 + _gfortran_msum_c10@GFORTRAN_1.0 4.3 + _gfortran_msum_r10@GFORTRAN_1.0 4.3 + _gfortran_nearest_r10@GFORTRAN_1.0 4.3 + _gfortran_pow_c10_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c10_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r10_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c10@GFORTRAN_1.0 4.3 + _gfortran_product_r10@GFORTRAN_1.0 4.3 + _gfortran_random_r10@GFORTRAN_1.0 4.3 + _gfortran_reshape_c10@GFORTRAN_1.0 4.3 + _gfortran_reshape_r10@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r10@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r10@GFORTRAN_1.0 4.3 + _gfortran_sminval_r10@GFORTRAN_1.0 4.3 + _gfortran_spacing_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_10@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_10@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c10@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r10@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r10@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c10@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r10@GFORTRAN_1.0 4.3 + _gfortran_ssum_c10@GFORTRAN_1.0 4.3 + _gfortran_ssum_r10@GFORTRAN_1.0 4.3 + _gfortran_sum_c10@GFORTRAN_1.0 4.3 + _gfortran_sum_r10@GFORTRAN_1.0 4.3 + _gfortran_transpose_c10@GFORTRAN_1.0 4.3 + _gfortran_transpose_r10@GFORTRAN_1.0 4.3 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.16 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.16 @@ -0,0 +1,178 @@ + __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3 + _gfortran_all_l16@GFORTRAN_1.0 4.3 + _gfortran_any_l16@GFORTRAN_1.0 4.3 + _gfortran_count_16_l@GFORTRAN_1.0 4.3 + _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16@GFORTRAN_1.0 4.3 + _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3 + _gfortran_ishftc16@GFORTRAN_1.0 4.3 + _gfortran_matmul_i16@GFORTRAN_1.0 4.3 + _gfortran_matmul_l16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxval_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minval_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminval_i16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_msum_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c10_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r10_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3 + _gfortran_product_i16@GFORTRAN_1.0 4.3 + _gfortran_reshape_16@GFORTRAN_1.0 4.3 + _gfortran_shape_16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r10@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminval_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_10@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_ssum_i16@GFORTRAN_1.0 4.3 + _gfortran_sum_i16@GFORTRAN_1.0 4.3 + _gfortran_transpose_i16@GFORTRAN_1.0 4.3 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.16.powerpc +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.16.powerpc @@ -0,0 +1,96 @@ + __iso_c_binding_c_f_pointer_c16@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r16@GFORTRAN_1.0 4.3 + _gfortran_arandom_r16@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_16@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r16@GFORTRAN_1.1 4.4.0 + _gfortran_exponent_r16@GFORTRAN_1.0 4.3 + _gfortran_fraction_r16@GFORTRAN_1.0 4.3 + _gfortran_matmul_c16@GFORTRAN_1.0 4.3 + _gfortran_matmul_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_maxval_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_minval_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_mminval_r16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r16@GFORTRAN_1.0 4.3 + _gfortran_msum_c16@GFORTRAN_1.0 4.3 + _gfortran_msum_r16@GFORTRAN_1.0 4.3 + _gfortran_nearest_r16@GFORTRAN_1.0 4.3 + _gfortran_pow_c16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r16_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c16@GFORTRAN_1.0 4.3 + _gfortran_product_r16@GFORTRAN_1.0 4.3 + _gfortran_random_r16@GFORTRAN_1.0 4.3 + _gfortran_reshape_c16@GFORTRAN_1.0 4.3 + _gfortran_reshape_r16@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r16@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r16@GFORTRAN_1.0 4.3 + _gfortran_sminval_r16@GFORTRAN_1.0 4.3 + _gfortran_spacing_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_16@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_16@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c16@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r16@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r16@GFORTRAN_1.0 4.3 + _gfortran_ssum_c16@GFORTRAN_1.0 4.3 + _gfortran_ssum_r16@GFORTRAN_1.0 4.3 + _gfortran_sum_c16@GFORTRAN_1.0 4.3 + _gfortran_sum_r16@GFORTRAN_1.0 4.3 + _gfortran_transpose_c16@GFORTRAN_1.0 4.3 + _gfortran_transpose_r16@GFORTRAN_1.0 4.3 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.16.powerpc64 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.16.powerpc64 @@ -0,0 +1,178 @@ + __iso_c_binding_c_f_pointer_i16@GFORTRAN_1.0 4.3 + _gfortran_all_l16@GFORTRAN_1.0 4.3 + _gfortran_any_l16@GFORTRAN_1.0 4.3 + _gfortran_count_16_l@GFORTRAN_1.0 4.3 + _gfortran_cshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16@GFORTRAN_1.0 4.3 + _gfortran_cshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_16_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_16@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_16_char@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_16_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_16_char@GFORTRAN_1.0 4.3 + _gfortran_ishftc16@GFORTRAN_1.0 4.3 + _gfortran_matmul_i16@GFORTRAN_1.0 4.3 + _gfortran_matmul_l16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_maxval_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_minval_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_mminval_i16@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_msum_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i16_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r16_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r4_i16@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i16@GFORTRAN_1.0 4.3 + _gfortran_product_i16@GFORTRAN_1.0 4.3 + _gfortran_reshape_16@GFORTRAN_1.0 4.3 + _gfortran_shape_16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_16_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i16@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i16@GFORTRAN_1.0 4.3 + _gfortran_sminval_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_16@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_16_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i16@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i16@GFORTRAN_1.0 4.3 + _gfortran_ssum_i16@GFORTRAN_1.0 4.3 + _gfortran_sum_i16@GFORTRAN_1.0 4.3 + _gfortran_transpose_i16@GFORTRAN_1.0 4.3 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.64 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.64 @@ -0,0 +1,2 @@ + _gfortran_clz128@GFORTRAN_1.2 4.4.0 + _gfortran_ctz128@GFORTRAN_1.2 4.4.0 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.alpha +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.alpha @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" +#include "libgfortran3.symbols.16.powerpc64" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.amd64 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.amd64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.armel +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.armel @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.common +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.common @@ -0,0 +1,740 @@ + F2C_1.0@F2C_1.0 4.3 + GFORTRAN_1.0@GFORTRAN_1.0 4.3 + GFORTRAN_1.1@GFORTRAN_1.1 4.4.0 + GFORTRAN_1.2@GFORTRAN_1.2 4.4.0 + GFORTRAN_C99_1.0@GFORTRAN_C99_1.0 4.3 + __iso_c_binding_c_f_pointer@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_c4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_c8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_d0@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i1@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i2@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_i8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l1@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l2@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_l8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r4@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_r8@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_s0@GFORTRAN_1.0 4.3 + __iso_c_binding_c_f_pointer_u0@GFORTRAN_1.0 4.3 + _gfortran_abort@GFORTRAN_1.0 4.3 + _gfortran_access_func@GFORTRAN_1.0 4.3 + _gfortran_adjustl@GFORTRAN_1.0 4.3 + _gfortran_adjustl_char4@GFORTRAN_1.1 4.4.0 + _gfortran_adjustr@GFORTRAN_1.0 4.3 + _gfortran_adjustr_char4@GFORTRAN_1.1 4.4.0 + _gfortran_alarm_sub_i4@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_i8@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_int_i4@GFORTRAN_1.0 4.3 + _gfortran_alarm_sub_int_i8@GFORTRAN_1.0 4.3 + _gfortran_all_l1@GFORTRAN_1.0 4.3 + _gfortran_all_l2@GFORTRAN_1.0 4.3 + _gfortran_all_l4@GFORTRAN_1.0 4.3 + _gfortran_all_l8@GFORTRAN_1.0 4.3 + _gfortran_any_l1@GFORTRAN_1.0 4.3 + _gfortran_any_l2@GFORTRAN_1.0 4.3 + _gfortran_any_l4@GFORTRAN_1.0 4.3 + _gfortran_any_l8@GFORTRAN_1.0 4.3 + _gfortran_arandom_r4@GFORTRAN_1.0 4.3 + _gfortran_arandom_r8@GFORTRAN_1.0 4.3 + _gfortran_associated@GFORTRAN_1.0 4.3 + _gfortran_chdir_i4@GFORTRAN_1.0 4.3 + _gfortran_chdir_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_chdir_i8@GFORTRAN_1.0 4.3 + _gfortran_chdir_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_chmod_func@GFORTRAN_1.0 4.3 + _gfortran_chmod_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_chmod_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_compare_string@GFORTRAN_1.0 4.3 + _gfortran_compare_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_concat_string@GFORTRAN_1.0 4.3 + _gfortran_concat_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_convert_char1_to_char4@GFORTRAN_1.1 4.4.0 + _gfortran_convert_char4_to_char1@GFORTRAN_1.1 4.4.0 + _gfortran_count_1_l@GFORTRAN_1.0 4.3 + _gfortran_count_2_l@GFORTRAN_1.0 4.3 + _gfortran_count_4_l@GFORTRAN_1.0 4.3 + _gfortran_count_8_l@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_4@GFORTRAN_1.0 4.3 + _gfortran_cpu_time_8@GFORTRAN_1.0 4.3 + _gfortran_cshift0_1@GFORTRAN_1.0 4.3 + _gfortran_cshift0_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_1_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_2@GFORTRAN_1.0 4.3 + _gfortran_cshift0_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_2_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_4@GFORTRAN_1.0 4.3 + _gfortran_cshift0_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_4_char@GFORTRAN_1.0 4.3 + _gfortran_cshift0_8@GFORTRAN_1.0 4.3 + _gfortran_cshift0_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift0_8_char@GFORTRAN_1.0 4.3 + _gfortran_cshift1_4@GFORTRAN_1.0 4.3 + _gfortran_cshift1_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_4_char@GFORTRAN_1.0 4.3 + _gfortran_cshift1_8@GFORTRAN_1.0 4.3 + _gfortran_cshift1_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_cshift1_8_char@GFORTRAN_1.0 4.3 + _gfortran_ctime@GFORTRAN_1.0 4.3 + _gfortran_ctime_sub@GFORTRAN_1.0 4.3 + _gfortran_date_and_time@GFORTRAN_1.0 4.3 + _gfortran_dtime@GFORTRAN_1.0 4.3 + _gfortran_dtime_sub@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_1@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_1_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_2@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_2_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift0_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift0_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift1_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift1_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_1@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_1_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_2@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_2_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_2_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift2_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift2_8_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_4@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_4_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_4_char@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_8@GFORTRAN_1.0 4.3 + _gfortran_eoshift3_8_char4@GFORTRAN_1.1 4.4.0 + _gfortran_eoshift3_8_char@GFORTRAN_1.0 4.3 + _gfortran_erfc_scaled_r4@GFORTRAN_1.1 4.4.0 + _gfortran_erfc_scaled_r8@GFORTRAN_1.1 4.4.0 + _gfortran_etime@GFORTRAN_1.0 4.3 + _gfortran_etime_sub@GFORTRAN_1.0 4.3 + _gfortran_exit_i4@GFORTRAN_1.0 4.3 + _gfortran_exit_i8@GFORTRAN_1.0 4.3 + _gfortran_exponent_r4@GFORTRAN_1.0 4.3 + _gfortran_exponent_r8@GFORTRAN_1.0 4.3 + _gfortran_f2c_specific__abs_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__abs_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__acos_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__acosh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__aimag_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__aimag_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__aint_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__anint_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__asin_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__asinh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atan2_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atan_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__atanh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__conjg_4@F2C_1.0 4.3 + _gfortran_f2c_specific__conjg_8@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__cos_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__cosh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__dim_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__exp_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__log10_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__log_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__log_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__log_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__mod_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sign_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__sin_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sinh_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_c4@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_c8@F2C_1.0 4.3 + _gfortran_f2c_specific__sqrt_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__tan_r4@F2C_1.0 4.3 + _gfortran_f2c_specific__tanh_r4@F2C_1.0 4.3 + _gfortran_fdate@GFORTRAN_1.0 4.3 + _gfortran_fdate_sub@GFORTRAN_1.0 4.3 + _gfortran_fget@GFORTRAN_1.0 4.3 + _gfortran_fget_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fget_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fgetc_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_flush_i4@GFORTRAN_1.0 4.3 + _gfortran_flush_i8@GFORTRAN_1.0 4.3 + _gfortran_fnum_i4@GFORTRAN_1.0 4.3 + _gfortran_fnum_i8@GFORTRAN_1.0 4.3 + _gfortran_fput@GFORTRAN_1.0 4.3 + _gfortran_fput_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fput_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc@GFORTRAN_1.0 4.3 + _gfortran_fputc_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fputc_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_fraction_r4@GFORTRAN_1.0 4.3 + _gfortran_fraction_r8@GFORTRAN_1.0 4.3 + _gfortran_free@GFORTRAN_1.0 4.3 + _gfortran_fseek_sub@GFORTRAN_1.0 4.3 + _gfortran_fstat_i4@GFORTRAN_1.0 4.3 + _gfortran_fstat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_fstat_i8@GFORTRAN_1.0 4.3 + _gfortran_fstat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell@GFORTRAN_1.0 4.3 + _gfortran_ftell_i1_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i2_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_ftell_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_generate_error@GFORTRAN_1.0 4.3 + _gfortran_gerror@GFORTRAN_1.0 4.3 + _gfortran_get_command_argument_i4@GFORTRAN_1.0 4.3 + _gfortran_get_command_argument_i8@GFORTRAN_1.0 4.3 + _gfortran_get_command_i4@GFORTRAN_1.0 4.3 + _gfortran_get_command_i8@GFORTRAN_1.0 4.3 + _gfortran_get_environment_variable_i4@GFORTRAN_1.0 4.3 + _gfortran_get_environment_variable_i8@GFORTRAN_1.0 4.3 + _gfortran_getarg_i4@GFORTRAN_1.0 4.3 + _gfortran_getarg_i8@GFORTRAN_1.0 4.3 + _gfortran_getcwd@GFORTRAN_1.0 4.3 + _gfortran_getcwd_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_getcwd_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_getenv@GFORTRAN_1.0 4.3 + _gfortran_getgid@GFORTRAN_1.0 4.3 + _gfortran_getlog@GFORTRAN_1.0 4.3 + _gfortran_getpid@GFORTRAN_1.0 4.3 + _gfortran_getuid@GFORTRAN_1.0 4.3 + _gfortran_gmtime_i4@GFORTRAN_1.0 4.3 + _gfortran_gmtime_i8@GFORTRAN_1.0 4.3 + _gfortran_hostnm@GFORTRAN_1.0 4.3 + _gfortran_hostnm_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_hostnm_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_iargc@GFORTRAN_1.0 4.3 + _gfortran_idate_i4@GFORTRAN_1.0 4.3 + _gfortran_idate_i8@GFORTRAN_1.0 4.3 + _gfortran_ierrno_i4@GFORTRAN_1.0 4.3 + _gfortran_ierrno_i8@GFORTRAN_1.0 4.3 + _gfortran_internal_pack@GFORTRAN_1.0 4.3 + _gfortran_internal_unpack@GFORTRAN_1.0 4.3 + _gfortran_irand@GFORTRAN_1.0 4.3 + _gfortran_isatty_l4@GFORTRAN_1.0 4.3 + _gfortran_isatty_l8@GFORTRAN_1.0 4.3 + _gfortran_ishftc4@GFORTRAN_1.0 4.3 + _gfortran_ishftc8@GFORTRAN_1.0 4.3 + _gfortran_itime_i4@GFORTRAN_1.0 4.3 + _gfortran_itime_i8@GFORTRAN_1.0 4.3 + _gfortran_kill_i4@GFORTRAN_1.0 4.3 + _gfortran_kill_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_kill_i8@GFORTRAN_1.0 4.3 + _gfortran_kill_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_link_i4@GFORTRAN_1.0 4.3 + _gfortran_link_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_link_i8@GFORTRAN_1.0 4.3 + _gfortran_link_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_lstat_i4@GFORTRAN_1.0 4.3 + _gfortran_lstat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_lstat_i8@GFORTRAN_1.0 4.3 + _gfortran_lstat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_ltime_i4@GFORTRAN_1.0 4.3 + _gfortran_ltime_i8@GFORTRAN_1.0 4.3 + _gfortran_malloc@GFORTRAN_1.0 4.3 + _gfortran_matmul_c4@GFORTRAN_1.0 4.3 + _gfortran_matmul_c8@GFORTRAN_1.0 4.3 + _gfortran_matmul_i1@GFORTRAN_1.0 4.3 + _gfortran_matmul_i2@GFORTRAN_1.0 4.3 + _gfortran_matmul_i4@GFORTRAN_1.0 4.3 + _gfortran_matmul_i8@GFORTRAN_1.0 4.3 + _gfortran_matmul_l4@GFORTRAN_1.0 4.3 + _gfortran_matmul_l8@GFORTRAN_1.0 4.3 + _gfortran_matmul_r4@GFORTRAN_1.0 4.3 + _gfortran_matmul_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_maxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_maxval_i1@GFORTRAN_1.0 4.3 + _gfortran_maxval_i2@GFORTRAN_1.0 4.3 + _gfortran_maxval_i4@GFORTRAN_1.0 4.3 + _gfortran_maxval_i8@GFORTRAN_1.0 4.3 + _gfortran_maxval_r4@GFORTRAN_1.0 4.3 + _gfortran_maxval_r8@GFORTRAN_1.0 4.3 + _gfortran_mclock8@GFORTRAN_1.0 4.3 + _gfortran_mclock@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_minloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_minval_i1@GFORTRAN_1.0 4.3 + _gfortran_minval_i2@GFORTRAN_1.0 4.3 + _gfortran_minval_i4@GFORTRAN_1.0 4.3 + _gfortran_minval_i8@GFORTRAN_1.0 4.3 + _gfortran_minval_r4@GFORTRAN_1.0 4.3 + _gfortran_minval_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i1@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i2@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i4@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_i8@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r4@GFORTRAN_1.0 4.3 + _gfortran_mmaxval_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_mminloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_mminval_i1@GFORTRAN_1.0 4.3 + _gfortran_mminval_i2@GFORTRAN_1.0 4.3 + _gfortran_mminval_i4@GFORTRAN_1.0 4.3 + _gfortran_mminval_i8@GFORTRAN_1.0 4.3 + _gfortran_mminval_r4@GFORTRAN_1.0 4.3 + _gfortran_mminval_r8@GFORTRAN_1.0 4.3 + _gfortran_move_alloc@GFORTRAN_1.0 4.3 + _gfortran_move_alloc_c@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_c8@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i1@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i2@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_i8@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r4@GFORTRAN_1.0 4.3 + _gfortran_mproduct_r8@GFORTRAN_1.0 4.3 + _gfortran_msum_c4@GFORTRAN_1.0 4.3 + _gfortran_msum_c8@GFORTRAN_1.0 4.3 + _gfortran_msum_i1@GFORTRAN_1.0 4.3 + _gfortran_msum_i2@GFORTRAN_1.0 4.3 + _gfortran_msum_i4@GFORTRAN_1.0 4.3 + _gfortran_msum_i8@GFORTRAN_1.0 4.3 + _gfortran_msum_r4@GFORTRAN_1.0 4.3 + _gfortran_msum_r8@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i1@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i2@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i4@GFORTRAN_1.0 4.3 + _gfortran_mvbits_i8@GFORTRAN_1.0 4.3 + _gfortran_nearest_r4@GFORTRAN_1.0 4.3 + _gfortran_nearest_r8@GFORTRAN_1.0 4.3 + _gfortran_os_error@GFORTRAN_1.0 4.3 + _gfortran_pack@GFORTRAN_1.0 4.3 + _gfortran_pack_char4@GFORTRAN_1.1 4.4.0 + _gfortran_pack_char@GFORTRAN_1.0 4.3 + _gfortran_pack_s@GFORTRAN_1.0 4.3 + _gfortran_pack_s_char4@GFORTRAN_1.1 4.4.0 + _gfortran_pack_s_char@GFORTRAN_1.0 4.3 + _gfortran_pause_numeric@GFORTRAN_1.0 4.3 + _gfortran_pause_string@GFORTRAN_1.0 4.3 + _gfortran_perror_sub@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_c8_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i4@GFORTRAN_1.0 4.3 + _gfortran_pow_i8_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r4_i8@GFORTRAN_1.0 4.3 + _gfortran_pow_r8_i8@GFORTRAN_1.0 4.3 + _gfortran_product_c4@GFORTRAN_1.0 4.3 + _gfortran_product_c8@GFORTRAN_1.0 4.3 + _gfortran_product_i1@GFORTRAN_1.0 4.3 + _gfortran_product_i2@GFORTRAN_1.0 4.3 + _gfortran_product_i4@GFORTRAN_1.0 4.3 + _gfortran_product_i8@GFORTRAN_1.0 4.3 + _gfortran_product_r4@GFORTRAN_1.0 4.3 + _gfortran_product_r8@GFORTRAN_1.0 4.3 + _gfortran_rand@GFORTRAN_1.0 4.3 + _gfortran_random_r4@GFORTRAN_1.0 4.3 + _gfortran_random_r8@GFORTRAN_1.0 4.3 + _gfortran_random_seed_i4@GFORTRAN_1.0 4.3 + _gfortran_random_seed_i8@GFORTRAN_1.0 4.3 + _gfortran_rename_i4@GFORTRAN_1.0 4.3 + _gfortran_rename_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_rename_i8@GFORTRAN_1.0 4.3 + _gfortran_rename_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_reshape@GFORTRAN_1.0 4.3 + _gfortran_reshape_4@GFORTRAN_1.0 4.3 + _gfortran_reshape_8@GFORTRAN_1.0 4.3 + _gfortran_reshape_c4@GFORTRAN_1.0 4.3 + _gfortran_reshape_c8@GFORTRAN_1.0 4.3 + _gfortran_reshape_char4@GFORTRAN_1.1 4.4.0 + _gfortran_reshape_char@GFORTRAN_1.0 4.3 + _gfortran_reshape_r4@GFORTRAN_1.0 4.3 + _gfortran_reshape_r8@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r4@GFORTRAN_1.0 4.3 + _gfortran_rrspacing_r8@GFORTRAN_1.0 4.3 + _gfortran_runtime_error@GFORTRAN_1.0 4.3 + _gfortran_runtime_error_at@GFORTRAN_1.0 4.3 + _gfortran_runtime_warning_at@GFORTRAN_1.1 4.4.0 + _gfortran_secnds@GFORTRAN_1.0 4.3 + _gfortran_second@GFORTRAN_1.0 4.3 + _gfortran_second_sub@GFORTRAN_1.0 4.3 + _gfortran_select_string@GFORTRAN_1.0 4.3 + _gfortran_select_string_char4@GFORTRAN_1.1 4.4.0 + _gfortran_selected_char_kind@GFORTRAN_1.1 4.4.0 + _gfortran_selected_int_kind@GFORTRAN_1.0 4.3 + _gfortran_selected_real_kind@GFORTRAN_1.0 4.3 + _gfortran_set_args@GFORTRAN_1.0 4.3 + _gfortran_set_convert@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r4@GFORTRAN_1.0 4.3 + _gfortran_set_exponent_r8@GFORTRAN_1.0 4.3 + _gfortran_set_fpe@GFORTRAN_1.0 4.3 + _gfortran_set_max_subrecord_length@GFORTRAN_1.0 4.3 + _gfortran_set_options@GFORTRAN_1.0 4.3 + _gfortran_set_record_marker@GFORTRAN_1.0 4.3 + _gfortran_shape_4@GFORTRAN_1.0 4.3 + _gfortran_shape_8@GFORTRAN_1.0 4.3 + _gfortran_signal_func@GFORTRAN_1.0 4.3 + _gfortran_signal_func_int@GFORTRAN_1.0 4.3 + _gfortran_signal_sub@GFORTRAN_1.0 4.3 + _gfortran_signal_sub_int@GFORTRAN_1.0 4.3 + _gfortran_size0@GFORTRAN_1.0 4.3 + _gfortran_size1@GFORTRAN_1.0 4.3 + _gfortran_sleep_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_sleep_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i1@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i2@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i4@GFORTRAN_1.0 4.3 + _gfortran_smaxval_i8@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r4@GFORTRAN_1.0 4.3 + _gfortran_smaxval_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_4_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc0_8_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_4_r8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i1@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i2@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_i8@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r4@GFORTRAN_1.0 4.3 + _gfortran_sminloc1_8_r8@GFORTRAN_1.0 4.3 + _gfortran_sminval_i1@GFORTRAN_1.0 4.3 + _gfortran_sminval_i2@GFORTRAN_1.0 4.3 + _gfortran_sminval_i4@GFORTRAN_1.0 4.3 + _gfortran_sminval_i8@GFORTRAN_1.0 4.3 + _gfortran_sminval_r4@GFORTRAN_1.0 4.3 + _gfortran_sminval_r8@GFORTRAN_1.0 4.3 + _gfortran_spacing_r4@GFORTRAN_1.0 4.3 + _gfortran_spacing_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__abs_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__acos_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__acosh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__aimag_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__aint_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__anint_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__asin_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__asinh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atan2_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atan_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__atanh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__char_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_4@GFORTRAN_1.0 4.3 + _gfortran_specific__conjg_8@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__cos_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__cosh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__dim_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__dprod_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__exp_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__index_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__len_1_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__log10_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__log_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__log_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__mod_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_4_8@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_4@GFORTRAN_1.0 4.3 + _gfortran_specific__nint_8_8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i4@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_i8@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sign_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sin_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sinh_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c4@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_c8@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__sqrt_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__tan_r8@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r4@GFORTRAN_1.0 4.3 + _gfortran_specific__tanh_r8@GFORTRAN_1.0 4.3 + _gfortran_spread@GFORTRAN_1.0 4.3 + _gfortran_spread_char4@GFORTRAN_1.1 4.4.0 + _gfortran_spread_char4_scalar@GFORTRAN_1.1 4.4.0 + _gfortran_spread_char@GFORTRAN_1.0 4.3 + _gfortran_spread_char_scalar@GFORTRAN_1.0 4.3 + _gfortran_spread_scalar@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_c8@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i1@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i2@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_i8@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r4@GFORTRAN_1.0 4.3 + _gfortran_sproduct_r8@GFORTRAN_1.0 4.3 + _gfortran_srand@GFORTRAN_1.0 4.3 + _gfortran_ssum_c4@GFORTRAN_1.0 4.3 + _gfortran_ssum_c8@GFORTRAN_1.0 4.3 + _gfortran_ssum_i1@GFORTRAN_1.0 4.3 + _gfortran_ssum_i2@GFORTRAN_1.0 4.3 + _gfortran_ssum_i4@GFORTRAN_1.0 4.3 + _gfortran_ssum_i8@GFORTRAN_1.0 4.3 + _gfortran_ssum_r4@GFORTRAN_1.0 4.3 + _gfortran_ssum_r8@GFORTRAN_1.0 4.3 + _gfortran_st_backspace@GFORTRAN_1.0 4.3 + _gfortran_st_close@GFORTRAN_1.0 4.3 + _gfortran_st_endfile@GFORTRAN_1.0 4.3 + _gfortran_st_flush@GFORTRAN_1.0 4.3 + _gfortran_st_inquire@GFORTRAN_1.0 4.3 + _gfortran_st_iolength@GFORTRAN_1.0 4.3 + _gfortran_st_iolength_done@GFORTRAN_1.0 4.3 + _gfortran_st_open@GFORTRAN_1.0 4.3 + _gfortran_st_read@GFORTRAN_1.0 4.3 + _gfortran_st_read_done@GFORTRAN_1.0 4.3 + _gfortran_st_rewind@GFORTRAN_1.0 4.3 + _gfortran_st_set_nml_var@GFORTRAN_1.0 4.3 + _gfortran_st_set_nml_var_dim@GFORTRAN_1.0 4.3 + _gfortran_st_wait@GFORTRAN_1.1 4.4.0 + _gfortran_st_write@GFORTRAN_1.0 4.3 + _gfortran_st_write_done@GFORTRAN_1.0 4.3 + _gfortran_stat_i4@GFORTRAN_1.0 4.3 + _gfortran_stat_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_stat_i8@GFORTRAN_1.0 4.3 + _gfortran_stat_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_stop_numeric@GFORTRAN_1.0 4.3 + _gfortran_stop_string@GFORTRAN_1.0 4.3 + _gfortran_store_exe_path@GFORTRAN_1.0 4.3 + _gfortran_string_index@GFORTRAN_1.0 4.3 + _gfortran_string_index_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_len_trim@GFORTRAN_1.0 4.3 + _gfortran_string_len_trim_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_minmax@GFORTRAN_1.0 4.3 + _gfortran_string_minmax_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_scan@GFORTRAN_1.0 4.3 + _gfortran_string_scan_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_trim@GFORTRAN_1.0 4.3 + _gfortran_string_trim_char4@GFORTRAN_1.1 4.4.0 + _gfortran_string_verify@GFORTRAN_1.0 4.3 + _gfortran_string_verify_char4@GFORTRAN_1.1 4.4.0 + _gfortran_sum_c4@GFORTRAN_1.0 4.3 + _gfortran_sum_c8@GFORTRAN_1.0 4.3 + _gfortran_sum_i1@GFORTRAN_1.0 4.3 + _gfortran_sum_i2@GFORTRAN_1.0 4.3 + _gfortran_sum_i4@GFORTRAN_1.0 4.3 + _gfortran_sum_i8@GFORTRAN_1.0 4.3 + _gfortran_sum_r4@GFORTRAN_1.0 4.3 + _gfortran_sum_r8@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i4@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i8@GFORTRAN_1.0 4.3 + _gfortran_symlnk_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_system@GFORTRAN_1.0 4.3 + _gfortran_system_clock_4@GFORTRAN_1.0 4.3 + _gfortran_system_clock_8@GFORTRAN_1.0 4.3 + _gfortran_system_sub@GFORTRAN_1.0 4.3 + _gfortran_time8_func@GFORTRAN_1.0 4.3 + _gfortran_time_func@GFORTRAN_1.0 4.3 + _gfortran_transfer_array@GFORTRAN_1.0 4.3 + _gfortran_transfer_character@GFORTRAN_1.0 4.3 + _gfortran_transfer_character_wide@GFORTRAN_1.1 4.4.0 + _gfortran_transfer_complex@GFORTRAN_1.0 4.3 + _gfortran_transfer_integer@GFORTRAN_1.0 4.3 + _gfortran_transfer_logical@GFORTRAN_1.0 4.3 + _gfortran_transfer_real@GFORTRAN_1.0 4.3 + _gfortran_transpose@GFORTRAN_1.0 4.3 + _gfortran_transpose_c4@GFORTRAN_1.0 4.3 + _gfortran_transpose_c8@GFORTRAN_1.0 4.3 + _gfortran_transpose_char4@GFORTRAN_1.1 4.4.0 + _gfortran_transpose_char@GFORTRAN_1.0 4.3 + _gfortran_transpose_i4@GFORTRAN_1.0 4.3 + _gfortran_transpose_i8@GFORTRAN_1.0 4.3 + _gfortran_transpose_r4@GFORTRAN_1.0 4.3 + _gfortran_transpose_r8@GFORTRAN_1.0 4.3 + _gfortran_ttynam@GFORTRAN_1.0 4.3 + _gfortran_ttynam_sub@GFORTRAN_1.0 4.3 + _gfortran_umask_i4@GFORTRAN_1.0 4.3 + _gfortran_umask_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_umask_i8@GFORTRAN_1.0 4.3 + _gfortran_umask_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_unlink@GFORTRAN_1.0 4.3 + _gfortran_unlink_i4_sub@GFORTRAN_1.0 4.3 + _gfortran_unlink_i8_sub@GFORTRAN_1.0 4.3 + _gfortran_unpack0@GFORTRAN_1.0 4.3 + _gfortran_unpack0_char4@GFORTRAN_1.1 4.4.0 + _gfortran_unpack0_char@GFORTRAN_1.0 4.3 + _gfortran_unpack1@GFORTRAN_1.0 4.3 + _gfortran_unpack1_char4@GFORTRAN_1.1 4.4.0 + _gfortran_unpack1_char@GFORTRAN_1.0 4.3 --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.hurd-i386 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.hurd-i386 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.i386 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.i386 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.ia64 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.ia64 @@ -0,0 +1,5 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" +#include "libgfortran3.symbols.16" +#include "libgfortran3.symbols.64" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.lpia +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.lpia @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.10" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.mips +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.mips @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.mipsel +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.mipsel @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.powerpc +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.powerpc @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.s390 +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.s390 @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.4-4.4.7.orig/debian/libgfortran3.symbols.sparc +++ gcc-4.4-4.4.7/debian/libgfortran3.symbols.sparc @@ -0,0 +1,3 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" +#include "libgfortran3.symbols.16.powerpc" --- gcc-4.4-4.4.7.orig/debian/libgnat-BV.overrides +++ gcc-4.4-4.4.7/debian/libgnat-BV.overrides @@ -0,0 +1 @@ +libgnat-@BV@: package-name-doesnt-match-sonames --- gcc-4.4-4.4.7.orig/debian/libgnatprjBV.overrides +++ gcc-4.4-4.4.7/debian/libgnatprjBV.overrides @@ -0,0 +1 @@ +libgnatprj@BV@: missing-dependency-on-libc --- gcc-4.4-4.4.7.orig/debian/libgnatvsnBV.overrides +++ gcc-4.4-4.4.7/debian/libgnatvsnBV.overrides @@ -0,0 +1 @@ +libgnatvsn@BV@: missing-dependency-on-libc --- gcc-4.4-4.4.7.orig/debian/libgomp1.symbols +++ gcc-4.4-4.4.7/debian/libgomp1.symbols @@ -0,0 +1,4 @@ +libgomp.so.1 libgomp1 #MINVER# +#include "libgomp1.symbols.common" + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 --- gcc-4.4-4.4.7.orig/debian/libgomp1.symbols.common +++ gcc-4.4-4.4.7/debian/libgomp1.symbols.common @@ -0,0 +1,154 @@ + GOMP_1.0@GOMP_1.0 4.2.1 + GOMP_2.0@GOMP_2.0 4.4 + GOMP_atomic_end@GOMP_1.0 4.2.1 + GOMP_atomic_start@GOMP_1.0 4.2.1 + GOMP_barrier@GOMP_1.0 4.2.1 + GOMP_critical_end@GOMP_1.0 4.2.1 + GOMP_critical_name_end@GOMP_1.0 4.2.1 + GOMP_critical_name_start@GOMP_1.0 4.2.1 + GOMP_critical_start@GOMP_1.0 4.2.1 + GOMP_loop_dynamic_next@GOMP_1.0 4.2.1 + GOMP_loop_dynamic_start@GOMP_1.0 4.2.1 + GOMP_loop_end@GOMP_1.0 4.2.1 + GOMP_loop_end_nowait@GOMP_1.0 4.2.1 + GOMP_loop_guided_next@GOMP_1.0 4.2.1 + GOMP_loop_guided_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_dynamic_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_dynamic_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_guided_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_guided_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_runtime_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_runtime_start@GOMP_1.0 4.2.1 + GOMP_loop_ordered_static_next@GOMP_1.0 4.2.1 + GOMP_loop_ordered_static_start@GOMP_1.0 4.2.1 + GOMP_loop_runtime_next@GOMP_1.0 4.2.1 + GOMP_loop_runtime_start@GOMP_1.0 4.2.1 + GOMP_loop_static_next@GOMP_1.0 4.2.1 + GOMP_loop_static_start@GOMP_1.0 4.2.1 + GOMP_loop_ull_dynamic_next@GOMP_2.0 4.4 + GOMP_loop_ull_dynamic_start@GOMP_2.0 4.4 + GOMP_loop_ull_guided_next@GOMP_2.0 4.4 + GOMP_loop_ull_guided_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_dynamic_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_dynamic_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_guided_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_guided_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_runtime_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_runtime_start@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_static_next@GOMP_2.0 4.4 + GOMP_loop_ull_ordered_static_start@GOMP_2.0 4.4 + GOMP_loop_ull_runtime_next@GOMP_2.0 4.4 + GOMP_loop_ull_runtime_start@GOMP_2.0 4.4 + GOMP_loop_ull_static_next@GOMP_2.0 4.4 + GOMP_loop_ull_static_start@GOMP_2.0 4.4 + GOMP_ordered_end@GOMP_1.0 4.2.1 + GOMP_ordered_start@GOMP_1.0 4.2.1 + GOMP_parallel_end@GOMP_1.0 4.2.1 + GOMP_parallel_loop_dynamic_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_guided_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_runtime_start@GOMP_1.0 4.2.1 + GOMP_parallel_loop_static_start@GOMP_1.0 4.2.1 + GOMP_parallel_sections_start@GOMP_1.0 4.2.1 + GOMP_parallel_start@GOMP_1.0 4.2.1 + GOMP_sections_end@GOMP_1.0 4.2.1 + GOMP_sections_end_nowait@GOMP_1.0 4.2.1 + GOMP_sections_next@GOMP_1.0 4.2.1 + GOMP_sections_start@GOMP_1.0 4.2.1 + GOMP_single_copy_end@GOMP_1.0 4.2.1 + GOMP_single_copy_start@GOMP_1.0 4.2.1 + GOMP_single_start@GOMP_1.0 4.2.1 + GOMP_task@GOMP_2.0 4.4 + GOMP_taskwait@GOMP_2.0 4.4 + OMP_1.0@OMP_1.0 4.2.1 + OMP_2.0@OMP_2.0 4.2.1 + OMP_3.0@OMP_3.0 4.4 + omp_destroy_lock@OMP_1.0 4.2.1 + omp_destroy_lock@OMP_3.0 4.4 + omp_destroy_lock_@OMP_1.0 4.2.1 + omp_destroy_lock_@OMP_3.0 4.4 + omp_destroy_nest_lock@OMP_1.0 4.2.1 + omp_destroy_nest_lock@OMP_3.0 4.4 + omp_destroy_nest_lock_@OMP_1.0 4.2.1 + omp_destroy_nest_lock_@OMP_3.0 4.4 + omp_get_active_level@OMP_3.0 4.4 + omp_get_active_level_@OMP_3.0 4.4 + omp_get_ancestor_thread_num@OMP_3.0 4.4 + omp_get_ancestor_thread_num_8_@OMP_3.0 4.4 + omp_get_ancestor_thread_num_@OMP_3.0 4.4 + omp_get_dynamic@OMP_1.0 4.2.1 + omp_get_dynamic_@OMP_1.0 4.2.1 + omp_get_level@OMP_3.0 4.4 + omp_get_level_@OMP_3.0 4.4 + omp_get_max_active_levels@OMP_3.0 4.4 + omp_get_max_active_levels_@OMP_3.0 4.4 + omp_get_max_threads@OMP_1.0 4.2.1 + omp_get_max_threads_@OMP_1.0 4.2.1 + omp_get_nested@OMP_1.0 4.2.1 + omp_get_nested_@OMP_1.0 4.2.1 + omp_get_num_procs@OMP_1.0 4.2.1 + omp_get_num_procs_@OMP_1.0 4.2.1 + omp_get_num_threads@OMP_1.0 4.2.1 + omp_get_num_threads_@OMP_1.0 4.2.1 + omp_get_schedule@OMP_3.0 4.4 + omp_get_schedule_8_@OMP_3.0 4.4 + omp_get_schedule_@OMP_3.0 4.4 + omp_get_team_size@OMP_3.0 4.4 + omp_get_team_size_8_@OMP_3.0 4.4 + omp_get_team_size_@OMP_3.0 4.4 + omp_get_thread_limit@OMP_3.0 4.4 + omp_get_thread_limit_@OMP_3.0 4.4 + omp_get_thread_num@OMP_1.0 4.2.1 + omp_get_thread_num_@OMP_1.0 4.2.1 + omp_get_wtick@OMP_2.0 4.2.1 + omp_get_wtick_@OMP_2.0 4.2.1 + omp_get_wtime@OMP_2.0 4.2.1 + omp_get_wtime_@OMP_2.0 4.2.1 + omp_in_parallel@OMP_1.0 4.2.1 + omp_in_parallel_@OMP_1.0 4.2.1 + omp_init_lock@OMP_1.0 4.2.1 + omp_init_lock@OMP_3.0 4.4 + omp_init_lock_@OMP_1.0 4.2.1 + omp_init_lock_@OMP_3.0 4.4 + omp_init_nest_lock@OMP_1.0 4.2.1 + omp_init_nest_lock@OMP_3.0 4.4 + omp_init_nest_lock_@OMP_1.0 4.2.1 + omp_init_nest_lock_@OMP_3.0 4.4 + omp_set_dynamic@OMP_1.0 4.2.1 + omp_set_dynamic_8_@OMP_1.0 4.2.1 + omp_set_dynamic_@OMP_1.0 4.2.1 + omp_set_lock@OMP_1.0 4.2.1 + omp_set_lock@OMP_3.0 4.4 + omp_set_lock_@OMP_1.0 4.2.1 + omp_set_lock_@OMP_3.0 4.4 + omp_set_max_active_levels@OMP_3.0 4.4 + omp_set_max_active_levels_8_@OMP_3.0 4.4 + omp_set_max_active_levels_@OMP_3.0 4.4 + omp_set_nest_lock@OMP_1.0 4.2.1 + omp_set_nest_lock@OMP_3.0 4.4 + omp_set_nest_lock_@OMP_1.0 4.2.1 + omp_set_nest_lock_@OMP_3.0 4.4 + omp_set_nested@OMP_1.0 4.2.1 + omp_set_nested_8_@OMP_1.0 4.2.1 + omp_set_nested_@OMP_1.0 4.2.1 + omp_set_num_threads@OMP_1.0 4.2.1 + omp_set_num_threads_8_@OMP_1.0 4.2.1 + omp_set_num_threads_@OMP_1.0 4.2.1 + omp_set_schedule@OMP_3.0 4.4 + omp_set_schedule_8_@OMP_3.0 4.4 + omp_set_schedule_@OMP_3.0 4.4 + omp_test_lock@OMP_1.0 4.2.1 + omp_test_lock@OMP_3.0 4.4 + omp_test_lock_@OMP_1.0 4.2.1 + omp_test_lock_@OMP_3.0 4.4 + omp_test_nest_lock@OMP_1.0 4.2.1 + omp_test_nest_lock@OMP_3.0 4.4 + omp_test_nest_lock_@OMP_1.0 4.2.1 + omp_test_nest_lock_@OMP_3.0 4.4 + omp_unset_lock@OMP_1.0 4.2.1 + omp_unset_lock@OMP_3.0 4.4 + omp_unset_lock_@OMP_1.0 4.2.1 + omp_unset_lock_@OMP_3.0 4.4 + omp_unset_nest_lock@OMP_1.0 4.2.1 + omp_unset_nest_lock@OMP_3.0 4.4 + omp_unset_nest_lock_@OMP_1.0 4.2.1 + omp_unset_nest_lock_@OMP_3.0 4.4 --- gcc-4.4-4.4.7.orig/debian/libmudflap.copyright +++ gcc-4.4-4.4.7/debian/libmudflap.copyright @@ -0,0 +1,30 @@ +This package was debianized by Matthias Klose on +Mon, 5 Jul 2004 21:29:57 +0200 + +Mudflap is part of GCC. + +Authors: Frank Ch. Eigler , Graydon Hoare + +Copyright (C) 2002, 2003, 2004 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 2, or (at your option) any later +version. + +In addition to the permissions in the GNU General Public License, the +Free Software Foundation gives you unlimited permission to link the +compiled version of this file into combinations with other programs, +and to distribute those combinations without any restriction coming +from the use of this file. (The General Public License restrictions +do apply in other respects; for example, they cover modification of +the file, and distribution when not linked into a combine +executable.) + +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. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. --- gcc-4.4-4.4.7.orig/debian/libmudflapMF.postinst +++ gcc-4.4-4.4.7/debian/libmudflapMF.postinst @@ -0,0 +1,12 @@ +#! /bin/sh + +set -e + +case "$1" in configure) + if [ -d /usr/share/doc/libmudflap@MF@ ] && [ ! -h /usr/share/doc/libmudflap@MF@ ]; then + rm -rf /usr/share/doc/libmudflap@MF@ + ln -s gcc-@BV@-base /usr/share/doc/libmudflap@MF@ + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/libobjc2.symbols +++ gcc-4.4-4.4.7/debian/libobjc2.symbols @@ -0,0 +1,3 @@ +libobjc.so.2 libobjc2 #MINVER# +#include "libobjc2.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 --- gcc-4.4-4.4.7.orig/debian/libobjc2.symbols.arm +++ gcc-4.4-4.4.7/debian/libobjc2.symbols.arm @@ -0,0 +1,4 @@ +libobjc.so.2 libobjc2 #MINVER# +#include "libobjc2.symbols.common" + __gnu_objc_personality_sj0@Base 4.2.1 + __objc_exception_class@Base 4.4.0 --- gcc-4.4-4.4.7.orig/debian/libobjc2.symbols.armel +++ gcc-4.4-4.4.7/debian/libobjc2.symbols.armel @@ -0,0 +1,4 @@ +libobjc.so.2 libobjc2 #MINVER# +#include "libobjc2.symbols.common" + __gnu_objc_personality_v0@Base 4.2.1 + __objc_exception_class@Base 4.3.0 --- gcc-4.4-4.4.7.orig/debian/libobjc2.symbols.common +++ gcc-4.4-4.4.7/debian/libobjc2.symbols.common @@ -0,0 +1,206 @@ + __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_close_thread_system@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_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_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_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_object_alloc@Base 4.2.1 + __objc_object_copy@Base 4.2.1 + __objc_object_dispose@Base 4.2.1 + __objc_print_dtable_stats@Base 4.2.1 + __objc_read_nbyte_uint@Base 4.2.1 + __objc_read_nbyte_ulong@Base 4.2.1 + __objc_register_instance_methods_to_class@Base 4.2.1 + __objc_register_selectors_from_class@Base 4.2.1 + __objc_register_selectors_from_list@Base 4.2.1 + __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_thread_detach@Base 4.2.1 + __objc_thread_exit@Base 4.2.1 + __objc_thread_exit_status@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_set_data@Base 4.2.1 + __objc_thread_set_priority@Base 4.2.1 + __objc_thread_yield@Base 4.2.1 + __objc_uninstalled_dtable@Base 4.2.1 + __objc_update_dispatch_table_for_class@Base 4.2.1 + __objc_write_class@Base 4.2.1 + __objc_write_object@Base 4.2.1 + __objc_write_selector@Base 4.2.1 + __sel_register_typed_name@Base 4.2.1 + _objc_atomic_malloc@Base 4.2.1 + _objc_became_multi_threaded@Base 4.2.1 + _objc_calloc@Base 4.2.1 + _objc_free@Base 4.2.1 + _objc_load_callback@Base 4.2.1 + _objc_lookup_class@Base 4.2.1 + _objc_malloc@Base 4.2.1 + _objc_object_alloc@Base 4.2.1 + _objc_object_copy@Base 4.2.1 + _objc_object_dispose@Base 4.2.1 + _objc_realloc@Base 4.2.1 + _objc_unexpected_exception@Base 4.4.0 + _objc_valloc@Base 4.2.1 + class_add_method_list@Base 4.2.1 + class_create_instance@Base 4.2.1 + class_get_class_method@Base 4.2.1 + class_get_instance_method@Base 4.2.1 + class_ivar_set_gcinvisible@Base 4.2.1 + class_pose_as@Base 4.2.1 + get_imp@Base 4.2.1 + idxsize@Base 4.2.1 + method_get_first_argument@Base 4.2.1 + method_get_next_argument@Base 4.2.1 + method_get_nth_argument@Base 4.2.1 + method_get_number_of_arguments@Base 4.2.1 + method_get_sizeof_arguments@Base 4.2.1 + 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_atomic_malloc@Base 4.2.1 + objc_calloc@Base 4.2.1 + objc_close_typed_stream@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_end_of_typed_stream@Base 4.2.1 + objc_error@Base 4.2.1 + objc_exception_throw@Base 4.2.1 + objc_flush_typed_stream@Base 4.2.1 + objc_free@Base 4.2.1 + objc_get_class@Base 4.2.1 + objc_get_meta_class@Base 4.2.1 + objc_get_stream_class_version@Base 4.2.1 + objc_get_type_qualifiers@Base 4.2.1 + objc_get_uninstalled_dtable@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_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_msg_sendv@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_next_class@Base 4.2.1 + objc_open_typed_stream@Base 4.2.1 + objc_open_typed_stream_for_file@Base 4.2.1 + objc_promoted_size@Base 4.2.1 + objc_read_array@Base 4.2.1 + objc_read_char@Base 4.2.1 + objc_read_int@Base 4.2.1 + objc_read_long@Base 4.2.1 + objc_read_object@Base 4.2.1 + objc_read_selector@Base 4.2.1 + objc_read_short@Base 4.2.1 + objc_read_string@Base 4.2.1 + objc_read_type@Base 4.2.1 + objc_read_types@Base 4.2.1 + objc_read_unsigned_char@Base 4.2.1 + objc_read_unsigned_int@Base 4.2.1 + objc_read_unsigned_long@Base 4.2.1 + objc_read_unsigned_short@Base 4.2.1 + objc_realloc@Base 4.2.1 + objc_set_error_handler@Base 4.2.1 + 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_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 + objc_valloc@Base 4.2.1 + objc_verror@Base 4.2.1 + objc_write_array@Base 4.2.1 + objc_write_char@Base 4.2.1 + objc_write_int@Base 4.2.1 + objc_write_long@Base 4.2.1 + objc_write_object@Base 4.2.1 + objc_write_object_reference@Base 4.2.1 + objc_write_root_object@Base 4.2.1 + objc_write_selector@Base 4.2.1 + objc_write_short@Base 4.2.1 + objc_write_string@Base 4.2.1 + objc_write_string_atomic@Base 4.2.1 + objc_write_type@Base 4.2.1 + objc_write_types@Base 4.2.1 + objc_write_unsigned_char@Base 4.2.1 + objc_write_unsigned_int@Base 4.2.1 + objc_write_unsigned_long@Base 4.2.1 + objc_write_unsigned_short@Base 4.2.1 + object_copy@Base 4.2.1 + object_dispose@Base 4.2.1 + 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_get_any_typed_uid@Base 4.2.1 + sel_get_any_uid@Base 4.2.1 + sel_get_name@Base 4.2.1 + sel_get_type@Base 4.2.1 + sel_get_typed_uid@Base 4.2.1 + sel_get_uid@Base 4.2.1 + sel_is_mapped@Base 4.2.1 + sel_register_name@Base 4.2.1 + sel_register_typed_name@Base 4.2.1 + sel_types_match@Base 4.2.1 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.32bit +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.32bit @@ -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_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.32bit.hurd +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/libstdc++6.symbols.64bit +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.64bit @@ -0,0 +1,535 @@ +#include "libstdc++6.symbols.common" + _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 + _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 + _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_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 + _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_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 + _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 + _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 + _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 + _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 + _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_bynameIcEC2EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC1EPKcm@GLIBCXX_3.4 4.1.1 + _ZNSt12ctype_bynameIwEC2EPKcm@GLIBCXX_3.4 4.1.1 + _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_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_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_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_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_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 + _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 + _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 + _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 + _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 + _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 + _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t@GLIBCXX_3.4 4.1.1 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.alpha +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.alpha @@ -0,0 +1,9 @@ +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" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0~rc2 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.amd64 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.amd64 @@ -0,0 +1,7 @@ +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 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.arm +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/libstdc++6.symbols.armel +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.armel @@ -0,0 +1,26 @@ +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" + 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 + __aeabi_atexit@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_cctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_ctor_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_ctor_nocookie_nodtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_delete3@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_delete3_nodtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_delete@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_dtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_dtor_cookie@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_new_cookie@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_new_cookie_noctor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_new_cookie_nodtor@CXXABI_ARM_1.3.3 4.4.0 + __aeabi_vec_new_nocookie@CXXABI_ARM_1.3.3 4.4.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-4.4-4.4.7.orig/debian/libstdc++6.symbols.common +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.common @@ -0,0 +1,2873 @@ + 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@CXXABI_1.3 4.1.1 + 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.1-4 + GLIBCXX_3.4.1@GLIBCXX_3.4.1 4.1.1 + GLIBCXX_3.4.2@GLIBCXX_3.4.2 4.1.1 + GLIBCXX_3.4.3@GLIBCXX_3.4.3 4.1.1 + GLIBCXX_3.4.4@GLIBCXX_3.4.4 4.1.1 + GLIBCXX_3.4.5@GLIBCXX_3.4.5 4.1.1 + GLIBCXX_3.4.6@GLIBCXX_3.4.6 4.1.1 + GLIBCXX_3.4.7@GLIBCXX_3.4.7 4.1.1 + GLIBCXX_3.4.8@GLIBCXX_3.4.8 4.1.1 + GLIBCXX_3.4.9@GLIBCXX_3.4.9 4.2.1 + GLIBCXX_3.4@GLIBCXX_3.4 4.1.1 + _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 + _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_traitsIcEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _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_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_traitsIwEEC1EP8_IO_FILE@GLIBCXX_3.4.10 4.3.0~rc2 + _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_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_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_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_traitsIwESaIwEE5c_strEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv@GLIBCXX_3.4 4.1.1 + _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_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 + _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 + _ZNKSs5emptyEv@GLIBCXX_3.4 4.1.1 + _ZNKSs6_M_repEv@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _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 + _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 + _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 + _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_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_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_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_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_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_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_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_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_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_traitsIwESaIwEE9push_backEw@GLIBCXX_3.4 4.1.1 + _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_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_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 + _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSdC1Ev@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSiC1Ev@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _ZNSoC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE@GLIBCXX_3.4 4.1.1 + _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 + _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_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 + _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 + _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 + _ZNSs6appendEPKc@GLIBCXX_3.4 4.1.1 + _ZNSs6appendERKSs@GLIBCXX_3.4 4.1.1 + _ZNSs6appendESt16initializer_listIcE@GLIBCXX_3.4.11 4.4.0 + _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 + _ZNSs9push_backEc@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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__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_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_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _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 + _ZNSt11range_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt11range_errorD1Ev@GLIBCXX_3.4 4.1.1 + _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 + _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_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12domain_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12length_errorD1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt12out_of_rangeC1ERKSs@GLIBCXX_3.4 4.1.1 + _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 + _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_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.1-4 + _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_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _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_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.1-4 + _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_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _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_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _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_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode@GLIBCXX_3.4.13 4.4.1-4 + _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_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_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_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _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_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_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_traitsIwEEC1EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev@GLIBCXX_3.4 4.1.1 + _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E@GLIBCXX_3.4 4.1.1 + _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_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 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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.1-4 + _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 + _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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt14overflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _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_base7reverseEv@GLIBCXX_3.4 4.1.1 + _ZNSt15_List_node_base8transferEPS_S0_@GLIBCXX_3.4 4.1.1 + _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_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_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_errorC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt15underflow_errorD1Ev@GLIBCXX_3.4 4.1.1 + _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 + _ZNSt16invalid_argumentC1ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentC2ERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD0Ev@GLIBCXX_3.4 4.1.1 + _ZNSt16invalid_argumentD1Ev@GLIBCXX_3.4 4.1.1 + _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 + _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_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _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_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 + _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 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _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_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_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E@GLIBCXX_3.4 4.1.1 + _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_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 + _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 + _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_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 + _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_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_base7reverseEv@GLIBCXX_3.4.9 4.2.1 + _ZNSt6__norm15_List_node_base8transferEPS0_S1_@GLIBCXX_3.4.9 4.2.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 + _ZNSt6thread4joinEv@GLIBCXX_3.4.11 4.4.0 + _ZNSt6thread6detachEv@GLIBCXX_3.4.11 4.4.0 + _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 + _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_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__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_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 + _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_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_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_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_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 + _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 + _ZSt14set_unexpectedPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15__once_callable@GLIBCXX_3.4.11 4.4.0 + _ZSt15set_new_handlerPFvvE@GLIBCXX_3.4 4.1.1 + _ZSt15system_categoryv@GLIBCXX_3.4.11 4.4.0 + _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 + _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_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 + _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 + _ZTIDi@CXXABI_1.3.3 4.4.0 + _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 + _ZTINSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _ZTINSt8ios_base7failureE@GLIBCXX_3.4 4.1.1 + _ZTIPDi@CXXABI_1.3.3 4.4.0 + _ZTIPDs@CXXABI_1.3.3 4.4.0 + _ZTIPKDi@CXXABI_1.3.3 4.4.0 + _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 + _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 + _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 + _ZTISt16invalid_argument@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _ZTISt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTISt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _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 + _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 + _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 + _ZTSSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTSSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _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 + _ZTVNSt6locale5facetE@GLIBCXX_3.4 4.1.1 + _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 + _ZTVSt12ctype_bynameIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt12ctype_bynameIwE@GLIBCXX_3.4 4.1.1 + _ZTVSt12domain_error@GLIBCXX_3.4 4.1.1 + _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 + _ZTVSt16invalid_argument@GLIBCXX_3.4 4.1.1 + _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 + _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 + _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 + _ZTVSt5ctypeIcE@GLIBCXX_3.4 4.1.1 + _ZTVSt5ctypeIwE@GLIBCXX_3.4 4.1.1 + _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 + _ZdlPv@GLIBCXX_3.4 4.1.1 + _ZdlPvRKSt9nothrow_t@GLIBCXX_3.4 4.1.1 + __atomic_flag_for_address@GLIBCXX_3.4.11 4.4.0 + __atomic_flag_wait_explicit@GLIBCXX_3.4.11 4.4.0 + __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_demangle@CXXABI_1.3 4.1.1 + __cxa_end_catch@CXXABI_1.3 4.1.1 + __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_pure_virtual@CXXABI_1.3 4.1.1 + __cxa_rethrow@CXXABI_1.3 4.1.1 + __cxa_throw@CXXABI_1.3 4.1.1 + __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-4.4-4.4.7.orig/debian/libstdc++6.symbols.excprop +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.excprop @@ -0,0 +1,17 @@ + _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_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-4.4-4.4.7.orig/debian/libstdc++6.symbols.glibcxxmath +++ gcc-4.4-4.4.7/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-4.4-4.4.7.orig/debian/libstdc++6.symbols.hppa +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.hppa @@ -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" +# removed, see PR libstdc++/39491 __signbitl@GLIBCXX_3.4 4.2.1 +#include "libstdc++6.symbols.glibcxxmath" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.hurd-i386 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.hurd-i386 @@ -0,0 +1,5 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit.hurd" + __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-4.4-4.4.7.orig/debian/libstdc++6.symbols.i386 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.i386 @@ -0,0 +1,6 @@ +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 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.ia64 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.ia64 @@ -0,0 +1,7 @@ +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 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.ldbl.32bit +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.ldbl.32bit @@ -0,0 +1,283 @@ + 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_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-4.4-4.4.7.orig/debian/libstdc++6.symbols.ldbl.32bit.s390 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.ldbl.32bit.s390 @@ -0,0 +1,283 @@ + 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_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-4.4-4.4.7.orig/debian/libstdc++6.symbols.ldbl.64bit +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.ldbl.64bit @@ -0,0 +1,283 @@ + 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_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-4.4-4.4.7.orig/debian/libstdc++6.symbols.lpia +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.lpia @@ -0,0 +1,6 @@ +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 + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.m68k +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.m68k @@ -0,0 +1,5 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __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-4.4-4.4.7.orig/debian/libstdc++6.symbols.mips +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.mips @@ -0,0 +1,7 @@ +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" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.mipsel +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.mipsel @@ -0,0 +1,7 @@ +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" + _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0 + _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0 --- gcc-4.4-4.4.7.orig/debian/libstdc++6.symbols.powerpc +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.powerpc @@ -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-4.4-4.4.7.orig/debian/libstdc++6.symbols.s390 +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.s390 @@ -0,0 +1,543 @@ +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_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 + _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_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 + _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 + _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_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_syncEPcmm@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_syncEPwmm@GLIBCXX_3.4 4.1.1 + _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode@GLIBCXX_3.4 4.1.1 + _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 + _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-4.4-4.4.7.orig/debian/libstdc++6.symbols.sparc +++ gcc-4.4-4.4.7/debian/libstdc++6.symbols.sparc @@ -0,0 +1,7 @@ +libstdc++.so.6 libstdc++6 #MINVER# +#include "libstdc++6.symbols.32bit" + __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-4.4-4.4.7.orig/debian/libstdc++CXX-BV-doc.doc-base +++ gcc-4.4-4.4.7/debian/libstdc++CXX-BV-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++@CXX@-@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++@CXX@-@BV@-doc/libstdc++/html/index.html +Files: /usr/share/doc/libstdc++@CXX@-@BV@-doc/libstdc++/html*/* --- gcc-4.4-4.4.7.orig/debian/libstdc++CXX-BV-doc.overrides +++ gcc-4.4-4.4.7/debian/libstdc++CXX-BV-doc.overrides @@ -0,0 +1,2 @@ +libstdc++@CXX@-@BV@-doc: hyphen-used-as-minus-sign +libstdc++@CXX@-@BV@-doc: manpage-has-bad-whatis-entry --- gcc-4.4-4.4.7.orig/debian/libstdc++CXX.postinst +++ gcc-4.4-4.4.7/debian/libstdc++CXX.postinst @@ -0,0 +1,12 @@ +#! /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 +esac + +#DEBHELPER# --- gcc-4.4-4.4.7.orig/debian/locale-gen +++ gcc-4.4-4.4.7/debian/locale-gen @@ -0,0 +1,48 @@ +#!/bin/sh + +LOCPATH=`pwd`/locales +export LOCPATH + +[ -d $LOCPATH ] || mkdir -p $LOCPATH + +umask 022 + +echo "Generating locales..." +while read locale charset; do + case $locale in \#*) continue;; esac + [ -n "$locale" -a -n "$charset" ] || continue + echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`" + echo -n ".$charset" + echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'` + echo -n '...' + 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 + echo ' done'; \ +done <&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-4.4-4.4.7.orig/debian/patches/ada-acats.diff +++ gcc-4.4-4.4.7/debian/patches/ada-acats.diff @@ -0,0 +1,158 @@ +# DP: - When running the ACATS, look for the gnat tools in their new +# DP: directory (build/gnattools), and for the shared libraries in +# DP: build/gcc/ada/rts-shared-zcx, build/libgnatvsn and build/libgnatprj. + +Index: b/src/gcc/testsuite/ada/acats/run_acats +=================================================================== +--- a/src/gcc/testsuite/ada/acats/run_acats ++++ b/src/gcc/testsuite/ada/acats/run_acats +@@ -20,51 +20,28 @@ + return 1 + } + ++echo '#!/bin/sh' > host_gnatchop ++echo exec /usr/bin/gnatchop '$*' >> host_gnatchop ++ ++chmod +x host_gnatchop ++ ++echo '#!/bin/sh' > host_gnatmake ++echo echo '$PATH' '$*' >> host_gnatmake ++echo exec /usr/bin/gnatmake '$*' >> host_gnatmake ++ ++chmod +x host_gnatmake ++ + # Set up environment to use the Ada compiler from the object tree + +-host_gnatchop=`which gnatchop` +-host_gnatmake=`which gnatmake` + ROOT=`${PWDCMD-pwd}` + BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}` +- + PATH=$BASE:$ROOT:$PATH +-ADA_INCLUDE_PATH=$BASE/ada/rts +-LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH +-ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH +- +-if [ ! -d $ADA_INCLUDE_PATH ]; then +- echo gnatlib missing, exiting. +- exit 1 +-fi +- +-if [ ! -f $BASE/gnatchop ]; then +- echo gnattools missing, exiting. +- exit 1 +-fi +- +-if [ ! -f $BASE/gnatmake ]; then +- echo gnattools missing, exiting. +- exit 1 +-fi +- ++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}` ++LIBGNATVSN=`cd $BASE/../libgnatvsn; ${PWDCMD-pwd}` ++LIBGNATPRJ=`cd $BASE/../libgnatprj; ${PWDCMD-pwd}` + GCC_DRIVER="$BASE/xgcc" + GCC="$BASE/xgcc -B$BASE/" + export PATH ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_DRIVER GCC LD_LIBRARY_PATH +- +-echo '#!/bin/sh' > host_gnatchop +-echo PATH=`dirname $host_gnatchop`:'$PATH' >> host_gnatchop +-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatchop +-echo export PATH >> host_gnatchop +-echo exec gnatchop '"$@"' >> host_gnatchop +- +-chmod +x host_gnatchop +- +-echo '#!/bin/sh' > host_gnatmake +-echo PATH=`dirname $host_gnatmake`:'$PATH' >> host_gnatmake +-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatmake +-echo export PATH >> host_gnatmake +-echo exec gnatmake '"$@"' >> host_gnatmake +- +-chmod +x host_gnatmake ++export GNATTOOLS LIBGNATVSN LIBGNATPRJ + + exec $testdir/run_all.sh ${1+"$@"} +Index: b/src/gcc/testsuite/ada/acats/run_all.sh +=================================================================== +--- a/src/gcc/testsuite/ada/acats/run_all.sh ++++ b/src/gcc/testsuite/ada/acats/run_all.sh +@@ -12,6 +12,10 @@ + gccflags="-O2" + gnatflags="-gnatws" + ++RTS=`cd $GNATTOOLS/../gcc/ada/rts-shared-zcx; ${PWDCMD-pwd}` ++LD_LIBRARY_PATH=$RTS:$LIBGNATVSN:$LIBGNATPRJ ++export LD_LIBRARY_PATH ++ + target_run () { + $* + } +@@ -48,15 +52,25 @@ + fi + + target_gnatchop () { +- gnatchop --GCC="$GCC_DRIVER" $* ++ display ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $* ++ ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $* + } + + target_gnatmake () { +- echo gnatmake --GCC=\"$GCC\" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC=\"$GCC\" +- gnatmake --GCC="$GCC" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC="$GCC" ++ RTS="$GNATTOOLS/../gcc/ada/rts-shared-zcx" ++ EXTERNAL_OBJECTS="$EXTERNAL_OBJECTS $RTS/adaint.o $RTS/sysdep.o $RTS/init.o" ++ display $GNATTOOLS/gnatmake -I- -I$RTS -I. \ ++ --GCC=\"$GCC\" --GNATBIND="$GNATTOOLS/gnatbind" \ ++ --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \ ++ -bargs -static -largs $EXTERNAL_OBJECTS --GCC=\"$GCC -I- -I$RTS -I.\" ++ $GNATTOOLS/gnatmake -I- -I$RTS -I. \ ++ --GCC="$GCC" --GNATBIND="$GNATTOOLS/gnatbind" \ ++ --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \ ++ -bargs -static -largs $EXTERNAL_OBJECTS --GCC="$GCC -I- -I$RTS -I." + } + + target_gcc () { ++ display $GCC $gccflags $* + $GCC $gccflags $* + } + +@@ -84,8 +98,8 @@ + display `$GCC -v 2>&1` + display host=`gcc -dumpmachine` + display target=$target +-display `type gnatmake` +-gnatls -v >> $dir/acats.log ++display `type $GNATTOOLS/gnatmake` ++$GNATTOOLS/gnatls -I- -I$RTS -v >> $dir/acats.log + display "" + + display " === acats support ===" +Index: b/src/gcc/testsuite/lib/gnat.exp +=================================================================== +--- a/src/gcc/testsuite/lib/gnat.exp ++++ b/src/gcc/testsuite/lib/gnat.exp +@@ -91,13 +91,7 @@ + + if { $gnat_initialized == 1 } { return } + +- if ![info exists GNAT_UNDER_TEST] then { +- if [info exists TOOL_EXECUTABLE] { +- set GNAT_UNDER_TEST "$TOOL_EXECUTABLE" +- } else { +- set GNAT_UNDER_TEST "[local_find_gnatmake]" +- } +- } ++ set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts-shared-zcx --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs" + + if ![info exists tmpdir] then { + set tmpdir /tmp +@@ -154,7 +148,7 @@ + setenv ADA_OBJECTS_PATH "$rtsdir/adainclude" + } + +- set ld_library_path ".:${gnat_libgcc_s_path}" ++ set ld_library_path ".:${gnat_libgcc_s_path}:${rootme}/ada/rts-shared-zcx:${rootme}/libgnatvsn:${rootme}/libgnatprj" + lappend options "compiler=$GNAT_UNDER_TEST -q -f" + lappend options "timeout=[timeout_value]" + --- gcc-4.4-4.4.7.orig/debian/patches/ada-arm-eabi.diff +++ gcc-4.4-4.4.7/debian/patches/ada-arm-eabi.diff @@ -0,0 +1,378 @@ +# DP: Add preliminary Ada support for ARM/EABI to gcc-4.4 (sjlj only). + +gcc/ada/ + +2010-01-11 Mikael Pettersson + + * gcc-interface/Makefile.in: Add arm*-*-linux-gnueabi. + * system-linux-armeb.ads, system-linux-armel.ads: New files. + +Index: gcc/ada/gcc-interface/Makefile.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Makefile.in (revision ++++ b/src/gcc/ada/gcc-interface/Makefile.in (working +@@ -1,5 +1,5 @@ + # Makefile for GNU Ada Compiler (GNAT). +-# Copyright (C) 1994-2009 Free Software Foundation, Inc. ++# Copyright (C) 1994-2010 Free Software Foundation, Inc. + + #This file is part of GCC. + +@@ -1533,6 +1533,41 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := Low_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := False; ++ GCC_ZCX_Support : constant Boolean := False; ++ ++end System; +Index: gcc/ada/system-linux-armeb.ads +=================================================================== +--- a/src/gcc/ada/system-linux-armeb.ads (revision ++++ b/src/gcc/ada/system-linux-armeb.ads (revision +@@ -0,0 +1,153 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (GNU-Linux/ARMEB Version) -- ++-- -- ++-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := False; ++ GCC_ZCX_Support : constant Boolean := False; ++ ++end System; --- gcc-4.4-4.4.7.orig/debian/patches/ada-bug564232.diff +++ gcc-4.4-4.4.7/debian/patches/ada-bug564232.diff @@ -0,0 +1,11 @@ +--- a/src/gcc/ada/gsocket.h ++++ b/src/gcc/ada/gsocket.h +@@ -225,7 +225,7 @@ + # define Need_Netdb_Buffer 0 + #endif + +-#if defined (__FreeBSD__) || defined (__vxworks) || defined(__rtems__) ++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__vxworks) || defined(__rtems__) + # define Has_Sockaddr_Len 1 + #else + # define Has_Sockaddr_Len 0 --- gcc-4.4-4.4.7.orig/debian/patches/ada-bug589164.diff +++ gcc-4.4-4.4.7/debian/patches/ada-bug589164.diff @@ -0,0 +1,63 @@ +DP: Backport a patch from GCC 4.5 that fixes Debian bug #589164. + +commit e24057574351e460afdd3ab007c36f34c7ae7398 +Author: charlet +Date: Fri Apr 17 12:12:07 2009 +0000 + + 2009-04-17 Thomas Quinot + + * exp_ch7.adb (Expand_Ctrl_Function_Call): Remove incorrect special + case for the case of an aggregate component, the attach call for the + result is actually needed. + + * exp_aggr.adb (Backend_Processing_Possible): Backend processing for + an array aggregate must be disabled if the component type requires + controlled actions. + + git-svn-id: svn://gcc.gnu.org/svn/gcc/trunk@146254 138bc75d-0d04-0410-961f-82ee72b054a4 + +Index: b/src/gcc/ada/exp_aggr.adb +=================================================================== +--- a/src/gcc/ada/exp_aggr.adb ++++ b/src/gcc/ada/exp_aggr.adb +@@ -505,6 +505,8 @@ + -- 9. There cannot be any discriminated record components, since the + -- back end cannot handle this complex case. + ++ -- 10. No controlled actions need to be generated for components. ++ + function Backend_Processing_Possible (N : Node_Id) return Boolean is + Typ : constant Entity_Id := Etype (N); + -- Typ is the correct constrained array subtype of the aggregate +@@ -579,9 +581,9 @@ + -- Start of processing for Backend_Processing_Possible + + begin +- -- Checks 2 (array must not be bit packed) ++ -- Checks 2 (array not bit packed) and 10 (no controlled actions) + +- if Is_Bit_Packed_Array (Typ) then ++ if Is_Bit_Packed_Array (Typ) or else Needs_Finalization (Typ) then + return False; + end if; + +Index: b/src/gcc/ada/exp_ch7.adb +=================================================================== +--- a/src/gcc/ada/exp_ch7.adb ++++ b/src/gcc/ada/exp_ch7.adb +@@ -1403,15 +1403,6 @@ + + -- Attach_To_Final_List (_Lx, Resx (Resx'last)._controller, 3); + +- -- If the context is an aggregate, the call will be expanded into an +- -- assignment, and the attachment will be done when the aggregate +- -- expansion is complete. See body of Exp_Aggr for the treatment of +- -- other controlled components. +- +- if Nkind (Parent (N)) = N_Aggregate then +- return; +- end if; +- + -- Case where type has controlled components + + if Has_Controlled_Component (Rtype) then --- gcc-4.4-4.4.7.orig/debian/patches/ada-bug601133.diff +++ gcc-4.4-4.4.7/debian/patches/ada-bug601133.diff @@ -0,0 +1,31 @@ +Revert the change in uintp.adb that changes the checksum of the source +file in the .ali file, causing bug #601133. + +Index: b/src/gcc/ada/uintp.adb +=================================================================== +--- a/src/gcc/ada/uintp.adb ++++ b/src/gcc/ada/uintp.adb +@@ -239,7 +239,7 @@ + + function Hash_Num (F : Int) return Hnum is + begin +- return Types."mod" (F, Hnum'Range_Length); ++ return Standard."mod" (F, Hnum'Range_Length); + end Hash_Num; + + --------------- +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 +@@ -995,8 +995,8 @@ + $(ECHO) "with Osint; use Osint;" >>tmp-sdefault.adb + $(ECHO) "package body Sdefault is" >>tmp-sdefault.adb + $(ECHO) " S0 : constant String := \"$(prefix)/\";" >>tmp-sdefault.adb +- $(ECHO) " S1 : constant String := \"$(ADA_INCLUDE_DIR)/\";" >>tmp-sdefault.adb +- $(ECHO) " S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb ++ $(ECHO) " S1 : constant String := \"$(libdir)/gcc/$(target_noncanonical)/4.4/adainclude/\";" >>tmp-sdefault.adb ++ $(ECHO) " S2 : constant String := \"$(libdir)/gcc/$(target_noncanonical)/4.4/adalib/\";" >>tmp-sdefault.adb + $(ECHO) " S3 : constant String := \"$(target)/\";" >>tmp-sdefault.adb + $(ECHO) " S4 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb + $(ECHO) " function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb --- gcc-4.4-4.4.7.orig/debian/patches/ada-default-project-path.diff +++ gcc-4.4-4.4.7/debian/patches/ada-default-project-path.diff @@ -0,0 +1,122 @@ +# DP: - Change the default search path for project files to the one specified +# DP: by the Debian Policy for Ada: /usr/share/ada/adainclude. + +Index: src/gcc/ada/gcc-interface/Make-lang.in +=================================================================== +--- a/src/gcc/ada/gcc-interface/Make-lang.in.orig ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -998,7 +998,7 @@ + $(ECHO) " S1 : constant String := \"$(ADA_INCLUDE_DIR)/\";" >>tmp-sdefault.adb + $(ECHO) " S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb + $(ECHO) " S3 : constant String := \"$(target)/\";" >>tmp-sdefault.adb +- $(ECHO) " S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb ++ $(ECHO) " S4 : constant String := \"/usr/share/ada/adainclude/\";" >>tmp-sdefault.adb + $(ECHO) " function Include_Dir_Default_Name return String_Ptr is" >>tmp-sdefault.adb + $(ECHO) " begin" >>tmp-sdefault.adb + $(ECHO) " return Relocate_Path (S0, S1);" >>tmp-sdefault.adb +Index: src/gcc/ada/prj-ext.adb +=================================================================== +--- a/src/gcc/ada/prj-ext.adb.orig ++++ b/src/gcc/ada/prj-ext.adb +@@ -24,7 +24,6 @@ + ------------------------------------------------------------------------------ + + with Hostparm; +-with Makeutl; use Makeutl; + with Output; use Output; + with Osint; use Osint; + with Sdefault; +@@ -252,36 +251,10 @@ + + -- Set the initial value of Current_Project_Path + +- if Add_Default_Dir then +- declare +- Prefix : String_Ptr := Sdefault.Search_Dir_Prefix; +- begin +- if Prefix = null then +- Prefix := new String'(Executable_Prefix_Path); +- +- if Prefix.all /= "" then +- if Get_Mode = Multi_Language then +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- Directory_Separator & "share" & +- Directory_Separator & "gpr"); +- end if; +- +- Add_Str_To_Name_Buffer +- (Path_Separator & Prefix.all & +- Directory_Separator & "lib" & +- Directory_Separator & "gnat"); +- end if; +- +- else +- Current_Project_Path := +- new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & +- Prefix.all & +- ".." & Directory_Separator & +- ".." & Directory_Separator & +- ".." & Directory_Separator & "gnat"); +- end if; +- end; ++ if Add_Default_Dir and Sdefault.Search_Dir_Prefix /= null then ++ Current_Project_Path := ++ new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & ++ Sdefault.Search_Dir_Prefix.all); + end if; + + if Current_Project_Path = null then +Index: src/gcc/ada/gnatls.adb +=================================================================== +--- a/src/gcc/ada/gnatls.adb.orig ++++ b/src/gcc/ada/gnatls.adb +@@ -1624,9 +1624,6 @@ + declare + Project_Path : String_Access := Getenv (Gpr_Project_Path); + +- Lib : constant String := +- Directory_Separator & "lib" & Directory_Separator; +- + First : Natural; + Last : Natural; + +@@ -1686,36 +1683,8 @@ + if Add_Default_Dir then + Name_Len := 0; + Add_Str_To_Name_Buffer (Sdefault.Search_Dir_Prefix.all); +- +- -- On Windows, make sure that all directory separators are '\' +- +- if Directory_Separator /= '/' then +- for J in 1 .. Name_Len loop +- if Name_Buffer (J) = '/' then +- Name_Buffer (J) := Directory_Separator; +- end if; +- end loop; +- end if; +- +- -- Find the sequence "/lib/" +- +- while Name_Len >= Lib'Length +- and then Name_Buffer (Name_Len - 4 .. Name_Len) /= Lib +- loop +- Name_Len := Name_Len - 1; +- end loop; +- +- -- If the sequence "/lib"/ was found, display the default +- -- directory /lib/gnat/. +- +- if Name_Len >= 5 then +- Name_Buffer (Name_Len + 1 .. Name_Len + 4) := "gnat"; +- Name_Buffer (Name_Len + 5) := Directory_Separator; +- Name_Len := Name_Len + 5; +- Write_Str (" "); +- Write_Line +- (To_Host_Dir_Spec (Name_Buffer (1 .. Name_Len), True).all); +- end if; ++ Write_Str (" "); ++ Write_Line (Name_Buffer (1 .. Name_Len)); + end if; + end; + --- gcc-4.4-4.4.7.orig/debian/patches/ada-driver-check.diff +++ gcc-4.4-4.4.7/debian/patches/ada-driver-check.diff @@ -0,0 +1,26 @@ +# DP: Simplify Ada driver check (we always build using the required +# DP: Ada version. Needed for warnings on alpha. + +--- a/src/config/acx.m4~ 2007-09-02 19:24:08.865326043 +0200 ++++ b/src/config/acx.m4 2007-09-02 19:28:53.719623005 +0200 +@@ -380,7 +380,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi + +--- a/src/configure~ 2007-09-02 16:50:31.206279000 +0200 ++++ b/src/configure 2007-09-02 19:28:58.259691491 +0200 +@@ -4448,7 +4448,7 @@ + # Other compilers, like HP Tru64 UNIX cc, exit successfully when + # given a .adb file, but produce no object file. So we must check + # if an object file was really produced to guard against this. +-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure` ++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure` + if test x"$errors" = x && test -f conftest.$ac_objext; then + acx_cv_cc_gcc_supports_ada=yes + fi --- gcc-4.4-4.4.7.orig/debian/patches/ada-gcc-name.diff +++ gcc-4.4-4.4.7/debian/patches/ada-gcc-name.diff @@ -0,0 +1,112 @@ +# DP: use gcc-4.4 instead of gcc as the command name. + +Index: b/src/gcc/ada/comperr.adb +=================================================================== +--- a/src/gcc/ada/comperr.adb ++++ b/src/gcc/ada/comperr.adb +@@ -356,7 +356,7 @@ + End_Line; + + Write_Str +- ("| Include the exact gcc or gnatmake command " & ++ ("| Include the exact gcc-4.4 or gnatmake command " & + "that you entered."); + End_Line; + +Index: b/src/gcc/ada/gnatlink.adb +=================================================================== +--- a/src/gcc/ada/gnatlink.adb ++++ b/src/gcc/ada/gnatlink.adb +@@ -137,7 +137,7 @@ + -- This table collects the arguments to be passed to compile the binder + -- generated file. + +- Gcc : String_Access := Program_Name ("gcc", "gnatlink"); ++ Gcc : String_Access := Program_Name ("gcc-4.4", "gnatlink"); + + Read_Mode : constant String := "r" & ASCII.NUL; + +@@ -1411,7 +1411,8 @@ + end if; + + Write_Line (" --GCC=comp Use comp as the compiler"); +- Write_Line (" --LINK=nam Use 'nam' for the linking rather than 'gcc'"); ++ Write_Line (" --LINK=nam Use 'nam' for the linking rather " & ++ "than 'gcc-4.4'"); + Write_Eol; + Write_Line (" [non-Ada-objects] list of non Ada object files"); + Write_Line (" [linker-options] other options for the linker"); +Index: b/src/gcc/ada/make.adb +=================================================================== +--- a/src/gcc/ada/make.adb ++++ b/src/gcc/ada/make.adb +@@ -670,7 +670,7 @@ + -- Compiler, Binder & Linker Data and Subprograms -- + ---------------------------------------------------- + +- Gcc : String_Access := Program_Name ("gcc", "gnatmake"); ++ Gcc : String_Access := Program_Name ("gcc-4.4", "gnatmake"); + Gnatbind : String_Access := Program_Name ("gnatbind", "gnatmake"); + Gnatlink : String_Access := Program_Name ("gnatlink", "gnatmake"); + -- Default compiler, binder, linker programs +Index: b/src/gcc/ada/gnatchop.adb +=================================================================== +--- a/src/gcc/ada/gnatchop.adb ++++ b/src/gcc/ada/gnatchop.adb +@@ -44,7 +44,7 @@ + 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 := new String'("gcc-4.4"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; +Index: b/src/gcc/ada/mdll-utl.adb +=================================================================== +--- a/src/gcc/ada/mdll-utl.adb ++++ b/src/gcc/ada/mdll-utl.adb +@@ -39,7 +39,7 @@ + Dlltool_Name : constant String := "dlltool"; + Dlltool_Exec : OS_Lib.String_Access; + +- Gcc_Name : constant String := "gcc"; ++ Gcc_Name : constant String := "gcc-4.4"; + Gcc_Exec : OS_Lib.String_Access; + + Gnatbind_Name : constant String := "gnatbind"; +@@ -212,7 +212,7 @@ + end; + end if; + +- Print_Command ("gcc", Arguments (1 .. A)); ++ Print_Command ("gcc-4.4", Arguments (1 .. A)); + + OS_Lib.Spawn (Gcc_Exec.all, Arguments (1 .. A), Success); + +Index: b/src/gcc/ada/mlib-utl.adb +=================================================================== +--- a/src/gcc/ada/mlib-utl.adb ++++ b/src/gcc/ada/mlib-utl.adb +@@ -412,7 +412,7 @@ + if Driver_Name = No_Name then + if Gcc_Exec = null then + if Gcc_Name = null then +- Gcc_Name := Osint.Program_Name ("gcc", "gnatmake"); ++ Gcc_Name := Osint.Program_Name ("gcc-4.4", "gnatmake"); + end if; + + Gcc_Exec := Locate_Exec_On_Path (Gcc_Name.all); +Index: b/src/gcc/ada/prj-makr.adb +=================================================================== +--- a/src/gcc/ada/prj-makr.adb ++++ b/src/gcc/ada/prj-makr.adb +@@ -109,7 +109,7 @@ + + procedure Dup2 (Old_Fd, New_Fd : File_Descriptor); + +- Gcc : constant String := "gcc"; ++ Gcc : constant String := "gcc-4.4"; + Gcc_Path : String_Access := null; + + Non_Empty_Node : constant Project_Node_Id := 1; --- gcc-4.4-4.4.7.orig/debian/patches/ada-gnatvsn.diff +++ gcc-4.4-4.4.7/debian/patches/ada-gnatvsn.diff @@ -0,0 +1,23 @@ +# DP: proposed patch for PR ada/27194. + +--- a/src/gcc/gnatvsn.adb.orig 2005-07-01 03:29:17.000000000 +0200 ++++ b/src/gcc/ada/gnatvsn.adb 2006-04-18 10:00:05.100002000 +0200 +@@ -54,12 +54,13 @@ + ---/---------------------- + + function Gnat_Version_String return String is +- NUL_Pos : Positive := 1; ++ NUL_Pos : Positive := Version_String'Last; + begin +- loop +- exit when Version_String (NUL_Pos) = ASCII.NUL; +- +- NUL_Pos := NUL_Pos + 1; ++ for J in Version_String'Range loop ++ if Version_String (J) = ASCII.NUL then ++ NUL_Pos := J; ++ exit; ++ end if; + end loop; + + return Version_String (1 .. NUL_Pos - 1); --- gcc-4.4-4.4.7.orig/debian/patches/ada-libgnatprj.diff +++ gcc-4.4-4.4.7/debian/patches/ada-libgnatprj.diff @@ -0,0 +1,1638 @@ +# DP: - Introduce a new shared library named libgnatprj, containing +# DP: the GNAT project file manager licensed under the pure GPL, for +# DP: use in GNAT tools, GLADE and GPS. Link the GNAT tools against +# DP: this new library. + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +# !!! Must be applied after ada-libgnatvsn.dpatch + +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 +@@ -36,8 +36,8 @@ + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-target_libs="target-libada target-libgnatvsn" +-lang_dirs="libada libgnatvsn gnattools" ++target_libs="target-libada target-libgnatvsn target-libgnatprj" ++lang_dirs="libada libgnatvsn libgnatprj gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -36,13 +36,13 @@ + target_noncanonical=@target_noncanonical@ + + CFLAGS=-O2 -Wall +-INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) + ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) + ADA_LIBS += -L../libgnatvsn -lgnatvsn ++ADA_LIBS += -L../libgnatprj -lgnatprj + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -67,74 +67,18 @@ + + # Since we don't have gnatmake, we must specify the full list of + # object files necessary to build gnatmake and gnatlink. +-# TODO: remove from these lists the objects that are part of +-# libgnatprj. + GNATLINK_OBJS = \ +-ali.o \ +-butil.o \ +-fmap.o \ + gnatlink.o \ + indepsw.o \ +-osint.o \ +-prefix.o \ +-rident.o \ +-sdefault.o \ +-stylesw.o \ +-switch.o \ +-targparm.o \ + validsw.o + + GNATMAKE_OBJS = \ +-ali-util.o \ +-ali.o \ +-binderr.o \ +-butil.o \ +-err_vars.o \ +-erroutc.o \ +-errutil.o \ +-fmap.o \ + fname-sf.o \ +-fname-uf.o \ + gnatmake.o \ + make.o \ + makeusg.o \ +-makeutl.o \ +-mlib-fil.o \ + mlib-prj.o \ +-mlib-tgt.o \ +-mlib-tgt-specific.o \ +-mlib-utl.o \ +-mlib.o \ + osint-m.o \ +-osint.o \ +-prefix.o \ +-prj-attr-pm.o \ +-prj-attr.o \ +-prj-com.o \ +-prj-dect.o \ +-prj-env.o \ +-prj-err.o \ +-prj-ext.o \ +-prj-nmsc.o \ +-prj-pars.o \ +-prj-part.o \ +-prj-proc.o \ +-prj-strt.o \ +-prj-tree.o \ +-prj-util.o \ +-prj.o \ +-rident.o \ +-scng.o \ +-sdefault.o \ +-sfn_scan.o \ +-sinput-c.o \ +-sinput-p.o \ +-styleg.o \ +-stylesw.o \ +-switch-m.o \ +-switch.o \ +-targparm.o \ +-tempdir.o \ + usage.o \ + validsw.o \ + $(EXTRA_GNATMAKE_OBJS) +@@ -175,11 +119,6 @@ + for file in $(BODIES) $(SPECS); do \ + $(LN_S) -f $$file .; \ + done +- rm -f sdefault.adb; $(LN_S) ../gcc/ada/sdefault.adb . +- $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ +- rm -f $(word 1,$(subst <, ,$(PAIR)));\ +- $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ +- $(word 1,$(subst <, ,$(PAIR)));) + touch $@ + + gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so +@@ -192,19 +131,16 @@ + vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc + vpath %.h @srcdir@/../gcc/ada + +-# Because the just-built gcc is a host tool like us, we can use some +-# of its object files, e.g. prefix.o. +-vpath prefix.o ../gcc +- + # gnatlink + +-gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o ++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o + $(GCC) -o $@ $^ \ ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +-gnatlink: $(GNATLINK_OBJS) b_gnatl.o link.o ++gnatlink: $(GNATLINK_OBJS) b_gnatl.o + $(GCC) -o $@ $^ $(ADA_LIBS) ../libiberty/libiberty.a + + b_gnatl.o: b_gnatl.c adaint.h +@@ -215,13 +151,14 @@ + + # gnatmake + +-gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o ++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ ++ ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +-gnatmake: $(GNATMAKE_OBJS) b_gnatm.o link.o ++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ $(ADA_LIBS) ../libiberty/libiberty.a + + b_gnatm.o: b_gnatm.c adaint.h +@@ -231,19 +168,11 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatkr: +- if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi +- ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ +- --GCC="$(GCC)" \ +- --GNATBIND=../gcc/gnatbind +- ./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \ +- --GCC="$(GCC) $(ADA_INCLUDES)" +- + gnat: gnatcmd + cp -lp $< $@ + +-gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \ +-link.o prefix.o ++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \ ++gnatxref: + if [ ! -f $@.adb ] ; then $(LN_S) ../../src/gcc/ada/$@.ad[bs] .; fi + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ +@@ -252,22 +181,12 @@ + ../libiberty/libiberty.a \ + --GCC="$(GCC) $(ADA_INCLUDES)" + +-# Force compiling sdefault.adb, not .ads, to produce sdefault.o +-sdefault.o: sdefault.adb +- +-sdefault.adb: stamp-gnattools-sources +- + %.o: %.adb + $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) + + %.o: %.ads + $(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES) + +-%.o: %.c +- $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) +- +-prefix.o: +- + # Other + # ----- + +Index: b/src/libgnatprj/Makefile.in +=================================================================== +--- /dev/null ++++ b/src/libgnatprj/Makefile.in +@@ -0,0 +1,177 @@ ++# Makefile for libgnatprj. ++# Copyright (c) 2006 Ludovic Brenta ++# ++# 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 ++ ++# Default target; must be first. ++all: libgnatprj ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC:=../gcc/xgcc -B../gcc/ ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++LIBGNATVSN := -I../libgnatvsn ++CFLAGS := -g -O2 ++ADAFLAGS := -g -O2 -gnatn ++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++TOOLS_TARGET_PAIRS := @TOOLS_TARGET_PAIRS@ ++LN_S := @LN_S@ ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatprj install ++libgnatprj: libgnatprj.so.$(LIB_VERSION) libgnatprj.a ++ ++# Here we list one file per Ada unit: the body file if the unit has a ++# body, the spec file otherwise. ++PRJ_SOURCES := ali.adb ali-util.adb butil.adb binderr.adb errout.adb \ ++erroutc.adb errutil.adb err_vars.ads fname-uf.adb fmap.adb impunit.adb \ ++lib-util.adb makeutl.adb mlib.adb mlib-fil.adb mlib-tgt.adb \ ++mlib-tgt-specific.adb mlib-utl.adb osint.adb osint-c.adb prj.adb prj-attr.adb \ ++prj-attr-pm.adb prj-com.ads prj-dect.adb prj-env.adb prj-err.adb prj-ext.adb \ ++prj-nmsc.adb prj-pars.adb prj-part.adb prj-pp.adb prj-proc.adb prj-strt.adb \ ++prj-tree.adb prj-util.adb rident.ads scng.adb sfn_scan.adb sinfo-cn.adb \ ++sinput-c.adb sinput-p.adb style.ads styleg.adb styleg-c.adb stylesw.adb \ ++switch.adb switch-m.adb targparm.adb tempdir.adb ++ ++# Source files generated in build/gcc/ada, not src/gcc/ada. ++GENERATED_SOURCES := sdefault.adb ++ ++SOURCES := $(PRJ_SOURCES) $(GENERATED_SOURCES) ++ ++OBJECTS := $(patsubst %.ads,%.o,$(SOURCES:.adb=.o)) ++ ++# Add some object files compiled from C sources. prefix.o requires ++# some objects from libiberty. ++OBJECTS += concat.o link.o prefix.o xexit.o xmalloc.o xstrdup.o ++ ++vpath %.c @srcdir@/../gcc/ada ++ ++libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatprj.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L../libgnatvsn -lgnatvsn ++ $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.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 . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatprj-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-shared/%.o: %.c ++ $(GCC) -c -fPIC $(CFLAGS) -I@srcdir@/../gcc $< -o $@ ++ ++obj-shared/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GCC) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ $< -o $@ ++ ++obj-shared/%.o: @srcdir@/../libiberty/%.c ++ $(GCC) -c -fPIC $(CFLAGS) \ ++ -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatprj.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatprj.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatprj-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@ ++ ++obj-static/%.o: %.c ++ $(GCC) -c $(CFLAGS) -I@srcdir@/../gcc $< -o $@ ++ ++obj-static/prefix.o: @srcdir@/../gcc/prefix.c ++ $(GCC) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \ ++ -I@srcdir@/../gcc -I@srcdir@/../include -I../gcc -I../libiberty \ ++ $< -o $@ ++ ++obj-static/%.o: @srcdir@/../libiberty/%.c ++ $(GCC) -c -fPIC $(CFLAGS) \ ++ -I@srcdir@/../libiberty -I@srcdir@/../include $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(SOURCES): stamp-libgnatprj-sources ++ ++stamp-libgnatprj-sources: ++ for file in $(PRJ_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ for file in $(GENERATED_SOURCES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f ../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) ../gcc/ada/$$file .; fi; \ ++ if [ -f ../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) ../gcc/ada/$$ads .; \ ++ else \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \ ++ fi; \ ++ done ++ $(foreach PAIR,$(TOOLS_TARGET_PAIRS), \ ++ rm -f $(word 1,$(subst <, ,$(PAIR)));\ ++ $(LN_S) @srcdir@/../gcc/ada/$(word 2,$(subst <, ,$(PAIR))) \ ++ $(word 1,$(subst <, ,$(PAIR)));) ++ touch $@ ++ ++# Generate a list of source files (.ads and .adb) to install. Almost ++# all of them are in src/gcc/ada, but some are generated during build ++# and are in build/gcc/ada. ++BODIES := $(filter %.adb,$(PRJ_SOURCES)) ++SPECS := $(filter %.ads,$(PRJ_SOURCES)) $(patsubst %.adb,%.ads,$(BODIES) $(GENERATED_SOURCES)) ++SOURCES_TO_INSTALL := \ ++$(addprefix @srcdir@/../gcc/ada/,$(SPECS) $(BODIES)) \ ++$(addprefix ../gcc/ada/,$(GENERATED_SOURCES)) ++ ++install: libgnatprj ++ $(INSTALL_DATA) libgnatprj.a $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) libgnatprj.so.$(LIB_VERSION) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; \ ++ ln -sf libgnatprj.so.$(LIB_VERSION) libgnatprj.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ $(INSTALL_DATA) $(SOURCES_TO_INSTALL) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatprj* *.adb *.ads stamp* +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -150,6 +150,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -195,6 +202,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatprj; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; lib_path=.libs; }; + + // These are (some of) the make targets to be done in each subdirectory. +@@ -371,7 +385,10 @@ + + dependencies = { module=all-gnattools; on=all-libada; }; + dependencies = { module=all-gnattools; on=all-libgnatvsn; }; ++dependencies = { module=all-gnattools; on=all-libgnatprj; }; + dependencies = { module=all-libgnatvsn; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libada; }; ++dependencies = { module=all-libgnatprj; on=all-libgnatvsn; }; + + dependencies = { module=configure-mpfr; on=all-gmp; }; + dependencies = { module=configure-ppl; on=all-gmp; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -748,6 +748,7 @@ + maybe-configure-utils \ + maybe-configure-libada \ + maybe-configure-libgnatvsn \ ++ maybe-configure-libgnatprj \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -772,6 +773,7 @@ + maybe-configure-target-rda \ + maybe-configure-target-libada \ + maybe-configure-target-libgnatvsn \ ++ maybe-configure-target-libgnatprj \ + maybe-configure-target-libgomp + + # The target built for a native non-bootstrap build. +@@ -911,6 +913,7 @@ + all-host: maybe-all-utils + all-host: maybe-all-libada + all-host: maybe-all-libgnatvsn ++all-host: maybe-all-libgnatprj + all-host: maybe-all-gnattools + + .PHONY: all-target +@@ -938,6 +941,7 @@ + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgnatvsn ++all-target: maybe-all-target-libgnatprj + all-target: maybe-all-target-libgomp + + # Do a target for all the subdirectories. A ``make do-X'' will do a +@@ -1031,6 +1035,7 @@ + info-host: maybe-info-utils + info-host: maybe-info-libada + info-host: maybe-info-libgnatvsn ++info-host: maybe-info-libgnatprj + info-host: maybe-info-gnattools + + .PHONY: info-target +@@ -1056,6 +1061,7 @@ + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgnatvsn ++info-target: maybe-info-target-libgnatprj + info-target: maybe-info-target-libgomp + + .PHONY: do-dvi +@@ -1144,6 +1150,7 @@ + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada + dvi-host: maybe-dvi-libgnatvsn ++dvi-host: maybe-dvi-libgnatprj + dvi-host: maybe-dvi-gnattools + + .PHONY: dvi-target +@@ -1169,6 +1176,7 @@ + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgnatvsn ++dvi-target: maybe-dvi-target-libgnatprj + dvi-target: maybe-dvi-target-libgomp + + .PHONY: do-pdf +@@ -1257,6 +1265,7 @@ + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada + pdf-host: maybe-pdf-libgnatvsn ++pdf-host: maybe-pdf-libgnatprj + pdf-host: maybe-pdf-gnattools + + .PHONY: pdf-target +@@ -1282,6 +1291,7 @@ + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgnatvsn ++pdf-target: maybe-pdf-target-libgnatprj + pdf-target: maybe-pdf-target-libgomp + + .PHONY: do-html +@@ -1370,6 +1380,7 @@ + html-host: maybe-html-utils + html-host: maybe-html-libada + html-host: maybe-html-libgnatvsn ++html-host: maybe-html-libgnatprj + html-host: maybe-html-gnattools + + .PHONY: html-target +@@ -1395,6 +1406,7 @@ + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgnatvsn ++html-target: maybe-html-target-libgnatprj + html-target: maybe-html-target-libgomp + + .PHONY: do-TAGS +@@ -1483,6 +1495,7 @@ + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada + TAGS-host: maybe-TAGS-libgnatvsn ++TAGS-host: maybe-TAGS-libgnatprj + TAGS-host: maybe-TAGS-gnattools + + .PHONY: TAGS-target +@@ -1508,6 +1521,7 @@ + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgnatvsn ++TAGS-target: maybe-TAGS-target-libgnatprj + TAGS-target: maybe-TAGS-target-libgomp + + .PHONY: do-install-info +@@ -1596,6 +1610,7 @@ + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada + install-info-host: maybe-install-info-libgnatvsn ++install-info-host: maybe-install-info-libgnatprj + install-info-host: maybe-install-info-gnattools + + .PHONY: install-info-target +@@ -1621,6 +1636,7 @@ + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgnatvsn ++install-info-target: maybe-install-info-target-libgnatprj + install-info-target: maybe-install-info-target-libgomp + + .PHONY: do-install-pdf +@@ -1709,6 +1725,7 @@ + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada + install-pdf-host: maybe-install-pdf-libgnatvsn ++install-pdf-host: maybe-install-pdf-libgnatprj + install-pdf-host: maybe-install-pdf-gnattools + + .PHONY: install-pdf-target +@@ -1734,6 +1751,7 @@ + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgnatvsn ++install-pdf-target: maybe-install-pdf-target-libgnatprj + install-pdf-target: maybe-install-pdf-target-libgomp + + .PHONY: do-install-html +@@ -1822,6 +1840,7 @@ + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada + install-html-host: maybe-install-html-libgnatvsn ++install-html-host: maybe-install-html-libgnatprj + install-html-host: maybe-install-html-gnattools + + .PHONY: install-html-target +@@ -1847,6 +1866,7 @@ + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgnatvsn ++install-html-target: maybe-install-html-target-libgnatprj + install-html-target: maybe-install-html-target-libgomp + + .PHONY: do-installcheck +@@ -1935,6 +1955,7 @@ + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada + installcheck-host: maybe-installcheck-libgnatvsn ++installcheck-host: maybe-installcheck-libgnatprj + installcheck-host: maybe-installcheck-gnattools + + .PHONY: installcheck-target +@@ -1960,6 +1981,7 @@ + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgnatvsn ++installcheck-target: maybe-installcheck-target-libgnatprj + installcheck-target: maybe-installcheck-target-libgomp + + .PHONY: do-mostlyclean +@@ -2048,6 +2070,7 @@ + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada + mostlyclean-host: maybe-mostlyclean-libgnatvsn ++mostlyclean-host: maybe-mostlyclean-libgnatprj + mostlyclean-host: maybe-mostlyclean-gnattools + + .PHONY: mostlyclean-target +@@ -2073,6 +2096,7 @@ + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgnatvsn ++mostlyclean-target: maybe-mostlyclean-target-libgnatprj + mostlyclean-target: maybe-mostlyclean-target-libgomp + + .PHONY: do-clean +@@ -2161,6 +2185,7 @@ + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada + clean-host: maybe-clean-libgnatvsn ++clean-host: maybe-clean-libgnatprj + clean-host: maybe-clean-gnattools + + .PHONY: clean-target +@@ -2186,6 +2211,7 @@ + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgnatvsn ++clean-target: maybe-clean-target-libgnatprj + clean-target: maybe-clean-target-libgomp + + .PHONY: do-distclean +@@ -2274,6 +2300,7 @@ + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada + distclean-host: maybe-distclean-libgnatvsn ++distclean-host: maybe-distclean-libgnatprj + distclean-host: maybe-distclean-gnattools + + .PHONY: distclean-target +@@ -2299,6 +2326,7 @@ + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgnatvsn ++distclean-target: maybe-distclean-target-libgnatprj + distclean-target: maybe-distclean-target-libgomp + + .PHONY: do-maintainer-clean +@@ -2387,6 +2415,7 @@ + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada + maintainer-clean-host: maybe-maintainer-clean-libgnatvsn ++maintainer-clean-host: maybe-maintainer-clean-libgnatprj + maintainer-clean-host: maybe-maintainer-clean-gnattools + + .PHONY: maintainer-clean-target +@@ -2412,6 +2441,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + + +@@ -2554,6 +2584,7 @@ + maybe-check-utils \ + maybe-check-libada \ + maybe-check-libgnatvsn \ ++ maybe-check-libgnatprj \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2579,6 +2610,7 @@ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgnatvsn \ ++ maybe-check-target-libgnatprj \ + maybe-check-target-libgomp + + do-check: +@@ -2693,6 +2725,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2772,6 +2805,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2797,6 +2831,7 @@ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgnatvsn \ ++ maybe-install-target-libgnatprj \ + maybe-install-target-libgomp + + uninstall: +@@ -43318,6 +43353,327 @@ + + + ++.PHONY: configure-libgnatprj maybe-configure-libgnatprj ++maybe-configure-libgnatprj: ++@if gcc-bootstrap ++configure-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++maybe-configure-libgnatprj: configure-libgnatprj ++configure-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatprj ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatprj; \ ++ cd "$(HOST_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-libgnatprj maybe-all-libgnatprj ++maybe-all-libgnatprj: ++@if gcc-bootstrap ++all-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if libgnatprj ++TARGET-libgnatprj=all ++maybe-all-libgnatprj: all-libgnatprj ++all-libgnatprj: configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgnatprj)) ++@endif libgnatprj ++ ++ ++ ++ ++.PHONY: check-libgnatprj maybe-check-libgnatprj ++maybe-check-libgnatprj: ++@if libgnatprj ++maybe-check-libgnatprj: check-libgnatprj ++ ++check-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: install-libgnatprj maybe-install-libgnatprj ++maybe-install-libgnatprj: ++@if libgnatprj ++maybe-install-libgnatprj: install-libgnatprj ++ ++install-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatprj info-libgnatprj ++maybe-info-libgnatprj: ++@if libgnatprj ++maybe-info-libgnatprj: info-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-dvi-libgnatprj dvi-libgnatprj ++maybe-dvi-libgnatprj: ++@if libgnatprj ++maybe-dvi-libgnatprj: dvi-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-pdf-libgnatprj pdf-libgnatprj ++maybe-pdf-libgnatprj: ++@if libgnatprj ++maybe-pdf-libgnatprj: pdf-libgnatprj ++ ++pdf-libgnatprj: \ ++ configure-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-html-libgnatprj html-libgnatprj ++maybe-html-libgnatprj: ++@if libgnatprj ++maybe-html-libgnatprj: html-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-TAGS-libgnatprj TAGS-libgnatprj ++maybe-TAGS-libgnatprj: ++@if libgnatprj ++maybe-TAGS-libgnatprj: TAGS-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-info-libgnatprj install-info-libgnatprj ++maybe-install-info-libgnatprj: ++@if libgnatprj ++maybe-install-info-libgnatprj: install-info-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-install-pdf-libgnatprj install-pdf-libgnatprj ++maybe-install-pdf-libgnatprj: ++@if libgnatprj ++maybe-install-pdf-libgnatprj: install-pdf-libgnatprj ++ ++install-pdf-libgnatprj: \ ++ configure-libgnatprj \ ++ pdf-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-install-html-libgnatprj install-html-libgnatprj ++maybe-install-html-libgnatprj: ++@if libgnatprj ++maybe-install-html-libgnatprj: install-html-libgnatprj ++ ++install-html-libgnatprj: \ ++ configure-libgnatprj \ ++ html-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-installcheck-libgnatprj installcheck-libgnatprj ++maybe-installcheck-libgnatprj: ++@if libgnatprj ++maybe-installcheck-libgnatprj: installcheck-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-libgnatprj: ++ ++@endif libgnatprj ++ ++.PHONY: maybe-mostlyclean-libgnatprj mostlyclean-libgnatprj ++maybe-mostlyclean-libgnatprj: ++@if libgnatprj ++maybe-mostlyclean-libgnatprj: mostlyclean-libgnatprj ++ ++mostlyclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-clean-libgnatprj clean-libgnatprj ++maybe-clean-libgnatprj: ++@if libgnatprj ++maybe-clean-libgnatprj: clean-libgnatprj ++ ++clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-distclean-libgnatprj distclean-libgnatprj ++maybe-distclean-libgnatprj: ++@if libgnatprj ++maybe-distclean-libgnatprj: distclean-libgnatprj ++ ++distclean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++.PHONY: maybe-maintainer-clean-libgnatprj maintainer-clean-libgnatprj ++maybe-maintainer-clean-libgnatprj: ++@if libgnatprj ++maybe-maintainer-clean-libgnatprj: maintainer-clean-libgnatprj ++ ++maintainer-clean-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatprj/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatprj" ; \ ++ (cd $(HOST_SUBDIR)/libgnatprj && \ ++ $(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 libgnatprj ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -53281,6 +53637,345 @@ + + + ++.PHONY: configure-target-libgnatprj maybe-configure-target-libgnatprj ++maybe-configure-target-libgnatprj: ++@if gcc-bootstrap ++configure-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++maybe-configure-target-libgnatprj: configure-target-libgnatprj ++configure-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatprj..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatprj/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libgnatprj/Makefile; \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libgnatprj/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libgnatprj; \ ++ cd "$(TARGET_SUBDIR)/libgnatprj" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libgnatprj/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatprj"; \ ++ libsrcdir="$$s/libgnatprj"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: all-target-libgnatprj maybe-all-target-libgnatprj ++maybe-all-target-libgnatprj: ++@if gcc-bootstrap ++all-target-libgnatprj: stage_current ++@endif gcc-bootstrap ++@if target-libgnatprj ++TARGET-target-libgnatprj=all ++maybe-all-target-libgnatprj: all-target-libgnatprj ++all-target-libgnatprj: configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) $(TARGET-target-libgnatprj)) ++@endif target-libgnatprj ++ ++ ++ ++ ++ ++.PHONY: check-target-libgnatprj maybe-check-target-libgnatprj ++maybe-check-target-libgnatprj: ++@if target-libgnatprj ++maybe-check-target-libgnatprj: check-target-libgnatprj ++ ++# Dummy target for uncheckable module. ++check-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: install-target-libgnatprj maybe-install-target-libgnatprj ++maybe-install-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-target-libgnatprj: install-target-libgnatprj ++ ++install-target-libgnatprj: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libgnatprj ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libgnatprj info-target-libgnatprj ++maybe-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-info-target-libgnatprj: info-target-libgnatprj ++ ++# libgnatprj doesn't support info. ++info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-dvi-target-libgnatprj dvi-target-libgnatprj ++maybe-dvi-target-libgnatprj: ++@if target-libgnatprj ++maybe-dvi-target-libgnatprj: dvi-target-libgnatprj ++ ++# libgnatprj doesn't support dvi. ++dvi-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-pdf-target-libgnatprj pdf-target-libgnatprj ++maybe-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-pdf-target-libgnatprj: pdf-target-libgnatprj ++ ++pdf-target-libgnatprj: \ ++ configure-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-html-target-libgnatprj html-target-libgnatprj ++maybe-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-html-target-libgnatprj: html-target-libgnatprj ++ ++# libgnatprj doesn't support html. ++html-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-TAGS-target-libgnatprj TAGS-target-libgnatprj ++maybe-TAGS-target-libgnatprj: ++@if target-libgnatprj ++maybe-TAGS-target-libgnatprj: TAGS-target-libgnatprj ++ ++# libgnatprj doesn't support TAGS. ++TAGS-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-info-target-libgnatprj install-info-target-libgnatprj ++maybe-install-info-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-info-target-libgnatprj: install-info-target-libgnatprj ++ ++# libgnatprj doesn't support install-info. ++install-info-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-install-pdf-target-libgnatprj install-pdf-target-libgnatprj ++maybe-install-pdf-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-pdf-target-libgnatprj: install-pdf-target-libgnatprj ++ ++install-pdf-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ pdf-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/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)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-install-html-target-libgnatprj install-html-target-libgnatprj ++maybe-install-html-target-libgnatprj: ++@if target-libgnatprj ++maybe-install-html-target-libgnatprj: install-html-target-libgnatprj ++ ++install-html-target-libgnatprj: \ ++ configure-target-libgnatprj \ ++ html-target-libgnatprj ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/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)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-installcheck-target-libgnatprj installcheck-target-libgnatprj ++maybe-installcheck-target-libgnatprj: ++@if target-libgnatprj ++maybe-installcheck-target-libgnatprj: installcheck-target-libgnatprj ++ ++# libgnatprj doesn't support installcheck. ++installcheck-target-libgnatprj: ++ ++@endif target-libgnatprj ++ ++.PHONY: maybe-mostlyclean-target-libgnatprj mostlyclean-target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-mostlyclean-target-libgnatprj: mostlyclean-target-libgnatprj ++ ++mostlyclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-clean-target-libgnatprj clean-target-libgnatprj ++maybe-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-clean-target-libgnatprj: clean-target-libgnatprj ++ ++clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-distclean-target-libgnatprj distclean-target-libgnatprj ++maybe-distclean-target-libgnatprj: ++@if target-libgnatprj ++maybe-distclean-target-libgnatprj: distclean-target-libgnatprj ++ ++distclean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++.PHONY: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: ++@if target-libgnatprj ++maybe-maintainer-clean-target-libgnatprj: maintainer-clean-target-libgnatprj ++ ++maintainer-clean-target-libgnatprj: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatprj/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)/libgnatprj" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libgnatprj && \ ++ $(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-libgnatprj ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -56116,6 +56811,7 @@ + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgnatvsn: stage_last ++configure-target-libgnatprj: stage_last + configure-target-libgomp: stage_last + @endif gcc-bootstrap + +@@ -56141,6 +56837,7 @@ + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgnatvsn: maybe-all-gcc ++configure-target-libgnatprj: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + @endif gcc-no-bootstrap + +@@ -56426,7 +57123,10 @@ + all-fixincludes: maybe-all-libiberty + all-gnattools: maybe-all-libada + all-gnattools: maybe-all-libgnatvsn ++all-gnattools: maybe-all-libgnatprj + all-libgnatvsn: maybe-all-libada ++all-libgnatprj: maybe-all-libada ++all-libgnatprj: maybe-all-libgnatvsn + configure-mpfr: maybe-all-gmp + + configure-stage1-mpfr: maybe-all-stage1-gmp +@@ -56988,6 +57688,7 @@ + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgnatvsn: maybe-all-target-libgcc ++configure-target-libgnatprj: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc + @endif gcc-no-bootstrap + +@@ -57032,6 +57733,8 @@ + + configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -158,7 +158,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog libiconv libada libgnatvsn" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog libiconv libada libgnatvsn libgnatprj" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -190,7 +190,8 @@ + ${libgcj} \ + target-libobjc \ + target-libada \ +- target-libgnatvsn" ++ target-libgnatvsn \ ++ target-libgnatprj" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -272,7 +273,7 @@ + + # Similarly, some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn target-libgnatprj" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -381,7 +382,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs libgnatvsn gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn libgnatprj gnattools" + fi + + AC_ARG_ENABLE(libssp, +Index: b/src/libgnatprj/configure.ac +=================================================================== +--- /dev/null ++++ b/src/libgnatprj/configure.ac +@@ -0,0 +1,148 @@ ++# Configure script for libada. ++# Copyright 2003, 2004 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++AC_INIT ++AC_PREREQ([2.59]) ++ ++AC_CONFIG_SRCDIR([Makefile.in]) ++ ++# Start of actual configure tests ++ ++AC_PROG_INSTALL ++ ++AC_CANONICAL_BUILD ++AC_CANONICAL_HOST ++AC_CANONICAL_TARGET ++ ++sinclude(../config/acx.m4) ++ACX_NONCANONICAL_TARGET ++ ++# Need to pass this down for now :-P ++AC_PROG_LN_S ++ ++# Determine x_ada_cflags ++case $host in ++ hppa*) x_ada_cflags=-mdisable-indexing ;; ++ *) x_ada_cflags= ;; ++esac ++AC_SUBST([x_ada_cflags]) ++ ++# Determine what to build for 'gnattools' ++if test $build = $target ; then ++ # Note that build=target is almost certainly the wrong test; FIXME ++ default_gnattools_target="gnattools-native" ++else ++ default_gnattools_target="gnattools-cross" ++fi ++AC_SUBST([default_gnattools_target]) ++ ++# Target-specific stuff (defaults) ++TOOLS_TARGET_PAIRS= ++AC_SUBST(TOOLS_TARGET_PAIRS) ++ ++# Per-target case statement ++# ---/---------------------- ++case "${target}" in ++ alpha*-dec-vx*) # Unlike all other Vxworks ++ ;; ++ m68k*-wrs-vx* \ ++ | powerpc*-wrs-vxworks \ ++ | sparc*-wrs-vx* \ ++ | *86-wrs-vxworks \ ++ | xscale*-wrs-vx* \ ++ | xscale*-wrs-coff \ ++ | mips*-wrs-vx*) ++ TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb Makefile +Index: b/src/libgnatvsn/Makefile.in +=================================================================== +--- /dev/null ++++ b/src/libgnatvsn/Makefile.in +@@ -0,0 +1,147 @@ ++# Makefile for libgnatvsn. ++# Copyright (c) 2006 Ludovic Brenta ++# ++# 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 ++ ++# Default target; must be first. ++all: libgnatvsn ++ ++.SUFFIXES: ++ ++CPUS := $(shell getconf _NPROCESSORS_ONLN) ++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \ ++ @srcdir@/../gcc/ada/gnatvsn.ads | \ ++ sed -e 's/.*"\(.*\)".*/\1/')) ++GCC:=../gcc/xgcc -B../gcc/ ++LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++CFLAGS := -g -O2 -gnatn ++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) ++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) ++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP) ++ ++# 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. ++BASEVER_s := "\"$(BASEVER)\"" ++DEVPHASE_s := "\"$(if $(DEVPHASE), ($(DEVPHASE)))\"" ++DATESTAMP_s := "\"$(if $(DEVPHASE), $(DATESTAMP))\"" ++PKGVERSION_s:= "\"@PKGVERSION@\"" ++BUGURL_s := "\"@REPORT_BUGS_TO@\"" ++ ++ifneq (@build@,@host@) ++ CFLAGS += -b @host@ ++endif ++ ++.PHONY: libgnatvsn install ++libgnatvsn: libgnatvsn.so.$(LIB_VERSION) libgnatvsn.a ++ ++VSN_SOURCES := alloc.ads atree.adb casing.adb csets.adb debug.adb einfo.adb \ ++elists.adb fname.adb gnatvsn.adb hostparm.ads krunch.adb lib.adb namet.adb \ ++nlists.adb opt.adb output.adb repinfo.adb scans.adb sinfo.adb sem_aux.adb \ ++sinput.adb snames.adb stand.adb stringt.adb table.adb tree_in.adb tree_io.adb \ ++types.adb uintp.adb uname.adb urealp.adb widechar.adb ++ ++VSN_SEPARATES := lib-list.adb lib-sort.adb ++ ++OBJECTS=$(patsubst %.ads,%.o,$(VSN_SOURCES:.adb=.o)) version.o ++ ++vpath %.c @srcdir@/../gcc ++ ++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) ++ : # Make libgnatvsn.so ++ $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ ++ -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ ln -s 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 . ++ ++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-shared ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/version.o: version.c ++ $(GCC) -c -fPIC -g -O2 \ ++ -DBASEVER=$(BASEVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $(realpath $<) -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatvsn.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-static ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/version.o: version.c ++ $(GCC) -c -g -O2 \ ++ -DBASEVER=$(BASEVER_s) \ ++ -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) \ ++ -DPKGVERSION=$(PKGVERSION_s) \ ++ -DBUGURL=$(BUGURL_s) \ ++ -DREVISION= \ ++ $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++$(VSN_SOURCES) $(VSN_SEPARATES): stamp-libgnatvsn-sources ++ ++stamp-libgnatvsn-sources: ++ for file in $(VSN_SOURCES) $(VSN_SEPARATES); do \ ++ ads=$$(echo $$file | sed 's/\.adb/.ads/'); \ ++ if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then ln -s @srcdir@/../gcc/ada/$$file .; fi; \ ++ if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s @srcdir@/../gcc/ada/$$ads .; fi; \ ++ done ++ touch $@ ++ ++install: libgnatvsn ++ $(INSTALL_DATA) libgnatvsn.a $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) libgnatvsn.so.$(LIB_VERSION) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; \ ++ ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so ++ mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ $(INSTALL_DATA) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(VSN_SOURCES) $(VSN_SEPARATES)) \ ++ $(addprefix @srcdir@/../gcc/ada/,$(patsubst %.adb,%.ads,$(filter %.adb,$(VSN_SOURCES)))) \ ++ $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn ++ mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ $(INSTALL) -m 0444 obj-shared/*.ali \ ++ $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn ++ chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn/*.ali ++ ++.PHONY: clean ++clean: ++ rm -rf *.ali obj-static obj-shared libgnatvsn* *.adb *.ads stamp* +Index: b/src/Makefile.def +=================================================================== +--- a/src/Makefile.def ++++ b/src/Makefile.def +@@ -143,6 +143,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++host_modules= { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + host_modules= { module= gnattools; no_check=true; + missing= info; + missing= dvi; +@@ -181,6 +188,13 @@ + missing= TAGS; + missing= install-info; + missing= installcheck; }; ++target_modules = { module= libgnatvsn; no_check=true; ++ missing= info; ++ missing= dvi; ++ missing= html; ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; + target_modules = { module= libgomp; lib_path=.libs; }; + + // These are (some of) the make targets to be done in each subdirectory. +@@ -356,6 +370,8 @@ + dependencies = { module=all-fixincludes; on=all-libiberty; }; + + dependencies = { module=all-gnattools; on=all-libada; }; ++dependencies = { module=all-gnattools; on=all-libgnatvsn; }; ++dependencies = { module=all-libgnatvsn; on=all-libada; }; + + dependencies = { module=configure-mpfr; on=all-gmp; }; + dependencies = { module=configure-ppl; on=all-gmp; }; +Index: b/src/Makefile.in +=================================================================== +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -747,6 +747,7 @@ + maybe-configure-libtermcap \ + maybe-configure-utils \ + maybe-configure-libada \ ++ maybe-configure-libgnatvsn \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -770,6 +771,7 @@ + maybe-configure-target-qthreads \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ ++ maybe-configure-target-libgnatvsn \ + maybe-configure-target-libgomp + + # The target built for a native non-bootstrap build. +@@ -908,6 +910,7 @@ + all-host: maybe-all-libtermcap + all-host: maybe-all-utils + all-host: maybe-all-libada ++all-host: maybe-all-libgnatvsn + all-host: maybe-all-gnattools + + .PHONY: all-target +@@ -934,6 +937,7 @@ + all-target: maybe-all-target-qthreads + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada ++all-target: maybe-all-target-libgnatvsn + all-target: maybe-all-target-libgomp + + # Do a target for all the subdirectories. A ``make do-X'' will do a +@@ -1026,6 +1030,7 @@ + info-host: maybe-info-libtermcap + info-host: maybe-info-utils + info-host: maybe-info-libada ++info-host: maybe-info-libgnatvsn + info-host: maybe-info-gnattools + + .PHONY: info-target +@@ -1050,6 +1055,7 @@ + info-target: maybe-info-target-qthreads + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada ++info-target: maybe-info-target-libgnatvsn + info-target: maybe-info-target-libgomp + + .PHONY: do-dvi +@@ -1137,6 +1143,7 @@ + dvi-host: maybe-dvi-libtermcap + dvi-host: maybe-dvi-utils + dvi-host: maybe-dvi-libada ++dvi-host: maybe-dvi-libgnatvsn + dvi-host: maybe-dvi-gnattools + + .PHONY: dvi-target +@@ -1161,6 +1168,7 @@ + dvi-target: maybe-dvi-target-qthreads + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada ++dvi-target: maybe-dvi-target-libgnatvsn + dvi-target: maybe-dvi-target-libgomp + + .PHONY: do-pdf +@@ -1248,6 +1256,7 @@ + pdf-host: maybe-pdf-libtermcap + pdf-host: maybe-pdf-utils + pdf-host: maybe-pdf-libada ++pdf-host: maybe-pdf-libgnatvsn + pdf-host: maybe-pdf-gnattools + + .PHONY: pdf-target +@@ -1272,6 +1281,7 @@ + pdf-target: maybe-pdf-target-qthreads + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada ++pdf-target: maybe-pdf-target-libgnatvsn + pdf-target: maybe-pdf-target-libgomp + + .PHONY: do-html +@@ -1359,6 +1369,7 @@ + html-host: maybe-html-libtermcap + html-host: maybe-html-utils + html-host: maybe-html-libada ++html-host: maybe-html-libgnatvsn + html-host: maybe-html-gnattools + + .PHONY: html-target +@@ -1383,6 +1394,7 @@ + html-target: maybe-html-target-qthreads + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada ++html-target: maybe-html-target-libgnatvsn + html-target: maybe-html-target-libgomp + + .PHONY: do-TAGS +@@ -1470,6 +1482,7 @@ + TAGS-host: maybe-TAGS-libtermcap + TAGS-host: maybe-TAGS-utils + TAGS-host: maybe-TAGS-libada ++TAGS-host: maybe-TAGS-libgnatvsn + TAGS-host: maybe-TAGS-gnattools + + .PHONY: TAGS-target +@@ -1494,6 +1507,7 @@ + TAGS-target: maybe-TAGS-target-qthreads + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada ++TAGS-target: maybe-TAGS-target-libgnatvsn + TAGS-target: maybe-TAGS-target-libgomp + + .PHONY: do-install-info +@@ -1581,6 +1595,7 @@ + install-info-host: maybe-install-info-libtermcap + install-info-host: maybe-install-info-utils + install-info-host: maybe-install-info-libada ++install-info-host: maybe-install-info-libgnatvsn + install-info-host: maybe-install-info-gnattools + + .PHONY: install-info-target +@@ -1605,6 +1620,7 @@ + install-info-target: maybe-install-info-target-qthreads + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada ++install-info-target: maybe-install-info-target-libgnatvsn + install-info-target: maybe-install-info-target-libgomp + + .PHONY: do-install-pdf +@@ -1692,6 +1708,7 @@ + install-pdf-host: maybe-install-pdf-libtermcap + install-pdf-host: maybe-install-pdf-utils + install-pdf-host: maybe-install-pdf-libada ++install-pdf-host: maybe-install-pdf-libgnatvsn + install-pdf-host: maybe-install-pdf-gnattools + + .PHONY: install-pdf-target +@@ -1716,6 +1733,7 @@ + install-pdf-target: maybe-install-pdf-target-qthreads + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada ++install-pdf-target: maybe-install-pdf-target-libgnatvsn + install-pdf-target: maybe-install-pdf-target-libgomp + + .PHONY: do-install-html +@@ -1803,6 +1821,7 @@ + install-html-host: maybe-install-html-libtermcap + install-html-host: maybe-install-html-utils + install-html-host: maybe-install-html-libada ++install-html-host: maybe-install-html-libgnatvsn + install-html-host: maybe-install-html-gnattools + + .PHONY: install-html-target +@@ -1827,6 +1846,7 @@ + install-html-target: maybe-install-html-target-qthreads + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada ++install-html-target: maybe-install-html-target-libgnatvsn + install-html-target: maybe-install-html-target-libgomp + + .PHONY: do-installcheck +@@ -1914,6 +1934,7 @@ + installcheck-host: maybe-installcheck-libtermcap + installcheck-host: maybe-installcheck-utils + installcheck-host: maybe-installcheck-libada ++installcheck-host: maybe-installcheck-libgnatvsn + installcheck-host: maybe-installcheck-gnattools + + .PHONY: installcheck-target +@@ -1938,6 +1959,7 @@ + installcheck-target: maybe-installcheck-target-qthreads + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada ++installcheck-target: maybe-installcheck-target-libgnatvsn + installcheck-target: maybe-installcheck-target-libgomp + + .PHONY: do-mostlyclean +@@ -2025,6 +2047,7 @@ + mostlyclean-host: maybe-mostlyclean-libtermcap + mostlyclean-host: maybe-mostlyclean-utils + mostlyclean-host: maybe-mostlyclean-libada ++mostlyclean-host: maybe-mostlyclean-libgnatvsn + mostlyclean-host: maybe-mostlyclean-gnattools + + .PHONY: mostlyclean-target +@@ -2049,6 +2072,7 @@ + mostlyclean-target: maybe-mostlyclean-target-qthreads + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada ++mostlyclean-target: maybe-mostlyclean-target-libgnatvsn + mostlyclean-target: maybe-mostlyclean-target-libgomp + + .PHONY: do-clean +@@ -2136,6 +2160,7 @@ + clean-host: maybe-clean-libtermcap + clean-host: maybe-clean-utils + clean-host: maybe-clean-libada ++clean-host: maybe-clean-libgnatvsn + clean-host: maybe-clean-gnattools + + .PHONY: clean-target +@@ -2160,6 +2185,7 @@ + clean-target: maybe-clean-target-qthreads + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada ++clean-target: maybe-clean-target-libgnatvsn + clean-target: maybe-clean-target-libgomp + + .PHONY: do-distclean +@@ -2247,6 +2273,7 @@ + distclean-host: maybe-distclean-libtermcap + distclean-host: maybe-distclean-utils + distclean-host: maybe-distclean-libada ++distclean-host: maybe-distclean-libgnatvsn + distclean-host: maybe-distclean-gnattools + + .PHONY: distclean-target +@@ -2271,6 +2298,7 @@ + distclean-target: maybe-distclean-target-qthreads + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada ++distclean-target: maybe-distclean-target-libgnatvsn + distclean-target: maybe-distclean-target-libgomp + + .PHONY: do-maintainer-clean +@@ -2358,6 +2386,7 @@ + maintainer-clean-host: maybe-maintainer-clean-libtermcap + maintainer-clean-host: maybe-maintainer-clean-utils + maintainer-clean-host: maybe-maintainer-clean-libada ++maintainer-clean-host: maybe-maintainer-clean-libgnatvsn + maintainer-clean-host: maybe-maintainer-clean-gnattools + + .PHONY: maintainer-clean-target +@@ -2382,6 +2411,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-qthreads + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada ++maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn + maintainer-clean-target: maybe-maintainer-clean-target-libgomp + + +@@ -2523,6 +2553,7 @@ + maybe-check-libtermcap \ + maybe-check-utils \ + maybe-check-libada \ ++ maybe-check-libgnatvsn \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2547,6 +2578,7 @@ + maybe-check-target-qthreads \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libgnatvsn \ + maybe-check-target-libgomp + + do-check: +@@ -2660,6 +2692,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2738,6 +2771,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2762,6 +2796,7 @@ + maybe-install-target-qthreads \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libgnatvsn \ + maybe-install-target-libgomp + + uninstall: +@@ -42962,6 +42997,327 @@ + + + ++.PHONY: configure-libgnatvsn maybe-configure-libgnatvsn ++maybe-configure-libgnatvsn: ++@if gcc-bootstrap ++configure-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++maybe-configure-libgnatvsn: configure-libgnatvsn ++configure-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ test ! -f $(HOST_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatvsn ; \ ++ $(HOST_EXPORTS) \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatvsn; \ ++ cd "$(HOST_SUBDIR)/libgnatvsn" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatvsn/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ $(SHELL) $${libsrcdir}/configure \ ++ $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || exit 1 ++@endif libgnatvsn ++ ++ ++ ++ ++ ++.PHONY: all-libgnatvsn maybe-all-libgnatvsn ++maybe-all-libgnatvsn: ++@if gcc-bootstrap ++all-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if libgnatvsn ++TARGET-libgnatvsn=all ++maybe-all-libgnatvsn: all-libgnatvsn ++all-libgnatvsn: configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgnatvsn)) ++@endif libgnatvsn ++ ++ ++ ++ ++.PHONY: check-libgnatvsn maybe-check-libgnatvsn ++maybe-check-libgnatvsn: ++@if libgnatvsn ++maybe-check-libgnatvsn: check-libgnatvsn ++ ++check-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: install-libgnatvsn maybe-install-libgnatvsn ++maybe-install-libgnatvsn: ++@if libgnatvsn ++maybe-install-libgnatvsn: install-libgnatvsn ++ ++install-libgnatvsn: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) install) ++ ++@endif libgnatvsn ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-libgnatvsn info-libgnatvsn ++maybe-info-libgnatvsn: ++@if libgnatvsn ++maybe-info-libgnatvsn: info-libgnatvsn ++ ++# libgnatvsn doesn't support info. ++info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-dvi-libgnatvsn dvi-libgnatvsn ++maybe-dvi-libgnatvsn: ++@if libgnatvsn ++maybe-dvi-libgnatvsn: dvi-libgnatvsn ++ ++# libgnatvsn doesn't support dvi. ++dvi-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-pdf-libgnatvsn pdf-libgnatvsn ++maybe-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-pdf-libgnatvsn: pdf-libgnatvsn ++ ++pdf-libgnatvsn: \ ++ configure-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing pdf in libgnatvsn" ; \ ++ (cd $(HOST_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}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-html-libgnatvsn html-libgnatvsn ++maybe-html-libgnatvsn: ++@if libgnatvsn ++maybe-html-libgnatvsn: html-libgnatvsn ++ ++# libgnatvsn doesn't support html. ++html-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-TAGS-libgnatvsn TAGS-libgnatvsn ++maybe-TAGS-libgnatvsn: ++@if libgnatvsn ++maybe-TAGS-libgnatvsn: TAGS-libgnatvsn ++ ++# libgnatvsn doesn't support TAGS. ++TAGS-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-info-libgnatvsn install-info-libgnatvsn ++maybe-install-info-libgnatvsn: ++@if libgnatvsn ++maybe-install-info-libgnatvsn: install-info-libgnatvsn ++ ++# libgnatvsn doesn't support install-info. ++install-info-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-pdf-libgnatvsn install-pdf-libgnatvsn ++maybe-install-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-install-pdf-libgnatvsn: install-pdf-libgnatvsn ++ ++install-pdf-libgnatvsn: \ ++ configure-libgnatvsn \ ++ pdf-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-pdf in libgnatvsn" ; \ ++ (cd $(HOST_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}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-install-html-libgnatvsn install-html-libgnatvsn ++maybe-install-html-libgnatvsn: ++@if libgnatvsn ++maybe-install-html-libgnatvsn: install-html-libgnatvsn ++ ++install-html-libgnatvsn: \ ++ configure-libgnatvsn \ ++ html-libgnatvsn ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing install-html in libgnatvsn" ; \ ++ (cd $(HOST_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}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-installcheck-libgnatvsn installcheck-libgnatvsn ++maybe-installcheck-libgnatvsn: ++@if libgnatvsn ++maybe-installcheck-libgnatvsn: installcheck-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-libgnatvsn: ++ ++@endif libgnatvsn ++ ++.PHONY: maybe-mostlyclean-libgnatvsn mostlyclean-libgnatvsn ++maybe-mostlyclean-libgnatvsn: ++@if libgnatvsn ++maybe-mostlyclean-libgnatvsn: mostlyclean-libgnatvsn ++ ++mostlyclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing mostlyclean in libgnatvsn" ; \ ++ (cd $(HOST_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 libgnatvsn ++ ++.PHONY: maybe-clean-libgnatvsn clean-libgnatvsn ++maybe-clean-libgnatvsn: ++@if libgnatvsn ++maybe-clean-libgnatvsn: clean-libgnatvsn ++ ++clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing clean in libgnatvsn" ; \ ++ (cd $(HOST_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 libgnatvsn ++ ++.PHONY: maybe-distclean-libgnatvsn distclean-libgnatvsn ++maybe-distclean-libgnatvsn: ++@if libgnatvsn ++maybe-distclean-libgnatvsn: distclean-libgnatvsn ++ ++distclean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing distclean in libgnatvsn" ; \ ++ (cd $(HOST_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 libgnatvsn ++ ++.PHONY: maybe-maintainer-clean-libgnatvsn maintainer-clean-libgnatvsn ++maybe-maintainer-clean-libgnatvsn: ++@if libgnatvsn ++maybe-maintainer-clean-libgnatvsn: maintainer-clean-libgnatvsn ++ ++maintainer-clean-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f ./libgnatvsn/Makefile ] || exit 0; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(HOST_EXPORTS) \ ++ for flag in $(EXTRA_HOST_FLAGS) ; do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ echo "Doing maintainer-clean in libgnatvsn" ; \ ++ (cd $(HOST_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 libgnatvsn ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -52586,6 +52942,345 @@ + + + ++.PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn ++maybe-configure-target-libgnatvsn: ++@if gcc-bootstrap ++configure-target-libgnatvsn: stage_current ++@endif gcc-bootstrap ++@if target-libgnatvsn ++maybe-configure-target-libgnatvsn: configure-target-libgnatvsn ++configure-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libgnatvsn..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(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; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ ++ rm -f no-such-file || : ; \ ++ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ ++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ ++ --target=${target_alias} $${srcdiroption} \ ++ || 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) $(TARGET_FLAGS_TO_PASS) $(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 ++ ++# 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 ++ ++pdf-target-libgnatvsn: \ ++ configure-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 pdf 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}" \ ++ pdf) \ ++ || exit 1 ++ ++@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 ++ ++install-pdf-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ pdf-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 install-pdf 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}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@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 ++ ++install-html-target-libgnatvsn: \ ++ configure-target-libgnatvsn \ ++ html-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 install-html 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}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn ++ ++# libgnatvsn doesn't support installcheck. ++installcheck-target-libgnatvsn: ++ ++@endif target-libgnatvsn ++ ++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: ++@if target-libgnatvsn ++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn ++ ++mostlyclean-target-libgnatvsn: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/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}" \ ++ 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-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -55420,6 +56115,7 @@ + configure-target-qthreads: stage_last + configure-target-rda: stage_last + configure-target-libada: stage_last ++configure-target-libgnatvsn: stage_last + configure-target-libgomp: stage_last + @endif gcc-bootstrap + +@@ -55444,6 +56140,7 @@ + configure-target-qthreads: maybe-all-gcc + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc ++configure-target-libgnatvsn: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc + @endif gcc-no-bootstrap + +@@ -55728,6 +56425,8 @@ + all-stagefeedback-libcpp: maybe-all-stagefeedback-intl + all-fixincludes: maybe-all-libiberty + all-gnattools: maybe-all-libada ++all-gnattools: maybe-all-libgnatvsn ++all-libgnatvsn: maybe-all-libada + configure-mpfr: maybe-all-gmp + + configure-stage1-mpfr: maybe-all-stage1-gmp +@@ -56288,6 +56987,7 @@ + configure-target-qthreads: 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-libgomp: maybe-all-target-libgcc + @endif gcc-no-bootstrap + +@@ -56330,6 +57030,8 @@ + + configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss ++ + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + + +Index: b/src/configure.ac +=================================================================== +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -158,7 +158,7 @@ + + # these libraries are used by various programs built for the host environment + # +-host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog libiconv libada" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog libiconv libada libgnatvsn" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -189,7 +189,8 @@ + target-boehm-gc \ + ${libgcj} \ + target-libobjc \ +- target-libada" ++ target-libada \ ++ target-libgnatvsn" + + # these tools are built using the target libraries, and are intended to + # run only in the target environment +@@ -271,7 +272,7 @@ + + # Similarly, some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes target-libada" ++cross_only="target-libgloss target-newlib target-opcodes target-libada target-libgnatvsn" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +@@ -380,7 +381,7 @@ + ENABLE_LIBADA=$enableval, + ENABLE_LIBADA=yes) + if test "${ENABLE_LIBADA}" != "yes" ; then +- noconfigdirs="$noconfigdirs gnattools" ++ noconfigdirs="$noconfigdirs libgnatvsn gnattools" + fi + + AC_ARG_ENABLE(libssp, +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 +@@ -36,8 +36,8 @@ + + outputs="ada/gcc-interface/Makefile ada/Makefile" + +-target_libs="target-libada" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn" ++lang_dirs="libada libgnatvsn gnattools" + + # Ada is not enabled by default for the time being. + build_by_default=no --- gcc-4.4-4.4.7.orig/debian/patches/ada-library-project-files-soname.diff +++ gcc-4.4-4.4.7/debian/patches/ada-library-project-files-soname.diff @@ -0,0 +1,77 @@ +# DP: - in project files, use the exact Library_Version provided, if any, as +# DP: the soname of libraries; do not strip minor version numbers +# DP: (PR ada/40025). + +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 @@ + + function Is_Archive_Ext (Ext : String) return Boolean; + ++ function Library_Major_Minor_Id_Supported return Boolean; ++ + --------------------------- + -- Build_Dynamic_Library -- + --------------------------- +@@ -142,7 +144,18 @@ + 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 +@@ -31,6 +31,7 @@ + with Opt; + with Output; use Output; + ++with Mlib.Tgt; + with MLib.Utl; use MLib.Utl; + + with Prj.Com; +@@ -384,7 +385,7 @@ + -- Major_Id_Name -- + ------------------- + +- function Major_Id_Name ++ function Major_Id_Name_If_Supported + (Lib_Filename : String; + Lib_Version : String) + return String +@@ -438,6 +439,19 @@ + 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; + + -- Package elaboration --- gcc-4.4-4.4.7.orig/debian/patches/ada-link-lib.diff +++ gcc-4.4-4.4.7/debian/patches/ada-link-lib.diff @@ -0,0 +1,1844 @@ +# DP: - Install the shared Ada libraries as '.so.1', not '.so' to conform +# DP: to the Debian policy. +# DP: - Don't include a runtime link path (-rpath), when linking binaries. +# DP: - Build the shared libraries on hppa-linux. +# DP: - Instead of building libada as a target library only, build it as +# DP: both a host and, if different, target library. +# DP: - Build the GNAT tools in their top-level directory; do not use +# DP: recursive makefiles. +# DP: - Link the GNAT tools dynamically. +# DP: - Fix a bug in src/gnattools/configure.ac whereby a nonexistent version +# DP: of indepsw's body was selected. Regenerate configure. (PR ada/27300) + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +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 +@@ -37,7 +37,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 +Index: b/src/gcc/ada/link.c +=================================================================== +--- a/src/gcc/ada/link.c ++++ b/src/gcc/ada/link.c +@@ -145,8 +145,8 @@ + + #elif defined (__FreeBSD__) + const char *__gnat_object_file_option = ""; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; ++char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + unsigned char __gnat_using_gnu_linker = 1; +@@ -154,8 +154,8 @@ + + #elif defined (linux) || defined(__GLIBC__) + const char *__gnat_object_file_option = ""; +-const char *__gnat_run_path_option = "-Wl,-rpath,"; +-char __gnat_shared_libgnat_default = STATIC; ++const char *__gnat_run_path_option = ""; ++char __gnat_shared_libgnat_default = SHARED; + int __gnat_link_max = 8192; + unsigned char __gnat_objlist_file_supported = 1; + unsigned char __gnat_using_gnu_linker = 1; +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 +@@ -99,7 +99,7 @@ + MAKEINFO = makeinfo + TEXI2DVI = texi2dvi + TEXI2PDF = texi2pdf +-GNATBIND_FLAGS = -static -x ++GNATBIND_FLAGS = -shared -x + ADA_CFLAGS = + ADAFLAGS = -W -Wall -gnatpg -gnata + SOME_ADAFLAGS =-gnata +@@ -230,7 +230,6 @@ + LIBDEPS = $(LIBINTL_DEP) $(LIBIBERTY) + # Default is no TGT_LIB; one might be passed down or something + TGT_LIB = +-TOOLS_LIBS = $(EXTRA_GNATTOOLS_OBJS) targext.o link.o $(LIBGNAT) ../../../libiberty/libiberty.a $(SYSLIBS) $(TGT_LIB) + + # Specify the directories to be searched for header files. + # Both . and srcdir are used, in that order, +@@ -276,30 +275,6 @@ + # defined in this file into the environment. + .NOEXPORT: + +-# Lists of files for various purposes. +- +-GNATLINK_OBJS = gnatlink.o \ +- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \ +- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \ +- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \ +- types.o validsw.o widechar.o +- +-GNATMAKE_OBJS = a-except.o ali.o ali-util.o s-casuti.o \ +- alloc.o atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o\ +- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \ +- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \ +- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \ +- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o output.o \ +- prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o prj-err.o prj-ext.o prj-nmsc.o \ +- prj-pars.o prj-part.o prj-proc.o prj-strt.o prj-tree.o prj-util.o \ +- rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \ +- scans.o scng.o sdefault.o sfn_scan.o s-purexc.o s-htable.o \ +- sinfo.o sinput.o sinput-c.o sinput-p.o \ +- snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o switch.o switch-m.o \ +- table.o targparm.o tempdir.o tree_io.o types.o \ +- uintp.o uname.o urealp.o usage.o widechar.o \ +- $(EXTRA_GNATMAKE_OBJS) + + # Convert the target variable into a space separated list of architecture, + # manufacturer, and operating system and assign each of those to its own +@@ -1058,6 +1033,11 @@ + GMEM_LIB = gmemlib + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(targ))),) + LIBGNAT_TARGET_PAIRS = \ + a-excpol.adb Ada_Streams_Stream_IO, + ++ RE_Unbounded_String => Ada_Strings_Unbounded, ++ + RE_Access_Level => Ada_Tags, + RE_Address_Array => Ada_Tags, + RE_Addr_Ptr => Ada_Tags, +@@ -2348,6 +2366,7 @@ + RE_TA_WWC => System_Partition_Interface, + RE_TA_String => System_Partition_Interface, + RE_TA_ObjRef => System_Partition_Interface, ++ RE_TA_Std_String => System_Partition_Interface, + RE_TA_TC => System_Partition_Interface, + + RE_TC_Alias => System_Partition_Interface, +Index: b/src/gcc/ada/exp_dist.adb +=================================================================== +--- a/src/gcc/ada/exp_dist.adb ++++ b/src/gcc/ada/exp_dist.adb +@@ -6,7 +6,7 @@ + -- -- + -- B o d y -- + -- -- +--- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- ++-- Copyright (C) 1992-2009, 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- -- +@@ -6638,13 +6638,13 @@ + Make_Function_Call (Loc, + Name => + New_Occurrence_Of +- (RTE (RE_TA_String), Loc), ++ (RTE (RE_TA_Std_String), Loc), + Parameter_Associations => New_List ( + Make_String_Literal (Loc, Name_String))), + Make_Function_Call (Loc, + Name => + New_Occurrence_Of +- (RTE (RE_TA_String), Loc), ++ (RTE (RE_TA_Std_String), Loc), + Parameter_Associations => New_List ( + Make_String_Literal (Loc, + Strval => Repo_Id_String)))))))))))); +@@ -8447,7 +8447,7 @@ + elsif U_Type = RTE (RE_Long_Long_Unsigned) then + Lib_RE := RE_FA_LLU; + +- elsif U_Type = Standard_String then ++ elsif Is_RTE (U_Type, RE_Unbounded_String) then + Lib_RE := RE_FA_String; + + -- Special DSA types +@@ -8944,7 +8944,11 @@ + for J in 1 .. Ndim loop + Lnam := New_External_Name ('L', J); + Hnam := New_External_Name ('H', J); +- Indt := Etype (Indx); ++ ++ -- Note, for empty arrays bounds may be out of ++ -- the range of Etype (Indx). ++ ++ Indt := Base_Type (Etype (Indx)); + + Append_To (Decls, + Make_Object_Declaration (Loc, +@@ -9217,6 +9221,7 @@ + + Typ : Entity_Id := Etype (N); + U_Type : Entity_Id; ++ C_Type : Entity_Id; + Fnam : Entity_Id := Empty; + Lib_RE : RE_Id := RE_Null; + +@@ -9312,7 +9317,7 @@ + elsif U_Type = RTE (RE_Long_Long_Unsigned) then + Lib_RE := RE_TA_LLU; + +- elsif U_Type = Standard_String then ++ elsif Is_RTE (U_Type, RE_Unbounded_String) then + Lib_RE := RE_TA_String; + + -- Special DSA types +@@ -9345,11 +9350,23 @@ + Fnam := RTE (Lib_RE); + end if; + ++ -- If Fnam is already analyzed, find the proper expected type, ++ -- else we have a newly constructed To_Any function and we know ++ -- that the expected type of its parameter is U_Type. ++ ++ if Ekind (Fnam) = E_Function ++ and then Present (First_Formal (Fnam)) ++ then ++ C_Type := Etype (First_Formal (Fnam)); ++ else ++ C_Type := U_Type; ++ end if; ++ + return + Make_Function_Call (Loc, + Name => New_Occurrence_Of (Fnam, Loc), + Parameter_Associations => +- New_List (Unchecked_Convert_To (U_Type, N))); ++ New_List (OK_Convert_To (C_Type, N))); + end Build_To_Any_Call; + + --------------------------- +@@ -10084,7 +10101,7 @@ + elsif U_Type = RTE (RE_Long_Long_Unsigned) then + Lib_RE := RE_TC_LLU; + +- elsif U_Type = Standard_String then ++ elsif Is_RTE (U_Type, RE_Unbounded_String) then + Lib_RE := RE_TC_String; + + -- Special DSA types +@@ -10184,7 +10201,7 @@ + begin + Append_To (Parameter_List, + Make_Function_Call (Loc, +- Name => New_Occurrence_Of (RTE (RE_TA_String), Loc), ++ Name => New_Occurrence_Of (RTE (RE_TA_Std_String), Loc), + Parameter_Associations => New_List ( + Make_String_Literal (Loc, S)))); + end Add_String_Parameter; +Index: b/src/gcc/ada/exp_dist.ads +=================================================================== +--- a/src/gcc/ada/exp_dist.ads ++++ b/src/gcc/ada/exp_dist.ads +@@ -6,7 +6,7 @@ + -- -- + -- S p e c -- + -- -- +--- Copyright (C) 1992-2008, Free Software Foundation, Inc. -- ++-- Copyright (C) 1992-2009, 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- -- +@@ -35,7 +35,7 @@ + PCS_Version_Number : constant array (PCS_Names) of Int := + (Name_No_DSA => 1, + Name_GARLIC_DSA => 1, +- Name_PolyORB_DSA => 2); ++ Name_PolyORB_DSA => 3); + -- PCS interface version. This is used to check for consistency between the + -- compiler used to generate distribution stubs and the PCS implementation. + -- It must be incremented whenever a change is made to the generated code --- gcc-4.4-4.4.7.orig/debian/patches/ada-sjlj.diff +++ gcc-4.4-4.4.7/debian/patches/ada-sjlj.diff @@ -0,0 +1,712 @@ +# DP: There are two exception mechanisms to choose from: zero-cost and +# DP: setjump/longjump. The Ada run-time library uses either of them +# DP: but not both. Build both versions of the run-time library. + +# This patch changes the way the upstream Makefiles build the run-time +# library. Before the patch: libada/Makefile calls gcc/ada/Makefile, +# which builds the "rts" subdirectory containing symbolic links to +# most source files, and modified copies of a few source files (to +# take target dependencies into account, and also to select the +# exception handling mechanism in system.ads). Then, gcc/ada/Makefile +# calls itself recursively but in the "rts" subdirectory and builds +# libgnat.a and libgnarl.a (and a couple other libraries: +# libgccprefix.a, libgmem.a). Upon return from this recursive call, +# it deletes the source and object files from "rts", reconstructs the +# source files, and builds libgnat.so and libgnarl.so by calling +# itself recursively a second time in the "rts" directory. + +# Furthermore, gcc/ada/Makefile disables parallel makes, so building +# the static and then shared versions of the RTS is entirely +# sequential even on SMP systems. + +# As a consequence of the above, building the SJLJ version of the +# library would overwrite the ZCX version. Thus it is necessary to +# manually save the previous version of the library before building the +# second one. + +# After the patch: libada/Makefile calls gcc/ada/Makefile, which +# builds the source directory (named gnatlib-sources instead of rts), +# containing the symbolic links and target-dependent files. + +# In a second step, libada/Makefile calls gcc/ada/Makefile again to +# build the targets gnatlib-shared-zcx, gnatlib-static-zcx and +# gnatlib-static-sjlj (we could also build gnatlib-shared-sjlj, but +# that triggers compiler errors on PowerPC). + +# Each of these three targets copies the source directory "rts" into a +# new directory named rts-shared-zcx, rts-static-zcx or +# rts-static-sjlj. In the new directory, they change the value of +# System.ZCX_By_Default, and then they call gcc/ada/Makefile +# recursively in the new directory to build the library. + +# gcc/ada/Makefile.in has a .NOTPARALLEL directive preventing it from +# launching commands in parallel. However, libada/Makefile has no +# such directive and can invoke up to three instances of +# gcc/ada/Makefile.in in parallel. This is okay because each of them +# runs in a different directory. + +# This patch also updates libgnat{vsn,prj}/Makefile and +# gnattools/Makefile to look for the shared ZCX version of the library +# in the appropriate directory, rather than just "rts", and updates +# the "make install" and binary targets as well. + +Index: b/src/libada/Makefile.in +=================================================================== +--- a/src/libada/Makefile.in ++++ b/src/libada/Makefile.in +@@ -16,7 +16,8 @@ + # . + + # Default target; must be first. +-all: gnatlib ++GNATLIB = gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx ++all: $(GNATLIB) + $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) + + .PHONY: all install +@@ -94,26 +95,29 @@ + "CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" + + # Rules to build gnatlib. +-.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons +-gnatlib: @default_gnatlib_target@ ++.PHONY: $(GNATLIB) oscons + +-gnatlib-plain: oscons $(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) $(ADA_RTS_DIR) adainclude +- $(LN_S) $(ADA_RTS_DIR) adalib +- +-gnatlib-sjlj gnatlib-zcx gnatlib-shared: oscons $(GCC_DIR)/ada/Makefile +- test -f stamp-libada || \ +- $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ +- && touch stamp-libada +- -rm -rf adainclude +- -rm -rf adalib +- $(LN_S) $(ADA_RTS_DIR) adainclude +- $(LN_S) $(ADA_RTS_DIR) adalib ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ ++ EH_MECHANISM="" \ ++ gnatlib-sources-sjlj/a-except.ads ++ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads: ++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) \ ++ EH_MECHANISM="-gcc" \ ++ gnatlib-sources-zcx/a-except.ads ++ ++ ++$(GNATLIB): oscons $(GCC_DIR)/ada/Makefile \ ++$(GCC_DIR)/ada/gnatlib-sources-zcx/a-except.ads \ ++$(GCC_DIR)/ada/gnatlib-sources-sjlj/a-except.ads ++ $(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ TRACE="$(TRACE)" \ ++ $@ + + oscons: + $(MAKE) -C $(GCC_DIR) $(LIBADA_FLAGS_TO_PASS) ada/s-oscons.ads +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 +@@ -1819,51 +1819,75 @@ + a-[a-o]*.adb a-[p-z]*.adb a-[a-o]*.ads a-[p-z]*.ads g-*.ad? i-*.ad? \ + s-[a-o]*.adb s-[p-z]*.adb s-[a-o]*.ads s-[p-z]*.ads + +-../stamp-gnatlib-$(RTSDIR): +- @if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \ +- then \ +- $(ECHO) You must first build the GNAT library: make gnatlib; \ +- false; \ +- else \ +- true; \ +- fi ++libgnat = libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) ++libgnat-sjlj = libgnat$(hyphen)sjlj$(hyphen)$(LIBRARY_VERSION)$(soext) + +-install-gnatlib: ../stamp-gnatlib-$(RTSDIR) ++install-gnatlib: rts-static-zcx/libgnat$(arext) rts-static-sjlj/libgnat$(arext) ++install-gnatlib: rts-shared-zcx/$(libgnat) + # 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) +- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +- $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR) +- -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR) +- for file in $(RTSDIR)/*.ali; do \ +- $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR) ++ ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ $(RMDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) ++ -$(MKDIR) $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR) ++ ++ for file in rts-shared-zcx/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ ++ done ++ for file in rts-static-sjlj/*.ali; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ ++ done ++ ++ -cd rts-static-zcx; for file in *$(arext);do \ ++ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ ++ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR)/$$file; \ + done +- -cd $(RTSDIR); for file in *$(arext);do \ +- $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ +- $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ ++ -cd rts-static-sjlj; for file in *$(arext);do \ ++ $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR); \ ++ $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR)/$$file; \ + done ++ ++ -$(foreach file, $(EXTRA_ADALIB_FILES), \ ++ $(INSTALL_DATA_DATE) rts-static-zcx/$(file) $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR) && \ ++ ) true + -$(foreach file, $(EXTRA_ADALIB_FILES), \ +- $(INSTALL_DATA_DATE) $(RTSDIR)/$(file) $(DESTDIR)$(ADA_RTL_OBJ_DIR) && \ ++ $(INSTALL_DATA_DATE) rts-static-sjlj/$(file) $(DESTDIR)$(ADA_SJLJ_RTL_OBJ_DIR) && \ + ) true + # Install the shared libraries, if any, using $(INSTALL) instead + # of $(INSTALL_DATA). The latter may force a mode inappropriate + # for shared libraries on some targets, e.g. on HP-UX where the x + # permission is required. + for file in gnat gnarl; do \ +- if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \ +- $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ +- $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ ++ if [ -f rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \ ++ $(INSTALL) rts-shared-zcx/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(DESTDIR)$(ADA_NATIVE_RTL_OBJ_DIR); \ + fi; \ + 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); \ ++ for file in rts-shared-zcx/*.adb rts-shared-zcx/*.ads; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR); \ + done +- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb +- cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.adb ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_NATIVE_INCLUDE_DIR)/*.ads ++ for file in rts-static-sjlj/*.adb rts-static-sjlj/*.ads; do \ ++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR); \ ++ done ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.adb ++ $(CHMOD) u=rw,go=r $(DESTDIR)$(ADA_SJLJ_INCLUDE_DIR)/*.ads ++ ++ (cd $(DESTDIR)$(libsubdir); \ ++ ln -s rts-native/adainclude adainclude; \ ++ ln -s rts-native/adalib adalib;) + + # NOTE: The $(foreach ...) commands assume ";" is the valid separator between + # successive target commands. Although the Gnu make documentation +@@ -1874,26 +1898,33 @@ + + # GNULLI Begin ########################################################### + +-../stamp-gnatlib1-$(RTSDIR): Makefile +- $(RMDIR) $(RTSDIR) +- $(MKDIR) $(RTSDIR) +- $(CHMOD) u+w $(RTSDIR) ++replace_zcx_by_default=\ ++'s/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := $(zcx_by_default);/' ++ ++gnatlib-sources-zcx/a-except.ads: dir=$(dir $@) ++gnatlib-sources-zcx/a-except.ads: zcx_by_default=True ++ ++gnatlib-sources-sjlj/a-except.ads: dir=$(dir $@) ++gnatlib-sources-sjlj/a-except.ads: zcx_by_default=False ++ ++gnatlib-sources-zcx/a-except.ads gnatlib-sources-sjlj/a-except.ads: ++ $(MKDIR) $(dir) ++ $(CHMOD) u+w $(dir) + # Copy target independent sources + $(foreach f,$(ADA_INCLUDE_SRCS) $(LIBGNAT_SRCS), \ +- $(LN_S) $(fsrcpfx)ada/$(f) $(RTSDIR) ;) true ++ $(LN_S) $(fsrcpfx)ada/$(f) $(dir) ;) true + # Remove files to be replaced by target dependent sources + $(RM) $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ +- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)))) +- $(RM) $(RTSDIR)/*-*-*.ads $(RTSDIR)/*-*-*.adb ++ $(dir)/$(word 1,$(subst <, ,$(PAIR)))) ++ $(RM) $(dir)/*-*-*.ads $(dir)/*-*-*.adb + # Copy new target dependent sources + $(foreach PAIR,$(LIBGNAT_TARGET_PAIRS), \ + $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \ +- $(RTSDIR)/$(word 1,$(subst <, ,$(PAIR)));) ++ $(dir)/$(word 1,$(subst <, ,$(PAIR)));) ++ sed -e $(replace_zcx_by_default) $(dir)/system.ads > $(dir)/s.ads + # Copy generated target dependent sources +- $(RM) $(RTSDIR)/s-oscons.ads +- (cd $(RTSDIR); $(LN_S) ../s-oscons.ads s-oscons.ads) +- $(RM) ../stamp-gnatlib-$(RTSDIR) +- touch ../stamp-gnatlib1-$(RTSDIR) ++ $(RM) $(dir)/s-oscons.ads ++ (cd $(dir); $(LN_S) ../s-oscons.ads s-oscons.ads) + + # GNULLI End ############################################################# + +@@ -1903,57 +1934,60 @@ + # Example: cd $(RTSDIR); ar rc libfoo.a $(LONG_LIST_OF_OBJS) + # is guaranteed to overflow the buffer. + +-gnatlib: ../stamp-gnatlib1-$(RTSDIR) +- $(MAKE) -C $(RTSDIR) \ ++%/libgnat$(arext): build_dir = $(dir $@) ++%/libgnat$(arext): libgnarl = $(subst libgnat,libgnarl,$@) ++%/libgnat$(arext): libgnala = $(subst libgnat,libgnala,$@) ++%/libgnat$(arext): % ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +- INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ +- CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ +- FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ ++ CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ + srcdir=$(fsrcdir) \ +- -f ../Makefile $(LIBGNAT_OBJS) +- $(MAKE) -C $(RTSDIR) \ ++ -f ../Makefile $(LIBGNAT_OBJS) ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +- ADA_INCLUDES="" \ +- CFLAGS="$(GNATLIBCFLAGS)" \ +- ADAFLAGS="$(GNATLIBFLAGS)" \ +- FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ ++ ADA_INCLUDES="" \ ++ CFLAGS="$(GNATLIBCFLAGS)" \ ++ ADAFLAGS="$(GNATLIBFLAGS)" \ + srcdir=$(fsrcdir) \ +- -f ../Makefile \ +- $(GNATRTL_OBJS) +- $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) ++ -f ../Makefile \ ++ $(GNATRTL_OBJS) ++ $(RM) $@ $(libgnarl) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $@ \ ++ $(addprefix $(build_dir),$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) + ifneq ($(PREFIX_OBJS),) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgccprefix$(arext) \ ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgccprefix$(arext) \ + $(PREFIX_OBJS); +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgccprefix$(arext) ++ $(RANLIB_FOR_TARGET) $(build_dir)libgccprefix$(arext) + endif +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnat$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnarl$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl$(arext) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnala$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_LINEARALGEBRA_OBJS)) +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnala$(arext) ++ $(RANLIB_FOR_TARGET) $@ ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnarl) \ ++ $(addprefix $(build_dir),$(GNATRTL_TASKING_OBJS)) ++ $(RANLIB_FOR_TARGET) $(libgnarl) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(libgnala) \ ++ $(addprefix $(build_dir),$(GNATRTL_LINEARALGEBRA_OBJS)) ++ $(RANLIB_FOR_TARGET) $(libgnala) + ifeq ($(GMEM_LIB),gmemlib) +- $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgmem$(arext) \ +- $(RTSDIR)/memtrack.o +- $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) ++ $(AR_FOR_TARGET) $(AR_FLAGS) $(build_dir)libgmem$(arext) \ ++ $(build_dir)memtrack.o ++ $(RANLIB_FOR_TARGET) $(build_dir)libgmem$(arext) + endif +- touch ../stamp-gnatlib-$(RTSDIR) + + # Warning: this target assumes that LIBRARY_VERSION has been set correctly. +-gnatlib-shared-default: ../stamp-gnatlib1-$(RTSDIR) +- $(MAKE) -C $(RTSDIR) \ ++%/$(libgnat) %/$(libgnat-sjlj): build_dir = $(dir $@) ++%/$(libgnat) %/$(libgnat-sjlj): libgnarl = $(notdir $(subst libgnat,libgnarl,$@)) ++%/$(libgnat) %/$(libgnat-sjlj): libgnala = $(notdir $(subst libgnat,libgnala,$@)) ++%/$(libgnat) %/$(libgnat-sjlj): % ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ + CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \ + srcdir=$(fsrcdir) \ + -f ../Makefile $(LIBGNAT_OBJS) +- $(MAKE) -C $(RTSDIR) \ ++ $(MAKE) -C $(build_dir) \ + CC="`echo \"$(GCC_FOR_TARGET)\" \ + | sed -e 's,^\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ + ADA_INCLUDES="" \ +@@ -1963,154 +1997,56 @@ + srcdir=$(fsrcdir) \ + -f ../Makefile \ + $(GNATRTL_OBJS) +- $(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1 +- cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ $(RM) $(build_dir)/libgna*$(soext) $(build_dir)/libgna*$(soext).1 ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(notdir $@).1 \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ + g-trasym.o convert_addresses.o \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(notdir $@).1 \ + $(MISCLIB) -lm +- cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ cd $(build_dir); $(LN_S) $(notdir $@).1 $(notdir $@) ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ + $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ -o $(libgnarl).1 \ + $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \ ++ $(SO_OPTS)$(libgnarl).1 \ + $(THREADSLIB) +- cd $(RTSDIR); for lib in gnat gnarl; do \ +- l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \ +- $(LN_S) $$l.1 $$l; \ +- done +-# Delete the object files, lest they be linked statically into the tools +-# executables. Only the .ali, .a and .so files must remain. +- rm -f $(RTSDIR)/*.o +- $(CHMOD) a-wx $(RTSDIR)/*.ali +- +-gnatlib-shared-dual: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- 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-shared-default +- +-gnatlib-shared-dual-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- 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 +-# use the gnatlib-shared-dual-win32 target to build the GNAT runtimes on +-# Windows. +-gnatlib-shared-win32: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) +- cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB) +- cd $(RTSDIR); ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- +-gnatlib-shared-darwin: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) \ +- -fno-common" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) -fno-common" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext) +- cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ +- $(SO_OPTS) \ +- $(MISCLIB) -lm +- cd $(RTSDIR); ../../xgcc -B../../ -dynamiclib $(TARGET_LIBGCC2_CFLAGS) \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- $(GNATRTL_TASKING_OBJS) \ +- $(SO_OPTS) \ +- $(THREADSLIB) -Wl,libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) +- cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnat$(soext) +- cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl$(soext) ++ cd $(build_dir); $(LN_S) $(libgnarl).1 $(libgnarl) ++# TODO: enable building the shared libgnala ++ifeq (libgnala-shared-enabled,yes) ++ cd $(build_dir); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ ++ $(TARGET_LIBGCC2_CFLAGS) \ ++ -o $(libgnala).1 \ ++ $(GNATRTL_LINEARALGEBRA_OBJS) \ ++ $(SO_OPTS)$(libgnala).1 ++ cd $(build_dir); $(LN_S) $(libgnala).1 $(libgnala) ++endif + +-gnatlib-shared-vms: +- $(MAKE) $(FLAGS_TO_PASS) \ +- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +- GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ +- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ +- MULTISUBDIR="$(MULTISUBDIR)" \ +- THREAD_KIND="$(THREAD_KIND)" \ +- gnatlib +- $(RM) $(RTSDIR)/libgna*$(soext) +- cd $(RTSDIR) && \ +- ../../gnatsym -s SYMVEC_$$$$.opt \ +- $(LIBGNAT_OBJS) $(GNATRTL_NONTASKING_OBJS) && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) libgnat.a \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) +- cd $(RTSDIR) && \ +- ../../gnatsym -s SYMVEC_$$$$.opt \ +- $(GNATRTL_TASKING_OBJS) && \ +- ../../xgcc -g -B../../ -shared -shared-libgcc \ +- -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- libgnarl.a libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ +- sys\$$library:trace.exe \ +- --for-linker=/noinform \ +- --for-linker=SYMVEC_$$$$.opt \ +- --for-linker=gsmatch=equal,$(GSMATCH_VERSION) ++gnatlib-shared-dual: gnatlib-static-zcx gnatlib-static-sjlj gnatlib-shared-zcx + +-gnatlib-shared: ++gnatlib-shared-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-shared-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ ++ EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ + GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ + TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ +- $(GNATLIB_SHARED) ++ $(rts)/$(libgnat) + +-gnatlib-sjlj: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" ../stamp-gnatlib1-$(RTSDIR) +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads +- $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads ++gnatlib-static-sjlj: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-sjlj: gnatlib-sources-sjlj/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-sjlj $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -2118,12 +2054,15 @@ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ $(rts)/libgnat$(arext) + +-gnatlib-zcx: +- $(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" ../stamp-gnatlib1-$(RTSDIR) +- sed -e 's/ZCX_By_Default.*/ZCX_By_Default : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads +- $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads ++gnatlib-static-zcx: rts = $(subst gnatlib,rts,$@) ++gnatlib-static-zcx: gnatlib-sources-zcx/a-except.ads ++ if [ ! -d $(rts) ] ; then \ ++ cp -a gnatlib-sources-zcx $(rts); \ ++ $(MV) $(rts)/s.ads $(rts)/system.ads; \ ++ fi + $(MAKE) $(FLAGS_TO_PASS) \ + EH_MECHANISM="-gcc" \ + GNATLIBFLAGS="$(GNATLIBFLAGS)" \ +@@ -2131,7 +2070,8 @@ + GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \ + MULTISUBDIR="$(MULTISUBDIR)" \ + THREAD_KIND="$(THREAD_KIND)" \ +- TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" gnatlib ++ TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \ ++ $(rts)/libgnat$(arext) + + # .s files for cross-building + gnat-cross: force +@@ -2139,6 +2079,10 @@ + + ADA_INCLUDE_DIR = $(libsubdir)/adainclude + ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++ADA_NATIVE_INCLUDE_DIR = $(libsubdir)/rts-native/adainclude ++ADA_NATIVE_RTL_OBJ_DIR = $(libsubdir)/rts-native/adalib ++ADA_SJLJ_INCLUDE_DIR = $(libsubdir)/rts-sjlj/adainclude ++ADA_SJLJ_RTL_OBJ_DIR = $(libsubdir)/rts-sjlj/adalib + + # force no sibling call optimization on s-traceb.o so the number of stack + # frames to be skipped when computing a call chain is not modified by +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -35,12 +35,13 @@ + LN_S=@LN_S@ + target_noncanonical=@target_noncanonical@ + ++RTS=../gcc/ada/rts-shared-zcx + CFLAGS=-O2 -Wall + ADA_CFLAGS=-O2 -gnatn +-ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn -I../libgnatprj ++ADA_INCLUDES=-nostdinc -I- -I. -I$(RTS) -I../libgnatvsn -I../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +-ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ADA_LIBS := -L$(RTS) -lgnat-$(LIB_VERSION) + ADA_LIBS += -L../libgnatvsn -lgnatvsn + ADA_LIBS += -L../libgnatprj -lgnatprj + +@@ -109,6 +110,7 @@ + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ ++ (cd $(RTS); if [ -d obj ]; then mv obj/* .; rmdir obj; fi) + + BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) + SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) +@@ -119,9 +121,12 @@ + for file in $(BODIES) $(SPECS); do \ + $(LN_S) -f $$file .; \ + done ++# Move the RTS object files away lest they be linked statically into the ++# tools. Only the .ali, .a and .so files must remain. ++ (cd $(RTS); mkdir obj; mv *.o obj; chmod a-wx *.ali) + touch $@ + +-gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: $(RTS)/libgnat-$(LIB_VERSION).so + gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) +@@ -137,7 +142,7 @@ + $(GCC) -o $@ $^ \ + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a \ ++ ../gcc/ada/rts-static-zcx/libgnat.a \ + ../libiberty/libiberty.a + + gnatlink: $(GNATLINK_OBJS) b_gnatl.o +@@ -155,7 +160,7 @@ + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ + ../libgnatprj/libgnatprj.a \ + ../libgnatvsn/libgnatvsn.a \ +- ../gcc/ada/rts/libgnat.a \ ++ ../gcc/ada/rts-static-zcx/libgnat.a \ + ../libiberty/libiberty.a + + gnatmake: $(GNATMAKE_OBJS) b_gnatm.o +Index: b/src/libgnatprj/Makefile.in +=================================================================== +--- a/src/libgnatprj/Makefile.in ++++ b/src/libgnatprj/Makefile.in +@@ -25,7 +25,8 @@ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC:=../gcc/xgcc -B../gcc/ +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + LIBGNATVSN := -I../libgnatvsn + CFLAGS := -g -O2 + ADAFLAGS := -g -O2 -gnatn +@@ -70,7 +71,7 @@ + libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) + : # Make libgnatprj.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \ ++ -L$(RTS) -lgnat-$(LIB_VERSION) \ + -L../libgnatvsn -lgnatvsn + $(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so + chmod a=r obj-shared/*.ali +Index: b/src/libgnatvsn/Makefile.in +=================================================================== +--- a/src/libgnatvsn/Makefile.in ++++ b/src/libgnatvsn/Makefile.in +@@ -25,7 +25,8 @@ + @srcdir@/../gcc/ada/gnatvsn.ads | \ + sed -e 's/.*"\(.*\)".*/\1/')) + GCC:=../gcc/xgcc -B../gcc/ +-LIBGNAT_JUST_BUILT := -nostdinc -I../gcc/ada/rts ++RTS:=../gcc/ada/rts-shared-zcx ++LIBGNAT_JUST_BUILT := -nostdinc -I$(RTS) + CFLAGS := -g -O2 -gnatn + BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER) + DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE) +@@ -64,7 +65,7 @@ + libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS)) + : # Make libgnatvsn.so + $(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \ +- -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ -L$(RTS) -lgnat-$(LIB_VERSION) + ln -s 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. +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 +@@ -69,7 +69,8 @@ + "ADA_FOR_TARGET=$(ADA_FOR_TARGET)" \ + "INSTALL=$(INSTALL)" \ + "INSTALL_DATA=$(INSTALL_DATA)" \ +- "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" ++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ ++ "GCC_FOR_TARGET=$(GCC_FOR_TARGET)" + + # Say how to compile Ada programs. + .SUFFIXES: .ada .adb .ads --- gcc-4.4-4.4.7.orig/debian/patches/ada-symbolic-tracebacks.diff +++ gcc-4.4-4.4.7/debian/patches/ada-symbolic-tracebacks.diff @@ -0,0 +1,326 @@ +# 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 +@@ -236,8 +236,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$(srcdir)/config \ +- -I$(srcdir)/../include ++INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote $(srcdir) \ ++ -iquote $(srcdir)/config -iquote $(srcdir)/../include + + ADA_INCLUDES = -I- -I. -I$(srcdir)/ada + +@@ -1828,7 +1828,7 @@ + a-nucoar.o a-nurear.o i-forbla.o i-forlap.o s-gearop.o + + GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \ +- $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o ++ $(GNATRTL_LINEARALGEBRA_OBJS) g-trasym.o memtrack.o convert_addresses.o + + # Default run time files + +@@ -1951,7 +1951,6 @@ + for file in $(RTSDIR)/*.ali; do \ + $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + done +- -$(INSTALL_DATA) $(RTSDIR)/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR) + -cd $(RTSDIR); for file in *$(arext);do \ + $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ +@@ -2051,7 +2050,7 @@ + $(GNATRTL_OBJS) + $(RM) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnarl$(arext) + $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgnat$(arext) \ +- $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) ++ $(addprefix $(RTSDIR)/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) + ifneq ($(PREFIX_OBJS),) + $(AR_FOR_TARGET) $(AR_FLAGS) $(RTSDIR)/libgccprefix$(arext) \ + $(PREFIX_OBJS); +@@ -2086,6 +2085,7 @@ + $(TARGET_LIBGCC2_CFLAGS) \ + -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \ ++ g-trasym.o convert_addresses.o \ + $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ + $(MISCLIB) -lm + cd $(RTSDIR); ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ +@@ -2347,6 +2347,7 @@ + sysdep.o : sysdep.c + raise-gcc.o : raise-gcc.c raise.h + raise.o : raise.c raise.h ++convert_addresses.o : convert_addresses.c + vx_stack_info.o : vx_stack_info.c + + cio.o : cio.c +Index: b/src/gcc/ada/adaint.c +=================================================================== +--- a/src/gcc/ada/adaint.c ++++ b/src/gcc/ada/adaint.c +@@ -3122,36 +3122,6 @@ + } + #endif + +-#if defined (CROSS_DIRECTORY_STRUCTURE) \ +- || (! ((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 (__hpux__) \ +- && ! defined (__APPLE__) \ +- && ! defined (_AIX) \ +- && ! (defined (__alpha__) && defined (__osf__)) \ +- && ! defined (VMS) \ +- && ! defined (__MINGW32__) \ +- && ! (defined (__mips) && defined (__sgi))) +- +-/* 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,154 @@ ++/* ++ 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 *file_name, ++ void* addrs[], ++ int n_addr, ++ char* buf, ++ int* len) ++{ ++ int max_len = *len; ++ pid_t pid = getpid(); ++ pid_t child; ++ ++ struct sigaction act, oact; ++ ++ int fd1[2], fd2[2]; ++ ++ *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 *const argv[] = { "addr2line", ++ "-e", ++ file_name, ++ "--demangle=gnat", ++ "--functions", ++ "--basenames", ++ NULL }; ++ char *const envp[] = { NULL }; ++ if (execve("/usr/bin/addr2line", argv, envp) < 0) { ++ CLOSE1; CLOSE2; ++ } ++ } ++ } ++ 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 +@@ -32,16 +32,16 @@ + ------------------------------------------------------------------------------ + + -- Run-time symbolic traceback support ++-- This file has been modified by Juergen Pfeifer (31-Dec-1999) for ++-- the purpose to support the Ada for Linux Team implementation of ++-- convert_addresses. This implementation has the advantage to run ++-- on the binutils as they are deployed on Linux. + + with System.Soft_Links; + with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback; + + package body GNAT.Traceback.Symbolic is + +- pragma Linker_Options ("-laddr2line"); +- pragma Linker_Options ("-lbfd"); +- pragma Linker_Options ("-liberty"); +- + package TSL renames System.Soft_Links; + + -- To perform the raw addresses to symbolic form translation we rely on a +@@ -79,10 +79,6 @@ + -- raw addresses provided in ADDRS, looked up in debug information from + -- FILENAME. LEN is filled with the result length. + -- +- -- This procedure is provided by libaddr2line on targets that support +- -- it. A dummy version is in adaint.c for other targets so that build +- -- of shared libraries doesn't generate unresolved symbols. +- -- + -- Note that this procedure is *not* thread-safe. + + type Argv_Array is array (0 .. 0) of System.Address; +@@ -93,8 +89,9 @@ + (c_exename : System.Address) return System.Address; + pragma Import (C, locate_exec_on_path, "__gnat_locate_exec_on_path"); + +- Res : String (1 .. 256 * Traceback'Length); +- Len : Integer; ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); + + use type System.Address; + --- gcc-4.4-4.4.7.orig/debian/patches/alpha-ieee-doc.diff +++ gcc-4.4-4.4.7/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, 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-4.4-4.4.7.orig/debian/patches/alpha-ieee.diff +++ gcc-4.4-4.4.7/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 +@@ -281,6 +281,10 @@ override_options (void) + + int i; + ++ /* If not -ffinite-math-only, enable -mieee*/ ++ if (!flag_finite_math_only) ++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; ++ + /* Unicos/Mk doesn't have shared libraries. */ + if (TARGET_ABI_UNICOSMK && flag_pic) + { --- gcc-4.4-4.4.7.orig/debian/patches/alpha-no-ev4-directive.diff +++ gcc-4.4-4.4.7/debian/patches/alpha-no-ev4-directive.diff @@ -0,0 +1,30 @@ +# DP: never emit .ev4 directive. + +--- + gcc/config/alpha/alpha.c | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +--- a/src/gcc/config/alpha/alpha.c ++++ b/src/gcc/config/alpha/alpha.c +@@ -9421,7 +9421,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"; +@@ -9431,10 +9431,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); + } + } + #endif --- gcc-4.4-4.4.7.orig/debian/patches/arm-boehm-gc-locks.diff +++ gcc-4.4-4.4.7/debian/patches/arm-boehm-gc-locks.diff @@ -0,0 +1,26 @@ +# DP: Fix boehm-gc build on ARM --with-mode=thumb + +--- a/src/boehm-gc/include/private/gc_locks.h (revision 155048) ++++ b/src/boehm-gc/include/private/gc_locks.h (working copy) +@@ -207,6 +207,12 @@ + # define GC_CLEAR_DEFINED + # endif /* ALPHA */ + # ifdef ARM32 ++# define GC_TEST_AND_SET_DEFINED ++# if (__GNUC__>4)||((__GNUC__==4)&&(__GNUC_MINOR__>=4)) && defined(__ARM_EABI__) ++# define GC_CLEAR_DEFINED ++# define GC_test_and_set(addr) __sync_lock_test_and_set (addr, 1) ++# define GC_clear(addr) __sync_lock_release (addr) ++# else + inline static int GC_test_and_set(volatile unsigned int *addr) { + int oldval; + /* SWP on ARM is very similar to XCHG on x86. Doesn't lock the +@@ -219,7 +225,7 @@ + : "memory"); + return oldval; + } +-# define GC_TEST_AND_SET_DEFINED ++# endif + # endif /* ARM32 */ + # ifdef CRIS + inline static int GC_test_and_set(volatile unsigned int *addr) { --- gcc-4.4-4.4.7.orig/debian/patches/arm-dynamic-linker.diff +++ gcc-4.4-4.4.7/debian/patches/arm-dynamic-linker.diff @@ -0,0 +1,21 @@ +# DP: For ARM hard float, set the dynamic linker to +# DP: /lib/ld-linux-armhf.so.3. + +diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h +index 80bd825..8c9d2e7 100644 +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -62,7 +62,11 @@ + /* Use ld-linux.so.3 so that it will be possible to run "classic" + GNU/Linux binaries on an EABI system. */ + #undef GLIBC_DYNAMIC_LINKER +-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" ++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3" ++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3" ++#define GLIBC_DYNAMIC_LINKER \ ++ "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \ ++ %{!mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "}" + + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + --- gcc-4.4-4.4.7.orig/debian/patches/arm-gcc-gcse.diff +++ gcc-4.4-4.4.7/debian/patches/arm-gcc-gcse.diff @@ -0,0 +1,54 @@ +# DP: ARM: Don't copy uncopyable instructions in gcse.c (backport from the trunk). + +gcc/ + +2009-05-27 Julian Brown + + * gcse.c (target.h): Include. + (can_assign_to_reg_without_clobbers_p): Check that the target allows + copy of argument to a pseudo register. + +--- a/src/gcc/gcse.c.orig 2009-04-27 13:55:13.000000000 +0200 ++++ b/src/gcc/gcse.c 2009-12-09 11:12:05.000000000 +0100 +@@ -172,6 +172,7 @@ + #include "hashtab.h" + #include "df.h" + #include "dbgcnt.h" ++#include "target.h" + + /* Propagate flow information through back edges and thus enable PRE's + moving loop invariant calculations out of loops. +@@ -1203,7 +1204,11 @@ + + static GTY(()) rtx test_insn; + +-/* Return true if we can assign X to a pseudo register. */ ++/* Return true if we can assign X to a pseudo register. ++ ++ Additionally, if the target requires it, check that the resulting insn ++ can be copied. If it cannot, this means that X is special and probably ++ has hidden side-effects we don't want to mess with. */ + + static bool + can_assign_to_reg_p (rtx x) +@@ -1233,8 +1238,18 @@ + valid. */ + PUT_MODE (SET_DEST (PATTERN (test_insn)), GET_MODE (x)); + SET_SRC (PATTERN (test_insn)) = x; +- return ((icode = recog (PATTERN (test_insn), test_insn, &num_clobbers)) >= 0 +- && (num_clobbers == 0 || ! added_clobbers_hard_reg_p (icode))); ++ ++ icode = recog (PATTERN (test_insn), test_insn, &num_clobbers); ++ if (icode < 0) ++ return false; ++ ++ if (num_clobbers > 0 && added_clobbers_hard_reg_p (icode)) ++ return false; ++ ++ if (targetm.cannot_copy_insn_p && targetm.cannot_copy_insn_p (test_insn)) ++ return false; ++ ++ return true; + } + + /* Return nonzero if the operands of expression X are unchanged from the --- gcc-4.4-4.4.7.orig/debian/patches/arm-thumb2-speedup-division.diff +++ gcc-4.4-4.4.7/debian/patches/arm-thumb2-speedup-division.diff @@ -0,0 +1,252 @@ +# DP: ARM: speed up division on Thumb-2 (backport from the trunk) + +2009-08-06 Paul Brook + + gcc/ + * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation. + (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1 + implementation on ARMv6-M. + +--- + src/gcc/config/arm/lib1funcs.asm | 63 +++++++++++++++++++++++++++++++++------ + 1 file changed, 54 insertions(+), 9 deletions(-) + +--- a/src/gcc/config/arm/lib1funcs.asm ++++ b/src/gcc/config/arm/lib1funcs.asm +@@ -436,10 +436,31 @@ pc .req r15 + /* ------------------------------------------------------------------------ */ + .macro ARM_DIV_BODY dividend, divisor, result, curbit + + #if __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__) + ++#if defined (__thumb2__) ++ clz \curbit, \dividend ++ clz \result, \divisor ++ sub \curbit, \result, \curbit ++ rsb \curbit, \curbit, #31 ++ adr \result, 1f ++ add \curbit, \result, \curbit, lsl #4 ++ mov \result, #0 ++ mov pc, \curbit ++.p2align 3 ++1: ++ .set shift, 32 ++ .rept 32 ++ .set shift, shift - 1 ++ cmp.w \dividend, \divisor, lsl #shift ++ nop.n ++ adc.w \result, \result, \result ++ it cs ++ subcs.w \dividend, \dividend, \divisor, lsl #shift ++ .endr ++#else + clz \curbit, \dividend + clz \result, \divisor + sub \curbit, \result, \curbit + rsbs \curbit, \curbit, #31 + addne \curbit, \curbit, \curbit, lsl #1 +@@ -451,10 +472,11 @@ pc .req r15 + .set shift, shift - 1 + cmp \dividend, \divisor, lsl #shift + adc \result, \result, \result + subcs \dividend, \dividend, \divisor, lsl #shift + .endr ++#endif + + #else /* __ARM_ARCH__ < 5 || defined (__OPTIMIZE_SIZE__) */ + #if __ARM_ARCH__ >= 5 + + clz \curbit, \divisor +@@ -498,22 +520,27 @@ pc .req r15 + + #endif /* __ARM_ARCH__ < 5 */ + + @ Division loop + 1: cmp \dividend, \divisor ++ do_it hs, t + subhs \dividend, \dividend, \divisor + orrhs \result, \result, \curbit + cmp \dividend, \divisor, lsr #1 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #1 + orrhs \result, \result, \curbit, lsr #1 + cmp \dividend, \divisor, lsr #2 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #2 + orrhs \result, \result, \curbit, lsr #2 + cmp \dividend, \divisor, lsr #3 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #3 + orrhs \result, \result, \curbit, lsr #3 + cmp \dividend, #0 @ Early termination? ++ do_it hs, t + movnes \curbit, \curbit, lsr #4 @ No, any more bits to do? + movne \divisor, \divisor, lsr #4 + bne 1b + + #endif /* __ARM_ARCH__ < 5 || defined (__OPTIMIZE_SIZE__) */ +@@ -798,15 +825,15 @@ LSYM(Lgot_result): + /* ------------------------------------------------------------------------ */ + /* Start of the Real Functions */ + /* ------------------------------------------------------------------------ */ + #ifdef L_udivsi3 + ++#if defined(__ARM_ARCH_6M__) ++ + FUNC_START udivsi3 + FUNC_ALIAS aeabi_uidiv udivsi3 + +-#ifdef __thumb__ +- + cmp divisor, #0 + beq LSYM(Ldiv0) + mov curbit, #1 + mov result, #0 + +@@ -818,13 +845,17 @@ LSYM(Lgot_result): + + mov r0, result + pop { work } + RET + +-#else /* ARM version. */ ++#else /* ARM version/Thumb-2. */ ++ ++ ARM_FUNC_START udivsi3 ++ ARM_FUNC_ALIAS aeabi_uidiv udivsi3 + + subs r2, r1, #1 ++ do_it eq + RETc(eq) + bcc LSYM(Ldiv0) + cmp r0, r1 + bls 11f + tst r1, r2 +@@ -833,11 +864,12 @@ LSYM(Lgot_result): + ARM_DIV_BODY r0, r1, r2, r3 + + mov r0, r2 + RET + +-11: moveq r0, #1 ++11: do_it eq, e ++ moveq r0, #1 + movne r0, #0 + RET + + 12: ARM_DIV2_ORDER r1, r2 + +@@ -846,19 +878,20 @@ LSYM(Lgot_result): + + #endif /* ARM version */ + + DIV_FUNC_END udivsi3 + ++#if defined(__ARM_ARCH_6M__) + FUNC_START aeabi_uidivmod +-#ifdef __thumb__ + push {r0, r1, lr} + bl SYM(__udivsi3) + POP {r1, r2, r3} + mul r2, r0 + sub r1, r1, r2 + bx r3 + #else ++ARM_FUNC_START aeabi_uidivmod + stmfd sp!, { r0, r1, lr } + bl SYM(__udivsi3) + ldmfd sp!, { r1, r2, lr } + mul r3, r2, r0 + sub r1, r1, r3 +@@ -909,14 +942,15 @@ LSYM(Lover10): + + #endif /* L_umodsi3 */ + /* ------------------------------------------------------------------------ */ + #ifdef L_divsi3 + ++#if defined(__ARM_ARCH_6M__) ++ + FUNC_START divsi3 + FUNC_ALIAS aeabi_idiv divsi3 + +-#ifdef __thumb__ + cmp divisor, #0 + beq LSYM(Ldiv0) + + push { work } + mov work, dividend +@@ -944,60 +978,71 @@ LSYM(Lover11): + neg r0, r0 + LSYM(Lover12): + pop { work } + RET + +-#else /* ARM version. */ ++#else /* ARM/Thumb-2 version. */ + ++ ARM_FUNC_START divsi3 ++ ARM_FUNC_ALIAS aeabi_idiv divsi3 ++ + cmp r1, #0 + eor ip, r0, r1 @ save the sign of the result. + beq LSYM(Ldiv0) ++ do_it mi + rsbmi r1, r1, #0 @ loops below use unsigned. + subs r2, r1, #1 @ division by 1 or -1 ? + beq 10f + movs r3, r0 ++ do_it mi + rsbmi r3, r0, #0 @ positive dividend value + cmp r3, r1 + bls 11f + tst r1, r2 @ divisor is power of 2 ? + beq 12f + + ARM_DIV_BODY r3, r1, r0, r2 + + cmp ip, #0 ++ do_it mi + rsbmi r0, r0, #0 + RET + + 10: teq ip, r0 @ same sign ? ++ do_it mi + rsbmi r0, r0, #0 + RET + +-11: movlo r0, #0 ++11: do_it lo ++ movlo r0, #0 ++ do_it eq,t + moveq r0, ip, asr #31 + orreq r0, r0, #1 + RET + + 12: ARM_DIV2_ORDER r1, r2 + + cmp ip, #0 + mov r0, r3, lsr r2 ++ do_it mi + rsbmi r0, r0, #0 + RET + + #endif /* ARM version */ + + DIV_FUNC_END divsi3 + ++#if defined(__ARM_ARCH_6M__) + FUNC_START aeabi_idivmod +-#ifdef __thumb__ + push {r0, r1, lr} + bl SYM(__divsi3) + POP {r1, r2, r3} + mul r2, r0 + sub r1, r1, r2 + bx r3 + #else ++ARM_FUNC_START aeabi_idivmod + stmfd sp!, { r0, r1, lr } + bl SYM(__divsi3) + ldmfd sp!, { r1, r2, lr } + mul r3, r2, r0 + sub r1, r1, r3 --- gcc-4.4-4.4.7.orig/debian/patches/arm-unbreak-eabi-armv4t.diff +++ gcc-4.4-4.4.7/debian/patches/arm-unbreak-eabi-armv4t.diff @@ -0,0 +1,17 @@ +# DP: Fix armv4t build on ARM + +--- + gcc/config/arm/linux-eabi.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -44,7 +44,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ --- gcc-4.4-4.4.7.orig/debian/patches/armhf-triplet-backport.diff +++ gcc-4.4-4.4.7/debian/patches/armhf-triplet-backport.diff @@ -0,0 +1,105 @@ +# DP: add support for arm-linux-*eabi* triplets; useful for armhf + +--- a/src/configure.ac 2011-03-18 19:10:48.804622758 +0000 ++++ b/src/configure.ac 2011-03-18 19:11:18.324622793 +0000 +@@ -592,7 +592,7 @@ + noconfigdirs="$noconfigdirs target-libffi target-qthreads" + libgloss_dir=arm + ;; +- arm*-*-linux-gnueabi) ++ arm*-*-linux-*eabi*) + noconfigdirs="$noconfigdirs target-qthreads" + case ${with_newlib} in + no) noconfigdirs="$noconfigdirs target-newlib target-libgloss" +--- a/src/gcc/ada/gcc-interface/Makefile.in 2011-03-18 19:11:37.296622753 +0000 ++++ b/src/gcc/ada/gcc-interface/Makefile.in 2011-03-18 19:11:52.964621827 +0000 +@@ -1857,7 +1857,7 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + +-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),) ++ifeq ($(strip $(filter-out arm%-linux,$(arch)-$(osys)) $(if $(findstring eabi,$(word 4,$(targ))),,$(word 4,$(targ)))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads + // +--- a/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc 2011-03-18 19:16:31.144622761 +0000 ++++ b/src/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc 2011-03-18 19:16:41.420622950 +0000 +@@ -1,5 +1,5 @@ + // { dg-options "-std=gnu++0x -funsigned-char -fshort-enums" } +-// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux*eabi } } ++// { dg-options "-std=gnu++0x -funsigned-char -fshort-enums -Wl,--no-enum-size-warning" { target arm*-*-linux-*eabi* } } + + // 2007-05-03 Benjamin Kosnik + // + --- gcc-4.4-4.4.7.orig/debian/patches/boehm-gc-getnprocs.diff +++ gcc-4.4-4.4.7/debian/patches/boehm-gc-getnprocs.diff @@ -0,0 +1,18 @@ +# DP: boehm-gc/pthread_support.c (GC_get_nprocs): Use sysconf as fallback. + +--- + boehm-gc/pthread_support.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +--- a/src/boehm-gc/pthread_support.c ++++ b/src/boehm-gc/pthread_support.c +@@ -724,7 +724,8 @@ int GC_get_nprocs() + f = open("/proc/stat", O_RDONLY); + if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) { + WARN("Couldn't read /proc/stat\n", 0); +- return -1; ++ /* Fallback to sysconf after the warning */ ++ return sysconf(_SC_NPROCESSORS_ONLN); + } + for (i = 0; i < len - 100; ++i) { + if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c' --- gcc-4.4-4.4.7.orig/debian/patches/boehm-gc-nocheck.diff +++ gcc-4.4-4.4.7/debian/patches/boehm-gc-nocheck.diff @@ -0,0 +1,18 @@ +# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa. + +--- + boehm-gc/Makefile.in | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +--- a/src/boehm-gc/Makefile.in ++++ b/src/boehm-gc/Makefile.in +@@ -684,7 +684,8 @@ check-TESTS: $(TESTS) + test "$$failed" -eq 0; \ + else :; fi + check-am: $(check_PROGRAMS) +- $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ : # $(MAKE) $(AM_MAKEFLAGS) check-TESTS ++ @echo target $@ disabled for Debian build. + check: check-recursive + all-am: Makefile $(LTLIBRARIES) all-multi + installdirs: installdirs-recursive --- gcc-4.4-4.4.7.orig/debian/patches/cell-branch-doc.diff +++ gcc-4.4-4.4.7/debian/patches/cell-branch-doc.diff @@ -0,0 +1,253 @@ +# DP: Updates from the cell-4_4-branch (documentation) up to 20100518 + +Index: gcc/doc/extend.texi +=================================================================== +--- a/src/gcc/doc/extend.texi (.../gcc-4_4-branch) ++++ b/src/gcc/doc/extend.texi (.../cell-4_4-branch) +@@ -38,6 +38,7 @@ + * Decimal Float:: Decimal Floating Types. + * Hex Floats:: Hexadecimal floating-point constants. + * Fixed-Point:: Fixed-Point Types. ++* Named Address Spaces::Named address spaces. + * Zero Length:: Zero-length arrays. + * Variable Length:: Arrays whose length is computed at run time. + * Empty Structures:: Structures with no members. +@@ -1147,6 +1148,31 @@ + + Fixed-point types are supported by the DWARF2 debug information format. + ++@node Named Address Spaces ++@section Named address spaces ++@cindex named address spaces ++ ++As an extension, the GNU C compiler supports named address spaces as ++defined in the N1275 draft of ISO/IEC DTR 18037. Support for named ++address spaces in GCC will evolve as the draft technical report changes. ++Calling conventions for any target might also change. At present, only ++the SPU target supports other address spaces. On the SPU target, for ++example, variables may be declared as belonging to another address space ++by qualifying the type with the @code{__ea} address space identifier: ++ ++@smallexample ++extern int __ea i; ++@end smallexample ++ ++When the variable @code{i} is accessed, the compiler will generate ++special code to access this variable. It may use runtime library ++support, or generate special machine instructions to access that address ++space. ++ ++The @code{__ea} identifier may be used exactly like any other C type ++qualifier (e.g., @code{const} or @code{volatile}). See the N1275 ++document for more details. ++ + @node Zero Length + @section Arrays of Length Zero + @cindex arrays of length zero +@@ -5700,7 +5726,7 @@ + + The types defined in this manner can be used with a subset of normal C + operations. Currently, GCC will allow using the following operators +-on these types: @code{+, -, *, /, unary minus, ^, |, &, ~}@. ++on these types: @code{+, -, *, /, unary minus, ^, |, &, ~, %}@. + + The operations behave like C++ @code{valarrays}. Addition is defined as + the addition of the corresponding elements of the operands. For +Index: gcc/doc/tm.texi +=================================================================== +--- a/src/gcc/doc/tm.texi (.../gcc-4_4-branch) ++++ b/src/gcc/doc/tm.texi (.../cell-4_4-branch) +@@ -55,6 +55,7 @@ + * MIPS Coprocessors:: MIPS coprocessor support and how to customize it. + * PCH Target:: Validity checking for precompiled headers. + * C++ ABI:: Controlling C++ ABI changes. ++* Named Address Spaces:: Adding support for named address spaces + * Misc:: Everything else. + @end menu + +@@ -9622,6 +9623,105 @@ + visibility or perform any other required target modifications). + @end deftypefn + ++@node Named Address Spaces ++@section Adding support for named address spaces ++@cindex named address spaces ++ ++The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275 ++standards committee, @cite{Programming Languages - C - Extensions to ++support embedded processors}, specifies a syntax for embedded ++processors to specify alternate address spaces. You can configure a ++GCC port to support section 5.1 of the draft report to add support for ++address spaces other than the default address space. These address ++spaces are new keywords that are similar to the @code{volatile} and ++@code{const} type attributes. ++ ++Pointers to named address spaces can a a different size than ++pointers to the generic address space. ++ ++For example, the SPU port uses the @code{__ea} address space to refer ++to memory in the host processor, rather than memory local to the SPU ++processor. Access to memory in the @code{__ea} address space involves ++issuing DMA operations to move data between the host processor and the ++local processor memory address space. Pointers in the @code{__ea} ++address space are either 32 bits or 64 bits based on the ++@option{-mea32} or @option{-mea64} switches (native SPU pointers are ++always 32 bits). ++ ++Internally, address spaces are represented as a small integer in the ++range 0 to 15 with address space 0 being reserved for the generic ++address space. ++ ++@defmac TARGET_ADDR_SPACE_KEYWORDS ++A list of @code{ADDR_SPACE_KEYWORD} macros to define each named ++address keyword. The @code{ADDR_SPACE_KEYWORD} macro takes two ++arguments, the keyword string and the number of the named address ++space. For example, the SPU port uses the following to declare ++@code{__ea} as the keyword for named address space #1: ++@smallexample ++#define ADDR_SPACE_EA 1 ++#define TARGET_ADDR_SPACE_KEYWORDS ADDR_SPACE_KEYWORD ("__ea", ADDR_SPACE_EA) ++@end smallexample ++@end defmac ++ ++@deftypefn {Target Hook} {enum machine_mode} TARGET_ADDR_SPACE_POINTER_MODE (addr_space_t @var{address_space}) ++Define this to return the machine mode to use for pointers to ++@var{address_space} if the target supports named address spaces. ++The default version of this hook returns @code{ptr_mode} for the ++generic address space only. ++@end deftypefn ++ ++@deftypefn {Target Hook} {enum machine_mode} TARGET_ADDR_SPACE_ADDRESS_MODE (addr_space_t @var{address_space}) ++Define this to return the machine mode to use for addresses in ++@var{address_space} if the target supports named address spaces. ++The default version of this hook returns @code{Pmode} for the ++generic address space only. ++@end deftypefn ++ ++@deftypefn {Target Hook} bool TARGET_ADDR_SPACE_VALID_POINTER_MODE (enum machine_mode @var{mode}, addr_space_t @var{as}) ++Define this to return nonzero if the port can handle pointers ++with machine mode @var{mode} to address space @var{as}. This target ++hook is the same as the @code{TARGET_VALID_POINTER_MODE} target hook, ++except that it includes explicit named address space support. The default ++version of this hook returns true for the modes returned by either the ++@code{TARGET_ADDR_SPACE_POINTER_MODE} or @code{TARGET_ADDR_SPACE_ADDRESS_MODE} ++target hooks for the given address space. ++@end deftypefn ++ ++@deftypefn {Target Hook} {bool} TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P (enum machine_mode @var{mode}, rtx @var{exp}, bool @var{strict}, addr_space_t @var{as}) ++Define this to return true if @var{exp} is a valid address for mode ++@var{mode} in the named address space @var{as}. The @var{strict} ++parameter says whether strict addressing is in effect after reload has ++finished. This target hook is the same as the ++@code{TARGET_LEGITIMATE_ADDRESS_P} target hook, except that it includes ++explicit named address space support. ++@end deftypefn ++ ++@deftypefn {Target Hook} {rtx} TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS (rtx @var{x}, rtx @var{oldx}, enum machine_mode @var{mode}, addr_space_t @var{as}) ++Define this to modify an invalid address @var{x} to be a valid address ++with mode @var{mode} in the named address space @var{as}. This target ++hook is the same as the @code{TARGET_LEGITIMIZE_ADDRESS} target hook, ++except that it includes explicit named address space support. ++@end deftypefn ++ ++@deftypefn {Target Hook} {bool} TARGET_ADDR_SPACE_SUBSET_P (addr_space_t @var{superset}, addr_space_t @var{subset}) ++Define this to return whether the @var{subset} named address space is ++contained within the @var{superset} named address space. Pointers to ++a named address space that is a subset of another named address space ++will be converted automatically without a cast if used together in ++arithmetic operations. Pointers to a superset address space can be ++converted to pointers to a subset address space via explict casts. ++@end deftypefn ++ ++@deftypefn {Target Hook} {rtx} TARGET_ADDR_SPACE_CONVERT (rtx @var{op}, tree @var{from_type}, tree @var{to_type}) ++Define this to convert the pointer expression represented by the RTL ++@var{op} with type @var{from_type} that points to a named address ++space to a new pointer expression with type @var{to_type} that points ++to a different named address space. When this hook it called, it is ++guaranteed that one of the two address spaces is a subset of the other, ++as determined by the @code{TARGET_ADDR_SPACE_SUBSET_P} target hook. ++@end deftypefn ++ + @node Misc + @section Miscellaneous Parameters + @cindex parameters, miscellaneous +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (.../gcc-4_4-branch) ++++ b/src/gcc/doc/invoke.texi (.../cell-4_4-branch) +@@ -800,7 +800,11 @@ + -msafe-dma -munsafe-dma @gol + -mbranch-hints @gol + -msmall-mem -mlarge-mem -mstdmain @gol +--mfixed-range=@var{register-range}} ++-mfixed-range=@var{register-range} @gol ++-mea32 -mea64 @gol ++-maddress-space-conversion -mno-address-space-conversion @gol ++-mcache-size=@var{cache-size} @gol ++-matomic-updates -mno-atomic-updates} + + @emph{System V Options} + @gccoptlist{-Qy -Qn -YP,@var{paths} -Ym,@var{dir}} +@@ -15258,6 +15262,46 @@ + two registers separated by a dash. Multiple register ranges can be + specified separated by a comma. + ++@item -mea32 ++@itemx -mea64 ++@opindex mea32 ++@opindex mea64 ++Compile code assuming that pointers to the PPU address space accessed ++via the @code{__ea} named address space qualifier are either 32 or 64 ++bits wide. The default is 32 bits. As this is an ABI changing option, ++all object code in an executable must be compiled with the same setting. ++ ++@item -maddress-space-conversion ++@itemx -mno-address-space-conversion ++@opindex maddress-space-conversion ++@opindex mno-address-space-conversion ++Allow/disallow treating the @code{__ea} address space as superset ++of the generic address space. This enables explicit type casts ++between @code{__ea} and generic pointer as well as implicit ++conversions of generic pointers to @code{__ea} pointers. The ++default is to allow address space pointer conversions. ++ ++@item -mcache-size=@var{cache-size} ++@opindex mcache-size ++This option controls the version of libgcc that the compiler links to an ++executable and selects a software-managed cache for accessing variables ++in the @code{__ea} address space with a particular cache size. Possible ++options for @var{cache-size} are @samp{8}, @samp{16}, @samp{32}, @samp{64} ++and @samp{128}. The default cache size is 64KB. ++ ++@item -matomic-updates ++@itemx -mno-atomic-updates ++@opindex matomic-updates ++@opindex mno-atomic-updates ++This option controls the version of libgcc that the compiler links to an ++executable and selects whether atomic updates to the software-managed ++cache of PPU-side variables are used. If you use atomic updates, changes ++to a PPU variable from SPU code using the @code{__ea} named address space ++qualifier will not interfere with changes to other PPU variables residing ++in the same cache line from PPU code. If you do not use atomic updates, ++such interference may occur; however, writing back cache lines will be ++more efficient. The default behavior is to use atomic updates. ++ + @item -mdual-nops + @itemx -mdual-nops=@var{n} + @opindex mdual-nops +Index: gcc/doc/rtl.texi +=================================================================== +--- a/src/gcc/doc/rtl.texi (.../gcc-4_4-branch) ++++ b/src/gcc/doc/rtl.texi (.../cell-4_4-branch) +@@ -420,6 +420,11 @@ + @findex MEM_ALIGN + @item MEM_ALIGN (@var{x}) + The known alignment in bits of the memory reference. ++ ++@findex MEM_ADDR_SPACE ++@item MEM_ADDR_SPACE (@var{x}) ++The address space of the memory reference. This will commonly be zero ++for the generic address space. + @end table + + @item REG --- gcc-4.4-4.4.7.orig/debian/patches/cell-branch-linaro.diff +++ gcc-4.4-4.4.7/debian/patches/cell-branch-linaro.diff @@ -0,0 +1,9096 @@ +diff -urNp gcc-4.4.4.orig/ChangeLog.cell gcc-4.4.4/ChangeLog.cell +--- a/src/ChangeLog.cell 1970-01-01 ++++ b/src/ChangeLog.cell 2010-06-30 +@@ -0,0 +1,651 @@ ++2010-05-17 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 159486. ++ ++2010-04-07 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 158036. ++ ++2009-12-07 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-05-19 Andrew Pinski ++ ++ * c-typeck.c (build_binary_op): Allow % on integal vectors. ++ * doc/extend.texi (Vector Extension): Document that % is allowed too. ++ ++gcc/cp/ ++ 2009-05-19 Andrew Pinski ++ ++ * typeck.c (build_binary_op): Allow % on integal vectors. ++ ++gcc/testsuite/ ++ 2009-05-19 Andrew Pinski ++ ++ * gcc.dg/vector-4.c: New testcase. ++ * gcc.dg/simd-1b.c: % is now allowed for integer vectors. ++ * g++.dg/ext/vector16.C: New testcase. ++ ++2009-12-07 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-04-22 Andrew Pinski ++ ++ PR C/31499 ++ * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE ++ and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the ++ value is a VECTOR_CST, the element type is the element type of the ++ vector. ++ ++gcc/testsuite/ ++ 2009-04-22 Andrew Pinski ++ ++ PR C/31499 ++ * gcc.dg/vector-init-1.c: New testcase. ++ * gcc.dg/vector-init-2.c: New testcase. ++ ++2009-12-07 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 155038. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-12-03 Ken Werner ++ ++ * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof ++ startup files. ++ * config/spu/spu-protos.h (spu_function_profiler): Add prototype. ++ * config/spu/spu.c (spu_function_profiler): New function. ++ * config/spu/spu.h (FUNCTION_PROFILER): Invoke ++ spu_function_profiler. ++ (NO_PROFILE_COUNTERS): Define. ++ (PROFILE_BEFORE_PROLOGUE): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-12-02 Ulrich Weigand ++ ++ PR middle-end/42224 ++ * tree.h (int_or_pointer_precision): Remove. ++ * tree.c (int_or_pointer_precision): Remove. ++ (integer_pow2p): Use TYPE_PRECISION instead. ++ (tree_log2): Likewise. ++ (tree_floor_log2): Likewise. ++ (signed_or_unsigned_type_for): Likewise. ++ * fold-const.c (fit_double_type): Likewise. ++ * varasm.c (initializer_constant_valid_p): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-17 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * tree-ssa-address.c (move_hint_to_base): Use void pointer to ++ TYPE's address space instead of pointer to TYPE. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-17 Ulrich Weigand ++ ++ * reload.c (find_reloads_address): Fix typo. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-02 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * tree-flow.h (rewrite_use_address): Add BASE_HINT argument. ++ * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint ++ to create_mem_ref. ++ * tree-ssa-address.c (move_hint_to_base): New function. ++ (most_expensive_mult_to_index): Add TYPE argument. Use mode and ++ address space associated with TYPE. ++ (addr_to_parts): Add TYPE and BASE_HINT arguments. Pass TYPE to ++ most_expensive_mult_to_index. Call move_hint_to_base. ++ (create_mem_ref): Add BASE_HINT argument. Pass BASE_HINT and ++ TYPE to addr_to_parts. ++ ++gcc/testsuite/ ++ 2009-11-02 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * gcc.target/spu/ea/pr41857.c: New file. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/testsuite/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * gcc.target/spu/ea/ea.exp: New file. ++ * gcc.target/spu/ea/cache1.c: Likewise. ++ * gcc.target/spu/ea/cast1.c: Likewise. ++ * gcc.target/spu/ea/cast2.c: Likewise. ++ * gcc.target/spu/ea/compile1.c: Likewise. ++ * gcc.target/spu/ea/compile2.c: Likewise. ++ * gcc.target/spu/ea/cppdefine.c: Likewise. ++ * gcc.target/spu/ea/errors1.c: Likewise. ++ * gcc.target/spu/ea/errors2.c: Likewise. ++ * gcc.target/spu/ea/execute1.c: Likewise. ++ * gcc.target/spu/ea/execute2.c: Likewise. ++ * gcc.target/spu/ea/execute3.c: Likewise. ++ * gcc.target/spu/ea/ops1.c: Likewise. ++ * gcc.target/spu/ea/ops2.c: Likewise. ++ * gcc.target/spu/ea/options1.c: Likewise. ++ * gcc.target/spu/ea/test-sizes.c: Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers. ++ * config/spu/spu_cache.h: New file. ++ ++ * config/spu/cachemgr.c: New file. ++ * config/spu/cache.S: New file. ++ ++ * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define. ++ (ADDR_SPACE_EA): Define. ++ (TARGET_ADDR_SPACE_KEYWORDS): Define. ++ * config/spu/spu.c (EAmode): New macro. ++ (TARGET_ADDR_SPACE_POINTER_MODE): Define. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. ++ (TARGET_ADDR_SPACE_SUBSET_P): Likewise. ++ (TARGET_ADDR_SPACE_CONVERT): Likewise. ++ (TARGET_ASM_SELECT_SECTION): Likewise. ++ (TARGET_ASM_UNIQUE_SECTION): Likewise. ++ (TARGET_ASM_UNALIGNED_SI_OP): Likewise. ++ (TARGET_ASM_ALIGNED_DI_OP): Likewise. ++ (ea_symbol_ref): New function. ++ (spu_legitimate_constant_p): Handle __ea qualified addresses. ++ (spu_legitimate_address): Likewise. ++ (spu_addr_space_legitimate_address_p): New function. ++ (spu_addr_space_legitimize_address): Likewise. ++ (cache_fetch): New global. ++ (cache_fetch_dirty): Likewise. ++ (ea_alias_set): Likewise. ++ (ea_load_store): New function. ++ (ea_load_store_inline): Likewise. ++ (expand_ea_mem): Likewise. ++ (spu_expand_mov): Handle __ea qualified memory references. ++ (spu_addr_space_pointer_mode): New function. ++ (spu_addr_space_address_mode): Likewise. ++ (spu_addr_space_subset_p): Likewise. ++ (spu_addr_space_convert): Likewise. ++ (spu_section_type_flags): Handle "._ea" section. ++ (spu_select_section): New function. ++ (spu_unique_section): Likewise. ++ * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__ ++ and __EA64__ predefined macros. ++ * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and ++ -matomic-updates switches. ++ ++ * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define. ++ (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a, ++ libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a, ++ libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a. ++ ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target. ++ ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o, ++ $(T)cache128k.o): Likewise. ++ ($(T)libgcc_%.a): Likewise. ++ ++ * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION. ++ * config/spu/spu.opt (-mea32/-mea64): Add switches. ++ (-maddress-space-conversion): Likewise. ++ (-mcache-size=): Likewise. ++ (-matomic-updates): Likewise. ++ * doc/invoke.texi (-mea32/-mea64): Document. ++ (-maddress-space-conversion): Likewise. ++ (-mcache-size=): Likewise. ++ (-matomic-updates): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document. ++ ++ * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is ++ defined, add the named address space keywords. ++ (c_addr_space_name): New function. ++ (complete_array_type): Preserve named address space. ++ (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode ++ instead of targetm.valid_pointer_mode. ++ ++ * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15, ++ RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE. ++ (ADDR_SPACE_KEYWORD): New macro. ++ (c_addr_space_name): Add prototype. ++ ++ * c-tree.h (struct c_declspecs): Add address_space member. ++ (declspecs_add_addrspace): Add prototype. ++ ++ * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces. ++ ++ * c-parser.c (c_parse_init): Add assertion. ++ (typedef enum c_id_kind): Add C_ID_ADDRSPACE. ++ (c_lex_one_token): Handle address space keywords. ++ (c_token_starts_typename): Likewise. ++ (c_token_starts_declspecs): Likewise. ++ (c_parser_declspecs): Likewise. ++ (c_parser_postfix_expression_after_paren_type): Diagnose compound ++ literal within function qualified with named address space. ++ ++ * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named ++ address space qualifiers. ++ (shadow_tag_warned): Warn about useless address space qualifiers. ++ (quals_from_declspecs): Handle address space qualifiers. ++ (grokdeclarator): Likewise. ++ (build_null_declspecs): Likewise. ++ (declspecs_add_addrspace): New function. ++ ++ * c-typeck.c (addr_space_superset): New function. ++ (qualify_type): Handle named address spaces. ++ (composite_type): Likewise. ++ (common_pointer_type): Likewise. ++ (comp_target_types): Likewise. ++ (build_conditional_expr): Likewise. ++ (build_c_cast): Likewise. ++ (convert_for_assignment): Likewise. ++ (build_binary_op): Likewise. ++ (pointer_diff): Handle named address spaces. Use intermediate ++ integer type of sufficient size if required. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. ++ ++ * target.h (struct target_def): Add pointer_mode, address_mode, ++ and valid_pointer_mode to addr_space substructure. ++ * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. ++ (TARGET_ADDR_SPACE_HOOKS): Add them. ++ * targhooks.c (target_default_pointer_address_modes_p): New function. ++ * target.h (target_default_pointer_address_modes_p): Add prototype. ++ * targhooks.c (default_addr_space_pointer_mode): New function. ++ (default_addr_space_address_mode): Likewise. ++ (default_addr_space_valid_pointer_mode): Likewise. ++ * targhooks.h (default_addr_space_pointer_mode): Add prototype. ++ (default_addr_space_address_mode): Likewise. ++ (default_addr_space_valid_pointer_mode): Likewise. ++ * output.h (default_valid_pointer_mode): Move to ... ++ * targhooks.h (default_valid_pointer_mode): ... here. ++ * varasm.c (default_valid_pointer_mode): Move to ... ++ * targhooks.c (default_valid_pointer_mode): ... here. ++ ++ * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode ++ instead of targetm.valid_pointer_mode. ++ ++ * fold-const.c (fit_double_type): Use int_or_pointer_precision. ++ * tree.c (integer_pow2p): Likewise. ++ (tree_log2): Likewise. ++ (tree_floor_log2): Likewise. ++ (signed_or_unsigned_type_for): Support pointer type of different size. ++ (int_or_pointer_precision): New function. ++ * tree.h (int_or_pointer_precision): Add prototype. ++ * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types. ++ * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of ++ incoming pointer type instead of POINTER_SIZE. ++ ++ * tree.c (build_pointer_type): Use appropriate pointer mode ++ instead of ptr_mode. ++ (build_reference_type): Likewise. ++ * expr.c (store_expr): Likewise. ++ (expand_expr_addr_expr): Likewise. ++ * cfgexpand.c (expand_debug_expr): Likewise. ++ ++ * auto-inc-dec.c: Include "target.h". ++ (try_merge): Use appropriate address mode instead of Pmode. ++ (find_inc): Likewise. ++ * combine.c (find_split_point): Likewise. ++ * cselib.c (cselib_record_sets): Likewise. ++ * dse.c (replace_inc_dec): Likewise. ++ (canon_address): Likewise. ++ (count_uses): Likewise. ++ (add_uses): Likewise. ++ (add_stores): Likewise. ++ * emit-rtl.c: Include "target.h". ++ (adjust_address_1): Use appropriate address mode instead of Pmode. ++ (offset_address): Likewise. ++ * explow.c (break_out_memory_refs): Likewise. ++ (memory_address_addr_space): Likewise. ++ (promote_mode): Likewise. ++ * expr.c (move_by_pieces): Likewise. ++ (emit_block_move_via_loop): Likewise. ++ (store_by_pieces): Likewise. ++ (store_by_pieces_1): Likewise. ++ (expand_assignment): Likewise. ++ (store_constructor): Likewise. ++ (expand_expr_addr_expr): Likewise. ++ (expand_expr_real_1): Likewise. ++ * cfgexpand.c (expand_debug_expr): Likewise. ++ * ifcvt.c (noce_try_cmove_arith): Likewise. ++ * regrename.c (kill_autoinc_value): Likewise. ++ * regmove.c (try_auto_increment): Likewise. ++ * reload.c (find_reloads): Likewise. ++ (find_reloads_address): Likewise. ++ (find_reloads_address_1): Likewise. ++ * sched-deps.c: Include "target.h". ++ (sched_analyze_1): Use appropriate address mode instead of Pmode. ++ (sched_analyze_2): Likewise. ++ * sel-sched-dump.c: Include "target.h". ++ (debug_mem_addr_value): Use appropriate address mode instead of Pmode. ++ * stor-layout.c (layout_type): Likewise. ++ * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. ++ (multiplier_allowed_in_address_p): Likewise. ++ (get_address_cost): Likewise. ++ * varasm.c (make_decl_rtl): Likewise. ++ ++ * expr.c (expand_assignment): Always convert offsets to appropriate ++ address mode. ++ (store_expr): Likewise. ++ (store_constructor): Likewise. ++ (expand_expr_real_1): Likewise. ++ ++ * reload.h (form_sum): Add MODE argument. ++ * reload.c (form_sum): Add MODE argument, use it instead of Pmode. ++ Update recursive calls. ++ (subst_indexed_address): Update calls to form_sum. ++ ++ * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument. ++ * tree-ssa-address.c: Include "target.h". ++ (templates): Replace by ... ++ (mem_addr_template_list): ... this new vector. ++ (TEMPL_IDX): Handle address space numbers. ++ (gen_addr_rtx): Add address mode argument, use it instead of Pmode. ++ (addr_for_mem_ref): Add ADDRSPACE argument. Use per-address-space ++ instead of global cache. Update call to gen_addr_rtx. ++ (valid_mem_ref_p): Update call to addr_for_mem_ref. ++ * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref. ++ ++ * rtl.h (convert_memory_address_addr_space): Add prototype. ++ (convert_memory_address): Define as macro. ++ * explow.c (convert_memory_address): Rename to ... ++ (convert_memory_address_addr_space): ... this. Add ADDRSPACE argument. ++ Use appropriate pointer and address modes instead of ptr_mode / Pmode. ++ Update recursive calls. ++ (memory_address_addr_space): Call convert_memory_address_addr_space. ++ * expmed.c (make_tree): Likewise. ++ * expr.c (expand_assignment): Likewise. ++ (expand_expr_addr_expr_1): Likewise. Also, add ADDRSPACE argument. ++ (expand_expr_addr_expr): Likewise. Also, update call. ++ ++ * alias.c (find_base_value): Guard pointer size optimizations. ++ (find_base_term): Likewise. ++ * rtlanal.c (nonzero_bits1): Likewise. ++ (num_sign_bit_copies1): Likewise. ++ * simplify-rtx.c (simplify_unary_operation_1): Likewise. ++ ++ * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency. ++ (emit-rtl.o): Likewise. ++ (auto-inc-dec.o): Likewise. ++ (sched-deps.o): Likewise. ++ ++ 2009-08-24 Olivier Hainque ++ ++ * convert.c (convert_to_integer): Don't assume an input pointer is ++ POINTER_SIZE wide. Fetch from the type instead. ++ ++ 2009-07-27 Olivier Hainque ++ Douglas B Rupp ++ ++ * convert.c (convert_to_pointer): Don't assume the target ++ pointer type is POINTER_SIZE long. Fetch its precision instead. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/extend.texi (Named Address Spaces): New section. ++ * coretypes.h (addr_space_t): New type. ++ (ADDR_SPACE_GENERIC): New define. ++ (ADDR_SPACE_GENERIC_P): New macro. ++ ++ * doc/tm.texi (Named Address Spaces): New section. ++ (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document. ++ (TARGET_ADDR_SPACE_SUBSET_P): Document. ++ (TARGET_ADDR_SPACE_CONVERT): Document. ++ * target.h (struct gcc_target): Add addr_space substructure. ++ * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. ++ (TARGET_ADDR_SPACE_SUBSET_P): Likewise. ++ (TARGET_ADDR_SPACE_CONVERT): Likewise. ++ (TARGET_ADDR_SPACE_HOOKS): Likewise. ++ (TARGET_INITIALIZER): Initialize addr_space hooks. ++ * targhooks.c (default_addr_space_legitimate_address_p): New function. ++ (default_addr_space_legitimize_address): Likewise. ++ (default_addr_space_subset_p): Likewise. ++ (default_addr_space_convert): Likewise. ++ * targhooks.h (default_addr_space_legitimate_address_p): Add prototype. ++ (default_addr_space_legitimize_address): Likewise. ++ (default_addr_space_subset_p): Likewise. ++ (default_addr_space_convert): Likewise. ++ ++ * doc/rtl.texi (MEM_ADDR_SPACE): Document. ++ * rtl.h (mem_attrs): Add ADDRSPACE memory attribute. ++ (MEM_ADDR_SPACE): New macro. ++ * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set ++ address space memory attribute. ++ (mem_attrs_htab_hash): Handle address space memory attribute. ++ (mem_attrs_htab_eq): Likewise. ++ (set_mem_attributes_minus_bitpos): Likewise. ++ (set_mem_attrs_from_reg): Likewise. ++ (set_mem_alias_set): Likewise. ++ (set_mem_align): Likewise. ++ (set_mem_expr): Likewise. ++ (set_mem_offset): Likewise. ++ (set_mem_size): Likewise. ++ (adjust_address_1): Likewise. ++ (offset_address): Likewise. ++ (widen_memoy_address): Likewise. ++ (get_spill_slot_decl): Likewise. ++ (set_mem_attrs_for_spill): Likewise. ++ (set_mem_addr_space): New function. ++ * emit-rtl.h (set_mem_addr_space): Add prototype. ++ * print-rtl.c (print_rtx): Print address space memory attribute. ++ * expr.c (expand_expr_real_1): Set address space memory attribute ++ of generated MEM RTXes as appropriate. ++ * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. ++ ++ * tree.h (struct tree_base): Add address_space bitfield. Reduce ++ size of "spare" bitfield. ++ (TYPE_ADDR_SPACE): New macro. ++ (ENCODE_QUAL_ADDR_SPACE): Likewise. ++ (DECODE_QUAL_ADDR_SPACE): Likewise. ++ (CLEAR_QUAL_ADDR_SPACE): Likewise. ++ (KEEP_QUAL_ADDR_SPACE): Likewise. ++ (TYPE_QUALS): Encode type address space. ++ (TYPE_QUALS_NO_ADDR_SPACE): New macro. ++ * tree.c (set_type_quals): Set type address space. ++ (build_array_type): Inherit array address space from element type. ++ * print-tree.c (print_node_brief): Print type address space. ++ (print_node): Likewise. ++ * tree-pretty-print.c (dump_generic_node): Likewise. ++ ++ * explow.c (memory_address): Rename to ... ++ (memory_address_addr_space): ... this. Add ADDRSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * recog.c (memory_address_p): Rename to ... ++ (memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ (offsettable_address_p): Rename to ... ++ (offsettable_address_addr_space_p): ... this. Add ADDRSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * reload.c (strict_memory_address_p): Rename to ... ++ (strict_memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ (maybe_memory_address_p): Rename to ... ++ (maybe_memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * expr.h (memory_address_addr_space): Add prototype. ++ (memory_address): Define as macro. ++ * recog.h (memory_address_addr_space_p): Add prototype. ++ (memory_address_p): Define as macro. ++ (offsettable_address_addr_space_p): Add prototype. ++ (offsettable_address_p): Define as macro. ++ (strict_memory_address_addr_space_p): Add prototype. ++ (strict_memory_address_p): Define as macro. ++ ++ * combine.c (find_split_point): Use address-space aware variants ++ of memory address routines. ++ * emit-rtl.c (operand_subword): Likewise. ++ (change_address_1): Likewise. ++ (adjust_address_1): Likewise. ++ (offset_address): Likewise. ++ * expr.c (emit_move_insn): Likewise. ++ (expand_expr_real_1): Likewise. ++ * recog.c (verify_changes): Likewise. ++ (general_operand): Likewise. ++ (offsettable_memref_p): Likewise. ++ (offsettable_nonstrict_memref_p): Likewise. ++ (constrain_operands): Likewise. ++ * reload.c (get_secondary_mem): Likewise. ++ (find_reloads_toplev): Likewise. ++ (find_reloads_address): Likewise. ++ (find_reloads_subreg_address): Likewise. ++ * reload1.c (reload): Likewise. ++ * rtlhooks.c (gen_lowpart_if_possible): Likewise. ++ * rtl.h (address_cost): Add ADDRSPACE argument. ++ * rtlanal.c (address_cost): Add ADDRSPACE argument. Use address-space ++ aware variant of memory address routines. ++ * tree-ssa-loop-ivopts.c (computation_cost): Update address_cost call. ++ * fwprop.c (should_replace_address): Add ADDRSPACE argument. ++ Use address-space aware variant of memory address routines. ++ (propagate_rtx_1): Update call to should_replace_address. ++ * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE ++ argument. ++ * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add ++ ADDRSPACE argument. Use per-address-space instead of global cache. ++ Use address-space aware variant of memory address routines. ++ (get_address_cost): Likewise. ++ (get_computation_cost_at): Update calls. ++ * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument. ++ Use address-space aware variant of memory address routines. ++ (create_mem_ref_raw): Update call to valid_mem_ref_p. ++ (most_expensive_mult_to_index): Update call to ++ multiplier_allowed_in_address_p. ++ ++ * dwarf2out.c (modified_type_die): Output DW_AT_address_class ++ attribute to indicate named address spaces. ++ ++ * varasm.c (get_variable_section): DECLs in named address spaces ++ cannot be "common". ++ ++ * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS ++ for addresses in a non-generic address space. ++ ++ * expr.c (emit_block_move_hints): Do not use libcalls for ++ memory in non-generic address spaces. ++ (clear_storage_hints): Likewise. ++ (expand_assignment): Likewise. ++ ++ * fold-const.c (operand_equal_p): Expressions refering to different ++ address spaces are not equivalent. ++ ++ * rtl.c (rtx_equal_p_cb): MEMs refering to different address ++ spaces are not equivalent. ++ (rtx_equal_p): Likewise. ++ * cse.c (exp_equiv_p): Likewise. ++ * jump.c (rtx_renumbered_equal_p): Likewise. ++ * reload.c (operands_match_p): Likewise. ++ ++ * alias.c (nonoverlapping_memrefs_p): MEMs refering to different ++ address spaces may alias. ++ (true_dependence): Likewise. ++ (canon_true_dependence): Likewise. ++ (write_dependence_p): Likewise. ++ ++ * dse.c (canon_address): Handle named address spaces. ++ * ifcvt.c (noce_try_cmove_arith): Likewise. ++ ++ * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code. ++ * expr.c (expand_expr_real_1): Expand ADDR_SPACE_CONVERT_EXPR. ++ * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR ++ to handle conversions between different address spaces. ++ * fold-const.c (fold_convert_loc): Likewise. ++ (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR. ++ * tree-pretty-print.c (dump_generic_node): Likewise. ++ * gimple-pretty-print.c (dump_unary_rhs): Likewise. ++ * tree-cfg.c (verify_gimple_assign_unary): Likewise. ++ * tree-inline.c (estimate_operator_cost): Likewise. ++ * tree-ssa.c (useless_type_conversion_p): Conversions between pointers ++ to different address spaces are not useless. ++ (useless_type_conversion_p_1): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-08-14 Ulrich Weigand ++ ++ * c-lex.c (c_lex_with_flags): Increase size of local variable ++ to avoid memory clobber. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++libgfortran/ ++ 2009-04-17 Ulrich Weigand ++ ++ * configure.ac: Test for -ffunction-sections -fdata-sections and ++ set SECTION_FLAGS accordingly. ++ * configure: Regenerate. ++ ++ * Makefile.am: Add SECTION_FLAGS to AM_CFLAGS. ++ * Makefile.in: Regenerate. ++ ++2009-12-04 Ulrich Weigand ++ ++ * Created "cell-4_4-branch". +diff -urNp gcc-4.4.4.orig/gcc/alias.c gcc-4.4.4/gcc/alias.c +--- a/src/gcc/alias.c 2010-06-30 ++++ b/src/gcc/alias.c 2010-06-30 +@@ -1000,6 +1000,11 @@ find_base_value (rtx src) + return 0; + + case TRUNCATE: ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ break; + if (GET_MODE_SIZE (GET_MODE (src)) < GET_MODE_SIZE (Pmode)) + break; + /* Fall through. */ +@@ -1014,6 +1019,12 @@ find_base_value (rtx src) + + case ZERO_EXTEND: + case SIGN_EXTEND: /* used for NT/Alpha pointers */ ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ break; ++ + { + rtx temp = find_base_value (XEXP (src, 0)); + +@@ -1406,6 +1417,11 @@ find_base_term (rtx x) + return REG_BASE_VALUE (x); + + case TRUNCATE: ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ return 0; + if (GET_MODE_SIZE (GET_MODE (x)) < GET_MODE_SIZE (Pmode)) + return 0; + /* Fall through. */ +@@ -1420,6 +1436,12 @@ find_base_term (rtx x) + + case ZERO_EXTEND: + case SIGN_EXTEND: /* Used for Alpha/NT pointers */ ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ return 0; ++ + { + rtx temp = find_base_term (XEXP (x, 0)); + +@@ -2120,6 +2142,13 @@ nonoverlapping_memrefs_p (const_rtx x, c + && ! rtx_equal_p (rtlx, rtly)) + return 1; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_P (rtlx) && MEM_P (rtly) ++ && MEM_ADDR_SPACE (rtlx) != MEM_ADDR_SPACE (rtly)) ++ return 0; ++ + /* Get the base and offsets of both decls. If either is a register, we + know both are and are the same, so use that as the base. The only + we can avoid overlap is if we can deduce that they are nonoverlapping +@@ -2211,6 +2240,12 @@ true_dependence (const_rtx mem, enum mac + if (nonoverlapping_memrefs_p (mem, x)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + if (mem_mode == VOIDmode) + mem_mode = GET_MODE (mem); + +@@ -2296,6 +2331,12 @@ canon_true_dependence (const_rtx mem, en + if (nonoverlapping_memrefs_p (x, mem)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + if (! x_addr) + { + x_addr = XEXP (x, 0); +@@ -2366,6 +2407,12 @@ write_dependence_p (const_rtx mem, const + if (nonoverlapping_memrefs_p (x, mem)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + x_addr = XEXP (x, 0); + mem_addr = XEXP (mem, 0); + if (!((GET_CODE (x_addr) == VALUE +diff -urNp gcc-4.4.4.orig/gcc/auto-inc-dec.c gcc-4.4.4/gcc/auto-inc-dec.c +--- a/src/gcc/auto-inc-dec.c 2009-02-20 ++++ b/src/gcc/auto-inc-dec.c 2010-06-30 +@@ -40,6 +40,7 @@ along with GCC; see the file COPYING3. + #include "tree-pass.h" + #include "df.h" + #include "dbgcnt.h" ++#include "target.h" + + /* This pass was originally removed from flow.c. However there is + almost nothing that remains of that code. +@@ -651,6 +652,7 @@ try_merge (void) + /* The width of the mem being accessed. */ + int size = GET_MODE_SIZE (GET_MODE (mem)); + rtx last_insn = NULL; ++ enum machine_mode reg_mode = GET_MODE (inc_reg); + + switch (inc_insn.form) + { +@@ -705,33 +707,33 @@ try_merge (void) + case SIMPLE_PRE_INC: /* ++size */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_PRE_INC\n"); +- return attempt_change (gen_rtx_PRE_INC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_PRE_INC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_POST_INC: /* size++ */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_POST_INC\n"); +- return attempt_change (gen_rtx_POST_INC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_POST_INC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_PRE_DEC: /* --size */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_PRE_DEC\n"); +- return attempt_change (gen_rtx_PRE_DEC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_PRE_DEC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_POST_DEC: /* size-- */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_POST_DEC\n"); +- return attempt_change (gen_rtx_POST_DEC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_POST_DEC (reg_mode, inc_reg), inc_reg); + break; + + case DISP_PRE: /* ++con */ + if (dump_file) + fprintf (dump_file, "trying DISP_PRE\n"); +- return attempt_change (gen_rtx_PRE_MODIFY (Pmode, ++ return attempt_change (gen_rtx_PRE_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -740,9 +742,9 @@ try_merge (void) + case DISP_POST: /* con++ */ + if (dump_file) + fprintf (dump_file, "trying POST_DISP\n"); +- return attempt_change (gen_rtx_POST_MODIFY (Pmode, ++ return attempt_change (gen_rtx_POST_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -751,9 +753,9 @@ try_merge (void) + case REG_PRE: /* ++reg */ + if (dump_file) + fprintf (dump_file, "trying PRE_REG\n"); +- return attempt_change (gen_rtx_PRE_MODIFY (Pmode, ++ return attempt_change (gen_rtx_PRE_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -762,9 +764,9 @@ try_merge (void) + case REG_POST: /* reg++ */ + if (dump_file) + fprintf (dump_file, "trying POST_REG\n"); +- return attempt_change (gen_rtx_POST_MODIFY (Pmode, ++ return attempt_change (gen_rtx_POST_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -1127,7 +1129,9 @@ find_inc (bool first_try) + we are going to increment the result of the add insn. + For this trick to be correct, the result reg of + the inc must be a valid addressing reg. */ +- if (GET_MODE (inc_insn.reg_res) != Pmode) ++ addr_space_t as = MEM_ADDR_SPACE (*mem_insn.mem_loc); ++ if (GET_MODE (inc_insn.reg_res) ++ != targetm.addr_space.address_mode (as)) + { + if (dump_file) + fprintf (dump_file, "base reg mode failure.\n"); +@@ -1176,7 +1180,9 @@ find_inc (bool first_try) + { + /* For this trick to be correct, the result reg of the inc + must be a valid addressing reg. */ +- if (GET_MODE (inc_insn.reg_res) != Pmode) ++ addr_space_t as = MEM_ADDR_SPACE (*mem_insn.mem_loc); ++ if (GET_MODE (inc_insn.reg_res) ++ != targetm.addr_space.address_mode (as)) + { + if (dump_file) + fprintf (dump_file, "base reg mode failure.\n"); +diff -urNp gcc-4.4.4.orig/gcc/c-common.c gcc-4.4.4/gcc/c-common.c +--- a/src/gcc/c-common.c 2010-06-30 ++++ b/src/gcc/c-common.c 2010-06-30 +@@ -754,6 +754,11 @@ const struct c_common_resword c_common_r + { "inout", RID_INOUT, D_OBJC }, + { "oneway", RID_ONEWAY, D_OBJC }, + { "out", RID_OUT, D_OBJC }, ++ ++#ifdef TARGET_ADDR_SPACE_KEYWORDS ++ /* Any address space keywords recognized by the target. */ ++ TARGET_ADDR_SPACE_KEYWORDS, ++#endif + }; + + const unsigned int num_c_common_reswords = +@@ -882,6 +887,19 @@ const struct attribute_spec c_common_for + { NULL, 0, 0, false, false, false, NULL } + }; + ++/* Return identifier for address space AS. */ ++const char * ++c_addr_space_name (addr_space_t as) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < num_c_common_reswords; i++) ++ if (c_common_reswords[i].rid == RID_FIRST_ADDR_SPACE + as) ++ return c_common_reswords[i].word; ++ ++ gcc_unreachable (); ++} ++ + /* Push current bindings for the function name VAR_DECLS. */ + + void +@@ -5781,9 +5799,10 @@ handle_mode_attribute (tree *node, tree + + if (POINTER_TYPE_P (type)) + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type)); + tree (*fn)(tree, enum machine_mode, bool); + +- if (!targetm.valid_pointer_mode (mode)) ++ if (!targetm.addr_space.valid_pointer_mode (mode, as)) + { + error ("invalid pointer mode %qs", p); + return NULL_TREE; +@@ -7874,7 +7893,7 @@ complete_array_type (tree *ptype, tree i + if (quals == 0) + unqual_elt = elt; + else +- unqual_elt = c_build_qualified_type (elt, TYPE_UNQUALIFIED); ++ unqual_elt = c_build_qualified_type (elt, KEEP_QUAL_ADDR_SPACE (quals)); + + /* Using build_distinct_type_copy and modifying things afterward instead + of using build_array_type to create a new type preserves all of the +diff -urNp gcc-4.4.4.orig/gcc/c-common.h gcc-4.4.4/gcc/c-common.h +--- a/src/gcc/c-common.h 2010-06-30 ++++ b/src/gcc/c-common.h 2010-06-30 +@@ -119,6 +119,30 @@ enum rid + RID_AT_INTERFACE, + RID_AT_IMPLEMENTATION, + ++ /* Named address support, mapping the keyword to a particular named address ++ number. Named address space 0 is reserved for the generic address. If ++ there are more than 254 named addresses, the addr_space_t type will need ++ to be grown from an unsigned char to unsigned short. */ ++ RID_ADDR_SPACE_0, /* generic address */ ++ RID_ADDR_SPACE_1, ++ RID_ADDR_SPACE_2, ++ RID_ADDR_SPACE_3, ++ RID_ADDR_SPACE_4, ++ RID_ADDR_SPACE_5, ++ RID_ADDR_SPACE_6, ++ RID_ADDR_SPACE_7, ++ RID_ADDR_SPACE_8, ++ RID_ADDR_SPACE_9, ++ RID_ADDR_SPACE_10, ++ RID_ADDR_SPACE_11, ++ RID_ADDR_SPACE_12, ++ RID_ADDR_SPACE_13, ++ RID_ADDR_SPACE_14, ++ RID_ADDR_SPACE_15, ++ ++ RID_FIRST_ADDR_SPACE = RID_ADDR_SPACE_0, ++ RID_LAST_ADDR_SPACE = RID_ADDR_SPACE_15, ++ + RID_MAX, + + RID_FIRST_MODIFIER = RID_STATIC, +@@ -228,6 +252,10 @@ struct c_common_resword + #define D_CXX_OBJC 0x100 /* In Objective C, and C++, but not C. */ + #define D_CXXWARN 0x200 /* In C warn with -Wcxx-compat. */ + ++/* Macro for backends to define named address keywords. */ ++#define ADDR_SPACE_KEYWORD(STRING, VALUE) \ ++ { STRING, RID_FIRST_ADDR_SPACE + (VALUE), D_CONLY | D_EXT } ++ + /* The reserved keyword table. */ + extern const struct c_common_resword c_common_reswords[]; + +@@ -690,6 +718,7 @@ extern const struct attribute_spec c_com + + extern tree (*make_fname_decl) (tree, int); + ++extern const char *c_addr_space_name (addr_space_t as); + extern tree identifier_global_value (tree); + extern void record_builtin_type (enum rid, const char *, tree); + extern tree build_void_list_node (void); +diff -urNp gcc-4.4.4.orig/gcc/c-decl.c gcc-4.4.4/gcc/c-decl.c +--- a/src/gcc/c-decl.c 2010-06-30 ++++ b/src/gcc/c-decl.c 2010-06-30 +@@ -1249,8 +1249,35 @@ diagnose_mismatched_decls (tree newdecl, + } + else + { +- if (TYPE_QUALS (newtype) != TYPE_QUALS (oldtype)) +- error ("conflicting type qualifiers for %q+D", newdecl); ++ int new_quals = TYPE_QUALS (newtype); ++ int old_quals = TYPE_QUALS (oldtype); ++ ++ if (new_quals != old_quals) ++ { ++ addr_space_t new_addr = DECODE_QUAL_ADDR_SPACE (new_quals); ++ addr_space_t old_addr = DECODE_QUAL_ADDR_SPACE (old_quals); ++ if (new_addr != old_addr) ++ { ++ if (ADDR_SPACE_GENERIC_P (new_addr)) ++ error ("conflicting named address spaces (generic vs %s) " ++ "for %q+D", ++ c_addr_space_name (old_addr), newdecl); ++ else if (ADDR_SPACE_GENERIC_P (old_addr)) ++ error ("conflicting named address spaces (%s vs generic) " ++ "for %q+D", ++ c_addr_space_name (new_addr), newdecl); ++ else ++ error ("conflicting named address spaces (%s vs %s) " ++ "for %q+D", ++ c_addr_space_name (new_addr), ++ c_addr_space_name (old_addr), ++ newdecl); ++ } ++ ++ if (CLEAR_QUAL_ADDR_SPACE (new_quals) ++ != CLEAR_QUAL_ADDR_SPACE (old_quals)) ++ error ("conflicting type qualifiers for %q+D", newdecl); ++ } + else + error ("conflicting types for %q+D", newdecl); + diagnose_arglist_conflict (newdecl, olddecl, newtype, oldtype); +@@ -2922,7 +2949,8 @@ shadow_tag_warned (const struct c_declsp + else if (!declspecs->tag_defined_p + && (declspecs->const_p + || declspecs->volatile_p +- || declspecs->restrict_p)) ++ || declspecs->restrict_p ++ || declspecs->address_space)) + { + if (warned != 1) + pedwarn (input_location, 0, +@@ -2993,7 +3021,8 @@ shadow_tag_warned (const struct c_declsp + + if (!warned && !in_system_header && (declspecs->const_p + || declspecs->volatile_p +- || declspecs->restrict_p)) ++ || declspecs->restrict_p ++ || declspecs->address_space)) + { + warning (0, "useless type qualifier in empty declaration"); + warned = 2; +@@ -3016,7 +3045,8 @@ quals_from_declspecs (const struct c_dec + { + int quals = ((specs->const_p ? TYPE_QUAL_CONST : 0) + | (specs->volatile_p ? TYPE_QUAL_VOLATILE : 0) +- | (specs->restrict_p ? TYPE_QUAL_RESTRICT : 0)); ++ | (specs->restrict_p ? TYPE_QUAL_RESTRICT : 0) ++ | (ENCODE_QUAL_ADDR_SPACE (specs->address_space))); + gcc_assert (!specs->type + && !specs->decl_attr + && specs->typespec_word == cts_none +@@ -4002,6 +4032,7 @@ grokdeclarator (const struct c_declarato + bool bitfield = width != NULL; + tree element_type; + struct c_arg_info *arg_info = 0; ++ addr_space_t as1, as2, address_space; + const char *errmsg; + + if (decl_context == FUNCDEF) +@@ -4103,6 +4134,10 @@ grokdeclarator (const struct c_declarato + constp = declspecs->const_p + TYPE_READONLY (element_type); + restrictp = declspecs->restrict_p + TYPE_RESTRICT (element_type); + volatilep = declspecs->volatile_p + TYPE_VOLATILE (element_type); ++ as1 = declspecs->address_space; ++ as2 = TYPE_ADDR_SPACE (element_type); ++ address_space = ADDR_SPACE_GENERIC_P (as1)? as2 : as1; ++ + if (pedantic && !flag_isoc99) + { + if (constp > 1) +@@ -4112,11 +4147,17 @@ grokdeclarator (const struct c_declarato + if (volatilep > 1) + pedwarn (input_location, OPT_pedantic, "duplicate %"); + } ++ ++ if (!ADDR_SPACE_GENERIC_P (as1) && !ADDR_SPACE_GENERIC_P (as2) && as1 != as2) ++ error ("conflicting named address spaces (%s vs %s)", ++ c_addr_space_name (as1), c_addr_space_name (as2)); ++ + if (!flag_gen_aux_info && (TYPE_QUALS (element_type))) + type = TYPE_MAIN_VARIANT (type); + type_quals = ((constp ? TYPE_QUAL_CONST : 0) + | (restrictp ? TYPE_QUAL_RESTRICT : 0) +- | (volatilep ? TYPE_QUAL_VOLATILE : 0)); ++ | (volatilep ? TYPE_QUAL_VOLATILE : 0) ++ | ENCODE_QUAL_ADDR_SPACE (address_space)); + + /* Warn about storage classes that are invalid for certain + kinds of declarations (parameters, typenames, etc.). */ +@@ -4460,7 +4501,14 @@ grokdeclarator (const struct c_declarato + it, but here we want to make sure we don't ever + modify the shared type, so we gcc_assert (itype) + below. */ +- type = build_array_type (type, itype); ++ { ++ addr_space_t as = DECODE_QUAL_ADDR_SPACE (type_quals); ++ if (!ADDR_SPACE_GENERIC_P (as) && as != TYPE_ADDR_SPACE (type)) ++ type = build_qualified_type (type, ++ ENCODE_QUAL_ADDR_SPACE (as)); ++ ++ type = build_array_type (type, itype); ++ } + + if (type != error_mark_node) + { +@@ -4656,6 +4704,59 @@ grokdeclarator (const struct c_declarato + /* Now TYPE has the actual type, apart from any qualifiers in + TYPE_QUALS. */ + ++ /* Warn about address space used for things other than static memory or ++ pointers. */ ++ address_space = DECODE_QUAL_ADDR_SPACE (type_quals); ++ if (!ADDR_SPACE_GENERIC_P (address_space)) ++ { ++ if (decl_context == NORMAL) ++ { ++ switch (storage_class) ++ { ++ case csc_auto: ++ error ("%qs combined with % qualifier for %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ case csc_register: ++ error ("%qs combined with % qualifier for %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ case csc_none: ++ if (current_function_scope) ++ { ++ error ("%qs specified for auto variable %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ } ++ break; ++ case csc_static: ++ case csc_extern: ++ case csc_typedef: ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ else if (decl_context == PARM && TREE_CODE (type) != ARRAY_TYPE) ++ { ++ if (orig_name) ++ error ("%qs specified for parameter %qs", ++ c_addr_space_name (address_space), name); ++ else ++ error ("%qs specified for unnamed parameter", ++ c_addr_space_name (address_space)); ++ } ++ else if (decl_context == FIELD) ++ { ++ if (orig_name) ++ error ("%qs specified for structure field %qs", ++ c_addr_space_name (address_space), name); ++ else ++ error ("%qs specified for structure field", ++ c_addr_space_name (address_space)); ++ } ++ } ++ + /* Check the type and width of a bit-field. */ + if (bitfield) + check_bitfield_type_and_width (&type, width, orig_name); +@@ -7188,9 +7289,29 @@ build_null_declspecs (void) + ret->volatile_p = false; + ret->restrict_p = false; + ret->saturating_p = false; ++ ret->address_space = ADDR_SPACE_GENERIC; + return ret; + } + ++/* Add the address space ADDRSPACE to the declaration specifiers ++ SPECS, returning SPECS. */ ++ ++struct c_declspecs * ++declspecs_add_addrspace (struct c_declspecs *specs, addr_space_t as) ++{ ++ specs->non_sc_seen_p = true; ++ specs->declspecs_seen_p = true; ++ ++ if (!ADDR_SPACE_GENERIC_P (specs->address_space) ++ && specs->address_space != as) ++ error ("incompatible address space qualifiers %qs and %qs", ++ c_addr_space_name (as), ++ c_addr_space_name (specs->address_space)); ++ else ++ specs->address_space = as; ++ return specs; ++} ++ + /* Add the type qualifier QUAL to the declaration specifiers SPECS, + returning SPECS. */ + +diff -urNp gcc-4.4.4.orig/gcc/c-lex.c gcc-4.4.4/gcc/c-lex.c +--- a/src/gcc/c-lex.c 2008-08-21 ++++ b/src/gcc/c-lex.c 2010-06-30 +@@ -390,7 +390,7 @@ c_lex_with_flags (tree *value, location_ + case CPP_HASH: + case CPP_PASTE: + { +- unsigned char name[4]; ++ unsigned char name[8]; + + *cpp_spell_token (parse_in, tok, name, true) = 0; + +diff -urNp gcc-4.4.4.orig/gcc/combine.c gcc-4.4.4/gcc/combine.c +--- a/src/gcc/combine.c 2010-03-22 ++++ b/src/gcc/combine.c 2010-06-30 +@@ -3890,9 +3890,12 @@ find_split_point (rtx *loc, rtx insn) + if (GET_CODE (XEXP (x, 0)) == CONST + || GET_CODE (XEXP (x, 0)) == SYMBOL_REF) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ + SUBST (XEXP (x, 0), +- gen_rtx_LO_SUM (Pmode, +- gen_rtx_HIGH (Pmode, XEXP (x, 0)), ++ gen_rtx_LO_SUM (address_mode, ++ gen_rtx_HIGH (address_mode, XEXP (x, 0)), + XEXP (x, 0))); + return &XEXP (XEXP (x, 0), 0); + } +@@ -3905,7 +3908,8 @@ find_split_point (rtx *loc, rtx insn) + it will not remain in the result. */ + if (GET_CODE (XEXP (x, 0)) == PLUS + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT +- && ! memory_address_p (GET_MODE (x), XEXP (x, 0))) ++ && ! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x))) + { + rtx reg = regno_reg_rtx[FIRST_PSEUDO_REGISTER]; + rtx seq = combine_split_insns (gen_rtx_SET (VOIDmode, reg, +@@ -3928,8 +3932,9 @@ find_split_point (rtx *loc, rtx insn) + && NONJUMP_INSN_P (NEXT_INSN (seq)) + && GET_CODE (PATTERN (NEXT_INSN (seq))) == SET + && SET_DEST (PATTERN (NEXT_INSN (seq))) == reg +- && memory_address_p (GET_MODE (x), +- SET_SRC (PATTERN (NEXT_INSN (seq))))) ++ && memory_address_addr_space_p ++ (GET_MODE (x), SET_SRC (PATTERN (NEXT_INSN (seq))), ++ MEM_ADDR_SPACE (x))) + { + rtx src1 = SET_SRC (PATTERN (seq)); + rtx src2 = SET_SRC (PATTERN (NEXT_INSN (seq))); +@@ -3968,7 +3973,8 @@ find_split_point (rtx *loc, rtx insn) + /* If we have a PLUS whose first operand is complex, try computing it + separately by making a split there. */ + if (GET_CODE (XEXP (x, 0)) == PLUS +- && ! memory_address_p (GET_MODE (x), XEXP (x, 0)) ++ && ! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x)) + && ! OBJECT_P (XEXP (XEXP (x, 0), 0)) + && ! (GET_CODE (XEXP (XEXP (x, 0), 0)) == SUBREG + && OBJECT_P (SUBREG_REG (XEXP (XEXP (x, 0), 0))))) +diff -urNp gcc-4.4.4.orig/gcc/config/spu/cachemgr.c gcc-4.4.4/gcc/config/spu/cachemgr.c +--- a/src/gcc/config/spu/cachemgr.c 1970-01-01 ++++ b/src/gcc/config/spu/cachemgr.c 2010-06-30 +@@ -0,0 +1,438 @@ ++/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++#include ++#include ++#include ++#include ++ ++extern unsigned long long __ea_local_store; ++extern char __cache_tag_array_size; ++ ++#define LINE_SIZE 128 ++#define TAG_MASK (LINE_SIZE - 1) ++ ++#define WAYS 4 ++#define SET_MASK ((int) &__cache_tag_array_size - LINE_SIZE) ++ ++#define CACHE_LINES ((int) &__cache_tag_array_size / \ ++ sizeof (struct __cache_tag_array) * WAYS) ++ ++struct __cache_tag_array ++{ ++ unsigned int tag_lo[WAYS]; ++ unsigned int tag_hi[WAYS]; ++ void *base[WAYS]; ++ int reserved[WAYS]; ++ vector unsigned short dirty_bits[WAYS]; ++}; ++ ++extern struct __cache_tag_array __cache_tag_array[]; ++extern char __cache[]; ++ ++/* In order to make the code seem a little cleaner, and to avoid having ++ 64/32 bit ifdefs all over the place, we use macros. */ ++ ++#ifdef __EA64__ ++typedef unsigned long long addr; ++ ++#define CHECK_TAG(_entry, _way, _tag) \ ++ ((_entry)->tag_lo[(_way)] == ((_tag) & 0xFFFFFFFF) \ ++ && (_entry)->tag_hi[(_way)] == ((_tag) >> 32)) ++ ++#define GET_TAG(_entry, _way) \ ++ ((unsigned long long)(_entry)->tag_hi[(_way)] << 32 \ ++ | (unsigned long long)(_entry)->tag_lo[(_way)]) ++ ++#define SET_TAG(_entry, _way, _tag) \ ++ (_entry)->tag_lo[(_way)] = (_tag) & 0xFFFFFFFF; \ ++ (_entry)->tag_hi[(_way)] = (_tag) >> 32 ++ ++#else /*__EA32__*/ ++typedef unsigned long addr; ++ ++#define CHECK_TAG(_entry, _way, _tag) \ ++ ((_entry)->tag_lo[(_way)] == (_tag)) ++ ++#define GET_TAG(_entry, _way) \ ++ ((_entry)->tag_lo[(_way)]) ++ ++#define SET_TAG(_entry, _way, _tag) \ ++ (_entry)->tag_lo[(_way)] = (_tag) ++ ++#endif ++ ++/* In GET_ENTRY, we cast away the high 32 bits, ++ as the tag is only in the low 32. */ ++ ++#define GET_ENTRY(_addr) \ ++ ((struct __cache_tag_array *) \ ++ si_to_uint (si_a (si_and (si_from_uint ((unsigned int) (addr) (_addr)), \ ++ si_from_uint (SET_MASK)), \ ++ si_from_uint ((unsigned int) __cache_tag_array)))) ++ ++#define GET_CACHE_LINE(_addr, _way) \ ++ ((void *) (__cache + ((_addr) & SET_MASK) * WAYS) + ((_way) * LINE_SIZE)); ++ ++#define CHECK_DIRTY(_vec) (si_to_uint (si_orx ((qword) (_vec)))) ++#define SET_EMPTY(_entry, _way) ((_entry)->tag_lo[(_way)] = 1) ++#define CHECK_EMPTY(_entry, _way) ((_entry)->tag_lo[(_way)] == 1) ++ ++#define LS_FLAG 0x80000000 ++#define SET_IS_LS(_entry, _way) ((_entry)->reserved[(_way)] |= LS_FLAG) ++#define CHECK_IS_LS(_entry, _way) ((_entry)->reserved[(_way)] & LS_FLAG) ++#define GET_LRU(_entry, _way) ((_entry)->reserved[(_way)] & ~LS_FLAG) ++ ++static int dma_tag = 32; ++ ++static void ++__cache_evict_entry (struct __cache_tag_array *entry, int way) ++{ ++ addr tag = GET_TAG (entry, way); ++ ++ if (CHECK_DIRTY (entry->dirty_bits[way]) && !CHECK_IS_LS (entry, way)) ++ { ++#ifdef NONATOMIC ++ /* Non-atomic writes. */ ++ unsigned int oldmask, mach_stat; ++ char *line = ((void *) 0); ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ /* Issue DMA request. */ ++ line = GET_CACHE_LINE (entry->tag_lo[way], way); ++ mfc_put (line, tag, LINE_SIZE, dma_tag, 0, 0); ++ ++ /* Wait for DMA completion. */ ++ oldmask = mfc_read_tag_mask (); ++ mfc_write_tag_mask (1 << dma_tag); ++ mfc_read_tag_status_all (); ++ mfc_write_tag_mask (oldmask); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++#else ++ /* Allocate a buffer large enough that we know it has 128 bytes ++ that are 128 byte aligned (for DMA). */ ++ ++ char buffer[LINE_SIZE + 127]; ++ qword *buf_ptr = (qword *) (((unsigned int) (buffer) + 127) & ~127); ++ qword *line = GET_CACHE_LINE (entry->tag_lo[way], way); ++ qword bits; ++ unsigned int mach_stat; ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ do ++ { ++ /* We atomically read the current memory into a buffer ++ modify the dirty bytes in the buffer, and write it ++ back. If writeback fails, loop and try again. */ ++ ++ mfc_getllar (buf_ptr, tag, 0, 0); ++ mfc_read_atomic_status (); ++ ++ /* The method we're using to write 16 dirty bytes into ++ the buffer at a time uses fsmb which in turn uses ++ the least significant 16 bits of word 0, so we ++ load the bits and rotate so that the first bit of ++ the bitmap is in the first bit that fsmb will use. */ ++ ++ bits = (qword) entry->dirty_bits[way]; ++ bits = si_rotqbyi (bits, -2); ++ ++ /* Si_fsmb creates the mask of dirty bytes. ++ Use selb to nab the appropriate bits. */ ++ buf_ptr[0] = si_selb (buf_ptr[0], line[0], si_fsmb (bits)); ++ ++ /* Rotate to next 16 byte section of cache. */ ++ bits = si_rotqbyi (bits, 2); ++ ++ buf_ptr[1] = si_selb (buf_ptr[1], line[1], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[2] = si_selb (buf_ptr[2], line[2], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[3] = si_selb (buf_ptr[3], line[3], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[4] = si_selb (buf_ptr[4], line[4], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[5] = si_selb (buf_ptr[5], line[5], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[6] = si_selb (buf_ptr[6], line[6], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[7] = si_selb (buf_ptr[7], line[7], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ ++ mfc_putllc (buf_ptr, tag, 0, 0); ++ } ++ while (mfc_read_atomic_status ()); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++#endif ++ } ++ ++ /* In any case, marking the lo tag with 1 which denotes empty. */ ++ SET_EMPTY (entry, way); ++ entry->dirty_bits[way] = (vector unsigned short) si_from_uint (0); ++} ++ ++void ++__cache_evict (__ea void *ea) ++{ ++ addr tag = (addr) ea & ~TAG_MASK; ++ struct __cache_tag_array *entry = GET_ENTRY (ea); ++ int i = 0; ++ ++ /* Cycles through all the possible ways an address could be at ++ and evicts the way if found. */ ++ ++ for (i = 0; i < WAYS; i++) ++ if (CHECK_TAG (entry, i, tag)) ++ __cache_evict_entry (entry, i); ++} ++ ++static void * ++__cache_fill (int way, addr tag) ++{ ++ unsigned int oldmask, mach_stat; ++ char *line = ((void *) 0); ++ ++ /* Reserve our DMA tag. */ ++ if (dma_tag == 32) ++ dma_tag = mfc_tag_reserve (); ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ /* Issue DMA request. */ ++ line = GET_CACHE_LINE (tag, way); ++ mfc_get (line, tag, LINE_SIZE, dma_tag, 0, 0); ++ ++ /* Wait for DMA completion. */ ++ oldmask = mfc_read_tag_mask (); ++ mfc_write_tag_mask (1 << dma_tag); ++ mfc_read_tag_status_all (); ++ mfc_write_tag_mask (oldmask); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++ ++ return (void *) line; ++} ++ ++static void ++__cache_miss (__ea void *ea, struct __cache_tag_array *entry, int way) ++{ ++ ++ addr tag = (addr) ea & ~TAG_MASK; ++ unsigned int lru = 0; ++ int i = 0; ++ int idx = 0; ++ ++ /* If way > 4, then there are no empty slots, so we must evict ++ the least recently used entry. */ ++ if (way >= 4) ++ { ++ for (i = 0; i < WAYS; i++) ++ { ++ if (GET_LRU (entry, i) > lru) ++ { ++ lru = GET_LRU (entry, i); ++ idx = i; ++ } ++ } ++ __cache_evict_entry (entry, idx); ++ way = idx; ++ } ++ ++ /* Set the empty entry's tag and fill it's cache line. */ ++ ++ SET_TAG (entry, way, tag); ++ entry->reserved[way] = 0; ++ ++ /* Check if the address is just an effective address within the ++ SPU's local store. */ ++ ++ /* Because the LS is not 256k aligned, we can't do a nice and mask ++ here to compare, so we must check the whole range. */ ++ ++ if ((addr) ea >= (addr) __ea_local_store ++ && (addr) ea < (addr) (__ea_local_store + 0x40000)) ++ { ++ SET_IS_LS (entry, way); ++ entry->base[way] = ++ (void *) ((unsigned int) ((addr) ea - ++ (addr) __ea_local_store) & ~0x7f); ++ } ++ else ++ { ++ entry->base[way] = __cache_fill (way, tag); ++ } ++} ++ ++void * ++__cache_fetch_dirty (__ea void *ea, int n_bytes_dirty) ++{ ++#ifdef __EA64__ ++ unsigned int tag_hi; ++ qword etag_hi; ++#endif ++ unsigned int tag_lo; ++ struct __cache_tag_array *entry; ++ ++ qword etag_lo; ++ qword equal; ++ qword bit_mask; ++ qword way; ++ ++ /* This first chunk, we merely fill the pointer and tag. */ ++ ++ entry = GET_ENTRY (ea); ++ ++#ifndef __EA64__ ++ tag_lo = ++ si_to_uint (si_andc ++ (si_shufb ++ (si_from_uint ((addr) ea), si_from_uint (0), ++ si_from_uint (0x00010203)), si_from_uint (TAG_MASK))); ++#else ++ tag_lo = ++ si_to_uint (si_andc ++ (si_shufb ++ (si_from_ullong ((addr) ea), si_from_uint (0), ++ si_from_uint (0x04050607)), si_from_uint (TAG_MASK))); ++ ++ tag_hi = ++ si_to_uint (si_shufb ++ (si_from_ullong ((addr) ea), si_from_uint (0), ++ si_from_uint (0x00010203))); ++#endif ++ ++ /* Increment LRU in reserved bytes. */ ++ si_stqd (si_ai (si_lqd (si_from_ptr (entry), 48), 1), ++ si_from_ptr (entry), 48); ++ ++missreturn: ++ /* Check if the entry's lo_tag is equal to the address' lo_tag. */ ++ etag_lo = si_lqd (si_from_ptr (entry), 0); ++ equal = si_ceq (etag_lo, si_from_uint (tag_lo)); ++#ifdef __EA64__ ++ /* And the high tag too. */ ++ etag_hi = si_lqd (si_from_ptr (entry), 16); ++ equal = si_and (equal, (si_ceq (etag_hi, si_from_uint (tag_hi)))); ++#endif ++ ++ if ((si_to_uint (si_orx (equal)) == 0)) ++ goto misshandler; ++ ++ if (n_bytes_dirty) ++ { ++ /* way = 0x40,0x50,0x60,0x70 for each way, which is also the ++ offset of the appropriate dirty bits. */ ++ way = si_shli (si_clz (si_gbb (equal)), 2); ++ ++ /* To create the bit_mask, we set it to all 1s (uint -1), then we ++ shift it over (128 - n_bytes_dirty) times. */ ++ ++ bit_mask = si_from_uint (-1); ++ ++ bit_mask = ++ si_shlqby (bit_mask, si_from_uint ((LINE_SIZE - n_bytes_dirty) / 8)); ++ ++ bit_mask = ++ si_shlqbi (bit_mask, si_from_uint ((LINE_SIZE - n_bytes_dirty) % 8)); ++ ++ /* Rotate it around to the correct offset. */ ++ bit_mask = ++ si_rotqby (bit_mask, ++ si_from_uint (-1 * ((addr) ea & TAG_MASK) / 8)); ++ ++ bit_mask = ++ si_rotqbi (bit_mask, ++ si_from_uint (-1 * ((addr) ea & TAG_MASK) % 8)); ++ ++ /* Update the dirty bits. */ ++ si_stqx (si_or (si_lqx (si_from_ptr (entry), way), bit_mask), ++ si_from_ptr (entry), way); ++ }; ++ ++ /* We've definitely found the right entry, set LRU (reserved) to 0 ++ maintaining the LS flag (MSB). */ ++ ++ si_stqd (si_andc ++ (si_lqd (si_from_ptr (entry), 48), ++ si_and (equal, si_from_uint (~(LS_FLAG)))), ++ si_from_ptr (entry), 48); ++ ++ return (void *) ++ si_to_uint (si_a ++ (si_orx ++ (si_and (si_lqd (si_from_ptr (entry), 32), equal)), ++ si_from_uint (((unsigned int) (addr) ea) & TAG_MASK))); ++ ++misshandler: ++ equal = si_ceqi (etag_lo, 1); ++ __cache_miss (ea, entry, (si_to_uint (si_clz (si_gbb (equal))) - 16) >> 2); ++ goto missreturn; ++} ++ ++void * ++__cache_fetch (__ea void *ea) ++{ ++ return __cache_fetch_dirty (ea, 0); ++} ++ ++void ++__cache_touch (__ea void *ea __attribute__ ((unused))) ++{ ++ /* NO-OP for now. */ ++} ++ ++void __cache_flush (void) __attribute__ ((destructor)); ++void ++__cache_flush (void) ++{ ++ struct __cache_tag_array *entry = __cache_tag_array; ++ unsigned int i; ++ int j; ++ ++ /* Cycle through each cache entry and evict all used ways. */ ++ ++ for (i = 0; i < CACHE_LINES / WAYS; i++) ++ { ++ for (j = 0; j < WAYS; j++) ++ if (!CHECK_EMPTY (entry, j)) ++ __cache_evict_entry (entry, j); ++ ++ entry++; ++ } ++} +diff -urNp gcc-4.4.4.orig/gcc/config/spu/cache.S gcc-4.4.4/gcc/config/spu/cache.S +--- a/src/gcc/config/spu/cache.S 1970-01-01 ++++ b/src/gcc/config/spu/cache.S 2010-06-30 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++ .data ++ .p2align 7 ++ .global __cache ++__cache: ++ .rept __CACHE_SIZE__ * 8 ++ .fill 128 ++ .endr ++ ++ .p2align 7 ++ .global __cache_tag_array ++__cache_tag_array: ++ .rept __CACHE_SIZE__ * 2 ++ .long 1, 1, 1, 1 ++ .fill 128-16 ++ .endr ++__end_cache_tag_array: ++ ++ .globl __cache_tag_array_size ++ .set __cache_tag_array_size, __end_cache_tag_array-__cache_tag_array ++ +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu.c gcc-4.4.4/gcc/config/spu/spu.c +--- a/src/gcc/config/spu/spu.c 2009-12-04 ++++ b/src/gcc/config/spu/spu.c 2010-06-30 +@@ -153,6 +153,8 @@ char regs_ever_allocated[FIRST_PSEUDO_RE + static void spu_init_builtins (void); + static unsigned char spu_scalar_mode_supported_p (enum machine_mode mode); + static unsigned char spu_vector_mode_supported_p (enum machine_mode mode); ++static bool spu_addr_space_legitimate_address_p (enum machine_mode, rtx, ++ bool, addr_space_t); + static rtx adjust_operand (rtx op, HOST_WIDE_INT * start); + static rtx get_pic_reg (void); + static int need_to_save_reg (int regno, int saving); +@@ -201,15 +203,23 @@ static void spu_init_libfuncs (void); + static bool spu_return_in_memory (const_tree type, const_tree fntype); + static void fix_range (const char *); + static void spu_encode_section_info (tree, rtx, int); ++static rtx spu_addr_space_legitimize_address (rtx, rtx, enum machine_mode, ++ addr_space_t); + static tree spu_builtin_mul_widen_even (tree); + static tree spu_builtin_mul_widen_odd (tree); + static tree spu_builtin_mask_for_load (void); + static int spu_builtin_vectorization_cost (bool); + static bool spu_vector_alignment_reachable (const_tree, bool); + static tree spu_builtin_vec_perm (tree, tree *); ++static enum machine_mode spu_addr_space_pointer_mode (addr_space_t); ++static enum machine_mode spu_addr_space_address_mode (addr_space_t); ++static bool spu_addr_space_subset_p (addr_space_t, addr_space_t); ++static rtx spu_addr_space_convert (rtx, tree, tree); + static int spu_sms_res_mii (struct ddg *g); + static void asm_file_start (void); + static unsigned int spu_section_type_flags (tree, const char *, int); ++static section *spu_select_section (tree, int, unsigned HOST_WIDE_INT); ++static void spu_unique_section (tree, int); + static rtx spu_expand_load (rtx, rtx, rtx, int); + + extern const char *reg_names[]; +@@ -269,9 +279,31 @@ spu_libgcc_cmp_return_mode (void); + static enum machine_mode + spu_libgcc_shift_count_mode (void); + ++/* Pointer mode for __ea references. */ ++#define EAmode (spu_ea_model != 32 ? DImode : SImode) ++ + + /* TARGET overrides. */ + ++#undef TARGET_ADDR_SPACE_POINTER_MODE ++#define TARGET_ADDR_SPACE_POINTER_MODE spu_addr_space_pointer_mode ++ ++#undef TARGET_ADDR_SPACE_ADDRESS_MODE ++#define TARGET_ADDR_SPACE_ADDRESS_MODE spu_addr_space_address_mode ++ ++#undef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P ++#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \ ++ spu_addr_space_legitimate_address_p ++ ++#undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS ++#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS spu_addr_space_legitimize_address ++ ++#undef TARGET_ADDR_SPACE_SUBSET_P ++#define TARGET_ADDR_SPACE_SUBSET_P spu_addr_space_subset_p ++ ++#undef TARGET_ADDR_SPACE_CONVERT ++#define TARGET_ADDR_SPACE_CONVERT spu_addr_space_convert ++ + #undef TARGET_INIT_BUILTINS + #define TARGET_INIT_BUILTINS spu_init_builtins + +@@ -281,6 +313,15 @@ spu_libgcc_shift_count_mode (void); + #undef TARGET_UNWIND_WORD_MODE + #define TARGET_UNWIND_WORD_MODE spu_unwind_word_mode + ++/* The current assembler doesn't like .4byte foo@ppu, so use the normal .long ++ and .quad for the debugger. When it is known that the assembler is fixed, ++ these can be removed. */ ++#undef TARGET_ASM_UNALIGNED_SI_OP ++#define TARGET_ASM_UNALIGNED_SI_OP "\t.long\t" ++ ++#undef TARGET_ASM_ALIGNED_DI_OP ++#define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t" ++ + /* The .8byte directive doesn't seem to work well for a 32 bit + architecture. */ + #undef TARGET_ASM_UNALIGNED_DI_OP +@@ -398,6 +439,12 @@ const struct attribute_spec spu_attribut + #undef TARGET_SECTION_TYPE_FLAGS + #define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags + ++#undef TARGET_ASM_SELECT_SECTION ++#define TARGET_ASM_SELECT_SECTION spu_select_section ++ ++#undef TARGET_ASM_UNIQUE_SECTION ++#define TARGET_ASM_UNIQUE_SECTION spu_unique_section ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + void +@@ -3606,6 +3653,29 @@ exp2_immediate_p (rtx op, enum machine_m + return FALSE; + } + ++/* Return true if X is a SYMBOL_REF to an __ea qualified variable. */ ++ ++static int ++ea_symbol_ref (rtx *px, void *data ATTRIBUTE_UNUSED) ++{ ++ rtx x = *px; ++ tree decl; ++ ++ if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS) ++ { ++ rtx plus = XEXP (x, 0); ++ rtx op0 = XEXP (plus, 0); ++ rtx op1 = XEXP (plus, 1); ++ if (GET_CODE (op1) == CONST_INT) ++ x = op0; ++ } ++ ++ return (GET_CODE (x) == SYMBOL_REF ++ && (decl = SYMBOL_REF_DECL (x)) != 0 ++ && TREE_CODE (decl) == VAR_DECL ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl))); ++} ++ + /* We accept: + - any 32-bit constant (SImode, SFmode) + - any constant that can be generated with fsmbi (any mode) +@@ -3617,6 +3687,12 @@ spu_legitimate_constant_p (rtx x) + { + if (GET_CODE (x) == HIGH) + x = XEXP (x, 0); ++ ++ /* Reject any __ea qualified reference. These can't appear in ++ instructions but must be forced to the constant pool. */ ++ if (for_each_rtx (&x, ea_symbol_ref, 0)) ++ return 0; ++ + /* V4SI with all identical symbols is valid. */ + if (!flag_pic + && GET_MODE (x) == V4SImode +@@ -3655,8 +3731,14 @@ spu_legitimate_address (enum machine_mod + switch (GET_CODE (x)) + { + case LABEL_REF: ++ return !TARGET_LARGE_MEM; ++ + case SYMBOL_REF: + case CONST: ++ /* Keep __ea references until reload so that spu_expand_mov can see them ++ in MEMs. */ ++ if (ea_symbol_ref (&x, 0)) ++ return !reload_in_progress && !reload_completed; + return !TARGET_LARGE_MEM; + + case CONST_INT: +@@ -3700,6 +3782,20 @@ spu_legitimate_address (enum machine_mod + return FALSE; + } + ++/* Like spu_legitimate_address, except with named addresses. */ ++static bool ++spu_addr_space_legitimate_address_p (enum machine_mode mode, rtx x, ++ bool reg_ok_strict, addr_space_t as) ++{ ++ if (as == ADDR_SPACE_EA) ++ return (REG_P (x) && (GET_MODE (x) == EAmode)); ++ ++ else if (as != ADDR_SPACE_GENERIC) ++ gcc_unreachable (); ++ ++ return spu_legitimate_address (mode, x, reg_ok_strict); ++} ++ + /* When the address is reg + const_int, force the const_int into a + register. */ + rtx +@@ -3733,6 +3829,23 @@ spu_legitimize_address (rtx x, rtx oldx + return NULL_RTX; + } + ++/* Like spu_legitimate_address, except with named address support. */ ++static rtx ++spu_addr_space_legitimize_address (rtx x, rtx oldx, enum machine_mode mode, ++ addr_space_t as) ++{ ++ rtx result; ++ ++ if (as != ADDR_SPACE_GENERIC) ++ return x; ++ ++ result = spu_legitimize_address (x, oldx, mode); ++ if (result) ++ return result; ++ ++ return x; ++} ++ + /* Handle an attribute requiring a FUNCTION_DECL; arguments as in + struct attribute_spec.handler. */ + static tree +@@ -4233,6 +4346,233 @@ address_needs_split (rtx mem) + return 0; + } + ++static GTY(()) rtx cache_fetch; /* __cache_fetch function */ ++static GTY(()) rtx cache_fetch_dirty; /* __cache_fetch_dirty function */ ++static alias_set_type ea_alias_set = -1; /* alias set for __ea memory */ ++ ++/* MEM is known to be an __ea qualified memory access. Emit a call to ++ fetch the ppu memory to local store, and return its address in local ++ store. */ ++ ++static void ++ea_load_store (rtx mem, bool is_store, rtx ea_addr, rtx data_addr) ++{ ++ if (is_store) ++ { ++ rtx ndirty = GEN_INT (GET_MODE_SIZE (GET_MODE (mem))); ++ if (!cache_fetch_dirty) ++ cache_fetch_dirty = init_one_libfunc ("__cache_fetch_dirty"); ++ emit_library_call_value (cache_fetch_dirty, data_addr, LCT_NORMAL, Pmode, ++ 2, ea_addr, EAmode, ndirty, SImode); ++ } ++ else ++ { ++ if (!cache_fetch) ++ cache_fetch = init_one_libfunc ("__cache_fetch"); ++ emit_library_call_value (cache_fetch, data_addr, LCT_NORMAL, Pmode, ++ 1, ea_addr, EAmode); ++ } ++} ++ ++/* Like ea_load_store, but do the cache tag comparison and, for stores, ++ dirty bit marking, inline. ++ ++ The cache control data structure is an array of ++ ++ struct __cache_tag_array ++ { ++ unsigned int tag_lo[4]; ++ unsigned int tag_hi[4]; ++ void *data_pointer[4]; ++ int reserved[4]; ++ vector unsigned short dirty_bits[4]; ++ } */ ++ ++static void ++ea_load_store_inline (rtx mem, bool is_store, rtx ea_addr, rtx data_addr) ++{ ++ rtx ea_addr_si; ++ HOST_WIDE_INT v; ++ rtx tag_size_sym = gen_rtx_SYMBOL_REF (Pmode, "__cache_tag_array_size"); ++ rtx tag_arr_sym = gen_rtx_SYMBOL_REF (Pmode, "__cache_tag_array"); ++ rtx index_mask = gen_reg_rtx (SImode); ++ rtx tag_arr = gen_reg_rtx (Pmode); ++ rtx splat_mask = gen_reg_rtx (TImode); ++ rtx splat = gen_reg_rtx (V4SImode); ++ rtx splat_hi = NULL_RTX; ++ rtx tag_index = gen_reg_rtx (Pmode); ++ rtx block_off = gen_reg_rtx (SImode); ++ rtx tag_addr = gen_reg_rtx (Pmode); ++ rtx tag = gen_reg_rtx (V4SImode); ++ rtx cache_tag = gen_reg_rtx (V4SImode); ++ rtx cache_tag_hi = NULL_RTX; ++ rtx cache_ptrs = gen_reg_rtx (TImode); ++ rtx cache_ptrs_si = gen_reg_rtx (SImode); ++ rtx tag_equal = gen_reg_rtx (V4SImode); ++ rtx tag_equal_hi = NULL_RTX; ++ rtx tag_eq_pack = gen_reg_rtx (V4SImode); ++ rtx tag_eq_pack_si = gen_reg_rtx (SImode); ++ rtx eq_index = gen_reg_rtx (SImode); ++ rtx bcomp, hit_label, hit_ref, cont_label, insn; ++ ++ if (spu_ea_model != 32) ++ { ++ splat_hi = gen_reg_rtx (V4SImode); ++ cache_tag_hi = gen_reg_rtx (V4SImode); ++ tag_equal_hi = gen_reg_rtx (V4SImode); ++ } ++ ++ emit_move_insn (index_mask, plus_constant (tag_size_sym, -128)); ++ emit_move_insn (tag_arr, tag_arr_sym); ++ v = 0x0001020300010203LL; ++ emit_move_insn (splat_mask, immed_double_const (v, v, TImode)); ++ ea_addr_si = ea_addr; ++ if (spu_ea_model != 32) ++ ea_addr_si = convert_to_mode (SImode, ea_addr, 1); ++ ++ /* tag_index = ea_addr & (tag_array_size - 128) */ ++ emit_insn (gen_andsi3 (tag_index, ea_addr_si, index_mask)); ++ ++ /* splat ea_addr to all 4 slots. */ ++ emit_insn (gen_shufb (splat, ea_addr_si, ea_addr_si, splat_mask)); ++ /* Similarly for high 32 bits of ea_addr. */ ++ if (spu_ea_model != 32) ++ emit_insn (gen_shufb (splat_hi, ea_addr, ea_addr, splat_mask)); ++ ++ /* block_off = ea_addr & 127 */ ++ emit_insn (gen_andsi3 (block_off, ea_addr_si, spu_const (SImode, 127))); ++ ++ /* tag_addr = tag_arr + tag_index */ ++ emit_insn (gen_addsi3 (tag_addr, tag_arr, tag_index)); ++ ++ /* Read cache tags. */ ++ emit_move_insn (cache_tag, gen_rtx_MEM (V4SImode, tag_addr)); ++ if (spu_ea_model != 32) ++ emit_move_insn (cache_tag_hi, gen_rtx_MEM (V4SImode, ++ plus_constant (tag_addr, 16))); ++ ++ /* tag = ea_addr & -128 */ ++ emit_insn (gen_andv4si3 (tag, splat, spu_const (V4SImode, -128))); ++ ++ /* Read all four cache data pointers. */ ++ emit_move_insn (cache_ptrs, gen_rtx_MEM (TImode, ++ plus_constant (tag_addr, 32))); ++ ++ /* Compare tags. */ ++ emit_insn (gen_ceq_v4si (tag_equal, tag, cache_tag)); ++ if (spu_ea_model != 32) ++ { ++ emit_insn (gen_ceq_v4si (tag_equal_hi, splat_hi, cache_tag_hi)); ++ emit_insn (gen_andv4si3 (tag_equal, tag_equal, tag_equal_hi)); ++ } ++ ++ /* At most one of the tags compare equal, so tag_equal has one ++ 32-bit slot set to all 1's, with the other slots all zero. ++ gbb picks off low bit from each byte in the 128-bit registers, ++ so tag_eq_pack is one of 0xf000, 0x0f00, 0x00f0, 0x000f, assuming ++ we have a hit. */ ++ emit_insn (gen_spu_gbb (tag_eq_pack, spu_gen_subreg (V16QImode, tag_equal))); ++ emit_insn (gen_spu_convert (tag_eq_pack_si, tag_eq_pack)); ++ ++ /* So counting leading zeros will set eq_index to 16, 20, 24 or 28. */ ++ emit_insn (gen_clzsi2 (eq_index, tag_eq_pack_si)); ++ ++ /* Allowing us to rotate the corresponding cache data pointer to slot0. ++ (rotating eq_index mod 16 bytes). */ ++ emit_insn (gen_rotqby_ti (cache_ptrs, cache_ptrs, eq_index)); ++ emit_insn (gen_spu_convert (cache_ptrs_si, cache_ptrs)); ++ ++ /* Add block offset to form final data address. */ ++ emit_insn (gen_addsi3 (data_addr, cache_ptrs_si, block_off)); ++ ++ /* Check that we did hit. */ ++ hit_label = gen_label_rtx (); ++ hit_ref = gen_rtx_LABEL_REF (VOIDmode, hit_label); ++ bcomp = gen_rtx_NE (SImode, tag_eq_pack_si, const0_rtx); ++ insn = emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, ++ gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp, ++ hit_ref, pc_rtx))); ++ /* Say that this branch is very likely to happen. */ ++ v = REG_BR_PROB_BASE - REG_BR_PROB_BASE / 100 - 1; ++ REG_NOTES (insn) ++ = gen_rtx_EXPR_LIST (REG_BR_PROB, GEN_INT (v), REG_NOTES (insn)); ++ ++ ea_load_store (mem, is_store, ea_addr, data_addr); ++ cont_label = gen_label_rtx (); ++ emit_jump_insn (gen_jump (cont_label)); ++ emit_barrier (); ++ ++ emit_label (hit_label); ++ ++ if (is_store) ++ { ++ HOST_WIDE_INT v_hi; ++ rtx dirty_bits = gen_reg_rtx (TImode); ++ rtx dirty_off = gen_reg_rtx (SImode); ++ rtx dirty_128 = gen_reg_rtx (TImode); ++ rtx neg_block_off = gen_reg_rtx (SImode); ++ ++ /* Set up mask with one dirty bit per byte of the mem we are ++ writing, starting from top bit. */ ++ v_hi = v = -1; ++ v <<= (128 - GET_MODE_SIZE (GET_MODE (mem))) & 63; ++ if ((128 - GET_MODE_SIZE (GET_MODE (mem))) >= 64) ++ { ++ v_hi = v; ++ v = 0; ++ } ++ emit_move_insn (dirty_bits, immed_double_const (v, v_hi, TImode)); ++ ++ /* Form index into cache dirty_bits. eq_index is one of ++ 0x10, 0x14, 0x18 or 0x1c. Multiplying by 4 gives us ++ 0x40, 0x50, 0x60 or 0x70 which just happens to be the ++ offset to each of the four dirty_bits elements. */ ++ emit_insn (gen_ashlsi3 (dirty_off, eq_index, spu_const (SImode, 2))); ++ ++ emit_insn (gen_spu_lqx (dirty_128, tag_addr, dirty_off)); ++ ++ /* Rotate bit mask to proper bit. */ ++ emit_insn (gen_negsi2 (neg_block_off, block_off)); ++ emit_insn (gen_rotqbybi_ti (dirty_bits, dirty_bits, neg_block_off)); ++ emit_insn (gen_rotqbi_ti (dirty_bits, dirty_bits, neg_block_off)); ++ ++ /* Or in the new dirty bits. */ ++ emit_insn (gen_iorti3 (dirty_128, dirty_bits, dirty_128)); ++ ++ /* Store. */ ++ emit_insn (gen_spu_stqx (dirty_128, tag_addr, dirty_off)); ++ } ++ ++ emit_label (cont_label); ++} ++ ++static rtx ++expand_ea_mem (rtx mem, bool is_store) ++{ ++ rtx ea_addr; ++ rtx data_addr = gen_reg_rtx (Pmode); ++ rtx new_mem; ++ ++ ea_addr = force_reg (EAmode, XEXP (mem, 0)); ++ if (optimize_size || optimize == 0) ++ ea_load_store (mem, is_store, ea_addr, data_addr); ++ else ++ ea_load_store_inline (mem, is_store, ea_addr, data_addr); ++ ++ if (ea_alias_set == -1) ++ ea_alias_set = new_alias_set (); ++ ++ /* We generate a new MEM RTX to refer to the copy of the data ++ in the cache. We do not copy memory attributes (except the ++ alignment) from the original MEM, as they may no longer apply ++ to the cache copy. */ ++ new_mem = gen_rtx_MEM (GET_MODE (mem), data_addr); ++ set_mem_alias_set (new_mem, ea_alias_set); ++ set_mem_align (new_mem, MIN (MEM_ALIGN (mem), 128 * 8)); ++ ++ return new_mem; ++} ++ + int + spu_expand_mov (rtx * ops, enum machine_mode mode) + { +@@ -4290,9 +4630,17 @@ spu_expand_mov (rtx * ops, enum machine_ + } + } + if (MEM_P (ops[0])) +- return spu_split_store (ops); ++ { ++ if (MEM_ADDR_SPACE (ops[0])) ++ ops[0] = expand_ea_mem (ops[0], true); ++ return spu_split_store (ops); ++ } + if (MEM_P (ops[1])) +- return spu_split_load (ops); ++ { ++ if (MEM_ADDR_SPACE (ops[1])) ++ ops[1] = expand_ea_mem (ops[1], false); ++ return spu_split_load (ops); ++ } + + return 0; + } +@@ -6415,6 +6763,113 @@ spu_builtin_vec_perm (tree type, tree *m + return d->fndecl; + } + ++/* Return the appropriate mode for a named address pointer. */ ++static enum machine_mode ++spu_addr_space_pointer_mode (addr_space_t addrspace) ++{ ++ switch (addrspace) ++ { ++ case ADDR_SPACE_GENERIC: ++ return ptr_mode; ++ case ADDR_SPACE_EA: ++ return EAmode; ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++/* Return the appropriate mode for a named address address. */ ++static enum machine_mode ++spu_addr_space_address_mode (addr_space_t addrspace) ++{ ++ switch (addrspace) ++ { ++ case ADDR_SPACE_GENERIC: ++ return Pmode; ++ case ADDR_SPACE_EA: ++ return EAmode; ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++/* Determine if one named address space is a subset of another. */ ++ ++static bool ++spu_addr_space_subset_p (addr_space_t subset, addr_space_t superset) ++{ ++ gcc_assert (subset == ADDR_SPACE_GENERIC || subset == ADDR_SPACE_EA); ++ gcc_assert (superset == ADDR_SPACE_GENERIC || superset == ADDR_SPACE_EA); ++ ++ if (subset == superset) ++ return true; ++ ++ /* If we have -mno-address-space-conversion, treat __ea and generic as not ++ being subsets but instead as disjoint address spaces. */ ++ else if (!TARGET_ADDRESS_SPACE_CONVERSION) ++ return false; ++ ++ else ++ return (subset == ADDR_SPACE_GENERIC && superset == ADDR_SPACE_EA); ++} ++ ++/* Convert from one address space to another. */ ++static rtx ++spu_addr_space_convert (rtx op, tree from_type, tree to_type) ++{ ++ addr_space_t from_as = TYPE_ADDR_SPACE (TREE_TYPE (from_type)); ++ addr_space_t to_as = TYPE_ADDR_SPACE (TREE_TYPE (to_type)); ++ ++ gcc_assert (from_as == ADDR_SPACE_GENERIC || from_as == ADDR_SPACE_EA); ++ gcc_assert (to_as == ADDR_SPACE_GENERIC || to_as == ADDR_SPACE_EA); ++ ++ if (to_as == ADDR_SPACE_GENERIC && from_as == ADDR_SPACE_EA) ++ { ++ rtx result, ls; ++ ++ ls = gen_const_mem (DImode, ++ gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store")); ++ set_mem_align (ls, 128); ++ ++ result = gen_reg_rtx (Pmode); ++ ls = force_reg (Pmode, convert_modes (Pmode, DImode, ls, 1)); ++ op = force_reg (Pmode, convert_modes (Pmode, EAmode, op, 1)); ++ ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode, ++ ls, const0_rtx, Pmode, 1); ++ ++ emit_insn (gen_subsi3 (result, op, ls)); ++ ++ return result; ++ } ++ ++ else if (to_as == ADDR_SPACE_EA && from_as == ADDR_SPACE_GENERIC) ++ { ++ rtx result, ls; ++ ++ ls = gen_const_mem (DImode, ++ gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store")); ++ set_mem_align (ls, 128); ++ ++ result = gen_reg_rtx (EAmode); ++ ls = force_reg (EAmode, convert_modes (EAmode, DImode, ls, 1)); ++ op = force_reg (Pmode, op); ++ ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode, ++ ls, const0_rtx, EAmode, 1); ++ op = force_reg (EAmode, convert_modes (EAmode, Pmode, op, 1)); ++ ++ if (EAmode == SImode) ++ emit_insn (gen_addsi3 (result, op, ls)); ++ else ++ emit_insn (gen_adddi3 (result, op, ls)); ++ ++ return result; ++ } ++ ++ else ++ gcc_unreachable (); ++} ++ ++ + /* Count the total number of instructions in each pipe and return the + maximum, which is used as the Minimum Iteration Interval (MII) + in the modulo scheduler. get_pipe() will return -2, -1, 0, or 1. +@@ -6507,9 +6962,46 @@ spu_section_type_flags (tree decl, const + /* .toe needs to have type @nobits. */ + if (strcmp (name, ".toe") == 0) + return SECTION_BSS; ++ /* Don't load _ea into the current address space. */ ++ if (strcmp (name, "._ea") == 0) ++ return SECTION_WRITE | SECTION_DEBUG; + return default_section_type_flags (decl, name, reloc); + } + ++/* Implement targetm.select_section. */ ++static section * ++spu_select_section (tree decl, int reloc, unsigned HOST_WIDE_INT align) ++{ ++ /* Variables and constants defined in the __ea address space ++ go into a special section named "._ea". */ ++ if (TREE_TYPE (decl) != error_mark_node ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl)) == ADDR_SPACE_EA) ++ { ++ /* We might get called with string constants, but get_named_section ++ doesn't like them as they are not DECLs. Also, we need to set ++ flags in that case. */ ++ if (!DECL_P (decl)) ++ return get_section ("._ea", SECTION_WRITE | SECTION_DEBUG, NULL); ++ ++ return get_named_section (decl, "._ea", reloc); ++ } ++ ++ return default_elf_select_section (decl, reloc, align); ++} ++ ++/* Implement targetm.unique_section. */ ++static void ++spu_unique_section (tree decl, int reloc) ++{ ++ /* We don't support unique section names in the __ea address ++ space for now. */ ++ if (TREE_TYPE (decl) != error_mark_node ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl)) != 0) ++ return; ++ ++ default_unique_section (decl, reloc); ++} ++ + /* Generate a constant or register which contains 2^SCALE. We assume + the result is valid for MODE. Currently, MODE must be V4SFmode and + SCALE must be SImode. */ +@@ -6558,5 +7050,12 @@ spu_split_convert (rtx ops[]) + } + } + ++void ++spu_function_profiler (FILE * file, int labelno) ++{ ++ fprintf (file, "# profile\n"); ++ fprintf (file, "brsl $75, _mcount\n"); ++} ++ + #include "gt-spu.h" + +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu_cache.h gcc-4.4.4/gcc/config/spu/spu_cache.h +--- a/src/gcc/config/spu/spu_cache.h 1970-01-01 ++++ b/src/gcc/config/spu/spu_cache.h 2010-06-30 +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2008, 2009 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 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 ++ . */ ++ ++#ifndef _SPU_CACHE_H ++#define _SPU_CACHE_H ++ ++void *__cache_fetch_dirty (__ea void *ea, int n_bytes_dirty); ++void *__cache_fetch (__ea void *ea); ++void __cache_evict (__ea void *ea); ++void __cache_flush (void); ++void __cache_touch (__ea void *ea); ++ ++#define cache_fetch_dirty(_ea, _n_bytes_dirty) \ ++ __cache_fetch_dirty(_ea, _n_bytes_dirty) ++ ++#define cache_fetch(_ea) __cache_fetch(_ea) ++#define cache_touch(_ea) __cache_touch(_ea) ++#define cache_evict(_ea) __cache_evict(_ea) ++#define cache_flush() __cache_flush() ++ ++#endif +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu-c.c gcc-4.4.4/gcc/config/spu/spu-c.c +--- a/src/gcc/config/spu/spu-c.c 2010-02-19 ++++ b/src/gcc/config/spu/spu-c.c 2010-06-30 +@@ -199,6 +199,17 @@ spu_cpu_cpp_builtins (struct cpp_reader + if (spu_arch == PROCESSOR_CELLEDP) + builtin_define_std ("__SPU_EDP__"); + builtin_define_std ("__vector=__attribute__((__spu_vector__))"); ++ switch (spu_ea_model) ++ { ++ case 32: ++ builtin_define_std ("__EA32__"); ++ break; ++ case 64: ++ builtin_define_std ("__EA64__"); ++ break; ++ default: ++ gcc_unreachable (); ++ } + + if (!flag_iso) + { +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu-elf.h gcc-4.4.4/gcc/config/spu/spu-elf.h +--- a/src/gcc/config/spu/spu-elf.h 2009-02-20 ++++ b/src/gcc/config/spu/spu-elf.h 2010-06-30 +@@ -48,8 +48,9 @@ + object constructed before entering `main'. */ + + #undef STARTFILE_SPEC +-#define STARTFILE_SPEC "%{mstdmain: crt2.o%s} %{!mstdmain: crt1.o%s} \ +- crti.o%s crtbegin.o%s" ++#define STARTFILE_SPEC "%{mstdmain: %{pg|p:gcrt2.o%s;:crt2.o%s}}\ ++ %{!mstdmain: %{pg|p:gcrt1.o%s;:crt1.o%s}}\ ++ crti.o%s crtbegin.o%s" + + #undef ENDFILE_SPEC + #define ENDFILE_SPEC "crtend.o%s crtn.o%s" +@@ -68,8 +69,14 @@ + + #define LINK_SPEC "%{mlarge-mem: --defsym __stack=0xfffffff0 }" + +-#define LIB_SPEC \ +- "-( %{!shared:%{g*:-lg}} -lc -lgloss -)" ++#define LIB_SPEC "-( %{!shared:%{g*:-lg}} -lc -lgloss -) \ ++ %{mno-atomic-updates:-lgcc_cachemgr_nonatomic; :-lgcc_cachemgr} \ ++ %{mcache-size=128:-lgcc_cache128k; \ ++ mcache-size=64 :-lgcc_cache64k; \ ++ mcache-size=32 :-lgcc_cache32k; \ ++ mcache-size=16 :-lgcc_cache16k; \ ++ mcache-size=8 :-lgcc_cache8k; \ ++ :-lgcc_cache64k}" + + /* Turn off warnings in the assembler too. */ + #undef ASM_SPEC +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu.h gcc-4.4.4/gcc/config/spu/spu.h +--- a/src/gcc/config/spu/spu.h 2010-06-30 ++++ b/src/gcc/config/spu/spu.h 2010-06-30 +@@ -51,7 +51,7 @@ extern GTY(()) int spu_tune; + /* Default target_flags if no switches specified. */ + #ifndef TARGET_DEFAULT + #define TARGET_DEFAULT (MASK_ERROR_RELOC | MASK_SAFE_DMA | MASK_BRANCH_HINTS \ +- | MASK_SAFE_HINTS) ++ | MASK_SAFE_HINTS | MASK_ADDRESS_SPACE_CONVERSION) + #endif + + +@@ -396,9 +396,12 @@ targetm.resolve_overloaded_builtin = spu + + /* Profiling */ + +-/* Nothing, for now. */ + #define FUNCTION_PROFILER(FILE, LABELNO) \ +- fprintf (FILE, "\t\n") ++ spu_function_profiler ((FILE), (LABELNO)); ++ ++#define NO_PROFILE_COUNTERS 1 ++ ++#define PROFILE_BEFORE_PROLOGUE 1 + + + /* Trampolines */ +@@ -498,6 +501,17 @@ targetm.resolve_overloaded_builtin = spu + #define ASM_OUTPUT_LABELREF(FILE, NAME) \ + asm_fprintf (FILE, "%U%s", default_strip_name_encoding (NAME)) + ++#define ASM_OUTPUT_SYMBOL_REF(FILE, X) \ ++ do \ ++ { \ ++ tree decl; \ ++ assemble_name (FILE, XSTR ((X), 0)); \ ++ if ((decl = SYMBOL_REF_DECL ((X))) != 0 \ ++ && TREE_CODE (decl) == VAR_DECL \ ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl))) \ ++ fputs ("@ppu", FILE); \ ++ } while (0) ++ + + /* Instruction Output */ + #define REGISTER_NAMES \ +@@ -624,6 +638,13 @@ extern GTY(()) rtx spu_compare_op0; + extern GTY(()) rtx spu_compare_op1; + + ++/* Address spaces. */ ++#define ADDR_SPACE_EA 1 ++ ++/* Named address space keywords. */ ++#define TARGET_ADDR_SPACE_KEYWORDS ADDR_SPACE_KEYWORD ("__ea", ADDR_SPACE_EA) ++ ++ + /* Builtins. */ + + enum spu_builtin_type +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu.opt gcc-4.4.4/gcc/config/spu/spu.opt +--- a/src/gcc/config/spu/spu.opt 2009-02-20 ++++ b/src/gcc/config/spu/spu.opt 2010-06-30 +@@ -82,3 +82,24 @@ Generate code for given CPU + mtune= + Target RejectNegative Joined Var(spu_tune_string) + Schedule code for given CPU ++ ++mea32 ++Target Report RejectNegative Var(spu_ea_model,32) Init(32) ++Access variables in 32-bit PPU objects (default) ++ ++mea64 ++Target Report RejectNegative Var(spu_ea_model,64) VarExists ++Access variables in 64-bit PPU objects ++ ++maddress-space-conversion ++Target Report Mask(ADDRESS_SPACE_CONVERSION) ++Allow conversions between __ea and generic pointers (default) ++ ++mcache-size= ++Target Report RejectNegative Joined UInteger ++Size (in KB) of software data cache ++ ++matomic-updates ++Target Report ++Atomically write back software data cache lines (default) ++ +diff -urNp gcc-4.4.4.orig/gcc/config/spu/spu-protos.h gcc-4.4.4/gcc/config/spu/spu-protos.h +--- a/src/gcc/config/spu/spu-protos.h 2009-12-04 ++++ b/src/gcc/config/spu/spu-protos.h 2010-06-30 +@@ -90,6 +90,7 @@ extern void spu_expand_sign_extend (rtx + extern void spu_expand_vector_init (rtx target, rtx vals); + extern void spu_init_expanders (void); + extern void spu_split_convert (rtx *); ++extern void spu_function_profiler (FILE *, int); + + /* spu-c.c */ + extern tree spu_resolve_overloaded_builtin (tree fndecl, tree fnargs); +diff -urNp gcc-4.4.4.orig/gcc/config/spu/t-spu-elf gcc-4.4.4/gcc/config/spu/t-spu-elf +--- a/src/gcc/config/spu/t-spu-elf 2009-04-24 ++++ b/src/gcc/config/spu/t-spu-elf 2010-06-30 +@@ -66,14 +66,39 @@ fp-bit.c: $(srcdir)/config/fp-bit.c $(sr + # Don't let CTOR_LIST end up in sdata section. + CRTSTUFF_T_CFLAGS = + +-#MULTILIB_OPTIONS=mlarge-mem/mtest-abi +-#MULTILIB_DIRNAMES=large-mem test-abi +-#MULTILIB_MATCHES= ++# Multi-lib support. ++MULTILIB_OPTIONS=mea64 + + # Neither gcc or newlib seem to have a standard way to generate multiple + # crt*.o files. So we don't use the standard crt0.o name anymore. + +-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o ++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o libgcc_cachemgr.a libgcc_cachemgr_nonatomic.a \ ++ libgcc_cache8k.a libgcc_cache16k.a libgcc_cache32k.a libgcc_cache64k.a libgcc_cache128k.a ++ ++$(T)cachemgr.o: $(srcdir)/config/spu/cachemgr.c ++ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(MULTILIB_CFLAGS) -c $< -o $@ ++ ++# Specialised rule to add a -D flag. ++$(T)cachemgr_nonatomic.o: $(srcdir)/config/spu/cachemgr.c ++ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(MULTILIB_CFLAGS) -DNONATOMIC -c $< -o $@ ++ ++$(T)libgcc_%.a: $(T)%.o ++ $(AR_FOR_TARGET) -rcs $@ $< ++ ++$(T)cache8k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=8 -o $@ -c $< ++ ++$(T)cache16k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=16 -o $@ -c $< ++ ++$(T)cache32k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=32 -o $@ -c $< ++ ++$(T)cache64k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=64 -o $@ -c $< ++ ++$(T)cache128k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=128 -o $@ -c $< + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +diff -urNp gcc-4.4.4.orig/gcc/config.gcc gcc-4.4.4/gcc/config.gcc +--- a/src/gcc/config.gcc 2010-06-30 ++++ b/src/gcc/config.gcc 2010-06-30 +@@ -2515,7 +2515,7 @@ sparc64-*-netbsd*) + spu-*-elf*) + tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h" + tmake_file="spu/t-spu-elf" +- extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h" ++ extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h spu_cache.h" + extra_modes=spu/spu-modes.def + c_target_objs="${c_target_objs} spu-c.o" + cxx_target_objs="${cxx_target_objs} spu-c.o" +diff -urNp gcc-4.4.4.orig/gcc/convert.c gcc-4.4.4/gcc/convert.c +--- a/src/gcc/convert.c 2009-07-01 ++++ b/src/gcc/convert.c 2010-06-30 +@@ -53,15 +53,35 @@ convert_to_pointer (tree type, tree expr + { + case POINTER_TYPE: + case REFERENCE_TYPE: +- return fold_build1 (NOP_EXPR, type, expr); ++ { ++ /* If the pointers point to different address spaces, conversion needs ++ to be done via a ADDR_SPACE_CONVERT_EXPR instead of a NOP_EXPR. */ ++ addr_space_t to_as = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ addr_space_t from_as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (expr))); ++ ++ if (to_as == from_as) ++ return fold_build1 (NOP_EXPR, type, expr); ++ else ++ return fold_build1 (ADDR_SPACE_CONVERT_EXPR, type, expr); ++ } + + case INTEGER_TYPE: + case ENUMERAL_TYPE: + case BOOLEAN_TYPE: +- if (TYPE_PRECISION (TREE_TYPE (expr)) != POINTER_SIZE) +- expr = fold_build1 (NOP_EXPR, +- lang_hooks.types.type_for_size (POINTER_SIZE, 0), +- expr); ++ { ++ /* If the input precision differs from the target pointer type ++ precision, first convert the input expression to an integer type of ++ the target precision. Some targets, e.g. VMS, need several pointer ++ sizes to coexist so the latter isn't necessarily POINTER_SIZE. */ ++ unsigned int pprec = TYPE_PRECISION (type); ++ unsigned int eprec = TYPE_PRECISION (TREE_TYPE (expr)); ++ ++ if (eprec != pprec) ++ expr = fold_build1 (NOP_EXPR, ++ lang_hooks.types.type_for_size (pprec, 0), ++ expr); ++ } ++ + return fold_build1 (CONVERT_EXPR, type, expr); + + +@@ -488,10 +508,13 @@ convert_to_integer (tree type, tree expr + if (integer_zerop (expr)) + return build_int_cst (type, 0); + +- /* Convert to an unsigned integer of the correct width first, +- and from there widen/truncate to the required type. */ ++ /* Convert to an unsigned integer of the correct width first, and from ++ there widen/truncate to the required type. Some targets support the ++ coexistence of multiple valid pointer sizes, so fetch the one we need ++ from the type. */ + expr = fold_build1 (CONVERT_EXPR, +- lang_hooks.types.type_for_size (POINTER_SIZE, 0), ++ lang_hooks.types.type_for_size ++ (TYPE_PRECISION (intype), 0), + expr); + return fold_convert (type, expr); + +diff -urNp gcc-4.4.4.orig/gcc/coretypes.h gcc-4.4.4/gcc/coretypes.h +--- a/src/gcc/coretypes.h 2009-04-10 ++++ b/src/gcc/coretypes.h 2010-06-30 +@@ -67,6 +67,13 @@ struct gimple_seq_node_d; + typedef struct gimple_seq_node_d *gimple_seq_node; + typedef const struct gimple_seq_node_d *const_gimple_seq_node; + ++/* Address space number for named address space support. */ ++typedef unsigned char addr_space_t; ++ ++/* The value of addr_space_t that represents the generic address space. */ ++#define ADDR_SPACE_GENERIC 0 ++#define ADDR_SPACE_GENERIC_P(AS) ((AS) == ADDR_SPACE_GENERIC) ++ + /* The major intermediate representations of GCC. */ + enum ir_type { + IR_GIMPLE, +diff -urNp gcc-4.4.4.orig/gcc/cp/typeck.c gcc-4.4.4/gcc/cp/typeck.c +--- a/src/gcc/cp/typeck.c 2010-06-30 ++++ b/src/gcc/cp/typeck.c 2010-06-30 +@@ -3503,7 +3503,11 @@ cp_build_binary_op (location_t location, + case FLOOR_MOD_EXPR: + warn_for_div_by_zero (location, op1); + +- if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) ++ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE ++ && TREE_CODE (TREE_TYPE (type1)) == INTEGER_TYPE) ++ common = 1; ++ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { + /* Although it would be tempting to shorten always here, that loses + on some targets, since the modulo instruction is undefined if the +diff -urNp gcc-4.4.4.orig/gcc/c-parser.c gcc-4.4.4/gcc/c-parser.c +--- a/src/gcc/c-parser.c 2009-06-23 ++++ b/src/gcc/c-parser.c 2010-06-30 +@@ -70,6 +70,10 @@ c_parse_init (void) + tree id; + int mask = 0; + ++ /* Make sure RID_MAX hasn't grown past the 8 bits used to hold the keyword in ++ the c_token structure. */ ++ gcc_assert (RID_MAX <= 255); ++ + mask |= D_CXXONLY; + if (!flag_isoc99) + mask |= D_C99; +@@ -130,6 +134,8 @@ typedef enum c_id_kind { + C_ID_TYPENAME, + /* An identifier declared as an Objective-C class name. */ + C_ID_CLASSNAME, ++ /* An address space identifier. */ ++ C_ID_ADDRSPACE, + /* Not an identifier. */ + C_ID_NONE + } c_id_kind; +@@ -226,6 +232,13 @@ c_lex_one_token (c_parser *parser, c_tok + "identifier %qs conflicts with C++ keyword", + IDENTIFIER_POINTER (token->value)); + } ++ else if (rid_code >= RID_FIRST_ADDR_SPACE ++ && rid_code <= RID_LAST_ADDR_SPACE) ++ { ++ token->id_kind = C_ID_ADDRSPACE; ++ token->keyword = rid_code; ++ break; ++ } + else if (c_dialect_objc ()) + { + if (!objc_is_reserved_word (token->value) +@@ -352,6 +365,8 @@ c_token_starts_typename (c_token *token) + { + case C_ID_ID: + return false; ++ case C_ID_ADDRSPACE: ++ return true; + case C_ID_TYPENAME: + return true; + case C_ID_CLASSNAME: +@@ -422,6 +437,8 @@ c_token_starts_declspecs (c_token *token + { + case C_ID_ID: + return false; ++ case C_ID_ADDRSPACE: ++ return true; + case C_ID_TYPENAME: + return true; + case C_ID_CLASSNAME: +@@ -1391,6 +1408,7 @@ c_parser_asm_definition (c_parser *parse + const + restrict + volatile ++ address-space-qualifier + + (restrict is new in C99.) + +@@ -1399,6 +1417,12 @@ c_parser_asm_definition (c_parser *parse + declaration-specifiers: + attributes declaration-specifiers[opt] + ++ type-qualifier: ++ address-space ++ ++ address-space: ++ identifier recognized by the target ++ + storage-class-specifier: + __thread + +@@ -1438,6 +1462,17 @@ c_parser_declspecs (c_parser *parser, st + { + tree value = c_parser_peek_token (parser)->value; + c_id_kind kind = c_parser_peek_token (parser)->id_kind; ++ ++ if (kind == C_ID_ADDRSPACE) ++ { ++ addr_space_t as ++ = c_parser_peek_token (parser)->keyword - RID_FIRST_ADDR_SPACE; ++ declspecs_add_addrspace (specs, as); ++ c_parser_consume_token (parser); ++ attrs_ok = true; ++ continue; ++ } ++ + /* This finishes the specifiers unless a type name is OK, it + is declared as a type name and a type name hasn't yet + been seen. */ +@@ -5549,6 +5584,14 @@ c_parser_postfix_expression_after_paren_ + finish_init (); + maybe_warn_string_init (type, init); + ++ if (type != error_mark_node ++ && !ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (type)) ++ && current_function_decl) ++ { ++ error ("compound literal qualified by address-space qualifier"); ++ type = error_mark_node; ++ } ++ + if (!flag_isoc99) + pedwarn (start_loc, OPT_pedantic, "ISO C90 forbids compound literals"); + expr.value = build_compound_literal (type, init.value); +diff -urNp gcc-4.4.4.orig/gcc/c-pretty-print.c gcc-4.4.4/gcc/c-pretty-print.c +--- a/src/gcc/c-pretty-print.c 2009-01-09 ++++ b/src/gcc/c-pretty-print.c 2010-06-30 +@@ -220,7 +220,11 @@ pp_c_space_for_pointer_operator (c_prett + const + restrict -- C99 + __restrict__ -- GNU C +- volatile */ ++ address-space-qualifier -- GNU C ++ volatile ++ ++ address-space-qualifier: ++ identifier -- GNU C */ + + void + pp_c_type_qualifier_list (c_pretty_printer *pp, tree t) +@@ -240,6 +244,12 @@ pp_c_type_qualifier_list (c_pretty_print + pp_c_cv_qualifier (pp, "volatile"); + if (qualifiers & TYPE_QUAL_RESTRICT) + pp_c_cv_qualifier (pp, flag_isoc99 ? "restrict" : "__restrict__"); ++ ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (t))) ++ { ++ const char *as = c_addr_space_name (TYPE_ADDR_SPACE (t)); ++ pp_c_identifier (pp, as); ++ } + } + + /* pointer: +diff -urNp gcc-4.4.4.orig/gcc/cse.c gcc-4.4.4/gcc/cse.c +--- a/src/gcc/cse.c 2010-06-30 ++++ b/src/gcc/cse.c 2010-06-30 +@@ -2435,6 +2435,10 @@ exp_equiv_p (const_rtx x, const_rtx y, i + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + switch (code) + { + case PC: +diff -urNp gcc-4.4.4.orig/gcc/cselib.c gcc-4.4.4/gcc/cselib.c +--- a/src/gcc/cselib.c 2009-04-27 ++++ b/src/gcc/cselib.c 2010-06-30 +@@ -1689,7 +1689,13 @@ cselib_record_sets (rtx insn) + src = gen_rtx_IF_THEN_ELSE (GET_MODE (dest), cond, src, dest); + sets[i].src_elt = cselib_lookup (src, GET_MODE (dest), 1); + if (MEM_P (dest)) +- sets[i].dest_addr_elt = cselib_lookup (XEXP (dest, 0), Pmode, 1); ++ { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (dest)); ++ ++ sets[i].dest_addr_elt = cselib_lookup (XEXP (dest, 0), ++ address_mode, 1); ++ } + else + sets[i].dest_addr_elt = 0; + } +diff -urNp gcc-4.4.4.orig/gcc/c-tree.h gcc-4.4.4/gcc/c-tree.h +--- a/src/gcc/c-tree.h 2010-06-30 ++++ b/src/gcc/c-tree.h 2010-06-30 +@@ -287,6 +287,8 @@ struct c_declspecs { + BOOL_BITFIELD restrict_p : 1; + /* Whether "_Sat" was specified. */ + BOOL_BITFIELD saturating_p : 1; ++ /* The address space that the declaration belongs to. */ ++ addr_space_t address_space; + }; + + /* The various kinds of declarators in C. */ +@@ -517,6 +519,8 @@ extern struct c_declspecs *declspecs_add + struct c_typespec); + extern struct c_declspecs *declspecs_add_scspec (struct c_declspecs *, tree); + extern struct c_declspecs *declspecs_add_attrs (struct c_declspecs *, tree); ++extern struct c_declspecs *declspecs_add_addrspace (struct c_declspecs *, ++ addr_space_t); + extern struct c_declspecs *finish_declspecs (struct c_declspecs *); + + /* in c-objc-common.c */ +diff -urNp gcc-4.4.4.orig/gcc/c-typeck.c gcc-4.4.4/gcc/c-typeck.c +--- a/src/gcc/c-typeck.c 2010-06-30 ++++ b/src/gcc/c-typeck.c 2010-06-30 +@@ -242,14 +242,55 @@ c_type_promotes_to (tree type) + return type; + } + ++/* Return true if between two named address spaces, whether there is a superset ++ named address space that encompasses both address spaces. If there is a ++ superset, return which address space is the superset. */ ++ ++static bool ++addr_space_superset (addr_space_t as1, addr_space_t as2, addr_space_t *common) ++{ ++ if (as1 == as2) ++ { ++ *common = as1; ++ return true; ++ } ++ else if (targetm.addr_space.subset_p (as1, as2)) ++ { ++ *common = as2; ++ return true; ++ } ++ else if (targetm.addr_space.subset_p (as2, as1)) ++ { ++ *common = as1; ++ return true; ++ } ++ else ++ return false; ++} ++ + /* Return a variant of TYPE which has all the type qualifiers of LIKE + as well as those of TYPE. */ + + static tree + qualify_type (tree type, tree like) + { ++ addr_space_t as_type = TYPE_ADDR_SPACE (type); ++ addr_space_t as_like = TYPE_ADDR_SPACE (like); ++ addr_space_t as_common; ++ ++ /* If the two named address spaces are different, determine the common ++ superset address space. If there isn't one, raise an error. */ ++ if (!addr_space_superset (as_type, as_like, &as_common)) ++ { ++ as_common = as_type; ++ error ("%qT and %qT are in disjoint named address spaces", ++ type, like); ++ } ++ + return c_build_qualified_type (type, +- TYPE_QUALS (type) | TYPE_QUALS (like)); ++ TYPE_QUALS_NO_ADDR_SPACE (type) ++ | TYPE_QUALS_NO_ADDR_SPACE (like) ++ | ENCODE_QUAL_ADDR_SPACE (as_common)); + } + + /* Return true iff the given tree T is a variable length array. */ +@@ -329,7 +370,8 @@ composite_type (tree t1, tree t2) + bool t1_complete, t2_complete; + + /* We should not have any type quals on arrays at all. */ +- gcc_assert (!TYPE_QUALS (t1) && !TYPE_QUALS (t2)); ++ gcc_assert (!TYPE_QUALS_NO_ADDR_SPACE (t1) ++ && !TYPE_QUALS_NO_ADDR_SPACE (t2)); + + t1_complete = COMPLETE_TYPE_P (t1); + t2_complete = COMPLETE_TYPE_P (t2); +@@ -543,6 +585,8 @@ common_pointer_type (tree t1, tree t2) + tree pointed_to_2, mv2; + tree target; + unsigned target_quals; ++ addr_space_t as1, as2, as_common; ++ int quals1, quals2; + + /* Save time if the two types are the same. */ + +@@ -574,10 +618,24 @@ common_pointer_type (tree t1, tree t2) + /* For function types do not merge const qualifiers, but drop them + if used inconsistently. The middle-end uses these to mark const + and noreturn functions. */ ++ quals1 = TYPE_QUALS_NO_ADDR_SPACE (pointed_to_1); ++ quals2 = TYPE_QUALS_NO_ADDR_SPACE (pointed_to_2); ++ + if (TREE_CODE (pointed_to_1) == FUNCTION_TYPE) +- target_quals = TYPE_QUALS (pointed_to_1) & TYPE_QUALS (pointed_to_2); ++ target_quals = (quals1 & quals2); + else +- target_quals = TYPE_QUALS (pointed_to_1) | TYPE_QUALS (pointed_to_2); ++ target_quals = (quals1 | quals2); ++ ++ /* If the two named address spaces are different, determine the common ++ superset address space. This is guaranteed to exist due to the ++ assumption that comp_target_type returned non-zero. */ ++ as1 = TYPE_ADDR_SPACE (pointed_to_1); ++ as2 = TYPE_ADDR_SPACE (pointed_to_2); ++ if (!addr_space_superset (as1, as2, &as_common)) ++ gcc_unreachable (); ++ ++ target_quals |= ENCODE_QUAL_ADDR_SPACE (as_common); ++ + t1 = build_pointer_type (c_build_qualified_type (target, target_quals)); + return build_type_attribute_variant (t1, attributes); + } +@@ -1032,14 +1090,24 @@ comptypes_internal (const_tree type1, co + return attrval == 2 && val == 1 ? 2 : val; + } + +-/* Return 1 if TTL and TTR are pointers to types that are equivalent, +- ignoring their qualifiers. */ ++/* Return 1 if TTL and TTR are pointers to types that are equivalent, ignoring ++ their qualifiers, except for named address spaces. If the pointers point to ++ different named addresses, then we must determine if one address space is a ++ subset of the other. */ + + static int + comp_target_types (tree ttl, tree ttr) + { + int val; +- tree mvl, mvr; ++ tree mvl = TREE_TYPE (ttl); ++ tree mvr = TREE_TYPE (ttr); ++ addr_space_t asl = TYPE_ADDR_SPACE (mvl); ++ addr_space_t asr = TYPE_ADDR_SPACE (mvr); ++ addr_space_t as_common; ++ ++ /* Fail if pointers point to incompatible address spaces. */ ++ if (!addr_space_superset (asl, asr, &as_common)) ++ return 0; + + /* Do not lose qualifiers on element types of array types that are + pointer targets by taking their TYPE_MAIN_VARIANT. */ +@@ -2845,11 +2913,43 @@ static tree + pointer_diff (tree op0, tree op1) + { + tree restype = ptrdiff_type_node; ++ tree result, inttype; + ++ addr_space_t as0 = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (op0))); ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (op1))); + tree target_type = TREE_TYPE (TREE_TYPE (op0)); + tree con0, con1, lit0, lit1; + tree orig_op1 = op1; + ++ /* If the operands point into different address spaces, we need to ++ explicitly convert them to pointers into the common address space ++ before we can subtract the numerical address values. */ ++ if (as0 != as1) ++ { ++ addr_space_t as_common; ++ tree common_type; ++ ++ /* Determine the common superset address space. This is guaranteed ++ to exist because the caller verified that comp_target_types ++ returned non-zero. */ ++ if (!addr_space_superset (as0, as1, &as_common)) ++ gcc_unreachable (); ++ ++ common_type = common_pointer_type (TREE_TYPE (op0), TREE_TYPE (op1)); ++ op0 = convert (common_type, op0); ++ op1 = convert (common_type, op1); ++ } ++ ++ /* Determine integer type to perform computations in. This will usually ++ be the same as the result type (ptrdiff_t), but may need to be a wider ++ type if pointers for the address space are wider than ptrdiff_t. */ ++ if (TYPE_PRECISION (restype) < TYPE_PRECISION (TREE_TYPE (op0))) ++ inttype = lang_hooks.types.type_for_size ++ (TYPE_PRECISION (TREE_TYPE (op0)), 0); ++ else ++ inttype = restype; ++ ++ + if (TREE_CODE (target_type) == VOID_TYPE) + pedwarn (input_location, pedantic ? OPT_pedantic : OPT_Wpointer_arith, + "pointer of type % used in subtraction"); +@@ -2907,8 +3007,8 @@ pointer_diff (tree op0, tree op1) + in case restype is a short type. */ + + op0 = build_binary_op (input_location, +- MINUS_EXPR, convert (restype, op0), +- convert (restype, op1), 0); ++ MINUS_EXPR, convert (inttype, op0), ++ convert (inttype, op1), 0); + /* This generates an error if op1 is pointer to incomplete type. */ + if (!COMPLETE_OR_VOID_TYPE_P (TREE_TYPE (TREE_TYPE (orig_op1)))) + error ("arithmetic on pointer to an incomplete type"); +@@ -2917,7 +3017,10 @@ pointer_diff (tree op0, tree op1) + op1 = c_size_in_bytes (target_type); + + /* Divide by the size, in easiest possible way. */ +- return fold_build2 (EXACT_DIV_EXPR, restype, op0, convert (restype, op1)); ++ result = fold_build2 (EXACT_DIV_EXPR, inttype, op0, convert (inttype, op1)); ++ ++ /* Convert to final result type if necessary. */ ++ return convert (restype, result); + } + + /* Construct and perhaps optimize a tree representation +@@ -3532,12 +3635,22 @@ build_conditional_expr (tree ifexp, tree + } + else if (code1 == POINTER_TYPE && code2 == POINTER_TYPE) + { ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (type1)); ++ addr_space_t as2 = TYPE_ADDR_SPACE (TREE_TYPE (type2)); ++ addr_space_t as_common; ++ + if (comp_target_types (type1, type2)) + result_type = common_pointer_type (type1, type2); + else if (null_pointer_constant_p (orig_op1)) +- result_type = qualify_type (type2, type1); ++ result_type = type2; + else if (null_pointer_constant_p (orig_op2)) +- result_type = qualify_type (type1, type2); ++ result_type = type1; ++ else if (!addr_space_superset (as1, as2, &as_common)) ++ { ++ error ("pointers to disjoint address spaces " ++ "used in conditional expression"); ++ return error_mark_node; ++ } + else if (VOID_TYPE_P (TREE_TYPE (type1))) + { + if (TREE_CODE (TREE_TYPE (type2)) == FUNCTION_TYPE) +@@ -3558,10 +3671,13 @@ build_conditional_expr (tree ifexp, tree + } + else + { ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ + if (!objc_ok) + pedwarn (input_location, 0, + "pointer type mismatch in conditional expression"); +- result_type = build_pointer_type (void_type_node); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); + } + } + else if (code1 == POINTER_TYPE && code2 == INTEGER_TYPE) +@@ -3729,7 +3845,9 @@ build_c_cast (tree type, tree expr) + + otype = TREE_TYPE (value); + +- /* Optionally warn about potentially worrisome casts. */ ++ /* Optionally warn about potentially worrisome casts. ++ Named address space qualifiers are handled below, ++ because they result in different warnings. */ + + if (warn_cast_qual + && TREE_CODE (type) == POINTER_TYPE +@@ -3755,9 +3873,11 @@ build_c_cast (tree type, tree expr) + are added, not when they're taken away. */ + if (TREE_CODE (in_otype) == FUNCTION_TYPE + && TREE_CODE (in_type) == FUNCTION_TYPE) +- added |= (TYPE_QUALS (in_type) & ~TYPE_QUALS (in_otype)); ++ added |= (TYPE_QUALS_NO_ADDR_SPACE (in_type) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (in_otype)); + else +- discarded |= (TYPE_QUALS (in_otype) & ~TYPE_QUALS (in_type)); ++ discarded |= (TYPE_QUALS_NO_ADDR_SPACE (in_otype) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (in_type)); + } + while (TREE_CODE (in_type) == POINTER_TYPE + && TREE_CODE (in_otype) == POINTER_TYPE); +@@ -3771,6 +3891,36 @@ build_c_cast (tree type, tree expr) + warning (OPT_Wcast_qual, "cast discards qualifiers from pointer target type"); + } + ++ /* Warn about conversions between pointers to disjoint ++ address spaces. */ ++ if (TREE_CODE (type) == POINTER_TYPE ++ && TREE_CODE (otype) == POINTER_TYPE ++ && !null_pointer_constant_p (value)) ++ { ++ addr_space_t as_to = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ addr_space_t as_from = TYPE_ADDR_SPACE (TREE_TYPE (otype)); ++ addr_space_t as_common; ++ ++ if (!addr_space_superset (as_to, as_from, &as_common)) ++ { ++ if (ADDR_SPACE_GENERIC_P (as_from)) ++ warning (0, "cast to %s address space pointer " ++ "from disjoint generic address space pointer", ++ c_addr_space_name (as_to)); ++ ++ else if (ADDR_SPACE_GENERIC_P (as_to)) ++ warning (0, "cast to generic address space pointer " ++ "from disjoint %s address space pointer", ++ c_addr_space_name (as_from)); ++ ++ else ++ warning (0, "cast to %s address space pointer " ++ "from disjoint %s address space pointer", ++ c_addr_space_name (as_to), ++ c_addr_space_name (as_from)); ++ } ++ } ++ + /* Warn about possible alignment problems. */ + if (STRICT_ALIGNMENT + && TREE_CODE (type) == POINTER_TYPE +@@ -4232,7 +4382,8 @@ convert_for_assignment (tree type, tree + certain things, it is okay to use a const or volatile + function where an ordinary one is wanted, but not + vice-versa. */ +- if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE " + "makes qualified function " +@@ -4246,7 +4397,8 @@ convert_for_assignment (tree type, tree + G_("return makes qualified function " + "pointer from unqualified")); + } +- else if (TYPE_QUALS (ttr) & ~TYPE_QUALS (ttl)) ++ else if (TYPE_QUALS_NO_ADDR_SPACE (ttr) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttl)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE discards " + "qualifiers from pointer target type"), +@@ -4279,6 +4431,8 @@ convert_for_assignment (tree type, tree + tree mvr = ttr; + bool is_opaque_pointer; + int target_cmp = 0; /* Cache comp_target_types () result. */ ++ addr_space_t asl; ++ addr_space_t asr; + + if (TREE_CODE (mvl) != ARRAY_TYPE) + mvl = TYPE_MAIN_VARIANT (mvl); +@@ -4298,6 +4452,36 @@ convert_for_assignment (tree type, tree + warning (OPT_Wc___compat, "request for implicit conversion from " + "%qT to %qT not permitted in C++", rhstype, type); + ++ /* See if the pointers point to incompatible address spaces. */ ++ asl = TYPE_ADDR_SPACE (ttl); ++ asr = TYPE_ADDR_SPACE (ttr); ++ if (!null_pointer_constant_p (rhs) ++ && asr != asl && !targetm.addr_space.subset_p (asr, asl)) ++ { ++ switch (errtype) ++ { ++ case ic_argpass: ++ error ("passing argument %d of %qE from pointer to " ++ "non-enclosed address space", parmnum, rname); ++ break; ++ case ic_assign: ++ error ("assignment from pointer to " ++ "non-enclosed address space"); ++ break; ++ case ic_init: ++ error ("initialization from pointer to " ++ "non-enclosed address space"); ++ break; ++ case ic_return: ++ error ("return from pointer to " ++ "non-enclosed address space"); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return error_mark_node; ++ } ++ + /* Check if the right-hand side has a format attribute but the + left-hand side doesn't. */ + if (warn_missing_format_attribute +@@ -4361,7 +4545,8 @@ convert_for_assignment (tree type, tree + else if (TREE_CODE (ttr) != FUNCTION_TYPE + && TREE_CODE (ttl) != FUNCTION_TYPE) + { +- if (TYPE_QUALS (ttr) & ~TYPE_QUALS (ttl)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttr) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttl)) + { + /* Types differing only by the presence of the 'volatile' + qualifier are acceptable if the 'volatile' has been added +@@ -4401,7 +4586,8 @@ convert_for_assignment (tree type, tree + that say the function will not do certain things, + it is okay to use a const or volatile function + where an ordinary one is wanted, but not vice-versa. */ +- if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE makes " + "qualified function pointer " +@@ -6710,7 +6896,8 @@ process_init_element (struct c_expr valu + || TREE_CODE (constructor_type) == UNION_TYPE) + && constructor_fields == 0) + process_init_element (pop_init_level (1), true); +- else if (TREE_CODE (constructor_type) == ARRAY_TYPE ++ else if ((TREE_CODE (constructor_type) == ARRAY_TYPE ++ || TREE_CODE (constructor_type) == VECTOR_TYPE) + && (constructor_max_index == 0 + || tree_int_cst_lt (constructor_max_index, + constructor_index))) +@@ -6771,7 +6958,7 @@ process_init_element (struct c_expr valu + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype + && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE +- || fieldcode == UNION_TYPE)) ++ || fieldcode == UNION_TYPE || fieldcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6861,7 +7048,7 @@ process_init_element (struct c_expr valu + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype + && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE +- || fieldcode == UNION_TYPE)) ++ || fieldcode == UNION_TYPE || fieldcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6901,7 +7088,7 @@ process_init_element (struct c_expr valu + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype + && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE +- || eltcode == UNION_TYPE)) ++ || eltcode == UNION_TYPE || eltcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6949,8 +7136,12 @@ process_init_element (struct c_expr valu + + /* Now output the actual element. */ + if (value.value) +- output_init_element (value.value, strict_string, +- elttype, constructor_index, 1, implicit); ++ { ++ if (TREE_CODE (value.value) == VECTOR_CST) ++ elttype = TYPE_MAIN_VARIANT (constructor_type); ++ output_init_element (value.value, strict_string, ++ elttype, constructor_index, 1, implicit); ++ } + + constructor_index + = size_binop (PLUS_EXPR, constructor_index, bitsize_one_node); +@@ -8209,7 +8400,11 @@ build_binary_op (location_t location, en + case FLOOR_MOD_EXPR: + warn_for_div_by_zero (location, op1); + +- if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) ++ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE ++ && TREE_CODE (TREE_TYPE (type1)) == INTEGER_TYPE) ++ common = 1; ++ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { + /* Although it would be tempting to shorten always here, that loses + on some targets, since the modulo instruction is undefined if the +@@ -8319,24 +8514,34 @@ build_binary_op (location_t location, en + { + tree tt0 = TREE_TYPE (type0); + tree tt1 = TREE_TYPE (type1); ++ addr_space_t as0 = TYPE_ADDR_SPACE (tt0); ++ addr_space_t as1 = TYPE_ADDR_SPACE (tt1); ++ addr_space_t as_common = ADDR_SPACE_GENERIC; ++ + /* Anything compares with void *. void * compares with anything. + Otherwise, the targets must be compatible + and both must be object or both incomplete. */ + if (comp_target_types (type0, type1)) + result_type = common_pointer_type (type0, type1); ++ else if (null_pointer_constant_p (orig_op0)) ++ result_type = type1; ++ else if (null_pointer_constant_p (orig_op1)) ++ result_type = type0; ++ else if (!addr_space_superset (as0, as1, &as_common)) ++ { ++ error_at (location, "comparison of pointers to " ++ "disjoint address spaces"); ++ return error_mark_node; ++ } + else if (VOID_TYPE_P (tt0)) + { +- /* op0 != orig_op0 detects the case of something +- whose value is 0 but which isn't a valid null ptr const. */ +- if (pedantic && !null_pointer_constant_p (orig_op0) +- && TREE_CODE (tt1) == FUNCTION_TYPE) ++ if (pedantic && TREE_CODE (tt1) == FUNCTION_TYPE) + pedwarn (location, OPT_pedantic, "ISO C forbids " + "comparison of % with function pointer"); + } + else if (VOID_TYPE_P (tt1)) + { +- if (pedantic && !null_pointer_constant_p (orig_op1) +- && TREE_CODE (tt0) == FUNCTION_TYPE) ++ if (pedantic && TREE_CODE (tt0) == FUNCTION_TYPE) + pedwarn (location, OPT_pedantic, "ISO C forbids " + "comparison of % with function pointer"); + } +@@ -8347,7 +8552,11 @@ build_binary_op (location_t location, en + "comparison of distinct pointer types lacks a cast"); + + if (result_type == NULL_TREE) +- result_type = ptr_type_node; ++ { ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); ++ } + } + else if (code0 == POINTER_TYPE && null_pointer_constant_p (orig_op1)) + { +@@ -8391,6 +8600,10 @@ build_binary_op (location_t location, en + short_compare = 1; + else if (code0 == POINTER_TYPE && code1 == POINTER_TYPE) + { ++ addr_space_t as0 = TYPE_ADDR_SPACE (TREE_TYPE (type0)); ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (type1)); ++ addr_space_t as_common; ++ + if (comp_target_types (type0, type1)) + { + result_type = common_pointer_type (type0, type1); +@@ -8402,9 +8615,17 @@ build_binary_op (location_t location, en + pedwarn (location, OPT_pedantic, "ISO C forbids " + "ordered comparisons of pointers to functions"); + } ++ else if (!addr_space_superset (as0, as1, &as_common)) ++ { ++ error_at (location, "comparison of pointers to " ++ "disjoint address spaces"); ++ return error_mark_node; ++ } + else + { +- result_type = ptr_type_node; ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); + pedwarn (location, 0, + "comparison of distinct pointer types lacks a cast"); + } +diff -urNp gcc-4.4.4.orig/gcc/dse.c gcc-4.4.4/gcc/dse.c +--- a/src/gcc/dse.c 2010-02-04 ++++ b/src/gcc/dse.c 2010-06-30 +@@ -826,9 +826,9 @@ replace_inc_dec (rtx *r, void *d) + case POST_INC: + { + rtx r1 = XEXP (x, 0); +- rtx c = gen_int_mode (data->size, Pmode); +- emit_insn_before (gen_rtx_SET (Pmode, r1, +- gen_rtx_PLUS (Pmode, r1, c)), ++ rtx c = gen_int_mode (data->size, GET_MODE (r1)); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, ++ gen_rtx_PLUS (GET_MODE (r1), r1, c)), + data->insn); + return -1; + } +@@ -837,9 +837,9 @@ replace_inc_dec (rtx *r, void *d) + case POST_DEC: + { + rtx r1 = XEXP (x, 0); +- rtx c = gen_int_mode (-data->size, Pmode); +- emit_insn_before (gen_rtx_SET (Pmode, r1, +- gen_rtx_PLUS (Pmode, r1, c)), ++ rtx c = gen_int_mode (-data->size, GET_MODE (r1)); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, ++ gen_rtx_PLUS (GET_MODE (r1), r1, c)), + data->insn); + return -1; + } +@@ -851,7 +851,7 @@ replace_inc_dec (rtx *r, void *d) + insn that contained it. */ + rtx add = XEXP (x, 0); + rtx r1 = XEXP (add, 0); +- emit_insn_before (gen_rtx_SET (Pmode, r1, add), data->insn); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, add), data->insn); + return -1; + } + +@@ -1065,6 +1065,8 @@ canon_address (rtx mem, + HOST_WIDE_INT *offset, + cselib_val **base) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (mem)); + rtx mem_address = XEXP (mem, 0); + rtx expanded_address, address; + int expanded; +@@ -1104,7 +1106,7 @@ canon_address (rtx mem, + + *alias_set_out = 0; + +- cselib_lookup (mem_address, Pmode, 1); ++ cselib_lookup (mem_address, address_mode, 1); + + if (dump_file) + { +@@ -1170,7 +1172,8 @@ canon_address (rtx mem, + address = XEXP (address, 0); + } + +- if (const_or_frame_p (address)) ++ if (ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (mem)) ++ && const_or_frame_p (address)) + { + group_info_t group = get_group_info (address); + +@@ -1183,7 +1186,7 @@ canon_address (rtx mem, + } + } + +- *base = cselib_lookup (address, Pmode, true); ++ *base = cselib_lookup (address, address_mode, true); + *group_id = -1; + + if (*base == NULL) +diff -urNp gcc-4.4.4.orig/gcc/dwarf2out.c gcc-4.4.4/gcc/dwarf2out.c +--- a/src/gcc/dwarf2out.c 2010-06-30 ++++ b/src/gcc/dwarf2out.c 2010-06-30 +@@ -9610,6 +9610,9 @@ modified_type_die (tree type, int is_con + add_AT_unsigned (mod_type_die, DW_AT_byte_size, + simple_type_size_in_bits (type) / BITS_PER_UNIT); + item_type = TREE_TYPE (type); ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (item_type))) ++ add_AT_unsigned (mod_type_die, DW_AT_address_class, ++ TYPE_ADDR_SPACE (item_type)); + } + else if (code == REFERENCE_TYPE) + { +@@ -9617,6 +9620,9 @@ modified_type_die (tree type, int is_con + add_AT_unsigned (mod_type_die, DW_AT_byte_size, + simple_type_size_in_bits (type) / BITS_PER_UNIT); + item_type = TREE_TYPE (type); ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (item_type))) ++ add_AT_unsigned (mod_type_die, DW_AT_address_class, ++ TYPE_ADDR_SPACE (item_type)); + } + else if (is_subrange_type (type)) + { +diff -urNp gcc-4.4.4.orig/gcc/emit-rtl.c gcc-4.4.4/gcc/emit-rtl.c +--- a/src/gcc/emit-rtl.c 2009-07-11 ++++ b/src/gcc/emit-rtl.c 2010-06-30 +@@ -58,6 +58,7 @@ along with GCC; see the file COPYING3. + #include "langhooks.h" + #include "tree-pass.h" + #include "df.h" ++#include "target.h" + + /* Commonly used modes. */ + +@@ -193,7 +194,7 @@ static rtx lookup_const_fixed (rtx); + static hashval_t mem_attrs_htab_hash (const void *); + static int mem_attrs_htab_eq (const void *, const void *); + static mem_attrs *get_mem_attrs (alias_set_type, tree, rtx, rtx, unsigned int, +- enum machine_mode); ++ addr_space_t, enum machine_mode); + static hashval_t reg_attrs_htab_hash (const void *); + static int reg_attrs_htab_eq (const void *, const void *); + static reg_attrs *get_reg_attrs (tree, int); +@@ -293,6 +294,7 @@ mem_attrs_htab_hash (const void *x) + const mem_attrs *const p = (const mem_attrs *) x; + + return (p->alias ^ (p->align * 1000) ++ ^ (p->addrspace * 4000) + ^ ((p->offset ? INTVAL (p->offset) : 0) * 50000) + ^ ((p->size ? INTVAL (p->size) : 0) * 2500000) + ^ (size_t) iterative_hash_expr (p->expr, 0)); +@@ -310,6 +312,7 @@ mem_attrs_htab_eq (const void *x, const + + return (p->alias == q->alias && p->offset == q->offset + && p->size == q->size && p->align == q->align ++ && p->addrspace == q->addrspace + && (p->expr == q->expr + || (p->expr != NULL_TREE && q->expr != NULL_TREE + && operand_equal_p (p->expr, q->expr, 0)))); +@@ -321,7 +324,7 @@ mem_attrs_htab_eq (const void *x, const + + static mem_attrs * + get_mem_attrs (alias_set_type alias, tree expr, rtx offset, rtx size, +- unsigned int align, enum machine_mode mode) ++ unsigned int align, addr_space_t addrspace, enum machine_mode mode) + { + mem_attrs attrs; + void **slot; +@@ -329,7 +332,7 @@ get_mem_attrs (alias_set_type alias, tre + /* If everything is the default, we can just return zero. + This must match what the corresponding MEM_* macros return when the + field is not present. */ +- if (alias == 0 && expr == 0 && offset == 0 ++ if (alias == 0 && expr == 0 && offset == 0 && addrspace == 0 + && (size == 0 + || (mode != BLKmode && GET_MODE_SIZE (mode) == INTVAL (size))) + && (STRICT_ALIGNMENT && mode != BLKmode +@@ -341,6 +344,7 @@ get_mem_attrs (alias_set_type alias, tre + attrs.offset = offset; + attrs.size = size; + attrs.align = align; ++ attrs.addrspace = addrspace; + + slot = htab_find_slot (mem_attrs_htab, &attrs, INSERT); + if (*slot == 0) +@@ -1387,7 +1391,9 @@ operand_subword (rtx op, unsigned int of + + else if (reload_completed) + { +- if (! strict_memory_address_p (word_mode, XEXP (new_rtx, 0))) ++ if (! strict_memory_address_addr_space_p (word_mode, ++ XEXP (new_rtx, 0), ++ MEM_ADDR_SPACE (op))) + return 0; + } + else +@@ -1842,7 +1848,8 @@ set_mem_attributes_minus_bitpos (rtx ref + + /* Now set the attributes we computed above. */ + MEM_ATTRS (ref) +- = get_mem_attrs (alias, expr, offset, size, align, GET_MODE (ref)); ++ = get_mem_attrs (alias, expr, offset, size, align, ++ TYPE_ADDR_SPACE (type), GET_MODE (ref)); + + /* If this is already known to be a scalar or aggregate, we are done. */ + if (MEM_IN_STRUCT_P (ref) || MEM_SCALAR_P (ref)) +@@ -1870,7 +1877,8 @@ set_mem_attrs_from_reg (rtx mem, rtx reg + MEM_ATTRS (mem) + = get_mem_attrs (MEM_ALIAS_SET (mem), REG_EXPR (reg), + GEN_INT (REG_OFFSET (reg)), +- MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem)); ++ MEM_SIZE (mem), MEM_ALIGN (mem), ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the alias set of MEM to SET. */ +@@ -1885,7 +1893,17 @@ set_mem_alias_set (rtx mem, alias_set_ty + + MEM_ATTRS (mem) = get_mem_attrs (set, MEM_EXPR (mem), MEM_OFFSET (mem), + MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); ++} ++ ++/* Set the address space of MEM to ADDRSPACE (target-defined). */ ++ ++void ++set_mem_addr_space (rtx mem, addr_space_t addrspace) ++{ ++ MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), ++ MEM_OFFSET (mem), MEM_SIZE (mem), ++ MEM_ALIGN (mem), addrspace, GET_MODE (mem)); + } + + /* Set the alignment of MEM to ALIGN bits. */ +@@ -1895,7 +1913,7 @@ set_mem_align (rtx mem, unsigned int ali + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + MEM_OFFSET (mem), MEM_SIZE (mem), align, +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the expr for MEM to EXPR. */ +@@ -1905,7 +1923,8 @@ set_mem_expr (rtx mem, tree expr) + { + MEM_ATTRS (mem) + = get_mem_attrs (MEM_ALIAS_SET (mem), expr, MEM_OFFSET (mem), +- MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem)); ++ MEM_SIZE (mem), MEM_ALIGN (mem), ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the offset of MEM to OFFSET. */ +@@ -1915,7 +1934,7 @@ set_mem_offset (rtx mem, rtx offset) + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + offset, MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the size of MEM to SIZE. */ +@@ -1925,7 +1944,7 @@ set_mem_size (rtx mem, rtx size) + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + MEM_OFFSET (mem), size, MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Return a memory reference like MEMREF, but with its mode changed to MODE +@@ -1937,23 +1956,25 @@ set_mem_size (rtx mem, rtx size) + static rtx + change_address_1 (rtx memref, enum machine_mode mode, rtx addr, int validate) + { ++ addr_space_t as; + rtx new_rtx; + + gcc_assert (MEM_P (memref)); ++ as = MEM_ADDR_SPACE (memref); + if (mode == VOIDmode) + mode = GET_MODE (memref); + if (addr == 0) + addr = XEXP (memref, 0); + if (mode == GET_MODE (memref) && addr == XEXP (memref, 0) +- && (!validate || memory_address_p (mode, addr))) ++ && (!validate || memory_address_addr_space_p (mode, addr, as))) + return memref; + + if (validate) + { + if (reload_in_progress || reload_completed) +- gcc_assert (memory_address_p (mode, addr)); ++ gcc_assert (memory_address_addr_space_p (mode, addr, as)); + else +- addr = memory_address (mode, addr); ++ addr = memory_address_addr_space (mode, addr, as); + } + + if (rtx_equal_p (addr, XEXP (memref, 0)) && mode == GET_MODE (memref)) +@@ -1992,7 +2013,8 @@ change_address (rtx memref, enum machine + } + + MEM_ATTRS (new_rtx) +- = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0, size, align, mmode); ++ = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0, size, align, ++ MEM_ADDR_SPACE (memref), mmode); + + return new_rtx; + } +@@ -2012,11 +2034,13 @@ adjust_address_1 (rtx memref, enum machi + rtx memoffset = MEM_OFFSET (memref); + rtx size = 0; + unsigned int memalign = MEM_ALIGN (memref); ++ addr_space_t as = MEM_ADDR_SPACE (memref); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + int pbits; + + /* If there are no changes, just return the original memory reference. */ + if (mode == GET_MODE (memref) && !offset +- && (!validate || memory_address_p (mode, addr))) ++ && (!validate || memory_address_addr_space_p (mode, addr, as))) + return memref; + + /* ??? Prefer to create garbage instead of creating shared rtl. +@@ -2026,7 +2050,7 @@ adjust_address_1 (rtx memref, enum machi + + /* Convert a possibly large offset to a signed value within the + range of the target address space. */ +- pbits = GET_MODE_BITSIZE (Pmode); ++ pbits = GET_MODE_BITSIZE (address_mode); + if (HOST_BITS_PER_WIDE_INT > pbits) + { + int shift = HOST_BITS_PER_WIDE_INT - pbits; +@@ -2042,7 +2066,7 @@ adjust_address_1 (rtx memref, enum machi + && offset >= 0 + && (unsigned HOST_WIDE_INT) offset + < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT) +- addr = gen_rtx_LO_SUM (Pmode, XEXP (addr, 0), ++ addr = gen_rtx_LO_SUM (address_mode, XEXP (addr, 0), + plus_constant (XEXP (addr, 1), offset)); + else + addr = plus_constant (addr, offset); +@@ -2075,7 +2099,8 @@ adjust_address_1 (rtx memref, enum machi + size = plus_constant (MEM_SIZE (memref), -offset); + + MEM_ATTRS (new_rtx) = get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), +- memoffset, size, memalign, GET_MODE (new_rtx)); ++ memoffset, size, memalign, as, ++ GET_MODE (new_rtx)); + + /* At some point, we should validate that this offset is within the object, + if all the appropriate values are known. */ +@@ -2103,8 +2128,10 @@ rtx + offset_address (rtx memref, rtx offset, unsigned HOST_WIDE_INT pow2) + { + rtx new_rtx, addr = XEXP (memref, 0); ++ addr_space_t as = MEM_ADDR_SPACE (memref); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + +- new_rtx = simplify_gen_binary (PLUS, Pmode, addr, offset); ++ new_rtx = simplify_gen_binary (PLUS, address_mode, addr, offset); + + /* At this point we don't know _why_ the address is invalid. It + could have secondary memory references, multiplies or anything. +@@ -2113,12 +2140,12 @@ offset_address (rtx memref, rtx offset, + being able to recognize the magic around pic_offset_table_rtx. + This stuff is fragile, and is yet another example of why it is + bad to expose PIC machinery too early. */ +- if (! memory_address_p (GET_MODE (memref), new_rtx) ++ if (! memory_address_addr_space_p (GET_MODE (memref), new_rtx, as) + && GET_CODE (addr) == PLUS + && XEXP (addr, 0) == pic_offset_table_rtx) + { + addr = force_reg (GET_MODE (addr), addr); +- new_rtx = simplify_gen_binary (PLUS, Pmode, addr, offset); ++ new_rtx = simplify_gen_binary (PLUS, address_mode, addr, offset); + } + + update_temp_slot_address (XEXP (memref, 0), new_rtx); +@@ -2133,7 +2160,7 @@ offset_address (rtx memref, rtx offset, + MEM_ATTRS (new_rtx) + = get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), 0, 0, + MIN (MEM_ALIGN (memref), pow2 * BITS_PER_UNIT), +- GET_MODE (new_rtx)); ++ as, GET_MODE (new_rtx)); + return new_rtx; + } + +@@ -2237,7 +2264,8 @@ widen_memory_access (rtx memref, enum ma + /* ??? Maybe use get_alias_set on any remaining expression. */ + + MEM_ATTRS (new_rtx) = get_mem_attrs (0, expr, memoffset, GEN_INT (size), +- MEM_ALIGN (new_rtx), mode); ++ MEM_ALIGN (new_rtx), ++ MEM_ADDR_SPACE (new_rtx), mode); + + return new_rtx; + } +@@ -2264,7 +2292,7 @@ get_spill_slot_decl (bool force_build_p) + rd = gen_rtx_MEM (BLKmode, frame_pointer_rtx); + MEM_NOTRAP_P (rd) = 1; + MEM_ATTRS (rd) = get_mem_attrs (new_alias_set (), d, const0_rtx, +- NULL_RTX, 0, BLKmode); ++ NULL_RTX, 0, ADDR_SPACE_GENERIC, BLKmode); + SET_DECL_RTL (d, rd); + + return d; +@@ -2297,7 +2325,7 @@ set_mem_attrs_for_spill (rtx mem) + + MEM_ATTRS (mem) = get_mem_attrs (alias, expr, offset, + MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ ADDR_SPACE_GENERIC, GET_MODE (mem)); + MEM_NOTRAP_P (mem) = 1; + } + +diff -urNp gcc-4.4.4.orig/gcc/emit-rtl.h gcc-4.4.4/gcc/emit-rtl.h +--- a/src/gcc/emit-rtl.h 2009-02-20 ++++ b/src/gcc/emit-rtl.h 2010-06-30 +@@ -26,6 +26,9 @@ extern void set_mem_alias_set (rtx, alia + /* Set the alignment of MEM to ALIGN bits. */ + extern void set_mem_align (rtx, unsigned int); + ++/* Set the address space of MEM to ADDRSPACE. */ ++extern void set_mem_addr_space (rtx, addr_space_t); ++ + /* Set the expr for MEM to EXPR. */ + extern void set_mem_expr (rtx, tree); + +diff -urNp gcc-4.4.4.orig/gcc/explow.c gcc-4.4.4/gcc/explow.c +--- a/src/gcc/explow.c 2010-06-30 ++++ b/src/gcc/explow.c 2010-06-30 +@@ -306,27 +306,27 @@ break_out_memory_refs (rtx x) + rtx op1 = break_out_memory_refs (XEXP (x, 1)); + + if (op0 != XEXP (x, 0) || op1 != XEXP (x, 1)) +- x = simplify_gen_binary (GET_CODE (x), Pmode, op0, op1); ++ x = simplify_gen_binary (GET_CODE (x), GET_MODE (x), op0, op1); + } + + return x; + } + +-/* Given X, a memory address in ptr_mode, convert it to an address +- in Pmode, or vice versa (TO_MODE says which way). We take advantage of +- the fact that pointers are not allowed to overflow by commuting arithmetic +- operations over conversions so that address arithmetic insns can be +- used. */ ++/* Given X, a memory address in address space AS' pointer mode, convert it to ++ an address in the address space's address mode, or vice versa (TO_MODE says ++ which way). We take advantage of the fact that pointers are not allowed to ++ overflow by commuting arithmetic operations over conversions so that address ++ arithmetic insns can be used. */ + + rtx +-convert_memory_address (enum machine_mode to_mode ATTRIBUTE_UNUSED, +- rtx x) ++convert_memory_address_addr_space (enum machine_mode to_mode ATTRIBUTE_UNUSED, ++ rtx x, addr_space_t as ATTRIBUTE_UNUSED) + { + #ifndef POINTERS_EXTEND_UNSIGNED + gcc_assert (GET_MODE (x) == to_mode || GET_MODE (x) == VOIDmode); + return x; + #else /* defined(POINTERS_EXTEND_UNSIGNED) */ +- enum machine_mode from_mode; ++ enum machine_mode pointer_mode, address_mode, from_mode; + rtx temp; + enum rtx_code code; + +@@ -334,7 +334,9 @@ convert_memory_address (enum machine_mod + if (GET_MODE (x) == to_mode) + return x; + +- from_mode = to_mode == ptr_mode ? Pmode : ptr_mode; ++ pointer_mode = targetm.addr_space.pointer_mode (as); ++ address_mode = targetm.addr_space.address_mode (as); ++ from_mode = to_mode == pointer_mode ? address_mode : pointer_mode; + + /* Here we handle some special cases. If none of them apply, fall through + to the default case. */ +@@ -375,7 +377,8 @@ convert_memory_address (enum machine_mod + + case CONST: + return gen_rtx_CONST (to_mode, +- convert_memory_address (to_mode, XEXP (x, 0))); ++ convert_memory_address_addr_space ++ (to_mode, XEXP (x, 0), as)); + break; + + case PLUS: +@@ -389,10 +392,12 @@ convert_memory_address (enum machine_mod + if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode) + || (GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 1)) == CONST_INT +- && (XEXP (x, 1) == convert_memory_address (to_mode, XEXP (x, 1)) ++ && (XEXP (x, 1) == convert_memory_address_addr_space ++ (to_mode, XEXP (x, 1), as) + || POINTERS_EXTEND_UNSIGNED < 0))) + return gen_rtx_fmt_ee (GET_CODE (x), to_mode, +- convert_memory_address (to_mode, XEXP (x, 0)), ++ convert_memory_address_addr_space ++ (to_mode, XEXP (x, 0), as), + XEXP (x, 1)); + break; + +@@ -405,21 +410,22 @@ convert_memory_address (enum machine_mod + #endif /* defined(POINTERS_EXTEND_UNSIGNED) */ + } + +-/* Return something equivalent to X but valid as a memory address +- for something of mode MODE. When X is not itself valid, this +- works by copying X or subexpressions of it into registers. */ ++/* Return something equivalent to X but valid as a memory address for something ++ of mode MODE in the named address space AS. When X is not itself valid, ++ this works by copying X or subexpressions of it into registers. */ + + rtx +-memory_address (enum machine_mode mode, rtx x) ++memory_address_addr_space (enum machine_mode mode, rtx x, addr_space_t as) + { + rtx oldx = x; ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + +- x = convert_memory_address (Pmode, x); ++ x = convert_memory_address_addr_space (address_mode, x, as); + + /* By passing constant addresses through registers + we get a chance to cse them. */ + if (! cse_not_expected && CONSTANT_P (x) && CONSTANT_ADDRESS_P (x)) +- x = force_reg (Pmode, x); ++ x = force_reg (address_mode, x); + + /* We get better cse by rejecting indirect addressing at this stage. + Let the combiner create indirect addresses where appropriate. +@@ -431,12 +437,12 @@ memory_address (enum machine_mode mode, + x = break_out_memory_refs (x); + + /* At this point, any valid address is accepted. */ +- if (memory_address_p (mode, x)) ++ if (memory_address_addr_space_p (mode, x, as)) + goto done; + + /* If it was valid before but breaking out memory refs invalidated it, + use it the old way. */ +- if (memory_address_p (mode, oldx)) ++ if (memory_address_addr_space_p (mode, oldx, as)) + { + x = oldx; + goto done; +@@ -446,7 +452,12 @@ memory_address (enum machine_mode mode, + in certain cases. This is not necessary since the code + below can handle all possible cases, but machine-dependent + transformations can make better code. */ +- LEGITIMIZE_ADDRESS (x, oldx, mode, done); ++ { ++ rtx orig_x = x; ++ x = targetm.addr_space.legitimize_address (x, oldx, mode, as); ++ if (orig_x != x && memory_address_addr_space_p (mode, x, as)) ++ goto done; ++ } + + /* PLUS and MULT can appear in special ways + as the result of attempts to make an address usable for indexing. +@@ -462,12 +473,12 @@ memory_address (enum machine_mode mode, + rtx constant_term = const0_rtx; + rtx y = eliminate_constant_term (x, &constant_term); + if (constant_term == const0_rtx +- || ! memory_address_p (mode, y)) ++ || ! memory_address_addr_space_p (mode, y, as)) + x = force_operand (x, NULL_RTX); + else + { + y = gen_rtx_PLUS (GET_MODE (x), copy_to_reg (y), constant_term); +- if (! memory_address_p (mode, y)) ++ if (! memory_address_addr_space_p (mode, y, as)) + x = force_operand (x, NULL_RTX); + else + x = y; +@@ -485,12 +496,12 @@ memory_address (enum machine_mode mode, + /* Last resort: copy the value to a register, since + the register is a valid address. */ + else +- x = force_reg (Pmode, x); ++ x = force_reg (address_mode, x); + } + + done: + +- gcc_assert (memory_address_p (mode, x)); ++ gcc_assert (memory_address_addr_space_p (mode, x, as)); + /* If we didn't change the address, we are done. Otherwise, mark + a reg as a pointer if we have REG or REG + CONST_INT. */ + if (oldx == x) +@@ -518,7 +529,8 @@ validize_mem (rtx ref) + if (!MEM_P (ref)) + return ref; + ref = use_anchored_address (ref); +- if (memory_address_p (GET_MODE (ref), XEXP (ref, 0))) ++ if (memory_address_addr_space_p (GET_MODE (ref), XEXP (ref, 0), ++ MEM_ADDR_SPACE (ref))) + return ref; + + /* Don't alter REF itself, since that is probably a stack slot. */ +@@ -789,7 +801,8 @@ promote_mode (const_tree type, enum mach + #ifdef POINTERS_EXTEND_UNSIGNED + case REFERENCE_TYPE: + case POINTER_TYPE: +- mode = Pmode; ++ mode = targetm.addr_space.address_mode ++ (TYPE_ADDR_SPACE (TREE_TYPE (type))); + unsignedp = POINTERS_EXTEND_UNSIGNED; + break; + #endif +diff -urNp gcc-4.4.4.orig/gcc/expmed.c gcc-4.4.4/gcc/expmed.c +--- a/src/gcc/expmed.c 2010-06-30 ++++ b/src/gcc/expmed.c 2010-06-30 +@@ -5081,10 +5081,11 @@ make_tree (tree type, rtx x) + default: + t = build_decl (VAR_DECL, NULL_TREE, type); + +- /* If TYPE is a POINTER_TYPE, X might be Pmode with TYPE_MODE being +- ptr_mode. So convert. */ ++ /* If TYPE is a POINTER_TYPE, we might need to convert X from ++ address mode to pointer mode. */ + if (POINTER_TYPE_P (type)) +- x = convert_memory_address (TYPE_MODE (type), x); ++ x = convert_memory_address_addr_space ++ (TYPE_MODE (type), x, TYPE_ADDR_SPACE (TREE_TYPE (type))); + + /* Note that we do *not* use SET_DECL_RTL here, because we do not + want set_decl_rtl to go adjusting REG_ATTRS for this temporary. */ +diff -urNp gcc-4.4.4.orig/gcc/expr.c gcc-4.4.4/gcc/expr.c +--- a/src/gcc/expr.c 2010-06-30 ++++ b/src/gcc/expr.c 2010-06-30 +@@ -895,6 +895,8 @@ move_by_pieces (rtx to, rtx from, unsign + unsigned int align, int endp) + { + struct move_by_pieces data; ++ enum machine_mode to_addr_mode, from_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (from)); + rtx to_addr, from_addr = XEXP (from, 0); + unsigned int max_size = MOVE_MAX_PIECES + 1; + enum machine_mode mode = VOIDmode, tmode; +@@ -906,6 +908,7 @@ move_by_pieces (rtx to, rtx from, unsign + data.from_addr = from_addr; + if (to) + { ++ to_addr_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to)); + to_addr = XEXP (to, 0); + data.to = to; + data.autinc_to +@@ -916,6 +919,7 @@ move_by_pieces (rtx to, rtx from, unsign + } + else + { ++ to_addr_mode = VOIDmode; + to_addr = NULL_RTX; + data.to = NULL_RTX; + data.autinc_to = 1; +@@ -951,32 +955,34 @@ move_by_pieces (rtx to, rtx from, unsign + + if (USE_LOAD_PRE_DECREMENT (mode) && data.reverse && ! data.autinc_from) + { +- data.from_addr = copy_addr_to_reg (plus_constant (from_addr, len)); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, ++ plus_constant (from_addr, len)); + data.autinc_from = 1; + data.explicit_inc_from = -1; + } + if (USE_LOAD_POST_INCREMENT (mode) && ! data.autinc_from) + { +- data.from_addr = copy_addr_to_reg (from_addr); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, from_addr); + data.autinc_from = 1; + data.explicit_inc_from = 1; + } + if (!data.autinc_from && CONSTANT_P (from_addr)) +- data.from_addr = copy_addr_to_reg (from_addr); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, from_addr); + if (USE_STORE_PRE_DECREMENT (mode) && data.reverse && ! data.autinc_to) + { +- data.to_addr = copy_addr_to_reg (plus_constant (to_addr, len)); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (to_addr, len)); + data.autinc_to = 1; + data.explicit_inc_to = -1; + } + if (USE_STORE_POST_INCREMENT (mode) && ! data.reverse && ! data.autinc_to) + { +- data.to_addr = copy_addr_to_reg (to_addr); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + data.autinc_to = 1; + data.explicit_inc_to = 1; + } + if (!data.autinc_to && CONSTANT_P (to_addr)) +- data.to_addr = copy_addr_to_reg (to_addr); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + } + + tmode = mode_for_size (MOVE_MAX_PIECES * BITS_PER_UNIT, MODE_INT, 1); +@@ -1031,7 +1037,8 @@ move_by_pieces (rtx to, rtx from, unsign + if (HAVE_POST_INCREMENT && data.explicit_inc_to > 0) + emit_insn (gen_add2_insn (data.to_addr, constm1_rtx)); + else +- data.to_addr = copy_addr_to_reg (plus_constant (data.to_addr, ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (data.to_addr, + -1)); + } + to1 = adjust_automodify_address (data.to, QImode, data.to_addr, +@@ -1233,7 +1240,9 @@ emit_block_move_hints (rtx x, rtx y, rtx + else if (emit_block_move_via_movmem (x, y, size, align, + expected_align, expected_size)) + ; +- else if (may_use_call) ++ else if (may_use_call ++ && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (x)) ++ && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (y))) + retval = emit_block_move_via_libcall (x, y, size, + method == BLOCK_OP_TAILCALL); + else +@@ -1484,6 +1493,10 @@ emit_block_move_via_loop (rtx x, rtx y, + unsigned int align ATTRIBUTE_UNUSED) + { + rtx cmp_label, top_label, iter, x_addr, y_addr, tmp; ++ enum machine_mode x_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ enum machine_mode y_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (y)); + enum machine_mode iter_mode; + + iter_mode = GET_MODE (size); +@@ -1503,9 +1516,13 @@ emit_block_move_via_loop (rtx x, rtx y, + emit_jump (cmp_label); + emit_label (top_label); + +- tmp = convert_modes (Pmode, iter_mode, iter, true); +- x_addr = gen_rtx_PLUS (Pmode, x_addr, tmp); +- y_addr = gen_rtx_PLUS (Pmode, y_addr, tmp); ++ tmp = convert_modes (x_addr_mode, iter_mode, iter, true); ++ x_addr = gen_rtx_PLUS (x_addr_mode, x_addr, tmp); ++ ++ if (x_addr_mode != y_addr_mode) ++ tmp = convert_modes (y_addr_mode, iter_mode, iter, true); ++ y_addr = gen_rtx_PLUS (y_addr_mode, y_addr, tmp); ++ + x = change_address (x, QImode, x_addr); + y = change_address (y, QImode, y_addr); + +@@ -2380,6 +2397,8 @@ store_by_pieces (rtx to, unsigned HOST_W + rtx (*constfun) (void *, HOST_WIDE_INT, enum machine_mode), + void *constfundata, unsigned int align, bool memsetp, int endp) + { ++ enum machine_mode to_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to)); + struct store_by_pieces data; + + if (len == 0) +@@ -2408,7 +2427,8 @@ store_by_pieces (rtx to, unsigned HOST_W + if (HAVE_POST_INCREMENT && data.explicit_inc_to > 0) + emit_insn (gen_add2_insn (data.to_addr, constm1_rtx)); + else +- data.to_addr = copy_addr_to_reg (plus_constant (data.to_addr, ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (data.to_addr, + -1)); + } + to1 = adjust_automodify_address (data.to, QImode, data.to_addr, +@@ -2463,6 +2483,8 @@ static void + store_by_pieces_1 (struct store_by_pieces *data ATTRIBUTE_UNUSED, + unsigned int align ATTRIBUTE_UNUSED) + { ++ enum machine_mode to_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (data->to)); + rtx to_addr = XEXP (data->to, 0); + unsigned int max_size = STORE_MAX_PIECES + 1; + enum machine_mode mode = VOIDmode, tmode; +@@ -2494,7 +2516,8 @@ store_by_pieces_1 (struct store_by_piece + + if (USE_STORE_PRE_DECREMENT (mode) && data->reverse && ! data->autinc_to) + { +- data->to_addr = copy_addr_to_reg (plus_constant (to_addr, data->len)); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (to_addr, data->len)); + data->autinc_to = 1; + data->explicit_inc_to = -1; + } +@@ -2502,13 +2525,13 @@ store_by_pieces_1 (struct store_by_piece + if (USE_STORE_POST_INCREMENT (mode) && ! data->reverse + && ! data->autinc_to) + { +- data->to_addr = copy_addr_to_reg (to_addr); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + data->autinc_to = 1; + data->explicit_inc_to = 1; + } + + if ( !data->autinc_to && CONSTANT_P (to_addr)) +- data->to_addr = copy_addr_to_reg (to_addr); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + } + + tmode = mode_for_size (STORE_MAX_PIECES * BITS_PER_UNIT, MODE_INT, 1); +@@ -2639,9 +2662,11 @@ clear_storage_hints (rtx object, rtx siz + else if (set_storage_via_setmem (object, size, const0_rtx, align, + expected_align, expected_size)) + ; +- else ++ else if (ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (object))) + return set_storage_via_libcall (object, size, const0_rtx, + method == BLOCK_OP_TAILCALL); ++ else ++ gcc_unreachable (); + + return NULL; + } +@@ -3430,12 +3455,14 @@ emit_move_insn (rtx x, rtx y) + /* If X or Y are memory references, verify that their addresses are valid + for the machine. */ + if (MEM_P (x) +- && (! memory_address_p (GET_MODE (x), XEXP (x, 0)) ++ && (! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x)) + && ! push_operand (x, GET_MODE (x)))) + x = validize_mem (x); + + if (MEM_P (y) +- && ! memory_address_p (GET_MODE (y), XEXP (y, 0))) ++ && ! memory_address_addr_space_p (GET_MODE (y), XEXP (y, 0), ++ MEM_ADDR_SPACE (y))) + y = validize_mem (y); + + gcc_assert (mode != BLKmode); +@@ -4206,6 +4233,7 @@ expand_assignment (tree to, tree from, b + + if (offset != 0) + { ++ enum machine_mode address_mode; + rtx offset_rtx; + + if (!MEM_P (to_rtx)) +@@ -4218,13 +4246,10 @@ expand_assignment (tree to, tree from, b + } + + offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, EXPAND_SUM); +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to_rtx)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + /* A constant address in TO_RTX can have VOIDmode, we must not try + to call force_reg for that case. Avoid that case. */ +@@ -4327,7 +4352,10 @@ expand_assignment (tree to, tree from, b + else + { + if (POINTER_TYPE_P (TREE_TYPE (to))) +- value = convert_memory_address (GET_MODE (to_rtx), value); ++ value = convert_memory_address_addr_space ++ (GET_MODE (to_rtx), value, ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (to)))); ++ + emit_move_insn (to_rtx, value); + } + preserve_temp_slots (to_rtx); +@@ -4367,6 +4395,8 @@ expand_assignment (tree to, tree from, b + the place the value is being stored, use a safe function when copying + a value through a pointer into a structure value return block. */ + if (TREE_CODE (to) == RESULT_DECL && TREE_CODE (from) == INDIRECT_REF ++ && ADDR_SPACE_GENERIC_P ++ (TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (from, 0))))) + && cfun->returns_struct + && !cfun->returns_pcc_struct) + { +@@ -4729,6 +4759,11 @@ store_expr (tree exp, rtx target, int ca + ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); + else + { ++ enum machine_mode pointer_mode ++ = targetm.addr_space.pointer_mode (MEM_ADDR_SPACE (target)); ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (target)); ++ + /* Compute the size of the data to copy from the string. */ + tree copy_size + = size_binop (MIN_EXPR, +@@ -4741,14 +4776,14 @@ store_expr (tree exp, rtx target, int ca + rtx label = 0; + + /* Copy that much. */ +- copy_size_rtx = convert_to_mode (ptr_mode, copy_size_rtx, ++ copy_size_rtx = convert_to_mode (pointer_mode, copy_size_rtx, + TYPE_UNSIGNED (sizetype)); + emit_block_move (target, temp, copy_size_rtx, + (call_param_p + ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); + + /* Figure out how much is left in TARGET that we have to clear. +- Do all calculations in ptr_mode. */ ++ Do all calculations in pointer_mode. */ + if (GET_CODE (copy_size_rtx) == CONST_INT) + { + size = plus_constant (size, -INTVAL (copy_size_rtx)); +@@ -4761,11 +4796,10 @@ store_expr (tree exp, rtx target, int ca + copy_size_rtx, NULL_RTX, 0, + OPTAB_LIB_WIDEN); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (copy_size_rtx) != Pmode) +- copy_size_rtx = convert_to_mode (Pmode, copy_size_rtx, ++ if (GET_MODE (copy_size_rtx) != address_mode) ++ copy_size_rtx = convert_to_mode (address_mode, ++ copy_size_rtx, + TYPE_UNSIGNED (sizetype)); +-#endif + + target = offset_address (target, copy_size_rtx, + highest_pow2_factor (copy_size)); +@@ -5255,6 +5289,7 @@ store_constructor (tree exp, rtx target, + + if (offset) + { ++ enum machine_mode address_mode; + rtx offset_rtx; + + offset +@@ -5265,13 +5300,10 @@ store_constructor (tree exp, rtx target, + offset_rtx = expand_normal (offset); + gcc_assert (MEM_P (to_rtx)); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to_rtx)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + to_rtx = offset_address (to_rtx, offset_rtx, + highest_pow2_factor (offset)); +@@ -6779,7 +6811,7 @@ expand_expr_constant (tree exp, int defe + + static rtx + expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, +- enum expand_modifier modifier) ++ enum expand_modifier modifier, addr_space_t as) + { + rtx result, subtarget; + tree inner, offset; +@@ -6806,7 +6838,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t + case CONST_DECL: + /* Recurse and make the output_constant_def clause above handle this. */ + return expand_expr_addr_expr_1 (DECL_INITIAL (exp), target, +- tmode, modifier); ++ tmode, modifier, as); + + case REALPART_EXPR: + /* The real part of the complex number is always first, therefore +@@ -6895,7 +6927,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t + TYPE_ALIGN (TREE_TYPE (inner)) = TYPE_ALIGN (TREE_TYPE (exp)); + TYPE_USER_ALIGN (TREE_TYPE (inner)) = 1; + } +- result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier); ++ result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier, as); + + if (offset) + { +@@ -6907,8 +6939,8 @@ expand_expr_addr_expr_1 (tree exp, rtx t + modifier == EXPAND_INITIALIZER + ? EXPAND_INITIALIZER : EXPAND_NORMAL); + +- result = convert_memory_address (tmode, result); +- tmp = convert_memory_address (tmode, tmp); ++ result = convert_memory_address_addr_space (tmode, result, as); ++ tmp = convert_memory_address_addr_space (tmode, tmp, as); + + if (modifier == EXPAND_SUM || modifier == EXPAND_INITIALIZER) + result = gen_rtx_PLUS (tmode, result, tmp); +@@ -6941,6 +6973,9 @@ static rtx + expand_expr_addr_expr (tree exp, rtx target, enum machine_mode tmode, + enum expand_modifier modifier) + { ++ addr_space_t as = ADDR_SPACE_GENERIC; ++ enum machine_mode address_mode = Pmode; ++ enum machine_mode pointer_mode = ptr_mode; + enum machine_mode rmode; + rtx result; + +@@ -6948,14 +6983,21 @@ expand_expr_addr_expr (tree exp, rtx tar + if (tmode == VOIDmode) + tmode = TYPE_MODE (TREE_TYPE (exp)); + ++ if (POINTER_TYPE_P (TREE_TYPE (exp))) ++ { ++ as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))); ++ address_mode = targetm.addr_space.address_mode (as); ++ pointer_mode = targetm.addr_space.pointer_mode (as); ++ } ++ + /* We can get called with some Weird Things if the user does silliness + like "(short) &a". In that case, convert_memory_address won't do + the right thing, so ignore the given target mode. */ +- if (tmode != Pmode && tmode != ptr_mode) +- tmode = Pmode; ++ if (tmode != address_mode && tmode != pointer_mode) ++ tmode = address_mode; + + result = expand_expr_addr_expr_1 (TREE_OPERAND (exp, 0), target, +- tmode, modifier); ++ tmode, modifier, as); + + /* Despite expand_expr claims concerning ignoring TMODE when not + strictly convenient, stuff breaks if we don't honor it. Note +@@ -6964,7 +7006,7 @@ expand_expr_addr_expr (tree exp, rtx tar + if (rmode == VOIDmode) + rmode = tmode; + if (rmode != tmode) +- result = convert_memory_address (tmode, result); ++ result = convert_memory_address_addr_space (tmode, result, as); + + return result; + } +@@ -7366,7 +7408,9 @@ expand_expr_real_1 (tree exp, rtx target + decl_rtl = use_anchored_address (decl_rtl); + if (modifier != EXPAND_CONST_ADDRESS + && modifier != EXPAND_SUM +- && !memory_address_p (DECL_MODE (exp), XEXP (decl_rtl, 0))) ++ && !memory_address_addr_space_p (DECL_MODE (exp), ++ XEXP (decl_rtl, 0), ++ MEM_ADDR_SPACE (decl_rtl))) + temp = replace_equiv_address (decl_rtl, + copy_rtx (XEXP (decl_rtl, 0))); + } +@@ -7488,7 +7532,8 @@ expand_expr_real_1 (tree exp, rtx target + if (modifier != EXPAND_CONST_ADDRESS + && modifier != EXPAND_INITIALIZER + && modifier != EXPAND_SUM +- && ! memory_address_p (mode, XEXP (temp, 0))) ++ && ! memory_address_addr_space_p (mode, XEXP (temp, 0), ++ MEM_ADDR_SPACE (temp))) + return replace_equiv_address (temp, + copy_rtx (XEXP (temp, 0))); + return temp; +@@ -7548,6 +7593,8 @@ expand_expr_real_1 (tree exp, rtx target + case INDIRECT_REF: + { + tree exp1 = TREE_OPERAND (exp, 0); ++ addr_space_t as = ADDR_SPACE_GENERIC; ++ enum machine_mode address_mode = Pmode; + + if (modifier != EXPAND_WRITE) + { +@@ -7558,19 +7605,26 @@ expand_expr_real_1 (tree exp, rtx target + return expand_expr (t, target, tmode, modifier); + } + ++ if (POINTER_TYPE_P (TREE_TYPE (exp1))) ++ { ++ as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp1))); ++ address_mode = targetm.addr_space.address_mode (as); ++ } ++ + op0 = expand_expr (exp1, NULL_RTX, VOIDmode, EXPAND_SUM); +- op0 = memory_address (mode, op0); ++ op0 = memory_address_addr_space (mode, op0, as); + + if (code == ALIGN_INDIRECT_REF) + { + int align = TYPE_ALIGN_UNIT (type); +- op0 = gen_rtx_AND (Pmode, op0, GEN_INT (-align)); +- op0 = memory_address (mode, op0); ++ op0 = gen_rtx_AND (address_mode, op0, GEN_INT (-align)); ++ op0 = memory_address_addr_space (mode, op0, as); + } + + temp = gen_rtx_MEM (mode, op0); + + set_mem_attributes (temp, exp, 0); ++ set_mem_addr_space (temp, as); + + /* Resolve the misalignment now, so that we don't have to remember + to resolve it later. Of course, this only works for reads. */ +@@ -7606,13 +7660,15 @@ expand_expr_real_1 (tree exp, rtx target + + case TARGET_MEM_REF: + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (exp)); + struct mem_address addr; + + get_address_description (exp, &addr); +- op0 = addr_for_mem_ref (&addr, true); +- op0 = memory_address (mode, op0); ++ op0 = addr_for_mem_ref (&addr, as, true); ++ op0 = memory_address_addr_space (mode, op0, as); + temp = gen_rtx_MEM (mode, op0); + set_mem_attributes (temp, TMR_ORIGINAL (exp), 0); ++ set_mem_addr_space (temp, as); + } + return temp; + +@@ -7898,18 +7954,16 @@ expand_expr_real_1 (tree exp, rtx target + + if (offset) + { ++ enum machine_mode address_mode; + rtx offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, + EXPAND_SUM); + + gcc_assert (MEM_P (op0)); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (op0)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + if (GET_MODE (op0) == BLKmode + /* A constant address in OP0 can have VOIDmode, we must +@@ -8386,6 +8440,40 @@ expand_expr_real_1 (tree exp, rtx target + + return op0; + ++ case ADDR_SPACE_CONVERT_EXPR: ++ { ++ tree treeop0 = TREE_OPERAND (exp, 0); ++ tree treeop0_type = TREE_TYPE (treeop0); ++ addr_space_t as_to; ++ addr_space_t as_from; ++ ++ gcc_assert (POINTER_TYPE_P (type)); ++ gcc_assert (POINTER_TYPE_P (treeop0_type)); ++ ++ as_to = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ as_from = TYPE_ADDR_SPACE (TREE_TYPE (treeop0_type)); ++ ++ /* Conversions between pointers to the same address space should ++ have been implemented via CONVERT_EXPR / NOP_EXPR. */ ++ gcc_assert (as_to != as_from); ++ ++ /* Ask target code to handle conversion between pointers ++ to overlapping address spaces. */ ++ if (targetm.addr_space.subset_p (as_to, as_from) ++ || targetm.addr_space.subset_p (as_from, as_to)) ++ { ++ op0 = expand_expr (treeop0, NULL_RTX, VOIDmode, modifier); ++ op0 = targetm.addr_space.convert (op0, treeop0_type, type); ++ gcc_assert (op0); ++ return op0; ++ } ++ ++ /* For disjoint address spaces, converting anything but ++ a null pointer invokes undefined behaviour. We simply ++ always return a null pointer here. */ ++ return CONST0_RTX (mode); ++ } ++ + case POINTER_PLUS_EXPR: + /* Even though the sizetype mode and the pointer's mode can be different + expand is able to handle this correctly and get the correct result out +diff -urNp gcc-4.4.4.orig/gcc/expr.h gcc-4.4.4/gcc/expr.h +--- a/src/gcc/expr.h 2010-06-30 ++++ b/src/gcc/expr.h 2010-06-30 +@@ -635,9 +635,15 @@ extern rtx force_label_rtx (tree); + The constant terms are added and stored via a second arg. */ + extern rtx eliminate_constant_term (rtx, rtx *); + +-/* Convert arg to a valid memory address for specified machine mode, +- by emitting insns to perform arithmetic if nec. */ +-extern rtx memory_address (enum machine_mode, rtx); ++/* Convert arg to a valid memory address for specified machine mode that points ++ to a specific named address space, by emitting insns to perform arithmetic ++ if necessary. */ ++extern rtx memory_address_addr_space (enum machine_mode, rtx, addr_space_t); ++ ++/* Like memory_address_addr_space, except assume the memory address points to ++ the generic named address space. */ ++#define memory_address(MODE,RTX) \ ++ memory_address_addr_space ((MODE), (RTX), ADDR_SPACE_GENERIC) + + /* Return a memory reference like MEMREF, but with its mode changed + to MODE and its address changed to ADDR. +diff -urNp gcc-4.4.4.orig/gcc/fold-const.c gcc-4.4.4/gcc/fold-const.c +--- a/src/gcc/fold-const.c 2010-06-30 ++++ b/src/gcc/fold-const.c 2010-06-30 +@@ -202,15 +202,9 @@ fit_double_type (unsigned HOST_WIDE_INT + { + unsigned HOST_WIDE_INT low0 = l1; + HOST_WIDE_INT high0 = h1; +- unsigned int prec; ++ unsigned int prec = TYPE_PRECISION (type); + int sign_extended_type; + +- if (POINTER_TYPE_P (type) +- || TREE_CODE (type) == OFFSET_TYPE) +- prec = POINTER_SIZE; +- else +- prec = TYPE_PRECISION (type); +- + /* Size types *are* sign extended. */ + sign_extended_type = (!TYPE_UNSIGNED (type) + || (TREE_CODE (type) == INTEGER_TYPE +@@ -2530,8 +2524,16 @@ fold_convert (tree type, tree arg) + + switch (TREE_CODE (type)) + { ++ case POINTER_TYPE: ++ case REFERENCE_TYPE: ++ /* Handle conversions between pointers to different address spaces. */ ++ if (POINTER_TYPE_P (orig) ++ && (TYPE_ADDR_SPACE (TREE_TYPE (type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (orig)))) ++ return fold_build1 (ADDR_SPACE_CONVERT_EXPR, type, arg); ++ /* fall through */ ++ + case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: +- case POINTER_TYPE: case REFERENCE_TYPE: + case OFFSET_TYPE: + if (TREE_CODE (arg) == INTEGER_CST) + { +@@ -3053,6 +3055,12 @@ operand_equal_p (const_tree arg0, const_ + || POINTER_TYPE_P (TREE_TYPE (arg0)) != POINTER_TYPE_P (TREE_TYPE (arg1))) + return 0; + ++ /* We cannot consider pointers to different address space equal. */ ++ if (POINTER_TYPE_P (TREE_TYPE (arg0)) && POINTER_TYPE_P (TREE_TYPE (arg1)) ++ && (TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (arg0))) ++ != TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (arg1))))) ++ return 0; ++ + /* If both types don't have the same precision, then it is not safe + to strip NOPs. */ + if (TYPE_PRECISION (TREE_TYPE (arg0)) != TYPE_PRECISION (TREE_TYPE (arg1))) +@@ -8405,6 +8413,11 @@ fold_unary (enum tree_code code, tree ty + tem = fold_convert_const (code, type, op0); + return tem ? tem : NULL_TREE; + ++ case ADDR_SPACE_CONVERT_EXPR: ++ if (integer_zerop (arg0)) ++ return fold_convert_const (code, type, arg0); ++ return NULL_TREE; ++ + case FIXED_CONVERT_EXPR: + tem = fold_convert_const (code, type, arg0); + return tem ? tem : NULL_TREE; +diff -urNp gcc-4.4.4.orig/gcc/fwprop.c gcc-4.4.4/gcc/fwprop.c +--- a/src/gcc/fwprop.c 2009-04-26 ++++ b/src/gcc/fwprop.c 2010-06-30 +@@ -185,11 +185,12 @@ canonicalize_address (rtx x) + + static bool + should_replace_address (rtx old_rtx, rtx new_rtx, enum machine_mode mode, +- bool speed) ++ addr_space_t as, bool speed) + { + int gain; + +- if (rtx_equal_p (old_rtx, new_rtx) || !memory_address_p (mode, new_rtx)) ++ if (rtx_equal_p (old_rtx, new_rtx) ++ || !memory_address_addr_space_p (mode, new_rtx, as)) + return false; + + /* Copy propagation is always ok. */ +@@ -197,7 +198,8 @@ should_replace_address (rtx old_rtx, rtx + return true; + + /* Prefer the new address if it is less expensive. */ +- gain = address_cost (old_rtx, mode, speed) - address_cost (new_rtx, mode, speed); ++ gain = (address_cost (old_rtx, mode, as, speed) ++ - address_cost (new_rtx, mode, as, speed)); + + /* If the addresses have equivalent cost, prefer the new address + if it has the highest `rtx_cost'. That has the potential of +@@ -365,6 +367,7 @@ propagate_rtx_1 (rtx *px, rtx old_rtx, r + /* Copy propagations are always ok. Otherwise check the costs. */ + if (!(REG_P (old_rtx) && REG_P (new_rtx)) + && !should_replace_address (op0, new_op0, GET_MODE (x), ++ MEM_ADDR_SPACE (x), + flags & PR_OPTIMIZE_FOR_SPEED)) + return true; + +diff -urNp gcc-4.4.4.orig/gcc/gimple-pretty-print.c gcc-4.4.4/gcc/gimple-pretty-print.c +--- a/src/gcc/gimple-pretty-print.c 2009-01-02 ++++ b/src/gcc/gimple-pretty-print.c 2010-06-30 +@@ -254,6 +254,7 @@ dump_unary_rhs (pretty_printer *buffer, + break; + + case FIXED_CONVERT_EXPR: ++ case ADDR_SPACE_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + case FLOAT_EXPR: + CASE_CONVERT: +diff -urNp gcc-4.4.4.orig/gcc/ifcvt.c gcc-4.4.4/gcc/ifcvt.c +--- a/src/gcc/ifcvt.c 2010-06-30 ++++ b/src/gcc/ifcvt.c 2010-06-30 +@@ -1411,11 +1411,15 @@ noce_try_cmove_arith (struct noce_if_inf + /* ??? FIXME: Magic number 5. */ + if (cse_not_expected + && MEM_P (a) && MEM_P (b) ++ && MEM_ADDR_SPACE (a) == MEM_ADDR_SPACE (b) + && if_info->branch_cost >= 5) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (a)); ++ + a = XEXP (a, 0); + b = XEXP (b, 0); +- x = gen_reg_rtx (Pmode); ++ x = gen_reg_rtx (address_mode); + is_mem = 1; + } + +@@ -1564,6 +1568,9 @@ noce_try_cmove_arith (struct noce_if_inf + set_mem_align (tmp, + MIN (MEM_ALIGN (if_info->a), MEM_ALIGN (if_info->b))); + ++ gcc_assert (MEM_ADDR_SPACE (if_info->a) == MEM_ADDR_SPACE (if_info->b)); ++ set_mem_addr_space (tmp, MEM_ADDR_SPACE (if_info->a)); ++ + noce_emit_move_insn (if_info->x, tmp); + } + else if (target != x) +diff -urNp gcc-4.4.4.orig/gcc/jump.c gcc-4.4.4/gcc/jump.c +--- a/src/gcc/jump.c 2009-02-25 ++++ b/src/gcc/jump.c 2010-06-30 +@@ -1641,6 +1641,10 @@ rtx_renumbered_equal_p (const_rtx x, con + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + /* For commutative operations, the RTX match if the operand match in any + order. Also handle the simple binary and unary cases without a loop. */ + if (targetm.commutative_p (x, UNKNOWN)) +diff -urNp gcc-4.4.4.orig/gcc/Makefile.in gcc-4.4.4/gcc/Makefile.in +--- a/src/gcc/Makefile.in 2010-06-30 ++++ b/src/gcc/Makefile.in 2010-06-30 +@@ -2278,7 +2278,7 @@ tree-ssa-address.o : tree-ssa-address.c + $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \ + output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ + tree-pass.h $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h $(EXPR_H) \ +- gt-tree-ssa-address.h $(GGC_H) tree-affine.h ++ gt-tree-ssa-address.h $(GGC_H) tree-affine.h $(TARGET_H) + tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \ + $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \ + $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ +@@ -2598,7 +2598,7 @@ emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SY + $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \ + $(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(TOPLEV_H) $(BASIC_BLOCK_H) \ + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h \ +- $(REAL_H) $(DF_H) ++ $(REAL_H) $(DF_H) $(TARGET_H) + real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ + $(TOPLEV_H) $(TM_P_H) $(REAL_H) dfp.h + dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ +@@ -2806,7 +2806,7 @@ alloc-pool.o : alloc-pool.c $(CONFIG_H) + auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \ + $(REGS_H) $(FLAGS_H) output.h $(FUNCTION_H) except.h $(TOPLEV_H) $(RECOG_H) \ +- $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) ++ $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) $(TARGET_H) + cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \ + $(REGS_H) hard-reg-set.h output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(GGC_H) \ + $(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \ +@@ -2987,7 +2987,7 @@ haifa-sched.o : haifa-sched.c $(CONFIG_H + sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) except.h cselib.h \ +- $(PARAMS_H) $(TM_P_H) ++ $(PARAMS_H) $(TM_P_H) $(TARGET_H) + sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) except.h $(PARAMS_H) \ +diff -urNp gcc-4.4.4.orig/gcc/output.h gcc-4.4.4/gcc/output.h +--- a/src/gcc/output.h 2010-06-30 ++++ b/src/gcc/output.h 2010-06-30 +@@ -623,7 +623,6 @@ extern void default_emit_except_table_la + extern void default_internal_label (FILE *, const char *, unsigned long); + extern void default_file_start (void); + extern void file_end_indicate_exec_stack (void); +-extern bool default_valid_pointer_mode (enum machine_mode); + + extern void default_elf_asm_output_external (FILE *file, tree, + const char *); +diff -urNp gcc-4.4.4.orig/gcc/print-rtl.c gcc-4.4.4/gcc/print-rtl.c +--- a/src/gcc/print-rtl.c 2009-02-20 ++++ b/src/gcc/print-rtl.c 2010-06-30 +@@ -556,6 +556,9 @@ print_rtx (const_rtx in_rtx) + if (MEM_ALIGN (in_rtx) != 1) + fprintf (outfile, " A%u", MEM_ALIGN (in_rtx)); + ++ if (!ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (in_rtx))) ++ fprintf (outfile, " AS%u", MEM_ADDR_SPACE (in_rtx)); ++ + fputc (']', outfile); + break; + +diff -urNp gcc-4.4.4.orig/gcc/print-tree.c gcc-4.4.4/gcc/print-tree.c +--- a/src/gcc/print-tree.c 2008-11-04 ++++ b/src/gcc/print-tree.c 2010-06-30 +@@ -110,6 +110,8 @@ print_node_brief (FILE *file, const char + fprintf (file, " %s", + IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (node)))); + } ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ fprintf (file, " address-space-%d", TYPE_ADDR_SPACE (node)); + } + if (TREE_CODE (node) == IDENTIFIER_NODE) + fprintf (file, " %s", IDENTIFIER_POINTER (node)); +@@ -299,6 +301,9 @@ print_node (FILE *file, const char *pref + else if (TYPE_P (node) && TYPE_SIZES_GIMPLIFIED (node)) + fputs (" sizes-gimplified", file); + ++ if (TYPE_P (node) && !ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ fprintf (file, " address-space-%d", TYPE_ADDR_SPACE (node)); ++ + if (TREE_ADDRESSABLE (node)) + fputs (" addressable", file); + if (TREE_THIS_VOLATILE (node)) +diff -urNp gcc-4.4.4.orig/gcc/recog.c gcc-4.4.4/gcc/recog.c +--- a/src/gcc/recog.c 2009-03-09 ++++ b/src/gcc/recog.c 2010-06-30 +@@ -376,7 +376,9 @@ verify_changes (int num) + + if (MEM_P (object)) + { +- if (! memory_address_p (GET_MODE (object), XEXP (object, 0))) ++ if (! memory_address_addr_space_p (GET_MODE (object), ++ XEXP (object, 0), ++ MEM_ADDR_SPACE (object))) + break; + } + else if (REG_P (changes[i].old) +@@ -964,7 +966,7 @@ general_operand (rtx op, enum machine_mo + return 0; + + /* Use the mem's mode, since it will be reloaded thus. */ +- if (memory_address_p (GET_MODE (op), y)) ++ if (memory_address_addr_space_p (GET_MODE (op), y, MEM_ADDR_SPACE (op))) + return 1; + } + +@@ -1248,11 +1250,16 @@ pop_operand (rtx op, enum machine_mode m + return XEXP (op, 0) == stack_pointer_rtx; + } + +-/* Return 1 if ADDR is a valid memory address for mode MODE. */ ++/* Return 1 if ADDR is a valid memory address ++ for mode MODE in address space AS. */ + + int +-memory_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx addr) ++memory_address_addr_space_p (enum machine_mode mode ATTRIBUTE_UNUSED, ++ rtx addr, addr_space_t as) + { ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return targetm.addr_space.legitimate_address_p (mode, addr, 0, as); ++ + GO_IF_LEGITIMATE_ADDRESS (mode, addr, win); + return 0; + +@@ -1829,7 +1836,8 @@ int + offsettable_memref_p (rtx op) + { + return ((MEM_P (op)) +- && offsettable_address_p (1, GET_MODE (op), XEXP (op, 0))); ++ && offsettable_address_addr_space_p (1, GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))); + } + + /* Similar, but don't require a strictly valid mem ref: +@@ -1839,12 +1847,13 @@ int + offsettable_nonstrict_memref_p (rtx op) + { + return ((MEM_P (op)) +- && offsettable_address_p (0, GET_MODE (op), XEXP (op, 0))); ++ && offsettable_address_addr_space_p (0, GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))); + } + + /* Return 1 if Y is a memory address which contains no side effects +- and would remain valid after the addition of a positive integer +- less than the size of that mode. ++ and would remain valid for address space AS after the addition of ++ a positive integer less than the size of that mode. + + We assume that the original address is valid and do not check it. + We do check that it is valid for narrower modes. +@@ -1853,14 +1862,16 @@ offsettable_nonstrict_memref_p (rtx op) + for the sake of use in reload.c. */ + + int +-offsettable_address_p (int strictp, enum machine_mode mode, rtx y) ++offsettable_address_addr_space_p (int strictp, enum machine_mode mode, rtx y, ++ addr_space_t as) + { + enum rtx_code ycode = GET_CODE (y); + rtx z; + rtx y1 = y; + rtx *y2; +- int (*addressp) (enum machine_mode, rtx) = +- (strictp ? strict_memory_address_p : memory_address_p); ++ int (*addressp) (enum machine_mode, rtx, addr_space_t) = ++ (strictp ? strict_memory_address_addr_space_p ++ : memory_address_addr_space_p); + unsigned int mode_sz = GET_MODE_SIZE (mode); + + if (CONSTANT_ADDRESS_P (y)) +@@ -1890,7 +1901,7 @@ offsettable_address_p (int strictp, enum + *y2 = plus_constant (*y2, mode_sz - 1); + /* Use QImode because an odd displacement may be automatically invalid + for any wider mode. But it should be valid for a single byte. */ +- good = (*addressp) (QImode, y); ++ good = (*addressp) (QImode, y, as); + + /* In any case, restore old contents of memory. */ + *y2 = y1; +@@ -1915,7 +1926,7 @@ offsettable_address_p (int strictp, enum + + /* Use QImode because an odd displacement may be automatically invalid + for any wider mode. But it should be valid for a single byte. */ +- return (*addressp) (QImode, z); ++ return (*addressp) (QImode, z, as); + } + + /* Return 1 if ADDR is an address-expression whose effect depends +@@ -2459,11 +2470,14 @@ constrain_operands (int strict) + if (MEM_P (op)) + { + if (strict > 0 +- && !strict_memory_address_p (GET_MODE (op), +- XEXP (op, 0))) ++ && !strict_memory_address_addr_space_p ++ (GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))) + break; + if (strict == 0 +- && !memory_address_p (GET_MODE (op), XEXP (op, 0))) ++ && !memory_address_addr_space_p ++ (GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))) + break; + win = 1; + } +diff -urNp gcc-4.4.4.orig/gcc/recog.h gcc-4.4.4/gcc/recog.h +--- a/src/gcc/recog.h 2009-02-02 ++++ b/src/gcc/recog.h 2010-06-30 +@@ -84,8 +84,13 @@ extern int num_validated_changes (void); + extern void cancel_changes (int); + extern int constrain_operands (int); + extern int constrain_operands_cached (int); +-extern int memory_address_p (enum machine_mode, rtx); +-extern int strict_memory_address_p (enum machine_mode, rtx); ++extern int memory_address_addr_space_p (enum machine_mode, rtx, addr_space_t); ++#define memory_address_p(mode,addr) \ ++ memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC) ++extern int strict_memory_address_addr_space_p (enum machine_mode, rtx, ++ addr_space_t); ++#define strict_memory_address_p(mode,addr) \ ++ strict_memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC) + extern int validate_replace_rtx (rtx, rtx, rtx); + extern int validate_replace_rtx_part (rtx, rtx, rtx *, rtx); + extern int validate_replace_rtx_part_nosimplify (rtx, rtx, rtx *, rtx); +@@ -100,7 +105,11 @@ extern int reg_fits_class_p (rtx, enum r + + extern int offsettable_memref_p (rtx); + extern int offsettable_nonstrict_memref_p (rtx); +-extern int offsettable_address_p (int, enum machine_mode, rtx); ++extern int offsettable_address_addr_space_p (int, enum machine_mode, rtx, ++ addr_space_t); ++#define offsettable_address_p(strict,mode,addr) \ ++ offsettable_address_addr_space_p ((strict), (mode), (addr), \ ++ ADDR_SPACE_GENERIC) + extern int mode_dependent_address_p (rtx); + + extern int recog (rtx, rtx, int *); +diff -urNp gcc-4.4.4.orig/gcc/regmove.c gcc-4.4.4/gcc/regmove.c +--- a/src/gcc/regmove.c 2010-06-30 ++++ b/src/gcc/regmove.c 2010-06-30 +@@ -179,7 +179,9 @@ try_auto_increment (rtx insn, rtx inc_in + &SET_SRC (inc_insn_set), + XEXP (SET_SRC (inc_insn_set), 0), 1); + validate_change (insn, &XEXP (use, 0), +- gen_rtx_fmt_e (inc_code, Pmode, reg), 1); ++ gen_rtx_fmt_e (inc_code, ++ GET_MODE (XEXP (use, 0)), reg), ++ 1); + if (apply_change_group ()) + { + /* If there is a REG_DEAD note on this insn, we must +diff -urNp gcc-4.4.4.orig/gcc/regrename.c gcc-4.4.4/gcc/regrename.c +--- a/src/gcc/regrename.c 2010-06-30 ++++ b/src/gcc/regrename.c 2010-06-30 +@@ -1207,7 +1207,7 @@ kill_autoinc_value (rtx *px, void *data) + { + x = XEXP (x, 0); + kill_value (x, vd); +- set_value_regno (REGNO (x), Pmode, vd); ++ set_value_regno (REGNO (x), GET_MODE (x), vd); + return -1; + } + +diff -urNp gcc-4.4.4.orig/gcc/reload1.c gcc-4.4.4/gcc/reload1.c +--- a/src/gcc/reload1.c 2009-03-26 ++++ b/src/gcc/reload1.c 2010-06-30 +@@ -999,8 +999,9 @@ reload (rtx first, int global) + { + rtx x = eliminate_regs (reg_equiv_memory_loc[i], 0, NULL_RTX); + +- if (strict_memory_address_p (GET_MODE (regno_reg_rtx[i]), +- XEXP (x, 0))) ++ if (strict_memory_address_addr_space_p ++ (GET_MODE (regno_reg_rtx[i]), XEXP (x, 0), ++ MEM_ADDR_SPACE (x))) + reg_equiv_mem[i] = x, reg_equiv_address[i] = 0; + else if (CONSTANT_P (XEXP (x, 0)) + || (REG_P (XEXP (x, 0)) +@@ -2610,7 +2611,7 @@ eliminate_regs_1 (rtx x, enum machine_mo + && reg_equiv_constant[REGNO (new0)] != 0) + new0 = reg_equiv_constant[REGNO (new0)]; + +- new_rtx = form_sum (new0, new1); ++ new_rtx = form_sum (GET_MODE (x), new0, new1); + + /* As above, if we are not inside a MEM we do not want to + turn a PLUS into something else. We might try to do so here +diff -urNp gcc-4.4.4.orig/gcc/reload.c gcc-4.4.4/gcc/reload.c +--- a/src/gcc/reload.c 2010-06-30 ++++ b/src/gcc/reload.c 2010-06-30 +@@ -267,7 +267,8 @@ static bool alternative_allows_const_poo + static rtx find_reloads_toplev (rtx, int, enum reload_type, int, int, rtx, + int *); + static rtx make_memloc (rtx, int); +-static int maybe_memory_address_p (enum machine_mode, rtx, rtx *); ++static int maybe_memory_address_addr_space_p (enum machine_mode, rtx, ++ addr_space_t, rtx *); + static int find_reloads_address (enum machine_mode, rtx *, rtx, rtx *, + int, enum reload_type, int, rtx); + static rtx subst_reg_equivs (rtx, rtx); +@@ -611,7 +612,8 @@ get_secondary_mem (rtx x ATTRIBUTE_UNUSE + didn't give us a new MEM, make a new one if it isn't valid. */ + + loc = eliminate_regs (secondary_memlocs[(int) mode], VOIDmode, NULL_RTX); +- mem_valid = strict_memory_address_p (mode, XEXP (loc, 0)); ++ mem_valid = strict_memory_address_addr_space_p (mode, XEXP (loc, 0), ++ MEM_ADDR_SPACE (loc)); + + if (! mem_valid && loc == secondary_memlocs[(int) mode]) + loc = copy_rtx (loc); +@@ -2127,13 +2129,17 @@ hard_reg_set_here_p (unsigned int beg_re + return 0; + } + +-/* Return 1 if ADDR is a valid memory address for mode MODE, +- and check that each pseudo reg has the proper kind of +- hard reg. */ ++/* Return 1 if ADDR is a valid memory address for mode MODE ++ in address space AS, and check that each pseudo reg has the ++ proper kind of hard reg. */ + + int +-strict_memory_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx addr) ++strict_memory_address_addr_space_p (enum machine_mode mode ATTRIBUTE_UNUSED, ++ rtx addr, addr_space_t as) + { ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return targetm.addr_space.legitimate_address_p (mode, addr, 1, as); ++ + GO_IF_LEGITIMATE_ADDRESS (mode, addr, win); + return 0; + +@@ -2241,6 +2247,10 @@ operands_match_p (rtx x, rtx y) + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + switch (code) + { + case CONST_INT: +@@ -3947,12 +3957,15 @@ find_reloads (rtx insn, int replace, int + && MEM_P (recog_data.operand[i])) + { + /* If the address to be reloaded is a VOIDmode constant, +- use Pmode as mode of the reload register, as would have +- been done by find_reloads_address. */ ++ use the default address mode as mode of the reload register, ++ as would have been done by find_reloads_address. */ + enum machine_mode address_mode; + address_mode = GET_MODE (XEXP (recog_data.operand[i], 0)); + if (address_mode == VOIDmode) +- address_mode = Pmode; ++ { ++ addr_space_t as = MEM_ADDR_SPACE (recog_data.operand[i]); ++ address_mode = targetm.addr_space.address_mode (as); ++ } + + operand_reloadnum[i] + = push_reload (XEXP (recog_data.operand[i], 0), NULL_RTX, +@@ -4727,8 +4740,9 @@ find_reloads_toplev (rtx x, int opnum, e + #endif + && (reg_equiv_address[regno] != 0 + || (reg_equiv_mem[regno] != 0 +- && (! strict_memory_address_p (GET_MODE (x), +- XEXP (reg_equiv_mem[regno], 0)) ++ && (! strict_memory_address_addr_space_p ++ (GET_MODE (x), XEXP (reg_equiv_mem[regno], 0), ++ MEM_ADDR_SPACE (reg_equiv_mem[regno])) + || ! offsettable_memref_p (reg_equiv_mem[regno]) + || num_not_at_initial_offset)))) + x = find_reloads_subreg_address (x, 1, opnum, type, ind_levels, +@@ -4785,18 +4799,19 @@ make_memloc (rtx ad, int regno) + } + + /* Returns true if AD could be turned into a valid memory reference +- to mode MODE by reloading the part pointed to by PART into a +- register. */ ++ to mode MODE in address space AS by reloading the part pointed to ++ by PART into a register. */ + + static int +-maybe_memory_address_p (enum machine_mode mode, rtx ad, rtx *part) ++maybe_memory_address_addr_space_p (enum machine_mode mode, rtx ad, ++ addr_space_t as, rtx *part) + { + int retv; + rtx tem = *part; + rtx reg = gen_rtx_REG (GET_MODE (tem), max_reg_num ()); + + *part = reg; +- retv = memory_address_p (mode, ad); ++ retv = memory_address_addr_space_p (mode, ad, as); + *part = tem; + + return retv; +@@ -4832,6 +4847,8 @@ find_reloads_address (enum machine_mode + rtx *loc, int opnum, enum reload_type type, + int ind_levels, rtx insn) + { ++ addr_space_t as = memrefloc? MEM_ADDR_SPACE (*memrefloc) ++ : ADDR_SPACE_GENERIC; + int regno; + int removed_and = 0; + int op_index; +@@ -4859,7 +4876,9 @@ find_reloads_address (enum machine_mode + if (reg_equiv_address[regno] != 0 || num_not_at_initial_offset) + { + tem = make_memloc (ad, regno); +- if (! strict_memory_address_p (GET_MODE (tem), XEXP (tem, 0))) ++ if (! strict_memory_address_addr_space_p (GET_MODE (tem), ++ XEXP (tem, 0), ++ MEM_ADDR_SPACE (tem))) + { + rtx orig = tem; + +@@ -4875,7 +4894,7 @@ find_reloads_address (enum machine_mode + address: only reg or reg+constant. */ + + if (ind_levels > 0 +- && strict_memory_address_p (mode, tem) ++ && strict_memory_address_addr_space_p (mode, tem, as) + && (REG_P (XEXP (tem, 0)) + || (GET_CODE (XEXP (tem, 0)) == PLUS + && REG_P (XEXP (XEXP (tem, 0), 0)) +@@ -4919,7 +4938,7 @@ find_reloads_address (enum machine_mode + return 1; + } + +- if (strict_memory_address_p (mode, ad)) ++ if (strict_memory_address_addr_space_p (mode, ad, as)) + { + /* The address appears valid, so reloads are not needed. + But the address may contain an eliminable register. +@@ -4942,14 +4961,14 @@ find_reloads_address (enum machine_mode + return 0; + + /* Check result for validity after substitution. */ +- if (strict_memory_address_p (mode, ad)) ++ if (strict_memory_address_addr_space_p (mode, ad, as)) + return 0; + } + + #ifdef LEGITIMIZE_RELOAD_ADDRESS + do + { +- if (memrefloc) ++ if (memrefloc && ADDR_SPACE_GENERIC_P (as)) + { + LEGITIMIZE_RELOAD_ADDRESS (ad, GET_MODE (*memrefloc), opnum, type, + ind_levels, win); +@@ -5065,7 +5084,7 @@ find_reloads_address (enum machine_mode + That will at least work. */ + find_reloads_address_part (ad, loc, + base_reg_class (mode, MEM, SCRATCH), +- Pmode, opnum, type, ind_levels); ++ GET_MODE (ad), opnum, type, ind_levels); + } + return ! removed_and; + } +@@ -5126,8 +5145,8 @@ find_reloads_address (enum machine_mode + || operand == arg_pointer_rtx + #endif + || operand == stack_pointer_rtx) +- && ! maybe_memory_address_p (mode, ad, +- &XEXP (XEXP (ad, 0), 1 - op_index))) ++ && ! maybe_memory_address_addr_space_p ++ (mode, ad, as, &XEXP (XEXP (ad, 0), 1 - op_index))) + { + rtx offset_reg; + enum reg_class cls; +@@ -5165,7 +5184,7 @@ find_reloads_address (enum machine_mode + tem = ad; + if (GET_CODE (ad) == PLUS) + tem = subst_indexed_address (ad); +- if (tem != ad && strict_memory_address_p (mode, tem)) ++ if (tem != ad && strict_memory_address_addr_space_p (mode, tem, as)) + { + /* Ok, we win that way. Replace any additional eliminable + registers. */ +@@ -5175,7 +5194,8 @@ find_reloads_address (enum machine_mode + + /* Make sure that didn't make the address invalid again. */ + +- if (! subst_reg_equivs_changed || strict_memory_address_p (mode, tem)) ++ if (! subst_reg_equivs_changed ++ || strict_memory_address_addr_space_p (mode, tem, as)) + { + *loc = tem; + return 0; +@@ -5184,8 +5204,12 @@ find_reloads_address (enum machine_mode + + /* If constants aren't valid addresses, reload the constant address + into a register. */ +- if (CONSTANT_P (ad) && ! strict_memory_address_p (mode, ad)) ++ if (CONSTANT_P (ad) && ! strict_memory_address_addr_space_p (mode, ad, as)) + { ++ enum machine_mode address_mode = GET_MODE (ad); ++ if (address_mode == VOIDmode) ++ address_mode = targetm.addr_space.address_mode (as); ++ + /* If AD is an address in the constant pool, the MEM rtx may be shared. + Unshare it so we can safely alter it. */ + if (memrefloc && GET_CODE (ad) == SYMBOL_REF +@@ -5198,7 +5222,7 @@ find_reloads_address (enum machine_mode + } + + find_reloads_address_part (ad, loc, base_reg_class (mode, MEM, SCRATCH), +- Pmode, opnum, type, ind_levels); ++ address_mode, opnum, type, ind_levels); + return ! removed_and; + } + +@@ -5285,16 +5309,12 @@ subst_reg_equivs (rtx ad, rtx insn) + This routine assumes both inputs are already in canonical form. */ + + rtx +-form_sum (rtx x, rtx y) ++form_sum (enum machine_mode mode, rtx x, rtx y) + { + rtx tem; +- enum machine_mode mode = GET_MODE (x); +- +- if (mode == VOIDmode) +- mode = GET_MODE (y); + +- if (mode == VOIDmode) +- mode = Pmode; ++ gcc_assert (GET_MODE (x) == mode || GET_MODE (x) == VOIDmode); ++ gcc_assert (GET_MODE (y) == mode || GET_MODE (y) == VOIDmode); + + if (GET_CODE (x) == CONST_INT) + return plus_constant (y, INTVAL (x)); +@@ -5304,12 +5324,12 @@ form_sum (rtx x, rtx y) + tem = x, x = y, y = tem; + + if (GET_CODE (x) == PLUS && CONSTANT_P (XEXP (x, 1))) +- return form_sum (XEXP (x, 0), form_sum (XEXP (x, 1), y)); ++ return form_sum (mode, XEXP (x, 0), form_sum (mode, XEXP (x, 1), y)); + + /* Note that if the operands of Y are specified in the opposite + order in the recursive calls below, infinite recursion will occur. */ + if (GET_CODE (y) == PLUS && CONSTANT_P (XEXP (y, 1))) +- return form_sum (form_sum (x, XEXP (y, 0)), XEXP (y, 1)); ++ return form_sum (mode, form_sum (mode, x, XEXP (y, 0)), XEXP (y, 1)); + + /* If both constant, encapsulate sum. Otherwise, just form sum. A + constant will have been placed second. */ +@@ -5376,9 +5396,9 @@ subst_indexed_address (rtx addr) + + /* Compute the sum. */ + if (op2 != 0) +- op1 = form_sum (op1, op2); ++ op1 = form_sum (GET_MODE (addr), op1, op2); + if (op1 != 0) +- op0 = form_sum (op0, op1); ++ op0 = form_sum (GET_MODE (addr), op0, op1); + + return op0; + } +@@ -5778,7 +5798,8 @@ find_reloads_address_1 (enum machine_mod + rtx equiv = (MEM_P (XEXP (x, 0)) + ? XEXP (x, 0) + : reg_equiv_mem[regno]); +- int icode = (int) optab_handler (add_optab, Pmode)->insn_code; ++ int icode ++ = (int) optab_handler (add_optab, GET_MODE (x))->insn_code; + if (insn && NONJUMP_INSN_P (insn) && equiv + && memory_operand (equiv, GET_MODE (equiv)) + #ifdef HAVE_cc0 +@@ -5786,9 +5807,9 @@ find_reloads_address_1 (enum machine_mod + #endif + && ! (icode != CODE_FOR_nothing + && ((*insn_data[icode].operand[0].predicate) +- (equiv, Pmode)) ++ (equiv, GET_MODE (x))) + && ((*insn_data[icode].operand[1].predicate) +- (equiv, Pmode)))) ++ (equiv, GET_MODE (x))))) + { + /* We use the original pseudo for loc, so that + emit_reload_insns() knows which pseudo this +@@ -6149,8 +6170,9 @@ find_reloads_subreg_address (rtx x, int + the address, there is nothing further to do. */ + if (reloaded == 0 + && reg_equiv_mem[regno] != 0 +- && !strict_memory_address_p (GET_MODE (x), +- XEXP (reg_equiv_mem[regno], 0))) ++ && !strict_memory_address_addr_space_p ++ (GET_MODE (x), XEXP (reg_equiv_mem[regno], 0), ++ MEM_ADDR_SPACE (reg_equiv_mem[regno]))) + push_reload (XEXP (tem, 0), NULL_RTX, &XEXP (tem, 0), (rtx*) 0, + base_reg_class (GET_MODE (tem), MEM, SCRATCH), + GET_MODE (XEXP (tem, 0)), VOIDmode, 0, 0, +diff -urNp gcc-4.4.4.orig/gcc/reload.h gcc-4.4.4/gcc/reload.h +--- a/src/gcc/reload.h 2010-03-31 ++++ b/src/gcc/reload.h 2010-06-30 +@@ -289,7 +289,7 @@ extern int find_reloads (rtx, int, int, + address, namely: sum constant integers, surround the sum of two + constants with a CONST, put the constant as the second operand, and + group the constant on the outermost sum. */ +-extern rtx form_sum (rtx, rtx); ++extern rtx form_sum (enum machine_mode, rtx, rtx); + + /* Substitute into the current INSN the registers into which we have reloaded + the things that need reloading. */ +diff -urNp gcc-4.4.4.orig/gcc/rtlanal.c gcc-4.4.4/gcc/rtlanal.c +--- a/src/gcc/rtlanal.c 2010-06-30 ++++ b/src/gcc/rtlanal.c 2010-06-30 +@@ -3621,13 +3621,13 @@ rtx_cost (rtx x, enum rtx_code outer_cod + be returned. */ + + int +-address_cost (rtx x, enum machine_mode mode, bool speed) ++address_cost (rtx x, enum machine_mode mode, addr_space_t as, bool speed) + { + /* We may be asked for cost of various unusual addresses, such as operands + of push instruction. It is not worthwhile to complicate writing + of the target hook by such cases. */ + +- if (!memory_address_p (mode, x)) ++ if (!memory_address_addr_space_p (mode, x, as)) + return 1000; + + return targetm.address_cost (x, speed); +@@ -3766,7 +3766,11 @@ nonzero_bits1 (const_rtx x, enum machine + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) + /* If pointers extend unsigned and this is a pointer in Pmode, say that + all the bits above ptr_mode are known to be zero. */ +- if (POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode + && REG_POINTER (x)) + nonzero &= GET_MODE_MASK (ptr_mode); + #endif +@@ -4003,7 +4007,11 @@ nonzero_bits1 (const_rtx x, enum machine + /* If pointers extend unsigned and this is an addition or subtraction + to a pointer in Pmode, all the bits above ptr_mode are known to be + zero. */ +- if (POINTERS_EXTEND_UNSIGNED > 0 && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED > 0 && GET_MODE (x) == Pmode + && (code == PLUS || code == MINUS) + && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) + nonzero &= GET_MODE_MASK (ptr_mode); +@@ -4277,8 +4285,12 @@ num_sign_bit_copies1 (const_rtx x, enum + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) + /* If pointers extend signed and this is a pointer in Pmode, say that + all the bits above ptr_mode are known to be sign bit copies. */ +- if (! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode && mode == Pmode +- && REG_POINTER (x)) ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ && mode == Pmode && REG_POINTER (x)) + return GET_MODE_BITSIZE (Pmode) - GET_MODE_BITSIZE (ptr_mode) + 1; + #endif + +@@ -4474,7 +4486,11 @@ num_sign_bit_copies1 (const_rtx x, enum + /* If pointers extend signed and this is an addition or subtraction + to a pointer in Pmode, all the bits above ptr_mode are known to be + sign bit copies. */ +- if (! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode + && (code == PLUS || code == MINUS) + && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) + result = MAX ((int) (GET_MODE_BITSIZE (Pmode) +diff -urNp gcc-4.4.4.orig/gcc/rtl.c gcc-4.4.4/gcc/rtl.c +--- a/src/gcc/rtl.c 2009-02-20 ++++ b/src/gcc/rtl.c 2010-06-30 +@@ -367,6 +367,14 @@ rtx_equal_p_cb (const_rtx x, const_rtx y + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + /* Some RTL can be compared nonrecursively. */ + switch (code) + { +diff -urNp gcc-4.4.4.orig/gcc/rtl.h gcc-4.4.4/gcc/rtl.h +--- a/src/gcc/rtl.h 2010-03-08 ++++ b/src/gcc/rtl.h 2010-06-30 +@@ -146,6 +146,7 @@ typedef struct mem_attrs GTY(()) + rtx size; /* Size in bytes, as a CONST_INT. */ + alias_set_type alias; /* Memory alias set. */ + unsigned int align; /* Alignment of MEM in bits. */ ++ unsigned char addrspace; /* Address space (0 for generic). */ + } mem_attrs; + + /* Structure used to describe the attributes of a REG in similar way as +@@ -1075,7 +1076,7 @@ rhs_regno (const_rtx x) + + extern void init_rtlanal (void); + extern int rtx_cost (rtx, enum rtx_code, bool); +-extern int address_cost (rtx, enum machine_mode, bool); ++extern int address_cost (rtx, enum machine_mode, addr_space_t, bool); + extern unsigned int subreg_lsb (const_rtx); + extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode, + unsigned int); +@@ -1209,6 +1210,10 @@ do { \ + RTX that is always a CONST_INT. */ + #define MEM_OFFSET(RTX) (MEM_ATTRS (RTX) == 0 ? 0 : MEM_ATTRS (RTX)->offset) + ++/* For a MEM rtx, the address space. */ ++#define MEM_ADDR_SPACE(RTX) (MEM_ATTRS (RTX) == 0 ? ADDR_SPACE_GENERIC \ ++ : MEM_ATTRS (RTX)->addrspace) ++ + /* For a MEM rtx, the size in bytes of the MEM, if known, as an RTX that + is always a CONST_INT. */ + #define MEM_SIZE(RTX) \ +@@ -1542,7 +1547,10 @@ extern unsigned int subreg_highpart_offs + enum machine_mode); + extern int byte_lowpart_offset (enum machine_mode, enum machine_mode); + extern rtx make_safe_from (rtx, rtx); +-extern rtx convert_memory_address (enum machine_mode, rtx); ++extern rtx convert_memory_address_addr_space (enum machine_mode, rtx, ++ addr_space_t); ++#define convert_memory_address(to_mode,x) \ ++ convert_memory_address_addr_space ((to_mode), (x), ADDR_SPACE_GENERIC) + extern rtx get_insns (void); + extern const char *get_insn_name (int); + extern rtx get_last_insn (void); +diff -urNp gcc-4.4.4.orig/gcc/rtlhooks.c gcc-4.4.4/gcc/rtlhooks.c +--- a/src/gcc/rtlhooks.c 2009-02-20 ++++ b/src/gcc/rtlhooks.c 2010-06-30 +@@ -153,7 +153,8 @@ gen_lowpart_if_possible (enum machine_mo + - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); + + new_rtx = adjust_address_nv (x, mode, offset); +- if (! memory_address_p (mode, XEXP (new_rtx, 0))) ++ if (! memory_address_addr_space_p (mode, XEXP (new_rtx, 0), ++ MEM_ADDR_SPACE (x))) + return 0; + + return new_rtx; +diff -urNp gcc-4.4.4.orig/gcc/sched-deps.c gcc-4.4.4/gcc/sched-deps.c +--- a/src/gcc/sched-deps.c 2009-02-20 ++++ b/src/gcc/sched-deps.c 2010-06-30 +@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. + #include "sched-int.h" + #include "params.h" + #include "cselib.h" ++#include "target.h" + + #ifdef INSN_SCHEDULING + +@@ -1907,8 +1908,11 @@ sched_analyze_1 (struct deps *deps, rtx + + if (sched_deps_info->use_cselib) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (dest)); ++ + t = shallow_copy_rtx (dest); +- cselib_lookup (XEXP (t, 0), Pmode, 1); ++ cselib_lookup (XEXP (t, 0), address_mode, 1); + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + } + t = canon_rtx (t); +@@ -2061,8 +2065,11 @@ sched_analyze_2 (struct deps *deps, rtx + + if (sched_deps_info->use_cselib) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (t)); ++ + t = shallow_copy_rtx (t); +- cselib_lookup (XEXP (t, 0), Pmode, 1); ++ cselib_lookup (XEXP (t, 0), address_mode, 1); + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + } + t = canon_rtx (t); +diff -urNp gcc-4.4.4.orig/gcc/sel-sched-dump.c gcc-4.4.4/gcc/sel-sched-dump.c +--- a/src/gcc/sel-sched-dump.c 2010-06-30 ++++ b/src/gcc/sel-sched-dump.c 2010-06-30 +@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3. + #include "output.h" + #include "basic-block.h" + #include "cselib.h" ++#include "target.h" + + #ifdef INSN_SCHEDULING + #include "sel-sched-ir.h" +@@ -953,10 +954,13 @@ rtx + debug_mem_addr_value (rtx x) + { + rtx t, addr; ++ enum machine_mode address_mode; + + gcc_assert (MEM_P (x)); ++ address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ + t = shallow_copy_rtx (x); +- if (cselib_lookup (XEXP (t, 0), Pmode, 0)) ++ if (cselib_lookup (XEXP (t, 0), address_mode, 0)) + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + + t = canon_rtx (t); +diff -urNp gcc-4.4.4.orig/gcc/simplify-rtx.c gcc-4.4.4/gcc/simplify-rtx.c +--- a/src/gcc/simplify-rtx.c 2010-01-12 ++++ b/src/gcc/simplify-rtx.c 2010-06-30 +@@ -863,7 +863,11 @@ simplify_unary_operation_1 (enum rtx_cod + return rtl_hooks.gen_lowpart_no_emit (mode, op); + + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) +- if (! POINTERS_EXTEND_UNSIGNED ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED + && mode == Pmode && GET_MODE (op) == ptr_mode + && (CONSTANT_P (op) + || (GET_CODE (op) == SUBREG +@@ -885,7 +889,11 @@ simplify_unary_operation_1 (enum rtx_cod + return rtl_hooks.gen_lowpart_no_emit (mode, op); + + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) +- if (POINTERS_EXTEND_UNSIGNED > 0 ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED > 0 + && mode == Pmode && GET_MODE (op) == ptr_mode + && (CONSTANT_P (op) + || (GET_CODE (op) == SUBREG +diff -urNp gcc-4.4.4.orig/gcc/stor-layout.c gcc-4.4.4/gcc/stor-layout.c +--- a/src/gcc/stor-layout.c 2010-03-31 ++++ b/src/gcc/stor-layout.c 2010-06-30 +@@ -48,9 +48,9 @@ unsigned int maximum_field_alignment = T + /* ... and its original value in bytes, specified via -fpack-struct=. */ + unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT; + +-/* Nonzero if all REFERENCE_TYPEs are internal and hence should be +- allocated in Pmode, not ptr_mode. Set only by internal_reference_types +- called only by a front end. */ ++/* Nonzero if all REFERENCE_TYPEs are internal and hence should be allocated ++ in the address spaces' address_mode, not pointer_mode. Set only by ++ internal_reference_types called only by a front end. */ + static int reference_types_internal = 0; + + static void finalize_record_size (record_layout_info); +@@ -66,8 +66,8 @@ extern void debug_rli (record_layout_inf + + static GTY(()) tree pending_sizes; + +-/* Show that REFERENCE_TYPES are internal and should be Pmode. Called only +- by front end. */ ++/* Show that REFERENCE_TYPES are internal and should use address_mode. ++ Called only by front end. */ + + void + internal_reference_types (void) +@@ -1700,6 +1700,7 @@ layout_type (tree type) + /* A pointer might be MODE_PARTIAL_INT, + but ptrdiff_t must be integral. */ + SET_TYPE_MODE (type, mode_for_size (POINTER_SIZE, MODE_INT, 0)); ++ TYPE_PRECISION (type) = POINTER_SIZE; + break; + + case FUNCTION_TYPE: +@@ -1715,16 +1716,17 @@ layout_type (tree type) + case POINTER_TYPE: + case REFERENCE_TYPE: + { +- enum machine_mode mode = ((TREE_CODE (type) == REFERENCE_TYPE +- && reference_types_internal) +- ? Pmode : TYPE_MODE (type)); +- +- int nbits = GET_MODE_BITSIZE (mode); ++ enum machine_mode mode = TYPE_MODE (type); ++ if (TREE_CODE (type) == REFERENCE_TYPE && reference_types_internal) ++ { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ mode = targetm.addr_space.address_mode (as); ++ } + +- TYPE_SIZE (type) = bitsize_int (nbits); ++ TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (mode)); + TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (mode)); + TYPE_UNSIGNED (type) = 1; +- TYPE_PRECISION (type) = nbits; ++ TYPE_PRECISION (type) = GET_MODE_BITSIZE (mode); + } + break; + +diff -urNp gcc-4.4.4.orig/gcc/target-def.h gcc-4.4.4/gcc/target-def.h +--- a/src/gcc/target-def.h 2010-06-30 ++++ b/src/gcc/target-def.h 2010-06-30 +@@ -471,6 +471,48 @@ + #define TARGET_VALID_POINTER_MODE default_valid_pointer_mode + #endif + ++#ifndef TARGET_ADDR_SPACE_POINTER_MODE ++#define TARGET_ADDR_SPACE_POINTER_MODE default_addr_space_pointer_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_ADDRESS_MODE ++#define TARGET_ADDR_SPACE_ADDRESS_MODE default_addr_space_address_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_VALID_POINTER_MODE ++#define TARGET_ADDR_SPACE_VALID_POINTER_MODE \ ++ default_addr_space_valid_pointer_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P ++#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \ ++ default_addr_space_legitimate_address_p ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS ++#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS \ ++ default_addr_space_legitimize_address ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_SUBSET_P ++#define TARGET_ADDR_SPACE_SUBSET_P default_addr_space_subset_p ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_CONVERT ++#define TARGET_ADDR_SPACE_CONVERT default_addr_space_convert ++#endif ++ ++#define TARGET_ADDR_SPACE_HOOKS \ ++ { \ ++ TARGET_ADDR_SPACE_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_ADDRESS_MODE, \ ++ TARGET_ADDR_SPACE_VALID_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P, \ ++ TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS, \ ++ TARGET_ADDR_SPACE_SUBSET_P, \ ++ TARGET_ADDR_SPACE_CONVERT, \ ++ } ++ + #ifndef TARGET_SCALAR_MODE_SUPPORTED_P + #define TARGET_SCALAR_MODE_SUPPORTED_P default_scalar_mode_supported_p + #endif +@@ -906,6 +948,7 @@ + TARGET_MIN_DIVISIONS_FOR_RECIP_MUL, \ + TARGET_MODE_REP_EXTENDED, \ + TARGET_VALID_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_HOOKS, \ + TARGET_SCALAR_MODE_SUPPORTED_P, \ + TARGET_VECTOR_MODE_SUPPORTED_P, \ + TARGET_VECTOR_OPAQUE_P, \ +diff -urNp gcc-4.4.4.orig/gcc/target.h gcc-4.4.4/gcc/target.h +--- a/src/gcc/target.h 2010-06-30 ++++ b/src/gcc/target.h 2010-06-30 +@@ -68,6 +68,12 @@ typedef int (* print_switch_fn_type) (pr + /* An example implementation for ELF targets. Defined in varasm.c */ + extern int elf_record_gcc_switches (print_switch_type type, const char *); + ++/* Some places still assume that all pointer or address modes are the ++ standard Pmode and ptr_mode. These optimizations become invalid if ++ the target actually supports multiple different modes. For now, ++ we disable such optimizations on such targets, using this function. */ ++extern bool target_default_pointer_address_modes_p (void); ++ + struct stdarg_info; + struct spec_info_def; + +@@ -673,6 +679,36 @@ struct gcc_target + /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */ + bool (* valid_pointer_mode) (enum machine_mode mode); + ++ /* Support for named address spaces. */ ++ struct addr_space { ++ /* MODE to use for a pointer into another address space. */ ++ enum machine_mode (* pointer_mode) (addr_space_t); ++ ++ /* MODE to use for an address in another address space. */ ++ enum machine_mode (* address_mode) (addr_space_t); ++ ++ /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))) ++ in another address space. */ ++ bool (* valid_pointer_mode) (enum machine_mode, addr_space_t); ++ ++ /* True if an address is a valid memory address to a given named address ++ space for a given mode. */ ++ bool (* legitimate_address_p) (enum machine_mode, rtx, bool, addr_space_t); ++ ++ /* Return an updated address to convert an invalid pointer to a named ++ address space to a valid one. If NULL_RTX is returned use machine ++ independent methods to make the address valid. */ ++ rtx (* legitimize_address) (rtx, rtx, enum machine_mode, addr_space_t); ++ ++ /* True if one named address space is a subset of another named address. */ ++ bool (* subset_p) (addr_space_t, addr_space_t); ++ ++ /* Function to convert an rtl expression from one address space to ++ another. */ ++ rtx (* convert) (rtx, tree, tree); ++ ++ } addr_space; ++ + /* True if MODE is valid for the target. By "valid", we mean able to + be manipulated in non-trivial ways. In particular, this means all + the arithmetic is supported. */ +diff -urNp gcc-4.4.4.orig/gcc/targhooks.c gcc-4.4.4/gcc/targhooks.c +--- a/src/gcc/targhooks.c 2010-06-30 ++++ b/src/gcc/targhooks.c 2010-06-30 +@@ -743,6 +743,106 @@ default_vector_min_alignment (const_tree + return TYPE_ALIGN_UNIT (type); + } + ++/* Determine whether or not a pointer mode is valid. Assume defaults ++ of ptr_mode or Pmode - can be overridden. */ ++bool ++default_valid_pointer_mode (enum machine_mode mode) ++{ ++ return (mode == ptr_mode || mode == Pmode); ++} ++ ++/* Return the mode for a pointer to a given ADDRSPACE, defaulting to ptr_mode ++ for the generic address space only. */ ++ ++enum machine_mode ++default_addr_space_pointer_mode (addr_space_t addrspace ATTRIBUTE_UNUSED) ++{ ++ gcc_assert (ADDR_SPACE_GENERIC_P (addrspace)); ++ return ptr_mode; ++} ++ ++/* Return the mode for an address in a given ADDRSPACE, defaulting to Pmode ++ for the generic address space only. */ ++ ++enum machine_mode ++default_addr_space_address_mode (addr_space_t addrspace ATTRIBUTE_UNUSED) ++{ ++ gcc_assert (ADDR_SPACE_GENERIC_P (addrspace)); ++ return Pmode; ++} ++ ++/* Named address space version of valid_pointer_mode. */ ++ ++bool ++default_addr_space_valid_pointer_mode (enum machine_mode mode, addr_space_t as) ++{ ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return (mode == targetm.addr_space.pointer_mode (as) ++ || mode == targetm.addr_space.address_mode (as)); ++ ++ return targetm.valid_pointer_mode (mode); ++} ++ ++/* Some places still assume that all pointer or address modes are the ++ standard Pmode and ptr_mode. These optimizations become invalid if ++ the target actually supports multiple different modes. For now, ++ we disable such optimizations on such targets, using this function. */ ++ ++bool ++target_default_pointer_address_modes_p (void) ++{ ++ if (targetm.addr_space.address_mode != default_addr_space_address_mode) ++ return false; ++ if (targetm.addr_space.pointer_mode != default_addr_space_pointer_mode) ++ return false; ++ ++ return true; ++} ++ ++/* Named address space version of legitimate_address_p. */ ++ ++bool ++default_addr_space_legitimate_address_p (enum machine_mode mode, rtx mem, ++ bool strict, addr_space_t as) ++{ ++ gcc_unreachable (); ++} ++ ++/* Named address space version of LEGITIMIZE_ADDRESS. */ ++ ++rtx ++default_addr_space_legitimize_address (rtx x, rtx oldx, ++ enum machine_mode mode, addr_space_t as) ++{ ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return x; ++ ++ LEGITIMIZE_ADDRESS (x, oldx, mode, done); ++done: ++ return x; ++} ++ ++/* The default hook for determining if one named address space is a subset of ++ another and to return which address space to use as the common address ++ space. */ ++ ++bool ++default_addr_space_subset_p (addr_space_t subset, addr_space_t superset) ++{ ++ return (subset == superset); ++} ++ ++/* The default hook for TARGET_ADDR_SPACE_CONVERT. This hook should never be ++ called for targets with only a generic address space. */ ++ ++rtx ++default_addr_space_convert (rtx op ATTRIBUTE_UNUSED, ++ tree from_type ATTRIBUTE_UNUSED, ++ tree to_type ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ + bool + default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED) + { +diff -urNp gcc-4.4.4.orig/gcc/targhooks.h gcc-4.4.4/gcc/targhooks.h +--- a/src/gcc/targhooks.h 2010-06-30 ++++ b/src/gcc/targhooks.h 2010-06-30 +@@ -108,3 +108,15 @@ extern bool default_hard_regno_scratch_o + extern bool default_target_option_valid_attribute_p (tree, tree, tree, int); + extern bool default_target_option_pragma_parse (tree, tree); + extern bool default_target_option_can_inline_p (tree, tree); ++extern bool default_valid_pointer_mode (enum machine_mode); ++extern enum machine_mode default_addr_space_pointer_mode (addr_space_t); ++extern enum machine_mode default_addr_space_address_mode (addr_space_t); ++extern bool default_addr_space_valid_pointer_mode (enum machine_mode, ++ addr_space_t); ++extern bool default_addr_space_legitimate_address_p (enum machine_mode, rtx, ++ bool, addr_space_t); ++extern rtx default_addr_space_legitimize_address (rtx, rtx, enum machine_mode, ++ addr_space_t); ++extern bool default_addr_space_subset_p (addr_space_t, addr_space_t); ++extern rtx default_addr_space_convert (rtx, tree, tree); ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.dg/simd-1b.c gcc-4.4.4/gcc/testsuite/gcc.dg/simd-1b.c +--- a/src/gcc/testsuite/gcc.dg/simd-1b.c 2005-06-15 ++++ b/src/gcc/testsuite/gcc.dg/simd-1b.c 2010-06-30 +@@ -14,7 +14,7 @@ void + hanneke () + { + /* Operators on compatible SIMD types. */ +- a %= b; /* { dg-error "invalid operands to binary %" } */ ++ a %= b; + c &= d; + a |= b; + c ^= d; +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.dg/vector-4.c gcc-4.4.4/gcc/testsuite/gcc.dg/vector-4.c +--- a/src/gcc/testsuite/gcc.dg/vector-4.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.dg/vector-4.c 2010-06-30 +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++#define vector __attribute__((vector_size(4*sizeof(int)) )) ++ ++vector int a, b, c; ++ ++ ++/* Test that remainder works for vectors. */ ++void f(void) ++{ ++ a = b % c; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.dg/vector-init-1.c gcc-4.4.4/gcc/testsuite/gcc.dg/vector-init-1.c +--- a/src/gcc/testsuite/gcc.dg/vector-init-1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.dg/vector-init-1.c 2010-06-30 +@@ -0,0 +1,6 @@ ++/* { dg-do compile } */ ++ ++/* PR C/31499, test that the C front-end treats vectors like an array. */ ++ ++#define vector __attribute__((__vector_size__(4*sizeof(int)) )) ++vector signed int v1[]={0,1,2,3,4,5,6,7}; +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.dg/vector-init-2.c gcc-4.4.4/gcc/testsuite/gcc.dg/vector-init-2.c +--- a/src/gcc/testsuite/gcc.dg/vector-init-2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.dg/vector-init-2.c 2010-06-30 +@@ -0,0 +1,25 @@ ++/* { dg-do run } */ ++ ++/* PR C/31499, test that the C front-end treats vectors like an array ++ and that it works at runtime. */ ++ ++#define vector __attribute__((__vector_size__(4*sizeof(int)) )) ++vector signed int v1[]={0,1,2,3,4,5,6,7}; ++ ++ ++int main(void) ++{ ++ int i; ++ for (i = 0; i < sizeof(v1)/sizeof(v1[0]); i++) ++ { ++ vector int t = v1[i]; ++ int *d = (int*)&t; ++ int j; ++ for (j = 0; j < 4; j++) ++ { ++ if (d[j] != i * 4 + j) ++ __builtin_abort (); ++ } ++ } ++ return 0; ++} +\ No newline at end of file +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/s390/pr42224.c gcc-4.4.4/gcc/testsuite/gcc.target/s390/pr42224.c +--- a/src/gcc/testsuite/gcc.target/s390/pr42224.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/s390/pr42224.c 2010-06-30 +@@ -0,0 +1,36 @@ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O0" } */ ++ ++typedef char* __char_ptr32 __attribute__ (( mode (SI) )); ++typedef __char_ptr32 *__char_ptr_char_ptr32 __attribute__ ((mode (SI))); ++ ++void to_ptr32 (int x) ++{ ++ __char_ptr32 ptr = (__char_ptr32) x; ++} ++ ++void to_int (__char_ptr32 ptr) ++{ ++ int x = (int) ptr; ++} ++ ++__char_ptr_char_ptr32 ++to_ptr32_ptr32 (char **ptr64) ++{ ++ int argc; ++ __char_ptr_char_ptr32 short_argv; ++ ++ for (argc=0; ptr64[argc]; argc++); ++ ++ short_argv = (__char_ptr_char_ptr32) malloc32 ++ (sizeof (__char_ptr32) * (argc + 1)); ++ ++ for (argc=0; ptr64[argc]; argc++) ++ short_argv[argc] = (__char_ptr32) strdup32 (ptr64[argc]); ++ ++ short_argv[argc] = (__char_ptr32) 0; ++ return short_argv; ++ ++} ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/cache1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/cache1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/cache1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cache1.c 2010-06-30 +@@ -0,0 +1,195 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target "ealib" } */ ++ ++#include ++#include ++#include ++#include ++ ++#ifdef __EA64__ ++#define addr unsigned long long ++#else ++#define addr unsigned long ++#endif ++ ++static __ea void *bigblock; ++static __ea void *block; ++static int *ls_block; ++ ++extern char __cache_tag_array_size[]; ++#define CACHE_SIZE (4 * (int) &__cache_tag_array_size[0]) ++#define LINE_SIZE ((addr)128) ++ ++void ++init_mem (void) ++{ ++ bigblock = malloc_ea (CACHE_SIZE + 2 * LINE_SIZE); ++ block = malloc_ea (2 * LINE_SIZE); ++ ls_block = malloc (LINE_SIZE); ++ ++ memset_ea (bigblock, 0, CACHE_SIZE + 2 * LINE_SIZE); ++ memset_ea (block, -1, 2 * LINE_SIZE); ++ memset (ls_block, -1, LINE_SIZE); ++ cache_flush (); ++} ++ ++/* Test 1: Simple cache fetching. */ ++void ++test1 (void) ++{ ++ addr aligned = ((((addr) block) + LINE_SIZE - 1) & -LINE_SIZE); ++ int *p1 = NULL; ++ int *p2 = NULL; ++ int i = 0; ++ ++ /* First, check if the same addr give the same cache ptr. */ ++ p1 = cache_fetch ((__ea void *) aligned); ++ p2 = cache_fetch ((__ea void *) aligned); ++ ++ if (p1 != p2) ++ abort (); ++ ++ /* Check that the data actually is in the cache. */ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (p1[i] != -1) ++ abort (); ++ } ++ ++ /* Check returning within the cache line. */ ++ p2 = cache_fetch ((__ea void *) (aligned + sizeof (int))); ++ ++ if (p2 - p1 != 1) ++ abort (); ++ ++ /* Finally, check that fetching an LS pointer returns that pointer. */ ++ p1 = cache_fetch ((__ea char *) ls_block); ++ if (p1 != ls_block) ++ abort (); ++} ++ ++/* Test 2: Eviction testing. */ ++void ++test2 (void) ++{ ++ addr aligned = ((((addr) block) + LINE_SIZE - 1) & -LINE_SIZE); ++ int *p = NULL; ++ int i = 0; ++ ++ /* First check that clean evictions don't write back. */ ++ p = cache_fetch ((__ea void *) aligned); ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ p[i] = 0; ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (ls_block[i] == 0) ++ abort (); ++ } ++ ++ /* Now check that dirty evictions do write back. */ ++ p = cache_fetch_dirty ((__ea void *) aligned, LINE_SIZE); ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ p[i] = 0; ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (ls_block[i] != 0) ++ abort (); ++ } ++ ++ /* Finally, check that non-atomic writeback only writes dirty bytes. */ ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ p = cache_fetch_dirty ((__ea void *) (aligned + i * sizeof (int)), ++ (i % 2) * sizeof (int)); ++ p[0] = -1; ++ } ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if ((ls_block[i] == -1) && (i % 2 == 0)) ++ abort (); ++ if ((ls_block[i] == 0) && (i % 2 == 1)) ++ abort (); ++ } ++} ++ ++/* Test LS forced-eviction. */ ++void ++test3 (void) ++{ ++ addr aligned = ((((addr) bigblock) + LINE_SIZE - 1) & -LINE_SIZE); ++ char *test = NULL; ++ char *ls = NULL; ++ int i = 0; ++ ++ /* Init memory, fill the cache to capacity. */ ++ ls = cache_fetch_dirty ((__ea void *) aligned, LINE_SIZE); ++ for (i = 1; i < (CACHE_SIZE / LINE_SIZE); i++) ++ cache_fetch_dirty ((__ea void *) (aligned + i * LINE_SIZE), LINE_SIZE); ++ ++ memset (ls, -1, LINE_SIZE); ++ test = cache_fetch ((__ea void *) (aligned + CACHE_SIZE)); ++ ++ /* test == ls indicates cache collision. */ ++ if (test != ls) ++ abort (); ++ ++ /* Make sure it actually wrote the cache line. */ ++ for (i = 0; i < LINE_SIZE; i++) ++ { ++ if (ls[i] != 0) ++ abort (); ++ } ++ ++ ls = cache_fetch ((__ea void *) aligned); ++ ++ /* test != ls indicates another entry was evicted. */ ++ if (test == ls) ++ abort (); ++ ++ /* Make sure that the previous eviction actually wrote back. */ ++ for (i = 0; i < LINE_SIZE; i++) ++ { ++ if (ls[i] != 0xFF) ++ abort (); ++ } ++} ++ ++int ++main (int argc, char **argv) ++{ ++ init_mem (); ++ test1 (); ++ test2 (); ++ test3 (); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/cast1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/cast1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/cast1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cast1.c 2010-06-30 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++extern void abort (void); ++extern unsigned long long __ea_local_store; ++ ++__ea int *ppu; ++int x, *spu = &x, *spu2; ++ ++int ++main (int argc, char **argv) ++{ ++ ppu = (__ea int *) spu; ++ spu2 = (int *) ppu; ++ ++#ifdef __EA32__ ++ if ((int) ppu != (int) __ea_local_store + (int) spu) ++#else ++ if ((unsigned long long) ppu != __ea_local_store + (unsigned long long)(int) spu) ++#endif ++ ++ abort (); ++ ++ if (spu != spu2) ++ abort (); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/cast2.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/cast2.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/cast2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cast2.c 2010-06-30 +@@ -0,0 +1,74 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++int array[128]; ++ ++__ea int *ea; ++int *lm; ++ ++void verify_ea (void) __attribute__ ((noinline)); ++void ++verify_ea (void) ++{ ++ if (ea != (__ea int *)lm) ++ abort (); ++} ++ ++void verify_lm (void) __attribute__ ((noinline)); ++void ++verify_lm (void) ++{ ++ if ((int *)ea != lm) ++ abort (); ++} ++ ++void verify_diff (int x) __attribute__ ((noinline)); ++void ++verify_diff (int x) ++{ ++ if (ea - lm != x) ++ abort (); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ ea = 0; ++ lm = 0; ++ verify_ea (); ++ verify_lm (); ++ verify_diff (0); ++ ++ ea = &array[64]; ++ lm = &array[64]; ++ verify_ea (); ++ verify_lm (); ++ verify_diff (0); ++ ++ ea = &array[0]; ++ lm = &array[64]; ++ verify_diff (-64); ++ ++ ea = &array[64]; ++ lm = &array[0]; ++ verify_diff (64); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/compile1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/compile1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/compile1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/compile1.c 2010-06-30 +@@ -0,0 +1,109 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Valid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++/* Typedefs. */ ++typedef __ea int ea_int_t; ++typedef __ea int *ea_int_star_t; ++typedef int outer_t; ++ ++/* Externs. */ ++ ++__ea extern int i1; ++extern __ea int i2; ++extern int __ea i3; ++extern __ea ea_int_t i4; /* __ea qualifier permitted via typedef. */ ++extern int __ea __ea __ea dupe; /* __ea duplicate permitted directly. */ ++extern int __ea *ppu; ++ ++/* Pointers. */ ++__ea int *i4p; ++ ++/* Structs. */ ++struct st { ++ __ea int *p; ++}; ++ ++/* Variable definitions. */ ++__ea int ii0; ++int *__ea ii1; ++static int __ea ii2; ++ ++void ++f1 () ++{ ++ int *spu; ++ ppu = (ea_int_t *) spu; ++ ppu = (ea_int_star_t) spu; ++} ++ ++void ++f2 () ++{ ++ int *spu; ++ spu = (int *) ppu; ++ ppu = (__ea int *) spu; ++} ++ ++void ++f3 () ++{ ++ int i = sizeof (__ea int); ++} ++ ++__ea int *f4 (void) ++{ ++ return 0; ++} ++ ++int f5 (__ea int *parm) ++{ ++ static __ea int local4; ++ int tmp = local4; ++ local4 = *parm; ++ return tmp; ++} ++ ++static inline __ea void *f6 (__ea void *start) ++{ ++ return 0; ++} ++ ++void f7 (void) ++{ ++ __ea void *s1; ++ auto __ea void *s2; ++} ++ ++__ea int *f8 (__ea int *x) ++{ ++ register __ea int *y = x; ++ __ea int *z = y; ++ return z; ++} ++ ++long long f9 (__ea long long x[2]) ++{ ++ return x[0] + x[1]; ++} ++ ++void f10 () ++{ ++ static __ea outer_t o; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/compile2.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/compile2.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/compile2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/compile2.c 2010-06-30 +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Make sure __ea structure references work. */ ++ ++/* { dg-do compile } */ ++ ++typedef unsigned long int uintptr_t; ++ ++struct tostruct ++{ ++ uintptr_t selfpc; ++ long count; ++ unsigned short link; ++}; ++ ++/* froms are indexing tos */ ++static __ea unsigned short *froms; ++static __ea struct tostruct *tos = 0; ++ ++void ++foo (uintptr_t frompc, uintptr_t selfpc) ++{ ++ __ea unsigned short *frompcindex; ++ ++ frompcindex = &froms[(frompc) / (4 * sizeof (*froms))]; ++ *frompcindex = tos[0].link; ++ ++ return; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/cppdefine.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/cppdefine.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/cppdefine.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cppdefine.c 2010-06-30 +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Test default __EA32__/__EA64__ define. */ ++ ++/* { dg-do compile } */ ++ ++#if !defined (__EA32__) && !defined (__EA64__) ++#error both __EA32__ and __EA64__ undefined ++#endif ++ ++#if defined (__EA32__) && defined (__EA64__) ++#error both __EA32__ and __EA64__ defined ++#endif ++ ++#ifdef __EA32__ ++int x [ sizeof (__ea char *) == 4 ? 1 : -1 ]; ++#endif ++ ++#ifdef __EA64__ ++int x [ sizeof (__ea char *) == 8 ? 1 : -1 ]; ++#endif ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/ea.exp gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/ea.exp +--- a/src/gcc/testsuite/gcc.target/spu/ea/ea.exp 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ea.exp 2010-06-30 +@@ -0,0 +1,54 @@ ++# Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't a SPU target. ++if { ![istarget spu-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Return 1 if target __ea library functions are available ++proc check_effective_target_ealib { } { ++ return [check_no_compiler_messages ealib executable { ++ #include ++ int main (void) ++ { ++ __ea void *ptr = malloc_ea (1024); ++ return 0; ++ } ++ }] ++} ++ ++# If a testcase doesn't have special options, use these. ++# We do not use the global DEFAULT_CFLAGS as all test cases ++# in this directory use the __ea address space qualifier ++# extension and thus will not compile with -ansi. ++set DEFAULT_EA_CFLAGS "-std=gnu99 -pedantic-errors -O2" ++ ++# Initialize `dg'. ++dg-init ++ ++# Run all tests in both -mea32 and -mea64 mode. ++set tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ++dg-runtest $tests "-mea32" $DEFAULT_EA_CFLAGS ++dg-runtest $tests "-mea64" $DEFAULT_EA_CFLAGS ++ ++# All done. ++dg-finish +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/errors1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/errors1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/errors1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/errors1.c 2010-06-30 +@@ -0,0 +1,67 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Invalid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++typedef __ea int eaint; ++ ++void func () ++{ ++ register __ea int local1; /* { dg-error "'__ea' combined with 'register' qualifier for 'local1'" } */ ++ auto __ea int local2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'local2'" } */ ++ __ea int local3; /* { dg-error "'__ea' specified for auto variable 'local3'" } */ ++ register int *__ea p1; /* { dg-error "'__ea' combined with 'register' qualifier for 'p1'" } */ ++ auto char *__ea p2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'p2'" } */ ++ void *__ea p3; /* { dg-error "'__ea' specified for auto variable 'p3'" } */ ++ register __ea int a1[2]; /* { dg-error "'__ea' combined with 'register' qualifier for 'a1'" } */ ++ auto __ea char a2[1]; /* { dg-error "'__ea' combined with 'auto' qualifier for 'a2'" } */ ++ __ea char a3[5]; /* { dg-error "'__ea' specified for auto variable 'a3'" } */ ++ register eaint td1; /* { dg-error "'__ea' combined with 'register' qualifier for 'td1'" } */ ++ auto eaint td2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'td2'" } */ ++ eaint td3; /* { dg-error "'__ea' specified for auto variable 'td3'" } */ ++} ++ ++void func2 (__ea int x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ } ++ ++void func2td (eaint x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ } ++ ++struct st { ++ __ea int x; /* { dg-error "'__ea' specified for structure field 'x'" } */ ++ eaint td; /* { dg-error "'__ea' specified for structure field 'td'" } */ ++ int *__ea q; /* { dg-error "'__ea' specified for structure field 'q'" } */ ++ int __ea b : 7; /* { dg-error "'__ea' specified for structure field 'b'" } */ ++ int __ea : 1; /* { dg-error "'__ea' specified for structure field" } */ ++} s; ++ ++struct A { int a; }; ++ ++int func3 (int *__ea); /* { dg-error "'__ea' specified for unnamed parameter" } */ ++int func3 (int *__ea x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ ++ struct A i = (__ea struct A) { 1 }; /* { dg-error "compound literal qualified by address-space qualifier" } */ ++ return i.a; ++} ++ ++extern __ea int ea_var; /* { dg-message "note: previous declaration of 'ea_var' was here" } */ ++int ea_var; /* { dg-error "conflicting named address spaces \\(generic vs __ea\\) for 'ea_var'" } */ ++ ++extern eaint ea_var_td; /* { dg-message "note: previous declaration of 'ea_var_td' was here" } */ ++int ea_var_td; /* { dg-error "conflicting named address spaces \\(generic vs __ea\\) for 'ea_var_td'" } */ ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/errors2.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/errors2.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/errors2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/errors2.c 2010-06-30 +@@ -0,0 +1,107 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Invalid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++__ea char ea_str[] = "abc"; ++char lm_str[] = "abc"; ++ ++__ea char *lm_ea_ptr1 = "abc"; /* { dg-error "initializer element is not computable at load time" } */ ++__ea char *lm_ea_ptr2 = (__ea char *)"abc"; /* { dg-error "initializer element is not constant" } */ ++__ea char *lm_ea_ptr3 = ea_str; ++__ea char *lm_ea_ptr4 = (__ea char *)ea_str; ++__ea char *lm_ea_ptr5 = lm_str; /* { dg-error "initializer element is not computable at load time" } */ ++__ea char *lm_ea_ptr6 = (__ea char *)lm_str; /* { dg-error "initializer element is not constant" } */ ++ ++__ea char * __ea ea_ea_ptr1 = ea_str; ++__ea char * __ea ea_ea_ptr2 = (__ea char *)ea_str; ++ ++char * __ea ea_lm_ptr1 = lm_str; ++char * __ea ea_lm_ptr2 = (char *)lm_str; ++ ++struct foo { ++ int first; ++ __ea char *ptr; ++ int last; ++}; ++ ++__ea struct foo ea_struct1 = { ++ 10, ++ (__ea char *)0, ++ 11, ++}; ++ ++__ea struct foo ea_struct2 = { ++ 20, ++ 0, ++ 21, ++}; ++ ++struct foo ea_struct3 = { ++ 30, ++ ea_str, ++ 31, ++}; ++ ++struct foo ea_struct4 = { ++ 40, ++ (__ea char *)lm_str, /* { dg-error "(initializer element is not constant)|(near initialization)" "" } */ ++ 41, ++}; ++ ++struct bar { ++ int first; ++ char *ptr; ++ int last; ++}; ++ ++__ea struct bar ea_struct5 = { ++ 50, ++ 0, ++ 51, ++}; ++ ++__ea struct bar ea_struct6 = { ++ 60, ++ (char *)0, ++ 61, ++}; ++ ++__ea struct bar ea_struct7 = { ++ 70, ++ lm_str, ++ 71, ++}; ++ ++struct bar lm_struct8 = { ++ 80, ++ 0, ++ 81, ++}; ++ ++struct bar lm_struct9 = { ++ 90, ++ (char *)0, ++ 91, ++}; ++ ++struct bar lm_struct10 = { ++ 100, ++ lm_str, ++ 101, ++}; +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/execute1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/execute1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute1.c 2010-06-30 +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do compile } */ ++ ++#include ++ ++__ea char str[] = "abc"; ++ ++int ++main (void) ++{ ++ __ea char *p = str; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/execute2.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/execute2.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute2.c 2010-06-30 +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#include ++ ++char str[] = "abc"; ++ ++int ++main (void) ++{ ++ __ea char *p = (__ea char *)str; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/execute3.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/execute3.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute3.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute3.c 2010-06-30 +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#include ++ ++int ++main (void) ++{ ++ __ea char *p = (__ea char *)"abc"; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/ops1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/ops1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/ops1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ops1.c 2010-06-30 +@@ -0,0 +1,94 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* This is the same as ops2.c except for the compile option. ++ If you modify this code, please modify ops2.c as well. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -std=gnu99 -pedantic-errors -maddress-space-conversion" } */ ++ ++#define __lm ++ ++__ea int ea_var = 1; ++__lm int lm_var = 2; ++ ++typedef __ea int *ea_ptr_t; ++typedef __lm int *lm_ptr_t; ++ ++typedef __ea void *ea_vptr_t; ++typedef __lm void *lm_vptr_t; ++ ++ea_ptr_t ea, ea2; ++lm_ptr_t lm, lm2; ++ ++ea_vptr_t eav; ++lm_vptr_t lmv; ++ ++extern void call_ea (ea_ptr_t); ++extern void call_lm (lm_ptr_t); ++ ++/* Assignment, initialization, argument passing, and return. */ ++void to_ea (void) { ea = lm; } ++void to_lm (void) { lm = ea; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void init_ea (void) { ea_ptr_t l_ea = lm; } ++void init_lm (void) { lm_ptr_t l_lm = ea; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++ea_ptr_t ret_ea (void) { return lm; } ++lm_ptr_t ret_lm (void) { return ea; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++void call_ea2 (void) { call_ea (lm); } ++void call_lm2 (void) { call_lm (ea); } /* { dg-error "passing argument 1 of 'call_lm' from pointer to non-enclosed address space" } */ ++ ++/* Explicit casts. */ ++void to_ea_with_cast (void) { ea = (ea_ptr_t)lm; } ++void to_lm_with_cast (void) { lm = (lm_ptr_t)ea; } ++void init_ea_with_cast (void) { ea_ptr_t l_ea = (ea_ptr_t)lm; } ++void init_lm_with_cast (void) { lm_ptr_t l_lm = (lm_ptr_t)ea; } ++ea_ptr_t ret_ea_with_cast (void) { return (ea_ptr_t)lm; } ++lm_ptr_t ret_lm_with_cast (void) { return (lm_ptr_t)ea; } ++void call_ea2_with_cast (void) { call_ea ((ea_ptr_t)lm); } ++void call_lm2_with_cast (void) { call_lm ((lm_ptr_t)ea); } ++ ++/* Arithmetic operators. */ ++int sub_eaea (void) { return ea - ea2; } ++int sub_ealm (void) { return ea - lm2; } ++int sub_lmea (void) { return lm - ea2; } ++int sub_lmlm (void) { return lm - lm2; } ++ea_ptr_t if_eaea1 (int test) { return test? ea : ea2; } ++lm_ptr_t if_eaea2 (int test) { return test? ea : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_ealm1 (int test) { return test? ea : lm2; } ++lm_ptr_t if_ealm2 (int test) { return test? ea : lm2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_lmea1 (int test) { return test? lm : ea2; } ++lm_ptr_t if_lmea2 (int test) { return test? lm : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_lmlm1 (int test) { return test? lm : lm2; } ++lm_ptr_t if_lmlm2 (int test) { return test? lm : lm2; } ++ ++/* Relational operators. */ ++int eq_eaea (void) { return ea == ea2; } ++int eq_ealm (void) { return ea == lm2; } ++int eq_lmea (void) { return lm == ea2; } ++int eq_lmlm (void) { return lm == lm2; } ++int lt_eaea (void) { return ea < ea2; } ++int lt_ealm (void) { return ea < lm2; } ++int lt_lmea (void) { return lm < ea2; } ++int lt_lmlm (void) { return lm < lm2; } ++ ++/* Null pointer. */ ++void null_ea1 (void) { ea = 0; } ++void null_ea2 (void) { ea = (void *)0; } ++void null_ea3 (void) { ea = (__ea void *)0; } ++void null_lm1 (void) { lm = 0; } ++void null_lm2 (void) { lm = (void *)0; } ++void null_lm3 (void) { lm = (__ea void *)0; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/ops2.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/ops2.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/ops2.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ops2.c 2010-06-30 +@@ -0,0 +1,94 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* This is the same as ops1.c except for the compile option. ++ If you modify this code, please modify ops1.c as well. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -std=gnu99 -pedantic-errors -mno-address-space-conversion" } */ ++ ++#define __lm ++ ++__ea int ea_var = 1; ++__lm int lm_var = 2; ++ ++typedef __ea int *ea_ptr_t; ++typedef __lm int *lm_ptr_t; ++ ++typedef __ea void *ea_vptr_t; ++typedef __lm void *lm_vptr_t; ++ ++ea_ptr_t ea, ea2; ++lm_ptr_t lm, lm2; ++ ++ea_vptr_t eav; ++lm_vptr_t lmv; ++ ++extern void call_ea (ea_ptr_t); ++extern void call_lm (lm_ptr_t); ++ ++/* Assignment, initialization, argument passing, and return. */ ++void to_ea (void) { ea = lm; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void to_lm (void) { lm = ea; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void init_ea (void) { ea_ptr_t l_ea = lm; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++void init_lm (void) { lm_ptr_t l_lm = ea; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++ea_ptr_t ret_ea (void) { return lm; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++lm_ptr_t ret_lm (void) { return ea; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++void call_ea2 (void) { call_ea (lm); } /* { dg-error "passing argument 1 of 'call_ea' from pointer to non-enclosed address space" } */ ++void call_lm2 (void) { call_lm (ea); } /* { dg-error "passing argument 1 of 'call_lm' from pointer to non-enclosed address space" } */ ++ ++/* Explicit casts. */ ++void to_ea_with_cast (void) { ea = (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++void to_lm_with_cast (void) { lm = (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++void init_ea_with_cast (void) { ea_ptr_t l_ea = (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++void init_lm_with_cast (void) { lm_ptr_t l_lm = (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++ea_ptr_t ret_ea_with_cast (void) { return (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++lm_ptr_t ret_lm_with_cast (void) { return (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++void call_ea2_with_cast (void) { call_ea ((ea_ptr_t)lm); } /* { dg-warning "cast to __ea address space pointer" } */ ++void call_lm2_with_cast (void) { call_lm ((lm_ptr_t)ea); } /* { dg-warning "cast to generic address space pointer" } */ ++ ++/* Arithmetic operators. */ ++int sub_eaea (void) { return ea - ea2; } ++int sub_ealm (void) { return ea - lm2; } /* { dg-error "invalid operands to binary -" } */ ++int sub_lmea (void) { return lm - ea2; } /* { dg-error "invalid operands to binary -" } */ ++int sub_lmlm (void) { return lm - lm2; } ++ea_ptr_t if_eaea1 (int test) { return test? ea : ea2; } ++lm_ptr_t if_eaea2 (int test) { return test? ea : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_ealm1 (int test) { return test? ea : lm2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++lm_ptr_t if_ealm2 (int test) { return test? ea : lm2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++ea_ptr_t if_lmea1 (int test) { return test? lm : ea2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++lm_ptr_t if_lmea2 (int test) { return test? lm : ea2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++ea_ptr_t if_lmlm1 (int test) { return test? lm : lm2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++lm_ptr_t if_lmlm2 (int test) { return test? lm : lm2; } ++ ++/* Relational operators. */ ++int eq_eaea (void) { return ea == ea2; } ++int eq_ealm (void) { return ea == lm2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int eq_lmea (void) { return lm == ea2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int eq_lmlm (void) { return lm == lm2; } ++int lt_eaea (void) { return ea < ea2; } ++int lt_ealm (void) { return ea < lm2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int lt_lmea (void) { return lm < ea2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int lt_lmlm (void) { return lm < lm2; } ++ ++/* Null pointer. */ ++void null_ea1 (void) { ea = 0; } ++void null_ea2 (void) { ea = (void *)0; } ++void null_ea3 (void) { ea = (__ea void *)0; } ++void null_lm1 (void) { lm = 0; } ++void null_lm2 (void) { lm = (void *)0; } ++void null_lm3 (void) { lm = (__ea void *)0; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++ +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/options1.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/options1.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/options1.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/options1.c 2010-06-30 +@@ -0,0 +1,22 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Test -mcache-size. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mcache-size=128" } */ ++ ++int x; +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/pr41857.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/pr41857.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/pr41857.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/pr41857.c 2010-06-30 +@@ -0,0 +1,29 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do compile } */ ++ ++__ea char *strchr_ea (__ea const char *s, int c); ++__ea char *foo (__ea char *s) ++{ ++ __ea char *ret = s; ++ int i; ++ ++ for (i = 0; i < 3; i++) ++ ret = strchr_ea (ret, s[i]); ++ ++ return ret; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/gcc.target/spu/ea/test-sizes.c gcc-4.4.4/gcc/testsuite/gcc.target/spu/ea/test-sizes.c +--- a/src/gcc/testsuite/gcc.target/spu/ea/test-sizes.c 1970-01-01 ++++ b/src/gcc/testsuite/gcc.target/spu/ea/test-sizes.c 2010-06-30 +@@ -0,0 +1,608 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#ifdef __EA32__ ++#define EA_PTRSIZE 4 ++#endif ++#ifdef __EA64__ ++#define EA_PTRSIZE 8 ++#endif ++ ++#if !defined(LEVEL1) && !defined(LEVEL2) && !defined(LEVEL3) ++#define LEVEL1 1 /* single pointer indirection */ ++#define LEVEL2 1 /* 2 levels of pointer indirection */ ++#define LEVEL3 1 /* 3 levels of pointer indirection */ ++ ++#else ++#ifndef LEVEL1 ++#define LEVEL1 0 ++#endif ++ ++#ifndef LEVEL2 ++#define LEVEL2 0 ++#endif ++ ++#ifndef LEVEL3 ++#define LEVEL3 0 ++#endif ++#endif ++ ++#if !defined(USE_SIMPLE) && !defined(USE_COMPLEX) ++#define USE_SIMPLE 1 /* build up pointers via multiple typedefs */ ++#define USE_COMPLEX 1 /* single typedef for pointer indirections */ ++ ++#else ++#ifndef USE_SIMPLE ++#define USE_SIMPLE 0 ++#endif ++ ++#ifndef USE_COMPLEX ++#define USE_COMPLEX 0 ++#endif ++#endif ++ ++#if !defined(USE_LOCAL_VAR) && !defined(USE_EA_VAR) ++#define USE_LOCAL_VAR 1 /* use variables declared locally */ ++#define USE_EA_VAR 1 /* use variables on the host */ ++ ++#else ++#ifndef USE_LOCAL_VAR ++#define USE_LOCAL_VAR 0 ++#endif ++ ++#ifndef USE_EA_VAR ++#define USE_EA_VAR 0 ++#endif ++#endif ++ ++static int errors; ++ ++#ifdef USE_PRINTF /* print results via printf */ ++#include ++#include ++ ++static int num_tests; ++ ++#define TEST_SIZE(EXPR, EXPECTED) \ ++do { \ ++ char *msg; \ ++ \ ++ if (sizeof (EXPR) != EXPECTED) \ ++ { \ ++ msg = ", FAIL"; \ ++ errors++; \ ++ } \ ++ else \ ++ msg = ""; \ ++ \ ++ num_tests++; \ ++ printf ("sizeof %-20s = %2u, expected = %2u%s\n", \ ++ #EXPR, \ ++ (unsigned) sizeof (EXPR), \ ++ (unsigned) EXPECTED, \ ++ msg); \ ++} while (0) ++ ++#define PRINT1(FMT) printf (FMT) ++#define PRINT2(FMT,A1) printf (FMT,A1) ++#define PRINT3(FMT,A1,A2) printf (FMT,A1,A2) ++ ++#else /* standalone */ ++extern void abort (void); ++ ++#define TEST_SIZE(EXPR, EXPECTED) \ ++do { \ ++ if (sizeof (EXPR) != EXPECTED) \ ++ abort (); \ ++} while (0) ++ ++#define PRINT1(FMT) ++#define PRINT2(FMT,ARG) ++#define PRINT3(FMT,A1,A2) ++#endif ++ ++/* 'local memory' hack to keep the same spacing. */ ++#define __lm ++ ++#if USE_SIMPLE ++#if (LEVEL1 || LEVEL2 || LEVEL3) ++typedef __lm char *lm_ptr_t; ++typedef __ea char *ea_ptr_t; ++#endif ++ ++#if LEVEL1 ++#if USE_LOCAL_VAR ++__lm lm_ptr_t lm_ptr; ++__lm ea_ptr_t ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_ptr_t lm_ptr_ea; ++__ea ea_ptr_t ea_ptr_ea; ++#endif ++#endif ++ ++#if (LEVEL2 || LEVEL3) ++typedef __lm lm_ptr_t *lm_lm_ptr_t; ++typedef __ea lm_ptr_t *ea_lm_ptr_t; ++typedef __lm ea_ptr_t *lm_ea_ptr_t; ++typedef __ea ea_ptr_t *ea_ea_ptr_t; ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++__lm lm_lm_ptr_t lm_lm_ptr; ++__lm ea_lm_ptr_t ea_lm_ptr; ++__lm lm_ea_ptr_t lm_ea_ptr; ++__lm ea_ea_ptr_t ea_ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_lm_ptr_t lm_lm_ptr_ea; ++__ea ea_lm_ptr_t ea_lm_ptr_ea; ++__ea lm_ea_ptr_t lm_ea_ptr_ea; ++__ea ea_ea_ptr_t ea_ea_ptr_ea; ++#endif ++#endif ++ ++#if LEVEL3 ++typedef __lm lm_lm_ptr_t *lm_lm_lm_ptr_t; ++typedef __ea lm_lm_ptr_t *ea_lm_lm_ptr_t; ++typedef __lm ea_lm_ptr_t *lm_ea_lm_ptr_t; ++typedef __ea ea_lm_ptr_t *ea_ea_lm_ptr_t; ++typedef __lm lm_ea_ptr_t *lm_lm_ea_ptr_t; ++typedef __ea lm_ea_ptr_t *ea_lm_ea_ptr_t; ++typedef __lm ea_ea_ptr_t *lm_ea_ea_ptr_t; ++typedef __ea ea_ea_ptr_t *ea_ea_ea_ptr_t; ++ ++#if USE_LOCAL_VAR ++__lm lm_lm_lm_ptr_t lm_lm_lm_ptr; ++__lm ea_lm_lm_ptr_t ea_lm_lm_ptr; ++__lm lm_ea_lm_ptr_t lm_ea_lm_ptr; ++__lm ea_ea_lm_ptr_t ea_ea_lm_ptr; ++__lm lm_lm_ea_ptr_t lm_lm_ea_ptr; ++__lm ea_lm_ea_ptr_t ea_lm_ea_ptr; ++__lm lm_ea_ea_ptr_t lm_ea_ea_ptr; ++__lm ea_ea_ea_ptr_t ea_ea_ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_lm_lm_ptr_t lm_lm_lm_ptr_ea; ++__ea ea_lm_lm_ptr_t ea_lm_lm_ptr_ea; ++__ea lm_ea_lm_ptr_t lm_ea_lm_ptr_ea; ++__ea ea_ea_lm_ptr_t ea_ea_lm_ptr_ea; ++__ea lm_lm_ea_ptr_t lm_lm_ea_ptr_ea; ++__ea ea_lm_ea_ptr_t ea_lm_ea_ptr_ea; ++__ea lm_ea_ea_ptr_t lm_ea_ea_ptr_ea; ++__ea ea_ea_ea_ptr_t ea_ea_ea_ptr_ea; ++#endif ++#endif ++#endif ++ ++#if USE_COMPLEX ++#if LEVEL1 ++#if USE_LOCAL_VAR ++__lm char *__lm lm_cptr; ++__ea char *__lm ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__ea lm_cptr_ea; ++__ea char *__ea ea_cptr_ea; ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++__lm char *__lm *__lm lm_lm_cptr; ++__lm char *__ea *__lm ea_lm_cptr; ++__ea char *__lm *__lm lm_ea_cptr; ++__ea char *__ea *__lm ea_ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__lm *__ea lm_lm_cptr_ea; ++__lm char *__ea *__ea ea_lm_cptr_ea; ++__ea char *__lm *__ea lm_ea_cptr_ea; ++__ea char *__ea *__ea ea_ea_cptr_ea; ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++__lm char *__lm *__lm *__lm lm_lm_lm_cptr; ++__lm char *__ea *__lm *__lm lm_ea_lm_cptr; ++__ea char *__lm *__lm *__lm lm_lm_ea_cptr; ++__ea char *__ea *__lm *__lm lm_ea_ea_cptr; ++__lm char *__lm *__ea *__lm ea_lm_lm_cptr; ++__lm char *__ea *__ea *__lm ea_ea_lm_cptr; ++__ea char *__lm *__ea *__lm ea_lm_ea_cptr; ++__ea char *__ea *__ea *__lm ea_ea_ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__lm *__lm *__ea lm_lm_lm_cptr_ea; ++__lm char *__ea *__lm *__ea lm_ea_lm_cptr_ea; ++__ea char *__lm *__lm *__ea lm_lm_ea_cptr_ea; ++__ea char *__ea *__lm *__ea lm_ea_ea_cptr_ea; ++__lm char *__lm *__ea *__ea ea_lm_lm_cptr_ea; ++__lm char *__ea *__ea *__ea ea_ea_lm_cptr_ea; ++__ea char *__lm *__ea *__ea ea_lm_ea_cptr_ea; ++__ea char *__ea *__ea *__ea ea_ea_ea_cptr_ea; ++#endif ++#endif ++#endif ++ ++int ++main () ++{ ++ PRINT2 ("LEVEL1 = %d\n", LEVEL1); ++ PRINT2 ("LEVEL2 = %d\n", LEVEL2); ++ PRINT2 ("LEVEL3 = %d\n", LEVEL3); ++ PRINT2 ("USE_SIMPLE = %d\n", USE_SIMPLE); ++ PRINT2 ("USE_COMPLEX = %d\n", USE_COMPLEX); ++ PRINT2 ("USE_LOCAL_VAR = %d\n", USE_LOCAL_VAR); ++ PRINT2 ("USE_EA_VAR = %d\n", USE_EA_VAR); ++ PRINT1 ("\n"); ++ ++#if USE_SIMPLE ++#if LEVEL1 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_ptr, 4); ++ TEST_SIZE (*lm_ptr, 1); ++ TEST_SIZE ( ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (*ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_ptr_ea, 4); ++ TEST_SIZE (*lm_ptr_ea, 1); ++ TEST_SIZE ( ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (*ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_ptr, 4); ++ TEST_SIZE ( *lm_lm_ptr, 4); ++ TEST_SIZE (**lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ptr, 4); ++ TEST_SIZE ( *lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ptr, 4); ++ TEST_SIZE (**ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ptr_ea, 4); ++ TEST_SIZE (**lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ptr_ea, 4); ++ TEST_SIZE (**ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_lm_ptr, 4); ++ TEST_SIZE ( *lm_lm_lm_ptr, 4); ++ TEST_SIZE ( **lm_lm_lm_ptr, 4); ++ TEST_SIZE (***lm_lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_ptr, 4); ++ TEST_SIZE ( *lm_lm_ea_ptr, 4); ++ TEST_SIZE ( **lm_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_ptr, 4); ++ TEST_SIZE ( *lm_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_ptr, 4); ++ TEST_SIZE (***lm_ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_ptr, 4); ++ TEST_SIZE ( *lm_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_ptr, 4); ++ TEST_SIZE ( **ea_lm_lm_ptr, 4); ++ TEST_SIZE (***ea_lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_ptr, 4); ++ TEST_SIZE ( **ea_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_ptr, 4); ++ TEST_SIZE (***ea_ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( **lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE (***lm_lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( **lm_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_ptr_ea, 4); ++ TEST_SIZE (***lm_ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( **ea_lm_lm_ptr_ea, 4); ++ TEST_SIZE (***ea_lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( **ea_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_ptr_ea, 4); ++ TEST_SIZE (***ea_ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++#endif ++ ++#if USE_COMPLEX ++#if LEVEL1 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_cptr, 4); ++ TEST_SIZE (*lm_cptr, 1); ++ TEST_SIZE ( ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (*ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_cptr_ea, 4); ++ TEST_SIZE (*lm_cptr_ea, 1); ++ TEST_SIZE ( ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (*ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_cptr, 4); ++ TEST_SIZE ( *lm_lm_cptr, 4); ++ TEST_SIZE (**lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_cptr, 4); ++ TEST_SIZE ( *lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_cptr, 4); ++ TEST_SIZE (**ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_cptr_ea, 4); ++ TEST_SIZE (**lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_cptr_ea, 4); ++ TEST_SIZE (**ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_lm_cptr, 4); ++ TEST_SIZE ( *lm_lm_lm_cptr, 4); ++ TEST_SIZE ( **lm_lm_lm_cptr, 4); ++ TEST_SIZE (***lm_lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_cptr, 4); ++ TEST_SIZE ( *lm_lm_ea_cptr, 4); ++ TEST_SIZE ( **lm_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_cptr, 4); ++ TEST_SIZE ( *lm_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_cptr, 4); ++ TEST_SIZE (***lm_ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_cptr, 4); ++ TEST_SIZE ( *lm_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_cptr, 4); ++ TEST_SIZE ( **ea_lm_lm_cptr, 4); ++ TEST_SIZE (***ea_lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_cptr, 4); ++ TEST_SIZE ( **ea_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_cptr, 4); ++ TEST_SIZE (***ea_ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( **lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE (***lm_lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( **lm_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_cptr_ea, 4); ++ TEST_SIZE (***lm_ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( **ea_lm_lm_cptr_ea, 4); ++ TEST_SIZE (***ea_lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( **ea_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_cptr_ea, 4); ++ TEST_SIZE (***ea_ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++#endif ++ ++ if (errors) ++ { ++ PRINT3 ("%d error(s), %d test(s)\n", errors, num_tests); ++ abort (); ++ } ++ else ++ PRINT2 ("No errors, %d test(s)\n", num_tests); ++ ++ return 0; ++} +diff -urNp gcc-4.4.4.orig/gcc/testsuite/g++.dg/ext/vector16.C gcc-4.4.4/gcc/testsuite/g++.dg/ext/vector16.C +--- a/src/gcc/testsuite/g++.dg/ext/vector16.C 1970-01-01 ++++ b/src/gcc/testsuite/g++.dg/ext/vector16.C 2010-06-30 +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++#define vector __attribute__((vector_size(4*sizeof(int)) )) ++ ++vector int a, b, c; ++ ++ ++/* Test that remainder works for vectors. */ ++void f(void) ++{ ++ a = b % c; ++} +diff -urNp gcc-4.4.4.orig/gcc/tree.c gcc-4.4.4/gcc/tree.c +--- a/src/gcc/tree.c 2010-06-30 ++++ b/src/gcc/tree.c 2010-06-30 +@@ -1479,8 +1479,7 @@ integer_pow2p (const_tree expr) + if (TREE_CODE (expr) != INTEGER_CST) + return 0; + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -1544,9 +1543,7 @@ tree_log2 (const_tree expr) + if (TREE_CODE (expr) == COMPLEX_CST) + return tree_log2 (TREE_REALPART (expr)); + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); +- ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -1582,9 +1579,7 @@ tree_floor_log2 (const_tree expr) + if (TREE_CODE (expr) == COMPLEX_CST) + return tree_log2 (TREE_REALPART (expr)); + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); +- ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -4205,6 +4200,7 @@ set_type_quals (tree type, int type_qual + TYPE_READONLY (type) = (type_quals & TYPE_QUAL_CONST) != 0; + TYPE_VOLATILE (type) = (type_quals & TYPE_QUAL_VOLATILE) != 0; + TYPE_RESTRICT (type) = (type_quals & TYPE_QUAL_RESTRICT) != 0; ++ TYPE_ADDR_SPACE (type) = DECODE_QUAL_ADDR_SPACE (type_quals); + } + + /* Returns true iff CAND is equivalent to BASE with TYPE_QUALS. */ +@@ -5566,7 +5562,10 @@ build_pointer_type_for_mode (tree to_typ + tree + build_pointer_type (tree to_type) + { +- return build_pointer_type_for_mode (to_type, ptr_mode, false); ++ addr_space_t as = to_type == error_mark_node? ADDR_SPACE_GENERIC ++ : TYPE_ADDR_SPACE (to_type); ++ enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as); ++ return build_pointer_type_for_mode (to_type, pointer_mode, false); + } + + /* Same as build_pointer_type_for_mode, but for REFERENCE_TYPE. */ +@@ -5630,7 +5629,10 @@ build_reference_type_for_mode (tree to_t + tree + build_reference_type (tree to_type) + { +- return build_reference_type_for_mode (to_type, ptr_mode, false); ++ addr_space_t as = to_type == error_mark_node? ADDR_SPACE_GENERIC ++ : TYPE_ADDR_SPACE (to_type); ++ enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as); ++ return build_reference_type_for_mode (to_type, pointer_mode, false); + } + + /* Build a type that is compatible with t but has no cv quals anywhere +@@ -5773,6 +5775,7 @@ build_array_type (tree elt_type, tree in + t = make_node (ARRAY_TYPE); + TREE_TYPE (t) = elt_type; + TYPE_DOMAIN (t) = index_type; ++ TYPE_ADDR_SPACE (t) = TYPE_ADDR_SPACE (elt_type); + + if (index_type == 0) + { +@@ -8349,7 +8352,15 @@ signed_or_unsigned_type_for (int unsigne + { + tree t = type; + if (POINTER_TYPE_P (type)) +- t = size_type_node; ++ { ++ /* If the pointer points to the normal address space, use the ++ size_type_node. Otherwise use an appropriate size for the pointer ++ based on the named address space it points to. */ ++ if (!TYPE_ADDR_SPACE (TREE_TYPE (t))) ++ t = size_type_node; ++ else ++ return lang_hooks.types.type_for_size (TYPE_PRECISION (t), unsignedp); ++ } + + if (!INTEGRAL_TYPE_P (t) || TYPE_UNSIGNED (t) == unsignedp) + return t; +diff -urNp gcc-4.4.4.orig/gcc/tree-cfg.c gcc-4.4.4/gcc/tree-cfg.c +--- a/src/gcc/tree-cfg.c 2010-06-30 ++++ b/src/gcc/tree-cfg.c 2010-06-30 +@@ -3365,6 +3365,21 @@ verify_gimple_assign_unary (gimple stmt) + return false; + } + ++ case ADDR_SPACE_CONVERT_EXPR: ++ { ++ if (!POINTER_TYPE_P (rhs1_type) || !POINTER_TYPE_P (lhs_type) ++ || (TYPE_ADDR_SPACE (TREE_TYPE (rhs1_type)) ++ == TYPE_ADDR_SPACE (TREE_TYPE (lhs_type)))) ++ { ++ error ("invalid types in address space conversion"); ++ debug_generic_expr (lhs_type); ++ debug_generic_expr (rhs1_type); ++ return true; ++ } ++ ++ return false; ++ } ++ + case FIXED_CONVERT_EXPR: + { + if (!valid_fixed_convert_types_p (lhs_type, rhs1_type) +diff -urNp gcc-4.4.4.orig/gcc/tree.def gcc-4.4.4/gcc/tree.def +--- a/src/gcc/tree.def 2009-02-20 ++++ b/src/gcc/tree.def 2010-06-30 +@@ -763,6 +763,10 @@ DEFTREECODE (PAREN_EXPR, "paren_expr", t + represented by CONVERT_EXPR or NOP_EXPR nodes. */ + DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1) + ++/* Conversion of a pointer value to a pointer to a different ++ address space. */ ++DEFTREECODE (ADDR_SPACE_CONVERT_EXPR, "addr_space_convert_expr", tcc_unary, 1) ++ + /* Conversion of a fixed-point value to an integer, a real, or a fixed-point + value. Or conversion of a fixed-point value from an integer, a real, or + a fixed-point value. */ +diff -urNp gcc-4.4.4.orig/gcc/tree-flow.h gcc-4.4.4/gcc/tree-flow.h +--- a/src/gcc/tree-flow.h 2009-03-06 ++++ b/src/gcc/tree-flow.h 2010-06-30 +@@ -1133,7 +1133,8 @@ extern void tree_check_data_deps (void); + /* In tree-ssa-loop-ivopts.c */ + bool expr_invariant_in_loop_p (struct loop *, tree); + bool stmt_invariant_in_loop_p (struct loop *, gimple); +-bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode); ++bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode, ++ addr_space_t); + unsigned multiply_by_cost (HOST_WIDE_INT, enum machine_mode, bool); + + /* In tree-ssa-threadupdate.c. */ +@@ -1166,8 +1167,8 @@ struct mem_address + + struct affine_tree_combination; + tree create_mem_ref (gimple_stmt_iterator *, tree, +- struct affine_tree_combination *, bool); +-rtx addr_for_mem_ref (struct mem_address *, bool); ++ struct affine_tree_combination *, tree, bool); ++rtx addr_for_mem_ref (struct mem_address *, addr_space_t, bool); + void get_address_description (tree, struct mem_address *); + tree maybe_fold_tmr (tree); + +diff -urNp gcc-4.4.4.orig/gcc/tree.h gcc-4.4.4/gcc/tree.h +--- a/src/gcc/tree.h 2010-06-30 ++++ b/src/gcc/tree.h 2010-06-30 +@@ -384,7 +384,12 @@ struct tree_base GTY(()) + unsigned packed_flag : 1; + unsigned user_align : 1; + +- unsigned spare : 21; ++ unsigned spare : 13; ++ ++ /* This field is only used with type nodes; the only reason it is present ++ in tree_base instead of tree_type is to save space. The size of the ++ field must be large enough to hold addr_space_t values. */ ++ unsigned address_space : 8; + + union tree_ann_d *ann; + }; +@@ -2182,6 +2187,9 @@ extern enum machine_mode vector_type_mod + the term. */ + #define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag) + ++/* The address space the type is in. */ ++#define TYPE_ADDR_SPACE(NODE) (TYPE_CHECK (NODE)->base.address_space) ++ + /* There is a TYPE_QUAL value for each type qualifier. They can be + combined by bitwise-or to form the complete set of qualifiers for a + type. */ +@@ -2191,10 +2199,29 @@ extern enum machine_mode vector_type_mod + #define TYPE_QUAL_VOLATILE 0x2 + #define TYPE_QUAL_RESTRICT 0x4 + ++/* Encode/decode the named memory support as part of the qualifier. If more ++ than 8 qualifiers are added, these macros need to be adjusted. */ ++#define ENCODE_QUAL_ADDR_SPACE(NUM) ((NUM & 0xFF) << 8) ++#define DECODE_QUAL_ADDR_SPACE(X) (((X) >> 8) & 0xFF) ++ ++/* Return all qualifiers except for the address space qualifiers. */ ++#define CLEAR_QUAL_ADDR_SPACE(X) ((X) & ~0xFF00) ++ ++/* Only keep the address space out of the qualifiers and discard the other ++ qualifiers. */ ++#define KEEP_QUAL_ADDR_SPACE(X) ((X) & 0xFF00) ++ + /* The set of type qualifiers for this type. */ + #define TYPE_QUALS(NODE) \ + ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \ + | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \ ++ | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT) \ ++ | (ENCODE_QUAL_ADDR_SPACE (TYPE_ADDR_SPACE (NODE)))) ++ ++/* The same as TYPE_QUALS without the address space qualifications. */ ++#define TYPE_QUALS_NO_ADDR_SPACE(NODE) \ ++ ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \ ++ | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \ + | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT)) + + /* These flags are available for each language front end to use internally. */ +diff -urNp gcc-4.4.4.orig/gcc/tree-inline.c gcc-4.4.4/gcc/tree-inline.c +--- a/src/gcc/tree-inline.c 2010-02-08 ++++ b/src/gcc/tree-inline.c 2010-06-30 +@@ -2765,6 +2765,7 @@ estimate_operator_cost (enum tree_code c + case MINUS_EXPR: + case MULT_EXPR: + ++ case ADDR_SPACE_CONVERT_EXPR: + case FIXED_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + +diff -urNp gcc-4.4.4.orig/gcc/tree-pretty-print.c gcc-4.4.4/gcc/tree-pretty-print.c +--- a/src/gcc/tree-pretty-print.c 2009-02-18 ++++ b/src/gcc/tree-pretty-print.c 2010-06-30 +@@ -527,6 +527,13 @@ dump_generic_node (pretty_printer *buffe + else if (quals & TYPE_QUAL_RESTRICT) + pp_string (buffer, "restrict "); + ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ { ++ pp_string (buffer, " "); ++ } ++ + tclass = TREE_CODE_CLASS (TREE_CODE (node)); + + if (tclass == tcc_declaration) +@@ -603,6 +610,13 @@ dump_generic_node (pretty_printer *buffe + if (quals & TYPE_QUAL_RESTRICT) + pp_string (buffer, " restrict"); + ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ { ++ pp_string (buffer, " "); ++ } ++ + if (TYPE_REF_CAN_ALIAS_ALL (node)) + pp_string (buffer, " {ref-all}"); + } +@@ -1383,6 +1397,7 @@ dump_generic_node (pretty_printer *buffe + NIY; + break; + ++ case ADDR_SPACE_CONVERT_EXPR: + case FIXED_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + case FLOAT_EXPR: +diff -urNp gcc-4.4.4.orig/gcc/tree-ssa-address.c gcc-4.4.4/gcc/tree-ssa-address.c +--- a/src/gcc/tree-ssa-address.c 2010-04-08 ++++ b/src/gcc/tree-ssa-address.c 2010-06-30 +@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3. + #include "expr.h" + #include "ggc.h" + #include "tree-affine.h" ++#include "target.h" + + /* TODO -- handling of symbols (according to Richard Hendersons + comments, http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00949.html): +@@ -70,33 +71,39 @@ along with GCC; see the file COPYING3. + /* A "template" for memory address, used to determine whether the address is + valid for mode. */ + +-struct mem_addr_template GTY (()) ++typedef struct mem_addr_template GTY (()) + { + rtx ref; /* The template. */ + rtx * GTY ((skip)) step_p; /* The point in template where the step should be + filled in. */ + rtx * GTY ((skip)) off_p; /* The point in template where the offset should + be filled in. */ +-}; ++} mem_addr_template; + +-/* The templates. Each of the five bits of the index corresponds to one +- component of TARGET_MEM_REF being present, see TEMPL_IDX. */ ++DEF_VEC_O (mem_addr_template); ++DEF_VEC_ALLOC_O (mem_addr_template, gc); + +-static GTY (()) struct mem_addr_template templates[32]; ++/* The templates. Each of the low five bits of the index corresponds to one ++ component of TARGET_MEM_REF being present, while the high bits identify ++ the address space. See TEMPL_IDX. */ + +-#define TEMPL_IDX(SYMBOL, BASE, INDEX, STEP, OFFSET) \ +- (((SYMBOL != 0) << 4) \ ++static GTY(()) VEC (mem_addr_template, gc) *mem_addr_template_list; ++ ++#define TEMPL_IDX(AS, SYMBOL, BASE, INDEX, STEP, OFFSET) \ ++ (((int) (AS) << 5) \ ++ | ((SYMBOL != 0) << 4) \ + | ((BASE != 0) << 3) \ + | ((INDEX != 0) << 2) \ + | ((STEP != 0) << 1) \ + | (OFFSET != 0)) + + /* Stores address for memory reference with parameters SYMBOL, BASE, INDEX, +- STEP and OFFSET to *ADDR. Stores pointers to where step is placed to +- *STEP_P and offset to *OFFSET_P. */ ++ STEP and OFFSET to *ADDR using address mode ADDRESS_MODE. Stores pointers ++ to where step is placed to *STEP_P and offset to *OFFSET_P. */ + + static void +-gen_addr_rtx (rtx symbol, rtx base, rtx index, rtx step, rtx offset, ++gen_addr_rtx (enum machine_mode address_mode, ++ rtx symbol, rtx base, rtx index, rtx step, rtx offset, + rtx *addr, rtx **step_p, rtx **offset_p) + { + rtx act_elem; +@@ -112,7 +119,7 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + act_elem = index; + if (step) + { +- act_elem = gen_rtx_MULT (Pmode, act_elem, step); ++ act_elem = gen_rtx_MULT (address_mode, act_elem, step); + + if (step_p) + *step_p = &XEXP (act_elem, 1); +@@ -124,7 +131,7 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + if (base) + { + if (*addr) +- *addr = simplify_gen_binary (PLUS, Pmode, base, *addr); ++ *addr = simplify_gen_binary (PLUS, address_mode, base, *addr); + else + *addr = base; + } +@@ -134,7 +141,7 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + act_elem = symbol; + if (offset) + { +- act_elem = gen_rtx_PLUS (Pmode, act_elem, offset); ++ act_elem = gen_rtx_PLUS (address_mode, act_elem, offset); + + if (offset_p) + *offset_p = &XEXP (act_elem, 1); +@@ -142,11 +149,11 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + if (GET_CODE (symbol) == SYMBOL_REF + || GET_CODE (symbol) == LABEL_REF + || GET_CODE (symbol) == CONST) +- act_elem = gen_rtx_CONST (Pmode, act_elem); ++ act_elem = gen_rtx_CONST (address_mode, act_elem); + } + + if (*addr) +- *addr = gen_rtx_PLUS (Pmode, *addr, act_elem); ++ *addr = gen_rtx_PLUS (address_mode, *addr, act_elem); + else + *addr = act_elem; + } +@@ -154,7 +161,7 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + { + if (*addr) + { +- *addr = gen_rtx_PLUS (Pmode, *addr, offset); ++ *addr = gen_rtx_PLUS (address_mode, *addr, offset); + if (offset_p) + *offset_p = &XEXP (*addr, 1); + } +@@ -170,55 +177,64 @@ gen_addr_rtx (rtx symbol, rtx base, rtx + *addr = const0_rtx; + } + +-/* Returns address for TARGET_MEM_REF with parameters given by ADDR. ++/* Returns address for TARGET_MEM_REF with parameters given by ADDR ++ in address space AS. + If REALLY_EXPAND is false, just make fake registers instead + of really expanding the operands, and perform the expansion in-place + by using one of the "templates". */ + + rtx +-addr_for_mem_ref (struct mem_address *addr, bool really_expand) ++addr_for_mem_ref (struct mem_address *addr, addr_space_t as, ++ bool really_expand) + { ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + rtx address, sym, bse, idx, st, off; +- static bool templates_initialized = false; + struct mem_addr_template *templ; + + if (addr->step && !integer_onep (addr->step)) + st = immed_double_const (TREE_INT_CST_LOW (addr->step), +- TREE_INT_CST_HIGH (addr->step), Pmode); ++ TREE_INT_CST_HIGH (addr->step), address_mode); + else + st = NULL_RTX; + + if (addr->offset && !integer_zerop (addr->offset)) + off = immed_double_const (TREE_INT_CST_LOW (addr->offset), +- TREE_INT_CST_HIGH (addr->offset), Pmode); ++ TREE_INT_CST_HIGH (addr->offset), address_mode); + else + off = NULL_RTX; + + if (!really_expand) + { ++ unsigned int templ_index ++ = TEMPL_IDX (as, addr->symbol, addr->base, addr->index, st, off); ++ ++ if (templ_index ++ >= VEC_length (mem_addr_template, mem_addr_template_list)) ++ VEC_safe_grow_cleared (mem_addr_template, gc, mem_addr_template_list, ++ templ_index + 1); ++ + /* Reuse the templates for addresses, so that we do not waste memory. */ +- if (!templates_initialized) ++ templ = VEC_index (mem_addr_template, mem_addr_template_list, templ_index); ++ if (!templ->ref) + { +- unsigned i; +- +- templates_initialized = true; +- sym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup ("test_symbol")); +- bse = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); +- idx = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 2); +- +- for (i = 0; i < 32; i++) +- gen_addr_rtx ((i & 16 ? sym : NULL_RTX), +- (i & 8 ? bse : NULL_RTX), +- (i & 4 ? idx : NULL_RTX), +- (i & 2 ? const0_rtx : NULL_RTX), +- (i & 1 ? const0_rtx : NULL_RTX), +- &templates[i].ref, +- &templates[i].step_p, +- &templates[i].off_p); ++ sym = (addr->symbol ? ++ gen_rtx_SYMBOL_REF (address_mode, ggc_strdup ("test_symbol")) ++ : NULL_RTX); ++ bse = (addr->base ? ++ gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1) ++ : NULL_RTX); ++ idx = (addr->index ? ++ gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 2) ++ : NULL_RTX); ++ ++ gen_addr_rtx (address_mode, sym, bse, idx, ++ st? const0_rtx : NULL_RTX, ++ off? const0_rtx : NULL_RTX, ++ &templ->ref, ++ &templ->step_p, ++ &templ->off_p); + } + +- templ = templates + TEMPL_IDX (addr->symbol, addr->base, addr->index, +- st, off); + if (st) + *templ->step_p = st; + if (off) +@@ -230,16 +246,16 @@ addr_for_mem_ref (struct mem_address *ad + /* Otherwise really expand the expressions. */ + sym = (addr->symbol + ? expand_expr (build_addr (addr->symbol, current_function_decl), +- NULL_RTX, Pmode, EXPAND_NORMAL) ++ NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + bse = (addr->base +- ? expand_expr (addr->base, NULL_RTX, Pmode, EXPAND_NORMAL) ++ ? expand_expr (addr->base, NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + idx = (addr->index +- ? expand_expr (addr->index, NULL_RTX, Pmode, EXPAND_NORMAL) ++ ? expand_expr (addr->index, NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + +- gen_addr_rtx (sym, bse, idx, st, off, &address, NULL, NULL); ++ gen_addr_rtx (address_mode, sym, bse, idx, st, off, &address, NULL, NULL); + return address; + } + +@@ -306,15 +322,16 @@ tree_mem_ref_addr (tree type, tree mem_r + ADDR is valid on the current target. */ + + static bool +-valid_mem_ref_p (enum machine_mode mode, struct mem_address *addr) ++valid_mem_ref_p (enum machine_mode mode, addr_space_t as, ++ struct mem_address *addr) + { + rtx address; + +- address = addr_for_mem_ref (addr, false); ++ address = addr_for_mem_ref (addr, as, false); + if (!address) + return false; + +- return memory_address_p (mode, address); ++ return memory_address_addr_space_p (mode, address, as); + } + + /* Checks whether a TARGET_MEM_REF with type TYPE and parameters given by ADDR +@@ -324,7 +341,7 @@ valid_mem_ref_p (enum machine_mode mode, + static tree + create_mem_ref_raw (tree type, struct mem_address *addr) + { +- if (!valid_mem_ref_p (TYPE_MODE (type), addr)) ++ if (!valid_mem_ref_p (TYPE_MODE (type), TYPE_ADDR_SPACE (type), addr)) + return NULL_TREE; + + if (addr->step && integer_onep (addr->step)) +@@ -376,6 +393,39 @@ move_fixed_address_to_symbol (struct mem + aff_combination_remove_elt (addr, i); + } + ++/* If ADDR contains an instance of BASE_HINT, move it to PARTS->base. */ ++ ++static void ++move_hint_to_base (tree type, struct mem_address *parts, tree base_hint, ++ aff_tree *addr) ++{ ++ unsigned i; ++ tree val = NULL_TREE; ++ int qual; ++ ++ for (i = 0; i < addr->n; i++) ++ { ++ if (!double_int_one_p (addr->elts[i].coef)) ++ continue; ++ ++ val = addr->elts[i].val; ++ if (operand_equal_p (val, base_hint, 0)) ++ break; ++ } ++ ++ if (i == addr->n) ++ return; ++ ++ /* Cast value to appropriate pointer type. We cannot use a pointer ++ to TYPE directly, as the back-end will assume registers of pointer ++ type are aligned, and just the base itself may not actually be. ++ We use void pointer to the type's address space instead. */ ++ qual = ENCODE_QUAL_ADDR_SPACE (TYPE_ADDR_SPACE (type)); ++ type = build_qualified_type (void_type_node, qual); ++ parts->base = fold_convert (build_pointer_type (type), val); ++ aff_combination_remove_elt (addr, i); ++} ++ + /* If ADDR contains an address of a dereferenced pointer, move it to + PARTS->base. */ + +@@ -437,9 +487,11 @@ add_to_parts (struct mem_address *parts, + element(s) to PARTS. */ + + static void +-most_expensive_mult_to_index (struct mem_address *parts, aff_tree *addr, +- bool speed) ++most_expensive_mult_to_index (tree type, struct mem_address *parts, ++ aff_tree *addr, bool speed) + { ++ addr_space_t as = TYPE_ADDR_SPACE (type); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + HOST_WIDE_INT coef; + double_int best_mult, amult, amult_neg; + unsigned best_mult_cost = 0, acost; +@@ -453,14 +505,12 @@ most_expensive_mult_to_index (struct mem + if (!double_int_fits_in_shwi_p (addr->elts[i].coef)) + continue; + +- /* FIXME: Should use the correct memory mode rather than Pmode. */ +- + coef = double_int_to_shwi (addr->elts[i].coef); + if (coef == 1 +- || !multiplier_allowed_in_address_p (coef, Pmode)) ++ || !multiplier_allowed_in_address_p (coef, TYPE_MODE (type), as)) + continue; + +- acost = multiply_by_cost (coef, Pmode, speed); ++ acost = multiply_by_cost (coef, address_mode, speed); + + if (acost > best_mult_cost) + { +@@ -503,8 +553,10 @@ most_expensive_mult_to_index (struct mem + parts->step = double_int_to_tree (sizetype, best_mult); + } + +-/* Splits address ADDR into PARTS. +- ++/* Splits address ADDR for a memory access of type TYPE into PARTS. ++ If BASE_HINT is non-NULL, it specifies an SSA name to be used ++ preferentially as base of the reference. ++ + TODO -- be more clever about the distribution of the elements of ADDR + to PARTS. Some architectures do not support anything but single + register in address, possibly with a small integer offset; while +@@ -513,7 +565,8 @@ most_expensive_mult_to_index (struct mem + addressing modes is useless. */ + + static void +-addr_to_parts (aff_tree *addr, struct mem_address *parts, bool speed) ++addr_to_parts (tree type, aff_tree *addr, tree base_hint, ++ struct mem_address *parts, bool speed) + { + tree part; + unsigned i; +@@ -533,12 +586,14 @@ addr_to_parts (aff_tree *addr, struct me + + /* First move the most expensive feasible multiplication + to index. */ +- most_expensive_mult_to_index (parts, addr, speed); ++ most_expensive_mult_to_index (type, parts, addr, speed); + + /* Try to find a base of the reference. Since at the moment + there is no reliable way how to distinguish between pointer and its + offset, this is just a guess. */ +- if (!parts->symbol) ++ if (!parts->symbol && base_hint) ++ move_hint_to_base (type, parts, base_hint, addr); ++ if (!parts->symbol && !parts->base) + move_pointer_to_base (parts, addr); + + /* Then try to process the remaining elements. */ +@@ -575,13 +630,13 @@ gimplify_mem_ref_parts (gimple_stmt_iter + + tree + create_mem_ref (gimple_stmt_iterator *gsi, tree type, aff_tree *addr, +- bool speed) ++ tree base_hint, bool speed) + { + tree mem_ref, tmp; + tree atype; + struct mem_address parts; + +- addr_to_parts (addr, &parts, speed); ++ addr_to_parts (type, addr, base_hint, &parts, speed); + gimplify_mem_ref_parts (gsi, &parts); + mem_ref = create_mem_ref_raw (type, &parts); + if (mem_ref) +diff -urNp gcc-4.4.4.orig/gcc/tree-ssa.c gcc-4.4.4/gcc/tree-ssa.c +--- a/src/gcc/tree-ssa.c 2009-08-03 ++++ b/src/gcc/tree-ssa.c 2010-06-30 +@@ -1075,6 +1075,11 @@ useless_type_conversion_p_1 (tree outer_ + if (POINTER_TYPE_P (inner_type) + && POINTER_TYPE_P (outer_type)) + { ++ /* Do not lose casts between pointers to different address spaces. */ ++ if (TYPE_ADDR_SPACE (TREE_TYPE (outer_type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (inner_type))) ++ return false; ++ + /* Do not lose casts to restrict qualified pointers. */ + if ((TYPE_RESTRICT (outer_type) + != TYPE_RESTRICT (inner_type)) +@@ -1235,7 +1240,14 @@ useless_type_conversion_p (tree outer_ty + if (POINTER_TYPE_P (inner_type) + && POINTER_TYPE_P (outer_type) + && TREE_CODE (TREE_TYPE (outer_type)) == VOID_TYPE) +- return true; ++ { ++ /* Do not lose casts between pointers to different address spaces. */ ++ if (TYPE_ADDR_SPACE (TREE_TYPE (outer_type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (inner_type))) ++ return false; ++ ++ return true; ++ } + + return useless_type_conversion_p_1 (outer_type, inner_type); + } +diff -urNp gcc-4.4.4.orig/gcc/tree-ssa-loop-ivopts.c gcc-4.4.4/gcc/tree-ssa-loop-ivopts.c +--- a/src/gcc/tree-ssa-loop-ivopts.c 2010-06-30 ++++ b/src/gcc/tree-ssa-loop-ivopts.c 2010-06-30 +@@ -2575,21 +2575,25 @@ seq_cost (rtx seq, bool speed) + static rtx + produce_memory_decl_rtl (tree obj, int *regno) + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (obj)); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + rtx x; + + gcc_assert (obj); + if (TREE_STATIC (obj) || DECL_EXTERNAL (obj)) + { + const char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (obj)); +- x = gen_rtx_SYMBOL_REF (Pmode, name); ++ x = gen_rtx_SYMBOL_REF (address_mode, name); + SET_SYMBOL_REF_DECL (x, obj); + x = gen_rtx_MEM (DECL_MODE (obj), x); ++ set_mem_addr_space (x, as); + targetm.encode_section_info (obj, x, true); + } + else + { +- x = gen_raw_REG (Pmode, (*regno)++); ++ x = gen_raw_REG (address_mode, (*regno)++); + x = gen_rtx_MEM (DECL_MODE (obj), x); ++ set_mem_addr_space (x, as); + } + + return x; +@@ -2677,7 +2681,8 @@ computation_cost (tree expr, bool speed) + + cost = seq_cost (seq, speed); + if (MEM_P (rslt)) +- cost += address_cost (XEXP (rslt, 0), TYPE_MODE (type), speed); ++ cost += address_cost (XEXP (rslt, 0), TYPE_MODE (type), ++ TYPE_ADDR_SPACE (type), speed); + + return cost; + } +@@ -2953,124 +2958,153 @@ multiply_by_cost (HOST_WIDE_INT cst, enu + } + + /* Returns true if multiplying by RATIO is allowed in an address. Test the +- validity for a memory reference accessing memory of mode MODE. */ ++ validity for a memory reference accessing memory of mode MODE in ++ address space AS. */ ++ ++DEF_VEC_P (sbitmap); ++DEF_VEC_ALLOC_P (sbitmap, heap); + + bool +-multiplier_allowed_in_address_p (HOST_WIDE_INT ratio, enum machine_mode mode) ++multiplier_allowed_in_address_p (HOST_WIDE_INT ratio, enum machine_mode mode, ++ addr_space_t as) + { + #define MAX_RATIO 128 +- static sbitmap valid_mult[MAX_MACHINE_MODE]; +- +- if (!valid_mult[mode]) ++ unsigned int data_index = (int) as * MAX_MACHINE_MODE + (int) mode; ++ static VEC (sbitmap, heap) *valid_mult_list; ++ sbitmap valid_mult; ++ ++ if (data_index >= VEC_length (sbitmap, valid_mult_list)) ++ VEC_safe_grow_cleared (sbitmap, heap, valid_mult_list, data_index + 1); ++ ++ valid_mult = VEC_index (sbitmap, valid_mult_list, data_index); ++ if (!valid_mult) + { +- rtx reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); ++ rtx reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); + rtx addr; + HOST_WIDE_INT i; + +- valid_mult[mode] = sbitmap_alloc (2 * MAX_RATIO + 1); +- sbitmap_zero (valid_mult[mode]); +- addr = gen_rtx_fmt_ee (MULT, Pmode, reg1, NULL_RTX); ++ valid_mult = sbitmap_alloc (2 * MAX_RATIO + 1); ++ sbitmap_zero (valid_mult); ++ addr = gen_rtx_fmt_ee (MULT, address_mode, reg1, NULL_RTX); + for (i = -MAX_RATIO; i <= MAX_RATIO; i++) + { +- XEXP (addr, 1) = gen_int_mode (i, Pmode); +- if (memory_address_p (mode, addr)) +- SET_BIT (valid_mult[mode], i + MAX_RATIO); ++ XEXP (addr, 1) = gen_int_mode (i, address_mode); ++ if (memory_address_addr_space_p (mode, addr, as)) ++ SET_BIT (valid_mult, i + MAX_RATIO); + } + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " allowed multipliers:"); + for (i = -MAX_RATIO; i <= MAX_RATIO; i++) +- if (TEST_BIT (valid_mult[mode], i + MAX_RATIO)) ++ if (TEST_BIT (valid_mult, i + MAX_RATIO)) + fprintf (dump_file, " %d", (int) i); + fprintf (dump_file, "\n"); + fprintf (dump_file, "\n"); + } ++ ++ VEC_replace (sbitmap, valid_mult_list, data_index, valid_mult); + } + + if (ratio > MAX_RATIO || ratio < -MAX_RATIO) + return false; + +- return TEST_BIT (valid_mult[mode], ratio + MAX_RATIO); ++ return TEST_BIT (valid_mult, ratio + MAX_RATIO); + } + + /* Returns cost of address in shape symbol + var + OFFSET + RATIO * index. + If SYMBOL_PRESENT is false, symbol is omitted. If VAR_PRESENT is false, + variable is omitted. Compute the cost for a memory reference that accesses +- a memory location of mode MEM_MODE. ++ a memory location of mode MEM_MODE in address space AS. + + TODO -- there must be some better way. This all is quite crude. */ + ++typedef struct ++{ ++ HOST_WIDE_INT min_offset, max_offset; ++ unsigned costs[2][2][2][2]; ++} *address_cost_data; ++ ++DEF_VEC_P (address_cost_data); ++DEF_VEC_ALLOC_P (address_cost_data, heap); ++ + static comp_cost + get_address_cost (bool symbol_present, bool var_present, + unsigned HOST_WIDE_INT offset, HOST_WIDE_INT ratio, +- enum machine_mode mem_mode, ++ enum machine_mode mem_mode, addr_space_t as, + bool speed) + { +- static bool initialized[MAX_MACHINE_MODE]; +- static HOST_WIDE_INT rat[MAX_MACHINE_MODE], off[MAX_MACHINE_MODE]; +- static HOST_WIDE_INT min_offset[MAX_MACHINE_MODE], max_offset[MAX_MACHINE_MODE]; +- static unsigned costs[MAX_MACHINE_MODE][2][2][2][2]; ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); ++ static VEC(address_cost_data, heap) *address_cost_data_list; ++ unsigned int data_index = (int) as * MAX_MACHINE_MODE + (int) mem_mode; ++ address_cost_data data; + unsigned cost, acost, complexity; + bool offset_p, ratio_p; + HOST_WIDE_INT s_offset; + unsigned HOST_WIDE_INT mask; + unsigned bits; + +- if (!initialized[mem_mode]) ++ if (data_index >= VEC_length (address_cost_data, address_cost_data_list)) ++ VEC_safe_grow_cleared (address_cost_data, heap, address_cost_data_list, ++ data_index + 1); ++ ++ data = VEC_index (address_cost_data, address_cost_data_list, data_index); ++ if (!data) + { + HOST_WIDE_INT i; + HOST_WIDE_INT start = BIGGEST_ALIGNMENT / BITS_PER_UNIT; ++ HOST_WIDE_INT rat, off; + int old_cse_not_expected; + unsigned sym_p, var_p, off_p, rat_p, add_c; + rtx seq, addr, base; + rtx reg0, reg1; + +- initialized[mem_mode] = true; ++ data = (address_cost_data) xcalloc (1, sizeof (*data)); + +- reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); ++ reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); + +- addr = gen_rtx_fmt_ee (PLUS, Pmode, reg1, NULL_RTX); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, reg1, NULL_RTX); + for (i = start; i <= 1 << 20; i <<= 1) + { +- XEXP (addr, 1) = gen_int_mode (i, Pmode); +- if (!memory_address_p (mem_mode, addr)) ++ XEXP (addr, 1) = gen_int_mode (i, address_mode); ++ if (!memory_address_addr_space_p (mem_mode, addr, as)) + break; + } +- max_offset[mem_mode] = i == start ? 0 : i >> 1; +- off[mem_mode] = max_offset[mem_mode]; ++ data->max_offset = i == start ? 0 : i >> 1; ++ off = data->max_offset; + + for (i = start; i <= 1 << 20; i <<= 1) + { +- XEXP (addr, 1) = gen_int_mode (-i, Pmode); +- if (!memory_address_p (mem_mode, addr)) ++ XEXP (addr, 1) = gen_int_mode (-i, address_mode); ++ if (!memory_address_addr_space_p (mem_mode, addr, as)) + break; + } +- min_offset[mem_mode] = i == start ? 0 : -(i >> 1); ++ data->min_offset = i == start ? 0 : -(i >> 1); + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "get_address_cost:\n"); + fprintf (dump_file, " min offset %s %d\n", + GET_MODE_NAME (mem_mode), +- (int) min_offset[mem_mode]); ++ (int) data->min_offset); + fprintf (dump_file, " max offset %s %d\n", + GET_MODE_NAME (mem_mode), +- (int) max_offset[mem_mode]); ++ (int) data->max_offset); + } + +- rat[mem_mode] = 1; ++ rat = 1; + for (i = 2; i <= MAX_RATIO; i++) +- if (multiplier_allowed_in_address_p (i, mem_mode)) ++ if (multiplier_allowed_in_address_p (i, mem_mode, as)) + { +- rat[mem_mode] = i; ++ rat = i; + break; + } + + /* Compute the cost of various addressing modes. */ + acost = 0; +- reg0 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); +- reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 2); ++ reg0 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); ++ reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 2); + + for (i = 0; i < 16; i++) + { +@@ -3081,15 +3115,15 @@ get_address_cost (bool symbol_present, b + + addr = reg0; + if (rat_p) +- addr = gen_rtx_fmt_ee (MULT, Pmode, addr, +- gen_int_mode (rat[mem_mode], Pmode)); ++ addr = gen_rtx_fmt_ee (MULT, address_mode, addr, ++ gen_int_mode (rat, address_mode)); + + if (var_p) +- addr = gen_rtx_fmt_ee (PLUS, Pmode, addr, reg1); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, addr, reg1); + + if (sym_p) + { +- base = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup ("")); ++ base = gen_rtx_SYMBOL_REF (address_mode, ggc_strdup ("")); + /* ??? We can run into trouble with some backends by presenting + it with symbols which haven't been properly passed through + targetm.encode_section_info. By setting the local bit, we +@@ -3097,36 +3131,35 @@ get_address_cost (bool symbol_present, b + SYMBOL_REF_FLAGS (base) = SYMBOL_FLAG_LOCAL; + + if (off_p) +- base = gen_rtx_fmt_e (CONST, Pmode, +- gen_rtx_fmt_ee (PLUS, Pmode, +- base, +- gen_int_mode (off[mem_mode], +- Pmode))); ++ base = gen_rtx_fmt_e (CONST, address_mode, ++ gen_rtx_fmt_ee ++ (PLUS, address_mode, base, ++ gen_int_mode (off, address_mode))); + } + else if (off_p) +- base = gen_int_mode (off[mem_mode], Pmode); ++ base = gen_int_mode (off, address_mode); + else + base = NULL_RTX; + + if (base) +- addr = gen_rtx_fmt_ee (PLUS, Pmode, addr, base); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, addr, base); + + start_sequence (); + /* To avoid splitting addressing modes, pretend that no cse will + follow. */ + old_cse_not_expected = cse_not_expected; + cse_not_expected = true; +- addr = memory_address (mem_mode, addr); ++ addr = memory_address_addr_space (mem_mode, addr, as); + cse_not_expected = old_cse_not_expected; + seq = get_insns (); + end_sequence (); + + acost = seq_cost (seq, speed); +- acost += address_cost (addr, mem_mode, speed); ++ acost += address_cost (addr, mem_mode, as, speed); + + if (!acost) + acost = 1; +- costs[mem_mode][sym_p][var_p][off_p][rat_p] = acost; ++ data->costs[sym_p][var_p][off_p][rat_p] = acost; + } + + /* On some targets, it is quite expensive to load symbol to a register, +@@ -3141,19 +3174,19 @@ get_address_cost (bool symbol_present, b + If VAR_PRESENT is true, try whether the mode with + SYMBOL_PRESENT = false is cheaper even with cost of addition, and + if this is the case, use it. */ +- add_c = add_cost (Pmode, speed); ++ add_c = add_cost (address_mode, speed); + for (i = 0; i < 8; i++) + { + var_p = i & 1; + off_p = (i >> 1) & 1; + rat_p = (i >> 2) & 1; + +- acost = costs[mem_mode][0][1][off_p][rat_p] + 1; ++ acost = data->costs[0][1][off_p][rat_p] + 1; + if (var_p) + acost += add_c; + +- if (acost < costs[mem_mode][1][var_p][off_p][rat_p]) +- costs[mem_mode][1][var_p][off_p][rat_p] = acost; ++ if (acost < data->costs[1][var_p][off_p][rat_p]) ++ data->costs[1][var_p][off_p][rat_p] = acost; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -3177,14 +3210,17 @@ get_address_cost (bool symbol_present, b + if (rat_p) + fprintf (dump_file, "rat * "); + +- acost = costs[mem_mode][sym_p][var_p][off_p][rat_p]; ++ acost = data->costs[sym_p][var_p][off_p][rat_p]; + fprintf (dump_file, "index costs %d\n", acost); + } + fprintf (dump_file, "\n"); + } ++ ++ VEC_replace (address_cost_data, address_cost_data_list, ++ data_index, data); + } + +- bits = GET_MODE_BITSIZE (Pmode); ++ bits = GET_MODE_BITSIZE (address_mode); + mask = ~(~(unsigned HOST_WIDE_INT) 0 << (bits - 1) << 1); + offset &= mask; + if ((offset >> (bits - 1) & 1)) +@@ -3193,18 +3229,18 @@ get_address_cost (bool symbol_present, b + + cost = 0; + offset_p = (s_offset != 0 +- && min_offset[mem_mode] <= s_offset +- && s_offset <= max_offset[mem_mode]); ++ && data->min_offset <= s_offset ++ && s_offset <= data->max_offset); + ratio_p = (ratio != 1 +- && multiplier_allowed_in_address_p (ratio, mem_mode)); ++ && multiplier_allowed_in_address_p (ratio, mem_mode, as)); + + if (ratio != 1 && !ratio_p) +- cost += multiply_by_cost (ratio, Pmode, speed); ++ cost += multiply_by_cost (ratio, address_mode, speed); + + if (s_offset && !offset_p && !symbol_present) +- cost += add_cost (Pmode, speed); ++ cost += add_cost (address_mode, speed); + +- acost = costs[mem_mode][symbol_present][var_present][offset_p][ratio_p]; ++ acost = data->costs[symbol_present][var_present][offset_p][ratio_p]; + complexity = (symbol_present != 0) + (var_present != 0) + offset_p + ratio_p; + return new_cost (cost + acost, complexity); + } +@@ -3421,6 +3457,7 @@ ptr_difference_cost (struct ivopts_data + unsigned HOST_WIDE_INT *offset, bitmap *depends_on) + { + HOST_WIDE_INT diff = 0; ++ enum machine_mode mode = TYPE_MODE (TREE_TYPE (e1)); + comp_cost cost; + bool speed = optimize_loop_for_speed_p (data->current_loop); + +@@ -3443,7 +3480,7 @@ ptr_difference_cost (struct ivopts_data + + cost = force_var_cost (data, e1, depends_on); + cost = add_costs (cost, force_var_cost (data, e2, depends_on)); +- cost.cost += add_cost (Pmode, speed); ++ cost.cost += add_cost (mode, speed); + + return cost; + } +@@ -3619,7 +3656,9 @@ get_computation_cost_at (struct ivopts_d + if (address_p) + return add_costs (cost, get_address_cost (symbol_present, var_present, + offset, ratio, +- TYPE_MODE (TREE_TYPE (*use->op_p)), speed)); ++ TYPE_MODE (TREE_TYPE (*use->op_p)), ++ TYPE_ADDR_SPACE (TREE_TYPE (*use->op_p)), ++ speed)); + + /* Otherwise estimate the costs for computing the expression. */ + aratio = ratio > 0 ? ratio : -ratio; +@@ -5309,6 +5348,7 @@ rewrite_use_address (struct ivopts_data + { + aff_tree aff; + gimple_stmt_iterator bsi = gsi_for_stmt (use->stmt); ++ tree base_hint = NULL_TREE; + tree ref; + bool ok; + +@@ -5316,7 +5356,22 @@ rewrite_use_address (struct ivopts_data + gcc_assert (ok); + unshare_aff_combination (&aff); + +- ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff, data->speed); ++ /* To avoid undefined overflow problems, all IV candidates use unsigned ++ integer types. The drawback is that this makes it impossible for ++ create_mem_ref to distinguish an IV that is based on a memory object ++ from one that represents simply an offset. ++ ++ To work around this problem, we pass a hint to create_mem_ref that ++ indicates which variable (if any) in aff is an IV based on a memory ++ object. Note that we only consider the candidate. If this is not ++ based on an object, the base of the reference is in some subexpression ++ of the use -- but these will use pointer types, so they are recognized ++ by the create_mem_ref heuristics anyway. */ ++ if (cand->iv->base_object) ++ base_hint = var_at_stmt (data->current_loop, cand, use->stmt); ++ ++ ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff, base_hint, ++ data->speed); + copy_ref_info (ref, *use->op_p); + *use->op_p = ref; + } +diff -urNp gcc-4.4.4.orig/gcc/varasm.c gcc-4.4.4/gcc/varasm.c +--- a/src/gcc/varasm.c 2010-06-30 ++++ b/src/gcc/varasm.c 2010-06-30 +@@ -1189,11 +1189,17 @@ align_variable (tree decl, bool dont_out + static section * + get_variable_section (tree decl, bool prefer_noswitch_p) + { ++ addr_space_t as = ADDR_SPACE_GENERIC; + int reloc; + +- /* If the decl has been given an explicit section name, then it +- isn't common, and shouldn't be handled as such. */ +- if (DECL_COMMON (decl) && DECL_SECTION_NAME (decl) == NULL) ++ if (TREE_TYPE (decl) != error_mark_node) ++ as = TYPE_ADDR_SPACE (TREE_TYPE (decl)); ++ ++ /* If the decl has been given an explicit section name, or it resides ++ in a non-generic address space, then it isn't common, and shouldn't ++ be handled as such. */ ++ if (DECL_COMMON (decl) && DECL_SECTION_NAME (decl) == NULL ++ && ADDR_SPACE_GENERIC_P (as)) + { + if (DECL_THREAD_LOCAL_P (decl)) + return tls_comm_section; +@@ -1217,7 +1223,8 @@ get_variable_section (tree decl, bool pr + if (IN_NAMED_SECTION (decl)) + return get_named_section (decl, NULL, reloc); + +- if (!DECL_THREAD_LOCAL_P (decl) ++ if (ADDR_SPACE_GENERIC_P (as) ++ && !DECL_THREAD_LOCAL_P (decl) + && !(prefer_noswitch_p && targetm.have_switchable_bss_sections) + && bss_initializer_p (decl)) + { +@@ -1461,7 +1468,15 @@ make_decl_rtl (tree decl) + if (use_object_blocks_p () && use_blocks_for_decl_p (decl)) + x = create_block_symbol (name, get_block_for_decl (decl), -1); + else +- x = gen_rtx_SYMBOL_REF (Pmode, name); ++ { ++ enum machine_mode address_mode = Pmode; ++ if (TREE_TYPE (decl) != error_mark_node) ++ { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (decl)); ++ address_mode = targetm.addr_space.address_mode (as); ++ } ++ x = gen_rtx_SYMBOL_REF (address_mode, name); ++ } + SYMBOL_REF_WEAK (x) = DECL_WEAK (decl); + SET_SYMBOL_REF_DECL (x, decl); + +@@ -4373,7 +4388,7 @@ initializer_constant_valid_p_1 (tree val + if (cache && cache[0] == value) + return cache[1]; + if (! INTEGRAL_TYPE_P (endtype) +- || TYPE_PRECISION (endtype) >= POINTER_SIZE) ++ || TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value))) + { + tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE }; + tree valid0 +@@ -4408,7 +4423,7 @@ initializer_constant_valid_p_1 (tree val + if (cache && cache[0] == value) + return cache[1]; + if (! INTEGRAL_TYPE_P (endtype) +- || TYPE_PRECISION (endtype) >= POINTER_SIZE) ++ || TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value))) + { + tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE }; + tree valid0 +@@ -4503,7 +4518,9 @@ output_constant (tree exp, unsigned HOST + resolving it. */ + if (TREE_CODE (exp) == NOP_EXPR + && POINTER_TYPE_P (TREE_TYPE (exp)) +- && targetm.valid_pointer_mode (TYPE_MODE (TREE_TYPE (exp)))) ++ && targetm.addr_space.valid_pointer_mode ++ (TYPE_MODE (TREE_TYPE (exp)), ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))))) + { + tree saved_type = TREE_TYPE (exp); + +@@ -4511,7 +4528,9 @@ output_constant (tree exp, unsigned HOST + pointer modes. */ + while (TREE_CODE (exp) == NOP_EXPR + && POINTER_TYPE_P (TREE_TYPE (exp)) +- && targetm.valid_pointer_mode (TYPE_MODE (TREE_TYPE (exp)))) ++ && targetm.addr_space.valid_pointer_mode ++ (TYPE_MODE (TREE_TYPE (exp)), ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))))) + exp = TREE_OPERAND (exp, 0); + + /* If what we're left with is the address of something, we can +@@ -6437,14 +6456,6 @@ default_binds_local_p_1 (const_tree exp, + return local_p; + } + +-/* Determine whether or not a pointer mode is valid. Assume defaults +- of ptr_mode or Pmode - can be overridden. */ +-bool +-default_valid_pointer_mode (enum machine_mode mode) +-{ +- return (mode == ptr_mode || mode == Pmode); +-} +- + /* Default function to output code that will globalize a label. A + target must define GLOBAL_ASM_OP or provide its own function to + globalize a label. */ +diff -urNp gcc-4.4.4.orig/libgfortran/configure.ac gcc-4.4.4/libgfortran/configure.ac +--- a/src/libgfortran/configure.ac 2010-06-30 ++++ b/src/libgfortran/configure.ac 2010-06-30 +@@ -149,6 +149,27 @@ LDFLAGS="$save_LDFLAGS" + AC_MSG_RESULT($gfortran_use_symver) + AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes]) + ++# Figure out whether the compiler supports "-ffunction-sections -fdata-sections", ++# similarly to how libstdc++ does it ++ac_test_CFLAGS="${CFLAGS+set}" ++ac_save_CFLAGS="$CFLAGS" ++ ++# Check for -ffunction-sections -fdata-sections ++AC_MSG_CHECKING([for gcc that supports -ffunction-sections -fdata-sections]) ++CFLAGS='-Werror -ffunction-sections -fdata-sections' ++AC_TRY_COMPILE(, [int foo;], [ac_fdsections=yes], [ac_fdsections=no]) ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS="$ac_save_CFLAGS" ++else ++ # this is the suspicious part ++ CFLAGS="" ++fi ++if test x"$ac_fdsections" = x"yes"; then ++ SECTION_FLAGS='-ffunction-sections -fdata-sections' ++fi ++AC_MSG_RESULT($ac_fdsections) ++AC_SUBST(SECTION_FLAGS) ++ + # Find other programs we need. + AC_CHECK_TOOL(AS, as) + AC_CHECK_TOOL(AR, ar) +diff -urNp gcc-4.4.4.orig/libgfortran/Makefile.am gcc-4.4.4/libgfortran/Makefile.am +--- a/src/libgfortran/Makefile.am 2009-06-03 ++++ b/src/libgfortran/Makefile.am 2010-06-30 +@@ -33,6 +33,10 @@ AM_CPPFLAGS = -iquote$(srcdir)/io -I$(sr + # Fortran rules for complex multiplication and division + AM_CFLAGS += -fcx-fortran-rules + ++# Use -ffunction-sections -fdata-sections if supported by the compiler ++SECTION_FLAGS = @SECTION_FLAGS@ ++AM_CFLAGS += $(SECTION_FLAGS) ++ + gfor_io_src= \ + io/close.c \ + io/file_pos.c \ +diff -urNp gcc-4.4.4.orig/libgfortran/Makefile.in gcc-4.4.4/libgfortran/Makefile.in +--- a/src/libgfortran/Makefile.in 2010-06-30 ++++ b/src/libgfortran/Makefile.in 2010-06-30 +@@ -300,7 +300,7 @@ AMDEP_TRUE = @AMDEP_TRUE@ + AMTAR = @AMTAR@ + + # Fortran rules for complex multiplication and division +-AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules ++AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules $(SECTION_FLAGS) + AM_FCFLAGS = @AM_FCFLAGS@ + AR = @AR@ + AS = @AS@ +@@ -360,6 +360,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + RANLIB = @RANLIB@ ++ ++# Use -ffunction-sections -fdata-sections if supported by the compiler ++SECTION_FLAGS = @SECTION_FLAGS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ --- gcc-4.4-4.4.7.orig/debian/patches/cell-branch.diff +++ gcc-4.4-4.4.7/debian/patches/cell-branch.diff @@ -0,0 +1,9472 @@ +# DP: Updates from the cell-4_4-branch up to 20100518 + +svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch@xxxx svn://gcc.gnu.org/svn/gcc/branches/cell-4_4-branch + +Index: gcc/regrename.c +=================================================================== +--- a/src/gcc/regrename.c (.../gcc-4_4-branch) ++++ b/src/gcc/regrename.c (.../cell-4_4-branch) +@@ -1207,7 +1207,7 @@ + { + x = XEXP (x, 0); + kill_value (x, vd); +- set_value_regno (REGNO (x), Pmode, vd); ++ set_value_regno (REGNO (x), GET_MODE (x), vd); + return -1; + } + +Index: gcc/fwprop.c +=================================================================== +--- a/src/gcc/fwprop.c (.../gcc-4_4-branch) ++++ b/src/gcc/fwprop.c (.../cell-4_4-branch) +@@ -185,11 +185,12 @@ + + static bool + should_replace_address (rtx old_rtx, rtx new_rtx, enum machine_mode mode, +- bool speed) ++ addr_space_t as, bool speed) + { + int gain; + +- if (rtx_equal_p (old_rtx, new_rtx) || !memory_address_p (mode, new_rtx)) ++ if (rtx_equal_p (old_rtx, new_rtx) ++ || !memory_address_addr_space_p (mode, new_rtx, as)) + return false; + + /* Copy propagation is always ok. */ +@@ -197,7 +198,8 @@ + return true; + + /* Prefer the new address if it is less expensive. */ +- gain = address_cost (old_rtx, mode, speed) - address_cost (new_rtx, mode, speed); ++ gain = (address_cost (old_rtx, mode, as, speed) ++ - address_cost (new_rtx, mode, as, speed)); + + /* If the addresses have equivalent cost, prefer the new address + if it has the highest `rtx_cost'. That has the potential of +@@ -365,6 +367,7 @@ + /* Copy propagations are always ok. Otherwise check the costs. */ + if (!(REG_P (old_rtx) && REG_P (new_rtx)) + && !should_replace_address (op0, new_op0, GET_MODE (x), ++ MEM_ADDR_SPACE (x), + flags & PR_OPTIMIZE_FOR_SPEED)) + return true; + +Index: gcc/targhooks.c +=================================================================== +--- a/src/gcc/targhooks.c (.../gcc-4_4-branch) ++++ b/src/gcc/targhooks.c (.../cell-4_4-branch) +@@ -712,7 +712,107 @@ + return true; + } + ++/* Determine whether or not a pointer mode is valid. Assume defaults ++ of ptr_mode or Pmode - can be overridden. */ + bool ++default_valid_pointer_mode (enum machine_mode mode) ++{ ++ return (mode == ptr_mode || mode == Pmode); ++} ++ ++/* Return the mode for a pointer to a given ADDRSPACE, defaulting to ptr_mode ++ for the generic address space only. */ ++ ++enum machine_mode ++default_addr_space_pointer_mode (addr_space_t addrspace ATTRIBUTE_UNUSED) ++{ ++ gcc_assert (ADDR_SPACE_GENERIC_P (addrspace)); ++ return ptr_mode; ++} ++ ++/* Return the mode for an address in a given ADDRSPACE, defaulting to Pmode ++ for the generic address space only. */ ++ ++enum machine_mode ++default_addr_space_address_mode (addr_space_t addrspace ATTRIBUTE_UNUSED) ++{ ++ gcc_assert (ADDR_SPACE_GENERIC_P (addrspace)); ++ return Pmode; ++} ++ ++/* Named address space version of valid_pointer_mode. */ ++ ++bool ++default_addr_space_valid_pointer_mode (enum machine_mode mode, addr_space_t as) ++{ ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return (mode == targetm.addr_space.pointer_mode (as) ++ || mode == targetm.addr_space.address_mode (as)); ++ ++ return targetm.valid_pointer_mode (mode); ++} ++ ++/* Some places still assume that all pointer or address modes are the ++ standard Pmode and ptr_mode. These optimizations become invalid if ++ the target actually supports multiple different modes. For now, ++ we disable such optimizations on such targets, using this function. */ ++ ++bool ++target_default_pointer_address_modes_p (void) ++{ ++ if (targetm.addr_space.address_mode != default_addr_space_address_mode) ++ return false; ++ if (targetm.addr_space.pointer_mode != default_addr_space_pointer_mode) ++ return false; ++ ++ return true; ++} ++ ++/* Named address space version of legitimate_address_p. */ ++ ++bool ++default_addr_space_legitimate_address_p (enum machine_mode mode, rtx mem, ++ bool strict, addr_space_t as) ++{ ++ gcc_unreachable (); ++} ++ ++/* Named address space version of LEGITIMIZE_ADDRESS. */ ++ ++rtx ++default_addr_space_legitimize_address (rtx x, rtx oldx, ++ enum machine_mode mode, addr_space_t as) ++{ ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return x; ++ ++ LEGITIMIZE_ADDRESS (x, oldx, mode, done); ++done: ++ return x; ++} ++ ++/* The default hook for determining if one named address space is a subset of ++ another and to return which address space to use as the common address ++ space. */ ++ ++bool ++default_addr_space_subset_p (addr_space_t subset, addr_space_t superset) ++{ ++ return (subset == superset); ++} ++ ++/* The default hook for TARGET_ADDR_SPACE_CONVERT. This hook should never be ++ called for targets with only a generic address space. */ ++ ++rtx ++default_addr_space_convert (rtx op ATTRIBUTE_UNUSED, ++ tree from_type ATTRIBUTE_UNUSED, ++ tree to_type ATTRIBUTE_UNUSED) ++{ ++ gcc_unreachable (); ++} ++ ++bool + default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED) + { + return true; +Index: gcc/targhooks.h +=================================================================== +--- a/src/gcc/targhooks.h (.../gcc-4_4-branch) ++++ b/src/gcc/targhooks.h (.../cell-4_4-branch) +@@ -104,3 +104,15 @@ + extern bool default_target_option_valid_attribute_p (tree, tree, tree, int); + extern bool default_target_option_pragma_parse (tree, tree); + extern bool default_target_option_can_inline_p (tree, tree); ++extern bool default_valid_pointer_mode (enum machine_mode); ++extern enum machine_mode default_addr_space_pointer_mode (addr_space_t); ++extern enum machine_mode default_addr_space_address_mode (addr_space_t); ++extern bool default_addr_space_valid_pointer_mode (enum machine_mode, ++ addr_space_t); ++extern bool default_addr_space_legitimate_address_p (enum machine_mode, rtx, ++ bool, addr_space_t); ++extern rtx default_addr_space_legitimize_address (rtx, rtx, enum machine_mode, ++ addr_space_t); ++extern bool default_addr_space_subset_p (addr_space_t, addr_space_t); ++extern rtx default_addr_space_convert (rtx, tree, tree); ++ +Index: gcc/rtlhooks.c +=================================================================== +--- a/src/gcc/rtlhooks.c (.../gcc-4_4-branch) ++++ b/src/gcc/rtlhooks.c (.../cell-4_4-branch) +@@ -153,7 +153,8 @@ + - MIN (UNITS_PER_WORD, GET_MODE_SIZE (GET_MODE (x)))); + + new_rtx = adjust_address_nv (x, mode, offset); +- if (! memory_address_p (mode, XEXP (new_rtx, 0))) ++ if (! memory_address_addr_space_p (mode, XEXP (new_rtx, 0), ++ MEM_ADDR_SPACE (x))) + return 0; + + return new_rtx; +Index: gcc/tree-pretty-print.c +=================================================================== +--- a/src/gcc/tree-pretty-print.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-pretty-print.c (.../cell-4_4-branch) +@@ -527,6 +527,13 @@ + else if (quals & TYPE_QUAL_RESTRICT) + pp_string (buffer, "restrict "); + ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ { ++ pp_string (buffer, " "); ++ } ++ + tclass = TREE_CODE_CLASS (TREE_CODE (node)); + + if (tclass == tcc_declaration) +@@ -603,6 +610,13 @@ + if (quals & TYPE_QUAL_RESTRICT) + pp_string (buffer, " restrict"); + ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ { ++ pp_string (buffer, " "); ++ } ++ + if (TYPE_REF_CAN_ALIAS_ALL (node)) + pp_string (buffer, " {ref-all}"); + } +@@ -1383,6 +1397,7 @@ + NIY; + break; + ++ case ADDR_SPACE_CONVERT_EXPR: + case FIXED_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + case FLOAT_EXPR: +Index: gcc/c-lex.c +=================================================================== +--- a/src/gcc/c-lex.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-lex.c (.../cell-4_4-branch) +@@ -390,7 +390,7 @@ + case CPP_HASH: + case CPP_PASTE: + { +- unsigned char name[4]; ++ unsigned char name[8]; + + *cpp_spell_token (parse_in, tok, name, true) = 0; + +Index: gcc/tree.c +=================================================================== +--- a/src/gcc/tree.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree.c (.../cell-4_4-branch) +@@ -1478,8 +1478,7 @@ + if (TREE_CODE (expr) != INTEGER_CST) + return 0; + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -1543,9 +1542,7 @@ + if (TREE_CODE (expr) == COMPLEX_CST) + return tree_log2 (TREE_REALPART (expr)); + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); +- ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -1581,9 +1578,7 @@ + if (TREE_CODE (expr) == COMPLEX_CST) + return tree_log2 (TREE_REALPART (expr)); + +- prec = (POINTER_TYPE_P (TREE_TYPE (expr)) +- ? POINTER_SIZE : TYPE_PRECISION (TREE_TYPE (expr))); +- ++ prec = TYPE_PRECISION (TREE_TYPE (expr)); + high = TREE_INT_CST_HIGH (expr); + low = TREE_INT_CST_LOW (expr); + +@@ -4198,6 +4193,7 @@ + TYPE_READONLY (type) = (type_quals & TYPE_QUAL_CONST) != 0; + TYPE_VOLATILE (type) = (type_quals & TYPE_QUAL_VOLATILE) != 0; + TYPE_RESTRICT (type) = (type_quals & TYPE_QUAL_RESTRICT) != 0; ++ TYPE_ADDR_SPACE (type) = DECODE_QUAL_ADDR_SPACE (type_quals); + } + + /* Returns true iff CAND is equivalent to BASE with TYPE_QUALS. */ +@@ -5559,7 +5555,10 @@ + tree + build_pointer_type (tree to_type) + { +- return build_pointer_type_for_mode (to_type, ptr_mode, false); ++ addr_space_t as = to_type == error_mark_node? ADDR_SPACE_GENERIC ++ : TYPE_ADDR_SPACE (to_type); ++ enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as); ++ return build_pointer_type_for_mode (to_type, pointer_mode, false); + } + + /* Same as build_pointer_type_for_mode, but for REFERENCE_TYPE. */ +@@ -5623,7 +5622,10 @@ + tree + build_reference_type (tree to_type) + { +- return build_reference_type_for_mode (to_type, ptr_mode, false); ++ addr_space_t as = to_type == error_mark_node? ADDR_SPACE_GENERIC ++ : TYPE_ADDR_SPACE (to_type); ++ enum machine_mode pointer_mode = targetm.addr_space.pointer_mode (as); ++ return build_reference_type_for_mode (to_type, pointer_mode, false); + } + + /* Build a type that is compatible with t but has no cv quals anywhere +@@ -5766,6 +5768,7 @@ + t = make_node (ARRAY_TYPE); + TREE_TYPE (t) = elt_type; + TYPE_DOMAIN (t) = index_type; ++ TYPE_ADDR_SPACE (t) = TYPE_ADDR_SPACE (elt_type); + + if (index_type == 0) + { +@@ -8329,7 +8332,15 @@ + { + tree t = type; + if (POINTER_TYPE_P (type)) +- t = size_type_node; ++ { ++ /* If the pointer points to the normal address space, use the ++ size_type_node. Otherwise use an appropriate size for the pointer ++ based on the named address space it points to. */ ++ if (!TYPE_ADDR_SPACE (TREE_TYPE (t))) ++ t = size_type_node; ++ else ++ return lang_hooks.types.type_for_size (TYPE_PRECISION (t), unsignedp); ++ } + + if (!INTEGRAL_TYPE_P (t) || TYPE_UNSIGNED (t) == unsignedp) + return t; +Index: gcc/tree.h +=================================================================== +--- a/src/gcc/tree.h (.../gcc-4_4-branch) ++++ b/src/gcc/tree.h (.../cell-4_4-branch) +@@ -382,8 +382,13 @@ + unsigned lang_flag_6 : 1; + unsigned visited : 1; + +- unsigned spare : 23; ++ unsigned spare : 15; + ++ /* This field is only used with type nodes; the only reason it is present ++ in tree_base instead of tree_type is to save space. The size of the ++ field must be large enough to hold addr_space_t values. */ ++ unsigned address_space : 8; ++ + union tree_ann_d *ann; + }; + +@@ -2180,6 +2185,9 @@ + the term. */ + #define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag) + ++/* The address space the type is in. */ ++#define TYPE_ADDR_SPACE(NODE) (TYPE_CHECK (NODE)->base.address_space) ++ + /* There is a TYPE_QUAL value for each type qualifier. They can be + combined by bitwise-or to form the complete set of qualifiers for a + type. */ +@@ -2189,10 +2197,29 @@ + #define TYPE_QUAL_VOLATILE 0x2 + #define TYPE_QUAL_RESTRICT 0x4 + ++/* Encode/decode the named memory support as part of the qualifier. If more ++ than 8 qualifiers are added, these macros need to be adjusted. */ ++#define ENCODE_QUAL_ADDR_SPACE(NUM) ((NUM & 0xFF) << 8) ++#define DECODE_QUAL_ADDR_SPACE(X) (((X) >> 8) & 0xFF) ++ ++/* Return all qualifiers except for the address space qualifiers. */ ++#define CLEAR_QUAL_ADDR_SPACE(X) ((X) & ~0xFF00) ++ ++/* Only keep the address space out of the qualifiers and discard the other ++ qualifiers. */ ++#define KEEP_QUAL_ADDR_SPACE(X) ((X) & 0xFF00) ++ + /* The set of type qualifiers for this type. */ + #define TYPE_QUALS(NODE) \ + ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \ + | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \ ++ | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT) \ ++ | (ENCODE_QUAL_ADDR_SPACE (TYPE_ADDR_SPACE (NODE)))) ++ ++/* The same as TYPE_QUALS without the address space qualifications. */ ++#define TYPE_QUALS_NO_ADDR_SPACE(NODE) \ ++ ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \ ++ | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \ + | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT)) + + /* These flags are available for each language front end to use internally. */ +Index: gcc/reload.c +=================================================================== +--- a/src/gcc/reload.c (.../gcc-4_4-branch) ++++ b/src/gcc/reload.c (.../cell-4_4-branch) +@@ -267,7 +267,8 @@ + static rtx find_reloads_toplev (rtx, int, enum reload_type, int, int, rtx, + int *); + static rtx make_memloc (rtx, int); +-static int maybe_memory_address_p (enum machine_mode, rtx, rtx *); ++static int maybe_memory_address_addr_space_p (enum machine_mode, rtx, ++ addr_space_t, rtx *); + static int find_reloads_address (enum machine_mode, rtx *, rtx, rtx *, + int, enum reload_type, int, rtx); + static rtx subst_reg_equivs (rtx, rtx); +@@ -611,7 +612,8 @@ + didn't give us a new MEM, make a new one if it isn't valid. */ + + loc = eliminate_regs (secondary_memlocs[(int) mode], VOIDmode, NULL_RTX); +- mem_valid = strict_memory_address_p (mode, XEXP (loc, 0)); ++ mem_valid = strict_memory_address_addr_space_p (mode, XEXP (loc, 0), ++ MEM_ADDR_SPACE (loc)); + + if (! mem_valid && loc == secondary_memlocs[(int) mode]) + loc = copy_rtx (loc); +@@ -2127,13 +2129,17 @@ + return 0; + } + +-/* Return 1 if ADDR is a valid memory address for mode MODE, +- and check that each pseudo reg has the proper kind of +- hard reg. */ ++/* Return 1 if ADDR is a valid memory address for mode MODE ++ in address space AS, and check that each pseudo reg has the ++ proper kind of hard reg. */ + + int +-strict_memory_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx addr) ++strict_memory_address_addr_space_p (enum machine_mode mode ATTRIBUTE_UNUSED, ++ rtx addr, addr_space_t as) + { ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return targetm.addr_space.legitimate_address_p (mode, addr, 1, as); ++ + GO_IF_LEGITIMATE_ADDRESS (mode, addr, win); + return 0; + +@@ -2241,6 +2247,10 @@ + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + switch (code) + { + case CONST_INT: +@@ -3947,12 +3957,15 @@ + && MEM_P (recog_data.operand[i])) + { + /* If the address to be reloaded is a VOIDmode constant, +- use Pmode as mode of the reload register, as would have +- been done by find_reloads_address. */ ++ use the default address mode as mode of the reload register, ++ as would have been done by find_reloads_address. */ + enum machine_mode address_mode; + address_mode = GET_MODE (XEXP (recog_data.operand[i], 0)); + if (address_mode == VOIDmode) +- address_mode = Pmode; ++ { ++ addr_space_t as = MEM_ADDR_SPACE (recog_data.operand[i]); ++ address_mode = targetm.addr_space.address_mode (as); ++ } + + operand_reloadnum[i] + = push_reload (XEXP (recog_data.operand[i], 0), NULL_RTX, +@@ -4727,8 +4740,9 @@ + #endif + && (reg_equiv_address[regno] != 0 + || (reg_equiv_mem[regno] != 0 +- && (! strict_memory_address_p (GET_MODE (x), +- XEXP (reg_equiv_mem[regno], 0)) ++ && (! strict_memory_address_addr_space_p ++ (GET_MODE (x), XEXP (reg_equiv_mem[regno], 0), ++ MEM_ADDR_SPACE (reg_equiv_mem[regno])) + || ! offsettable_memref_p (reg_equiv_mem[regno]) + || num_not_at_initial_offset)))) + x = find_reloads_subreg_address (x, 1, opnum, type, ind_levels, +@@ -4785,18 +4799,19 @@ + } + + /* Returns true if AD could be turned into a valid memory reference +- to mode MODE by reloading the part pointed to by PART into a +- register. */ ++ to mode MODE in address space AS by reloading the part pointed to ++ by PART into a register. */ + + static int +-maybe_memory_address_p (enum machine_mode mode, rtx ad, rtx *part) ++maybe_memory_address_addr_space_p (enum machine_mode mode, rtx ad, ++ addr_space_t as, rtx *part) + { + int retv; + rtx tem = *part; + rtx reg = gen_rtx_REG (GET_MODE (tem), max_reg_num ()); + + *part = reg; +- retv = memory_address_p (mode, ad); ++ retv = memory_address_addr_space_p (mode, ad, as); + *part = tem; + + return retv; +@@ -4832,6 +4847,8 @@ + rtx *loc, int opnum, enum reload_type type, + int ind_levels, rtx insn) + { ++ addr_space_t as = memrefloc? MEM_ADDR_SPACE (*memrefloc) ++ : ADDR_SPACE_GENERIC; + int regno; + int removed_and = 0; + int op_index; +@@ -4859,7 +4876,9 @@ + if (reg_equiv_address[regno] != 0 || num_not_at_initial_offset) + { + tem = make_memloc (ad, regno); +- if (! strict_memory_address_p (GET_MODE (tem), XEXP (tem, 0))) ++ if (! strict_memory_address_addr_space_p (GET_MODE (tem), ++ XEXP (tem, 0), ++ MEM_ADDR_SPACE (tem))) + { + rtx orig = tem; + +@@ -4875,7 +4894,7 @@ + address: only reg or reg+constant. */ + + if (ind_levels > 0 +- && strict_memory_address_p (mode, tem) ++ && strict_memory_address_addr_space_p (mode, tem, as) + && (REG_P (XEXP (tem, 0)) + || (GET_CODE (XEXP (tem, 0)) == PLUS + && REG_P (XEXP (XEXP (tem, 0), 0)) +@@ -4919,7 +4938,7 @@ + return 1; + } + +- if (strict_memory_address_p (mode, ad)) ++ if (strict_memory_address_addr_space_p (mode, ad, as)) + { + /* The address appears valid, so reloads are not needed. + But the address may contain an eliminable register. +@@ -4942,14 +4961,14 @@ + return 0; + + /* Check result for validity after substitution. */ +- if (strict_memory_address_p (mode, ad)) ++ if (strict_memory_address_addr_space_p (mode, ad, as)) + return 0; + } + + #ifdef LEGITIMIZE_RELOAD_ADDRESS + do + { +- if (memrefloc) ++ if (memrefloc && ADDR_SPACE_GENERIC_P (as)) + { + LEGITIMIZE_RELOAD_ADDRESS (ad, GET_MODE (*memrefloc), opnum, type, + ind_levels, win); +@@ -5065,7 +5084,7 @@ + That will at least work. */ + find_reloads_address_part (ad, loc, + base_reg_class (mode, MEM, SCRATCH), +- Pmode, opnum, type, ind_levels); ++ GET_MODE (ad), opnum, type, ind_levels); + } + return ! removed_and; + } +@@ -5126,8 +5145,8 @@ + || operand == arg_pointer_rtx + #endif + || operand == stack_pointer_rtx) +- && ! maybe_memory_address_p (mode, ad, +- &XEXP (XEXP (ad, 0), 1 - op_index))) ++ && ! maybe_memory_address_addr_space_p ++ (mode, ad, as, &XEXP (XEXP (ad, 0), 1 - op_index))) + { + rtx offset_reg; + enum reg_class cls; +@@ -5165,7 +5184,7 @@ + tem = ad; + if (GET_CODE (ad) == PLUS) + tem = subst_indexed_address (ad); +- if (tem != ad && strict_memory_address_p (mode, tem)) ++ if (tem != ad && strict_memory_address_addr_space_p (mode, tem, as)) + { + /* Ok, we win that way. Replace any additional eliminable + registers. */ +@@ -5175,7 +5194,8 @@ + + /* Make sure that didn't make the address invalid again. */ + +- if (! subst_reg_equivs_changed || strict_memory_address_p (mode, tem)) ++ if (! subst_reg_equivs_changed ++ || strict_memory_address_addr_space_p (mode, tem, as)) + { + *loc = tem; + return 0; +@@ -5184,8 +5204,12 @@ + + /* If constants aren't valid addresses, reload the constant address + into a register. */ +- if (CONSTANT_P (ad) && ! strict_memory_address_p (mode, ad)) ++ if (CONSTANT_P (ad) && ! strict_memory_address_addr_space_p (mode, ad, as)) + { ++ enum machine_mode address_mode = GET_MODE (ad); ++ if (address_mode == VOIDmode) ++ address_mode = targetm.addr_space.address_mode (as); ++ + /* If AD is an address in the constant pool, the MEM rtx may be shared. + Unshare it so we can safely alter it. */ + if (memrefloc && GET_CODE (ad) == SYMBOL_REF +@@ -5198,7 +5222,7 @@ + } + + find_reloads_address_part (ad, loc, base_reg_class (mode, MEM, SCRATCH), +- Pmode, opnum, type, ind_levels); ++ address_mode, opnum, type, ind_levels); + return ! removed_and; + } + +@@ -5285,17 +5309,13 @@ + This routine assumes both inputs are already in canonical form. */ + + rtx +-form_sum (rtx x, rtx y) ++form_sum (enum machine_mode mode, rtx x, rtx y) + { + rtx tem; +- enum machine_mode mode = GET_MODE (x); + +- if (mode == VOIDmode) +- mode = GET_MODE (y); ++ gcc_assert (GET_MODE (x) == mode || GET_MODE (x) == VOIDmode); ++ gcc_assert (GET_MODE (y) == mode || GET_MODE (y) == VOIDmode); + +- if (mode == VOIDmode) +- mode = Pmode; +- + if (GET_CODE (x) == CONST_INT) + return plus_constant (y, INTVAL (x)); + else if (GET_CODE (y) == CONST_INT) +@@ -5304,12 +5324,12 @@ + tem = x, x = y, y = tem; + + if (GET_CODE (x) == PLUS && CONSTANT_P (XEXP (x, 1))) +- return form_sum (XEXP (x, 0), form_sum (XEXP (x, 1), y)); ++ return form_sum (mode, XEXP (x, 0), form_sum (mode, XEXP (x, 1), y)); + + /* Note that if the operands of Y are specified in the opposite + order in the recursive calls below, infinite recursion will occur. */ + if (GET_CODE (y) == PLUS && CONSTANT_P (XEXP (y, 1))) +- return form_sum (form_sum (x, XEXP (y, 0)), XEXP (y, 1)); ++ return form_sum (mode, form_sum (mode, x, XEXP (y, 0)), XEXP (y, 1)); + + /* If both constant, encapsulate sum. Otherwise, just form sum. A + constant will have been placed second. */ +@@ -5376,9 +5396,9 @@ + + /* Compute the sum. */ + if (op2 != 0) +- op1 = form_sum (op1, op2); ++ op1 = form_sum (GET_MODE (addr), op1, op2); + if (op1 != 0) +- op0 = form_sum (op0, op1); ++ op0 = form_sum (GET_MODE (addr), op0, op1); + + return op0; + } +@@ -5778,7 +5798,8 @@ + rtx equiv = (MEM_P (XEXP (x, 0)) + ? XEXP (x, 0) + : reg_equiv_mem[regno]); +- int icode = (int) optab_handler (add_optab, Pmode)->insn_code; ++ int icode ++ = (int) optab_handler (add_optab, GET_MODE (x))->insn_code; + if (insn && NONJUMP_INSN_P (insn) && equiv + && memory_operand (equiv, GET_MODE (equiv)) + #ifdef HAVE_cc0 +@@ -5786,9 +5807,9 @@ + #endif + && ! (icode != CODE_FOR_nothing + && ((*insn_data[icode].operand[0].predicate) +- (equiv, Pmode)) ++ (equiv, GET_MODE (x))) + && ((*insn_data[icode].operand[1].predicate) +- (equiv, Pmode)))) ++ (equiv, GET_MODE (x))))) + { + /* We use the original pseudo for loc, so that + emit_reload_insns() knows which pseudo this +@@ -6141,8 +6162,8 @@ + valid address into an invalid one. Check for that + here. */ + if (reloaded == 0 +- && !strict_memory_address_p (GET_MODE (tem), +- XEXP (tem, 0))) ++ && !strict_memory_address_addr_space_p ++ (GET_MODE (tem), XEXP (tem, 0), MEM_ADDR_SPACE (tem))) + push_reload (XEXP (tem, 0), NULL_RTX, &XEXP (tem, 0), (rtx*) 0, + base_reg_class (GET_MODE (tem), MEM, SCRATCH), + GET_MODE (XEXP (tem, 0)), VOIDmode, 0, 0, +Index: gcc/reload.h +=================================================================== +--- a/src/gcc/reload.h (.../gcc-4_4-branch) ++++ b/src/gcc/reload.h (.../cell-4_4-branch) +@@ -289,7 +289,7 @@ + address, namely: sum constant integers, surround the sum of two + constants with a CONST, put the constant as the second operand, and + group the constant on the outermost sum. */ +-extern rtx form_sum (rtx, rtx); ++extern rtx form_sum (enum machine_mode, rtx, rtx); + + /* Substitute into the current INSN the registers into which we have reloaded + the things that need reloading. */ +Index: gcc/target.h +=================================================================== +--- a/src/gcc/target.h (.../gcc-4_4-branch) ++++ b/src/gcc/target.h (.../cell-4_4-branch) +@@ -68,6 +68,12 @@ + /* An example implementation for ELF targets. Defined in varasm.c */ + extern int elf_record_gcc_switches (print_switch_type type, const char *); + ++/* Some places still assume that all pointer or address modes are the ++ standard Pmode and ptr_mode. These optimizations become invalid if ++ the target actually supports multiple different modes. For now, ++ we disable such optimizations on such targets, using this function. */ ++extern bool target_default_pointer_address_modes_p (void); ++ + struct stdarg_info; + struct spec_info_def; + +@@ -662,6 +668,36 @@ + /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))). */ + bool (* valid_pointer_mode) (enum machine_mode mode); + ++ /* Support for named address spaces. */ ++ struct addr_space { ++ /* MODE to use for a pointer into another address space. */ ++ enum machine_mode (* pointer_mode) (addr_space_t); ++ ++ /* MODE to use for an address in another address space. */ ++ enum machine_mode (* address_mode) (addr_space_t); ++ ++ /* True if MODE is valid for a pointer in __attribute__((mode("MODE"))) ++ in another address space. */ ++ bool (* valid_pointer_mode) (enum machine_mode, addr_space_t); ++ ++ /* True if an address is a valid memory address to a given named address ++ space for a given mode. */ ++ bool (* legitimate_address_p) (enum machine_mode, rtx, bool, addr_space_t); ++ ++ /* Return an updated address to convert an invalid pointer to a named ++ address space to a valid one. If NULL_RTX is returned use machine ++ independent methods to make the address valid. */ ++ rtx (* legitimize_address) (rtx, rtx, enum machine_mode, addr_space_t); ++ ++ /* True if one named address space is a subset of another named address. */ ++ bool (* subset_p) (addr_space_t, addr_space_t); ++ ++ /* Function to convert an rtl expression from one address space to ++ another. */ ++ rtx (* convert) (rtx, tree, tree); ++ ++ } addr_space; ++ + /* True if MODE is valid for the target. By "valid", we mean able to + be manipulated in non-trivial ways. In particular, this means all + the arithmetic is supported. */ +Index: gcc/rtlanal.c +=================================================================== +--- a/src/gcc/rtlanal.c (.../gcc-4_4-branch) ++++ b/src/gcc/rtlanal.c (.../cell-4_4-branch) +@@ -3610,13 +3610,13 @@ + be returned. */ + + int +-address_cost (rtx x, enum machine_mode mode, bool speed) ++address_cost (rtx x, enum machine_mode mode, addr_space_t as, bool speed) + { + /* We may be asked for cost of various unusual addresses, such as operands + of push instruction. It is not worthwhile to complicate writing + of the target hook by such cases. */ + +- if (!memory_address_p (mode, x)) ++ if (!memory_address_addr_space_p (mode, x, as)) + return 1000; + + return targetm.address_cost (x, speed); +@@ -3755,7 +3755,11 @@ + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) + /* If pointers extend unsigned and this is a pointer in Pmode, say that + all the bits above ptr_mode are known to be zero. */ +- if (POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode + && REG_POINTER (x)) + nonzero &= GET_MODE_MASK (ptr_mode); + #endif +@@ -3992,7 +3996,11 @@ + /* If pointers extend unsigned and this is an addition or subtraction + to a pointer in Pmode, all the bits above ptr_mode are known to be + zero. */ +- if (POINTERS_EXTEND_UNSIGNED > 0 && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED > 0 && GET_MODE (x) == Pmode + && (code == PLUS || code == MINUS) + && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) + nonzero &= GET_MODE_MASK (ptr_mode); +@@ -4266,8 +4274,12 @@ + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) + /* If pointers extend signed and this is a pointer in Pmode, say that + all the bits above ptr_mode are known to be sign bit copies. */ +- if (! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode && mode == Pmode +- && REG_POINTER (x)) ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ && mode == Pmode && REG_POINTER (x)) + return GET_MODE_BITSIZE (Pmode) - GET_MODE_BITSIZE (ptr_mode) + 1; + #endif + +@@ -4463,7 +4475,11 @@ + /* If pointers extend signed and this is an addition or subtraction + to a pointer in Pmode, all the bits above ptr_mode are known to be + sign bit copies. */ +- if (! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode + && (code == PLUS || code == MINUS) + && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) + result = MAX ((int) (GET_MODE_BITSIZE (Pmode) +Index: gcc/fold-const.c +=================================================================== +--- a/src/gcc/fold-const.c (.../gcc-4_4-branch) ++++ b/src/gcc/fold-const.c (.../cell-4_4-branch) +@@ -202,15 +202,9 @@ + { + unsigned HOST_WIDE_INT low0 = l1; + HOST_WIDE_INT high0 = h1; +- unsigned int prec; ++ unsigned int prec = TYPE_PRECISION (type); + int sign_extended_type; + +- if (POINTER_TYPE_P (type) +- || TREE_CODE (type) == OFFSET_TYPE) +- prec = POINTER_SIZE; +- else +- prec = TYPE_PRECISION (type); +- + /* Size types *are* sign extended. */ + sign_extended_type = (!TYPE_UNSIGNED (type) + || (TREE_CODE (type) == INTEGER_TYPE +@@ -2513,8 +2507,16 @@ + + switch (TREE_CODE (type)) + { ++ case POINTER_TYPE: ++ case REFERENCE_TYPE: ++ /* Handle conversions between pointers to different address spaces. */ ++ if (POINTER_TYPE_P (orig) ++ && (TYPE_ADDR_SPACE (TREE_TYPE (type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (orig)))) ++ return fold_build1 (ADDR_SPACE_CONVERT_EXPR, type, arg); ++ /* fall through */ ++ + case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: +- case POINTER_TYPE: case REFERENCE_TYPE: + case OFFSET_TYPE: + if (TREE_CODE (arg) == INTEGER_CST) + { +@@ -3036,6 +3038,12 @@ + || POINTER_TYPE_P (TREE_TYPE (arg0)) != POINTER_TYPE_P (TREE_TYPE (arg1))) + return 0; + ++ /* We cannot consider pointers to different address space equal. */ ++ if (POINTER_TYPE_P (TREE_TYPE (arg0)) && POINTER_TYPE_P (TREE_TYPE (arg1)) ++ && (TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (arg0))) ++ != TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (arg1))))) ++ return 0; ++ + /* If both types don't have the same precision, then it is not safe + to strip NOPs. */ + if (TYPE_PRECISION (TREE_TYPE (arg0)) != TYPE_PRECISION (TREE_TYPE (arg1))) +@@ -8388,6 +8396,11 @@ + tem = fold_convert_const (code, type, op0); + return tem ? tem : NULL_TREE; + ++ case ADDR_SPACE_CONVERT_EXPR: ++ if (integer_zerop (arg0)) ++ return fold_convert_const (code, type, arg0); ++ return NULL_TREE; ++ + case FIXED_CONVERT_EXPR: + tem = fold_convert_const (code, type, arg0); + return tem ? tem : NULL_TREE; +Index: gcc/auto-inc-dec.c +=================================================================== +--- a/src/gcc/auto-inc-dec.c (.../gcc-4_4-branch) ++++ b/src/gcc/auto-inc-dec.c (.../cell-4_4-branch) +@@ -40,6 +40,7 @@ + #include "tree-pass.h" + #include "df.h" + #include "dbgcnt.h" ++#include "target.h" + + /* This pass was originally removed from flow.c. However there is + almost nothing that remains of that code. +@@ -651,6 +652,7 @@ + /* The width of the mem being accessed. */ + int size = GET_MODE_SIZE (GET_MODE (mem)); + rtx last_insn = NULL; ++ enum machine_mode reg_mode = GET_MODE (inc_reg); + + switch (inc_insn.form) + { +@@ -705,33 +707,33 @@ + case SIMPLE_PRE_INC: /* ++size */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_PRE_INC\n"); +- return attempt_change (gen_rtx_PRE_INC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_PRE_INC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_POST_INC: /* size++ */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_POST_INC\n"); +- return attempt_change (gen_rtx_POST_INC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_POST_INC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_PRE_DEC: /* --size */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_PRE_DEC\n"); +- return attempt_change (gen_rtx_PRE_DEC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_PRE_DEC (reg_mode, inc_reg), inc_reg); + break; + + case SIMPLE_POST_DEC: /* size-- */ + if (dump_file) + fprintf (dump_file, "trying SIMPLE_POST_DEC\n"); +- return attempt_change (gen_rtx_POST_DEC (Pmode, inc_reg), inc_reg); ++ return attempt_change (gen_rtx_POST_DEC (reg_mode, inc_reg), inc_reg); + break; + + case DISP_PRE: /* ++con */ + if (dump_file) + fprintf (dump_file, "trying DISP_PRE\n"); +- return attempt_change (gen_rtx_PRE_MODIFY (Pmode, ++ return attempt_change (gen_rtx_PRE_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -740,9 +742,9 @@ + case DISP_POST: /* con++ */ + if (dump_file) + fprintf (dump_file, "trying POST_DISP\n"); +- return attempt_change (gen_rtx_POST_MODIFY (Pmode, ++ return attempt_change (gen_rtx_POST_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -751,9 +753,9 @@ + case REG_PRE: /* ++reg */ + if (dump_file) + fprintf (dump_file, "trying PRE_REG\n"); +- return attempt_change (gen_rtx_PRE_MODIFY (Pmode, ++ return attempt_change (gen_rtx_PRE_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -762,9 +764,9 @@ + case REG_POST: /* reg++ */ + if (dump_file) + fprintf (dump_file, "trying POST_REG\n"); +- return attempt_change (gen_rtx_POST_MODIFY (Pmode, ++ return attempt_change (gen_rtx_POST_MODIFY (reg_mode, + inc_reg, +- gen_rtx_PLUS (Pmode, ++ gen_rtx_PLUS (reg_mode, + inc_reg, + inc_insn.reg1)), + inc_reg); +@@ -1127,7 +1129,9 @@ + we are going to increment the result of the add insn. + For this trick to be correct, the result reg of + the inc must be a valid addressing reg. */ +- if (GET_MODE (inc_insn.reg_res) != Pmode) ++ addr_space_t as = MEM_ADDR_SPACE (*mem_insn.mem_loc); ++ if (GET_MODE (inc_insn.reg_res) ++ != targetm.addr_space.address_mode (as)) + { + if (dump_file) + fprintf (dump_file, "base reg mode failure.\n"); +@@ -1176,7 +1180,9 @@ + { + /* For this trick to be correct, the result reg of the inc + must be a valid addressing reg. */ +- if (GET_MODE (inc_insn.reg_res) != Pmode) ++ addr_space_t as = MEM_ADDR_SPACE (*mem_insn.mem_loc); ++ if (GET_MODE (inc_insn.reg_res) ++ != targetm.addr_space.address_mode (as)) + { + if (dump_file) + fprintf (dump_file, "base reg mode failure.\n"); +Index: gcc/testsuite/gcc.target/s390/pr42224.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/s390/pr42224.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/s390/pr42224.c (.../cell-4_4-branch) +@@ -0,0 +1,36 @@ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O0" } */ ++ ++typedef char* __char_ptr32 __attribute__ (( mode (SI) )); ++typedef __char_ptr32 *__char_ptr_char_ptr32 __attribute__ ((mode (SI))); ++ ++void to_ptr32 (int x) ++{ ++ __char_ptr32 ptr = (__char_ptr32) x; ++} ++ ++void to_int (__char_ptr32 ptr) ++{ ++ int x = (int) ptr; ++} ++ ++__char_ptr_char_ptr32 ++to_ptr32_ptr32 (char **ptr64) ++{ ++ int argc; ++ __char_ptr_char_ptr32 short_argv; ++ ++ for (argc=0; ptr64[argc]; argc++); ++ ++ short_argv = (__char_ptr_char_ptr32) malloc32 ++ (sizeof (__char_ptr32) * (argc + 1)); ++ ++ for (argc=0; ptr64[argc]; argc++) ++ short_argv[argc] = (__char_ptr32) strdup32 (ptr64[argc]); ++ ++ short_argv[argc] = (__char_ptr32) 0; ++ return short_argv; ++ ++} ++ +Index: gcc/testsuite/gcc.target/spu/ea/errors2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/errors2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/errors2.c (.../cell-4_4-branch) +@@ -0,0 +1,107 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Invalid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++__ea char ea_str[] = "abc"; ++char lm_str[] = "abc"; ++ ++__ea char *lm_ea_ptr1 = "abc"; /* { dg-error "initializer element is not computable at load time" } */ ++__ea char *lm_ea_ptr2 = (__ea char *)"abc"; /* { dg-error "initializer element is not constant" } */ ++__ea char *lm_ea_ptr3 = ea_str; ++__ea char *lm_ea_ptr4 = (__ea char *)ea_str; ++__ea char *lm_ea_ptr5 = lm_str; /* { dg-error "initializer element is not computable at load time" } */ ++__ea char *lm_ea_ptr6 = (__ea char *)lm_str; /* { dg-error "initializer element is not constant" } */ ++ ++__ea char * __ea ea_ea_ptr1 = ea_str; ++__ea char * __ea ea_ea_ptr2 = (__ea char *)ea_str; ++ ++char * __ea ea_lm_ptr1 = lm_str; ++char * __ea ea_lm_ptr2 = (char *)lm_str; ++ ++struct foo { ++ int first; ++ __ea char *ptr; ++ int last; ++}; ++ ++__ea struct foo ea_struct1 = { ++ 10, ++ (__ea char *)0, ++ 11, ++}; ++ ++__ea struct foo ea_struct2 = { ++ 20, ++ 0, ++ 21, ++}; ++ ++struct foo ea_struct3 = { ++ 30, ++ ea_str, ++ 31, ++}; ++ ++struct foo ea_struct4 = { ++ 40, ++ (__ea char *)lm_str, /* { dg-error "(initializer element is not constant)|(near initialization)" "" } */ ++ 41, ++}; ++ ++struct bar { ++ int first; ++ char *ptr; ++ int last; ++}; ++ ++__ea struct bar ea_struct5 = { ++ 50, ++ 0, ++ 51, ++}; ++ ++__ea struct bar ea_struct6 = { ++ 60, ++ (char *)0, ++ 61, ++}; ++ ++__ea struct bar ea_struct7 = { ++ 70, ++ lm_str, ++ 71, ++}; ++ ++struct bar lm_struct8 = { ++ 80, ++ 0, ++ 81, ++}; ++ ++struct bar lm_struct9 = { ++ 90, ++ (char *)0, ++ 91, ++}; ++ ++struct bar lm_struct10 = { ++ 100, ++ lm_str, ++ 101, ++}; +Index: gcc/testsuite/gcc.target/spu/ea/ea.exp +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/ea.exp (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ea.exp (.../cell-4_4-branch) +@@ -0,0 +1,54 @@ ++# Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with GCC; see the file COPYING3. If not see ++# . ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't a SPU target. ++if { ![istarget spu-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib gcc-dg.exp ++ ++# Return 1 if target __ea library functions are available ++proc check_effective_target_ealib { } { ++ return [check_no_compiler_messages ealib executable { ++ #include ++ int main (void) ++ { ++ __ea void *ptr = malloc_ea (1024); ++ return 0; ++ } ++ }] ++} ++ ++# If a testcase doesn't have special options, use these. ++# We do not use the global DEFAULT_CFLAGS as all test cases ++# in this directory use the __ea address space qualifier ++# extension and thus will not compile with -ansi. ++set DEFAULT_EA_CFLAGS "-std=gnu99 -pedantic-errors -O2" ++ ++# Initialize `dg'. ++dg-init ++ ++# Run all tests in both -mea32 and -mea64 mode. ++set tests [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] ++dg-runtest $tests "-mea32" $DEFAULT_EA_CFLAGS ++dg-runtest $tests "-mea64" $DEFAULT_EA_CFLAGS ++ ++# All done. ++dg-finish +Index: gcc/testsuite/gcc.target/spu/ea/compile1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/compile1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/compile1.c (.../cell-4_4-branch) +@@ -0,0 +1,109 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Valid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++/* Typedefs. */ ++typedef __ea int ea_int_t; ++typedef __ea int *ea_int_star_t; ++typedef int outer_t; ++ ++/* Externs. */ ++ ++__ea extern int i1; ++extern __ea int i2; ++extern int __ea i3; ++extern __ea ea_int_t i4; /* __ea qualifier permitted via typedef. */ ++extern int __ea __ea __ea dupe; /* __ea duplicate permitted directly. */ ++extern int __ea *ppu; ++ ++/* Pointers. */ ++__ea int *i4p; ++ ++/* Structs. */ ++struct st { ++ __ea int *p; ++}; ++ ++/* Variable definitions. */ ++__ea int ii0; ++int *__ea ii1; ++static int __ea ii2; ++ ++void ++f1 () ++{ ++ int *spu; ++ ppu = (ea_int_t *) spu; ++ ppu = (ea_int_star_t) spu; ++} ++ ++void ++f2 () ++{ ++ int *spu; ++ spu = (int *) ppu; ++ ppu = (__ea int *) spu; ++} ++ ++void ++f3 () ++{ ++ int i = sizeof (__ea int); ++} ++ ++__ea int *f4 (void) ++{ ++ return 0; ++} ++ ++int f5 (__ea int *parm) ++{ ++ static __ea int local4; ++ int tmp = local4; ++ local4 = *parm; ++ return tmp; ++} ++ ++static inline __ea void *f6 (__ea void *start) ++{ ++ return 0; ++} ++ ++void f7 (void) ++{ ++ __ea void *s1; ++ auto __ea void *s2; ++} ++ ++__ea int *f8 (__ea int *x) ++{ ++ register __ea int *y = x; ++ __ea int *z = y; ++ return z; ++} ++ ++long long f9 (__ea long long x[2]) ++{ ++ return x[0] + x[1]; ++} ++ ++void f10 () ++{ ++ static __ea outer_t o; ++} +Index: gcc/testsuite/gcc.target/spu/ea/test-sizes.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/test-sizes.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/test-sizes.c (.../cell-4_4-branch) +@@ -0,0 +1,608 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#ifdef __EA32__ ++#define EA_PTRSIZE 4 ++#endif ++#ifdef __EA64__ ++#define EA_PTRSIZE 8 ++#endif ++ ++#if !defined(LEVEL1) && !defined(LEVEL2) && !defined(LEVEL3) ++#define LEVEL1 1 /* single pointer indirection */ ++#define LEVEL2 1 /* 2 levels of pointer indirection */ ++#define LEVEL3 1 /* 3 levels of pointer indirection */ ++ ++#else ++#ifndef LEVEL1 ++#define LEVEL1 0 ++#endif ++ ++#ifndef LEVEL2 ++#define LEVEL2 0 ++#endif ++ ++#ifndef LEVEL3 ++#define LEVEL3 0 ++#endif ++#endif ++ ++#if !defined(USE_SIMPLE) && !defined(USE_COMPLEX) ++#define USE_SIMPLE 1 /* build up pointers via multiple typedefs */ ++#define USE_COMPLEX 1 /* single typedef for pointer indirections */ ++ ++#else ++#ifndef USE_SIMPLE ++#define USE_SIMPLE 0 ++#endif ++ ++#ifndef USE_COMPLEX ++#define USE_COMPLEX 0 ++#endif ++#endif ++ ++#if !defined(USE_LOCAL_VAR) && !defined(USE_EA_VAR) ++#define USE_LOCAL_VAR 1 /* use variables declared locally */ ++#define USE_EA_VAR 1 /* use variables on the host */ ++ ++#else ++#ifndef USE_LOCAL_VAR ++#define USE_LOCAL_VAR 0 ++#endif ++ ++#ifndef USE_EA_VAR ++#define USE_EA_VAR 0 ++#endif ++#endif ++ ++static int errors; ++ ++#ifdef USE_PRINTF /* print results via printf */ ++#include ++#include ++ ++static int num_tests; ++ ++#define TEST_SIZE(EXPR, EXPECTED) \ ++do { \ ++ char *msg; \ ++ \ ++ if (sizeof (EXPR) != EXPECTED) \ ++ { \ ++ msg = ", FAIL"; \ ++ errors++; \ ++ } \ ++ else \ ++ msg = ""; \ ++ \ ++ num_tests++; \ ++ printf ("sizeof %-20s = %2u, expected = %2u%s\n", \ ++ #EXPR, \ ++ (unsigned) sizeof (EXPR), \ ++ (unsigned) EXPECTED, \ ++ msg); \ ++} while (0) ++ ++#define PRINT1(FMT) printf (FMT) ++#define PRINT2(FMT,A1) printf (FMT,A1) ++#define PRINT3(FMT,A1,A2) printf (FMT,A1,A2) ++ ++#else /* standalone */ ++extern void abort (void); ++ ++#define TEST_SIZE(EXPR, EXPECTED) \ ++do { \ ++ if (sizeof (EXPR) != EXPECTED) \ ++ abort (); \ ++} while (0) ++ ++#define PRINT1(FMT) ++#define PRINT2(FMT,ARG) ++#define PRINT3(FMT,A1,A2) ++#endif ++ ++/* 'local memory' hack to keep the same spacing. */ ++#define __lm ++ ++#if USE_SIMPLE ++#if (LEVEL1 || LEVEL2 || LEVEL3) ++typedef __lm char *lm_ptr_t; ++typedef __ea char *ea_ptr_t; ++#endif ++ ++#if LEVEL1 ++#if USE_LOCAL_VAR ++__lm lm_ptr_t lm_ptr; ++__lm ea_ptr_t ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_ptr_t lm_ptr_ea; ++__ea ea_ptr_t ea_ptr_ea; ++#endif ++#endif ++ ++#if (LEVEL2 || LEVEL3) ++typedef __lm lm_ptr_t *lm_lm_ptr_t; ++typedef __ea lm_ptr_t *ea_lm_ptr_t; ++typedef __lm ea_ptr_t *lm_ea_ptr_t; ++typedef __ea ea_ptr_t *ea_ea_ptr_t; ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++__lm lm_lm_ptr_t lm_lm_ptr; ++__lm ea_lm_ptr_t ea_lm_ptr; ++__lm lm_ea_ptr_t lm_ea_ptr; ++__lm ea_ea_ptr_t ea_ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_lm_ptr_t lm_lm_ptr_ea; ++__ea ea_lm_ptr_t ea_lm_ptr_ea; ++__ea lm_ea_ptr_t lm_ea_ptr_ea; ++__ea ea_ea_ptr_t ea_ea_ptr_ea; ++#endif ++#endif ++ ++#if LEVEL3 ++typedef __lm lm_lm_ptr_t *lm_lm_lm_ptr_t; ++typedef __ea lm_lm_ptr_t *ea_lm_lm_ptr_t; ++typedef __lm ea_lm_ptr_t *lm_ea_lm_ptr_t; ++typedef __ea ea_lm_ptr_t *ea_ea_lm_ptr_t; ++typedef __lm lm_ea_ptr_t *lm_lm_ea_ptr_t; ++typedef __ea lm_ea_ptr_t *ea_lm_ea_ptr_t; ++typedef __lm ea_ea_ptr_t *lm_ea_ea_ptr_t; ++typedef __ea ea_ea_ptr_t *ea_ea_ea_ptr_t; ++ ++#if USE_LOCAL_VAR ++__lm lm_lm_lm_ptr_t lm_lm_lm_ptr; ++__lm ea_lm_lm_ptr_t ea_lm_lm_ptr; ++__lm lm_ea_lm_ptr_t lm_ea_lm_ptr; ++__lm ea_ea_lm_ptr_t ea_ea_lm_ptr; ++__lm lm_lm_ea_ptr_t lm_lm_ea_ptr; ++__lm ea_lm_ea_ptr_t ea_lm_ea_ptr; ++__lm lm_ea_ea_ptr_t lm_ea_ea_ptr; ++__lm ea_ea_ea_ptr_t ea_ea_ea_ptr; ++#endif ++ ++#if USE_EA_VAR ++__ea lm_lm_lm_ptr_t lm_lm_lm_ptr_ea; ++__ea ea_lm_lm_ptr_t ea_lm_lm_ptr_ea; ++__ea lm_ea_lm_ptr_t lm_ea_lm_ptr_ea; ++__ea ea_ea_lm_ptr_t ea_ea_lm_ptr_ea; ++__ea lm_lm_ea_ptr_t lm_lm_ea_ptr_ea; ++__ea ea_lm_ea_ptr_t ea_lm_ea_ptr_ea; ++__ea lm_ea_ea_ptr_t lm_ea_ea_ptr_ea; ++__ea ea_ea_ea_ptr_t ea_ea_ea_ptr_ea; ++#endif ++#endif ++#endif ++ ++#if USE_COMPLEX ++#if LEVEL1 ++#if USE_LOCAL_VAR ++__lm char *__lm lm_cptr; ++__ea char *__lm ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__ea lm_cptr_ea; ++__ea char *__ea ea_cptr_ea; ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++__lm char *__lm *__lm lm_lm_cptr; ++__lm char *__ea *__lm ea_lm_cptr; ++__ea char *__lm *__lm lm_ea_cptr; ++__ea char *__ea *__lm ea_ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__lm *__ea lm_lm_cptr_ea; ++__lm char *__ea *__ea ea_lm_cptr_ea; ++__ea char *__lm *__ea lm_ea_cptr_ea; ++__ea char *__ea *__ea ea_ea_cptr_ea; ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++__lm char *__lm *__lm *__lm lm_lm_lm_cptr; ++__lm char *__ea *__lm *__lm lm_ea_lm_cptr; ++__ea char *__lm *__lm *__lm lm_lm_ea_cptr; ++__ea char *__ea *__lm *__lm lm_ea_ea_cptr; ++__lm char *__lm *__ea *__lm ea_lm_lm_cptr; ++__lm char *__ea *__ea *__lm ea_ea_lm_cptr; ++__ea char *__lm *__ea *__lm ea_lm_ea_cptr; ++__ea char *__ea *__ea *__lm ea_ea_ea_cptr; ++#endif ++ ++#if USE_EA_VAR ++__lm char *__lm *__lm *__ea lm_lm_lm_cptr_ea; ++__lm char *__ea *__lm *__ea lm_ea_lm_cptr_ea; ++__ea char *__lm *__lm *__ea lm_lm_ea_cptr_ea; ++__ea char *__ea *__lm *__ea lm_ea_ea_cptr_ea; ++__lm char *__lm *__ea *__ea ea_lm_lm_cptr_ea; ++__lm char *__ea *__ea *__ea ea_ea_lm_cptr_ea; ++__ea char *__lm *__ea *__ea ea_lm_ea_cptr_ea; ++__ea char *__ea *__ea *__ea ea_ea_ea_cptr_ea; ++#endif ++#endif ++#endif ++ ++int ++main () ++{ ++ PRINT2 ("LEVEL1 = %d\n", LEVEL1); ++ PRINT2 ("LEVEL2 = %d\n", LEVEL2); ++ PRINT2 ("LEVEL3 = %d\n", LEVEL3); ++ PRINT2 ("USE_SIMPLE = %d\n", USE_SIMPLE); ++ PRINT2 ("USE_COMPLEX = %d\n", USE_COMPLEX); ++ PRINT2 ("USE_LOCAL_VAR = %d\n", USE_LOCAL_VAR); ++ PRINT2 ("USE_EA_VAR = %d\n", USE_EA_VAR); ++ PRINT1 ("\n"); ++ ++#if USE_SIMPLE ++#if LEVEL1 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_ptr, 4); ++ TEST_SIZE (*lm_ptr, 1); ++ TEST_SIZE ( ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (*ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_ptr_ea, 4); ++ TEST_SIZE (*lm_ptr_ea, 1); ++ TEST_SIZE ( ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (*ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_ptr, 4); ++ TEST_SIZE ( *lm_lm_ptr, 4); ++ TEST_SIZE (**lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ptr, 4); ++ TEST_SIZE ( *lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ptr, 4); ++ TEST_SIZE (**ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ptr_ea, 4); ++ TEST_SIZE (**lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ptr_ea, 4); ++ TEST_SIZE (**ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_lm_ptr, 4); ++ TEST_SIZE ( *lm_lm_lm_ptr, 4); ++ TEST_SIZE ( **lm_lm_lm_ptr, 4); ++ TEST_SIZE (***lm_lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_ptr, 4); ++ TEST_SIZE ( *lm_lm_ea_ptr, 4); ++ TEST_SIZE ( **lm_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_ptr, 4); ++ TEST_SIZE ( *lm_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_ptr, 4); ++ TEST_SIZE (***lm_ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_ptr, 4); ++ TEST_SIZE ( *lm_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_ptr, 4); ++ TEST_SIZE ( **ea_lm_lm_ptr, 4); ++ TEST_SIZE (***ea_lm_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_ptr, 4); ++ TEST_SIZE ( **ea_lm_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_ptr, 4); ++ TEST_SIZE (***ea_ea_lm_ptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_ptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_ptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( **lm_lm_lm_ptr_ea, 4); ++ TEST_SIZE (***lm_lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( **lm_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_ptr_ea, 4); ++ TEST_SIZE (***lm_ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_ptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_ptr_ea, 4); ++ TEST_SIZE ( **ea_lm_lm_ptr_ea, 4); ++ TEST_SIZE (***ea_lm_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_ptr_ea, 4); ++ TEST_SIZE ( **ea_lm_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_ptr_ea, 4); ++ TEST_SIZE (***ea_ea_lm_ptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_ptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_ptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++#endif ++ ++#if USE_COMPLEX ++#if LEVEL1 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_cptr, 4); ++ TEST_SIZE (*lm_cptr, 1); ++ TEST_SIZE ( ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (*ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_cptr_ea, 4); ++ TEST_SIZE (*lm_cptr_ea, 1); ++ TEST_SIZE ( ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (*ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL2 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_cptr, 4); ++ TEST_SIZE ( *lm_lm_cptr, 4); ++ TEST_SIZE (**lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_cptr, 4); ++ TEST_SIZE ( *lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_cptr, 4); ++ TEST_SIZE (**ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_cptr_ea, 4); ++ TEST_SIZE (**lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_cptr_ea, 4); ++ TEST_SIZE (**ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (**ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++ ++#if LEVEL3 ++#if USE_LOCAL_VAR ++ TEST_SIZE ( lm_lm_lm_cptr, 4); ++ TEST_SIZE ( *lm_lm_lm_cptr, 4); ++ TEST_SIZE ( **lm_lm_lm_cptr, 4); ++ TEST_SIZE (***lm_lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_cptr, 4); ++ TEST_SIZE ( *lm_lm_ea_cptr, 4); ++ TEST_SIZE ( **lm_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_cptr, 4); ++ TEST_SIZE ( *lm_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_cptr, 4); ++ TEST_SIZE (***lm_ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_cptr, 4); ++ TEST_SIZE ( *lm_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_cptr, 4); ++ TEST_SIZE ( **ea_lm_lm_cptr, 4); ++ TEST_SIZE (***ea_lm_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_cptr, 4); ++ TEST_SIZE ( **ea_lm_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_cptr, 4); ++ TEST_SIZE (***ea_ea_lm_cptr, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_cptr, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_cptr, 1); ++ PRINT1 ("\n"); ++#endif ++ ++#if USE_EA_VAR ++ TEST_SIZE ( lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( **lm_lm_lm_cptr_ea, 4); ++ TEST_SIZE (***lm_lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( **lm_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_lm_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_lm_cptr_ea, 4); ++ TEST_SIZE (***lm_ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( lm_ea_ea_cptr_ea, 4); ++ TEST_SIZE ( *lm_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **lm_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***lm_ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_lm_cptr_ea, 4); ++ TEST_SIZE ( **ea_lm_lm_cptr_ea, 4); ++ TEST_SIZE (***ea_lm_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_lm_ea_cptr_ea, 4); ++ TEST_SIZE ( **ea_lm_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_lm_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_lm_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_lm_cptr_ea, 4); ++ TEST_SIZE (***ea_ea_lm_cptr_ea, 1); ++ PRINT1 ("\n"); ++ ++ TEST_SIZE ( ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( *ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE ( **ea_ea_ea_cptr_ea, EA_PTRSIZE); ++ TEST_SIZE (***ea_ea_ea_cptr_ea, 1); ++ PRINT1 ("\n"); ++#endif ++#endif ++#endif ++ ++ if (errors) ++ { ++ PRINT3 ("%d error(s), %d test(s)\n", errors, num_tests); ++ abort (); ++ } ++ else ++ PRINT2 ("No errors, %d test(s)\n", num_tests); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/compile2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/compile2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/compile2.c (.../cell-4_4-branch) +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Make sure __ea structure references work. */ ++ ++/* { dg-do compile } */ ++ ++typedef unsigned long int uintptr_t; ++ ++struct tostruct ++{ ++ uintptr_t selfpc; ++ long count; ++ unsigned short link; ++}; ++ ++/* froms are indexing tos */ ++static __ea unsigned short *froms; ++static __ea struct tostruct *tos = 0; ++ ++void ++foo (uintptr_t frompc, uintptr_t selfpc) ++{ ++ __ea unsigned short *frompcindex; ++ ++ frompcindex = &froms[(frompc) / (4 * sizeof (*froms))]; ++ *frompcindex = tos[0].link; ++ ++ return; ++} +Index: gcc/testsuite/gcc.target/spu/ea/cast1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/cast1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cast1.c (.../cell-4_4-branch) +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++extern void abort (void); ++extern unsigned long long __ea_local_store; ++ ++__ea int *ppu; ++int x, *spu = &x, *spu2; ++ ++int ++main (int argc, char **argv) ++{ ++ ppu = (__ea int *) spu; ++ spu2 = (int *) ppu; ++ ++#ifdef __EA32__ ++ if ((int) ppu != (int) __ea_local_store + (int) spu) ++#else ++ if ((unsigned long long) ppu != __ea_local_store + (unsigned long long)(int) spu) ++#endif ++ ++ abort (); ++ ++ if (spu != spu2) ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/cast2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/cast2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cast2.c (.../cell-4_4-branch) +@@ -0,0 +1,74 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++extern void abort (void); ++ ++int array[128]; ++ ++__ea int *ea; ++int *lm; ++ ++void verify_ea (void) __attribute__ ((noinline)); ++void ++verify_ea (void) ++{ ++ if (ea != (__ea int *)lm) ++ abort (); ++} ++ ++void verify_lm (void) __attribute__ ((noinline)); ++void ++verify_lm (void) ++{ ++ if ((int *)ea != lm) ++ abort (); ++} ++ ++void verify_diff (int x) __attribute__ ((noinline)); ++void ++verify_diff (int x) ++{ ++ if (ea - lm != x) ++ abort (); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ ea = 0; ++ lm = 0; ++ verify_ea (); ++ verify_lm (); ++ verify_diff (0); ++ ++ ea = &array[64]; ++ lm = &array[64]; ++ verify_ea (); ++ verify_lm (); ++ verify_diff (0); ++ ++ ea = &array[0]; ++ lm = &array[64]; ++ verify_diff (-64); ++ ++ ea = &array[64]; ++ lm = &array[0]; ++ verify_diff (64); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/options1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/options1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/options1.c (.../cell-4_4-branch) +@@ -0,0 +1,22 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Test -mcache-size. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-mcache-size=128" } */ ++ ++int x; +Index: gcc/testsuite/gcc.target/spu/ea/ops1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/ops1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ops1.c (.../cell-4_4-branch) +@@ -0,0 +1,94 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* This is the same as ops2.c except for the compile option. ++ If you modify this code, please modify ops2.c as well. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -std=gnu99 -pedantic-errors -maddress-space-conversion" } */ ++ ++#define __lm ++ ++__ea int ea_var = 1; ++__lm int lm_var = 2; ++ ++typedef __ea int *ea_ptr_t; ++typedef __lm int *lm_ptr_t; ++ ++typedef __ea void *ea_vptr_t; ++typedef __lm void *lm_vptr_t; ++ ++ea_ptr_t ea, ea2; ++lm_ptr_t lm, lm2; ++ ++ea_vptr_t eav; ++lm_vptr_t lmv; ++ ++extern void call_ea (ea_ptr_t); ++extern void call_lm (lm_ptr_t); ++ ++/* Assignment, initialization, argument passing, and return. */ ++void to_ea (void) { ea = lm; } ++void to_lm (void) { lm = ea; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void init_ea (void) { ea_ptr_t l_ea = lm; } ++void init_lm (void) { lm_ptr_t l_lm = ea; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++ea_ptr_t ret_ea (void) { return lm; } ++lm_ptr_t ret_lm (void) { return ea; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++void call_ea2 (void) { call_ea (lm); } ++void call_lm2 (void) { call_lm (ea); } /* { dg-error "passing argument 1 of 'call_lm' from pointer to non-enclosed address space" } */ ++ ++/* Explicit casts. */ ++void to_ea_with_cast (void) { ea = (ea_ptr_t)lm; } ++void to_lm_with_cast (void) { lm = (lm_ptr_t)ea; } ++void init_ea_with_cast (void) { ea_ptr_t l_ea = (ea_ptr_t)lm; } ++void init_lm_with_cast (void) { lm_ptr_t l_lm = (lm_ptr_t)ea; } ++ea_ptr_t ret_ea_with_cast (void) { return (ea_ptr_t)lm; } ++lm_ptr_t ret_lm_with_cast (void) { return (lm_ptr_t)ea; } ++void call_ea2_with_cast (void) { call_ea ((ea_ptr_t)lm); } ++void call_lm2_with_cast (void) { call_lm ((lm_ptr_t)ea); } ++ ++/* Arithmetic operators. */ ++int sub_eaea (void) { return ea - ea2; } ++int sub_ealm (void) { return ea - lm2; } ++int sub_lmea (void) { return lm - ea2; } ++int sub_lmlm (void) { return lm - lm2; } ++ea_ptr_t if_eaea1 (int test) { return test? ea : ea2; } ++lm_ptr_t if_eaea2 (int test) { return test? ea : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_ealm1 (int test) { return test? ea : lm2; } ++lm_ptr_t if_ealm2 (int test) { return test? ea : lm2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_lmea1 (int test) { return test? lm : ea2; } ++lm_ptr_t if_lmea2 (int test) { return test? lm : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_lmlm1 (int test) { return test? lm : lm2; } ++lm_ptr_t if_lmlm2 (int test) { return test? lm : lm2; } ++ ++/* Relational operators. */ ++int eq_eaea (void) { return ea == ea2; } ++int eq_ealm (void) { return ea == lm2; } ++int eq_lmea (void) { return lm == ea2; } ++int eq_lmlm (void) { return lm == lm2; } ++int lt_eaea (void) { return ea < ea2; } ++int lt_ealm (void) { return ea < lm2; } ++int lt_lmea (void) { return lm < ea2; } ++int lt_lmlm (void) { return lm < lm2; } ++ ++/* Null pointer. */ ++void null_ea1 (void) { ea = 0; } ++void null_ea2 (void) { ea = (void *)0; } ++void null_ea3 (void) { ea = (__ea void *)0; } ++void null_lm1 (void) { lm = 0; } ++void null_lm2 (void) { lm = (void *)0; } ++void null_lm3 (void) { lm = (__ea void *)0; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++ +Index: gcc/testsuite/gcc.target/spu/ea/execute1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute1.c (.../cell-4_4-branch) +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do compile } */ ++ ++#include ++ ++__ea char str[] = "abc"; ++ ++int ++main (void) ++{ ++ __ea char *p = str; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/ops2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/ops2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/ops2.c (.../cell-4_4-branch) +@@ -0,0 +1,94 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* This is the same as ops1.c except for the compile option. ++ If you modify this code, please modify ops1.c as well. */ ++ ++/* { dg-do compile } */ ++/* { dg-options "-O2 -std=gnu99 -pedantic-errors -mno-address-space-conversion" } */ ++ ++#define __lm ++ ++__ea int ea_var = 1; ++__lm int lm_var = 2; ++ ++typedef __ea int *ea_ptr_t; ++typedef __lm int *lm_ptr_t; ++ ++typedef __ea void *ea_vptr_t; ++typedef __lm void *lm_vptr_t; ++ ++ea_ptr_t ea, ea2; ++lm_ptr_t lm, lm2; ++ ++ea_vptr_t eav; ++lm_vptr_t lmv; ++ ++extern void call_ea (ea_ptr_t); ++extern void call_lm (lm_ptr_t); ++ ++/* Assignment, initialization, argument passing, and return. */ ++void to_ea (void) { ea = lm; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void to_lm (void) { lm = ea; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++void init_ea (void) { ea_ptr_t l_ea = lm; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++void init_lm (void) { lm_ptr_t l_lm = ea; } /* { dg-error "initialization from pointer to non-enclosed address space" } */ ++ea_ptr_t ret_ea (void) { return lm; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++lm_ptr_t ret_lm (void) { return ea; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++void call_ea2 (void) { call_ea (lm); } /* { dg-error "passing argument 1 of 'call_ea' from pointer to non-enclosed address space" } */ ++void call_lm2 (void) { call_lm (ea); } /* { dg-error "passing argument 1 of 'call_lm' from pointer to non-enclosed address space" } */ ++ ++/* Explicit casts. */ ++void to_ea_with_cast (void) { ea = (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++void to_lm_with_cast (void) { lm = (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++void init_ea_with_cast (void) { ea_ptr_t l_ea = (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++void init_lm_with_cast (void) { lm_ptr_t l_lm = (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++ea_ptr_t ret_ea_with_cast (void) { return (ea_ptr_t)lm; } /* { dg-warning "cast to __ea address space pointer" } */ ++lm_ptr_t ret_lm_with_cast (void) { return (lm_ptr_t)ea; } /* { dg-warning "cast to generic address space pointer" } */ ++void call_ea2_with_cast (void) { call_ea ((ea_ptr_t)lm); } /* { dg-warning "cast to __ea address space pointer" } */ ++void call_lm2_with_cast (void) { call_lm ((lm_ptr_t)ea); } /* { dg-warning "cast to generic address space pointer" } */ ++ ++/* Arithmetic operators. */ ++int sub_eaea (void) { return ea - ea2; } ++int sub_ealm (void) { return ea - lm2; } /* { dg-error "invalid operands to binary -" } */ ++int sub_lmea (void) { return lm - ea2; } /* { dg-error "invalid operands to binary -" } */ ++int sub_lmlm (void) { return lm - lm2; } ++ea_ptr_t if_eaea1 (int test) { return test? ea : ea2; } ++lm_ptr_t if_eaea2 (int test) { return test? ea : ea2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++ea_ptr_t if_ealm1 (int test) { return test? ea : lm2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++lm_ptr_t if_ealm2 (int test) { return test? ea : lm2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++ea_ptr_t if_lmea1 (int test) { return test? lm : ea2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++lm_ptr_t if_lmea2 (int test) { return test? lm : ea2; } /* { dg-error "pointers to disjoint address spaces used in conditional expression" } */ ++ea_ptr_t if_lmlm1 (int test) { return test? lm : lm2; } /* { dg-error "return from pointer to non-enclosed address space" } */ ++lm_ptr_t if_lmlm2 (int test) { return test? lm : lm2; } ++ ++/* Relational operators. */ ++int eq_eaea (void) { return ea == ea2; } ++int eq_ealm (void) { return ea == lm2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int eq_lmea (void) { return lm == ea2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int eq_lmlm (void) { return lm == lm2; } ++int lt_eaea (void) { return ea < ea2; } ++int lt_ealm (void) { return ea < lm2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int lt_lmea (void) { return lm < ea2; } /* { dg-error "comparison of pointers to disjoint address spaces" } */ ++int lt_lmlm (void) { return lm < lm2; } ++ ++/* Null pointer. */ ++void null_ea1 (void) { ea = 0; } ++void null_ea2 (void) { ea = (void *)0; } ++void null_ea3 (void) { ea = (__ea void *)0; } ++void null_lm1 (void) { lm = 0; } ++void null_lm2 (void) { lm = (void *)0; } ++void null_lm3 (void) { lm = (__ea void *)0; } /* { dg-error "assignment from pointer to non-enclosed address space" } */ ++ +Index: gcc/testsuite/gcc.target/spu/ea/cache1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/cache1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cache1.c (.../cell-4_4-branch) +@@ -0,0 +1,195 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++/* { dg-require-effective-target "ealib" } */ ++ ++#include ++#include ++#include ++#include ++ ++#ifdef __EA64__ ++#define addr unsigned long long ++#else ++#define addr unsigned long ++#endif ++ ++static __ea void *bigblock; ++static __ea void *block; ++static int *ls_block; ++ ++extern char __cache_tag_array_size[]; ++#define CACHE_SIZE (4 * (int) &__cache_tag_array_size[0]) ++#define LINE_SIZE ((addr)128) ++ ++void ++init_mem (void) ++{ ++ bigblock = malloc_ea (CACHE_SIZE + 2 * LINE_SIZE); ++ block = malloc_ea (2 * LINE_SIZE); ++ ls_block = malloc (LINE_SIZE); ++ ++ memset_ea (bigblock, 0, CACHE_SIZE + 2 * LINE_SIZE); ++ memset_ea (block, -1, 2 * LINE_SIZE); ++ memset (ls_block, -1, LINE_SIZE); ++ cache_flush (); ++} ++ ++/* Test 1: Simple cache fetching. */ ++void ++test1 (void) ++{ ++ addr aligned = ((((addr) block) + LINE_SIZE - 1) & -LINE_SIZE); ++ int *p1 = NULL; ++ int *p2 = NULL; ++ int i = 0; ++ ++ /* First, check if the same addr give the same cache ptr. */ ++ p1 = cache_fetch ((__ea void *) aligned); ++ p2 = cache_fetch ((__ea void *) aligned); ++ ++ if (p1 != p2) ++ abort (); ++ ++ /* Check that the data actually is in the cache. */ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (p1[i] != -1) ++ abort (); ++ } ++ ++ /* Check returning within the cache line. */ ++ p2 = cache_fetch ((__ea void *) (aligned + sizeof (int))); ++ ++ if (p2 - p1 != 1) ++ abort (); ++ ++ /* Finally, check that fetching an LS pointer returns that pointer. */ ++ p1 = cache_fetch ((__ea char *) ls_block); ++ if (p1 != ls_block) ++ abort (); ++} ++ ++/* Test 2: Eviction testing. */ ++void ++test2 (void) ++{ ++ addr aligned = ((((addr) block) + LINE_SIZE - 1) & -LINE_SIZE); ++ int *p = NULL; ++ int i = 0; ++ ++ /* First check that clean evictions don't write back. */ ++ p = cache_fetch ((__ea void *) aligned); ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ p[i] = 0; ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (ls_block[i] == 0) ++ abort (); ++ } ++ ++ /* Now check that dirty evictions do write back. */ ++ p = cache_fetch_dirty ((__ea void *) aligned, LINE_SIZE); ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ p[i] = 0; ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if (ls_block[i] != 0) ++ abort (); ++ } ++ ++ /* Finally, check that non-atomic writeback only writes dirty bytes. */ ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ p = cache_fetch_dirty ((__ea void *) (aligned + i * sizeof (int)), ++ (i % 2) * sizeof (int)); ++ p[0] = -1; ++ } ++ ++ cache_evict ((__ea void *) aligned); ++ memcpy_ea ((__ea char *) ls_block, (__ea void *) aligned, LINE_SIZE); ++ ++ for (i = 0; i < LINE_SIZE / sizeof (int); i++) ++ { ++ if ((ls_block[i] == -1) && (i % 2 == 0)) ++ abort (); ++ if ((ls_block[i] == 0) && (i % 2 == 1)) ++ abort (); ++ } ++} ++ ++/* Test LS forced-eviction. */ ++void ++test3 (void) ++{ ++ addr aligned = ((((addr) bigblock) + LINE_SIZE - 1) & -LINE_SIZE); ++ char *test = NULL; ++ char *ls = NULL; ++ int i = 0; ++ ++ /* Init memory, fill the cache to capacity. */ ++ ls = cache_fetch_dirty ((__ea void *) aligned, LINE_SIZE); ++ for (i = 1; i < (CACHE_SIZE / LINE_SIZE); i++) ++ cache_fetch_dirty ((__ea void *) (aligned + i * LINE_SIZE), LINE_SIZE); ++ ++ memset (ls, -1, LINE_SIZE); ++ test = cache_fetch ((__ea void *) (aligned + CACHE_SIZE)); ++ ++ /* test == ls indicates cache collision. */ ++ if (test != ls) ++ abort (); ++ ++ /* Make sure it actually wrote the cache line. */ ++ for (i = 0; i < LINE_SIZE; i++) ++ { ++ if (ls[i] != 0) ++ abort (); ++ } ++ ++ ls = cache_fetch ((__ea void *) aligned); ++ ++ /* test != ls indicates another entry was evicted. */ ++ if (test == ls) ++ abort (); ++ ++ /* Make sure that the previous eviction actually wrote back. */ ++ for (i = 0; i < LINE_SIZE; i++) ++ { ++ if (ls[i] != 0xFF) ++ abort (); ++ } ++} ++ ++int ++main (int argc, char **argv) ++{ ++ init_mem (); ++ test1 (); ++ test2 (); ++ test3 (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/execute2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute2.c (.../cell-4_4-branch) +@@ -0,0 +1,41 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#include ++ ++char str[] = "abc"; ++ ++int ++main (void) ++{ ++ __ea char *p = (__ea char *)str; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/execute3.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/execute3.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/execute3.c (.../cell-4_4-branch) +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do run } */ ++ ++#include ++ ++int ++main (void) ++{ ++ __ea char *p = (__ea char *)"abc"; ++ ++ if (*p++ != 'a') ++ abort (); ++ ++ if (*p++ != 'b') ++ abort (); ++ ++ if (*p++ != 'c') ++ abort (); ++ ++ if (*p++ != '\0') ++ abort (); ++ ++ return 0; ++} +Index: gcc/testsuite/gcc.target/spu/ea/pr41857.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/pr41857.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/pr41857.c (.../cell-4_4-branch) +@@ -0,0 +1,29 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* { dg-do compile } */ ++ ++__ea char *strchr_ea (__ea const char *s, int c); ++__ea char *foo (__ea char *s) ++{ ++ __ea char *ret = s; ++ int i; ++ ++ for (i = 0; i < 3; i++) ++ ret = strchr_ea (ret, s[i]); ++ ++ return ret; ++} +Index: gcc/testsuite/gcc.target/spu/ea/errors1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/errors1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/errors1.c (.../cell-4_4-branch) +@@ -0,0 +1,67 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Invalid __ea declarations. */ ++ ++/* { dg-do compile } */ ++ ++typedef __ea int eaint; ++ ++void func () ++{ ++ register __ea int local1; /* { dg-error "'__ea' combined with 'register' qualifier for 'local1'" } */ ++ auto __ea int local2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'local2'" } */ ++ __ea int local3; /* { dg-error "'__ea' specified for auto variable 'local3'" } */ ++ register int *__ea p1; /* { dg-error "'__ea' combined with 'register' qualifier for 'p1'" } */ ++ auto char *__ea p2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'p2'" } */ ++ void *__ea p3; /* { dg-error "'__ea' specified for auto variable 'p3'" } */ ++ register __ea int a1[2]; /* { dg-error "'__ea' combined with 'register' qualifier for 'a1'" } */ ++ auto __ea char a2[1]; /* { dg-error "'__ea' combined with 'auto' qualifier for 'a2'" } */ ++ __ea char a3[5]; /* { dg-error "'__ea' specified for auto variable 'a3'" } */ ++ register eaint td1; /* { dg-error "'__ea' combined with 'register' qualifier for 'td1'" } */ ++ auto eaint td2; /* { dg-error "'__ea' combined with 'auto' qualifier for 'td2'" } */ ++ eaint td3; /* { dg-error "'__ea' specified for auto variable 'td3'" } */ ++} ++ ++void func2 (__ea int x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ } ++ ++void func2td (eaint x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ } ++ ++struct st { ++ __ea int x; /* { dg-error "'__ea' specified for structure field 'x'" } */ ++ eaint td; /* { dg-error "'__ea' specified for structure field 'td'" } */ ++ int *__ea q; /* { dg-error "'__ea' specified for structure field 'q'" } */ ++ int __ea b : 7; /* { dg-error "'__ea' specified for structure field 'b'" } */ ++ int __ea : 1; /* { dg-error "'__ea' specified for structure field" } */ ++} s; ++ ++struct A { int a; }; ++ ++int func3 (int *__ea); /* { dg-error "'__ea' specified for unnamed parameter" } */ ++int func3 (int *__ea x) /* { dg-error "'__ea' specified for parameter 'x'" } */ ++{ ++ struct A i = (__ea struct A) { 1 }; /* { dg-error "compound literal qualified by address-space qualifier" } */ ++ return i.a; ++} ++ ++extern __ea int ea_var; /* { dg-message "note: previous declaration of 'ea_var' was here" } */ ++int ea_var; /* { dg-error "conflicting named address spaces \\(generic vs __ea\\) for 'ea_var'" } */ ++ ++extern eaint ea_var_td; /* { dg-message "note: previous declaration of 'ea_var_td' was here" } */ ++int ea_var_td; /* { dg-error "conflicting named address spaces \\(generic vs __ea\\) for 'ea_var_td'" } */ ++ +Index: gcc/testsuite/gcc.target/spu/ea/cppdefine.c +=================================================================== +--- a/src/gcc/testsuite/gcc.target/spu/ea/cppdefine.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.target/spu/ea/cppdefine.c (.../cell-4_4-branch) +@@ -0,0 +1,36 @@ ++/* Copyright (C) 2009 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 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. ++ ++ You should have received a copy of the GNU General Public License ++ along with this file; see the file COPYING3. If not see ++ . */ ++ ++/* Test default __EA32__/__EA64__ define. */ ++ ++/* { dg-do compile } */ ++ ++#if !defined (__EA32__) && !defined (__EA64__) ++#error both __EA32__ and __EA64__ undefined ++#endif ++ ++#if defined (__EA32__) && defined (__EA64__) ++#error both __EA32__ and __EA64__ defined ++#endif ++ ++#ifdef __EA32__ ++int x [ sizeof (__ea char *) == 4 ? 1 : -1 ]; ++#endif ++ ++#ifdef __EA64__ ++int x [ sizeof (__ea char *) == 8 ? 1 : -1 ]; ++#endif ++ +Index: gcc/testsuite/gcc.dg/vector-init-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vector-init-1.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.dg/vector-init-1.c (.../cell-4_4-branch) +@@ -0,0 +1,6 @@ ++/* { dg-do compile } */ ++ ++/* PR C/31499, test that the C front-end treats vectors like an array. */ ++ ++#define vector __attribute__((__vector_size__(4*sizeof(int)) )) ++vector signed int v1[]={0,1,2,3,4,5,6,7}; +Index: gcc/testsuite/gcc.dg/vector-4.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vector-4.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.dg/vector-4.c (.../cell-4_4-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++#define vector __attribute__((vector_size(4*sizeof(int)) )) ++ ++vector int a, b, c; ++ ++ ++/* Test that remainder works for vectors. */ ++void f(void) ++{ ++ a = b % c; ++} +Index: gcc/testsuite/gcc.dg/vector-init-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/vector-init-2.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.dg/vector-init-2.c (.../cell-4_4-branch) +@@ -0,0 +1,25 @@ ++/* { dg-do run } */ ++ ++/* PR C/31499, test that the C front-end treats vectors like an array ++ and that it works at runtime. */ ++ ++#define vector __attribute__((__vector_size__(4*sizeof(int)) )) ++vector signed int v1[]={0,1,2,3,4,5,6,7}; ++ ++ ++int main(void) ++{ ++ int i; ++ for (i = 0; i < sizeof(v1)/sizeof(v1[0]); i++) ++ { ++ vector int t = v1[i]; ++ int *d = (int*)&t; ++ int j; ++ for (j = 0; j < 4; j++) ++ { ++ if (d[j] != i * 4 + j) ++ __builtin_abort (); ++ } ++ } ++ return 0; ++} +\ No newline at end of file +Index: gcc/testsuite/gcc.dg/simd-1b.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/simd-1b.c (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/gcc.dg/simd-1b.c (.../cell-4_4-branch) +@@ -14,7 +14,7 @@ + hanneke () + { + /* Operators on compatible SIMD types. */ +- a %= b; /* { dg-error "invalid operands to binary %" } */ ++ a %= b; + c &= d; + a |= b; + c ^= d; +Index: gcc/testsuite/g++.dg/ext/vector16.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/ext/vector16.C (.../gcc-4_4-branch) ++++ b/src/gcc/testsuite/g++.dg/ext/vector16.C (.../cell-4_4-branch) +@@ -0,0 +1,11 @@ ++/* { dg-do compile } */ ++#define vector __attribute__((vector_size(4*sizeof(int)) )) ++ ++vector int a, b, c; ++ ++ ++/* Test that remainder works for vectors. */ ++void f(void) ++{ ++ a = b % c; ++} +Index: gcc/cp/typeck.c +=================================================================== +--- a/src/gcc/cp/typeck.c (.../gcc-4_4-branch) ++++ b/src/gcc/cp/typeck.c (.../cell-4_4-branch) +@@ -3481,7 +3481,11 @@ + case FLOOR_MOD_EXPR: + warn_for_div_by_zero (location, op1); + +- if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) ++ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE ++ && TREE_CODE (TREE_TYPE (type1)) == INTEGER_TYPE) ++ common = 1; ++ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { + /* Although it would be tempting to shorten always here, that loses + on some targets, since the modulo instruction is undefined if the +Index: gcc/tree-ssa-loop-ivopts.c +=================================================================== +--- a/src/gcc/tree-ssa-loop-ivopts.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-ssa-loop-ivopts.c (.../cell-4_4-branch) +@@ -2575,21 +2575,25 @@ + static rtx + produce_memory_decl_rtl (tree obj, int *regno) + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (obj)); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + rtx x; + + gcc_assert (obj); + if (TREE_STATIC (obj) || DECL_EXTERNAL (obj)) + { + const char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (obj)); +- x = gen_rtx_SYMBOL_REF (Pmode, name); ++ x = gen_rtx_SYMBOL_REF (address_mode, name); + SET_SYMBOL_REF_DECL (x, obj); + x = gen_rtx_MEM (DECL_MODE (obj), x); ++ set_mem_addr_space (x, as); + targetm.encode_section_info (obj, x, true); + } + else + { +- x = gen_raw_REG (Pmode, (*regno)++); ++ x = gen_raw_REG (address_mode, (*regno)++); + x = gen_rtx_MEM (DECL_MODE (obj), x); ++ set_mem_addr_space (x, as); + } + + return x; +@@ -2677,7 +2681,8 @@ + + cost = seq_cost (seq, speed); + if (MEM_P (rslt)) +- cost += address_cost (XEXP (rslt, 0), TYPE_MODE (type), speed); ++ cost += address_cost (XEXP (rslt, 0), TYPE_MODE (type), ++ TYPE_ADDR_SPACE (type), speed); + + return cost; + } +@@ -2953,124 +2958,153 @@ + } + + /* Returns true if multiplying by RATIO is allowed in an address. Test the +- validity for a memory reference accessing memory of mode MODE. */ ++ validity for a memory reference accessing memory of mode MODE in ++ address space AS. */ + ++DEF_VEC_P (sbitmap); ++DEF_VEC_ALLOC_P (sbitmap, heap); ++ + bool +-multiplier_allowed_in_address_p (HOST_WIDE_INT ratio, enum machine_mode mode) ++multiplier_allowed_in_address_p (HOST_WIDE_INT ratio, enum machine_mode mode, ++ addr_space_t as) + { + #define MAX_RATIO 128 +- static sbitmap valid_mult[MAX_MACHINE_MODE]; +- +- if (!valid_mult[mode]) ++ unsigned int data_index = (int) as * MAX_MACHINE_MODE + (int) mode; ++ static VEC (sbitmap, heap) *valid_mult_list; ++ sbitmap valid_mult; ++ ++ if (data_index >= VEC_length (sbitmap, valid_mult_list)) ++ VEC_safe_grow_cleared (sbitmap, heap, valid_mult_list, data_index + 1); ++ ++ valid_mult = VEC_index (sbitmap, valid_mult_list, data_index); ++ if (!valid_mult) + { +- rtx reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); ++ rtx reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); + rtx addr; + HOST_WIDE_INT i; + +- valid_mult[mode] = sbitmap_alloc (2 * MAX_RATIO + 1); +- sbitmap_zero (valid_mult[mode]); +- addr = gen_rtx_fmt_ee (MULT, Pmode, reg1, NULL_RTX); ++ valid_mult = sbitmap_alloc (2 * MAX_RATIO + 1); ++ sbitmap_zero (valid_mult); ++ addr = gen_rtx_fmt_ee (MULT, address_mode, reg1, NULL_RTX); + for (i = -MAX_RATIO; i <= MAX_RATIO; i++) + { +- XEXP (addr, 1) = gen_int_mode (i, Pmode); +- if (memory_address_p (mode, addr)) +- SET_BIT (valid_mult[mode], i + MAX_RATIO); ++ XEXP (addr, 1) = gen_int_mode (i, address_mode); ++ if (memory_address_addr_space_p (mode, addr, as)) ++ SET_BIT (valid_mult, i + MAX_RATIO); + } + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, " allowed multipliers:"); + for (i = -MAX_RATIO; i <= MAX_RATIO; i++) +- if (TEST_BIT (valid_mult[mode], i + MAX_RATIO)) ++ if (TEST_BIT (valid_mult, i + MAX_RATIO)) + fprintf (dump_file, " %d", (int) i); + fprintf (dump_file, "\n"); + fprintf (dump_file, "\n"); + } ++ ++ VEC_replace (sbitmap, valid_mult_list, data_index, valid_mult); + } + + if (ratio > MAX_RATIO || ratio < -MAX_RATIO) + return false; + +- return TEST_BIT (valid_mult[mode], ratio + MAX_RATIO); ++ return TEST_BIT (valid_mult, ratio + MAX_RATIO); + } + + /* Returns cost of address in shape symbol + var + OFFSET + RATIO * index. + If SYMBOL_PRESENT is false, symbol is omitted. If VAR_PRESENT is false, + variable is omitted. Compute the cost for a memory reference that accesses +- a memory location of mode MEM_MODE. ++ a memory location of mode MEM_MODE in address space AS. + + TODO -- there must be some better way. This all is quite crude. */ + ++typedef struct ++{ ++ HOST_WIDE_INT min_offset, max_offset; ++ unsigned costs[2][2][2][2]; ++} *address_cost_data; ++ ++DEF_VEC_P (address_cost_data); ++DEF_VEC_ALLOC_P (address_cost_data, heap); ++ + static comp_cost + get_address_cost (bool symbol_present, bool var_present, + unsigned HOST_WIDE_INT offset, HOST_WIDE_INT ratio, +- enum machine_mode mem_mode, ++ enum machine_mode mem_mode, addr_space_t as, + bool speed) + { +- static bool initialized[MAX_MACHINE_MODE]; +- static HOST_WIDE_INT rat[MAX_MACHINE_MODE], off[MAX_MACHINE_MODE]; +- static HOST_WIDE_INT min_offset[MAX_MACHINE_MODE], max_offset[MAX_MACHINE_MODE]; +- static unsigned costs[MAX_MACHINE_MODE][2][2][2][2]; ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); ++ static VEC(address_cost_data, heap) *address_cost_data_list; ++ unsigned int data_index = (int) as * MAX_MACHINE_MODE + (int) mem_mode; ++ address_cost_data data; + unsigned cost, acost, complexity; + bool offset_p, ratio_p; + HOST_WIDE_INT s_offset; + unsigned HOST_WIDE_INT mask; + unsigned bits; + +- if (!initialized[mem_mode]) ++ if (data_index >= VEC_length (address_cost_data, address_cost_data_list)) ++ VEC_safe_grow_cleared (address_cost_data, heap, address_cost_data_list, ++ data_index + 1); ++ ++ data = VEC_index (address_cost_data, address_cost_data_list, data_index); ++ if (!data) + { + HOST_WIDE_INT i; + HOST_WIDE_INT start = BIGGEST_ALIGNMENT / BITS_PER_UNIT; ++ HOST_WIDE_INT rat, off; + int old_cse_not_expected; + unsigned sym_p, var_p, off_p, rat_p, add_c; + rtx seq, addr, base; + rtx reg0, reg1; + +- initialized[mem_mode] = true; ++ data = (address_cost_data) xcalloc (1, sizeof (*data)); + +- reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); ++ reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); + +- addr = gen_rtx_fmt_ee (PLUS, Pmode, reg1, NULL_RTX); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, reg1, NULL_RTX); + for (i = start; i <= 1 << 20; i <<= 1) + { +- XEXP (addr, 1) = gen_int_mode (i, Pmode); +- if (!memory_address_p (mem_mode, addr)) ++ XEXP (addr, 1) = gen_int_mode (i, address_mode); ++ if (!memory_address_addr_space_p (mem_mode, addr, as)) + break; + } +- max_offset[mem_mode] = i == start ? 0 : i >> 1; +- off[mem_mode] = max_offset[mem_mode]; ++ data->max_offset = i == start ? 0 : i >> 1; ++ off = data->max_offset; + + for (i = start; i <= 1 << 20; i <<= 1) + { +- XEXP (addr, 1) = gen_int_mode (-i, Pmode); +- if (!memory_address_p (mem_mode, addr)) ++ XEXP (addr, 1) = gen_int_mode (-i, address_mode); ++ if (!memory_address_addr_space_p (mem_mode, addr, as)) + break; + } +- min_offset[mem_mode] = i == start ? 0 : -(i >> 1); ++ data->min_offset = i == start ? 0 : -(i >> 1); + + if (dump_file && (dump_flags & TDF_DETAILS)) + { + fprintf (dump_file, "get_address_cost:\n"); + fprintf (dump_file, " min offset %s %d\n", + GET_MODE_NAME (mem_mode), +- (int) min_offset[mem_mode]); ++ (int) data->min_offset); + fprintf (dump_file, " max offset %s %d\n", + GET_MODE_NAME (mem_mode), +- (int) max_offset[mem_mode]); ++ (int) data->max_offset); + } + +- rat[mem_mode] = 1; ++ rat = 1; + for (i = 2; i <= MAX_RATIO; i++) +- if (multiplier_allowed_in_address_p (i, mem_mode)) ++ if (multiplier_allowed_in_address_p (i, mem_mode, as)) + { +- rat[mem_mode] = i; ++ rat = i; + break; + } + + /* Compute the cost of various addressing modes. */ + acost = 0; +- reg0 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); +- reg1 = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 2); ++ reg0 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1); ++ reg1 = gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 2); + + for (i = 0; i < 16; i++) + { +@@ -3081,15 +3115,15 @@ + + addr = reg0; + if (rat_p) +- addr = gen_rtx_fmt_ee (MULT, Pmode, addr, +- gen_int_mode (rat[mem_mode], Pmode)); ++ addr = gen_rtx_fmt_ee (MULT, address_mode, addr, ++ gen_int_mode (rat, address_mode)); + + if (var_p) +- addr = gen_rtx_fmt_ee (PLUS, Pmode, addr, reg1); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, addr, reg1); + + if (sym_p) + { +- base = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup ("")); ++ base = gen_rtx_SYMBOL_REF (address_mode, ggc_strdup ("")); + /* ??? We can run into trouble with some backends by presenting + it with symbols which haven't been properly passed through + targetm.encode_section_info. By setting the local bit, we +@@ -3097,36 +3131,35 @@ + SYMBOL_REF_FLAGS (base) = SYMBOL_FLAG_LOCAL; + + if (off_p) +- base = gen_rtx_fmt_e (CONST, Pmode, +- gen_rtx_fmt_ee (PLUS, Pmode, +- base, +- gen_int_mode (off[mem_mode], +- Pmode))); ++ base = gen_rtx_fmt_e (CONST, address_mode, ++ gen_rtx_fmt_ee ++ (PLUS, address_mode, base, ++ gen_int_mode (off, address_mode))); + } + else if (off_p) +- base = gen_int_mode (off[mem_mode], Pmode); ++ base = gen_int_mode (off, address_mode); + else + base = NULL_RTX; + + if (base) +- addr = gen_rtx_fmt_ee (PLUS, Pmode, addr, base); ++ addr = gen_rtx_fmt_ee (PLUS, address_mode, addr, base); + + start_sequence (); + /* To avoid splitting addressing modes, pretend that no cse will + follow. */ + old_cse_not_expected = cse_not_expected; + cse_not_expected = true; +- addr = memory_address (mem_mode, addr); ++ addr = memory_address_addr_space (mem_mode, addr, as); + cse_not_expected = old_cse_not_expected; + seq = get_insns (); + end_sequence (); + + acost = seq_cost (seq, speed); +- acost += address_cost (addr, mem_mode, speed); ++ acost += address_cost (addr, mem_mode, as, speed); + + if (!acost) + acost = 1; +- costs[mem_mode][sym_p][var_p][off_p][rat_p] = acost; ++ data->costs[sym_p][var_p][off_p][rat_p] = acost; + } + + /* On some targets, it is quite expensive to load symbol to a register, +@@ -3141,19 +3174,19 @@ + If VAR_PRESENT is true, try whether the mode with + SYMBOL_PRESENT = false is cheaper even with cost of addition, and + if this is the case, use it. */ +- add_c = add_cost (Pmode, speed); ++ add_c = add_cost (address_mode, speed); + for (i = 0; i < 8; i++) + { + var_p = i & 1; + off_p = (i >> 1) & 1; + rat_p = (i >> 2) & 1; + +- acost = costs[mem_mode][0][1][off_p][rat_p] + 1; ++ acost = data->costs[0][1][off_p][rat_p] + 1; + if (var_p) + acost += add_c; + +- if (acost < costs[mem_mode][1][var_p][off_p][rat_p]) +- costs[mem_mode][1][var_p][off_p][rat_p] = acost; ++ if (acost < data->costs[1][var_p][off_p][rat_p]) ++ data->costs[1][var_p][off_p][rat_p] = acost; + } + + if (dump_file && (dump_flags & TDF_DETAILS)) +@@ -3177,14 +3210,17 @@ + if (rat_p) + fprintf (dump_file, "rat * "); + +- acost = costs[mem_mode][sym_p][var_p][off_p][rat_p]; ++ acost = data->costs[sym_p][var_p][off_p][rat_p]; + fprintf (dump_file, "index costs %d\n", acost); + } + fprintf (dump_file, "\n"); + } ++ ++ VEC_replace (address_cost_data, address_cost_data_list, ++ data_index, data); + } + +- bits = GET_MODE_BITSIZE (Pmode); ++ bits = GET_MODE_BITSIZE (address_mode); + mask = ~(~(unsigned HOST_WIDE_INT) 0 << (bits - 1) << 1); + offset &= mask; + if ((offset >> (bits - 1) & 1)) +@@ -3193,18 +3229,18 @@ + + cost = 0; + offset_p = (s_offset != 0 +- && min_offset[mem_mode] <= s_offset +- && s_offset <= max_offset[mem_mode]); ++ && data->min_offset <= s_offset ++ && s_offset <= data->max_offset); + ratio_p = (ratio != 1 +- && multiplier_allowed_in_address_p (ratio, mem_mode)); ++ && multiplier_allowed_in_address_p (ratio, mem_mode, as)); + + if (ratio != 1 && !ratio_p) +- cost += multiply_by_cost (ratio, Pmode, speed); ++ cost += multiply_by_cost (ratio, address_mode, speed); + + if (s_offset && !offset_p && !symbol_present) +- cost += add_cost (Pmode, speed); ++ cost += add_cost (address_mode, speed); + +- acost = costs[mem_mode][symbol_present][var_present][offset_p][ratio_p]; ++ acost = data->costs[symbol_present][var_present][offset_p][ratio_p]; + complexity = (symbol_present != 0) + (var_present != 0) + offset_p + ratio_p; + return new_cost (cost + acost, complexity); + } +@@ -3421,6 +3457,7 @@ + unsigned HOST_WIDE_INT *offset, bitmap *depends_on) + { + HOST_WIDE_INT diff = 0; ++ enum machine_mode mode = TYPE_MODE (TREE_TYPE (e1)); + comp_cost cost; + bool speed = optimize_loop_for_speed_p (data->current_loop); + +@@ -3443,7 +3480,7 @@ + + cost = force_var_cost (data, e1, depends_on); + cost = add_costs (cost, force_var_cost (data, e2, depends_on)); +- cost.cost += add_cost (Pmode, speed); ++ cost.cost += add_cost (mode, speed); + + return cost; + } +@@ -3619,7 +3656,9 @@ + if (address_p) + return add_costs (cost, get_address_cost (symbol_present, var_present, + offset, ratio, +- TYPE_MODE (TREE_TYPE (*use->op_p)), speed)); ++ TYPE_MODE (TREE_TYPE (*use->op_p)), ++ TYPE_ADDR_SPACE (TREE_TYPE (*use->op_p)), ++ speed)); + + /* Otherwise estimate the costs for computing the expression. */ + aratio = ratio > 0 ? ratio : -ratio; +@@ -5309,6 +5348,7 @@ + { + aff_tree aff; + gimple_stmt_iterator bsi = gsi_for_stmt (use->stmt); ++ tree base_hint = NULL_TREE; + tree ref; + bool ok; + +@@ -5316,7 +5356,22 @@ + gcc_assert (ok); + unshare_aff_combination (&aff); + +- ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff, data->speed); ++ /* To avoid undefined overflow problems, all IV candidates use unsigned ++ integer types. The drawback is that this makes it impossible for ++ create_mem_ref to distinguish an IV that is based on a memory object ++ from one that represents simply an offset. ++ ++ To work around this problem, we pass a hint to create_mem_ref that ++ indicates which variable (if any) in aff is an IV based on a memory ++ object. Note that we only consider the candidate. If this is not ++ based on an object, the base of the reference is in some subexpression ++ of the use -- but these will use pointer types, so they are recognized ++ by the create_mem_ref heuristics anyway. */ ++ if (cand->iv->base_object) ++ base_hint = var_at_stmt (data->current_loop, cand, use->stmt); ++ ++ ref = create_mem_ref (&bsi, TREE_TYPE (*use->op_p), &aff, base_hint, ++ data->speed); + copy_ref_info (ref, *use->op_p); + *use->op_p = ref; + } +Index: gcc/cse.c +=================================================================== +--- a/src/gcc/cse.c (.../gcc-4_4-branch) ++++ b/src/gcc/cse.c (.../cell-4_4-branch) +@@ -2435,6 +2435,10 @@ + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + switch (code) + { + case PC: +Index: gcc/c-tree.h +=================================================================== +--- a/src/gcc/c-tree.h (.../gcc-4_4-branch) ++++ b/src/gcc/c-tree.h (.../cell-4_4-branch) +@@ -287,6 +287,8 @@ + BOOL_BITFIELD restrict_p : 1; + /* Whether "_Sat" was specified. */ + BOOL_BITFIELD saturating_p : 1; ++ /* The address space that the declaration belongs to. */ ++ addr_space_t address_space; + }; + + /* The various kinds of declarators in C. */ +@@ -517,6 +519,8 @@ + struct c_typespec); + extern struct c_declspecs *declspecs_add_scspec (struct c_declspecs *, tree); + extern struct c_declspecs *declspecs_add_attrs (struct c_declspecs *, tree); ++extern struct c_declspecs *declspecs_add_addrspace (struct c_declspecs *, ++ addr_space_t); + extern struct c_declspecs *finish_declspecs (struct c_declspecs *); + + /* in c-objc-common.c */ +Index: gcc/ifcvt.c +=================================================================== +--- a/src/gcc/ifcvt.c (.../gcc-4_4-branch) ++++ b/src/gcc/ifcvt.c (.../cell-4_4-branch) +@@ -1331,11 +1331,15 @@ + /* ??? FIXME: Magic number 5. */ + if (cse_not_expected + && MEM_P (a) && MEM_P (b) ++ && MEM_ADDR_SPACE (a) == MEM_ADDR_SPACE (b) + && if_info->branch_cost >= 5) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (a)); ++ + a = XEXP (a, 0); + b = XEXP (b, 0); +- x = gen_reg_rtx (Pmode); ++ x = gen_reg_rtx (address_mode); + is_mem = 1; + } + +@@ -1484,6 +1488,9 @@ + set_mem_align (tmp, + MIN (MEM_ALIGN (if_info->a), MEM_ALIGN (if_info->b))); + ++ gcc_assert (MEM_ADDR_SPACE (if_info->a) == MEM_ADDR_SPACE (if_info->b)); ++ set_mem_addr_space (tmp, MEM_ADDR_SPACE (if_info->a)); ++ + noce_emit_move_insn (if_info->x, tmp); + } + else if (target != x) +Index: gcc/jump.c +=================================================================== +--- a/src/gcc/jump.c (.../gcc-4_4-branch) ++++ b/src/gcc/jump.c (.../cell-4_4-branch) +@@ -1641,6 +1641,10 @@ + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + /* For commutative operations, the RTX match if the operand match in any + order. Also handle the simple binary and unary cases without a loop. */ + if (targetm.commutative_p (x, UNKNOWN)) +Index: gcc/dwarf2out.c +=================================================================== +--- a/src/gcc/dwarf2out.c (.../gcc-4_4-branch) ++++ b/src/gcc/dwarf2out.c (.../cell-4_4-branch) +@@ -9591,6 +9591,9 @@ + add_AT_unsigned (mod_type_die, DW_AT_byte_size, + simple_type_size_in_bits (type) / BITS_PER_UNIT); + item_type = TREE_TYPE (type); ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (item_type))) ++ add_AT_unsigned (mod_type_die, DW_AT_address_class, ++ TYPE_ADDR_SPACE (item_type)); + } + else if (code == REFERENCE_TYPE) + { +@@ -9598,6 +9601,9 @@ + add_AT_unsigned (mod_type_die, DW_AT_byte_size, + simple_type_size_in_bits (type) / BITS_PER_UNIT); + item_type = TREE_TYPE (type); ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (item_type))) ++ add_AT_unsigned (mod_type_die, DW_AT_address_class, ++ TYPE_ADDR_SPACE (item_type)); + } + else if (is_subrange_type (type)) + { +Index: gcc/expr.c +=================================================================== +--- a/src/gcc/expr.c (.../gcc-4_4-branch) ++++ b/src/gcc/expr.c (.../cell-4_4-branch) +@@ -895,6 +895,8 @@ + unsigned int align, int endp) + { + struct move_by_pieces data; ++ enum machine_mode to_addr_mode, from_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (from)); + rtx to_addr, from_addr = XEXP (from, 0); + unsigned int max_size = MOVE_MAX_PIECES + 1; + enum machine_mode mode = VOIDmode, tmode; +@@ -906,6 +908,7 @@ + data.from_addr = from_addr; + if (to) + { ++ to_addr_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to)); + to_addr = XEXP (to, 0); + data.to = to; + data.autinc_to +@@ -916,6 +919,7 @@ + } + else + { ++ to_addr_mode = VOIDmode; + to_addr = NULL_RTX; + data.to = NULL_RTX; + data.autinc_to = 1; +@@ -951,32 +955,34 @@ + + if (USE_LOAD_PRE_DECREMENT (mode) && data.reverse && ! data.autinc_from) + { +- data.from_addr = copy_addr_to_reg (plus_constant (from_addr, len)); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, ++ plus_constant (from_addr, len)); + data.autinc_from = 1; + data.explicit_inc_from = -1; + } + if (USE_LOAD_POST_INCREMENT (mode) && ! data.autinc_from) + { +- data.from_addr = copy_addr_to_reg (from_addr); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, from_addr); + data.autinc_from = 1; + data.explicit_inc_from = 1; + } + if (!data.autinc_from && CONSTANT_P (from_addr)) +- data.from_addr = copy_addr_to_reg (from_addr); ++ data.from_addr = copy_to_mode_reg (from_addr_mode, from_addr); + if (USE_STORE_PRE_DECREMENT (mode) && data.reverse && ! data.autinc_to) + { +- data.to_addr = copy_addr_to_reg (plus_constant (to_addr, len)); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (to_addr, len)); + data.autinc_to = 1; + data.explicit_inc_to = -1; + } + if (USE_STORE_POST_INCREMENT (mode) && ! data.reverse && ! data.autinc_to) + { +- data.to_addr = copy_addr_to_reg (to_addr); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + data.autinc_to = 1; + data.explicit_inc_to = 1; + } + if (!data.autinc_to && CONSTANT_P (to_addr)) +- data.to_addr = copy_addr_to_reg (to_addr); ++ data.to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + } + + tmode = mode_for_size (MOVE_MAX_PIECES * BITS_PER_UNIT, MODE_INT, 1); +@@ -1031,7 +1037,8 @@ + if (HAVE_POST_INCREMENT && data.explicit_inc_to > 0) + emit_insn (gen_add2_insn (data.to_addr, constm1_rtx)); + else +- data.to_addr = copy_addr_to_reg (plus_constant (data.to_addr, ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (data.to_addr, + -1)); + } + to1 = adjust_automodify_address (data.to, QImode, data.to_addr, +@@ -1233,7 +1240,9 @@ + else if (emit_block_move_via_movmem (x, y, size, align, + expected_align, expected_size)) + ; +- else if (may_use_call) ++ else if (may_use_call ++ && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (x)) ++ && ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (y))) + retval = emit_block_move_via_libcall (x, y, size, + method == BLOCK_OP_TAILCALL); + else +@@ -1484,6 +1493,10 @@ + unsigned int align ATTRIBUTE_UNUSED) + { + rtx cmp_label, top_label, iter, x_addr, y_addr, tmp; ++ enum machine_mode x_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ enum machine_mode y_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (y)); + enum machine_mode iter_mode; + + iter_mode = GET_MODE (size); +@@ -1503,9 +1516,13 @@ + emit_jump (cmp_label); + emit_label (top_label); + +- tmp = convert_modes (Pmode, iter_mode, iter, true); +- x_addr = gen_rtx_PLUS (Pmode, x_addr, tmp); +- y_addr = gen_rtx_PLUS (Pmode, y_addr, tmp); ++ tmp = convert_modes (x_addr_mode, iter_mode, iter, true); ++ x_addr = gen_rtx_PLUS (x_addr_mode, x_addr, tmp); ++ ++ if (x_addr_mode != y_addr_mode) ++ tmp = convert_modes (y_addr_mode, iter_mode, iter, true); ++ y_addr = gen_rtx_PLUS (y_addr_mode, y_addr, tmp); ++ + x = change_address (x, QImode, x_addr); + y = change_address (y, QImode, y_addr); + +@@ -2380,6 +2397,8 @@ + rtx (*constfun) (void *, HOST_WIDE_INT, enum machine_mode), + void *constfundata, unsigned int align, bool memsetp, int endp) + { ++ enum machine_mode to_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to)); + struct store_by_pieces data; + + if (len == 0) +@@ -2408,7 +2427,8 @@ + if (HAVE_POST_INCREMENT && data.explicit_inc_to > 0) + emit_insn (gen_add2_insn (data.to_addr, constm1_rtx)); + else +- data.to_addr = copy_addr_to_reg (plus_constant (data.to_addr, ++ data.to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (data.to_addr, + -1)); + } + to1 = adjust_automodify_address (data.to, QImode, data.to_addr, +@@ -2463,6 +2483,8 @@ + store_by_pieces_1 (struct store_by_pieces *data ATTRIBUTE_UNUSED, + unsigned int align ATTRIBUTE_UNUSED) + { ++ enum machine_mode to_addr_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (data->to)); + rtx to_addr = XEXP (data->to, 0); + unsigned int max_size = STORE_MAX_PIECES + 1; + enum machine_mode mode = VOIDmode, tmode; +@@ -2494,7 +2516,8 @@ + + if (USE_STORE_PRE_DECREMENT (mode) && data->reverse && ! data->autinc_to) + { +- data->to_addr = copy_addr_to_reg (plus_constant (to_addr, data->len)); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, ++ plus_constant (to_addr, data->len)); + data->autinc_to = 1; + data->explicit_inc_to = -1; + } +@@ -2502,13 +2525,13 @@ + if (USE_STORE_POST_INCREMENT (mode) && ! data->reverse + && ! data->autinc_to) + { +- data->to_addr = copy_addr_to_reg (to_addr); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + data->autinc_to = 1; + data->explicit_inc_to = 1; + } + + if ( !data->autinc_to && CONSTANT_P (to_addr)) +- data->to_addr = copy_addr_to_reg (to_addr); ++ data->to_addr = copy_to_mode_reg (to_addr_mode, to_addr); + } + + tmode = mode_for_size (STORE_MAX_PIECES * BITS_PER_UNIT, MODE_INT, 1); +@@ -2639,9 +2662,11 @@ + else if (set_storage_via_setmem (object, size, const0_rtx, align, + expected_align, expected_size)) + ; +- else ++ else if (ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (object))) + return set_storage_via_libcall (object, size, const0_rtx, + method == BLOCK_OP_TAILCALL); ++ else ++ gcc_unreachable (); + + return NULL; + } +@@ -3430,12 +3455,14 @@ + /* If X or Y are memory references, verify that their addresses are valid + for the machine. */ + if (MEM_P (x) +- && (! memory_address_p (GET_MODE (x), XEXP (x, 0)) ++ && (! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x)) + && ! push_operand (x, GET_MODE (x)))) + x = validize_mem (x); + + if (MEM_P (y) +- && ! memory_address_p (GET_MODE (y), XEXP (y, 0))) ++ && ! memory_address_addr_space_p (GET_MODE (y), XEXP (y, 0), ++ MEM_ADDR_SPACE (y))) + y = validize_mem (y); + + gcc_assert (mode != BLKmode); +@@ -4206,6 +4233,7 @@ + + if (offset != 0) + { ++ enum machine_mode address_mode; + rtx offset_rtx; + + if (!MEM_P (to_rtx)) +@@ -4218,13 +4246,10 @@ + } + + offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, EXPAND_SUM); +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to_rtx)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + /* A constant address in TO_RTX can have VOIDmode, we must not try + to call force_reg for that case. Avoid that case. */ +@@ -4327,7 +4352,10 @@ + else + { + if (POINTER_TYPE_P (TREE_TYPE (to))) +- value = convert_memory_address (GET_MODE (to_rtx), value); ++ value = convert_memory_address_addr_space ++ (GET_MODE (to_rtx), value, ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (to)))); ++ + emit_move_insn (to_rtx, value); + } + preserve_temp_slots (to_rtx); +@@ -4367,6 +4395,8 @@ + the place the value is being stored, use a safe function when copying + a value through a pointer into a structure value return block. */ + if (TREE_CODE (to) == RESULT_DECL && TREE_CODE (from) == INDIRECT_REF ++ && ADDR_SPACE_GENERIC_P ++ (TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (from, 0))))) + && cfun->returns_struct + && !cfun->returns_pcc_struct) + { +@@ -4706,6 +4736,11 @@ + ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); + else + { ++ enum machine_mode pointer_mode ++ = targetm.addr_space.pointer_mode (MEM_ADDR_SPACE (target)); ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (target)); ++ + /* Compute the size of the data to copy from the string. */ + tree copy_size + = size_binop (MIN_EXPR, +@@ -4718,14 +4753,14 @@ + rtx label = 0; + + /* Copy that much. */ +- copy_size_rtx = convert_to_mode (ptr_mode, copy_size_rtx, ++ copy_size_rtx = convert_to_mode (pointer_mode, copy_size_rtx, + TYPE_UNSIGNED (sizetype)); + emit_block_move (target, temp, copy_size_rtx, + (call_param_p + ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); + + /* Figure out how much is left in TARGET that we have to clear. +- Do all calculations in ptr_mode. */ ++ Do all calculations in pointer_mode. */ + if (GET_CODE (copy_size_rtx) == CONST_INT) + { + size = plus_constant (size, -INTVAL (copy_size_rtx)); +@@ -4738,11 +4773,10 @@ + copy_size_rtx, NULL_RTX, 0, + OPTAB_LIB_WIDEN); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (copy_size_rtx) != Pmode) +- copy_size_rtx = convert_to_mode (Pmode, copy_size_rtx, ++ if (GET_MODE (copy_size_rtx) != address_mode) ++ copy_size_rtx = convert_to_mode (address_mode, ++ copy_size_rtx, + TYPE_UNSIGNED (sizetype)); +-#endif + + target = offset_address (target, copy_size_rtx, + highest_pow2_factor (copy_size)); +@@ -5232,6 +5266,7 @@ + + if (offset) + { ++ enum machine_mode address_mode; + rtx offset_rtx; + + offset +@@ -5242,13 +5277,10 @@ + offset_rtx = expand_normal (offset); + gcc_assert (MEM_P (to_rtx)); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (to_rtx)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + to_rtx = offset_address (to_rtx, offset_rtx, + highest_pow2_factor (offset)); +@@ -6756,7 +6788,7 @@ + + static rtx + expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode, +- enum expand_modifier modifier) ++ enum expand_modifier modifier, addr_space_t as) + { + rtx result, subtarget; + tree inner, offset; +@@ -6783,7 +6815,7 @@ + case CONST_DECL: + /* Recurse and make the output_constant_def clause above handle this. */ + return expand_expr_addr_expr_1 (DECL_INITIAL (exp), target, +- tmode, modifier); ++ tmode, modifier, as); + + case REALPART_EXPR: + /* The real part of the complex number is always first, therefore +@@ -6872,7 +6904,7 @@ + TYPE_ALIGN (TREE_TYPE (inner)) = TYPE_ALIGN (TREE_TYPE (exp)); + TYPE_USER_ALIGN (TREE_TYPE (inner)) = 1; + } +- result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier); ++ result = expand_expr_addr_expr_1 (inner, subtarget, tmode, modifier, as); + + if (offset) + { +@@ -6884,8 +6916,8 @@ + modifier == EXPAND_INITIALIZER + ? EXPAND_INITIALIZER : EXPAND_NORMAL); + +- result = convert_memory_address (tmode, result); +- tmp = convert_memory_address (tmode, tmp); ++ result = convert_memory_address_addr_space (tmode, result, as); ++ tmp = convert_memory_address_addr_space (tmode, tmp, as); + + if (modifier == EXPAND_SUM || modifier == EXPAND_INITIALIZER) + result = gen_rtx_PLUS (tmode, result, tmp); +@@ -6918,6 +6950,9 @@ + expand_expr_addr_expr (tree exp, rtx target, enum machine_mode tmode, + enum expand_modifier modifier) + { ++ addr_space_t as = ADDR_SPACE_GENERIC; ++ enum machine_mode address_mode = Pmode; ++ enum machine_mode pointer_mode = ptr_mode; + enum machine_mode rmode; + rtx result; + +@@ -6925,14 +6960,21 @@ + if (tmode == VOIDmode) + tmode = TYPE_MODE (TREE_TYPE (exp)); + ++ if (POINTER_TYPE_P (TREE_TYPE (exp))) ++ { ++ as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))); ++ address_mode = targetm.addr_space.address_mode (as); ++ pointer_mode = targetm.addr_space.pointer_mode (as); ++ } ++ + /* We can get called with some Weird Things if the user does silliness + like "(short) &a". In that case, convert_memory_address won't do + the right thing, so ignore the given target mode. */ +- if (tmode != Pmode && tmode != ptr_mode) +- tmode = Pmode; ++ if (tmode != address_mode && tmode != pointer_mode) ++ tmode = address_mode; + + result = expand_expr_addr_expr_1 (TREE_OPERAND (exp, 0), target, +- tmode, modifier); ++ tmode, modifier, as); + + /* Despite expand_expr claims concerning ignoring TMODE when not + strictly convenient, stuff breaks if we don't honor it. Note +@@ -6941,7 +6983,7 @@ + if (rmode == VOIDmode) + rmode = tmode; + if (rmode != tmode) +- result = convert_memory_address (tmode, result); ++ result = convert_memory_address_addr_space (tmode, result, as); + + return result; + } +@@ -7330,7 +7372,9 @@ + decl_rtl = use_anchored_address (decl_rtl); + if (modifier != EXPAND_CONST_ADDRESS + && modifier != EXPAND_SUM +- && !memory_address_p (DECL_MODE (exp), XEXP (decl_rtl, 0))) ++ && !memory_address_addr_space_p (DECL_MODE (exp), ++ XEXP (decl_rtl, 0), ++ MEM_ADDR_SPACE (decl_rtl))) + temp = replace_equiv_address (decl_rtl, + copy_rtx (XEXP (decl_rtl, 0))); + } +@@ -7452,7 +7496,8 @@ + if (modifier != EXPAND_CONST_ADDRESS + && modifier != EXPAND_INITIALIZER + && modifier != EXPAND_SUM +- && ! memory_address_p (mode, XEXP (temp, 0))) ++ && ! memory_address_addr_space_p (mode, XEXP (temp, 0), ++ MEM_ADDR_SPACE (temp))) + return replace_equiv_address (temp, + copy_rtx (XEXP (temp, 0))); + return temp; +@@ -7512,6 +7557,8 @@ + case INDIRECT_REF: + { + tree exp1 = TREE_OPERAND (exp, 0); ++ addr_space_t as = ADDR_SPACE_GENERIC; ++ enum machine_mode address_mode = Pmode; + + if (modifier != EXPAND_WRITE) + { +@@ -7522,19 +7569,26 @@ + return expand_expr (t, target, tmode, modifier); + } + ++ if (POINTER_TYPE_P (TREE_TYPE (exp1))) ++ { ++ as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp1))); ++ address_mode = targetm.addr_space.address_mode (as); ++ } ++ + op0 = expand_expr (exp1, NULL_RTX, VOIDmode, EXPAND_SUM); +- op0 = memory_address (mode, op0); ++ op0 = memory_address_addr_space (mode, op0, as); + + if (code == ALIGN_INDIRECT_REF) + { + int align = TYPE_ALIGN_UNIT (type); +- op0 = gen_rtx_AND (Pmode, op0, GEN_INT (-align)); +- op0 = memory_address (mode, op0); ++ op0 = gen_rtx_AND (address_mode, op0, GEN_INT (-align)); ++ op0 = memory_address_addr_space (mode, op0, as); + } + + temp = gen_rtx_MEM (mode, op0); + + set_mem_attributes (temp, exp, 0); ++ set_mem_addr_space (temp, as); + + /* Resolve the misalignment now, so that we don't have to remember + to resolve it later. Of course, this only works for reads. */ +@@ -7569,13 +7623,15 @@ + + case TARGET_MEM_REF: + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (exp)); + struct mem_address addr; + + get_address_description (exp, &addr); +- op0 = addr_for_mem_ref (&addr, true); +- op0 = memory_address (mode, op0); ++ op0 = addr_for_mem_ref (&addr, as, true); ++ op0 = memory_address_addr_space (mode, op0, as); + temp = gen_rtx_MEM (mode, op0); + set_mem_attributes (temp, TMR_ORIGINAL (exp), 0); ++ set_mem_addr_space (temp, as); + } + return temp; + +@@ -7861,18 +7917,16 @@ + + if (offset) + { ++ enum machine_mode address_mode; + rtx offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, + EXPAND_SUM); + + gcc_assert (MEM_P (op0)); + +-#ifdef POINTERS_EXTEND_UNSIGNED +- if (GET_MODE (offset_rtx) != Pmode) +- offset_rtx = convert_to_mode (Pmode, offset_rtx, 0); +-#else +- if (GET_MODE (offset_rtx) != ptr_mode) +- offset_rtx = convert_to_mode (ptr_mode, offset_rtx, 0); +-#endif ++ address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (op0)); ++ if (GET_MODE (offset_rtx) != address_mode) ++ offset_rtx = convert_to_mode (address_mode, offset_rtx, 0); + + if (GET_MODE (op0) == BLKmode + /* A constant address in OP0 can have VOIDmode, we must +@@ -8349,6 +8403,40 @@ + + return op0; + ++ case ADDR_SPACE_CONVERT_EXPR: ++ { ++ tree treeop0 = TREE_OPERAND (exp, 0); ++ tree treeop0_type = TREE_TYPE (treeop0); ++ addr_space_t as_to; ++ addr_space_t as_from; ++ ++ gcc_assert (POINTER_TYPE_P (type)); ++ gcc_assert (POINTER_TYPE_P (treeop0_type)); ++ ++ as_to = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ as_from = TYPE_ADDR_SPACE (TREE_TYPE (treeop0_type)); ++ ++ /* Conversions between pointers to the same address space should ++ have been implemented via CONVERT_EXPR / NOP_EXPR. */ ++ gcc_assert (as_to != as_from); ++ ++ /* Ask target code to handle conversion between pointers ++ to overlapping address spaces. */ ++ if (targetm.addr_space.subset_p (as_to, as_from) ++ || targetm.addr_space.subset_p (as_from, as_to)) ++ { ++ op0 = expand_expr (treeop0, NULL_RTX, VOIDmode, modifier); ++ op0 = targetm.addr_space.convert (op0, treeop0_type, type); ++ gcc_assert (op0); ++ return op0; ++ } ++ ++ /* For disjoint address spaces, converting anything but ++ a null pointer invokes undefined behaviour. We simply ++ always return a null pointer here. */ ++ return CONST0_RTX (mode); ++ } ++ + case POINTER_PLUS_EXPR: + /* Even though the sizetype mode and the pointer's mode can be different + expand is able to handle this correctly and get the correct result out +Index: gcc/expr.h +=================================================================== +--- a/src/gcc/expr.h (.../gcc-4_4-branch) ++++ b/src/gcc/expr.h (.../cell-4_4-branch) +@@ -635,10 +635,16 @@ + The constant terms are added and stored via a second arg. */ + extern rtx eliminate_constant_term (rtx, rtx *); + +-/* Convert arg to a valid memory address for specified machine mode, +- by emitting insns to perform arithmetic if nec. */ +-extern rtx memory_address (enum machine_mode, rtx); ++/* Convert arg to a valid memory address for specified machine mode that points ++ to a specific named address space, by emitting insns to perform arithmetic ++ if necessary. */ ++extern rtx memory_address_addr_space (enum machine_mode, rtx, addr_space_t); + ++/* Like memory_address_addr_space, except assume the memory address points to ++ the generic named address space. */ ++#define memory_address(MODE,RTX) \ ++ memory_address_addr_space ((MODE), (RTX), ADDR_SPACE_GENERIC) ++ + /* Return a memory reference like MEMREF, but with its mode changed + to MODE and its address changed to ADDR. + (VOIDmode means don't change the mode. +Index: gcc/recog.c +=================================================================== +--- a/src/gcc/recog.c (.../gcc-4_4-branch) ++++ b/src/gcc/recog.c (.../cell-4_4-branch) +@@ -376,7 +376,9 @@ + + if (MEM_P (object)) + { +- if (! memory_address_p (GET_MODE (object), XEXP (object, 0))) ++ if (! memory_address_addr_space_p (GET_MODE (object), ++ XEXP (object, 0), ++ MEM_ADDR_SPACE (object))) + break; + } + else if (REG_P (changes[i].old) +@@ -964,7 +966,7 @@ + return 0; + + /* Use the mem's mode, since it will be reloaded thus. */ +- if (memory_address_p (GET_MODE (op), y)) ++ if (memory_address_addr_space_p (GET_MODE (op), y, MEM_ADDR_SPACE (op))) + return 1; + } + +@@ -1248,11 +1250,16 @@ + return XEXP (op, 0) == stack_pointer_rtx; + } + +-/* Return 1 if ADDR is a valid memory address for mode MODE. */ ++/* Return 1 if ADDR is a valid memory address ++ for mode MODE in address space AS. */ + + int +-memory_address_p (enum machine_mode mode ATTRIBUTE_UNUSED, rtx addr) ++memory_address_addr_space_p (enum machine_mode mode ATTRIBUTE_UNUSED, ++ rtx addr, addr_space_t as) + { ++ if (!ADDR_SPACE_GENERIC_P (as)) ++ return targetm.addr_space.legitimate_address_p (mode, addr, 0, as); ++ + GO_IF_LEGITIMATE_ADDRESS (mode, addr, win); + return 0; + +@@ -1829,7 +1836,8 @@ + offsettable_memref_p (rtx op) + { + return ((MEM_P (op)) +- && offsettable_address_p (1, GET_MODE (op), XEXP (op, 0))); ++ && offsettable_address_addr_space_p (1, GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))); + } + + /* Similar, but don't require a strictly valid mem ref: +@@ -1839,12 +1847,13 @@ + offsettable_nonstrict_memref_p (rtx op) + { + return ((MEM_P (op)) +- && offsettable_address_p (0, GET_MODE (op), XEXP (op, 0))); ++ && offsettable_address_addr_space_p (0, GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))); + } + + /* Return 1 if Y is a memory address which contains no side effects +- and would remain valid after the addition of a positive integer +- less than the size of that mode. ++ and would remain valid for address space AS after the addition of ++ a positive integer less than the size of that mode. + + We assume that the original address is valid and do not check it. + We do check that it is valid for narrower modes. +@@ -1853,14 +1862,16 @@ + for the sake of use in reload.c. */ + + int +-offsettable_address_p (int strictp, enum machine_mode mode, rtx y) ++offsettable_address_addr_space_p (int strictp, enum machine_mode mode, rtx y, ++ addr_space_t as) + { + enum rtx_code ycode = GET_CODE (y); + rtx z; + rtx y1 = y; + rtx *y2; +- int (*addressp) (enum machine_mode, rtx) = +- (strictp ? strict_memory_address_p : memory_address_p); ++ int (*addressp) (enum machine_mode, rtx, addr_space_t) = ++ (strictp ? strict_memory_address_addr_space_p ++ : memory_address_addr_space_p); + unsigned int mode_sz = GET_MODE_SIZE (mode); + + if (CONSTANT_ADDRESS_P (y)) +@@ -1890,7 +1901,7 @@ + *y2 = plus_constant (*y2, mode_sz - 1); + /* Use QImode because an odd displacement may be automatically invalid + for any wider mode. But it should be valid for a single byte. */ +- good = (*addressp) (QImode, y); ++ good = (*addressp) (QImode, y, as); + + /* In any case, restore old contents of memory. */ + *y2 = y1; +@@ -1915,7 +1926,7 @@ + + /* Use QImode because an odd displacement may be automatically invalid + for any wider mode. But it should be valid for a single byte. */ +- return (*addressp) (QImode, z); ++ return (*addressp) (QImode, z, as); + } + + /* Return 1 if ADDR is an address-expression whose effect depends +@@ -2459,11 +2470,14 @@ + if (MEM_P (op)) + { + if (strict > 0 +- && !strict_memory_address_p (GET_MODE (op), +- XEXP (op, 0))) ++ && !strict_memory_address_addr_space_p ++ (GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))) + break; + if (strict == 0 +- && !memory_address_p (GET_MODE (op), XEXP (op, 0))) ++ && !memory_address_addr_space_p ++ (GET_MODE (op), XEXP (op, 0), ++ MEM_ADDR_SPACE (op))) + break; + win = 1; + } +Index: gcc/recog.h +=================================================================== +--- a/src/gcc/recog.h (.../gcc-4_4-branch) ++++ b/src/gcc/recog.h (.../cell-4_4-branch) +@@ -84,8 +84,13 @@ + extern void cancel_changes (int); + extern int constrain_operands (int); + extern int constrain_operands_cached (int); +-extern int memory_address_p (enum machine_mode, rtx); +-extern int strict_memory_address_p (enum machine_mode, rtx); ++extern int memory_address_addr_space_p (enum machine_mode, rtx, addr_space_t); ++#define memory_address_p(mode,addr) \ ++ memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC) ++extern int strict_memory_address_addr_space_p (enum machine_mode, rtx, ++ addr_space_t); ++#define strict_memory_address_p(mode,addr) \ ++ strict_memory_address_addr_space_p ((mode), (addr), ADDR_SPACE_GENERIC) + extern int validate_replace_rtx (rtx, rtx, rtx); + extern int validate_replace_rtx_part (rtx, rtx, rtx *, rtx); + extern int validate_replace_rtx_part_nosimplify (rtx, rtx, rtx *, rtx); +@@ -100,7 +105,11 @@ + + extern int offsettable_memref_p (rtx); + extern int offsettable_nonstrict_memref_p (rtx); +-extern int offsettable_address_p (int, enum machine_mode, rtx); ++extern int offsettable_address_addr_space_p (int, enum machine_mode, rtx, ++ addr_space_t); ++#define offsettable_address_p(strict,mode,addr) \ ++ offsettable_address_addr_space_p ((strict), (mode), (addr), \ ++ ADDR_SPACE_GENERIC) + extern int mode_dependent_address_p (rtx); + + extern int recog (rtx, rtx, int *); +Index: gcc/tree-ssa-address.c +=================================================================== +--- a/src/gcc/tree-ssa-address.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-ssa-address.c (.../cell-4_4-branch) +@@ -42,6 +42,7 @@ + #include "expr.h" + #include "ggc.h" + #include "tree-affine.h" ++#include "target.h" + + /* TODO -- handling of symbols (according to Richard Hendersons + comments, http://gcc.gnu.org/ml/gcc-patches/2005-04/msg00949.html): +@@ -70,33 +71,39 @@ + /* A "template" for memory address, used to determine whether the address is + valid for mode. */ + +-struct mem_addr_template GTY (()) ++typedef struct mem_addr_template GTY (()) + { + rtx ref; /* The template. */ + rtx * GTY ((skip)) step_p; /* The point in template where the step should be + filled in. */ + rtx * GTY ((skip)) off_p; /* The point in template where the offset should + be filled in. */ +-}; ++} mem_addr_template; + +-/* The templates. Each of the five bits of the index corresponds to one +- component of TARGET_MEM_REF being present, see TEMPL_IDX. */ ++DEF_VEC_O (mem_addr_template); ++DEF_VEC_ALLOC_O (mem_addr_template, gc); + +-static GTY (()) struct mem_addr_template templates[32]; ++/* The templates. Each of the low five bits of the index corresponds to one ++ component of TARGET_MEM_REF being present, while the high bits identify ++ the address space. See TEMPL_IDX. */ + +-#define TEMPL_IDX(SYMBOL, BASE, INDEX, STEP, OFFSET) \ +- (((SYMBOL != 0) << 4) \ ++static GTY(()) VEC (mem_addr_template, gc) *mem_addr_template_list; ++ ++#define TEMPL_IDX(AS, SYMBOL, BASE, INDEX, STEP, OFFSET) \ ++ (((int) (AS) << 5) \ ++ | ((SYMBOL != 0) << 4) \ + | ((BASE != 0) << 3) \ + | ((INDEX != 0) << 2) \ + | ((STEP != 0) << 1) \ + | (OFFSET != 0)) + + /* Stores address for memory reference with parameters SYMBOL, BASE, INDEX, +- STEP and OFFSET to *ADDR. Stores pointers to where step is placed to +- *STEP_P and offset to *OFFSET_P. */ ++ STEP and OFFSET to *ADDR using address mode ADDRESS_MODE. Stores pointers ++ to where step is placed to *STEP_P and offset to *OFFSET_P. */ + + static void +-gen_addr_rtx (rtx symbol, rtx base, rtx index, rtx step, rtx offset, ++gen_addr_rtx (enum machine_mode address_mode, ++ rtx symbol, rtx base, rtx index, rtx step, rtx offset, + rtx *addr, rtx **step_p, rtx **offset_p) + { + rtx act_elem; +@@ -112,7 +119,7 @@ + act_elem = index; + if (step) + { +- act_elem = gen_rtx_MULT (Pmode, act_elem, step); ++ act_elem = gen_rtx_MULT (address_mode, act_elem, step); + + if (step_p) + *step_p = &XEXP (act_elem, 1); +@@ -124,7 +131,7 @@ + if (base) + { + if (*addr) +- *addr = simplify_gen_binary (PLUS, Pmode, base, *addr); ++ *addr = simplify_gen_binary (PLUS, address_mode, base, *addr); + else + *addr = base; + } +@@ -134,7 +141,7 @@ + act_elem = symbol; + if (offset) + { +- act_elem = gen_rtx_PLUS (Pmode, act_elem, offset); ++ act_elem = gen_rtx_PLUS (address_mode, act_elem, offset); + + if (offset_p) + *offset_p = &XEXP (act_elem, 1); +@@ -142,11 +149,11 @@ + if (GET_CODE (symbol) == SYMBOL_REF + || GET_CODE (symbol) == LABEL_REF + || GET_CODE (symbol) == CONST) +- act_elem = gen_rtx_CONST (Pmode, act_elem); ++ act_elem = gen_rtx_CONST (address_mode, act_elem); + } + + if (*addr) +- *addr = gen_rtx_PLUS (Pmode, *addr, act_elem); ++ *addr = gen_rtx_PLUS (address_mode, *addr, act_elem); + else + *addr = act_elem; + } +@@ -154,7 +161,7 @@ + { + if (*addr) + { +- *addr = gen_rtx_PLUS (Pmode, *addr, offset); ++ *addr = gen_rtx_PLUS (address_mode, *addr, offset); + if (offset_p) + *offset_p = &XEXP (*addr, 1); + } +@@ -170,55 +177,64 @@ + *addr = const0_rtx; + } + +-/* Returns address for TARGET_MEM_REF with parameters given by ADDR. ++/* Returns address for TARGET_MEM_REF with parameters given by ADDR ++ in address space AS. + If REALLY_EXPAND is false, just make fake registers instead + of really expanding the operands, and perform the expansion in-place + by using one of the "templates". */ + + rtx +-addr_for_mem_ref (struct mem_address *addr, bool really_expand) ++addr_for_mem_ref (struct mem_address *addr, addr_space_t as, ++ bool really_expand) + { ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + rtx address, sym, bse, idx, st, off; +- static bool templates_initialized = false; + struct mem_addr_template *templ; + + if (addr->step && !integer_onep (addr->step)) + st = immed_double_const (TREE_INT_CST_LOW (addr->step), +- TREE_INT_CST_HIGH (addr->step), Pmode); ++ TREE_INT_CST_HIGH (addr->step), address_mode); + else + st = NULL_RTX; + + if (addr->offset && !integer_zerop (addr->offset)) + off = immed_double_const (TREE_INT_CST_LOW (addr->offset), +- TREE_INT_CST_HIGH (addr->offset), Pmode); ++ TREE_INT_CST_HIGH (addr->offset), address_mode); + else + off = NULL_RTX; + + if (!really_expand) + { ++ unsigned int templ_index ++ = TEMPL_IDX (as, addr->symbol, addr->base, addr->index, st, off); ++ ++ if (templ_index ++ >= VEC_length (mem_addr_template, mem_addr_template_list)) ++ VEC_safe_grow_cleared (mem_addr_template, gc, mem_addr_template_list, ++ templ_index + 1); ++ + /* Reuse the templates for addresses, so that we do not waste memory. */ +- if (!templates_initialized) ++ templ = VEC_index (mem_addr_template, mem_addr_template_list, templ_index); ++ if (!templ->ref) + { +- unsigned i; ++ sym = (addr->symbol ? ++ gen_rtx_SYMBOL_REF (address_mode, ggc_strdup ("test_symbol")) ++ : NULL_RTX); ++ bse = (addr->base ? ++ gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 1) ++ : NULL_RTX); ++ idx = (addr->index ? ++ gen_raw_REG (address_mode, LAST_VIRTUAL_REGISTER + 2) ++ : NULL_RTX); + +- templates_initialized = true; +- sym = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup ("test_symbol")); +- bse = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1); +- idx = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 2); +- +- for (i = 0; i < 32; i++) +- gen_addr_rtx ((i & 16 ? sym : NULL_RTX), +- (i & 8 ? bse : NULL_RTX), +- (i & 4 ? idx : NULL_RTX), +- (i & 2 ? const0_rtx : NULL_RTX), +- (i & 1 ? const0_rtx : NULL_RTX), +- &templates[i].ref, +- &templates[i].step_p, +- &templates[i].off_p); ++ gen_addr_rtx (address_mode, sym, bse, idx, ++ st? const0_rtx : NULL_RTX, ++ off? const0_rtx : NULL_RTX, ++ &templ->ref, ++ &templ->step_p, ++ &templ->off_p); + } + +- templ = templates + TEMPL_IDX (addr->symbol, addr->base, addr->index, +- st, off); + if (st) + *templ->step_p = st; + if (off) +@@ -230,16 +246,16 @@ + /* Otherwise really expand the expressions. */ + sym = (addr->symbol + ? expand_expr (build_addr (addr->symbol, current_function_decl), +- NULL_RTX, Pmode, EXPAND_NORMAL) ++ NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + bse = (addr->base +- ? expand_expr (addr->base, NULL_RTX, Pmode, EXPAND_NORMAL) ++ ? expand_expr (addr->base, NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + idx = (addr->index +- ? expand_expr (addr->index, NULL_RTX, Pmode, EXPAND_NORMAL) ++ ? expand_expr (addr->index, NULL_RTX, address_mode, EXPAND_NORMAL) + : NULL_RTX); + +- gen_addr_rtx (sym, bse, idx, st, off, &address, NULL, NULL); ++ gen_addr_rtx (address_mode, sym, bse, idx, st, off, &address, NULL, NULL); + return address; + } + +@@ -306,15 +322,16 @@ + ADDR is valid on the current target. */ + + static bool +-valid_mem_ref_p (enum machine_mode mode, struct mem_address *addr) ++valid_mem_ref_p (enum machine_mode mode, addr_space_t as, ++ struct mem_address *addr) + { + rtx address; + +- address = addr_for_mem_ref (addr, false); ++ address = addr_for_mem_ref (addr, as, false); + if (!address) + return false; + +- return memory_address_p (mode, address); ++ return memory_address_addr_space_p (mode, address, as); + } + + /* Checks whether a TARGET_MEM_REF with type TYPE and parameters given by ADDR +@@ -324,7 +341,7 @@ + static tree + create_mem_ref_raw (tree type, struct mem_address *addr) + { +- if (!valid_mem_ref_p (TYPE_MODE (type), addr)) ++ if (!valid_mem_ref_p (TYPE_MODE (type), TYPE_ADDR_SPACE (type), addr)) + return NULL_TREE; + + if (addr->step && integer_onep (addr->step)) +@@ -376,6 +393,39 @@ + aff_combination_remove_elt (addr, i); + } + ++/* If ADDR contains an instance of BASE_HINT, move it to PARTS->base. */ ++ ++static void ++move_hint_to_base (tree type, struct mem_address *parts, tree base_hint, ++ aff_tree *addr) ++{ ++ unsigned i; ++ tree val = NULL_TREE; ++ int qual; ++ ++ for (i = 0; i < addr->n; i++) ++ { ++ if (!double_int_one_p (addr->elts[i].coef)) ++ continue; ++ ++ val = addr->elts[i].val; ++ if (operand_equal_p (val, base_hint, 0)) ++ break; ++ } ++ ++ if (i == addr->n) ++ return; ++ ++ /* Cast value to appropriate pointer type. We cannot use a pointer ++ to TYPE directly, as the back-end will assume registers of pointer ++ type are aligned, and just the base itself may not actually be. ++ We use void pointer to the type's address space instead. */ ++ qual = ENCODE_QUAL_ADDR_SPACE (TYPE_ADDR_SPACE (type)); ++ type = build_qualified_type (void_type_node, qual); ++ parts->base = fold_convert (build_pointer_type (type), val); ++ aff_combination_remove_elt (addr, i); ++} ++ + /* If ADDR contains an address of a dereferenced pointer, move it to + PARTS->base. */ + +@@ -437,9 +487,11 @@ + element(s) to PARTS. */ + + static void +-most_expensive_mult_to_index (struct mem_address *parts, aff_tree *addr, +- bool speed) ++most_expensive_mult_to_index (tree type, struct mem_address *parts, ++ aff_tree *addr, bool speed) + { ++ addr_space_t as = TYPE_ADDR_SPACE (type); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + HOST_WIDE_INT coef; + double_int best_mult, amult, amult_neg; + unsigned best_mult_cost = 0, acost; +@@ -453,14 +505,12 @@ + if (!double_int_fits_in_shwi_p (addr->elts[i].coef)) + continue; + +- /* FIXME: Should use the correct memory mode rather than Pmode. */ +- + coef = double_int_to_shwi (addr->elts[i].coef); + if (coef == 1 +- || !multiplier_allowed_in_address_p (coef, Pmode)) ++ || !multiplier_allowed_in_address_p (coef, TYPE_MODE (type), as)) + continue; + +- acost = multiply_by_cost (coef, Pmode, speed); ++ acost = multiply_by_cost (coef, address_mode, speed); + + if (acost > best_mult_cost) + { +@@ -503,8 +553,10 @@ + parts->step = double_int_to_tree (sizetype, best_mult); + } + +-/* Splits address ADDR into PARTS. +- ++/* Splits address ADDR for a memory access of type TYPE into PARTS. ++ If BASE_HINT is non-NULL, it specifies an SSA name to be used ++ preferentially as base of the reference. ++ + TODO -- be more clever about the distribution of the elements of ADDR + to PARTS. Some architectures do not support anything but single + register in address, possibly with a small integer offset; while +@@ -513,7 +565,8 @@ + addressing modes is useless. */ + + static void +-addr_to_parts (aff_tree *addr, struct mem_address *parts, bool speed) ++addr_to_parts (tree type, aff_tree *addr, tree base_hint, ++ struct mem_address *parts, bool speed) + { + tree part; + unsigned i; +@@ -533,12 +586,14 @@ + + /* First move the most expensive feasible multiplication + to index. */ +- most_expensive_mult_to_index (parts, addr, speed); ++ most_expensive_mult_to_index (type, parts, addr, speed); + + /* Try to find a base of the reference. Since at the moment + there is no reliable way how to distinguish between pointer and its + offset, this is just a guess. */ +- if (!parts->symbol) ++ if (!parts->symbol && base_hint) ++ move_hint_to_base (type, parts, base_hint, addr); ++ if (!parts->symbol && !parts->base) + move_pointer_to_base (parts, addr); + + /* Then try to process the remaining elements. */ +@@ -575,13 +630,13 @@ + + tree + create_mem_ref (gimple_stmt_iterator *gsi, tree type, aff_tree *addr, +- bool speed) ++ tree base_hint, bool speed) + { + tree mem_ref, tmp; + tree atype; + struct mem_address parts; + +- addr_to_parts (addr, &parts, speed); ++ addr_to_parts (type, addr, base_hint, &parts, speed); + gimplify_mem_ref_parts (gsi, &parts); + mem_ref = create_mem_ref_raw (type, &parts); + if (mem_ref) +Index: gcc/dse.c +=================================================================== +--- a/src/gcc/dse.c (.../gcc-4_4-branch) ++++ b/src/gcc/dse.c (.../cell-4_4-branch) +@@ -826,9 +826,9 @@ + case POST_INC: + { + rtx r1 = XEXP (x, 0); +- rtx c = gen_int_mode (data->size, Pmode); +- emit_insn_before (gen_rtx_SET (Pmode, r1, +- gen_rtx_PLUS (Pmode, r1, c)), ++ rtx c = gen_int_mode (data->size, GET_MODE (r1)); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, ++ gen_rtx_PLUS (GET_MODE (r1), r1, c)), + data->insn); + return -1; + } +@@ -837,9 +837,9 @@ + case POST_DEC: + { + rtx r1 = XEXP (x, 0); +- rtx c = gen_int_mode (-data->size, Pmode); +- emit_insn_before (gen_rtx_SET (Pmode, r1, +- gen_rtx_PLUS (Pmode, r1, c)), ++ rtx c = gen_int_mode (-data->size, GET_MODE (r1)); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, ++ gen_rtx_PLUS (GET_MODE (r1), r1, c)), + data->insn); + return -1; + } +@@ -851,7 +851,7 @@ + insn that contained it. */ + rtx add = XEXP (x, 0); + rtx r1 = XEXP (add, 0); +- emit_insn_before (gen_rtx_SET (Pmode, r1, add), data->insn); ++ emit_insn_before (gen_rtx_SET (VOIDmode, r1, add), data->insn); + return -1; + } + +@@ -1065,6 +1065,8 @@ + HOST_WIDE_INT *offset, + cselib_val **base) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (mem)); + rtx mem_address = XEXP (mem, 0); + rtx expanded_address, address; + int expanded; +@@ -1104,7 +1106,7 @@ + + *alias_set_out = 0; + +- cselib_lookup (mem_address, Pmode, 1); ++ cselib_lookup (mem_address, address_mode, 1); + + if (dump_file) + { +@@ -1170,7 +1172,8 @@ + address = XEXP (address, 0); + } + +- if (const_or_frame_p (address)) ++ if (ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (mem)) ++ && const_or_frame_p (address)) + { + group_info_t group = get_group_info (address); + +@@ -1183,7 +1186,7 @@ + } + } + +- *base = cselib_lookup (address, Pmode, true); ++ *base = cselib_lookup (address, address_mode, true); + *group_id = -1; + + if (*base == NULL) +Index: gcc/c-decl.c +=================================================================== +--- a/src/gcc/c-decl.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-decl.c (.../cell-4_4-branch) +@@ -1249,8 +1249,35 @@ + } + else + { +- if (TYPE_QUALS (newtype) != TYPE_QUALS (oldtype)) +- error ("conflicting type qualifiers for %q+D", newdecl); ++ int new_quals = TYPE_QUALS (newtype); ++ int old_quals = TYPE_QUALS (oldtype); ++ ++ if (new_quals != old_quals) ++ { ++ addr_space_t new_addr = DECODE_QUAL_ADDR_SPACE (new_quals); ++ addr_space_t old_addr = DECODE_QUAL_ADDR_SPACE (old_quals); ++ if (new_addr != old_addr) ++ { ++ if (ADDR_SPACE_GENERIC_P (new_addr)) ++ error ("conflicting named address spaces (generic vs %s) " ++ "for %q+D", ++ c_addr_space_name (old_addr), newdecl); ++ else if (ADDR_SPACE_GENERIC_P (old_addr)) ++ error ("conflicting named address spaces (%s vs generic) " ++ "for %q+D", ++ c_addr_space_name (new_addr), newdecl); ++ else ++ error ("conflicting named address spaces (%s vs %s) " ++ "for %q+D", ++ c_addr_space_name (new_addr), ++ c_addr_space_name (old_addr), ++ newdecl); ++ } ++ ++ if (CLEAR_QUAL_ADDR_SPACE (new_quals) ++ != CLEAR_QUAL_ADDR_SPACE (old_quals)) ++ error ("conflicting type qualifiers for %q+D", newdecl); ++ } + else + error ("conflicting types for %q+D", newdecl); + diagnose_arglist_conflict (newdecl, olddecl, newtype, oldtype); +@@ -2922,7 +2949,8 @@ + else if (!declspecs->tag_defined_p + && (declspecs->const_p + || declspecs->volatile_p +- || declspecs->restrict_p)) ++ || declspecs->restrict_p ++ || declspecs->address_space)) + { + if (warned != 1) + pedwarn (input_location, 0, +@@ -2993,7 +3021,8 @@ + + if (!warned && !in_system_header && (declspecs->const_p + || declspecs->volatile_p +- || declspecs->restrict_p)) ++ || declspecs->restrict_p ++ || declspecs->address_space)) + { + warning (0, "useless type qualifier in empty declaration"); + warned = 2; +@@ -3016,7 +3045,8 @@ + { + int quals = ((specs->const_p ? TYPE_QUAL_CONST : 0) + | (specs->volatile_p ? TYPE_QUAL_VOLATILE : 0) +- | (specs->restrict_p ? TYPE_QUAL_RESTRICT : 0)); ++ | (specs->restrict_p ? TYPE_QUAL_RESTRICT : 0) ++ | (ENCODE_QUAL_ADDR_SPACE (specs->address_space))); + gcc_assert (!specs->type + && !specs->decl_attr + && specs->typespec_word == cts_none +@@ -4002,6 +4032,7 @@ + bool bitfield = width != NULL; + tree element_type; + struct c_arg_info *arg_info = 0; ++ addr_space_t as1, as2, address_space; + + if (decl_context == FUNCDEF) + funcdef_flag = true, decl_context = NORMAL; +@@ -4102,6 +4133,10 @@ + constp = declspecs->const_p + TYPE_READONLY (element_type); + restrictp = declspecs->restrict_p + TYPE_RESTRICT (element_type); + volatilep = declspecs->volatile_p + TYPE_VOLATILE (element_type); ++ as1 = declspecs->address_space; ++ as2 = TYPE_ADDR_SPACE (element_type); ++ address_space = ADDR_SPACE_GENERIC_P (as1)? as2 : as1; ++ + if (pedantic && !flag_isoc99) + { + if (constp > 1) +@@ -4111,11 +4146,17 @@ + if (volatilep > 1) + pedwarn (input_location, OPT_pedantic, "duplicate %"); + } ++ ++ if (!ADDR_SPACE_GENERIC_P (as1) && !ADDR_SPACE_GENERIC_P (as2) && as1 != as2) ++ error ("conflicting named address spaces (%s vs %s)", ++ c_addr_space_name (as1), c_addr_space_name (as2)); ++ + if (!flag_gen_aux_info && (TYPE_QUALS (element_type))) + type = TYPE_MAIN_VARIANT (type); + type_quals = ((constp ? TYPE_QUAL_CONST : 0) + | (restrictp ? TYPE_QUAL_RESTRICT : 0) +- | (volatilep ? TYPE_QUAL_VOLATILE : 0)); ++ | (volatilep ? TYPE_QUAL_VOLATILE : 0) ++ | ENCODE_QUAL_ADDR_SPACE (address_space)); + + /* Warn about storage classes that are invalid for certain + kinds of declarations (parameters, typenames, etc.). */ +@@ -4459,8 +4500,15 @@ + it, but here we want to make sure we don't ever + modify the shared type, so we gcc_assert (itype) + below. */ +- type = build_array_type (type, itype); ++ { ++ addr_space_t as = DECODE_QUAL_ADDR_SPACE (type_quals); ++ if (!ADDR_SPACE_GENERIC_P (as) && as != TYPE_ADDR_SPACE (type)) ++ type = build_qualified_type (type, ++ ENCODE_QUAL_ADDR_SPACE (as)); + ++ type = build_array_type (type, itype); ++ } ++ + if (type != error_mark_node) + { + if (size_varies) +@@ -4649,6 +4697,59 @@ + /* Now TYPE has the actual type, apart from any qualifiers in + TYPE_QUALS. */ + ++ /* Warn about address space used for things other than static memory or ++ pointers. */ ++ address_space = DECODE_QUAL_ADDR_SPACE (type_quals); ++ if (!ADDR_SPACE_GENERIC_P (address_space)) ++ { ++ if (decl_context == NORMAL) ++ { ++ switch (storage_class) ++ { ++ case csc_auto: ++ error ("%qs combined with % qualifier for %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ case csc_register: ++ error ("%qs combined with % qualifier for %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ case csc_none: ++ if (current_function_scope) ++ { ++ error ("%qs specified for auto variable %qs", ++ c_addr_space_name (address_space), name); ++ break; ++ } ++ break; ++ case csc_static: ++ case csc_extern: ++ case csc_typedef: ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ else if (decl_context == PARM && TREE_CODE (type) != ARRAY_TYPE) ++ { ++ if (orig_name) ++ error ("%qs specified for parameter %qs", ++ c_addr_space_name (address_space), name); ++ else ++ error ("%qs specified for unnamed parameter", ++ c_addr_space_name (address_space)); ++ } ++ else if (decl_context == FIELD) ++ { ++ if (orig_name) ++ error ("%qs specified for structure field %qs", ++ c_addr_space_name (address_space), name); ++ else ++ error ("%qs specified for structure field", ++ c_addr_space_name (address_space)); ++ } ++ } ++ + /* Check the type and width of a bit-field. */ + if (bitfield) + check_bitfield_type_and_width (&type, width, orig_name); +@@ -7172,9 +7273,29 @@ + ret->volatile_p = false; + ret->restrict_p = false; + ret->saturating_p = false; ++ ret->address_space = ADDR_SPACE_GENERIC; + return ret; + } + ++/* Add the address space ADDRSPACE to the declaration specifiers ++ SPECS, returning SPECS. */ ++ ++struct c_declspecs * ++declspecs_add_addrspace (struct c_declspecs *specs, addr_space_t as) ++{ ++ specs->non_sc_seen_p = true; ++ specs->declspecs_seen_p = true; ++ ++ if (!ADDR_SPACE_GENERIC_P (specs->address_space) ++ && specs->address_space != as) ++ error ("incompatible address space qualifiers %qs and %qs", ++ c_addr_space_name (as), ++ c_addr_space_name (specs->address_space)); ++ else ++ specs->address_space = as; ++ return specs; ++} ++ + /* Add the type qualifier QUAL to the declaration specifiers SPECS, + returning SPECS. */ + +Index: gcc/gimple-pretty-print.c +=================================================================== +--- a/src/gcc/gimple-pretty-print.c (.../gcc-4_4-branch) ++++ b/src/gcc/gimple-pretty-print.c (.../cell-4_4-branch) +@@ -254,6 +254,7 @@ + break; + + case FIXED_CONVERT_EXPR: ++ case ADDR_SPACE_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + case FLOAT_EXPR: + CASE_CONVERT: +Index: gcc/c-pretty-print.c +=================================================================== +--- a/src/gcc/c-pretty-print.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-pretty-print.c (.../cell-4_4-branch) +@@ -220,8 +220,12 @@ + const + restrict -- C99 + __restrict__ -- GNU C +- volatile */ ++ address-space-qualifier -- GNU C ++ volatile + ++ address-space-qualifier: ++ identifier -- GNU C */ ++ + void + pp_c_type_qualifier_list (c_pretty_printer *pp, tree t) + { +@@ -240,6 +244,12 @@ + pp_c_cv_qualifier (pp, "volatile"); + if (qualifiers & TYPE_QUAL_RESTRICT) + pp_c_cv_qualifier (pp, flag_isoc99 ? "restrict" : "__restrict__"); ++ ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (t))) ++ { ++ const char *as = c_addr_space_name (TYPE_ADDR_SPACE (t)); ++ pp_c_identifier (pp, as); ++ } + } + + /* pointer: +Index: gcc/regmove.c +=================================================================== +--- a/src/gcc/regmove.c (.../gcc-4_4-branch) ++++ b/src/gcc/regmove.c (.../cell-4_4-branch) +@@ -179,7 +179,9 @@ + &SET_SRC (inc_insn_set), + XEXP (SET_SRC (inc_insn_set), 0), 1); + validate_change (insn, &XEXP (use, 0), +- gen_rtx_fmt_e (inc_code, Pmode, reg), 1); ++ gen_rtx_fmt_e (inc_code, ++ GET_MODE (XEXP (use, 0)), reg), ++ 1); + if (apply_change_group ()) + { + /* If there is a REG_DEAD note on this insn, we must +Index: gcc/sel-sched-dump.c +=================================================================== +--- a/src/gcc/sel-sched-dump.c (.../gcc-4_4-branch) ++++ b/src/gcc/sel-sched-dump.c (.../cell-4_4-branch) +@@ -34,6 +34,7 @@ + #include "output.h" + #include "basic-block.h" + #include "cselib.h" ++#include "target.h" + + #ifdef INSN_SCHEDULING + #include "sel-sched-ir.h" +@@ -931,10 +932,13 @@ + debug_mem_addr_value (rtx x) + { + rtx t, addr; ++ enum machine_mode address_mode; + + gcc_assert (MEM_P (x)); ++ address_mode = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ + t = shallow_copy_rtx (x); +- if (cselib_lookup (XEXP (t, 0), Pmode, 0)) ++ if (cselib_lookup (XEXP (t, 0), address_mode, 0)) + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + + t = canon_rtx (t); +Index: gcc/print-rtl.c +=================================================================== +--- a/src/gcc/print-rtl.c (.../gcc-4_4-branch) ++++ b/src/gcc/print-rtl.c (.../cell-4_4-branch) +@@ -556,6 +556,9 @@ + if (MEM_ALIGN (in_rtx) != 1) + fprintf (outfile, " A%u", MEM_ALIGN (in_rtx)); + ++ if (!ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (in_rtx))) ++ fprintf (outfile, " AS%u", MEM_ADDR_SPACE (in_rtx)); ++ + fputc (']', outfile); + break; + +Index: gcc/stor-layout.c +=================================================================== +--- a/src/gcc/stor-layout.c (.../gcc-4_4-branch) ++++ b/src/gcc/stor-layout.c (.../cell-4_4-branch) +@@ -48,9 +48,9 @@ + /* ... and its original value in bytes, specified via -fpack-struct=. */ + unsigned int initial_max_fld_align = TARGET_DEFAULT_PACK_STRUCT; + +-/* Nonzero if all REFERENCE_TYPEs are internal and hence should be +- allocated in Pmode, not ptr_mode. Set only by internal_reference_types +- called only by a front end. */ ++/* Nonzero if all REFERENCE_TYPEs are internal and hence should be allocated ++ in the address spaces' address_mode, not pointer_mode. Set only by ++ internal_reference_types called only by a front end. */ + static int reference_types_internal = 0; + + static void finalize_record_size (record_layout_info); +@@ -66,8 +66,8 @@ + + static GTY(()) tree pending_sizes; + +-/* Show that REFERENCE_TYPES are internal and should be Pmode. Called only +- by front end. */ ++/* Show that REFERENCE_TYPES are internal and should use address_mode. ++ Called only by front end. */ + + void + internal_reference_types (void) +@@ -1700,6 +1700,7 @@ + /* A pointer might be MODE_PARTIAL_INT, + but ptrdiff_t must be integral. */ + SET_TYPE_MODE (type, mode_for_size (POINTER_SIZE, MODE_INT, 0)); ++ TYPE_PRECISION (type) = POINTER_SIZE; + break; + + case FUNCTION_TYPE: +@@ -1715,16 +1716,17 @@ + case POINTER_TYPE: + case REFERENCE_TYPE: + { +- enum machine_mode mode = ((TREE_CODE (type) == REFERENCE_TYPE +- && reference_types_internal) +- ? Pmode : TYPE_MODE (type)); ++ enum machine_mode mode = TYPE_MODE (type); ++ if (TREE_CODE (type) == REFERENCE_TYPE && reference_types_internal) ++ { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ mode = targetm.addr_space.address_mode (as); ++ } + +- int nbits = GET_MODE_BITSIZE (mode); +- +- TYPE_SIZE (type) = bitsize_int (nbits); ++ TYPE_SIZE (type) = bitsize_int (GET_MODE_BITSIZE (mode)); + TYPE_SIZE_UNIT (type) = size_int (GET_MODE_SIZE (mode)); + TYPE_UNSIGNED (type) = 1; +- TYPE_PRECISION (type) = nbits; ++ TYPE_PRECISION (type) = GET_MODE_BITSIZE (mode); + } + break; + +Index: gcc/alias.c +=================================================================== +--- a/src/gcc/alias.c (.../gcc-4_4-branch) ++++ b/src/gcc/alias.c (.../cell-4_4-branch) +@@ -1000,6 +1000,11 @@ + return 0; + + case TRUNCATE: ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ break; + if (GET_MODE_SIZE (GET_MODE (src)) < GET_MODE_SIZE (Pmode)) + break; + /* Fall through. */ +@@ -1014,6 +1019,12 @@ + + case ZERO_EXTEND: + case SIGN_EXTEND: /* used for NT/Alpha pointers */ ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ break; ++ + { + rtx temp = find_base_value (XEXP (src, 0)); + +@@ -1406,6 +1417,11 @@ + return REG_BASE_VALUE (x); + + case TRUNCATE: ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ return 0; + if (GET_MODE_SIZE (GET_MODE (x)) < GET_MODE_SIZE (Pmode)) + return 0; + /* Fall through. */ +@@ -1420,6 +1436,12 @@ + + case ZERO_EXTEND: + case SIGN_EXTEND: /* Used for Alpha/NT pointers */ ++ /* As we do not know which address space the pointer is refering to, we can ++ handle this only if the target does not support different pointer or ++ address modes depending on the address space. */ ++ if (!target_default_pointer_address_modes_p ()) ++ return 0; ++ + { + rtx temp = find_base_term (XEXP (x, 0)); + +@@ -2120,6 +2142,13 @@ + && ! rtx_equal_p (rtlx, rtly)) + return 1; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_P (rtlx) && MEM_P (rtly) ++ && MEM_ADDR_SPACE (rtlx) != MEM_ADDR_SPACE (rtly)) ++ return 0; ++ + /* Get the base and offsets of both decls. If either is a register, we + know both are and are the same, so use that as the base. The only + we can avoid overlap is if we can deduce that they are nonoverlapping +@@ -2211,6 +2240,12 @@ + if (nonoverlapping_memrefs_p (mem, x)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + if (mem_mode == VOIDmode) + mem_mode = GET_MODE (mem); + +@@ -2296,6 +2331,12 @@ + if (nonoverlapping_memrefs_p (x, mem)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + if (! x_addr) + { + x_addr = XEXP (x, 0); +@@ -2366,6 +2407,12 @@ + if (nonoverlapping_memrefs_p (x, mem)) + return 0; + ++ /* If we have MEMs refering to different address spaces (which can ++ potentially overlap), we cannot easily tell from the addresses ++ whether the references overlap. */ ++ if (MEM_ADDR_SPACE (mem) != MEM_ADDR_SPACE (x)) ++ return 1; ++ + x_addr = XEXP (x, 0); + mem_addr = XEXP (mem, 0); + if (!((GET_CODE (x_addr) == VALUE +Index: gcc/c-typeck.c +=================================================================== +--- a/src/gcc/c-typeck.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-typeck.c (.../cell-4_4-branch) +@@ -242,14 +242,55 @@ + return type; + } + ++/* Return true if between two named address spaces, whether there is a superset ++ named address space that encompasses both address spaces. If there is a ++ superset, return which address space is the superset. */ ++ ++static bool ++addr_space_superset (addr_space_t as1, addr_space_t as2, addr_space_t *common) ++{ ++ if (as1 == as2) ++ { ++ *common = as1; ++ return true; ++ } ++ else if (targetm.addr_space.subset_p (as1, as2)) ++ { ++ *common = as2; ++ return true; ++ } ++ else if (targetm.addr_space.subset_p (as2, as1)) ++ { ++ *common = as1; ++ return true; ++ } ++ else ++ return false; ++} ++ + /* Return a variant of TYPE which has all the type qualifiers of LIKE + as well as those of TYPE. */ + + static tree + qualify_type (tree type, tree like) + { ++ addr_space_t as_type = TYPE_ADDR_SPACE (type); ++ addr_space_t as_like = TYPE_ADDR_SPACE (like); ++ addr_space_t as_common; ++ ++ /* If the two named address spaces are different, determine the common ++ superset address space. If there isn't one, raise an error. */ ++ if (!addr_space_superset (as_type, as_like, &as_common)) ++ { ++ as_common = as_type; ++ error ("%qT and %qT are in disjoint named address spaces", ++ type, like); ++ } ++ + return c_build_qualified_type (type, +- TYPE_QUALS (type) | TYPE_QUALS (like)); ++ TYPE_QUALS_NO_ADDR_SPACE (type) ++ | TYPE_QUALS_NO_ADDR_SPACE (like) ++ | ENCODE_QUAL_ADDR_SPACE (as_common)); + } + + /* Return true iff the given tree T is a variable length array. */ +@@ -329,7 +370,8 @@ + bool t1_complete, t2_complete; + + /* We should not have any type quals on arrays at all. */ +- gcc_assert (!TYPE_QUALS (t1) && !TYPE_QUALS (t2)); ++ gcc_assert (!TYPE_QUALS_NO_ADDR_SPACE (t1) ++ && !TYPE_QUALS_NO_ADDR_SPACE (t2)); + + t1_complete = COMPLETE_TYPE_P (t1); + t2_complete = COMPLETE_TYPE_P (t2); +@@ -543,6 +585,8 @@ + tree pointed_to_2, mv2; + tree target; + unsigned target_quals; ++ addr_space_t as1, as2, as_common; ++ int quals1, quals2; + + /* Save time if the two types are the same. */ + +@@ -574,10 +618,24 @@ + /* For function types do not merge const qualifiers, but drop them + if used inconsistently. The middle-end uses these to mark const + and noreturn functions. */ ++ quals1 = TYPE_QUALS_NO_ADDR_SPACE (pointed_to_1); ++ quals2 = TYPE_QUALS_NO_ADDR_SPACE (pointed_to_2); ++ + if (TREE_CODE (pointed_to_1) == FUNCTION_TYPE) +- target_quals = TYPE_QUALS (pointed_to_1) & TYPE_QUALS (pointed_to_2); ++ target_quals = (quals1 & quals2); + else +- target_quals = TYPE_QUALS (pointed_to_1) | TYPE_QUALS (pointed_to_2); ++ target_quals = (quals1 | quals2); ++ ++ /* If the two named address spaces are different, determine the common ++ superset address space. This is guaranteed to exist due to the ++ assumption that comp_target_type returned non-zero. */ ++ as1 = TYPE_ADDR_SPACE (pointed_to_1); ++ as2 = TYPE_ADDR_SPACE (pointed_to_2); ++ if (!addr_space_superset (as1, as2, &as_common)) ++ gcc_unreachable (); ++ ++ target_quals |= ENCODE_QUAL_ADDR_SPACE (as_common); ++ + t1 = build_pointer_type (c_build_qualified_type (target, target_quals)); + return build_type_attribute_variant (t1, attributes); + } +@@ -1032,15 +1090,25 @@ + return attrval == 2 && val == 1 ? 2 : val; + } + +-/* Return 1 if TTL and TTR are pointers to types that are equivalent, +- ignoring their qualifiers. */ ++/* Return 1 if TTL and TTR are pointers to types that are equivalent, ignoring ++ their qualifiers, except for named address spaces. If the pointers point to ++ different named addresses, then we must determine if one address space is a ++ subset of the other. */ + + static int + comp_target_types (tree ttl, tree ttr) + { + int val; +- tree mvl, mvr; ++ tree mvl = TREE_TYPE (ttl); ++ tree mvr = TREE_TYPE (ttr); ++ addr_space_t asl = TYPE_ADDR_SPACE (mvl); ++ addr_space_t asr = TYPE_ADDR_SPACE (mvr); ++ addr_space_t as_common; + ++ /* Fail if pointers point to incompatible address spaces. */ ++ if (!addr_space_superset (asl, asr, &as_common)) ++ return 0; ++ + /* Do not lose qualifiers on element types of array types that are + pointer targets by taking their TYPE_MAIN_VARIANT. */ + mvl = TREE_TYPE (ttl); +@@ -2840,11 +2908,43 @@ + pointer_diff (tree op0, tree op1) + { + tree restype = ptrdiff_type_node; ++ tree result, inttype; + ++ addr_space_t as0 = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (op0))); ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (op1))); + tree target_type = TREE_TYPE (TREE_TYPE (op0)); + tree con0, con1, lit0, lit1; + tree orig_op1 = op1; + ++ /* If the operands point into different address spaces, we need to ++ explicitly convert them to pointers into the common address space ++ before we can subtract the numerical address values. */ ++ if (as0 != as1) ++ { ++ addr_space_t as_common; ++ tree common_type; ++ ++ /* Determine the common superset address space. This is guaranteed ++ to exist because the caller verified that comp_target_types ++ returned non-zero. */ ++ if (!addr_space_superset (as0, as1, &as_common)) ++ gcc_unreachable (); ++ ++ common_type = common_pointer_type (TREE_TYPE (op0), TREE_TYPE (op1)); ++ op0 = convert (common_type, op0); ++ op1 = convert (common_type, op1); ++ } ++ ++ /* Determine integer type to perform computations in. This will usually ++ be the same as the result type (ptrdiff_t), but may need to be a wider ++ type if pointers for the address space are wider than ptrdiff_t. */ ++ if (TYPE_PRECISION (restype) < TYPE_PRECISION (TREE_TYPE (op0))) ++ inttype = lang_hooks.types.type_for_size ++ (TYPE_PRECISION (TREE_TYPE (op0)), 0); ++ else ++ inttype = restype; ++ ++ + if (TREE_CODE (target_type) == VOID_TYPE) + pedwarn (input_location, pedantic ? OPT_pedantic : OPT_Wpointer_arith, + "pointer of type % used in subtraction"); +@@ -2902,8 +3002,8 @@ + in case restype is a short type. */ + + op0 = build_binary_op (input_location, +- MINUS_EXPR, convert (restype, op0), +- convert (restype, op1), 0); ++ MINUS_EXPR, convert (inttype, op0), ++ convert (inttype, op1), 0); + /* This generates an error if op1 is pointer to incomplete type. */ + if (!COMPLETE_OR_VOID_TYPE_P (TREE_TYPE (TREE_TYPE (orig_op1)))) + error ("arithmetic on pointer to an incomplete type"); +@@ -2912,7 +3012,10 @@ + op1 = c_size_in_bytes (target_type); + + /* Divide by the size, in easiest possible way. */ +- return fold_build2 (EXACT_DIV_EXPR, restype, op0, convert (restype, op1)); ++ result = fold_build2 (EXACT_DIV_EXPR, inttype, op0, convert (inttype, op1)); ++ ++ /* Convert to final result type if necessary. */ ++ return convert (restype, result); + } + + /* Construct and perhaps optimize a tree representation +@@ -3527,12 +3630,22 @@ + } + else if (code1 == POINTER_TYPE && code2 == POINTER_TYPE) + { ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (type1)); ++ addr_space_t as2 = TYPE_ADDR_SPACE (TREE_TYPE (type2)); ++ addr_space_t as_common; ++ + if (comp_target_types (type1, type2)) + result_type = common_pointer_type (type1, type2); + else if (null_pointer_constant_p (orig_op1)) +- result_type = qualify_type (type2, type1); ++ result_type = type2; + else if (null_pointer_constant_p (orig_op2)) +- result_type = qualify_type (type1, type2); ++ result_type = type1; ++ else if (!addr_space_superset (as1, as2, &as_common)) ++ { ++ error ("pointers to disjoint address spaces " ++ "used in conditional expression"); ++ return error_mark_node; ++ } + else if (VOID_TYPE_P (TREE_TYPE (type1))) + { + if (TREE_CODE (TREE_TYPE (type2)) == FUNCTION_TYPE) +@@ -3553,10 +3666,13 @@ + } + else + { ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ + if (!objc_ok) + pedwarn (input_location, 0, + "pointer type mismatch in conditional expression"); +- result_type = build_pointer_type (void_type_node); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); + } + } + else if (code1 == POINTER_TYPE && code2 == INTEGER_TYPE) +@@ -3724,7 +3840,9 @@ + + otype = TREE_TYPE (value); + +- /* Optionally warn about potentially worrisome casts. */ ++ /* Optionally warn about potentially worrisome casts. ++ Named address space qualifiers are handled below, ++ because they result in different warnings. */ + + if (warn_cast_qual + && TREE_CODE (type) == POINTER_TYPE +@@ -3750,9 +3868,11 @@ + are added, not when they're taken away. */ + if (TREE_CODE (in_otype) == FUNCTION_TYPE + && TREE_CODE (in_type) == FUNCTION_TYPE) +- added |= (TYPE_QUALS (in_type) & ~TYPE_QUALS (in_otype)); ++ added |= (TYPE_QUALS_NO_ADDR_SPACE (in_type) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (in_otype)); + else +- discarded |= (TYPE_QUALS (in_otype) & ~TYPE_QUALS (in_type)); ++ discarded |= (TYPE_QUALS_NO_ADDR_SPACE (in_otype) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (in_type)); + } + while (TREE_CODE (in_type) == POINTER_TYPE + && TREE_CODE (in_otype) == POINTER_TYPE); +@@ -3766,6 +3886,36 @@ + warning (OPT_Wcast_qual, "cast discards qualifiers from pointer target type"); + } + ++ /* Warn about conversions between pointers to disjoint ++ address spaces. */ ++ if (TREE_CODE (type) == POINTER_TYPE ++ && TREE_CODE (otype) == POINTER_TYPE ++ && !null_pointer_constant_p (value)) ++ { ++ addr_space_t as_to = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ addr_space_t as_from = TYPE_ADDR_SPACE (TREE_TYPE (otype)); ++ addr_space_t as_common; ++ ++ if (!addr_space_superset (as_to, as_from, &as_common)) ++ { ++ if (ADDR_SPACE_GENERIC_P (as_from)) ++ warning (0, "cast to %s address space pointer " ++ "from disjoint generic address space pointer", ++ c_addr_space_name (as_to)); ++ ++ else if (ADDR_SPACE_GENERIC_P (as_to)) ++ warning (0, "cast to generic address space pointer " ++ "from disjoint %s address space pointer", ++ c_addr_space_name (as_from)); ++ ++ else ++ warning (0, "cast to %s address space pointer " ++ "from disjoint %s address space pointer", ++ c_addr_space_name (as_to), ++ c_addr_space_name (as_from)); ++ } ++ } ++ + /* Warn about possible alignment problems. */ + if (STRICT_ALIGNMENT + && TREE_CODE (type) == POINTER_TYPE +@@ -4227,7 +4377,8 @@ + certain things, it is okay to use a const or volatile + function where an ordinary one is wanted, but not + vice-versa. */ +- if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE " + "makes qualified function " +@@ -4241,7 +4392,8 @@ + G_("return makes qualified function " + "pointer from unqualified")); + } +- else if (TYPE_QUALS (ttr) & ~TYPE_QUALS (ttl)) ++ else if (TYPE_QUALS_NO_ADDR_SPACE (ttr) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttl)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE discards " + "qualifiers from pointer target type"), +@@ -4274,6 +4426,8 @@ + tree mvr = ttr; + bool is_opaque_pointer; + int target_cmp = 0; /* Cache comp_target_types () result. */ ++ addr_space_t asl; ++ addr_space_t asr; + + if (TREE_CODE (mvl) != ARRAY_TYPE) + mvl = TYPE_MAIN_VARIANT (mvl); +@@ -4293,6 +4447,36 @@ + warning (OPT_Wc___compat, "request for implicit conversion from " + "%qT to %qT not permitted in C++", rhstype, type); + ++ /* See if the pointers point to incompatible address spaces. */ ++ asl = TYPE_ADDR_SPACE (ttl); ++ asr = TYPE_ADDR_SPACE (ttr); ++ if (!null_pointer_constant_p (rhs) ++ && asr != asl && !targetm.addr_space.subset_p (asr, asl)) ++ { ++ switch (errtype) ++ { ++ case ic_argpass: ++ error ("passing argument %d of %qE from pointer to " ++ "non-enclosed address space", parmnum, rname); ++ break; ++ case ic_assign: ++ error ("assignment from pointer to " ++ "non-enclosed address space"); ++ break; ++ case ic_init: ++ error ("initialization from pointer to " ++ "non-enclosed address space"); ++ break; ++ case ic_return: ++ error ("return from pointer to " ++ "non-enclosed address space"); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return error_mark_node; ++ } ++ + /* Check if the right-hand side has a format attribute but the + left-hand side doesn't. */ + if (warn_missing_format_attribute +@@ -4356,7 +4540,8 @@ + else if (TREE_CODE (ttr) != FUNCTION_TYPE + && TREE_CODE (ttl) != FUNCTION_TYPE) + { +- if (TYPE_QUALS (ttr) & ~TYPE_QUALS (ttl)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttr) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttl)) + { + /* Types differing only by the presence of the 'volatile' + qualifier are acceptable if the 'volatile' has been added +@@ -4396,7 +4581,8 @@ + that say the function will not do certain things, + it is okay to use a const or volatile function + where an ordinary one is wanted, but not vice-versa. */ +- if (TYPE_QUALS (ttl) & ~TYPE_QUALS (ttr)) ++ if (TYPE_QUALS_NO_ADDR_SPACE (ttl) ++ & ~TYPE_QUALS_NO_ADDR_SPACE (ttr)) + WARN_FOR_ASSIGNMENT (input_location, 0, + G_("passing argument %d of %qE makes " + "qualified function pointer " +@@ -6705,7 +6891,8 @@ + || TREE_CODE (constructor_type) == UNION_TYPE) + && constructor_fields == 0) + process_init_element (pop_init_level (1), true); +- else if (TREE_CODE (constructor_type) == ARRAY_TYPE ++ else if ((TREE_CODE (constructor_type) == ARRAY_TYPE ++ || TREE_CODE (constructor_type) == VECTOR_TYPE) + && (constructor_max_index == 0 + || tree_int_cst_lt (constructor_max_index, + constructor_index))) +@@ -6766,7 +6953,7 @@ + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype + && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE +- || fieldcode == UNION_TYPE)) ++ || fieldcode == UNION_TYPE || fieldcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6856,7 +7043,7 @@ + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != fieldtype + && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE +- || fieldcode == UNION_TYPE)) ++ || fieldcode == UNION_TYPE || fieldcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6896,7 +7083,7 @@ + && value.value != error_mark_node + && TYPE_MAIN_VARIANT (TREE_TYPE (value.value)) != elttype + && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE +- || eltcode == UNION_TYPE)) ++ || eltcode == UNION_TYPE || eltcode == VECTOR_TYPE)) + { + push_init_level (1); + continue; +@@ -6944,8 +7131,12 @@ + + /* Now output the actual element. */ + if (value.value) +- output_init_element (value.value, strict_string, +- elttype, constructor_index, 1, implicit); ++ { ++ if (TREE_CODE (value.value) == VECTOR_CST) ++ elttype = TYPE_MAIN_VARIANT (constructor_type); ++ output_init_element (value.value, strict_string, ++ elttype, constructor_index, 1, implicit); ++ } + + constructor_index + = size_binop (PLUS_EXPR, constructor_index, bitsize_one_node); +@@ -8204,7 +8395,11 @@ + case FLOOR_MOD_EXPR: + warn_for_div_by_zero (location, op1); + +- if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) ++ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (type0)) == INTEGER_TYPE ++ && TREE_CODE (TREE_TYPE (type1)) == INTEGER_TYPE) ++ common = 1; ++ else if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE) + { + /* Although it would be tempting to shorten always here, that loses + on some targets, since the modulo instruction is undefined if the +@@ -8314,24 +8509,34 @@ + { + tree tt0 = TREE_TYPE (type0); + tree tt1 = TREE_TYPE (type1); ++ addr_space_t as0 = TYPE_ADDR_SPACE (tt0); ++ addr_space_t as1 = TYPE_ADDR_SPACE (tt1); ++ addr_space_t as_common = ADDR_SPACE_GENERIC; ++ + /* Anything compares with void *. void * compares with anything. + Otherwise, the targets must be compatible + and both must be object or both incomplete. */ + if (comp_target_types (type0, type1)) + result_type = common_pointer_type (type0, type1); ++ else if (null_pointer_constant_p (orig_op0)) ++ result_type = type1; ++ else if (null_pointer_constant_p (orig_op1)) ++ result_type = type0; ++ else if (!addr_space_superset (as0, as1, &as_common)) ++ { ++ error_at (location, "comparison of pointers to " ++ "disjoint address spaces"); ++ return error_mark_node; ++ } + else if (VOID_TYPE_P (tt0)) + { +- /* op0 != orig_op0 detects the case of something +- whose value is 0 but which isn't a valid null ptr const. */ +- if (pedantic && !null_pointer_constant_p (orig_op0) +- && TREE_CODE (tt1) == FUNCTION_TYPE) ++ if (pedantic && TREE_CODE (tt1) == FUNCTION_TYPE) + pedwarn (location, OPT_pedantic, "ISO C forbids " + "comparison of % with function pointer"); + } + else if (VOID_TYPE_P (tt1)) + { +- if (pedantic && !null_pointer_constant_p (orig_op1) +- && TREE_CODE (tt0) == FUNCTION_TYPE) ++ if (pedantic && TREE_CODE (tt0) == FUNCTION_TYPE) + pedwarn (location, OPT_pedantic, "ISO C forbids " + "comparison of % with function pointer"); + } +@@ -8342,7 +8547,11 @@ + "comparison of distinct pointer types lacks a cast"); + + if (result_type == NULL_TREE) +- result_type = ptr_type_node; ++ { ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); ++ } + } + else if (code0 == POINTER_TYPE && null_pointer_constant_p (orig_op1)) + { +@@ -8386,6 +8595,10 @@ + short_compare = 1; + else if (code0 == POINTER_TYPE && code1 == POINTER_TYPE) + { ++ addr_space_t as0 = TYPE_ADDR_SPACE (TREE_TYPE (type0)); ++ addr_space_t as1 = TYPE_ADDR_SPACE (TREE_TYPE (type1)); ++ addr_space_t as_common; ++ + if (comp_target_types (type0, type1)) + { + result_type = common_pointer_type (type0, type1); +@@ -8397,9 +8610,17 @@ + pedwarn (location, OPT_pedantic, "ISO C forbids " + "ordered comparisons of pointers to functions"); + } ++ else if (!addr_space_superset (as0, as1, &as_common)) ++ { ++ error_at (location, "comparison of pointers to " ++ "disjoint address spaces"); ++ return error_mark_node; ++ } + else + { +- result_type = ptr_type_node; ++ int qual = ENCODE_QUAL_ADDR_SPACE (as_common); ++ result_type = build_pointer_type ++ (build_qualified_type (void_type_node, qual)); + pedwarn (location, 0, + "comparison of distinct pointer types lacks a cast"); + } +Index: gcc/coretypes.h +=================================================================== +--- a/src/gcc/coretypes.h (.../gcc-4_4-branch) ++++ b/src/gcc/coretypes.h (.../cell-4_4-branch) +@@ -67,6 +67,13 @@ + typedef struct gimple_seq_node_d *gimple_seq_node; + typedef const struct gimple_seq_node_d *const_gimple_seq_node; + ++/* Address space number for named address space support. */ ++typedef unsigned char addr_space_t; ++ ++/* The value of addr_space_t that represents the generic address space. */ ++#define ADDR_SPACE_GENERIC 0 ++#define ADDR_SPACE_GENERIC_P(AS) ((AS) == ADDR_SPACE_GENERIC) ++ + /* The major intermediate representations of GCC. */ + enum ir_type { + IR_GIMPLE, +Index: gcc/tree.def +=================================================================== +--- a/src/gcc/tree.def (.../gcc-4_4-branch) ++++ b/src/gcc/tree.def (.../cell-4_4-branch) +@@ -763,6 +763,10 @@ + represented by CONVERT_EXPR or NOP_EXPR nodes. */ + DEFTREECODE (CONVERT_EXPR, "convert_expr", tcc_unary, 1) + ++/* Conversion of a pointer value to a pointer to a different ++ address space. */ ++DEFTREECODE (ADDR_SPACE_CONVERT_EXPR, "addr_space_convert_expr", tcc_unary, 1) ++ + /* Conversion of a fixed-point value to an integer, a real, or a fixed-point + value. Or conversion of a fixed-point value from an integer, a real, or + a fixed-point value. */ +Index: gcc/expmed.c +=================================================================== +--- a/src/gcc/expmed.c (.../gcc-4_4-branch) ++++ b/src/gcc/expmed.c (.../cell-4_4-branch) +@@ -5017,10 +5017,11 @@ + default: + t = build_decl (VAR_DECL, NULL_TREE, type); + +- /* If TYPE is a POINTER_TYPE, X might be Pmode with TYPE_MODE being +- ptr_mode. So convert. */ ++ /* If TYPE is a POINTER_TYPE, we might need to convert X from ++ address mode to pointer mode. */ + if (POINTER_TYPE_P (type)) +- x = convert_memory_address (TYPE_MODE (type), x); ++ x = convert_memory_address_addr_space ++ (TYPE_MODE (type), x, TYPE_ADDR_SPACE (TREE_TYPE (type))); + + /* Note that we do *not* use SET_DECL_RTL here, because we do not + want set_decl_rtl to go adjusting REG_ATTRS for this temporary. */ +Index: gcc/emit-rtl.c +=================================================================== +--- a/src/gcc/emit-rtl.c (.../gcc-4_4-branch) ++++ b/src/gcc/emit-rtl.c (.../cell-4_4-branch) +@@ -58,6 +58,7 @@ + #include "langhooks.h" + #include "tree-pass.h" + #include "df.h" ++#include "target.h" + + /* Commonly used modes. */ + +@@ -193,7 +194,7 @@ + static hashval_t mem_attrs_htab_hash (const void *); + static int mem_attrs_htab_eq (const void *, const void *); + static mem_attrs *get_mem_attrs (alias_set_type, tree, rtx, rtx, unsigned int, +- enum machine_mode); ++ addr_space_t, enum machine_mode); + static hashval_t reg_attrs_htab_hash (const void *); + static int reg_attrs_htab_eq (const void *, const void *); + static reg_attrs *get_reg_attrs (tree, int); +@@ -293,6 +294,7 @@ + const mem_attrs *const p = (const mem_attrs *) x; + + return (p->alias ^ (p->align * 1000) ++ ^ (p->addrspace * 4000) + ^ ((p->offset ? INTVAL (p->offset) : 0) * 50000) + ^ ((p->size ? INTVAL (p->size) : 0) * 2500000) + ^ (size_t) iterative_hash_expr (p->expr, 0)); +@@ -310,6 +312,7 @@ + + return (p->alias == q->alias && p->offset == q->offset + && p->size == q->size && p->align == q->align ++ && p->addrspace == q->addrspace + && (p->expr == q->expr + || (p->expr != NULL_TREE && q->expr != NULL_TREE + && operand_equal_p (p->expr, q->expr, 0)))); +@@ -321,7 +324,7 @@ + + static mem_attrs * + get_mem_attrs (alias_set_type alias, tree expr, rtx offset, rtx size, +- unsigned int align, enum machine_mode mode) ++ unsigned int align, addr_space_t addrspace, enum machine_mode mode) + { + mem_attrs attrs; + void **slot; +@@ -329,7 +332,7 @@ + /* If everything is the default, we can just return zero. + This must match what the corresponding MEM_* macros return when the + field is not present. */ +- if (alias == 0 && expr == 0 && offset == 0 ++ if (alias == 0 && expr == 0 && offset == 0 && addrspace == 0 + && (size == 0 + || (mode != BLKmode && GET_MODE_SIZE (mode) == INTVAL (size))) + && (STRICT_ALIGNMENT && mode != BLKmode +@@ -341,6 +344,7 @@ + attrs.offset = offset; + attrs.size = size; + attrs.align = align; ++ attrs.addrspace = addrspace; + + slot = htab_find_slot (mem_attrs_htab, &attrs, INSERT); + if (*slot == 0) +@@ -1387,7 +1391,9 @@ + + else if (reload_completed) + { +- if (! strict_memory_address_p (word_mode, XEXP (new_rtx, 0))) ++ if (! strict_memory_address_addr_space_p (word_mode, ++ XEXP (new_rtx, 0), ++ MEM_ADDR_SPACE (op))) + return 0; + } + else +@@ -1842,7 +1848,8 @@ + + /* Now set the attributes we computed above. */ + MEM_ATTRS (ref) +- = get_mem_attrs (alias, expr, offset, size, align, GET_MODE (ref)); ++ = get_mem_attrs (alias, expr, offset, size, align, ++ TYPE_ADDR_SPACE (type), GET_MODE (ref)); + + /* If this is already known to be a scalar or aggregate, we are done. */ + if (MEM_IN_STRUCT_P (ref) || MEM_SCALAR_P (ref)) +@@ -1870,7 +1877,8 @@ + MEM_ATTRS (mem) + = get_mem_attrs (MEM_ALIAS_SET (mem), REG_EXPR (reg), + GEN_INT (REG_OFFSET (reg)), +- MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem)); ++ MEM_SIZE (mem), MEM_ALIGN (mem), ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the alias set of MEM to SET. */ +@@ -1885,9 +1893,19 @@ + + MEM_ATTRS (mem) = get_mem_attrs (set, MEM_EXPR (mem), MEM_OFFSET (mem), + MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + ++/* Set the address space of MEM to ADDRSPACE (target-defined). */ ++ ++void ++set_mem_addr_space (rtx mem, addr_space_t addrspace) ++{ ++ MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), ++ MEM_OFFSET (mem), MEM_SIZE (mem), ++ MEM_ALIGN (mem), addrspace, GET_MODE (mem)); ++} ++ + /* Set the alignment of MEM to ALIGN bits. */ + + void +@@ -1895,7 +1913,7 @@ + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + MEM_OFFSET (mem), MEM_SIZE (mem), align, +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the expr for MEM to EXPR. */ +@@ -1905,7 +1923,8 @@ + { + MEM_ATTRS (mem) + = get_mem_attrs (MEM_ALIAS_SET (mem), expr, MEM_OFFSET (mem), +- MEM_SIZE (mem), MEM_ALIGN (mem), GET_MODE (mem)); ++ MEM_SIZE (mem), MEM_ALIGN (mem), ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the offset of MEM to OFFSET. */ +@@ -1915,7 +1934,7 @@ + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + offset, MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Set the size of MEM to SIZE. */ +@@ -1925,7 +1944,7 @@ + { + MEM_ATTRS (mem) = get_mem_attrs (MEM_ALIAS_SET (mem), MEM_EXPR (mem), + MEM_OFFSET (mem), size, MEM_ALIGN (mem), +- GET_MODE (mem)); ++ MEM_ADDR_SPACE (mem), GET_MODE (mem)); + } + + /* Return a memory reference like MEMREF, but with its mode changed to MODE +@@ -1937,23 +1956,25 @@ + static rtx + change_address_1 (rtx memref, enum machine_mode mode, rtx addr, int validate) + { ++ addr_space_t as; + rtx new_rtx; + + gcc_assert (MEM_P (memref)); ++ as = MEM_ADDR_SPACE (memref); + if (mode == VOIDmode) + mode = GET_MODE (memref); + if (addr == 0) + addr = XEXP (memref, 0); + if (mode == GET_MODE (memref) && addr == XEXP (memref, 0) +- && (!validate || memory_address_p (mode, addr))) ++ && (!validate || memory_address_addr_space_p (mode, addr, as))) + return memref; + + if (validate) + { + if (reload_in_progress || reload_completed) +- gcc_assert (memory_address_p (mode, addr)); ++ gcc_assert (memory_address_addr_space_p (mode, addr, as)); + else +- addr = memory_address (mode, addr); ++ addr = memory_address_addr_space (mode, addr, as); + } + + if (rtx_equal_p (addr, XEXP (memref, 0)) && mode == GET_MODE (memref)) +@@ -1992,7 +2013,8 @@ + } + + MEM_ATTRS (new_rtx) +- = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0, size, align, mmode); ++ = get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0, size, align, ++ MEM_ADDR_SPACE (memref), mmode); + + return new_rtx; + } +@@ -2012,11 +2034,13 @@ + rtx memoffset = MEM_OFFSET (memref); + rtx size = 0; + unsigned int memalign = MEM_ALIGN (memref); ++ addr_space_t as = MEM_ADDR_SPACE (memref); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + int pbits; + + /* If there are no changes, just return the original memory reference. */ + if (mode == GET_MODE (memref) && !offset +- && (!validate || memory_address_p (mode, addr))) ++ && (!validate || memory_address_addr_space_p (mode, addr, as))) + return memref; + + /* ??? Prefer to create garbage instead of creating shared rtl. +@@ -2026,7 +2050,7 @@ + + /* Convert a possibly large offset to a signed value within the + range of the target address space. */ +- pbits = GET_MODE_BITSIZE (Pmode); ++ pbits = GET_MODE_BITSIZE (address_mode); + if (HOST_BITS_PER_WIDE_INT > pbits) + { + int shift = HOST_BITS_PER_WIDE_INT - pbits; +@@ -2042,7 +2066,7 @@ + && offset >= 0 + && (unsigned HOST_WIDE_INT) offset + < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT) +- addr = gen_rtx_LO_SUM (Pmode, XEXP (addr, 0), ++ addr = gen_rtx_LO_SUM (address_mode, XEXP (addr, 0), + plus_constant (XEXP (addr, 1), offset)); + else + addr = plus_constant (addr, offset); +@@ -2075,7 +2099,8 @@ + size = plus_constant (MEM_SIZE (memref), -offset); + + MEM_ATTRS (new_rtx) = get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), +- memoffset, size, memalign, GET_MODE (new_rtx)); ++ memoffset, size, memalign, as, ++ GET_MODE (new_rtx)); + + /* At some point, we should validate that this offset is within the object, + if all the appropriate values are known. */ +@@ -2103,8 +2128,10 @@ + offset_address (rtx memref, rtx offset, unsigned HOST_WIDE_INT pow2) + { + rtx new_rtx, addr = XEXP (memref, 0); ++ addr_space_t as = MEM_ADDR_SPACE (memref); ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + +- new_rtx = simplify_gen_binary (PLUS, Pmode, addr, offset); ++ new_rtx = simplify_gen_binary (PLUS, address_mode, addr, offset); + + /* At this point we don't know _why_ the address is invalid. It + could have secondary memory references, multiplies or anything. +@@ -2113,12 +2140,12 @@ + being able to recognize the magic around pic_offset_table_rtx. + This stuff is fragile, and is yet another example of why it is + bad to expose PIC machinery too early. */ +- if (! memory_address_p (GET_MODE (memref), new_rtx) ++ if (! memory_address_addr_space_p (GET_MODE (memref), new_rtx, as) + && GET_CODE (addr) == PLUS + && XEXP (addr, 0) == pic_offset_table_rtx) + { + addr = force_reg (GET_MODE (addr), addr); +- new_rtx = simplify_gen_binary (PLUS, Pmode, addr, offset); ++ new_rtx = simplify_gen_binary (PLUS, address_mode, addr, offset); + } + + update_temp_slot_address (XEXP (memref, 0), new_rtx); +@@ -2133,7 +2160,7 @@ + MEM_ATTRS (new_rtx) + = get_mem_attrs (MEM_ALIAS_SET (memref), MEM_EXPR (memref), 0, 0, + MIN (MEM_ALIGN (memref), pow2 * BITS_PER_UNIT), +- GET_MODE (new_rtx)); ++ as, GET_MODE (new_rtx)); + return new_rtx; + } + +@@ -2237,7 +2264,8 @@ + /* ??? Maybe use get_alias_set on any remaining expression. */ + + MEM_ATTRS (new_rtx) = get_mem_attrs (0, expr, memoffset, GEN_INT (size), +- MEM_ALIGN (new_rtx), mode); ++ MEM_ALIGN (new_rtx), ++ MEM_ADDR_SPACE (new_rtx), mode); + + return new_rtx; + } +@@ -2264,7 +2292,7 @@ + rd = gen_rtx_MEM (BLKmode, frame_pointer_rtx); + MEM_NOTRAP_P (rd) = 1; + MEM_ATTRS (rd) = get_mem_attrs (new_alias_set (), d, const0_rtx, +- NULL_RTX, 0, BLKmode); ++ NULL_RTX, 0, ADDR_SPACE_GENERIC, BLKmode); + SET_DECL_RTL (d, rd); + + return d; +@@ -2297,7 +2325,7 @@ + + MEM_ATTRS (mem) = get_mem_attrs (alias, expr, offset, + MEM_SIZE (mem), MEM_ALIGN (mem), +- GET_MODE (mem)); ++ ADDR_SPACE_GENERIC, GET_MODE (mem)); + MEM_NOTRAP_P (mem) = 1; + } + +Index: gcc/cselib.c +=================================================================== +--- a/src/gcc/cselib.c (.../gcc-4_4-branch) ++++ b/src/gcc/cselib.c (.../cell-4_4-branch) +@@ -1689,7 +1689,13 @@ + src = gen_rtx_IF_THEN_ELSE (GET_MODE (dest), cond, src, dest); + sets[i].src_elt = cselib_lookup (src, GET_MODE (dest), 1); + if (MEM_P (dest)) +- sets[i].dest_addr_elt = cselib_lookup (XEXP (dest, 0), Pmode, 1); ++ { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (dest)); ++ ++ sets[i].dest_addr_elt = cselib_lookup (XEXP (dest, 0), ++ address_mode, 1); ++ } + else + sets[i].dest_addr_elt = 0; + } +Index: gcc/emit-rtl.h +=================================================================== +--- a/src/gcc/emit-rtl.h (.../gcc-4_4-branch) ++++ b/src/gcc/emit-rtl.h (.../cell-4_4-branch) +@@ -26,6 +26,9 @@ + /* Set the alignment of MEM to ALIGN bits. */ + extern void set_mem_align (rtx, unsigned int); + ++/* Set the address space of MEM to ADDRSPACE. */ ++extern void set_mem_addr_space (rtx, addr_space_t); ++ + /* Set the expr for MEM to EXPR. */ + extern void set_mem_expr (rtx, tree); + +Index: gcc/simplify-rtx.c +=================================================================== +--- a/src/gcc/simplify-rtx.c (.../gcc-4_4-branch) ++++ b/src/gcc/simplify-rtx.c (.../cell-4_4-branch) +@@ -863,7 +863,11 @@ + return rtl_hooks.gen_lowpart_no_emit (mode, op); + + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) +- if (! POINTERS_EXTEND_UNSIGNED ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && ! POINTERS_EXTEND_UNSIGNED + && mode == Pmode && GET_MODE (op) == ptr_mode + && (CONSTANT_P (op) + || (GET_CODE (op) == SUBREG +@@ -885,7 +889,11 @@ + return rtl_hooks.gen_lowpart_no_emit (mode, op); + + #if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend) +- if (POINTERS_EXTEND_UNSIGNED > 0 ++ /* As we do not know which address space the pointer is refering to, ++ we can do this only if the target does not support different pointer ++ or address modes depending on the address space. */ ++ if (target_default_pointer_address_modes_p () ++ && POINTERS_EXTEND_UNSIGNED > 0 + && mode == Pmode && GET_MODE (op) == ptr_mode + && (CONSTANT_P (op) + || (GET_CODE (op) == SUBREG +Index: gcc/explow.c +=================================================================== +--- a/src/gcc/explow.c (.../gcc-4_4-branch) ++++ b/src/gcc/explow.c (.../cell-4_4-branch) +@@ -306,27 +306,27 @@ + rtx op1 = break_out_memory_refs (XEXP (x, 1)); + + if (op0 != XEXP (x, 0) || op1 != XEXP (x, 1)) +- x = simplify_gen_binary (GET_CODE (x), Pmode, op0, op1); ++ x = simplify_gen_binary (GET_CODE (x), GET_MODE (x), op0, op1); + } + + return x; + } + +-/* Given X, a memory address in ptr_mode, convert it to an address +- in Pmode, or vice versa (TO_MODE says which way). We take advantage of +- the fact that pointers are not allowed to overflow by commuting arithmetic +- operations over conversions so that address arithmetic insns can be +- used. */ ++/* Given X, a memory address in address space AS' pointer mode, convert it to ++ an address in the address space's address mode, or vice versa (TO_MODE says ++ which way). We take advantage of the fact that pointers are not allowed to ++ overflow by commuting arithmetic operations over conversions so that address ++ arithmetic insns can be used. */ + + rtx +-convert_memory_address (enum machine_mode to_mode ATTRIBUTE_UNUSED, +- rtx x) ++convert_memory_address_addr_space (enum machine_mode to_mode ATTRIBUTE_UNUSED, ++ rtx x, addr_space_t as ATTRIBUTE_UNUSED) + { + #ifndef POINTERS_EXTEND_UNSIGNED + gcc_assert (GET_MODE (x) == to_mode || GET_MODE (x) == VOIDmode); + return x; + #else /* defined(POINTERS_EXTEND_UNSIGNED) */ +- enum machine_mode from_mode; ++ enum machine_mode pointer_mode, address_mode, from_mode; + rtx temp; + enum rtx_code code; + +@@ -334,7 +334,9 @@ + if (GET_MODE (x) == to_mode) + return x; + +- from_mode = to_mode == ptr_mode ? Pmode : ptr_mode; ++ pointer_mode = targetm.addr_space.pointer_mode (as); ++ address_mode = targetm.addr_space.address_mode (as); ++ from_mode = to_mode == pointer_mode ? address_mode : pointer_mode; + + /* Here we handle some special cases. If none of them apply, fall through + to the default case. */ +@@ -375,7 +377,8 @@ + + case CONST: + return gen_rtx_CONST (to_mode, +- convert_memory_address (to_mode, XEXP (x, 0))); ++ convert_memory_address_addr_space ++ (to_mode, XEXP (x, 0), as)); + break; + + case PLUS: +@@ -389,10 +392,12 @@ + if (GET_MODE_SIZE (to_mode) < GET_MODE_SIZE (from_mode) + || (GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 1)) == CONST_INT +- && (XEXP (x, 1) == convert_memory_address (to_mode, XEXP (x, 1)) ++ && (XEXP (x, 1) == convert_memory_address_addr_space ++ (to_mode, XEXP (x, 1), as) + || POINTERS_EXTEND_UNSIGNED < 0))) + return gen_rtx_fmt_ee (GET_CODE (x), to_mode, +- convert_memory_address (to_mode, XEXP (x, 0)), ++ convert_memory_address_addr_space ++ (to_mode, XEXP (x, 0), as), + XEXP (x, 1)); + break; + +@@ -405,21 +410,22 @@ + #endif /* defined(POINTERS_EXTEND_UNSIGNED) */ + } + +-/* Return something equivalent to X but valid as a memory address +- for something of mode MODE. When X is not itself valid, this +- works by copying X or subexpressions of it into registers. */ ++/* Return something equivalent to X but valid as a memory address for something ++ of mode MODE in the named address space AS. When X is not itself valid, ++ this works by copying X or subexpressions of it into registers. */ + + rtx +-memory_address (enum machine_mode mode, rtx x) ++memory_address_addr_space (enum machine_mode mode, rtx x, addr_space_t as) + { + rtx oldx = x; ++ enum machine_mode address_mode = targetm.addr_space.address_mode (as); + +- x = convert_memory_address (Pmode, x); ++ x = convert_memory_address_addr_space (address_mode, x, as); + + /* By passing constant addresses through registers + we get a chance to cse them. */ + if (! cse_not_expected && CONSTANT_P (x) && CONSTANT_ADDRESS_P (x)) +- x = force_reg (Pmode, x); ++ x = force_reg (address_mode, x); + + /* We get better cse by rejecting indirect addressing at this stage. + Let the combiner create indirect addresses where appropriate. +@@ -431,12 +437,12 @@ + x = break_out_memory_refs (x); + + /* At this point, any valid address is accepted. */ +- if (memory_address_p (mode, x)) ++ if (memory_address_addr_space_p (mode, x, as)) + goto done; + + /* If it was valid before but breaking out memory refs invalidated it, + use it the old way. */ +- if (memory_address_p (mode, oldx)) ++ if (memory_address_addr_space_p (mode, oldx, as)) + { + x = oldx; + goto done; +@@ -446,7 +452,12 @@ + in certain cases. This is not necessary since the code + below can handle all possible cases, but machine-dependent + transformations can make better code. */ +- LEGITIMIZE_ADDRESS (x, oldx, mode, done); ++ { ++ rtx orig_x = x; ++ x = targetm.addr_space.legitimize_address (x, oldx, mode, as); ++ if (orig_x != x && memory_address_addr_space_p (mode, x, as)) ++ goto done; ++ } + + /* PLUS and MULT can appear in special ways + as the result of attempts to make an address usable for indexing. +@@ -462,12 +473,12 @@ + rtx constant_term = const0_rtx; + rtx y = eliminate_constant_term (x, &constant_term); + if (constant_term == const0_rtx +- || ! memory_address_p (mode, y)) ++ || ! memory_address_addr_space_p (mode, y, as)) + x = force_operand (x, NULL_RTX); + else + { + y = gen_rtx_PLUS (GET_MODE (x), copy_to_reg (y), constant_term); +- if (! memory_address_p (mode, y)) ++ if (! memory_address_addr_space_p (mode, y, as)) + x = force_operand (x, NULL_RTX); + else + x = y; +@@ -485,12 +496,12 @@ + /* Last resort: copy the value to a register, since + the register is a valid address. */ + else +- x = force_reg (Pmode, x); ++ x = force_reg (address_mode, x); + } + + done: + +- gcc_assert (memory_address_p (mode, x)); ++ gcc_assert (memory_address_addr_space_p (mode, x, as)); + /* If we didn't change the address, we are done. Otherwise, mark + a reg as a pointer if we have REG or REG + CONST_INT. */ + if (oldx == x) +@@ -518,7 +529,8 @@ + if (!MEM_P (ref)) + return ref; + ref = use_anchored_address (ref); +- if (memory_address_p (GET_MODE (ref), XEXP (ref, 0))) ++ if (memory_address_addr_space_p (GET_MODE (ref), XEXP (ref, 0), ++ MEM_ADDR_SPACE (ref))) + return ref; + + /* Don't alter REF itself, since that is probably a stack slot. */ +@@ -789,7 +801,8 @@ + #ifdef POINTERS_EXTEND_UNSIGNED + case REFERENCE_TYPE: + case POINTER_TYPE: +- mode = Pmode; ++ mode = targetm.addr_space.address_mode ++ (TYPE_ADDR_SPACE (TREE_TYPE (type))); + unsignedp = POINTERS_EXTEND_UNSIGNED; + break; + #endif +Index: gcc/print-tree.c +=================================================================== +--- a/src/gcc/print-tree.c (.../gcc-4_4-branch) ++++ b/src/gcc/print-tree.c (.../cell-4_4-branch) +@@ -110,6 +110,8 @@ + fprintf (file, " %s", + IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (node)))); + } ++ if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ fprintf (file, " address-space-%d", TYPE_ADDR_SPACE (node)); + } + if (TREE_CODE (node) == IDENTIFIER_NODE) + fprintf (file, " %s", IDENTIFIER_POINTER (node)); +@@ -299,6 +301,9 @@ + else if (TYPE_P (node) && TYPE_SIZES_GIMPLIFIED (node)) + fputs (" sizes-gimplified", file); + ++ if (TYPE_P (node) && !ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (node))) ++ fprintf (file, " address-space-%d", TYPE_ADDR_SPACE (node)); ++ + if (TREE_ADDRESSABLE (node)) + fputs (" addressable", file); + if (TREE_THIS_VOLATILE (node)) +Index: gcc/varasm.c +=================================================================== +--- a/src/gcc/varasm.c (.../gcc-4_4-branch) ++++ b/src/gcc/varasm.c (.../cell-4_4-branch) +@@ -1156,11 +1156,17 @@ + static section * + get_variable_section (tree decl, bool prefer_noswitch_p) + { ++ addr_space_t as = ADDR_SPACE_GENERIC; + int reloc; + +- /* If the decl has been given an explicit section name, then it +- isn't common, and shouldn't be handled as such. */ +- if (DECL_COMMON (decl) && DECL_SECTION_NAME (decl) == NULL) ++ if (TREE_TYPE (decl) != error_mark_node) ++ as = TYPE_ADDR_SPACE (TREE_TYPE (decl)); ++ ++ /* If the decl has been given an explicit section name, or it resides ++ in a non-generic address space, then it isn't common, and shouldn't ++ be handled as such. */ ++ if (DECL_COMMON (decl) && DECL_SECTION_NAME (decl) == NULL ++ && ADDR_SPACE_GENERIC_P (as)) + { + if (DECL_THREAD_LOCAL_P (decl)) + return tls_comm_section; +@@ -1184,7 +1190,8 @@ + if (IN_NAMED_SECTION (decl)) + return get_named_section (decl, NULL, reloc); + +- if (!DECL_THREAD_LOCAL_P (decl) ++ if (ADDR_SPACE_GENERIC_P (as) ++ && !DECL_THREAD_LOCAL_P (decl) + && !(prefer_noswitch_p && targetm.have_switchable_bss_sections) + && bss_initializer_p (decl)) + { +@@ -1428,7 +1435,15 @@ + if (use_object_blocks_p () && use_blocks_for_decl_p (decl)) + x = create_block_symbol (name, get_block_for_decl (decl), -1); + else +- x = gen_rtx_SYMBOL_REF (Pmode, name); ++ { ++ enum machine_mode address_mode = Pmode; ++ if (TREE_TYPE (decl) != error_mark_node) ++ { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (decl)); ++ address_mode = targetm.addr_space.address_mode (as); ++ } ++ x = gen_rtx_SYMBOL_REF (address_mode, name); ++ } + SYMBOL_REF_WEAK (x) = DECL_WEAK (decl); + SET_SYMBOL_REF_DECL (x, decl); + +@@ -4336,7 +4351,7 @@ + if (cache && cache[0] == value) + return cache[1]; + if (! INTEGRAL_TYPE_P (endtype) +- || TYPE_PRECISION (endtype) >= POINTER_SIZE) ++ || TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value))) + { + tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE }; + tree valid0 +@@ -4371,7 +4386,7 @@ + if (cache && cache[0] == value) + return cache[1]; + if (! INTEGRAL_TYPE_P (endtype) +- || TYPE_PRECISION (endtype) >= POINTER_SIZE) ++ || TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value))) + { + tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE }; + tree valid0 +@@ -4466,7 +4481,9 @@ + resolving it. */ + if (TREE_CODE (exp) == NOP_EXPR + && POINTER_TYPE_P (TREE_TYPE (exp)) +- && targetm.valid_pointer_mode (TYPE_MODE (TREE_TYPE (exp)))) ++ && targetm.addr_space.valid_pointer_mode ++ (TYPE_MODE (TREE_TYPE (exp)), ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))))) + { + tree saved_type = TREE_TYPE (exp); + +@@ -4474,7 +4491,9 @@ + pointer modes. */ + while (TREE_CODE (exp) == NOP_EXPR + && POINTER_TYPE_P (TREE_TYPE (exp)) +- && targetm.valid_pointer_mode (TYPE_MODE (TREE_TYPE (exp)))) ++ && targetm.addr_space.valid_pointer_mode ++ (TYPE_MODE (TREE_TYPE (exp)), ++ TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (exp))))) + exp = TREE_OPERAND (exp, 0); + + /* If what we're left with is the address of something, we can +@@ -6400,14 +6419,6 @@ + return local_p; + } + +-/* Determine whether or not a pointer mode is valid. Assume defaults +- of ptr_mode or Pmode - can be overridden. */ +-bool +-default_valid_pointer_mode (enum machine_mode mode) +-{ +- return (mode == ptr_mode || mode == Pmode); +-} +- + /* Default function to output code that will globalize a label. A + target must define GLOBAL_ASM_OP or provide its own function to + globalize a label. */ +Index: gcc/sched-deps.c +=================================================================== +--- a/src/gcc/sched-deps.c (.../gcc-4_4-branch) ++++ b/src/gcc/sched-deps.c (.../cell-4_4-branch) +@@ -41,6 +41,7 @@ + #include "sched-int.h" + #include "params.h" + #include "cselib.h" ++#include "target.h" + + #ifdef INSN_SCHEDULING + +@@ -1907,8 +1908,11 @@ + + if (sched_deps_info->use_cselib) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (dest)); ++ + t = shallow_copy_rtx (dest); +- cselib_lookup (XEXP (t, 0), Pmode, 1); ++ cselib_lookup (XEXP (t, 0), address_mode, 1); + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + } + t = canon_rtx (t); +@@ -2061,8 +2065,11 @@ + + if (sched_deps_info->use_cselib) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (t)); ++ + t = shallow_copy_rtx (t); +- cselib_lookup (XEXP (t, 0), Pmode, 1); ++ cselib_lookup (XEXP (t, 0), address_mode, 1); + XEXP (t, 0) = cselib_subst_to_values (XEXP (t, 0)); + } + t = canon_rtx (t); +Index: gcc/tree-ssa.c +=================================================================== +--- a/src/gcc/tree-ssa.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-ssa.c (.../cell-4_4-branch) +@@ -1075,6 +1075,11 @@ + if (POINTER_TYPE_P (inner_type) + && POINTER_TYPE_P (outer_type)) + { ++ /* Do not lose casts between pointers to different address spaces. */ ++ if (TYPE_ADDR_SPACE (TREE_TYPE (outer_type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (inner_type))) ++ return false; ++ + /* Do not lose casts to restrict qualified pointers. */ + if ((TYPE_RESTRICT (outer_type) + != TYPE_RESTRICT (inner_type)) +@@ -1235,8 +1240,15 @@ + if (POINTER_TYPE_P (inner_type) + && POINTER_TYPE_P (outer_type) + && TREE_CODE (TREE_TYPE (outer_type)) == VOID_TYPE) +- return true; ++ { ++ /* Do not lose casts between pointers to different address spaces. */ ++ if (TYPE_ADDR_SPACE (TREE_TYPE (outer_type)) ++ != TYPE_ADDR_SPACE (TREE_TYPE (inner_type))) ++ return false; + ++ return true; ++ } ++ + return useless_type_conversion_p_1 (outer_type, inner_type); + } + +Index: gcc/target-def.h +=================================================================== +--- a/src/gcc/target-def.h (.../gcc-4_4-branch) ++++ b/src/gcc/target-def.h (.../cell-4_4-branch) +@@ -457,6 +457,48 @@ + #define TARGET_VALID_POINTER_MODE default_valid_pointer_mode + #endif + ++#ifndef TARGET_ADDR_SPACE_POINTER_MODE ++#define TARGET_ADDR_SPACE_POINTER_MODE default_addr_space_pointer_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_ADDRESS_MODE ++#define TARGET_ADDR_SPACE_ADDRESS_MODE default_addr_space_address_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_VALID_POINTER_MODE ++#define TARGET_ADDR_SPACE_VALID_POINTER_MODE \ ++ default_addr_space_valid_pointer_mode ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P ++#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \ ++ default_addr_space_legitimate_address_p ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS ++#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS \ ++ default_addr_space_legitimize_address ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_SUBSET_P ++#define TARGET_ADDR_SPACE_SUBSET_P default_addr_space_subset_p ++#endif ++ ++#ifndef TARGET_ADDR_SPACE_CONVERT ++#define TARGET_ADDR_SPACE_CONVERT default_addr_space_convert ++#endif ++ ++#define TARGET_ADDR_SPACE_HOOKS \ ++ { \ ++ TARGET_ADDR_SPACE_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_ADDRESS_MODE, \ ++ TARGET_ADDR_SPACE_VALID_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P, \ ++ TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS, \ ++ TARGET_ADDR_SPACE_SUBSET_P, \ ++ TARGET_ADDR_SPACE_CONVERT, \ ++ } ++ + #ifndef TARGET_SCALAR_MODE_SUPPORTED_P + #define TARGET_SCALAR_MODE_SUPPORTED_P default_scalar_mode_supported_p + #endif +@@ -879,6 +921,7 @@ + TARGET_MIN_DIVISIONS_FOR_RECIP_MUL, \ + TARGET_MODE_REP_EXTENDED, \ + TARGET_VALID_POINTER_MODE, \ ++ TARGET_ADDR_SPACE_HOOKS, \ + TARGET_SCALAR_MODE_SUPPORTED_P, \ + TARGET_VECTOR_MODE_SUPPORTED_P, \ + TARGET_VECTOR_OPAQUE_P, \ +Index: gcc/rtl.c +=================================================================== +--- a/src/gcc/rtl.c (.../gcc-4_4-branch) ++++ b/src/gcc/rtl.c (.../cell-4_4-branch) +@@ -367,6 +367,14 @@ + if (GET_MODE (x) != GET_MODE (y)) + return 0; + ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ ++ /* MEMs refering to different address space are not equivalent. */ ++ if (code == MEM && MEM_ADDR_SPACE (x) != MEM_ADDR_SPACE (y)) ++ return 0; ++ + /* Some RTL can be compared nonrecursively. */ + switch (code) + { +Index: gcc/rtl.h +=================================================================== +--- a/src/gcc/rtl.h (.../gcc-4_4-branch) ++++ b/src/gcc/rtl.h (.../cell-4_4-branch) +@@ -146,6 +146,7 @@ + rtx size; /* Size in bytes, as a CONST_INT. */ + alias_set_type alias; /* Memory alias set. */ + unsigned int align; /* Alignment of MEM in bits. */ ++ unsigned char addrspace; /* Address space (0 for generic). */ + } mem_attrs; + + /* Structure used to describe the attributes of a REG in similar way as +@@ -1075,7 +1076,7 @@ + + extern void init_rtlanal (void); + extern int rtx_cost (rtx, enum rtx_code, bool); +-extern int address_cost (rtx, enum machine_mode, bool); ++extern int address_cost (rtx, enum machine_mode, addr_space_t, bool); + extern unsigned int subreg_lsb (const_rtx); + extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode, + unsigned int); +@@ -1209,6 +1210,10 @@ + RTX that is always a CONST_INT. */ + #define MEM_OFFSET(RTX) (MEM_ATTRS (RTX) == 0 ? 0 : MEM_ATTRS (RTX)->offset) + ++/* For a MEM rtx, the address space. */ ++#define MEM_ADDR_SPACE(RTX) (MEM_ATTRS (RTX) == 0 ? ADDR_SPACE_GENERIC \ ++ : MEM_ATTRS (RTX)->addrspace) ++ + /* For a MEM rtx, the size in bytes of the MEM, if known, as an RTX that + is always a CONST_INT. */ + #define MEM_SIZE(RTX) \ +@@ -1542,7 +1547,10 @@ + enum machine_mode); + extern int byte_lowpart_offset (enum machine_mode, enum machine_mode); + extern rtx make_safe_from (rtx, rtx); +-extern rtx convert_memory_address (enum machine_mode, rtx); ++extern rtx convert_memory_address_addr_space (enum machine_mode, rtx, ++ addr_space_t); ++#define convert_memory_address(to_mode,x) \ ++ convert_memory_address_addr_space ((to_mode), (x), ADDR_SPACE_GENERIC) + extern rtx get_insns (void); + extern const char *get_insn_name (int); + extern rtx get_last_insn (void); +Index: gcc/tree-inline.c +=================================================================== +--- a/src/gcc/tree-inline.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-inline.c (.../cell-4_4-branch) +@@ -2765,6 +2765,7 @@ + case MINUS_EXPR: + case MULT_EXPR: + ++ case ADDR_SPACE_CONVERT_EXPR: + case FIXED_CONVERT_EXPR: + case FIX_TRUNC_EXPR: + +Index: gcc/output.h +=================================================================== +--- a/src/gcc/output.h (.../gcc-4_4-branch) ++++ b/src/gcc/output.h (.../cell-4_4-branch) +@@ -618,7 +618,6 @@ + extern void default_internal_label (FILE *, const char *, unsigned long); + extern void default_file_start (void); + extern void file_end_indicate_exec_stack (void); +-extern bool default_valid_pointer_mode (enum machine_mode); + + extern void default_elf_asm_output_external (FILE *file, tree, + const char *); +Index: gcc/combine.c +=================================================================== +--- a/src/gcc/combine.c (.../gcc-4_4-branch) ++++ b/src/gcc/combine.c (.../cell-4_4-branch) +@@ -3890,9 +3890,12 @@ + if (GET_CODE (XEXP (x, 0)) == CONST + || GET_CODE (XEXP (x, 0)) == SYMBOL_REF) + { ++ enum machine_mode address_mode ++ = targetm.addr_space.address_mode (MEM_ADDR_SPACE (x)); ++ + SUBST (XEXP (x, 0), +- gen_rtx_LO_SUM (Pmode, +- gen_rtx_HIGH (Pmode, XEXP (x, 0)), ++ gen_rtx_LO_SUM (address_mode, ++ gen_rtx_HIGH (address_mode, XEXP (x, 0)), + XEXP (x, 0))); + return &XEXP (XEXP (x, 0), 0); + } +@@ -3905,7 +3908,8 @@ + it will not remain in the result. */ + if (GET_CODE (XEXP (x, 0)) == PLUS + && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT +- && ! memory_address_p (GET_MODE (x), XEXP (x, 0))) ++ && ! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x))) + { + rtx reg = regno_reg_rtx[FIRST_PSEUDO_REGISTER]; + rtx seq = combine_split_insns (gen_rtx_SET (VOIDmode, reg, +@@ -3928,8 +3932,9 @@ + && NONJUMP_INSN_P (NEXT_INSN (seq)) + && GET_CODE (PATTERN (NEXT_INSN (seq))) == SET + && SET_DEST (PATTERN (NEXT_INSN (seq))) == reg +- && memory_address_p (GET_MODE (x), +- SET_SRC (PATTERN (NEXT_INSN (seq))))) ++ && memory_address_addr_space_p ++ (GET_MODE (x), SET_SRC (PATTERN (NEXT_INSN (seq))), ++ MEM_ADDR_SPACE (x))) + { + rtx src1 = SET_SRC (PATTERN (seq)); + rtx src2 = SET_SRC (PATTERN (NEXT_INSN (seq))); +@@ -3968,7 +3973,8 @@ + /* If we have a PLUS whose first operand is complex, try computing it + separately by making a split there. */ + if (GET_CODE (XEXP (x, 0)) == PLUS +- && ! memory_address_p (GET_MODE (x), XEXP (x, 0)) ++ && ! memory_address_addr_space_p (GET_MODE (x), XEXP (x, 0), ++ MEM_ADDR_SPACE (x)) + && ! OBJECT_P (XEXP (XEXP (x, 0), 0)) + && ! (GET_CODE (XEXP (XEXP (x, 0), 0)) == SUBREG + && OBJECT_P (SUBREG_REG (XEXP (XEXP (x, 0), 0))))) +Index: gcc/c-common.c +=================================================================== +--- a/src/gcc/c-common.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-common.c (.../cell-4_4-branch) +@@ -750,6 +750,11 @@ + { "inout", RID_INOUT, D_OBJC }, + { "oneway", RID_ONEWAY, D_OBJC }, + { "out", RID_OUT, D_OBJC }, ++ ++#ifdef TARGET_ADDR_SPACE_KEYWORDS ++ /* Any address space keywords recognized by the target. */ ++ TARGET_ADDR_SPACE_KEYWORDS, ++#endif + }; + + const unsigned int num_c_common_reswords = +@@ -878,6 +883,19 @@ + { NULL, 0, 0, false, false, false, NULL } + }; + ++/* Return identifier for address space AS. */ ++const char * ++c_addr_space_name (addr_space_t as) ++{ ++ unsigned int i; ++ ++ for (i = 0; i < num_c_common_reswords; i++) ++ if (c_common_reswords[i].rid == RID_FIRST_ADDR_SPACE + as) ++ return c_common_reswords[i].word; ++ ++ gcc_unreachable (); ++} ++ + /* Push current bindings for the function name VAR_DECLS. */ + + void +@@ -5777,9 +5795,10 @@ + + if (POINTER_TYPE_P (type)) + { ++ addr_space_t as = TYPE_ADDR_SPACE (TREE_TYPE (type)); + tree (*fn)(tree, enum machine_mode, bool); + +- if (!targetm.valid_pointer_mode (mode)) ++ if (!targetm.addr_space.valid_pointer_mode (mode, as)) + { + error ("invalid pointer mode %qs", p); + return NULL_TREE; +@@ -7808,7 +7827,7 @@ + if (quals == 0) + unqual_elt = elt; + else +- unqual_elt = c_build_qualified_type (elt, TYPE_UNQUALIFIED); ++ unqual_elt = c_build_qualified_type (elt, KEEP_QUAL_ADDR_SPACE (quals)); + + /* Using build_distinct_type_copy and modifying things afterward instead + of using build_array_type to create a new type preserves all of the +Index: gcc/tree-flow.h +=================================================================== +--- a/src/gcc/tree-flow.h (.../gcc-4_4-branch) ++++ b/src/gcc/tree-flow.h (.../cell-4_4-branch) +@@ -1133,7 +1133,8 @@ + /* In tree-ssa-loop-ivopts.c */ + bool expr_invariant_in_loop_p (struct loop *, tree); + bool stmt_invariant_in_loop_p (struct loop *, gimple); +-bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode); ++bool multiplier_allowed_in_address_p (HOST_WIDE_INT, enum machine_mode, ++ addr_space_t); + unsigned multiply_by_cost (HOST_WIDE_INT, enum machine_mode, bool); + + /* In tree-ssa-threadupdate.c. */ +@@ -1166,8 +1167,8 @@ + + struct affine_tree_combination; + tree create_mem_ref (gimple_stmt_iterator *, tree, +- struct affine_tree_combination *, bool); +-rtx addr_for_mem_ref (struct mem_address *, bool); ++ struct affine_tree_combination *, tree, bool); ++rtx addr_for_mem_ref (struct mem_address *, addr_space_t, bool); + void get_address_description (tree, struct mem_address *); + tree maybe_fold_tmr (tree); + +Index: gcc/c-common.h +=================================================================== +--- a/src/gcc/c-common.h (.../gcc-4_4-branch) ++++ b/src/gcc/c-common.h (.../cell-4_4-branch) +@@ -119,6 +119,30 @@ + RID_AT_INTERFACE, + RID_AT_IMPLEMENTATION, + ++ /* Named address support, mapping the keyword to a particular named address ++ number. Named address space 0 is reserved for the generic address. If ++ there are more than 254 named addresses, the addr_space_t type will need ++ to be grown from an unsigned char to unsigned short. */ ++ RID_ADDR_SPACE_0, /* generic address */ ++ RID_ADDR_SPACE_1, ++ RID_ADDR_SPACE_2, ++ RID_ADDR_SPACE_3, ++ RID_ADDR_SPACE_4, ++ RID_ADDR_SPACE_5, ++ RID_ADDR_SPACE_6, ++ RID_ADDR_SPACE_7, ++ RID_ADDR_SPACE_8, ++ RID_ADDR_SPACE_9, ++ RID_ADDR_SPACE_10, ++ RID_ADDR_SPACE_11, ++ RID_ADDR_SPACE_12, ++ RID_ADDR_SPACE_13, ++ RID_ADDR_SPACE_14, ++ RID_ADDR_SPACE_15, ++ ++ RID_FIRST_ADDR_SPACE = RID_ADDR_SPACE_0, ++ RID_LAST_ADDR_SPACE = RID_ADDR_SPACE_15, ++ + RID_MAX, + + RID_FIRST_MODIFIER = RID_STATIC, +@@ -228,6 +252,10 @@ + #define D_CXX_OBJC 0x100 /* In Objective C, and C++, but not C. */ + #define D_CXXWARN 0x200 /* In C warn with -Wcxx-compat. */ + ++/* Macro for backends to define named address keywords. */ ++#define ADDR_SPACE_KEYWORD(STRING, VALUE) \ ++ { STRING, RID_FIRST_ADDR_SPACE + (VALUE), D_CONLY | D_EXT } ++ + /* The reserved keyword table. */ + extern const struct c_common_resword c_common_reswords[]; + +@@ -685,6 +713,7 @@ + + extern tree (*make_fname_decl) (tree, int); + ++extern const char *c_addr_space_name (addr_space_t as); + extern tree identifier_global_value (tree); + extern void record_builtin_type (enum rid, const char *, tree); + extern tree build_void_list_node (void); +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (.../gcc-4_4-branch) ++++ b/src/gcc/config.gcc (.../cell-4_4-branch) +@@ -2316,7 +2316,7 @@ + spu-*-elf*) + tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h" + tmake_file="spu/t-spu-elf" +- extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h" ++ extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h spu_cache.h" + extra_modes=spu/spu-modes.def + c_target_objs="${c_target_objs} spu-c.o" + cxx_target_objs="${cxx_target_objs} spu-c.o" +Index: gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in (.../gcc-4_4-branch) ++++ b/src/gcc/Makefile.in (.../cell-4_4-branch) +@@ -2249,7 +2249,7 @@ + $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \ + output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ + tree-pass.h $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h $(EXPR_H) \ +- gt-tree-ssa-address.h $(GGC_H) tree-affine.h ++ gt-tree-ssa-address.h $(GGC_H) tree-affine.h $(TARGET_H) + tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \ + $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \ + $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \ +@@ -2563,7 +2563,7 @@ + $(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \ + $(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(TOPLEV_H) $(BASIC_BLOCK_H) \ + $(HASHTAB_H) $(TM_P_H) debug.h langhooks.h tree-pass.h gt-emit-rtl.h \ +- $(REAL_H) $(DF_H) ++ $(REAL_H) $(DF_H) $(TARGET_H) + real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ + $(TOPLEV_H) $(TM_P_H) $(REAL_H) dfp.h + dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ +@@ -2771,7 +2771,7 @@ + auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \ + $(REGS_H) $(FLAGS_H) output.h $(FUNCTION_H) except.h $(TOPLEV_H) $(RECOG_H) \ +- $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) ++ $(EXPR_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) $(TARGET_H) + cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \ + $(REGS_H) hard-reg-set.h output.h $(TOPLEV_H) $(FUNCTION_H) except.h $(GGC_H) \ + $(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \ +@@ -2952,7 +2952,7 @@ + sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) except.h cselib.h \ +- $(PARAMS_H) $(TM_P_H) ++ $(PARAMS_H) $(TM_P_H) $(TARGET_H) + sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(FUNCTION_H) $(INSN_ATTR_H) $(TOPLEV_H) $(RECOG_H) except.h $(PARAMS_H) \ +Index: gcc/tree-cfg.c +=================================================================== +--- a/src/gcc/tree-cfg.c (.../gcc-4_4-branch) ++++ b/src/gcc/tree-cfg.c (.../cell-4_4-branch) +@@ -3364,6 +3364,21 @@ + return false; + } + ++ case ADDR_SPACE_CONVERT_EXPR: ++ { ++ if (!POINTER_TYPE_P (rhs1_type) || !POINTER_TYPE_P (lhs_type) ++ || (TYPE_ADDR_SPACE (TREE_TYPE (rhs1_type)) ++ == TYPE_ADDR_SPACE (TREE_TYPE (lhs_type)))) ++ { ++ error ("invalid types in address space conversion"); ++ debug_generic_expr (lhs_type); ++ debug_generic_expr (rhs1_type); ++ return true; ++ } ++ ++ return false; ++ } ++ + case FIXED_CONVERT_EXPR: + { + if (!valid_fixed_convert_types_p (lhs_type, rhs1_type) +Index: gcc/c-parser.c +=================================================================== +--- a/src/gcc/c-parser.c (.../gcc-4_4-branch) ++++ b/src/gcc/c-parser.c (.../cell-4_4-branch) +@@ -70,6 +70,10 @@ + tree id; + int mask = 0; + ++ /* Make sure RID_MAX hasn't grown past the 8 bits used to hold the keyword in ++ the c_token structure. */ ++ gcc_assert (RID_MAX <= 255); ++ + mask |= D_CXXONLY; + if (!flag_isoc99) + mask |= D_C99; +@@ -130,6 +134,8 @@ + C_ID_TYPENAME, + /* An identifier declared as an Objective-C class name. */ + C_ID_CLASSNAME, ++ /* An address space identifier. */ ++ C_ID_ADDRSPACE, + /* Not an identifier. */ + C_ID_NONE + } c_id_kind; +@@ -226,6 +232,13 @@ + "identifier %qs conflicts with C++ keyword", + IDENTIFIER_POINTER (token->value)); + } ++ else if (rid_code >= RID_FIRST_ADDR_SPACE ++ && rid_code <= RID_LAST_ADDR_SPACE) ++ { ++ token->id_kind = C_ID_ADDRSPACE; ++ token->keyword = rid_code; ++ break; ++ } + else if (c_dialect_objc ()) + { + if (!objc_is_reserved_word (token->value) +@@ -352,6 +365,8 @@ + { + case C_ID_ID: + return false; ++ case C_ID_ADDRSPACE: ++ return true; + case C_ID_TYPENAME: + return true; + case C_ID_CLASSNAME: +@@ -422,6 +437,8 @@ + { + case C_ID_ID: + return false; ++ case C_ID_ADDRSPACE: ++ return true; + case C_ID_TYPENAME: + return true; + case C_ID_CLASSNAME: +@@ -1391,6 +1408,7 @@ + const + restrict + volatile ++ address-space-qualifier + + (restrict is new in C99.) + +@@ -1399,6 +1417,12 @@ + declaration-specifiers: + attributes declaration-specifiers[opt] + ++ type-qualifier: ++ address-space ++ ++ address-space: ++ identifier recognized by the target ++ + storage-class-specifier: + __thread + +@@ -1438,6 +1462,17 @@ + { + tree value = c_parser_peek_token (parser)->value; + c_id_kind kind = c_parser_peek_token (parser)->id_kind; ++ ++ if (kind == C_ID_ADDRSPACE) ++ { ++ addr_space_t as ++ = c_parser_peek_token (parser)->keyword - RID_FIRST_ADDR_SPACE; ++ declspecs_add_addrspace (specs, as); ++ c_parser_consume_token (parser); ++ attrs_ok = true; ++ continue; ++ } ++ + /* This finishes the specifiers unless a type name is OK, it + is declared as a type name and a type name hasn't yet + been seen. */ +@@ -5549,6 +5584,14 @@ + finish_init (); + maybe_warn_string_init (type, init); + ++ if (type != error_mark_node ++ && !ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (type)) ++ && current_function_decl) ++ { ++ error ("compound literal qualified by address-space qualifier"); ++ type = error_mark_node; ++ } ++ + if (!flag_isoc99) + pedwarn (start_loc, OPT_pedantic, "ISO C90 forbids compound literals"); + expr.value = build_compound_literal (type, init.value); +Index: gcc/config/spu/spu_cache.h +=================================================================== +--- a/src/gcc/config/spu/spu_cache.h (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu_cache.h (.../cell-4_4-branch) +@@ -0,0 +1,39 @@ ++/* Copyright (C) 2008, 2009 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 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 ++ . */ ++ ++#ifndef _SPU_CACHE_H ++#define _SPU_CACHE_H ++ ++void *__cache_fetch_dirty (__ea void *ea, int n_bytes_dirty); ++void *__cache_fetch (__ea void *ea); ++void __cache_evict (__ea void *ea); ++void __cache_flush (void); ++void __cache_touch (__ea void *ea); ++ ++#define cache_fetch_dirty(_ea, _n_bytes_dirty) \ ++ __cache_fetch_dirty(_ea, _n_bytes_dirty) ++ ++#define cache_fetch(_ea) __cache_fetch(_ea) ++#define cache_touch(_ea) __cache_touch(_ea) ++#define cache_evict(_ea) __cache_evict(_ea) ++#define cache_flush() __cache_flush() ++ ++#endif +Index: gcc/config/spu/spu-protos.h +=================================================================== +--- a/src/gcc/config/spu/spu-protos.h (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu-protos.h (.../cell-4_4-branch) +@@ -90,6 +90,7 @@ + extern void spu_expand_vector_init (rtx target, rtx vals); + extern void spu_init_expanders (void); + extern void spu_split_convert (rtx *); ++extern void spu_function_profiler (FILE *, int); + + /* spu-c.c */ + extern tree spu_resolve_overloaded_builtin (tree fndecl, tree fnargs); +Index: gcc/config/spu/cachemgr.c +=================================================================== +--- a/src/gcc/config/spu/cachemgr.c (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/cachemgr.c (.../cell-4_4-branch) +@@ -0,0 +1,438 @@ ++/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++#include ++#include ++#include ++#include ++ ++extern unsigned long long __ea_local_store; ++extern char __cache_tag_array_size; ++ ++#define LINE_SIZE 128 ++#define TAG_MASK (LINE_SIZE - 1) ++ ++#define WAYS 4 ++#define SET_MASK ((int) &__cache_tag_array_size - LINE_SIZE) ++ ++#define CACHE_LINES ((int) &__cache_tag_array_size / \ ++ sizeof (struct __cache_tag_array) * WAYS) ++ ++struct __cache_tag_array ++{ ++ unsigned int tag_lo[WAYS]; ++ unsigned int tag_hi[WAYS]; ++ void *base[WAYS]; ++ int reserved[WAYS]; ++ vector unsigned short dirty_bits[WAYS]; ++}; ++ ++extern struct __cache_tag_array __cache_tag_array[]; ++extern char __cache[]; ++ ++/* In order to make the code seem a little cleaner, and to avoid having ++ 64/32 bit ifdefs all over the place, we use macros. */ ++ ++#ifdef __EA64__ ++typedef unsigned long long addr; ++ ++#define CHECK_TAG(_entry, _way, _tag) \ ++ ((_entry)->tag_lo[(_way)] == ((_tag) & 0xFFFFFFFF) \ ++ && (_entry)->tag_hi[(_way)] == ((_tag) >> 32)) ++ ++#define GET_TAG(_entry, _way) \ ++ ((unsigned long long)(_entry)->tag_hi[(_way)] << 32 \ ++ | (unsigned long long)(_entry)->tag_lo[(_way)]) ++ ++#define SET_TAG(_entry, _way, _tag) \ ++ (_entry)->tag_lo[(_way)] = (_tag) & 0xFFFFFFFF; \ ++ (_entry)->tag_hi[(_way)] = (_tag) >> 32 ++ ++#else /*__EA32__*/ ++typedef unsigned long addr; ++ ++#define CHECK_TAG(_entry, _way, _tag) \ ++ ((_entry)->tag_lo[(_way)] == (_tag)) ++ ++#define GET_TAG(_entry, _way) \ ++ ((_entry)->tag_lo[(_way)]) ++ ++#define SET_TAG(_entry, _way, _tag) \ ++ (_entry)->tag_lo[(_way)] = (_tag) ++ ++#endif ++ ++/* In GET_ENTRY, we cast away the high 32 bits, ++ as the tag is only in the low 32. */ ++ ++#define GET_ENTRY(_addr) \ ++ ((struct __cache_tag_array *) \ ++ si_to_uint (si_a (si_and (si_from_uint ((unsigned int) (addr) (_addr)), \ ++ si_from_uint (SET_MASK)), \ ++ si_from_uint ((unsigned int) __cache_tag_array)))) ++ ++#define GET_CACHE_LINE(_addr, _way) \ ++ ((void *) (__cache + ((_addr) & SET_MASK) * WAYS) + ((_way) * LINE_SIZE)); ++ ++#define CHECK_DIRTY(_vec) (si_to_uint (si_orx ((qword) (_vec)))) ++#define SET_EMPTY(_entry, _way) ((_entry)->tag_lo[(_way)] = 1) ++#define CHECK_EMPTY(_entry, _way) ((_entry)->tag_lo[(_way)] == 1) ++ ++#define LS_FLAG 0x80000000 ++#define SET_IS_LS(_entry, _way) ((_entry)->reserved[(_way)] |= LS_FLAG) ++#define CHECK_IS_LS(_entry, _way) ((_entry)->reserved[(_way)] & LS_FLAG) ++#define GET_LRU(_entry, _way) ((_entry)->reserved[(_way)] & ~LS_FLAG) ++ ++static int dma_tag = 32; ++ ++static void ++__cache_evict_entry (struct __cache_tag_array *entry, int way) ++{ ++ addr tag = GET_TAG (entry, way); ++ ++ if (CHECK_DIRTY (entry->dirty_bits[way]) && !CHECK_IS_LS (entry, way)) ++ { ++#ifdef NONATOMIC ++ /* Non-atomic writes. */ ++ unsigned int oldmask, mach_stat; ++ char *line = ((void *) 0); ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ /* Issue DMA request. */ ++ line = GET_CACHE_LINE (entry->tag_lo[way], way); ++ mfc_put (line, tag, LINE_SIZE, dma_tag, 0, 0); ++ ++ /* Wait for DMA completion. */ ++ oldmask = mfc_read_tag_mask (); ++ mfc_write_tag_mask (1 << dma_tag); ++ mfc_read_tag_status_all (); ++ mfc_write_tag_mask (oldmask); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++#else ++ /* Allocate a buffer large enough that we know it has 128 bytes ++ that are 128 byte aligned (for DMA). */ ++ ++ char buffer[LINE_SIZE + 127]; ++ qword *buf_ptr = (qword *) (((unsigned int) (buffer) + 127) & ~127); ++ qword *line = GET_CACHE_LINE (entry->tag_lo[way], way); ++ qword bits; ++ unsigned int mach_stat; ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ do ++ { ++ /* We atomically read the current memory into a buffer ++ modify the dirty bytes in the buffer, and write it ++ back. If writeback fails, loop and try again. */ ++ ++ mfc_getllar (buf_ptr, tag, 0, 0); ++ mfc_read_atomic_status (); ++ ++ /* The method we're using to write 16 dirty bytes into ++ the buffer at a time uses fsmb which in turn uses ++ the least significant 16 bits of word 0, so we ++ load the bits and rotate so that the first bit of ++ the bitmap is in the first bit that fsmb will use. */ ++ ++ bits = (qword) entry->dirty_bits[way]; ++ bits = si_rotqbyi (bits, -2); ++ ++ /* Si_fsmb creates the mask of dirty bytes. ++ Use selb to nab the appropriate bits. */ ++ buf_ptr[0] = si_selb (buf_ptr[0], line[0], si_fsmb (bits)); ++ ++ /* Rotate to next 16 byte section of cache. */ ++ bits = si_rotqbyi (bits, 2); ++ ++ buf_ptr[1] = si_selb (buf_ptr[1], line[1], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[2] = si_selb (buf_ptr[2], line[2], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[3] = si_selb (buf_ptr[3], line[3], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[4] = si_selb (buf_ptr[4], line[4], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[5] = si_selb (buf_ptr[5], line[5], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[6] = si_selb (buf_ptr[6], line[6], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ buf_ptr[7] = si_selb (buf_ptr[7], line[7], si_fsmb (bits)); ++ bits = si_rotqbyi (bits, 2); ++ ++ mfc_putllc (buf_ptr, tag, 0, 0); ++ } ++ while (mfc_read_atomic_status ()); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++#endif ++ } ++ ++ /* In any case, marking the lo tag with 1 which denotes empty. */ ++ SET_EMPTY (entry, way); ++ entry->dirty_bits[way] = (vector unsigned short) si_from_uint (0); ++} ++ ++void ++__cache_evict (__ea void *ea) ++{ ++ addr tag = (addr) ea & ~TAG_MASK; ++ struct __cache_tag_array *entry = GET_ENTRY (ea); ++ int i = 0; ++ ++ /* Cycles through all the possible ways an address could be at ++ and evicts the way if found. */ ++ ++ for (i = 0; i < WAYS; i++) ++ if (CHECK_TAG (entry, i, tag)) ++ __cache_evict_entry (entry, i); ++} ++ ++static void * ++__cache_fill (int way, addr tag) ++{ ++ unsigned int oldmask, mach_stat; ++ char *line = ((void *) 0); ++ ++ /* Reserve our DMA tag. */ ++ if (dma_tag == 32) ++ dma_tag = mfc_tag_reserve (); ++ ++ /* Enter critical section. */ ++ mach_stat = spu_readch (SPU_RdMachStat); ++ spu_idisable (); ++ ++ /* Issue DMA request. */ ++ line = GET_CACHE_LINE (tag, way); ++ mfc_get (line, tag, LINE_SIZE, dma_tag, 0, 0); ++ ++ /* Wait for DMA completion. */ ++ oldmask = mfc_read_tag_mask (); ++ mfc_write_tag_mask (1 << dma_tag); ++ mfc_read_tag_status_all (); ++ mfc_write_tag_mask (oldmask); ++ ++ /* Leave critical section. */ ++ if (__builtin_expect (mach_stat & 1, 0)) ++ spu_ienable (); ++ ++ return (void *) line; ++} ++ ++static void ++__cache_miss (__ea void *ea, struct __cache_tag_array *entry, int way) ++{ ++ ++ addr tag = (addr) ea & ~TAG_MASK; ++ unsigned int lru = 0; ++ int i = 0; ++ int idx = 0; ++ ++ /* If way > 4, then there are no empty slots, so we must evict ++ the least recently used entry. */ ++ if (way >= 4) ++ { ++ for (i = 0; i < WAYS; i++) ++ { ++ if (GET_LRU (entry, i) > lru) ++ { ++ lru = GET_LRU (entry, i); ++ idx = i; ++ } ++ } ++ __cache_evict_entry (entry, idx); ++ way = idx; ++ } ++ ++ /* Set the empty entry's tag and fill it's cache line. */ ++ ++ SET_TAG (entry, way, tag); ++ entry->reserved[way] = 0; ++ ++ /* Check if the address is just an effective address within the ++ SPU's local store. */ ++ ++ /* Because the LS is not 256k aligned, we can't do a nice and mask ++ here to compare, so we must check the whole range. */ ++ ++ if ((addr) ea >= (addr) __ea_local_store ++ && (addr) ea < (addr) (__ea_local_store + 0x40000)) ++ { ++ SET_IS_LS (entry, way); ++ entry->base[way] = ++ (void *) ((unsigned int) ((addr) ea - ++ (addr) __ea_local_store) & ~0x7f); ++ } ++ else ++ { ++ entry->base[way] = __cache_fill (way, tag); ++ } ++} ++ ++void * ++__cache_fetch_dirty (__ea void *ea, int n_bytes_dirty) ++{ ++#ifdef __EA64__ ++ unsigned int tag_hi; ++ qword etag_hi; ++#endif ++ unsigned int tag_lo; ++ struct __cache_tag_array *entry; ++ ++ qword etag_lo; ++ qword equal; ++ qword bit_mask; ++ qword way; ++ ++ /* This first chunk, we merely fill the pointer and tag. */ ++ ++ entry = GET_ENTRY (ea); ++ ++#ifndef __EA64__ ++ tag_lo = ++ si_to_uint (si_andc ++ (si_shufb ++ (si_from_uint ((addr) ea), si_from_uint (0), ++ si_from_uint (0x00010203)), si_from_uint (TAG_MASK))); ++#else ++ tag_lo = ++ si_to_uint (si_andc ++ (si_shufb ++ (si_from_ullong ((addr) ea), si_from_uint (0), ++ si_from_uint (0x04050607)), si_from_uint (TAG_MASK))); ++ ++ tag_hi = ++ si_to_uint (si_shufb ++ (si_from_ullong ((addr) ea), si_from_uint (0), ++ si_from_uint (0x00010203))); ++#endif ++ ++ /* Increment LRU in reserved bytes. */ ++ si_stqd (si_ai (si_lqd (si_from_ptr (entry), 48), 1), ++ si_from_ptr (entry), 48); ++ ++missreturn: ++ /* Check if the entry's lo_tag is equal to the address' lo_tag. */ ++ etag_lo = si_lqd (si_from_ptr (entry), 0); ++ equal = si_ceq (etag_lo, si_from_uint (tag_lo)); ++#ifdef __EA64__ ++ /* And the high tag too. */ ++ etag_hi = si_lqd (si_from_ptr (entry), 16); ++ equal = si_and (equal, (si_ceq (etag_hi, si_from_uint (tag_hi)))); ++#endif ++ ++ if ((si_to_uint (si_orx (equal)) == 0)) ++ goto misshandler; ++ ++ if (n_bytes_dirty) ++ { ++ /* way = 0x40,0x50,0x60,0x70 for each way, which is also the ++ offset of the appropriate dirty bits. */ ++ way = si_shli (si_clz (si_gbb (equal)), 2); ++ ++ /* To create the bit_mask, we set it to all 1s (uint -1), then we ++ shift it over (128 - n_bytes_dirty) times. */ ++ ++ bit_mask = si_from_uint (-1); ++ ++ bit_mask = ++ si_shlqby (bit_mask, si_from_uint ((LINE_SIZE - n_bytes_dirty) / 8)); ++ ++ bit_mask = ++ si_shlqbi (bit_mask, si_from_uint ((LINE_SIZE - n_bytes_dirty) % 8)); ++ ++ /* Rotate it around to the correct offset. */ ++ bit_mask = ++ si_rotqby (bit_mask, ++ si_from_uint (-1 * ((addr) ea & TAG_MASK) / 8)); ++ ++ bit_mask = ++ si_rotqbi (bit_mask, ++ si_from_uint (-1 * ((addr) ea & TAG_MASK) % 8)); ++ ++ /* Update the dirty bits. */ ++ si_stqx (si_or (si_lqx (si_from_ptr (entry), way), bit_mask), ++ si_from_ptr (entry), way); ++ }; ++ ++ /* We've definitely found the right entry, set LRU (reserved) to 0 ++ maintaining the LS flag (MSB). */ ++ ++ si_stqd (si_andc ++ (si_lqd (si_from_ptr (entry), 48), ++ si_and (equal, si_from_uint (~(LS_FLAG)))), ++ si_from_ptr (entry), 48); ++ ++ return (void *) ++ si_to_uint (si_a ++ (si_orx ++ (si_and (si_lqd (si_from_ptr (entry), 32), equal)), ++ si_from_uint (((unsigned int) (addr) ea) & TAG_MASK))); ++ ++misshandler: ++ equal = si_ceqi (etag_lo, 1); ++ __cache_miss (ea, entry, (si_to_uint (si_clz (si_gbb (equal))) - 16) >> 2); ++ goto missreturn; ++} ++ ++void * ++__cache_fetch (__ea void *ea) ++{ ++ return __cache_fetch_dirty (ea, 0); ++} ++ ++void ++__cache_touch (__ea void *ea __attribute__ ((unused))) ++{ ++ /* NO-OP for now. */ ++} ++ ++void __cache_flush (void) __attribute__ ((destructor)); ++void ++__cache_flush (void) ++{ ++ struct __cache_tag_array *entry = __cache_tag_array; ++ unsigned int i; ++ int j; ++ ++ /* Cycle through each cache entry and evict all used ways. */ ++ ++ for (i = 0; i < CACHE_LINES / WAYS; i++) ++ { ++ for (j = 0; j < WAYS; j++) ++ if (!CHECK_EMPTY (entry, j)) ++ __cache_evict_entry (entry, j); ++ ++ entry++; ++ } ++} +Index: gcc/config/spu/cache.S +=================================================================== +--- a/src/gcc/config/spu/cache.S (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/cache.S (.../cell-4_4-branch) +@@ -0,0 +1,43 @@ ++/* Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++ .data ++ .p2align 7 ++ .global __cache ++__cache: ++ .rept __CACHE_SIZE__ * 8 ++ .fill 128 ++ .endr ++ ++ .p2align 7 ++ .global __cache_tag_array ++__cache_tag_array: ++ .rept __CACHE_SIZE__ * 2 ++ .long 1, 1, 1, 1 ++ .fill 128-16 ++ .endr ++__end_cache_tag_array: ++ ++ .globl __cache_tag_array_size ++ .set __cache_tag_array_size, __end_cache_tag_array-__cache_tag_array ++ +Index: gcc/config/spu/spu.opt +=================================================================== +--- a/src/gcc/config/spu/spu.opt (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu.opt (.../cell-4_4-branch) +@@ -82,3 +82,24 @@ + mtune= + Target RejectNegative Joined Var(spu_tune_string) + Schedule code for given CPU ++ ++mea32 ++Target Report RejectNegative Var(spu_ea_model,32) Init(32) ++Access variables in 32-bit PPU objects (default) ++ ++mea64 ++Target Report RejectNegative Var(spu_ea_model,64) VarExists ++Access variables in 64-bit PPU objects ++ ++maddress-space-conversion ++Target Report Mask(ADDRESS_SPACE_CONVERSION) ++Allow conversions between __ea and generic pointers (default) ++ ++mcache-size= ++Target Report RejectNegative Joined UInteger ++Size (in KB) of software data cache ++ ++matomic-updates ++Target Report ++Atomically write back software data cache lines (default) ++ +Index: gcc/config/spu/spu-c.c +=================================================================== +--- a/src/gcc/config/spu/spu-c.c (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu-c.c (.../cell-4_4-branch) +@@ -199,6 +199,17 @@ + if (spu_arch == PROCESSOR_CELLEDP) + builtin_define_std ("__SPU_EDP__"); + builtin_define_std ("__vector=__attribute__((__spu_vector__))"); ++ switch (spu_ea_model) ++ { ++ case 32: ++ builtin_define_std ("__EA32__"); ++ break; ++ case 64: ++ builtin_define_std ("__EA64__"); ++ break; ++ default: ++ gcc_unreachable (); ++ } + + if (!flag_iso) + { +Index: gcc/config/spu/t-spu-elf +=================================================================== +--- a/src/gcc/config/spu/t-spu-elf (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/t-spu-elf (.../cell-4_4-branch) +@@ -66,15 +66,40 @@ + # Don't let CTOR_LIST end up in sdata section. + CRTSTUFF_T_CFLAGS = + +-#MULTILIB_OPTIONS=mlarge-mem/mtest-abi +-#MULTILIB_DIRNAMES=large-mem test-abi +-#MULTILIB_MATCHES= ++# Multi-lib support. ++MULTILIB_OPTIONS=mea64 + + # Neither gcc or newlib seem to have a standard way to generate multiple + # crt*.o files. So we don't use the standard crt0.o name anymore. + +-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o ++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o libgcc_cachemgr.a libgcc_cachemgr_nonatomic.a \ ++ libgcc_cache8k.a libgcc_cache16k.a libgcc_cache32k.a libgcc_cache64k.a libgcc_cache128k.a + ++$(T)cachemgr.o: $(srcdir)/config/spu/cachemgr.c ++ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(MULTILIB_CFLAGS) -c $< -o $@ ++ ++# Specialised rule to add a -D flag. ++$(T)cachemgr_nonatomic.o: $(srcdir)/config/spu/cachemgr.c ++ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(MULTILIB_CFLAGS) -DNONATOMIC -c $< -o $@ ++ ++$(T)libgcc_%.a: $(T)%.o ++ $(AR_FOR_TARGET) -rcs $@ $< ++ ++$(T)cache8k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=8 -o $@ -c $< ++ ++$(T)cache16k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=16 -o $@ -c $< ++ ++$(T)cache32k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=32 -o $@ -c $< ++ ++$(T)cache64k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=64 -o $@ -c $< ++ ++$(T)cache128k.o: $(srcdir)/config/spu/cache.S ++ $(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) -D__CACHE_SIZE__=128 -o $@ -c $< ++ + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib + +Index: gcc/config/spu/spu.c +=================================================================== +--- a/src/gcc/config/spu/spu.c (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu.c (.../cell-4_4-branch) +@@ -153,6 +153,8 @@ + static void spu_init_builtins (void); + static unsigned char spu_scalar_mode_supported_p (enum machine_mode mode); + static unsigned char spu_vector_mode_supported_p (enum machine_mode mode); ++static bool spu_addr_space_legitimate_address_p (enum machine_mode, rtx, ++ bool, addr_space_t); + static rtx adjust_operand (rtx op, HOST_WIDE_INT * start); + static rtx get_pic_reg (void); + static int need_to_save_reg (int regno, int saving); +@@ -201,15 +203,23 @@ + static bool spu_return_in_memory (const_tree type, const_tree fntype); + static void fix_range (const char *); + static void spu_encode_section_info (tree, rtx, int); ++static rtx spu_addr_space_legitimize_address (rtx, rtx, enum machine_mode, ++ addr_space_t); + static tree spu_builtin_mul_widen_even (tree); + static tree spu_builtin_mul_widen_odd (tree); + static tree spu_builtin_mask_for_load (void); + static int spu_builtin_vectorization_cost (bool); + static bool spu_vector_alignment_reachable (const_tree, bool); + static tree spu_builtin_vec_perm (tree, tree *); ++static enum machine_mode spu_addr_space_pointer_mode (addr_space_t); ++static enum machine_mode spu_addr_space_address_mode (addr_space_t); ++static bool spu_addr_space_subset_p (addr_space_t, addr_space_t); ++static rtx spu_addr_space_convert (rtx, tree, tree); + static int spu_sms_res_mii (struct ddg *g); + static void asm_file_start (void); + static unsigned int spu_section_type_flags (tree, const char *, int); ++static section *spu_select_section (tree, int, unsigned HOST_WIDE_INT); ++static void spu_unique_section (tree, int); + static rtx spu_expand_load (rtx, rtx, rtx, int); + + extern const char *reg_names[]; +@@ -269,9 +279,31 @@ + static enum machine_mode + spu_libgcc_shift_count_mode (void); + ++/* Pointer mode for __ea references. */ ++#define EAmode (spu_ea_model != 32 ? DImode : SImode) ++ + + /* TARGET overrides. */ + ++#undef TARGET_ADDR_SPACE_POINTER_MODE ++#define TARGET_ADDR_SPACE_POINTER_MODE spu_addr_space_pointer_mode ++ ++#undef TARGET_ADDR_SPACE_ADDRESS_MODE ++#define TARGET_ADDR_SPACE_ADDRESS_MODE spu_addr_space_address_mode ++ ++#undef TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P ++#define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P \ ++ spu_addr_space_legitimate_address_p ++ ++#undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS ++#define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS spu_addr_space_legitimize_address ++ ++#undef TARGET_ADDR_SPACE_SUBSET_P ++#define TARGET_ADDR_SPACE_SUBSET_P spu_addr_space_subset_p ++ ++#undef TARGET_ADDR_SPACE_CONVERT ++#define TARGET_ADDR_SPACE_CONVERT spu_addr_space_convert ++ + #undef TARGET_INIT_BUILTINS + #define TARGET_INIT_BUILTINS spu_init_builtins + +@@ -281,6 +313,15 @@ + #undef TARGET_UNWIND_WORD_MODE + #define TARGET_UNWIND_WORD_MODE spu_unwind_word_mode + ++/* The current assembler doesn't like .4byte foo@ppu, so use the normal .long ++ and .quad for the debugger. When it is known that the assembler is fixed, ++ these can be removed. */ ++#undef TARGET_ASM_UNALIGNED_SI_OP ++#define TARGET_ASM_UNALIGNED_SI_OP "\t.long\t" ++ ++#undef TARGET_ASM_ALIGNED_DI_OP ++#define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t" ++ + /* The .8byte directive doesn't seem to work well for a 32 bit + architecture. */ + #undef TARGET_ASM_UNALIGNED_DI_OP +@@ -398,6 +439,12 @@ + #undef TARGET_SECTION_TYPE_FLAGS + #define TARGET_SECTION_TYPE_FLAGS spu_section_type_flags + ++#undef TARGET_ASM_SELECT_SECTION ++#define TARGET_ASM_SELECT_SECTION spu_select_section ++ ++#undef TARGET_ASM_UNIQUE_SECTION ++#define TARGET_ASM_UNIQUE_SECTION spu_unique_section ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + void +@@ -3606,6 +3653,29 @@ + return FALSE; + } + ++/* Return true if X is a SYMBOL_REF to an __ea qualified variable. */ ++ ++static int ++ea_symbol_ref (rtx *px, void *data ATTRIBUTE_UNUSED) ++{ ++ rtx x = *px; ++ tree decl; ++ ++ if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS) ++ { ++ rtx plus = XEXP (x, 0); ++ rtx op0 = XEXP (plus, 0); ++ rtx op1 = XEXP (plus, 1); ++ if (GET_CODE (op1) == CONST_INT) ++ x = op0; ++ } ++ ++ return (GET_CODE (x) == SYMBOL_REF ++ && (decl = SYMBOL_REF_DECL (x)) != 0 ++ && TREE_CODE (decl) == VAR_DECL ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl))); ++} ++ + /* We accept: + - any 32-bit constant (SImode, SFmode) + - any constant that can be generated with fsmbi (any mode) +@@ -3617,6 +3687,12 @@ + { + if (GET_CODE (x) == HIGH) + x = XEXP (x, 0); ++ ++ /* Reject any __ea qualified reference. These can't appear in ++ instructions but must be forced to the constant pool. */ ++ if (for_each_rtx (&x, ea_symbol_ref, 0)) ++ return 0; ++ + /* V4SI with all identical symbols is valid. */ + if (!flag_pic + && GET_MODE (x) == V4SImode +@@ -3655,8 +3731,14 @@ + switch (GET_CODE (x)) + { + case LABEL_REF: ++ return !TARGET_LARGE_MEM; ++ + case SYMBOL_REF: + case CONST: ++ /* Keep __ea references until reload so that spu_expand_mov can see them ++ in MEMs. */ ++ if (ea_symbol_ref (&x, 0)) ++ return !reload_in_progress && !reload_completed; + return !TARGET_LARGE_MEM; + + case CONST_INT: +@@ -3700,6 +3782,20 @@ + return FALSE; + } + ++/* Like spu_legitimate_address, except with named addresses. */ ++static bool ++spu_addr_space_legitimate_address_p (enum machine_mode mode, rtx x, ++ bool reg_ok_strict, addr_space_t as) ++{ ++ if (as == ADDR_SPACE_EA) ++ return (REG_P (x) && (GET_MODE (x) == EAmode)); ++ ++ else if (as != ADDR_SPACE_GENERIC) ++ gcc_unreachable (); ++ ++ return spu_legitimate_address (mode, x, reg_ok_strict); ++} ++ + /* When the address is reg + const_int, force the const_int into a + register. */ + rtx +@@ -3733,6 +3829,23 @@ + return NULL_RTX; + } + ++/* Like spu_legitimate_address, except with named address support. */ ++static rtx ++spu_addr_space_legitimize_address (rtx x, rtx oldx, enum machine_mode mode, ++ addr_space_t as) ++{ ++ rtx result; ++ ++ if (as != ADDR_SPACE_GENERIC) ++ return x; ++ ++ result = spu_legitimize_address (x, oldx, mode); ++ if (result) ++ return result; ++ ++ return x; ++} ++ + /* Handle an attribute requiring a FUNCTION_DECL; arguments as in + struct attribute_spec.handler. */ + static tree +@@ -4233,6 +4346,233 @@ + return 0; + } + ++static GTY(()) rtx cache_fetch; /* __cache_fetch function */ ++static GTY(()) rtx cache_fetch_dirty; /* __cache_fetch_dirty function */ ++static alias_set_type ea_alias_set = -1; /* alias set for __ea memory */ ++ ++/* MEM is known to be an __ea qualified memory access. Emit a call to ++ fetch the ppu memory to local store, and return its address in local ++ store. */ ++ ++static void ++ea_load_store (rtx mem, bool is_store, rtx ea_addr, rtx data_addr) ++{ ++ if (is_store) ++ { ++ rtx ndirty = GEN_INT (GET_MODE_SIZE (GET_MODE (mem))); ++ if (!cache_fetch_dirty) ++ cache_fetch_dirty = init_one_libfunc ("__cache_fetch_dirty"); ++ emit_library_call_value (cache_fetch_dirty, data_addr, LCT_NORMAL, Pmode, ++ 2, ea_addr, EAmode, ndirty, SImode); ++ } ++ else ++ { ++ if (!cache_fetch) ++ cache_fetch = init_one_libfunc ("__cache_fetch"); ++ emit_library_call_value (cache_fetch, data_addr, LCT_NORMAL, Pmode, ++ 1, ea_addr, EAmode); ++ } ++} ++ ++/* Like ea_load_store, but do the cache tag comparison and, for stores, ++ dirty bit marking, inline. ++ ++ The cache control data structure is an array of ++ ++ struct __cache_tag_array ++ { ++ unsigned int tag_lo[4]; ++ unsigned int tag_hi[4]; ++ void *data_pointer[4]; ++ int reserved[4]; ++ vector unsigned short dirty_bits[4]; ++ } */ ++ ++static void ++ea_load_store_inline (rtx mem, bool is_store, rtx ea_addr, rtx data_addr) ++{ ++ rtx ea_addr_si; ++ HOST_WIDE_INT v; ++ rtx tag_size_sym = gen_rtx_SYMBOL_REF (Pmode, "__cache_tag_array_size"); ++ rtx tag_arr_sym = gen_rtx_SYMBOL_REF (Pmode, "__cache_tag_array"); ++ rtx index_mask = gen_reg_rtx (SImode); ++ rtx tag_arr = gen_reg_rtx (Pmode); ++ rtx splat_mask = gen_reg_rtx (TImode); ++ rtx splat = gen_reg_rtx (V4SImode); ++ rtx splat_hi = NULL_RTX; ++ rtx tag_index = gen_reg_rtx (Pmode); ++ rtx block_off = gen_reg_rtx (SImode); ++ rtx tag_addr = gen_reg_rtx (Pmode); ++ rtx tag = gen_reg_rtx (V4SImode); ++ rtx cache_tag = gen_reg_rtx (V4SImode); ++ rtx cache_tag_hi = NULL_RTX; ++ rtx cache_ptrs = gen_reg_rtx (TImode); ++ rtx cache_ptrs_si = gen_reg_rtx (SImode); ++ rtx tag_equal = gen_reg_rtx (V4SImode); ++ rtx tag_equal_hi = NULL_RTX; ++ rtx tag_eq_pack = gen_reg_rtx (V4SImode); ++ rtx tag_eq_pack_si = gen_reg_rtx (SImode); ++ rtx eq_index = gen_reg_rtx (SImode); ++ rtx bcomp, hit_label, hit_ref, cont_label, insn; ++ ++ if (spu_ea_model != 32) ++ { ++ splat_hi = gen_reg_rtx (V4SImode); ++ cache_tag_hi = gen_reg_rtx (V4SImode); ++ tag_equal_hi = gen_reg_rtx (V4SImode); ++ } ++ ++ emit_move_insn (index_mask, plus_constant (tag_size_sym, -128)); ++ emit_move_insn (tag_arr, tag_arr_sym); ++ v = 0x0001020300010203LL; ++ emit_move_insn (splat_mask, immed_double_const (v, v, TImode)); ++ ea_addr_si = ea_addr; ++ if (spu_ea_model != 32) ++ ea_addr_si = convert_to_mode (SImode, ea_addr, 1); ++ ++ /* tag_index = ea_addr & (tag_array_size - 128) */ ++ emit_insn (gen_andsi3 (tag_index, ea_addr_si, index_mask)); ++ ++ /* splat ea_addr to all 4 slots. */ ++ emit_insn (gen_shufb (splat, ea_addr_si, ea_addr_si, splat_mask)); ++ /* Similarly for high 32 bits of ea_addr. */ ++ if (spu_ea_model != 32) ++ emit_insn (gen_shufb (splat_hi, ea_addr, ea_addr, splat_mask)); ++ ++ /* block_off = ea_addr & 127 */ ++ emit_insn (gen_andsi3 (block_off, ea_addr_si, spu_const (SImode, 127))); ++ ++ /* tag_addr = tag_arr + tag_index */ ++ emit_insn (gen_addsi3 (tag_addr, tag_arr, tag_index)); ++ ++ /* Read cache tags. */ ++ emit_move_insn (cache_tag, gen_rtx_MEM (V4SImode, tag_addr)); ++ if (spu_ea_model != 32) ++ emit_move_insn (cache_tag_hi, gen_rtx_MEM (V4SImode, ++ plus_constant (tag_addr, 16))); ++ ++ /* tag = ea_addr & -128 */ ++ emit_insn (gen_andv4si3 (tag, splat, spu_const (V4SImode, -128))); ++ ++ /* Read all four cache data pointers. */ ++ emit_move_insn (cache_ptrs, gen_rtx_MEM (TImode, ++ plus_constant (tag_addr, 32))); ++ ++ /* Compare tags. */ ++ emit_insn (gen_ceq_v4si (tag_equal, tag, cache_tag)); ++ if (spu_ea_model != 32) ++ { ++ emit_insn (gen_ceq_v4si (tag_equal_hi, splat_hi, cache_tag_hi)); ++ emit_insn (gen_andv4si3 (tag_equal, tag_equal, tag_equal_hi)); ++ } ++ ++ /* At most one of the tags compare equal, so tag_equal has one ++ 32-bit slot set to all 1's, with the other slots all zero. ++ gbb picks off low bit from each byte in the 128-bit registers, ++ so tag_eq_pack is one of 0xf000, 0x0f00, 0x00f0, 0x000f, assuming ++ we have a hit. */ ++ emit_insn (gen_spu_gbb (tag_eq_pack, spu_gen_subreg (V16QImode, tag_equal))); ++ emit_insn (gen_spu_convert (tag_eq_pack_si, tag_eq_pack)); ++ ++ /* So counting leading zeros will set eq_index to 16, 20, 24 or 28. */ ++ emit_insn (gen_clzsi2 (eq_index, tag_eq_pack_si)); ++ ++ /* Allowing us to rotate the corresponding cache data pointer to slot0. ++ (rotating eq_index mod 16 bytes). */ ++ emit_insn (gen_rotqby_ti (cache_ptrs, cache_ptrs, eq_index)); ++ emit_insn (gen_spu_convert (cache_ptrs_si, cache_ptrs)); ++ ++ /* Add block offset to form final data address. */ ++ emit_insn (gen_addsi3 (data_addr, cache_ptrs_si, block_off)); ++ ++ /* Check that we did hit. */ ++ hit_label = gen_label_rtx (); ++ hit_ref = gen_rtx_LABEL_REF (VOIDmode, hit_label); ++ bcomp = gen_rtx_NE (SImode, tag_eq_pack_si, const0_rtx); ++ insn = emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, ++ gen_rtx_IF_THEN_ELSE (VOIDmode, bcomp, ++ hit_ref, pc_rtx))); ++ /* Say that this branch is very likely to happen. */ ++ v = REG_BR_PROB_BASE - REG_BR_PROB_BASE / 100 - 1; ++ REG_NOTES (insn) ++ = gen_rtx_EXPR_LIST (REG_BR_PROB, GEN_INT (v), REG_NOTES (insn)); ++ ++ ea_load_store (mem, is_store, ea_addr, data_addr); ++ cont_label = gen_label_rtx (); ++ emit_jump_insn (gen_jump (cont_label)); ++ emit_barrier (); ++ ++ emit_label (hit_label); ++ ++ if (is_store) ++ { ++ HOST_WIDE_INT v_hi; ++ rtx dirty_bits = gen_reg_rtx (TImode); ++ rtx dirty_off = gen_reg_rtx (SImode); ++ rtx dirty_128 = gen_reg_rtx (TImode); ++ rtx neg_block_off = gen_reg_rtx (SImode); ++ ++ /* Set up mask with one dirty bit per byte of the mem we are ++ writing, starting from top bit. */ ++ v_hi = v = -1; ++ v <<= (128 - GET_MODE_SIZE (GET_MODE (mem))) & 63; ++ if ((128 - GET_MODE_SIZE (GET_MODE (mem))) >= 64) ++ { ++ v_hi = v; ++ v = 0; ++ } ++ emit_move_insn (dirty_bits, immed_double_const (v, v_hi, TImode)); ++ ++ /* Form index into cache dirty_bits. eq_index is one of ++ 0x10, 0x14, 0x18 or 0x1c. Multiplying by 4 gives us ++ 0x40, 0x50, 0x60 or 0x70 which just happens to be the ++ offset to each of the four dirty_bits elements. */ ++ emit_insn (gen_ashlsi3 (dirty_off, eq_index, spu_const (SImode, 2))); ++ ++ emit_insn (gen_spu_lqx (dirty_128, tag_addr, dirty_off)); ++ ++ /* Rotate bit mask to proper bit. */ ++ emit_insn (gen_negsi2 (neg_block_off, block_off)); ++ emit_insn (gen_rotqbybi_ti (dirty_bits, dirty_bits, neg_block_off)); ++ emit_insn (gen_rotqbi_ti (dirty_bits, dirty_bits, neg_block_off)); ++ ++ /* Or in the new dirty bits. */ ++ emit_insn (gen_iorti3 (dirty_128, dirty_bits, dirty_128)); ++ ++ /* Store. */ ++ emit_insn (gen_spu_stqx (dirty_128, tag_addr, dirty_off)); ++ } ++ ++ emit_label (cont_label); ++} ++ ++static rtx ++expand_ea_mem (rtx mem, bool is_store) ++{ ++ rtx ea_addr; ++ rtx data_addr = gen_reg_rtx (Pmode); ++ rtx new_mem; ++ ++ ea_addr = force_reg (EAmode, XEXP (mem, 0)); ++ if (optimize_size || optimize == 0) ++ ea_load_store (mem, is_store, ea_addr, data_addr); ++ else ++ ea_load_store_inline (mem, is_store, ea_addr, data_addr); ++ ++ if (ea_alias_set == -1) ++ ea_alias_set = new_alias_set (); ++ ++ /* We generate a new MEM RTX to refer to the copy of the data ++ in the cache. We do not copy memory attributes (except the ++ alignment) from the original MEM, as they may no longer apply ++ to the cache copy. */ ++ new_mem = gen_rtx_MEM (GET_MODE (mem), data_addr); ++ set_mem_alias_set (new_mem, ea_alias_set); ++ set_mem_align (new_mem, MIN (MEM_ALIGN (mem), 128 * 8)); ++ ++ return new_mem; ++} ++ + int + spu_expand_mov (rtx * ops, enum machine_mode mode) + { +@@ -4290,9 +4630,17 @@ + } + } + if (MEM_P (ops[0])) +- return spu_split_store (ops); ++ { ++ if (MEM_ADDR_SPACE (ops[0])) ++ ops[0] = expand_ea_mem (ops[0], true); ++ return spu_split_store (ops); ++ } + if (MEM_P (ops[1])) +- return spu_split_load (ops); ++ { ++ if (MEM_ADDR_SPACE (ops[1])) ++ ops[1] = expand_ea_mem (ops[1], false); ++ return spu_split_load (ops); ++ } + + return 0; + } +@@ -6415,6 +6763,113 @@ + return d->fndecl; + } + ++/* Return the appropriate mode for a named address pointer. */ ++static enum machine_mode ++spu_addr_space_pointer_mode (addr_space_t addrspace) ++{ ++ switch (addrspace) ++ { ++ case ADDR_SPACE_GENERIC: ++ return ptr_mode; ++ case ADDR_SPACE_EA: ++ return EAmode; ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++/* Return the appropriate mode for a named address address. */ ++static enum machine_mode ++spu_addr_space_address_mode (addr_space_t addrspace) ++{ ++ switch (addrspace) ++ { ++ case ADDR_SPACE_GENERIC: ++ return Pmode; ++ case ADDR_SPACE_EA: ++ return EAmode; ++ default: ++ gcc_unreachable (); ++ } ++} ++ ++/* Determine if one named address space is a subset of another. */ ++ ++static bool ++spu_addr_space_subset_p (addr_space_t subset, addr_space_t superset) ++{ ++ gcc_assert (subset == ADDR_SPACE_GENERIC || subset == ADDR_SPACE_EA); ++ gcc_assert (superset == ADDR_SPACE_GENERIC || superset == ADDR_SPACE_EA); ++ ++ if (subset == superset) ++ return true; ++ ++ /* If we have -mno-address-space-conversion, treat __ea and generic as not ++ being subsets but instead as disjoint address spaces. */ ++ else if (!TARGET_ADDRESS_SPACE_CONVERSION) ++ return false; ++ ++ else ++ return (subset == ADDR_SPACE_GENERIC && superset == ADDR_SPACE_EA); ++} ++ ++/* Convert from one address space to another. */ ++static rtx ++spu_addr_space_convert (rtx op, tree from_type, tree to_type) ++{ ++ addr_space_t from_as = TYPE_ADDR_SPACE (TREE_TYPE (from_type)); ++ addr_space_t to_as = TYPE_ADDR_SPACE (TREE_TYPE (to_type)); ++ ++ gcc_assert (from_as == ADDR_SPACE_GENERIC || from_as == ADDR_SPACE_EA); ++ gcc_assert (to_as == ADDR_SPACE_GENERIC || to_as == ADDR_SPACE_EA); ++ ++ if (to_as == ADDR_SPACE_GENERIC && from_as == ADDR_SPACE_EA) ++ { ++ rtx result, ls; ++ ++ ls = gen_const_mem (DImode, ++ gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store")); ++ set_mem_align (ls, 128); ++ ++ result = gen_reg_rtx (Pmode); ++ ls = force_reg (Pmode, convert_modes (Pmode, DImode, ls, 1)); ++ op = force_reg (Pmode, convert_modes (Pmode, EAmode, op, 1)); ++ ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode, ++ ls, const0_rtx, Pmode, 1); ++ ++ emit_insn (gen_subsi3 (result, op, ls)); ++ ++ return result; ++ } ++ ++ else if (to_as == ADDR_SPACE_EA && from_as == ADDR_SPACE_GENERIC) ++ { ++ rtx result, ls; ++ ++ ls = gen_const_mem (DImode, ++ gen_rtx_SYMBOL_REF (Pmode, "__ea_local_store")); ++ set_mem_align (ls, 128); ++ ++ result = gen_reg_rtx (EAmode); ++ ls = force_reg (EAmode, convert_modes (EAmode, DImode, ls, 1)); ++ op = force_reg (Pmode, op); ++ ls = emit_conditional_move (ls, NE, op, const0_rtx, Pmode, ++ ls, const0_rtx, EAmode, 1); ++ op = force_reg (EAmode, convert_modes (EAmode, Pmode, op, 1)); ++ ++ if (EAmode == SImode) ++ emit_insn (gen_addsi3 (result, op, ls)); ++ else ++ emit_insn (gen_adddi3 (result, op, ls)); ++ ++ return result; ++ } ++ ++ else ++ gcc_unreachable (); ++} ++ ++ + /* Count the total number of instructions in each pipe and return the + maximum, which is used as the Minimum Iteration Interval (MII) + in the modulo scheduler. get_pipe() will return -2, -1, 0, or 1. +@@ -6507,9 +6962,46 @@ + /* .toe needs to have type @nobits. */ + if (strcmp (name, ".toe") == 0) + return SECTION_BSS; ++ /* Don't load _ea into the current address space. */ ++ if (strcmp (name, "._ea") == 0) ++ return SECTION_WRITE | SECTION_DEBUG; + return default_section_type_flags (decl, name, reloc); + } + ++/* Implement targetm.select_section. */ ++static section * ++spu_select_section (tree decl, int reloc, unsigned HOST_WIDE_INT align) ++{ ++ /* Variables and constants defined in the __ea address space ++ go into a special section named "._ea". */ ++ if (TREE_TYPE (decl) != error_mark_node ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl)) == ADDR_SPACE_EA) ++ { ++ /* We might get called with string constants, but get_named_section ++ doesn't like them as they are not DECLs. Also, we need to set ++ flags in that case. */ ++ if (!DECL_P (decl)) ++ return get_section ("._ea", SECTION_WRITE | SECTION_DEBUG, NULL); ++ ++ return get_named_section (decl, "._ea", reloc); ++ } ++ ++ return default_elf_select_section (decl, reloc, align); ++} ++ ++/* Implement targetm.unique_section. */ ++static void ++spu_unique_section (tree decl, int reloc) ++{ ++ /* We don't support unique section names in the __ea address ++ space for now. */ ++ if (TREE_TYPE (decl) != error_mark_node ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl)) != 0) ++ return; ++ ++ default_unique_section (decl, reloc); ++} ++ + /* Generate a constant or register which contains 2^SCALE. We assume + the result is valid for MODE. Currently, MODE must be V4SFmode and + SCALE must be SImode. */ +@@ -6558,5 +7050,12 @@ + } + } + ++void ++spu_function_profiler (FILE * file, int labelno) ++{ ++ fprintf (file, "# profile\n"); ++ fprintf (file, "brsl $75, _mcount\n"); ++} ++ + #include "gt-spu.h" + +Index: gcc/config/spu/spu.h +=================================================================== +--- a/src/gcc/config/spu/spu.h (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu.h (.../cell-4_4-branch) +@@ -51,7 +51,7 @@ + /* Default target_flags if no switches specified. */ + #ifndef TARGET_DEFAULT + #define TARGET_DEFAULT (MASK_ERROR_RELOC | MASK_SAFE_DMA | MASK_BRANCH_HINTS \ +- | MASK_SAFE_HINTS) ++ | MASK_SAFE_HINTS | MASK_ADDRESS_SPACE_CONVERSION) + #endif + + +@@ -395,10 +395,13 @@ + + /* Profiling */ + +-/* Nothing, for now. */ + #define FUNCTION_PROFILER(FILE, LABELNO) \ +- fprintf (FILE, "\t\n") ++ spu_function_profiler ((FILE), (LABELNO)); + ++#define NO_PROFILE_COUNTERS 1 ++ ++#define PROFILE_BEFORE_PROLOGUE 1 ++ + + /* Trampolines */ + +@@ -497,6 +500,17 @@ + #define ASM_OUTPUT_LABELREF(FILE, NAME) \ + asm_fprintf (FILE, "%U%s", default_strip_name_encoding (NAME)) + ++#define ASM_OUTPUT_SYMBOL_REF(FILE, X) \ ++ do \ ++ { \ ++ tree decl; \ ++ assemble_name (FILE, XSTR ((X), 0)); \ ++ if ((decl = SYMBOL_REF_DECL ((X))) != 0 \ ++ && TREE_CODE (decl) == VAR_DECL \ ++ && TYPE_ADDR_SPACE (TREE_TYPE (decl))) \ ++ fputs ("@ppu", FILE); \ ++ } while (0) ++ + + /* Instruction Output */ + #define REGISTER_NAMES \ +@@ -623,6 +637,13 @@ + extern GTY(()) rtx spu_compare_op1; + + ++/* Address spaces. */ ++#define ADDR_SPACE_EA 1 ++ ++/* Named address space keywords. */ ++#define TARGET_ADDR_SPACE_KEYWORDS ADDR_SPACE_KEYWORD ("__ea", ADDR_SPACE_EA) ++ ++ + /* Builtins. */ + + enum spu_builtin_type +Index: gcc/config/spu/spu-elf.h +=================================================================== +--- a/src/gcc/config/spu/spu-elf.h (.../gcc-4_4-branch) ++++ b/src/gcc/config/spu/spu-elf.h (.../cell-4_4-branch) +@@ -48,8 +48,9 @@ + object constructed before entering `main'. */ + + #undef STARTFILE_SPEC +-#define STARTFILE_SPEC "%{mstdmain: crt2.o%s} %{!mstdmain: crt1.o%s} \ +- crti.o%s crtbegin.o%s" ++#define STARTFILE_SPEC "%{mstdmain: %{pg|p:gcrt2.o%s;:crt2.o%s}}\ ++ %{!mstdmain: %{pg|p:gcrt1.o%s;:crt1.o%s}}\ ++ crti.o%s crtbegin.o%s" + + #undef ENDFILE_SPEC + #define ENDFILE_SPEC "crtend.o%s crtn.o%s" +@@ -68,8 +69,14 @@ + + #define LINK_SPEC "%{mlarge-mem: --defsym __stack=0xfffffff0 }" + +-#define LIB_SPEC \ +- "-( %{!shared:%{g*:-lg}} -lc -lgloss -)" ++#define LIB_SPEC "-( %{!shared:%{g*:-lg}} -lc -lgloss -) \ ++ %{mno-atomic-updates:-lgcc_cachemgr_nonatomic; :-lgcc_cachemgr} \ ++ %{mcache-size=128:-lgcc_cache128k; \ ++ mcache-size=64 :-lgcc_cache64k; \ ++ mcache-size=32 :-lgcc_cache32k; \ ++ mcache-size=16 :-lgcc_cache16k; \ ++ mcache-size=8 :-lgcc_cache8k; \ ++ :-lgcc_cache64k}" + + /* Turn off warnings in the assembler too. */ + #undef ASM_SPEC +Index: gcc/convert.c +=================================================================== +--- a/src/gcc/convert.c (.../gcc-4_4-branch) ++++ b/src/gcc/convert.c (.../cell-4_4-branch) +@@ -53,15 +53,35 @@ + { + case POINTER_TYPE: + case REFERENCE_TYPE: +- return fold_build1 (NOP_EXPR, type, expr); ++ { ++ /* If the pointers point to different address spaces, conversion needs ++ to be done via a ADDR_SPACE_CONVERT_EXPR instead of a NOP_EXPR. */ ++ addr_space_t to_as = TYPE_ADDR_SPACE (TREE_TYPE (type)); ++ addr_space_t from_as = TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (expr))); + ++ if (to_as == from_as) ++ return fold_build1 (NOP_EXPR, type, expr); ++ else ++ return fold_build1 (ADDR_SPACE_CONVERT_EXPR, type, expr); ++ } ++ + case INTEGER_TYPE: + case ENUMERAL_TYPE: + case BOOLEAN_TYPE: +- if (TYPE_PRECISION (TREE_TYPE (expr)) != POINTER_SIZE) +- expr = fold_build1 (NOP_EXPR, +- lang_hooks.types.type_for_size (POINTER_SIZE, 0), +- expr); ++ { ++ /* If the input precision differs from the target pointer type ++ precision, first convert the input expression to an integer type of ++ the target precision. Some targets, e.g. VMS, need several pointer ++ sizes to coexist so the latter isn't necessarily POINTER_SIZE. */ ++ unsigned int pprec = TYPE_PRECISION (type); ++ unsigned int eprec = TYPE_PRECISION (TREE_TYPE (expr)); ++ ++ if (eprec != pprec) ++ expr = fold_build1 (NOP_EXPR, ++ lang_hooks.types.type_for_size (pprec, 0), ++ expr); ++ } ++ + return fold_build1 (CONVERT_EXPR, type, expr); + + +@@ -488,10 +508,13 @@ + if (integer_zerop (expr)) + return build_int_cst (type, 0); + +- /* Convert to an unsigned integer of the correct width first, +- and from there widen/truncate to the required type. */ ++ /* Convert to an unsigned integer of the correct width first, and from ++ there widen/truncate to the required type. Some targets support the ++ coexistence of multiple valid pointer sizes, so fetch the one we need ++ from the type. */ + expr = fold_build1 (CONVERT_EXPR, +- lang_hooks.types.type_for_size (POINTER_SIZE, 0), ++ lang_hooks.types.type_for_size ++ (TYPE_PRECISION (intype), 0), + expr); + return fold_convert (type, expr); + +Index: gcc/reload1.c +=================================================================== +--- a/src/gcc/reload1.c (.../gcc-4_4-branch) ++++ b/src/gcc/reload1.c (.../cell-4_4-branch) +@@ -999,8 +999,9 @@ + { + rtx x = eliminate_regs (reg_equiv_memory_loc[i], 0, NULL_RTX); + +- if (strict_memory_address_p (GET_MODE (regno_reg_rtx[i]), +- XEXP (x, 0))) ++ if (strict_memory_address_addr_space_p ++ (GET_MODE (regno_reg_rtx[i]), XEXP (x, 0), ++ MEM_ADDR_SPACE (x))) + reg_equiv_mem[i] = x, reg_equiv_address[i] = 0; + else if (CONSTANT_P (XEXP (x, 0)) + || (REG_P (XEXP (x, 0)) +@@ -2610,7 +2611,7 @@ + && reg_equiv_constant[REGNO (new0)] != 0) + new0 = reg_equiv_constant[REGNO (new0)]; + +- new_rtx = form_sum (new0, new1); ++ new_rtx = form_sum (GET_MODE (x), new0, new1); + + /* As above, if we are not inside a MEM we do not want to + turn a PLUS into something else. We might try to do so here +Index: ChangeLog.cell +=================================================================== +--- a/src/ChangeLog.cell (.../gcc-4_4-branch) ++++ b/src/ChangeLog.cell (.../cell-4_4-branch) +@@ -0,0 +1,651 @@ ++2010-05-17 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 159486. ++ ++2010-04-07 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 158036. ++ ++2009-12-07 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-05-19 Andrew Pinski ++ ++ * c-typeck.c (build_binary_op): Allow % on integal vectors. ++ * doc/extend.texi (Vector Extension): Document that % is allowed too. ++ ++gcc/cp/ ++ 2009-05-19 Andrew Pinski ++ ++ * typeck.c (build_binary_op): Allow % on integal vectors. ++ ++gcc/testsuite/ ++ 2009-05-19 Andrew Pinski ++ ++ * gcc.dg/vector-4.c: New testcase. ++ * gcc.dg/simd-1b.c: % is now allowed for integer vectors. ++ * g++.dg/ext/vector16.C: New testcase. ++ ++2009-12-07 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-04-22 Andrew Pinski ++ ++ PR C/31499 ++ * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE ++ and RECORD_TYPE/UNION_TYPE. When outputing the actual element and the ++ value is a VECTOR_CST, the element type is the element type of the ++ vector. ++ ++gcc/testsuite/ ++ 2009-04-22 Andrew Pinski ++ ++ PR C/31499 ++ * gcc.dg/vector-init-1.c: New testcase. ++ * gcc.dg/vector-init-2.c: New testcase. ++ ++2009-12-07 Ulrich Weigand ++ ++ Update to gcc-4_4-branch revision 155038. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-12-03 Ken Werner ++ ++ * config/spu/spu-elf.h (STARTFILE_SPEC): Add support for gprof ++ startup files. ++ * config/spu/spu-protos.h (spu_function_profiler): Add prototype. ++ * config/spu/spu.c (spu_function_profiler): New function. ++ * config/spu/spu.h (FUNCTION_PROFILER): Invoke ++ spu_function_profiler. ++ (NO_PROFILE_COUNTERS): Define. ++ (PROFILE_BEFORE_PROLOGUE): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-12-02 Ulrich Weigand ++ ++ PR middle-end/42224 ++ * tree.h (int_or_pointer_precision): Remove. ++ * tree.c (int_or_pointer_precision): Remove. ++ (integer_pow2p): Use TYPE_PRECISION instead. ++ (tree_log2): Likewise. ++ (tree_floor_log2): Likewise. ++ (signed_or_unsigned_type_for): Likewise. ++ * fold-const.c (fit_double_type): Likewise. ++ * varasm.c (initializer_constant_valid_p): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-17 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * tree-ssa-address.c (move_hint_to_base): Use void pointer to ++ TYPE's address space instead of pointer to TYPE. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-17 Ulrich Weigand ++ ++ * reload.c (find_reloads_address): Fix typo. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-11-02 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * tree-flow.h (rewrite_use_address): Add BASE_HINT argument. ++ * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint ++ to create_mem_ref. ++ * tree-ssa-address.c (move_hint_to_base): New function. ++ (most_expensive_mult_to_index): Add TYPE argument. Use mode and ++ address space associated with TYPE. ++ (addr_to_parts): Add TYPE and BASE_HINT arguments. Pass TYPE to ++ most_expensive_mult_to_index. Call move_hint_to_base. ++ (create_mem_ref): Add BASE_HINT argument. Pass BASE_HINT and ++ TYPE to addr_to_parts. ++ ++gcc/testsuite/ ++ 2009-11-02 Ulrich Weigand ++ ++ PR tree-optimization/41857 ++ * gcc.target/spu/ea/pr41857.c: New file. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/testsuite/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * gcc.target/spu/ea/ea.exp: New file. ++ * gcc.target/spu/ea/cache1.c: Likewise. ++ * gcc.target/spu/ea/cast1.c: Likewise. ++ * gcc.target/spu/ea/cast2.c: Likewise. ++ * gcc.target/spu/ea/compile1.c: Likewise. ++ * gcc.target/spu/ea/compile2.c: Likewise. ++ * gcc.target/spu/ea/cppdefine.c: Likewise. ++ * gcc.target/spu/ea/errors1.c: Likewise. ++ * gcc.target/spu/ea/errors2.c: Likewise. ++ * gcc.target/spu/ea/execute1.c: Likewise. ++ * gcc.target/spu/ea/execute2.c: Likewise. ++ * gcc.target/spu/ea/execute3.c: Likewise. ++ * gcc.target/spu/ea/ops1.c: Likewise. ++ * gcc.target/spu/ea/ops2.c: Likewise. ++ * gcc.target/spu/ea/options1.c: Likewise. ++ * gcc.target/spu/ea/test-sizes.c: Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers. ++ * config/spu/spu_cache.h: New file. ++ ++ * config/spu/cachemgr.c: New file. ++ * config/spu/cache.S: New file. ++ ++ * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define. ++ (ADDR_SPACE_EA): Define. ++ (TARGET_ADDR_SPACE_KEYWORDS): Define. ++ * config/spu/spu.c (EAmode): New macro. ++ (TARGET_ADDR_SPACE_POINTER_MODE): Define. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. ++ (TARGET_ADDR_SPACE_SUBSET_P): Likewise. ++ (TARGET_ADDR_SPACE_CONVERT): Likewise. ++ (TARGET_ASM_SELECT_SECTION): Likewise. ++ (TARGET_ASM_UNIQUE_SECTION): Likewise. ++ (TARGET_ASM_UNALIGNED_SI_OP): Likewise. ++ (TARGET_ASM_ALIGNED_DI_OP): Likewise. ++ (ea_symbol_ref): New function. ++ (spu_legitimate_constant_p): Handle __ea qualified addresses. ++ (spu_legitimate_address): Likewise. ++ (spu_addr_space_legitimate_address_p): New function. ++ (spu_addr_space_legitimize_address): Likewise. ++ (cache_fetch): New global. ++ (cache_fetch_dirty): Likewise. ++ (ea_alias_set): Likewise. ++ (ea_load_store): New function. ++ (ea_load_store_inline): Likewise. ++ (expand_ea_mem): Likewise. ++ (spu_expand_mov): Handle __ea qualified memory references. ++ (spu_addr_space_pointer_mode): New function. ++ (spu_addr_space_address_mode): Likewise. ++ (spu_addr_space_subset_p): Likewise. ++ (spu_addr_space_convert): Likewise. ++ (spu_section_type_flags): Handle "._ea" section. ++ (spu_select_section): New function. ++ (spu_unique_section): Likewise. ++ * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__ ++ and __EA64__ predefined macros. ++ * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and ++ -matomic-updates switches. ++ ++ * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define. ++ (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a, ++ libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a, ++ libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a. ++ ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target. ++ ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o, ++ $(T)cache128k.o): Likewise. ++ ($(T)libgcc_%.a): Likewise. ++ ++ * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION. ++ * config/spu/spu.opt (-mea32/-mea64): Add switches. ++ (-maddress-space-conversion): Likewise. ++ (-mcache-size=): Likewise. ++ (-matomic-updates): Likewise. ++ * doc/invoke.texi (-mea32/-mea64): Document. ++ (-maddress-space-conversion): Likewise. ++ (-mcache-size=): Likewise. ++ (-matomic-updates): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document. ++ ++ * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is ++ defined, add the named address space keywords. ++ (c_addr_space_name): New function. ++ (complete_array_type): Preserve named address space. ++ (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode ++ instead of targetm.valid_pointer_mode. ++ ++ * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15, ++ RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE. ++ (ADDR_SPACE_KEYWORD): New macro. ++ (c_addr_space_name): Add prototype. ++ ++ * c-tree.h (struct c_declspecs): Add address_space member. ++ (declspecs_add_addrspace): Add prototype. ++ ++ * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces. ++ ++ * c-parser.c (c_parse_init): Add assertion. ++ (typedef enum c_id_kind): Add C_ID_ADDRSPACE. ++ (c_lex_one_token): Handle address space keywords. ++ (c_token_starts_typename): Likewise. ++ (c_token_starts_declspecs): Likewise. ++ (c_parser_declspecs): Likewise. ++ (c_parser_postfix_expression_after_paren_type): Diagnose compound ++ literal within function qualified with named address space. ++ ++ * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named ++ address space qualifiers. ++ (shadow_tag_warned): Warn about useless address space qualifiers. ++ (quals_from_declspecs): Handle address space qualifiers. ++ (grokdeclarator): Likewise. ++ (build_null_declspecs): Likewise. ++ (declspecs_add_addrspace): New function. ++ ++ * c-typeck.c (addr_space_superset): New function. ++ (qualify_type): Handle named address spaces. ++ (composite_type): Likewise. ++ (common_pointer_type): Likewise. ++ (comp_target_types): Likewise. ++ (build_conditional_expr): Likewise. ++ (build_c_cast): Likewise. ++ (convert_for_assignment): Likewise. ++ (build_binary_op): Likewise. ++ (pointer_diff): Handle named address spaces. Use intermediate ++ integer type of sufficient size if required. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. ++ ++ * target.h (struct target_def): Add pointer_mode, address_mode, ++ and valid_pointer_mode to addr_space substructure. ++ * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define. ++ (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. ++ (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. ++ (TARGET_ADDR_SPACE_HOOKS): Add them. ++ * targhooks.c (target_default_pointer_address_modes_p): New function. ++ * target.h (target_default_pointer_address_modes_p): Add prototype. ++ * targhooks.c (default_addr_space_pointer_mode): New function. ++ (default_addr_space_address_mode): Likewise. ++ (default_addr_space_valid_pointer_mode): Likewise. ++ * targhooks.h (default_addr_space_pointer_mode): Add prototype. ++ (default_addr_space_address_mode): Likewise. ++ (default_addr_space_valid_pointer_mode): Likewise. ++ * output.h (default_valid_pointer_mode): Move to ... ++ * targhooks.h (default_valid_pointer_mode): ... here. ++ * varasm.c (default_valid_pointer_mode): Move to ... ++ * targhooks.c (default_valid_pointer_mode): ... here. ++ ++ * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode ++ instead of targetm.valid_pointer_mode. ++ ++ * fold-const.c (fit_double_type): Use int_or_pointer_precision. ++ * tree.c (integer_pow2p): Likewise. ++ (tree_log2): Likewise. ++ (tree_floor_log2): Likewise. ++ (signed_or_unsigned_type_for): Support pointer type of different size. ++ (int_or_pointer_precision): New function. ++ * tree.h (int_or_pointer_precision): Add prototype. ++ * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types. ++ * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of ++ incoming pointer type instead of POINTER_SIZE. ++ ++ * tree.c (build_pointer_type): Use appropriate pointer mode ++ instead of ptr_mode. ++ (build_reference_type): Likewise. ++ * expr.c (store_expr): Likewise. ++ (expand_expr_addr_expr): Likewise. ++ * cfgexpand.c (expand_debug_expr): Likewise. ++ ++ * auto-inc-dec.c: Include "target.h". ++ (try_merge): Use appropriate address mode instead of Pmode. ++ (find_inc): Likewise. ++ * combine.c (find_split_point): Likewise. ++ * cselib.c (cselib_record_sets): Likewise. ++ * dse.c (replace_inc_dec): Likewise. ++ (canon_address): Likewise. ++ (count_uses): Likewise. ++ (add_uses): Likewise. ++ (add_stores): Likewise. ++ * emit-rtl.c: Include "target.h". ++ (adjust_address_1): Use appropriate address mode instead of Pmode. ++ (offset_address): Likewise. ++ * explow.c (break_out_memory_refs): Likewise. ++ (memory_address_addr_space): Likewise. ++ (promote_mode): Likewise. ++ * expr.c (move_by_pieces): Likewise. ++ (emit_block_move_via_loop): Likewise. ++ (store_by_pieces): Likewise. ++ (store_by_pieces_1): Likewise. ++ (expand_assignment): Likewise. ++ (store_constructor): Likewise. ++ (expand_expr_addr_expr): Likewise. ++ (expand_expr_real_1): Likewise. ++ * cfgexpand.c (expand_debug_expr): Likewise. ++ * ifcvt.c (noce_try_cmove_arith): Likewise. ++ * regrename.c (kill_autoinc_value): Likewise. ++ * regmove.c (try_auto_increment): Likewise. ++ * reload.c (find_reloads): Likewise. ++ (find_reloads_address): Likewise. ++ (find_reloads_address_1): Likewise. ++ * sched-deps.c: Include "target.h". ++ (sched_analyze_1): Use appropriate address mode instead of Pmode. ++ (sched_analyze_2): Likewise. ++ * sel-sched-dump.c: Include "target.h". ++ (debug_mem_addr_value): Use appropriate address mode instead of Pmode. ++ * stor-layout.c (layout_type): Likewise. ++ * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. ++ (multiplier_allowed_in_address_p): Likewise. ++ (get_address_cost): Likewise. ++ * varasm.c (make_decl_rtl): Likewise. ++ ++ * expr.c (expand_assignment): Always convert offsets to appropriate ++ address mode. ++ (store_expr): Likewise. ++ (store_constructor): Likewise. ++ (expand_expr_real_1): Likewise. ++ ++ * reload.h (form_sum): Add MODE argument. ++ * reload.c (form_sum): Add MODE argument, use it instead of Pmode. ++ Update recursive calls. ++ (subst_indexed_address): Update calls to form_sum. ++ ++ * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument. ++ * tree-ssa-address.c: Include "target.h". ++ (templates): Replace by ... ++ (mem_addr_template_list): ... this new vector. ++ (TEMPL_IDX): Handle address space numbers. ++ (gen_addr_rtx): Add address mode argument, use it instead of Pmode. ++ (addr_for_mem_ref): Add ADDRSPACE argument. Use per-address-space ++ instead of global cache. Update call to gen_addr_rtx. ++ (valid_mem_ref_p): Update call to addr_for_mem_ref. ++ * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref. ++ ++ * rtl.h (convert_memory_address_addr_space): Add prototype. ++ (convert_memory_address): Define as macro. ++ * explow.c (convert_memory_address): Rename to ... ++ (convert_memory_address_addr_space): ... this. Add ADDRSPACE argument. ++ Use appropriate pointer and address modes instead of ptr_mode / Pmode. ++ Update recursive calls. ++ (memory_address_addr_space): Call convert_memory_address_addr_space. ++ * expmed.c (make_tree): Likewise. ++ * expr.c (expand_assignment): Likewise. ++ (expand_expr_addr_expr_1): Likewise. Also, add ADDRSPACE argument. ++ (expand_expr_addr_expr): Likewise. Also, update call. ++ ++ * alias.c (find_base_value): Guard pointer size optimizations. ++ (find_base_term): Likewise. ++ * rtlanal.c (nonzero_bits1): Likewise. ++ (num_sign_bit_copies1): Likewise. ++ * simplify-rtx.c (simplify_unary_operation_1): Likewise. ++ ++ * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency. ++ (emit-rtl.o): Likewise. ++ (auto-inc-dec.o): Likewise. ++ (sched-deps.o): Likewise. ++ ++ 2009-08-24 Olivier Hainque ++ ++ * convert.c (convert_to_integer): Don't assume an input pointer is ++ POINTER_SIZE wide. Fetch from the type instead. ++ ++ 2009-07-27 Olivier Hainque ++ Douglas B Rupp ++ ++ * convert.c (convert_to_pointer): Don't assume the target ++ pointer type is POINTER_SIZE long. Fetch its precision instead. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-10-26 Ben Elliston ++ Michael Meissner ++ Ulrich Weigand ++ ++ * doc/extend.texi (Named Address Spaces): New section. ++ * coretypes.h (addr_space_t): New type. ++ (ADDR_SPACE_GENERIC): New define. ++ (ADDR_SPACE_GENERIC_P): New macro. ++ ++ * doc/tm.texi (Named Address Spaces): New section. ++ (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document. ++ (TARGET_ADDR_SPACE_SUBSET_P): Document. ++ (TARGET_ADDR_SPACE_CONVERT): Document. ++ * target.h (struct gcc_target): Add addr_space substructure. ++ * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define. ++ (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. ++ (TARGET_ADDR_SPACE_SUBSET_P): Likewise. ++ (TARGET_ADDR_SPACE_CONVERT): Likewise. ++ (TARGET_ADDR_SPACE_HOOKS): Likewise. ++ (TARGET_INITIALIZER): Initialize addr_space hooks. ++ * targhooks.c (default_addr_space_legitimate_address_p): New function. ++ (default_addr_space_legitimize_address): Likewise. ++ (default_addr_space_subset_p): Likewise. ++ (default_addr_space_convert): Likewise. ++ * targhooks.h (default_addr_space_legitimate_address_p): Add prototype. ++ (default_addr_space_legitimize_address): Likewise. ++ (default_addr_space_subset_p): Likewise. ++ (default_addr_space_convert): Likewise. ++ ++ * doc/rtl.texi (MEM_ADDR_SPACE): Document. ++ * rtl.h (mem_attrs): Add ADDRSPACE memory attribute. ++ (MEM_ADDR_SPACE): New macro. ++ * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set ++ address space memory attribute. ++ (mem_attrs_htab_hash): Handle address space memory attribute. ++ (mem_attrs_htab_eq): Likewise. ++ (set_mem_attributes_minus_bitpos): Likewise. ++ (set_mem_attrs_from_reg): Likewise. ++ (set_mem_alias_set): Likewise. ++ (set_mem_align): Likewise. ++ (set_mem_expr): Likewise. ++ (set_mem_offset): Likewise. ++ (set_mem_size): Likewise. ++ (adjust_address_1): Likewise. ++ (offset_address): Likewise. ++ (widen_memoy_address): Likewise. ++ (get_spill_slot_decl): Likewise. ++ (set_mem_attrs_for_spill): Likewise. ++ (set_mem_addr_space): New function. ++ * emit-rtl.h (set_mem_addr_space): Add prototype. ++ * print-rtl.c (print_rtx): Print address space memory attribute. ++ * expr.c (expand_expr_real_1): Set address space memory attribute ++ of generated MEM RTXes as appropriate. ++ * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. ++ ++ * tree.h (struct tree_base): Add address_space bitfield. Reduce ++ size of "spare" bitfield. ++ (TYPE_ADDR_SPACE): New macro. ++ (ENCODE_QUAL_ADDR_SPACE): Likewise. ++ (DECODE_QUAL_ADDR_SPACE): Likewise. ++ (CLEAR_QUAL_ADDR_SPACE): Likewise. ++ (KEEP_QUAL_ADDR_SPACE): Likewise. ++ (TYPE_QUALS): Encode type address space. ++ (TYPE_QUALS_NO_ADDR_SPACE): New macro. ++ * tree.c (set_type_quals): Set type address space. ++ (build_array_type): Inherit array address space from element type. ++ * print-tree.c (print_node_brief): Print type address space. ++ (print_node): Likewise. ++ * tree-pretty-print.c (dump_generic_node): Likewise. ++ ++ * explow.c (memory_address): Rename to ... ++ (memory_address_addr_space): ... this. Add ADDRSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * recog.c (memory_address_p): Rename to ... ++ (memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ (offsettable_address_p): Rename to ... ++ (offsettable_address_addr_space_p): ... this. Add ADDRSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * reload.c (strict_memory_address_p): Rename to ... ++ (strict_memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ (maybe_memory_address_p): Rename to ... ++ (maybe_memory_address_addr_space_p): ... this. Add ADDSPACE argument. ++ Use address-space aware variants of memory address routines. ++ * expr.h (memory_address_addr_space): Add prototype. ++ (memory_address): Define as macro. ++ * recog.h (memory_address_addr_space_p): Add prototype. ++ (memory_address_p): Define as macro. ++ (offsettable_address_addr_space_p): Add prototype. ++ (offsettable_address_p): Define as macro. ++ (strict_memory_address_addr_space_p): Add prototype. ++ (strict_memory_address_p): Define as macro. ++ ++ * combine.c (find_split_point): Use address-space aware variants ++ of memory address routines. ++ * emit-rtl.c (operand_subword): Likewise. ++ (change_address_1): Likewise. ++ (adjust_address_1): Likewise. ++ (offset_address): Likewise. ++ * expr.c (emit_move_insn): Likewise. ++ (expand_expr_real_1): Likewise. ++ * recog.c (verify_changes): Likewise. ++ (general_operand): Likewise. ++ (offsettable_memref_p): Likewise. ++ (offsettable_nonstrict_memref_p): Likewise. ++ (constrain_operands): Likewise. ++ * reload.c (get_secondary_mem): Likewise. ++ (find_reloads_toplev): Likewise. ++ (find_reloads_address): Likewise. ++ (find_reloads_subreg_address): Likewise. ++ * reload1.c (reload): Likewise. ++ * rtlhooks.c (gen_lowpart_if_possible): Likewise. ++ * rtl.h (address_cost): Add ADDRSPACE argument. ++ * rtlanal.c (address_cost): Add ADDRSPACE argument. Use address-space ++ aware variant of memory address routines. ++ * tree-ssa-loop-ivopts.c (computation_cost): Update address_cost call. ++ * fwprop.c (should_replace_address): Add ADDRSPACE argument. ++ Use address-space aware variant of memory address routines. ++ (propagate_rtx_1): Update call to should_replace_address. ++ * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE ++ argument. ++ * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add ++ ADDRSPACE argument. Use per-address-space instead of global cache. ++ Use address-space aware variant of memory address routines. ++ (get_address_cost): Likewise. ++ (get_computation_cost_at): Update calls. ++ * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument. ++ Use address-space aware variant of memory address routines. ++ (create_mem_ref_raw): Update call to valid_mem_ref_p. ++ (most_expensive_mult_to_index): Update call to ++ multiplier_allowed_in_address_p. ++ ++ * dwarf2out.c (modified_type_die): Output DW_AT_address_class ++ attribute to indicate named address spaces. ++ ++ * varasm.c (get_variable_section): DECLs in named address spaces ++ cannot be "common". ++ ++ * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS ++ for addresses in a non-generic address space. ++ ++ * expr.c (emit_block_move_hints): Do not use libcalls for ++ memory in non-generic address spaces. ++ (clear_storage_hints): Likewise. ++ (expand_assignment): Likewise. ++ ++ * fold-const.c (operand_equal_p): Expressions refering to different ++ address spaces are not equivalent. ++ ++ * rtl.c (rtx_equal_p_cb): MEMs refering to different address ++ spaces are not equivalent. ++ (rtx_equal_p): Likewise. ++ * cse.c (exp_equiv_p): Likewise. ++ * jump.c (rtx_renumbered_equal_p): Likewise. ++ * reload.c (operands_match_p): Likewise. ++ ++ * alias.c (nonoverlapping_memrefs_p): MEMs refering to different ++ address spaces may alias. ++ (true_dependence): Likewise. ++ (canon_true_dependence): Likewise. ++ (write_dependence_p): Likewise. ++ ++ * dse.c (canon_address): Handle named address spaces. ++ * ifcvt.c (noce_try_cmove_arith): Likewise. ++ ++ * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code. ++ * expr.c (expand_expr_real_1): Expand ADDR_SPACE_CONVERT_EXPR. ++ * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR ++ to handle conversions between different address spaces. ++ * fold-const.c (fold_convert_loc): Likewise. ++ (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR. ++ * tree-pretty-print.c (dump_generic_node): Likewise. ++ * gimple-pretty-print.c (dump_unary_rhs): Likewise. ++ * tree-cfg.c (verify_gimple_assign_unary): Likewise. ++ * tree-inline.c (estimate_operator_cost): Likewise. ++ * tree-ssa.c (useless_type_conversion_p): Conversions between pointers ++ to different address spaces are not useless. ++ (useless_type_conversion_p_1): Likewise. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++gcc/ ++ 2009-08-14 Ulrich Weigand ++ ++ * c-lex.c (c_lex_with_flags): Increase size of local variable ++ to avoid memory clobber. ++ ++2009-12-04 Ulrich Weigand ++ ++ Backport from mainline: ++ ++libgfortran/ ++ 2009-04-17 Ulrich Weigand ++ ++ * configure.ac: Test for -ffunction-sections -fdata-sections and ++ set SECTION_FLAGS accordingly. ++ * configure: Regenerate. ++ ++ * Makefile.am: Add SECTION_FLAGS to AM_CFLAGS. ++ * Makefile.in: Regenerate. ++ ++2009-12-04 Ulrich Weigand ++ ++ * Created "cell-4_4-branch". +Index: libgfortran/configure +=================================================================== +--- a/src/libgfortran/configure (.../gcc-4_4-branch) ++++ b/src/libgfortran/configure (.../cell-4_4-branch) +@@ -457,7 +457,7 @@ + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir onestep_TRUE onestep_FALSE onestep host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AM_FCFLAGS AM_CFLAGS CFLAGS LIBGFOR_USE_SYMVER_TRUE LIBGFOR_USE_SYMVER_FALSE AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static FC FCFLAGS LDFLAGS ac_ct_FC extra_ldflags_libgfortran FPU_HOST_HEADER LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_libsubdir build_subdir host_subdir target_subdir onestep_TRUE onestep_FALSE onestep host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT multi_basedir toolexecdir toolexeclibdir CC ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AM_FCFLAGS AM_CFLAGS CFLAGS LIBGFOR_USE_SYMVER_TRUE LIBGFOR_USE_SYMVER_FALSE SECTION_FLAGS AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB LIBTOOL SED EGREP FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 CPP CPPFLAGS enable_shared enable_static FC FCFLAGS LDFLAGS ac_ct_FC extra_ldflags_libgfortran FPU_HOST_HEADER LIBOBJS LTLIBOBJS' + ac_subst_files='' + ac_pwd=`pwd` + +@@ -3500,6 +3500,73 @@ + fi + + ++# Figure out whether the compiler supports "-ffunction-sections -fdata-sections", ++# similarly to how libstdc++ does it ++ac_test_CFLAGS="${CFLAGS+set}" ++ac_save_CFLAGS="$CFLAGS" ++ ++# Check for -ffunction-sections -fdata-sections ++echo "$as_me:$LINENO: checking for gcc that supports -ffunction-sections -fdata-sections" >&5 ++echo $ECHO_N "checking for gcc that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6 ++CFLAGS='-Werror -ffunction-sections -fdata-sections' ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++int foo; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_fdsections=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_fdsections=no ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS="$ac_save_CFLAGS" ++else ++ # this is the suspicious part ++ CFLAGS="" ++fi ++if test x"$ac_fdsections" = x"yes"; then ++ SECTION_FLAGS='-ffunction-sections -fdata-sections' ++fi ++echo "$as_me:$LINENO: result: $ac_fdsections" >&5 ++echo "${ECHO_T}$ac_fdsections" >&6 ++ ++ + # Find other programs we need. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +@@ -4287,13 +4354,13 @@ + else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:4290: $ac_compile\"" >&5) ++ (eval echo "\"\$as_me:4357: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 +- (eval echo "\"\$as_me:4293: $NM \\\"conftest.$ac_objext\\\"\"" >&5) ++ (eval echo "\"\$as_me:4360: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 +- (eval echo "\"\$as_me:4296: output\"" >&5) ++ (eval echo "\"\$as_me:4363: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" +@@ -5450,7 +5517,7 @@ + ;; + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 5453 "configure"' > conftest.$ac_ext ++ echo '#line 5520 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -7239,11 +7306,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7242: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:7309: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:7246: \$? = $ac_status" >&5 ++ echo "$as_me:7313: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -7578,11 +7645,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7581: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:7648: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:7585: \$? = $ac_status" >&5 ++ echo "$as_me:7652: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -7683,11 +7750,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7686: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:7753: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:7690: \$? = $ac_status" >&5 ++ echo "$as_me:7757: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -7738,11 +7805,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:7741: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:7808: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:7745: \$? = $ac_status" >&5 ++ echo "$as_me:7812: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -10605,7 +10672,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10608 "configure" ++#line 10675 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10701,7 +10768,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10704 "configure" ++#line 10771 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11027,7 +11094,7 @@ + + + # Provide some information about the compiler. +-echo "$as_me:11030:" \ ++echo "$as_me:11097:" \ + "checking for Fortran compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` + { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +@@ -11263,7 +11330,7 @@ + + + # Provide some information about the compiler. +-echo "$as_me:11266:" \ ++echo "$as_me:11333:" \ + "checking for Fortran compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` + { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +@@ -12003,11 +12070,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12006: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:12073: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:12010: \$? = $ac_status" >&5 ++ echo "$as_me:12077: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -12102,11 +12169,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12105: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:12172: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:12109: \$? = $ac_status" >&5 ++ echo "$as_me:12176: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -12154,11 +12221,11 @@ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12157: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:12224: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:12161: \$? = $ac_status" >&5 ++ echo "$as_me:12228: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -35350,6 +35417,7 @@ + s,@CFLAGS@,$CFLAGS,;t t + s,@LIBGFOR_USE_SYMVER_TRUE@,$LIBGFOR_USE_SYMVER_TRUE,;t t + s,@LIBGFOR_USE_SYMVER_FALSE@,$LIBGFOR_USE_SYMVER_FALSE,;t t ++s,@SECTION_FLAGS@,$SECTION_FLAGS,;t t + s,@AS@,$AS,;t t + s,@ac_ct_AS@,$ac_ct_AS,;t t + s,@AR@,$AR,;t t +Index: libgfortran/Makefile.in +=================================================================== +--- a/src/libgfortran/Makefile.in (.../gcc-4_4-branch) ++++ b/src/libgfortran/Makefile.in (.../cell-4_4-branch) +@@ -300,7 +300,7 @@ + AMTAR = @AMTAR@ + + # Fortran rules for complex multiplication and division +-AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules ++AM_CFLAGS = @AM_CFLAGS@ -fcx-fortran-rules $(SECTION_FLAGS) + AM_FCFLAGS = @AM_FCFLAGS@ + AR = @AR@ + AS = @AS@ +@@ -360,6 +360,9 @@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + RANLIB = @RANLIB@ ++ ++# Use -ffunction-sections -fdata-sections if supported by the compiler ++SECTION_FLAGS = @SECTION_FLAGS@ + SED = @SED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ +Index: libgfortran/configure.ac +=================================================================== +--- a/src/libgfortran/configure.ac (.../gcc-4_4-branch) ++++ b/src/libgfortran/configure.ac (.../cell-4_4-branch) +@@ -149,6 +149,27 @@ + AC_MSG_RESULT($gfortran_use_symver) + AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes]) + ++# Figure out whether the compiler supports "-ffunction-sections -fdata-sections", ++# similarly to how libstdc++ does it ++ac_test_CFLAGS="${CFLAGS+set}" ++ac_save_CFLAGS="$CFLAGS" ++ ++# Check for -ffunction-sections -fdata-sections ++AC_MSG_CHECKING([for gcc that supports -ffunction-sections -fdata-sections]) ++CFLAGS='-Werror -ffunction-sections -fdata-sections' ++AC_TRY_COMPILE(, [int foo;], [ac_fdsections=yes], [ac_fdsections=no]) ++if test "$ac_test_CFLAGS" = set; then ++ CFLAGS="$ac_save_CFLAGS" ++else ++ # this is the suspicious part ++ CFLAGS="" ++fi ++if test x"$ac_fdsections" = x"yes"; then ++ SECTION_FLAGS='-ffunction-sections -fdata-sections' ++fi ++AC_MSG_RESULT($ac_fdsections) ++AC_SUBST(SECTION_FLAGS) ++ + # Find other programs we need. + AC_CHECK_TOOL(AS, as) + AC_CHECK_TOOL(AR, ar) +Index: libgfortran/Makefile.am +=================================================================== +--- a/src/libgfortran/Makefile.am (.../gcc-4_4-branch) ++++ b/src/libgfortran/Makefile.am (.../cell-4_4-branch) +@@ -33,6 +33,10 @@ + # Fortran rules for complex multiplication and division + AM_CFLAGS += -fcx-fortran-rules + ++# Use -ffunction-sections -fdata-sections if supported by the compiler ++SECTION_FLAGS = @SECTION_FLAGS@ ++AM_CFLAGS += $(SECTION_FLAGS) ++ + gfor_io_src= \ + io/close.c \ + io/file_pos.c \ + +Property changes on: . +___________________________________________________________________ +Added: svnmerge-integrated + + /branches/gcc-4_4-branch:1-159500 + --- gcc-4.4-4.4.7.orig/debian/patches/config-ml.diff +++ gcc-4.4-4.4.7/debian/patches/config-ml.diff @@ -0,0 +1,79 @@ +# DP: disable some biarch libraries for biarch builds + +--- + config-ml.in | 45 ++++++++++++++++++++++++++++++++++++++++++++- + 1 files changed, 44 insertions(+), 1 deletions(-) + +--- a/src/config-ml.in ++++ b/src/config-ml.in +@@ -306,6 +306,11 @@ arm-*-*) + done + fi + ;; ++i[34567]86-*-*) ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=x86_64-linux-gnu" ++ esac ++ ;; + m68*-*-*) + if [ x$enable_softfloat = xno ] + then +@@ -477,9 +482,36 @@ powerpc*-*-* | rs6000*-*-*) + esac + done + fi ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=powerpc64-linux-gnu" ++ esac ++ ;; ++s390-*-*) ++ case " $multidirs " in ++ *" 64 "*) ac_configure_args="${ac_configure_args} --host=s390x-linux-gnu" ++ esac + ;; + 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 "|" 64 " ) ++ 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'` +@@ -857,9 +889,20 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then + 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} ;; ++ *GCJ=*) 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_srcdiroption} ; then + true + else + exit 1 --- gcc-4.4-4.4.7.orig/debian/patches/cross-biarch.diff +++ gcc-4.4-4.4.7/debian/patches/cross-biarch.diff @@ -0,0 +1,79 @@ +# DP: Fix the location of target's libs in cross-build for biarch + +--- + +--- a/src/config-ml.in 2010-08-24 01:48:38.000000000 -0400 ++++ b/src/config-ml.in 2010-08-24 03:56:12.000000000 -0400 +@@ -540,7 +540,12 @@ + 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 (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}" \ +@@ -791,6 +796,13 @@ + GCJ_=$GCJ' ' + GFORTRAN_=$GFORTRAN' ' + else ++ if [ "${ml_dir}" = "." ]; then ++ FILTER_="s!X\\(.*\\)!\\1!p" ++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 ++ FILTER_="s!X\\(.*\\)/!\\132/!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'` +@@ -799,6 +811,8 @@ + 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"`' ' ;; + *) +@@ -811,6 +825,8 @@ + 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"`' ' ;; + *) +@@ -823,6 +839,8 @@ + 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"`' ' ;; + *) +@@ -835,6 +853,8 @@ + case $arg in + -[BIL]"${ML_POPDIR}"/*) + GCJ_="${GCJ_}"`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/) ++ GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; + "${ML_POPDIR}"/*) + GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; + *) +@@ -847,6 +867,8 @@ + 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"`' ' ;; + *) --- gcc-4.4-4.4.7.orig/debian/patches/cross-fixes.diff +++ gcc-4.4-4.4.7/debian/patches/cross-fixes.diff @@ -0,0 +1,90 @@ +# DP: Fix the linker error when creating an xcc for ia64 + +--- + gcc/config/alpha/linux-unwind.h | 3 +++ + 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(-) + +--- a/src/gcc/config/alpha/linux-unwind.h ++++ b/src/gcc/config/alpha/linux-unwind.h +@@ -29,6 +29,7 @@ Boston, MA 02110-1301, USA. */ + /* 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 + +@@ -80,3 +81,5 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + fs->retaddr_column = 64; + return _URC_NO_REASON; + } ++ ++#endif +--- a/src/gcc/config/ia64/fde-glibc.c ++++ b/src/gcc/config/ia64/fde-glibc.c +@@ -31,6 +31,7 @@ + #ifndef _GNU_SOURCE + #define _GNU_SOURCE 1 + #endif ++#ifndef inhibit_libc + #include "config.h" + #include + #include +@@ -162,3 +163,5 @@ _Unwind_FindTableEntry (void *pc, unsigned long *segment_base, + + return data.ret; + } ++ ++#endif +--- a/src/gcc/config/ia64/unwind-ia64.c ++++ b/src/gcc/config/ia64/unwind-ia64.c +@@ -27,6 +27,7 @@ + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "coretypes.h" +@@ -2417,3 +2417,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +--- a/src/gcc/unwind-compat.c ++++ b/src/gcc/unwind-compat.c +@@ -29,6 +29,7 @@ + 02110-1301, USA. */ + + #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) ++#ifndef inhibit_libc + #include "tconfig.h" + #include "tsystem.h" + #include "unwind.h" +@@ -213,3 +214,4 @@ _Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val) + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +--- a/src/gcc/unwind-generic.h ++++ b/src/gcc/unwind-generic.h +@@ -214,6 +214,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _Unwind_Exception *); + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + #include + + static inline _Unwind_Ptr +@@ -232,6 +233,7 @@ _Unwind_GetTextRelBase (struct _Unwind_Context *_C __attribute__ ((__unused__))) + + /* @@@ Retrieve the Backing Store Pointer of the given context. */ + extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); ++#endif + #else + extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); + extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); --- gcc-4.4-4.4.7.orig/debian/patches/cross-include.diff +++ gcc-4.4-4.4.7/debian/patches/cross-include.diff @@ -0,0 +1,18 @@ +# DP: Set cross include path to .../include, not .../sys-include +# DP: This should be a fix for famous limits.h issue + +--- + gcc/configure.ac | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -764,7 +764,7 @@ AC_ARG_WITH(sysroot, + ], [ + TARGET_SYSTEM_ROOT= + TARGET_SYSTEM_ROOT_DEFINE= +- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' ++ CROSS_SYSTEM_HEADER_DIR='$(prefix)/$(target_noncanonical)/include' + ]) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) --- gcc-4.4-4.4.7.orig/debian/patches/deb-protoize.diff +++ gcc-4.4-4.4.7/debian/patches/deb-protoize.diff @@ -0,0 +1,34 @@ +# DP: build protoize/unprotoize binaries + +--- + gcc/Makefile.in | 6 +++--- + 1 files changed, 3 insertions(+), 3 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -125,7 +125,7 @@ SUBDIRS =@subdirs@ build + + # Selection of languages to be made. + CONFIG_LANGUAGES = @all_selected_languages@ +-LANGUAGES = c gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES) ++LANGUAGES = c proto gcov$(exeext) gcov-dump$(exeext) $(CONFIG_LANGUAGES) + + # Default values for variables overridden in Makefile fragments. + # CFLAGS is for the user to override to, e.g., do a cross build with -O2. +@@ -3501,14 +3501,14 @@ unprotoize$(exeext): unprotoize.o $(PROTO_OBJS) $(LIBDEPS) + protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ + coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h + (SHLIB_LINK='$(SHLIB_LINK)'; \ +- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + + unprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h + (SHLIB_LINK='$(SHLIB_LINK)'; \ +- $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + --- gcc-4.4-4.4.7.orig/debian/patches/fix-warnings.diff +++ gcc-4.4-4.4.7/debian/patches/fix-warnings.diff @@ -0,0 +1,1341 @@ +# DP: Fix warnings with -D_FORTIFY_SOURCE and -Wformat-security. + +libcpp/ + + * macro.c (create_iso_definition): Avoid warnings with + -Wformat-security. + * lex.c (cpp_output_token): Avoid warnings with -D_FORTIFY_SOURCE. + +gcc/ + + * toplev.c (print_to_asm_out_file, print_to_stderr): Avoid warnings with + -Wformat-security, (pch_option_mismatch) avoid warnings with + -D_FORTIFY_SOURCE. + + * c-convert.c (convert): Avoid warnings with -Wformat-security. + * c-typeck.c (convert_arguments, build_unary_op, build_binary_op): Likewise. + * c-common.c (c_parse_error): Likewise. + * cfg.c (dump_cfg_bb_info): Likewise. + * fold-const.c (fold_overflow_warning): Likewise. + * ira-conflicts.c (print_hard_reg_set): Likewise. + * opts.c (print_filtered_help): Likewise. + * tree-switch-conversion.c (do_switchconv): Likewise. + * collect2.c (collect_execute, scan_prog_file): Likewise. + + * c-ppoutput.c (print_lines_directives_only,scan_translation_unit_trad): + Avoid warnings with -D_FORTIFY_SOURCE. + * dbxout.c (dbxout_finish_complex_stabs): Likewise. + * diagnostic.c (build_message_string): Likewise. + * final.c (output_operand_lossage): Likewise. + * tree-data-ref.c (dot_rdg): Likewise. + * tree-ssa-structalias.c (create_function_info_for, + create_variable_info_for): Likewise. + +gcc/cp/ + + * pt.c (tsubst_copy_and_build): Avoid warnings with -Wformat-security. + * parser.c (cp_parser_check_type_definition, + cp_parser_non_integral_constant_expression): Likewise. + * typeck.c (cp_build_binary_op, cp_build_unary_op): Likewise. + * cvt.c (ocp_convert): Likewise. + +gcc/fortran/ + + * cpp.c (scan_translation_unit_trad): Avoid warnings with -D_FORTIFY_SOURCE. + * trans.c (gfc_trans_runtime_error_vararg): Likewise. + * trans-array.c (gfc_trans_array_bound_check, gfc_conv_array_ref, + gfc_conv_ss_startstride, gfc_trans_dummy_array_bias, + gfc_conv_array_parameter): Likewise. + * trans-io.c (gfc_trans_io_runtime_check, set_string): Likewise. + * trans-expr.c (gfc_conv_substring): Likewise. + + * decl.c (gfc_match_kind_spec, match_char_kind): Avoid warnings with + -Wformat-security. + * intrinsic.c (add_sym, find_sym, make_alias): Likewise. + * match.c (gfc_match_small_int, gfc_match_small_int_expr): Likewise. + * matchexp.c (match_primary, match_level_2, match_level_3, + match_level_4, match_or_operand, match_equiv_operand, match_level_5, + gfc_match_expr): Likewise. + * module.c (find_true_name, mio_pool_string, mio_symtree_ref, mio_expr, + load_generic_interfaces, load_needed, read_module, write_symbol0, + write_generic, import_iso_c_binding_module, create_int_parameter, + use_iso_fortran_env_module, gfc_use_module): Likewise. + * openmp.c (gfc_match_omp_clauses): Likewise. + * primary.c (match_hollerith_constant, match_string_constant, + match_keyword_arg): Likewise. + * symbol.c (gfc_add_component, gfc_new_symtree, gfc_delete_symtree, + gfc_get_uop, gfc_new_symbol, gfc_get_gsymbol, gen_special_c_interop_ptr, + gen_cptr_param, gen_fptr_param, gen_shape_param, + generate_isocbinding_symbol, get_iso_c_sym): Likewise. + * trans-decl.c (gfc_find_module): Likewise. + +gcc/objc/ + + * objc-act.c (objc_lookup_protocol): Avoid warnings with + -Wformat-security. + +--- + gcc/c-common.c | 4 +- + gcc/c-convert.c | 2 +- + gcc/c-ppoutput.c | 6 ++- + gcc/c-typeck.c | 6 +- + gcc/cfg.c | 2 +- + gcc/collect2.c | 8 ++-- + gcc/cp/cvt.c | 2 +- + gcc/cp/parser.c | 4 +- + gcc/cp/pt.c | 2 +- + gcc/cp/typeck.c | 4 +- + gcc/dbxout.c | 5 +- + gcc/diagnostic.c | 3 +- + gcc/final.c | 5 +- + gcc/fold-const.c | 2 +- + gcc/fortran/cpp.c | 3 +- + gcc/fortran/decl.c | 4 +- + gcc/fortran/intrinsic.c | 8 ++-- + gcc/fortran/match.c | 4 +- + gcc/fortran/matchexp.c | 18 ++++---- + gcc/fortran/module.c | 30 +++++++------- + gcc/fortran/openmp.c | 2 +- + gcc/fortran/primary.c | 6 +- + gcc/fortran/symbol.c | 24 +++++----- + gcc/fortran/trans-array.c | 94 +++++++++++++++++++++++++---------------- + gcc/fortran/trans-decl.c | 2 +- + gcc/fortran/trans-expr.c | 22 ++++++---- + gcc/fortran/trans-io.c | 9 +++- + gcc/fortran/trans.c | 11 +++-- + gcc/ira-conflicts.c | 2 +- + gcc/objc/objc-act.c | 2 +- + gcc/opts.c | 2 +- + gcc/toplev.c | 9 +++- + gcc/tree-data-ref.c | 3 +- + gcc/tree-ssa-structalias.c | 13 ++++-- + gcc/tree-switch-conversion.c | 2 +- + libcpp/lex.c | 6 ++- + libcpp/macro.c | 4 +- + 37 files changed, 190 insertions(+), 145 deletions(-) + +--- a/src/gcc/c-common.c ++++ b/src/gcc/c-common.c +@@ -7493,11 +7493,11 @@ c_parse_error (const char *gmsgid, enum cpp_ttype token, tree value) + message = NULL; + } + else +- error (gmsgid); ++ error ("%s", gmsgid); + + if (message) + { +- error (message); ++ error ("%s", message); + free (message); + } + #undef catenate_messages +--- a/src/gcc/c-convert.c ++++ b/src/gcc/c-convert.c +@@ -79,7 +79,7 @@ convert (tree type, tree expr) + if ((invalid_conv_diag + = targetm.invalid_conversion (TREE_TYPE (expr), type))) + { +- error (invalid_conv_diag); ++ error ("%s", invalid_conv_diag); + return error_mark_node; + } + +--- a/src/gcc/c-ppoutput.c ++++ b/src/gcc/c-ppoutput.c +@@ -223,8 +223,9 @@ scan_translation_unit (cpp_reader *pfile) + static void + print_lines_directives_only (int lines, const void *buf, size_t size) + { ++ size_t rv_neverused ATTRIBUTE_UNUSED; + print.src_line += lines; +- fwrite (buf, 1, size, print.outf); ++ rv_neverused = fwrite (buf, 1, size, print.outf); + } + + /* Writes out the preprocessed file, handling spacing and paste +@@ -256,8 +257,9 @@ scan_translation_unit_trad (cpp_reader *pfile) + while (_cpp_read_logical_line_trad (pfile)) + { + size_t len = pfile->out.cur - pfile->out.base; ++ size_t rv_neverused ATTRIBUTE_UNUSED; + maybe_print_line (pfile->out.first_line); +- fwrite (pfile->out.base, 1, len, print.outf); ++ rv_neverused = fwrite (pfile->out.base, 1, len, print.outf); + print.printed = 1; + if (!CPP_OPTION (pfile, discard_comments)) + account_for_newlines (pfile->out.base, len); +--- a/src/gcc/c-typeck.c ++++ b/src/gcc/c-typeck.c +@@ -2730,7 +2730,7 @@ convert_arguments (int nargs, tree *argarray, + else if ((invalid_func_diag = + targetm.calls.invalid_arg_for_unprototyped_fn (typelist, fundecl, val))) + { +- error (invalid_func_diag); ++ error ("%s", invalid_func_diag); + return -1; + } + else +@@ -2947,7 +2947,7 @@ build_unary_op (location_t location, + if ((invalid_op_diag + = targetm.invalid_unary_op (code, TREE_TYPE (xarg)))) + { +- error_at (location, invalid_op_diag); ++ error_at (location, "%s", invalid_op_diag); + return error_mark_node; + } + +@@ -8095,7 +8095,7 @@ build_binary_op (location_t location, enum tree_code code, + if ((invalid_op_diag + = targetm.invalid_binary_op (code, type0, type1))) + { +- error_at (location, invalid_op_diag); ++ error_at (location, "%s", invalid_op_diag); + return error_mark_node; + } + +--- a/src/gcc/cfg.c ++++ b/src/gcc/cfg.c +@@ -908,7 +908,7 @@ dump_cfg_bb_info (FILE *file, basic_block bb) + else + fprintf (file, ", "); + first = false; +- fprintf (file, bb_bitnames[i]); ++ fprintf (file, "%s", bb_bitnames[i]); + } + if (!first) + fprintf (file, ")"); +--- a/src/gcc/collect2.c ++++ b/src/gcc/collect2.c +@@ -1647,10 +1647,10 @@ collect_execute (const char *prog, char **argv, const char *outname, + if (err != 0) + { + errno = err; +- fatal_perror (errmsg); ++ fatal_perror ("%s", errmsg); + } + else +- fatal (errmsg); ++ fatal ("%s", errmsg); + } + + if (response_arg) +@@ -2137,10 +2137,10 @@ scan_prog_file (const char *prog_name, enum pass which_pass) + if (err != 0) + { + errno = err; +- fatal_perror (errmsg); ++ fatal_perror ("%s", errmsg); + } + else +- fatal (errmsg); ++ fatal ("%s", errmsg); + } + + int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); +--- a/src/gcc/cp/cvt.c ++++ b/src/gcc/cp/cvt.c +@@ -591,7 +591,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags) + if ((invalid_conv_diag + = targetm.invalid_conversion (TREE_TYPE (expr), type))) + { +- error (invalid_conv_diag); ++ error ("%s", invalid_conv_diag); + return error_mark_node; + } + +--- a/src/gcc/cp/parser.c ++++ b/src/gcc/cp/parser.c +@@ -2204,7 +2204,7 @@ cp_parser_check_type_definition (cp_parser* parser) + { + /* Don't use `%s' to print the string, because quotations (`%<', `%>') + in the message need to be interpreted. */ +- error (parser->type_definition_forbidden_message); ++ error ("%s", parser->type_definition_forbidden_message); + return false; + } + return true; +@@ -2291,7 +2291,7 @@ cp_parser_non_integral_constant_expression (cp_parser *parser, + char *message = concat (thing, + " cannot appear in a constant-expression", + NULL); +- error (message); ++ error ("%s", message); + free (message); + return true; + } +--- a/src/gcc/cp/pt.c ++++ b/src/gcc/cp/pt.c +@@ -11060,7 +11060,7 @@ tsubst_copy_and_build (tree t, + &error_msg, + input_location); + if (error_msg) +- error (error_msg); ++ error ("%s", error_msg); + if (!function_p && TREE_CODE (decl) == IDENTIFIER_NODE) + decl = unqualified_name_lookup_error (decl); + return decl; +--- a/src/gcc/cp/typeck.c ++++ b/src/gcc/cp/typeck.c +@@ -3373,7 +3373,7 @@ cp_build_binary_op (location_t location, + if ((invalid_op_diag + = targetm.invalid_binary_op (code, type0, type1))) + { +- error (invalid_op_diag); ++ error ("%s", invalid_op_diag); + return error_mark_node; + } + +@@ -4254,7 +4254,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert, + : code), + TREE_TYPE (xarg)))) + { +- error (invalid_op_diag); ++ error ("%s", invalid_op_diag); + return error_mark_node; + } + +--- a/src/gcc/dbxout.c ++++ b/src/gcc/dbxout.c +@@ -847,6 +847,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code, + int line ATTRIBUTE_UNUSED; + char *str; + size_t len; ++ size_t rv_neverused ATTRIBUTE_UNUSED; + + line = sym ? DECL_SOURCE_LINE (sym) : 0; + if (DBX_CONTIN_LENGTH > 0) +@@ -867,7 +868,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code, + for (;;) + { + chunklen = strlen (chunk); +- fwrite (chunk, 1, chunklen, asm_out_file); ++ rv_neverused = fwrite (chunk, 1, chunklen, asm_out_file); + fputs ("\",", asm_out_file); + + /* Must add an extra byte to account for the NUL separator. */ +@@ -894,7 +895,7 @@ dbxout_finish_complex_stabs (tree sym, STAB_CODE_TYPE code, + len = obstack_object_size (&stabstr_ob); + str = XOBFINISH (&stabstr_ob, char *); + +- fwrite (str, 1, len, asm_out_file); ++ rv_neverused = fwrite (str, 1, len, asm_out_file); + DBX_FINISH_STABS (sym, code, line, addr, label, number); + } + obstack_free (&stabstr_ob, str); +--- a/src/gcc/diagnostic.c ++++ b/src/gcc/diagnostic.c +@@ -70,9 +70,10 @@ build_message_string (const char *msg, ...) + { + char *str; + va_list ap; ++ size_t rv_neverused ATTRIBUTE_UNUSED; + + va_start (ap, msg); +- vasprintf (&str, msg, ap); ++ rv_neverused = vasprintf (&str, msg, ap); + va_end (ap); + + return str; +--- a/src/gcc/final.c ++++ b/src/gcc/final.c +@@ -2989,12 +2989,13 @@ output_operand_lossage (const char *cmsgid, ...) + char *new_message; + const char *pfx_str; + va_list ap; ++ int rv_neverused ATTRIBUTE_UNUSED; + + va_start (ap, cmsgid); + + pfx_str = this_is_asm_operands ? _("invalid 'asm': ") : "output_operand: "; +- asprintf (&fmt_string, "%s%s", pfx_str, _(cmsgid)); +- vasprintf (&new_message, fmt_string, ap); ++ rv_neverused = asprintf (&fmt_string, "%s%s", pfx_str, _(cmsgid)); ++ rv_neverused = vasprintf (&new_message, fmt_string, ap); + + if (this_is_asm_operands) + error_for_asm (this_is_asm_operands, "%s", new_message); +--- a/src/gcc/fold-const.c ++++ b/src/gcc/fold-const.c +@@ -1025,7 +1025,7 @@ fold_overflow_warning (const char* gmsgid, enum warn_strict_overflow_code wc) + } + } + else if (issue_strict_overflow_warning (wc)) +- warning (OPT_Wstrict_overflow, gmsgid); ++ warning (OPT_Wstrict_overflow, "%s", gmsgid); + } + + /* Return true if the built-in mathematical function specified by CODE +--- a/src/gcc/fortran/cpp.c ++++ b/src/gcc/fortran/cpp.c +@@ -729,8 +729,9 @@ scan_translation_unit_trad (cpp_reader *pfile) + while (_cpp_read_logical_line_trad (pfile)) + { + size_t len = pfile->out.cur - pfile->out.base; ++ size_t rv_neverused ATTRIBUTE_UNUSED; + maybe_print_line (pfile->out.first_line); +- fwrite (pfile->out.base, 1, len, print.outf); ++ rv_neverused = fwrite (pfile->out.base, 1, len, print.outf); + print.printed = 1; + if (!CPP_OPTION (pfile, discard_comments)) + account_for_newlines (pfile->out.base, len); +--- a/src/gcc/fortran/decl.c ++++ b/src/gcc/fortran/decl.c +@@ -1954,7 +1954,7 @@ kind_expr: + + if (msg != NULL) + { +- gfc_error (msg); ++ gfc_error ("%s", msg); + m = MATCH_ERROR; + goto no_match; + } +@@ -2060,7 +2060,7 @@ match_char_kind (int * kind, int * is_iso_c) + *is_iso_c = e->ts.is_iso_c; + if (msg != NULL) + { +- gfc_error (msg); ++ gfc_error ("%s", msg); + m = MATCH_ERROR; + goto no_match; + } +--- a/src/gcc/fortran/intrinsic.c ++++ b/src/gcc/fortran/intrinsic.c +@@ -262,11 +262,11 @@ add_sym (const char *name, gfc_isym_id id, enum klass cl, int actual_ok, bt type + break; + + case SZ_NOTHING: +- next_sym->name = gfc_get_string (name); ++ next_sym->name = gfc_get_string ("%s", name); + + strcpy (buf, "_gfortran_"); + strcat (buf, name); +- next_sym->lib_name = gfc_get_string (buf); ++ next_sym->lib_name = gfc_get_string ("%s", buf); + + next_sym->elemental = (cl == CLASS_ELEMENTAL); + next_sym->inquiry = (cl == CLASS_INQUIRY); +@@ -722,7 +722,7 @@ find_sym (gfc_intrinsic_sym *start, int n, const char *name) + /* name may be a user-supplied string, so we must first make sure + that we're comparing against a pointer into the global string + table. */ +- const char *p = gfc_get_string (name); ++ const char *p = gfc_get_string ("%s", name); + + while (n > 0) + { +@@ -918,7 +918,7 @@ make_alias (const char *name, int standard) + + case SZ_NOTHING: + next_sym[0] = next_sym[-1]; +- next_sym->name = gfc_get_string (name); ++ next_sym->name = gfc_get_string ("%s", name); + next_sym->standard = standard; + next_sym++; + break; +--- a/src/gcc/fortran/match.c ++++ b/src/gcc/fortran/match.c +@@ -391,7 +391,7 @@ gfc_match_small_int (int *value) + + if (p != NULL) + { +- gfc_error (p); ++ gfc_error ("%s", p); + m = MATCH_ERROR; + } + +@@ -423,7 +423,7 @@ gfc_match_small_int_expr (int *value, gfc_expr **expr) + + if (p != NULL) + { +- gfc_error (p); ++ gfc_error ("%s", p); + m = MATCH_ERROR; + } + +--- a/src/gcc/fortran/matchexp.c ++++ b/src/gcc/fortran/matchexp.c +@@ -193,7 +193,7 @@ match_primary (gfc_expr **result) + return MATCH_YES; + + syntax: +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + return MATCH_ERROR; + } + +@@ -496,7 +496,7 @@ match_level_2 (gfc_expr **result) + m = match_ext_add_operand (&e); + if (m == MATCH_NO) + { +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + m = MATCH_ERROR; + } + } +@@ -535,7 +535,7 @@ match_level_2 (gfc_expr **result) + + m = match_ext_add_operand (&e); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (all); +@@ -586,7 +586,7 @@ match_level_3 (gfc_expr **result) + m = match_level_2 (&e); + if (m == MATCH_NO) + { +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + gfc_free_expr (all); + } + if (m != MATCH_YES) +@@ -646,7 +646,7 @@ match_level_4 (gfc_expr **result) + + m = match_level_3 (&right); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (left); +@@ -755,7 +755,7 @@ match_or_operand (gfc_expr **result) + + m = match_and_operand (&e); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (all); +@@ -798,7 +798,7 @@ match_equiv_operand (gfc_expr **result) + + m = match_or_operand (&e); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (all); +@@ -852,7 +852,7 @@ match_level_5 (gfc_expr **result) + + m = match_equiv_operand (&e); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (all); +@@ -911,7 +911,7 @@ gfc_match_expr (gfc_expr **result) + + m = match_level_5 (&e); + if (m == MATCH_NO) +- gfc_error (expression_syntax); ++ gfc_error ("%s", expression_syntax); + if (m != MATCH_YES) + { + gfc_free_expr (all); +--- a/src/gcc/fortran/module.c ++++ b/src/gcc/fortran/module.c +@@ -805,9 +805,9 @@ find_true_name (const char *name, const char *module) + gfc_symbol sym; + int c; + +- sym.name = gfc_get_string (name); ++ sym.name = gfc_get_string ("%s", name); + if (module != NULL) +- sym.module = gfc_get_string (module); ++ sym.module = gfc_get_string ("%s", module); + else + sym.module = NULL; + t.sym = &sym; +@@ -1612,7 +1612,7 @@ mio_pool_string (const char **stringp) + else + { + require_atom (ATOM_STRING); +- *stringp = atom_string[0] == '\0' ? NULL : gfc_get_string (atom_string); ++ *stringp = atom_string[0] == '\0' ? NULL : gfc_get_string ("%s", atom_string); + gfc_free (atom_string); + } + } +@@ -2460,7 +2460,7 @@ mio_symtree_ref (gfc_symtree **stp) + { + p->u.rsym.sym = gfc_new_symbol (p->u.rsym.true_name, + gfc_current_ns); +- p->u.rsym.sym->module = gfc_get_string (p->u.rsym.module); ++ p->u.rsym.sym->module = gfc_get_string ("%s", p->u.rsym.module); + } + + p->u.rsym.symtree->n.sym = p->u.rsym.sym; +@@ -2967,7 +2967,7 @@ mio_expr (gfc_expr **ep) + else + { + require_atom (ATOM_STRING); +- e->value.function.name = gfc_get_string (atom_string); ++ e->value.function.name = gfc_get_string ("%s", atom_string); + gfc_free (atom_string); + + mio_integer (&flag); +@@ -3695,8 +3695,8 @@ load_generic_interfaces (void) + if (!sym) + { + gfc_get_symbol (p, NULL, &sym); +- sym->name = gfc_get_string (name); +- sym->module = gfc_get_string (module_name); ++ sym->name = gfc_get_string ("%s", name); ++ sym->module = gfc_get_string ("%s", module_name); + sym->attr.flavor = FL_PROCEDURE; + sym->attr.generic = 1; + sym->attr.use_assoc = 1; +@@ -3901,7 +3901,7 @@ load_needed (pointer_info *p) + 1, &ns->proc_name); + + sym = gfc_new_symbol (p->u.rsym.true_name, ns); +- sym->module = gfc_get_string (p->u.rsym.module); ++ sym->module = gfc_get_string ("%s", p->u.rsym.module); + strcpy (sym->binding_label, p->u.rsym.binding_label); + + associate_integer_pointer (p, sym); +@@ -4162,7 +4162,7 @@ read_module (void) + info->u.rsym.sym = gfc_new_symbol (info->u.rsym.true_name, + gfc_current_ns); + sym = info->u.rsym.sym; +- sym->module = gfc_get_string (info->u.rsym.module); ++ sym->module = gfc_get_string ("%s", info->u.rsym.module); + + /* TODO: hmm, can we test this? Do we know it will be + initialized to zeros? */ +@@ -4521,7 +4521,7 @@ write_symbol0 (gfc_symtree *st) + + sym = st->n.sym; + if (sym->module == NULL) +- sym->module = gfc_get_string (module_name); ++ sym->module = gfc_get_string ("%s", module_name); + + if (sym->attr.flavor == FL_PROCEDURE && sym->attr.generic + && !sym->attr.subroutine && !sym->attr.function) +@@ -4614,7 +4614,7 @@ write_generic (gfc_symtree *st) + return; + + if (sym->module == NULL) +- sym->module = gfc_get_string (module_name); ++ sym->module = gfc_get_string ("%s", module_name); + + mio_symbol_interface (&st->name, &sym->module, &sym->generic); + } +@@ -4962,7 +4962,7 @@ import_iso_c_binding_module (void) + + mod_sym->attr.flavor = FL_MODULE; + mod_sym->attr.intrinsic = 1; +- mod_sym->module = gfc_get_string (iso_c_module_name); ++ mod_sym->module = gfc_get_string ("%s", iso_c_module_name); + mod_sym->from_intmod = INTMOD_ISO_C_BINDING; + } + +@@ -5039,7 +5039,7 @@ create_int_parameter (const char *name, int value, const char *modname, + gfc_get_sym_tree (name, gfc_current_ns, &tmp_symtree); + sym = tmp_symtree->n.sym; + +- sym->module = gfc_get_string (modname); ++ sym->module = gfc_get_string ("%s", modname); + sym->attr.flavor = FL_PARAMETER; + sym->ts.type = BT_INTEGER; + sym->ts.kind = gfc_default_integer_kind; +@@ -5083,7 +5083,7 @@ use_iso_fortran_env_module (void) + + mod_sym->attr.flavor = FL_MODULE; + mod_sym->attr.intrinsic = 1; +- mod_sym->module = gfc_get_string (mod); ++ mod_sym->module = gfc_get_string ("%s", mod); + mod_sym->from_intmod = INTMOD_ISO_FORTRAN_ENV; + } + else +@@ -5279,7 +5279,7 @@ gfc_use_module (void) + fclose (module_fp); + + use_stmt = gfc_get_use_list (); +- use_stmt->module_name = gfc_get_string (module_name); ++ use_stmt->module_name = gfc_get_string ("%s", module_name); + use_stmt->only_flag = only_flag; + use_stmt->rename = gfc_rename_list; + use_stmt->where = use_locus; +--- a/src/gcc/fortran/openmp.c ++++ b/src/gcc/fortran/openmp.c +@@ -396,7 +396,7 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, int mask) + const char *p = gfc_extract_int (cexpr, &collapse); + if (p) + { +- gfc_error (p); ++ gfc_error ("%s", p); + collapse = 1; + } + else if (collapse <= 0) +--- a/src/gcc/fortran/primary.c ++++ b/src/gcc/fortran/primary.c +@@ -255,7 +255,7 @@ match_hollerith_constant (gfc_expr **result) + msg = gfc_extract_int (e, &num); + if (msg != NULL) + { +- gfc_error (msg); ++ gfc_error ("%s", msg); + goto cleanup; + } + if (num == 0) +@@ -924,7 +924,7 @@ match_string_constant (gfc_expr **result) + q = gfc_extract_int (sym->value, &kind); + if (q != NULL) + { +- gfc_error (q); ++ gfc_error ("%s", q); + return MATCH_ERROR; + } + gfc_set_sym_referenced (sym); +@@ -1479,7 +1479,7 @@ match_keyword_arg (gfc_actual_arglist *actual, gfc_actual_arglist *base) + } + } + +- actual->name = gfc_get_string (name); ++ actual->name = gfc_get_string ("%s", name); + return MATCH_YES; + + cleanup: +--- a/src/gcc/fortran/symbol.c ++++ b/src/gcc/fortran/symbol.c +@@ -1759,7 +1759,7 @@ gfc_add_component (gfc_symbol *sym, const char *name, + else + tail->next = p; + +- p->name = gfc_get_string (name); ++ p->name = gfc_get_string ("%s", name); + p->loc = gfc_current_locus; + + *component = p; +@@ -2251,7 +2251,7 @@ gfc_new_symtree (gfc_symtree **root, const char *name) + gfc_symtree *st; + + st = XCNEW (gfc_symtree); +- st->name = gfc_get_string (name); ++ st->name = gfc_get_string ("%s", name); + st->typebound = NULL; + + gfc_insert_bbt (root, st, compare_symtree); +@@ -2268,7 +2268,7 @@ gfc_delete_symtree (gfc_symtree **root, const char *name) + + st0 = gfc_find_symtree (*root, name); + +- st.name = gfc_get_string (name); ++ st.name = gfc_get_string ("%s", name); + gfc_delete_bbt (root, &st, compare_symtree); + + gfc_free (st0); +@@ -2327,7 +2327,7 @@ gfc_get_uop (const char *name) + st = gfc_new_symtree (&gfc_current_ns->uop_root, name); + + uop = st->n.uop = XCNEW (gfc_user_op); +- uop->name = gfc_get_string (name); ++ uop->name = gfc_get_string ("%s", name); + uop->access = ACCESS_UNKNOWN; + uop->ns = gfc_current_ns; + +@@ -2399,7 +2399,7 @@ gfc_new_symbol (const char *name, gfc_namespace *ns) + if (strlen (name) > GFC_MAX_SYMBOL_LEN) + gfc_internal_error ("new_symbol(): Symbol name too long"); + +- p->name = gfc_get_string (name); ++ p->name = gfc_get_string ("%s", name); + + /* Make sure flags for symbol being C bound are clear initially. */ + p->attr.is_bind_c = 0; +@@ -3280,7 +3280,7 @@ gfc_get_gsymbol (const char *name) + + s = XCNEW (gfc_gsymbol); + s->type = GSYM_UNKNOWN; +- s->name = gfc_get_string (name); ++ s->name = gfc_get_string ("%s", name); + + gfc_insert_bbt (&gfc_gsym_root, s, gsym_compare); + +@@ -3517,7 +3517,7 @@ gen_special_c_interop_ptr (int ptr_id, const char *ptr_name, + } + + /* Module name is some mangled version of iso_c_binding. */ +- tmp_sym->module = gfc_get_string (module_name); ++ tmp_sym->module = gfc_get_string ("%s", module_name); + + /* Say it's from the iso_c_binding module. */ + tmp_sym->attr.is_iso_c = 1; +@@ -3637,7 +3637,7 @@ gen_cptr_param (gfc_formal_arglist **head, + } + + param_sym->ts.derived = c_ptr_sym; +- param_sym->module = gfc_get_string (module_name); ++ param_sym->module = gfc_get_string ("%s", module_name); + + /* Make new formal arg. */ + formal_arg = gfc_get_formal_arglist (); +@@ -3682,7 +3682,7 @@ gen_fptr_param (gfc_formal_arglist **head, + + /* ISO C Binding type to allow any pointer type as actual param. */ + param_sym->ts.type = BT_VOID; +- param_sym->module = gfc_get_string (module_name); ++ param_sym->module = gfc_get_string ("%s", module_name); + + /* Make the arg. */ + formal_arg = gfc_get_formal_arglist (); +@@ -3753,7 +3753,7 @@ gen_shape_param (gfc_formal_arglist **head, + param_sym->attr.optional = 1; + param_sym->attr.intent = INTENT_IN; + param_sym->attr.dimension = 1; +- param_sym->module = gfc_get_string (module_name); ++ param_sym->module = gfc_get_string ("%s", module_name); + + /* Make the arg. */ + formal_arg = gfc_get_formal_arglist (); +@@ -3957,7 +3957,7 @@ generate_isocbinding_symbol (const char *mod_name, iso_c_binding_symbol s, + "create symbol"); + + /* Say what module this symbol belongs to. */ +- tmp_sym->module = gfc_get_string (mod_name); ++ tmp_sym->module = gfc_get_string ("%s", mod_name); + tmp_sym->from_intmod = INTMOD_ISO_C_BINDING; + tmp_sym->intmod_sym_id = s; + +@@ -4234,7 +4234,7 @@ get_iso_c_sym (gfc_symbol *old_sym, char *new_name, + strcpy (new_symtree->n.sym->binding_label, new_binding_label); + new_symtree->n.sym->attr = old_sym->attr; + new_symtree->n.sym->ts = old_sym->ts; +- new_symtree->n.sym->module = gfc_get_string (old_sym->module); ++ new_symtree->n.sym->module = gfc_get_string ("%s", old_sym->module); + new_symtree->n.sym->from_intmod = old_sym->from_intmod; + new_symtree->n.sym->intmod_sym_id = old_sym->intmod_sym_id; + /* Build the formal arg list. */ +--- a/src/gcc/fortran/trans-array.c ++++ b/src/gcc/fortran/trans-array.c +@@ -2232,6 +2232,7 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n, + tree tmp; + char *msg; + const char * name = NULL; ++ int rv_neverused ATTRIBUTE_UNUSED; + + if (!flag_bounds_check) + return index; +@@ -2270,11 +2271,13 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n, + tmp = gfc_conv_array_lbound (descriptor, n); + fault = fold_build2 (LT_EXPR, boolean_type_node, index, tmp); + if (name) +- asprintf (&msg, "%s for array '%s', lower bound of dimension %d exceeded" +- "(%%ld < %%ld)", gfc_msg_fault, name, n+1); ++ rv_neverused = ++ asprintf (&msg, "%s for array '%s', lower bound of dimension %d exceeded" ++ "(%%ld < %%ld)", gfc_msg_fault, name, n+1); + else +- asprintf (&msg, "%s, lower bound of dimension %d exceeded (%%ld < %%ld)", +- gfc_msg_fault, n+1); ++ rv_neverused = ++ asprintf (&msg, "%s, lower bound of dimension %d exceeded (%%ld < %%ld)", ++ gfc_msg_fault, n+1); + gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg, + fold_convert (long_integer_type_node, index), + fold_convert (long_integer_type_node, tmp)); +@@ -2286,11 +2289,14 @@ gfc_trans_array_bound_check (gfc_se * se, tree descriptor, tree index, int n, + tmp = gfc_conv_array_ubound (descriptor, n); + fault = fold_build2 (GT_EXPR, boolean_type_node, index, tmp); + if (name) +- asprintf (&msg, "%s for array '%s', upper bound of dimension %d " +- " exceeded (%%ld > %%ld)", gfc_msg_fault, name, n+1); ++ rv_neverused = ++ asprintf (&msg, "%s for array '%s', upper bound of dimension %d " ++ " exceeded (%%ld > %%ld)", gfc_msg_fault, name, n+1); + else +- asprintf (&msg, "%s, upper bound of dimension %d exceeded (%%ld > %%ld)", +- gfc_msg_fault, n+1); ++ rv_neverused = ++ asprintf (&msg, ++ "%s, upper bound of dimension %d exceeded (%%ld > %%ld)", ++ gfc_msg_fault, n+1); + gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg, + fold_convert (long_integer_type_node, index), + fold_convert (long_integer_type_node, tmp)); +@@ -2474,6 +2480,7 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym, + /* Check array bounds. */ + tree cond; + char *msg; ++ int rv_neverused ATTRIBUTE_UNUSED; + + /* Evaluate the indexse.expr only once. */ + indexse.expr = save_expr (indexse.expr); +@@ -2482,9 +2489,10 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym, + tmp = gfc_conv_array_lbound (se->expr, n); + cond = fold_build2 (LT_EXPR, boolean_type_node, + indexse.expr, tmp); +- asprintf (&msg, "%s for array '%s', " +- "lower bound of dimension %d exceeded (%%ld < %%ld)", +- gfc_msg_fault, sym->name, n+1); ++ rv_neverused = ++ asprintf (&msg, "%s for array '%s', " ++ "lower bound of dimension %d exceeded (%%ld < %%ld)", ++ gfc_msg_fault, sym->name, n+1); + gfc_trans_runtime_check (true, false, cond, &se->pre, where, msg, + fold_convert (long_integer_type_node, + indexse.expr), +@@ -2499,9 +2507,10 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym, + tmp = gfc_conv_array_ubound (se->expr, n); + cond = fold_build2 (GT_EXPR, boolean_type_node, + indexse.expr, tmp); +- asprintf (&msg, "%s for array '%s', " +- "upper bound of dimension %d exceeded (%%ld > %%ld)", +- gfc_msg_fault, sym->name, n+1); ++ rv_neverused = ++ asprintf (&msg, "%s for array '%s', " ++ "upper bound of dimension %d exceeded (%%ld > %%ld)", ++ gfc_msg_fault, sym->name, n+1); + gfc_trans_runtime_check (true, false, cond, &se->pre, where, msg, + fold_convert (long_integer_type_node, + indexse.expr), +@@ -3048,6 +3057,7 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + for (n = 0; n < loop->dimen; n++) + { + bool check_upper; ++ int rv_neverused ATTRIBUTE_UNUSED; + + dim = info->dim[n]; + if (info->ref->u.ar.dimen_type[dim] != DIMEN_RANGE) +@@ -3063,9 +3073,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + /* Zero stride is not allowed. */ + tmp = fold_build2 (EQ_EXPR, boolean_type_node, info->stride[n], + gfc_index_zero_node); +- asprintf (&msg, "Zero stride is not allowed, for dimension %d " +- "of array '%s'", info->dim[n]+1, +- ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "Zero stride is not allowed, for dimension %d " ++ "of array '%s'", info->dim[n]+1, ++ ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp, &inner, + &ss->expr->where, msg); + gfc_free (msg); +@@ -3106,9 +3117,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + lbound); + tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, + non_zerosized, tmp); +- asprintf (&msg, "%s, lower bound of dimension %d of array '%s'" +- " exceeded (%%ld < %%ld)", gfc_msg_fault, +- info->dim[n]+1, ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "%s, lower bound of dimension %d of array '%s'" ++ " exceeded (%%ld < %%ld)", gfc_msg_fault, ++ info->dim[n]+1, ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp, &inner, + &ss->expr->where, msg, + fold_convert (long_integer_type_node, +@@ -3123,9 +3135,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + info->start[n], ubound); + tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, + non_zerosized, tmp); +- asprintf (&msg, "%s, upper bound of dimension %d of array " +- "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault, +- info->dim[n]+1, ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "%s, upper bound of dimension %d of array " ++ "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault, ++ info->dim[n]+1, ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp, &inner, + &ss->expr->where, msg, + fold_convert (long_integer_type_node, info->start[n]), +@@ -3146,9 +3159,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + tmp = fold_build2 (LT_EXPR, boolean_type_node, tmp2, lbound); + tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, + non_zerosized, tmp); +- asprintf (&msg, "%s, lower bound of dimension %d of array '%s'" +- " exceeded (%%ld < %%ld)", gfc_msg_fault, +- info->dim[n]+1, ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "%s, lower bound of dimension %d of array '%s'" ++ " exceeded (%%ld < %%ld)", gfc_msg_fault, ++ info->dim[n]+1, ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp, &inner, + &ss->expr->where, msg, + fold_convert (long_integer_type_node, +@@ -3162,9 +3176,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + tmp = fold_build2 (GT_EXPR, boolean_type_node, tmp2, ubound); + tmp = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, + non_zerosized, tmp); +- asprintf (&msg, "%s, upper bound of dimension %d of array " +- "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault, +- info->dim[n]+1, ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "%s, upper bound of dimension %d of array " ++ "'%s' exceeded (%%ld > %%ld)", gfc_msg_fault, ++ info->dim[n]+1, ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp, &inner, + &ss->expr->where, msg, + fold_convert (long_integer_type_node, tmp2), +@@ -3186,9 +3201,10 @@ gfc_conv_ss_startstride (gfc_loopinfo * loop) + tree tmp3; + + tmp3 = fold_build2 (NE_EXPR, boolean_type_node, tmp, size[n]); +- asprintf (&msg, "%s, size mismatch for dimension %d " +- "of array '%s' (%%ld/%%ld)", gfc_msg_bounds, +- info->dim[n]+1, ss->expr->symtree->name); ++ rv_neverused = ++ asprintf (&msg, "%s, size mismatch for dimension %d " ++ "of array '%s' (%%ld/%%ld)", gfc_msg_bounds, ++ info->dim[n]+1, ss->expr->symtree->name); + gfc_trans_runtime_check (true, false, tmp3, &inner, + &ss->expr->where, msg, + fold_convert (long_integer_type_node, tmp), +@@ -4449,14 +4465,16 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc, tree body) + { + /* Check (ubound(a) - lbound(a) == ubound(b) - lbound(b)). */ + char * msg; ++ int rv_neverused ATTRIBUTE_UNUSED; + + tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, + ubound, lbound); + stride2 = fold_build2 (MINUS_EXPR, gfc_array_index_type, + dubound, dlbound); + tmp = fold_build2 (NE_EXPR, gfc_array_index_type, tmp, stride2); +- asprintf (&msg, "%s for dimension %d of array '%s'", +- gfc_msg_bounds, n+1, sym->name); ++ rv_neverused = ++ asprintf (&msg, "%s for dimension %d of array '%s'", ++ gfc_msg_bounds, n+1, sym->name); + gfc_trans_runtime_check (true, false, tmp, &block, &loc, msg); + gfc_free (msg); + } +@@ -5332,12 +5350,14 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77, + if (gfc_option.flag_check_array_temporaries) + { + char * msg; ++ int rv_neverused ATTRIBUTE_UNUSED; + + if (fsym && proc_name) +- asprintf (&msg, "An array temporary was created for argument " +- "'%s' of procedure '%s'", fsym->name, proc_name); ++ rv_neverused = ++ asprintf (&msg, "An array temporary was created for argument " ++ "'%s' of procedure '%s'", fsym->name, proc_name); + else +- asprintf (&msg, "An array temporary was created"); ++ rv_neverused = asprintf (&msg, "An array temporary was created"); + + tmp = build_fold_indirect_ref (desc); + tmp = gfc_conv_array_data (tmp); +--- a/src/gcc/fortran/trans-decl.c ++++ b/src/gcc/fortran/trans-decl.c +@@ -3071,7 +3071,7 @@ gfc_find_module (const char *name) + { + struct module_htab_entry *entry = GGC_CNEW (struct module_htab_entry); + +- entry->name = gfc_get_string (name); ++ entry->name = gfc_get_string ("%s", name); + entry->decls = htab_create_ggc (10, module_htab_decls_hash, + module_htab_decls_eq, NULL); + *slot = (void *) entry; +--- a/src/gcc/fortran/trans-expr.c ++++ b/src/gcc/fortran/trans-expr.c +@@ -400,6 +400,8 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind, + + if (flag_bounds_check) + { ++ int rv_neverused ATTRIBUTE_UNUSED; ++ + tree nonempty = fold_build2 (LE_EXPR, boolean_type_node, + start.expr, end.expr); + +@@ -409,11 +411,13 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind, + fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node, + nonempty, fault); + if (name) +- asprintf (&msg, "Substring out of bounds: lower bound (%%ld) of '%s' " +- "is less than one", name); ++ rv_neverused = ++ asprintf (&msg, "Substring out of bounds: lower bound (%%ld) of '%s' " ++ "is less than one", name); + else +- asprintf (&msg, "Substring out of bounds: lower bound (%%ld)" +- "is less than one"); ++ rv_neverused = ++ asprintf (&msg, "Substring out of bounds: lower bound (%%ld)" ++ "is less than one"); + gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg, + fold_convert (long_integer_type_node, + start.expr)); +@@ -425,11 +429,13 @@ gfc_conv_substring (gfc_se * se, gfc_ref * ref, int kind, + fault = fold_build2 (TRUTH_ANDIF_EXPR, boolean_type_node, + nonempty, fault); + if (name) +- asprintf (&msg, "Substring out of bounds: upper bound (%%ld) of '%s' " +- "exceeds string length (%%ld)", name); ++ rv_neverused = ++ asprintf (&msg, "Substring out of bounds: upper bound (%%ld) of '%s' " ++ "exceeds string length (%%ld)", name); + else +- asprintf (&msg, "Substring out of bounds: upper bound (%%ld) " +- "exceeds string length (%%ld)"); ++ rv_neverused = ++ asprintf (&msg, "Substring out of bounds: upper bound (%%ld) " ++ "exceeds string length (%%ld)"); + gfc_trans_runtime_check (true, false, fault, &se->pre, where, msg, + fold_convert (long_integer_type_node, end.expr), + fold_convert (long_integer_type_node, +--- a/src/gcc/fortran/trans-io.c ++++ b/src/gcc/fortran/trans-io.c +@@ -232,6 +232,7 @@ gfc_trans_io_runtime_check (tree cond, tree var, int error_code, + tree tmp; + tree arg1, arg2, arg3; + char *message; ++ int rv_neverused ATTRIBUTE_UNUSED; + + if (integer_zerop (cond)) + return; +@@ -243,7 +244,7 @@ gfc_trans_io_runtime_check (tree cond, tree var, int error_code, + + arg2 = build_int_cst (integer_type_node, error_code), + +- asprintf (&message, "%s", _(msgid)); ++ rv_neverused = asprintf (&message, "%s", _(msgid)); + arg3 = gfc_build_addr_expr (pchar_type_node, + gfc_build_localized_cstring_const (message)); + gfc_free(message); +@@ -660,14 +661,16 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var, + { + char * msg; + tree cond; ++ int rv_neverused ATTRIBUTE_UNUSED; + + gfc_conv_label_variable (&se, e); + tmp = GFC_DECL_STRING_LEN (se.expr); + cond = fold_build2 (LT_EXPR, boolean_type_node, + tmp, build_int_cst (TREE_TYPE (tmp), 0)); + +- asprintf(&msg, "Label assigned to variable '%s' (%%ld) is not a format " +- "label", e->symtree->name); ++ rv_neverused = ++ asprintf(&msg, "Label assigned to variable '%s' (%%ld) is not a format " ++ "label", e->symtree->name); + gfc_trans_runtime_check (true, false, cond, &se.pre, &e->where, msg, + fold_convert (long_integer_type_node, tmp)); + gfc_free (msg); +--- a/src/gcc/fortran/trans.c ++++ b/src/gcc/fortran/trans.c +@@ -371,6 +371,7 @@ gfc_trans_runtime_error_vararg (bool error, locus* where, const char* msgid, + char *message; + const char *p; + int line, nargs, i; ++ int rv_neverused ATTRIBUTE_UNUSED; + + /* Compute the number of extra arguments from the format string. */ + for (p = msgid, nargs = 0; *p; p++) +@@ -387,18 +388,18 @@ gfc_trans_runtime_error_vararg (bool error, locus* where, const char* msgid, + if (where) + { + line = LOCATION_LINE (where->lb->location); +- asprintf (&message, "At line %d of file %s", line, +- where->lb->file->filename); ++ rv_neverused = asprintf (&message, "At line %d of file %s", line, ++ where->lb->file->filename); + } + else +- asprintf (&message, "In file '%s', around line %d", +- gfc_source_file, input_line + 1); ++ rv_neverused = asprintf (&message, "In file '%s', around line %d", ++ gfc_source_file, input_line + 1); + + arg = gfc_build_addr_expr (pchar_type_node, + gfc_build_localized_cstring_const (message)); + gfc_free(message); + +- asprintf (&message, "%s", _(msgid)); ++ rv_neverused = asprintf (&message, "%s", _(msgid)); + arg2 = gfc_build_addr_expr (pchar_type_node, + gfc_build_localized_cstring_const (message)); + gfc_free(message); +--- a/src/gcc/ira-conflicts.c ++++ b/src/gcc/ira-conflicts.c +@@ -664,7 +664,7 @@ print_hard_reg_set (FILE *file, const char *title, HARD_REG_SET set) + { + int i, start; + +- fprintf (file, title); ++ fputs (title, file); + for (start = -1, i = 0; i < FIRST_PSEUDO_REGISTER; i++) + { + if (TEST_HARD_REG_BIT (set, i)) +--- a/src/gcc/objc/objc-act.c ++++ b/src/gcc/objc/objc-act.c +@@ -988,7 +988,7 @@ objc_lookup_protocol (tree proto, tree cls, tree typ, bool warn) + strcat (errbuf, " the \'"); + strcat (errbuf, IDENTIFIER_POINTER (PROTOCOL_NAME (proto))); + strcat (errbuf, "\' protocol"); +- warning (0, errbuf); ++ warning (0, "%s", errbuf); + } + + return false; +--- a/src/gcc/opts.c ++++ b/src/gcc/opts.c +@@ -1287,7 +1287,7 @@ print_filtered_help (unsigned int include_flags, + if (* (const char **) option->flag_var != NULL) + snprintf (new_help + strlen (new_help), + sizeof (new_help) - strlen (new_help), +- * (const char **) option->flag_var); ++ "%s", * (const char **) option->flag_var); + } + else + sprintf (new_help + strlen (new_help), +--- a/src/gcc/toplev.c ++++ b/src/gcc/toplev.c +@@ -1182,7 +1182,7 @@ print_to_asm_out_file (print_switch_type type, const char * text) + case SWITCH_TYPE_ENABLED: + if (prepend_sep) + fputc (' ', asm_out_file); +- fprintf (asm_out_file, text); ++ fputs (text, asm_out_file); + /* No need to return the length here as + print_single_switch has already done it. */ + return 0; +@@ -1211,7 +1211,7 @@ print_to_stderr (print_switch_type type, const char * text) + /* Drop through. */ + + case SWITCH_TYPE_DESCRIPTIVE: +- fprintf (stderr, text); ++ fputs (text, stderr); + /* No need to return the length here as + print_single_switch has already done it. */ + return 0; +@@ -1437,8 +1437,11 @@ static const char * + pch_option_mismatch (const char *option) + { + char *r; ++ int rv_neverused ATTRIBUTE_UNUSED; + +- asprintf (&r, _("created and used with differing settings of '%s'"), option); ++ rv_neverused = asprintf (&r, ++ _("created and used with differing settings of '%s'"), ++ option); + if (r == NULL) + return _("out of memory"); + return r; +--- a/src/gcc/tree-data-ref.c ++++ b/src/gcc/tree-data-ref.c +@@ -4607,13 +4607,14 @@ dot_rdg_1 (FILE *file, struct graph *rdg) + void + dot_rdg (struct graph *rdg) + { ++ int rv_neverused ATTRIBUTE_UNUSED; + FILE *file = fopen ("/tmp/rdg.dot", "w"); + gcc_assert (file != NULL); + + dot_rdg_1 (file, rdg); + fclose (file); + +- system ("dotty /tmp/rdg.dot"); ++ rv_neverused = system ("dotty /tmp/rdg.dot"); + } + + +--- a/src/gcc/tree-ssa-structalias.c ++++ b/src/gcc/tree-ssa-structalias.c +@@ -4240,6 +4240,7 @@ create_function_info_for (tree decl, const char *name) + tree arg; + unsigned int i; + bool is_varargs = false; ++ int rv_neverused ATTRIBUTE_UNUSED; + + /* Create the variable info. */ + +@@ -4279,7 +4280,7 @@ create_function_info_for (tree decl, const char *name) + argdecl = arg; + + newindex = VEC_length (varinfo_t, varmap); +- asprintf (&tempname, "%s.arg%d", name, i-1); ++ rv_neverused = asprintf (&tempname, "%s.arg%d", name, i-1); + newname = ggc_strdup (tempname); + free (tempname); + +@@ -4315,7 +4316,7 @@ create_function_info_for (tree decl, const char *name) + resultdecl = DECL_RESULT (decl); + + newindex = VEC_length (varinfo_t, varmap); +- asprintf (&tempname, "%s.result", name); ++ rv_neverused = asprintf (&tempname, "%s.result", name); + newname = ggc_strdup (tempname); + free (tempname); + +@@ -4474,9 +4475,11 @@ create_variable_info_for (tree decl, const char *name) + newindex = VEC_length (varinfo_t, varmap); + if (dump_file) + { +- asprintf (&tempname, "%s." HOST_WIDE_INT_PRINT_DEC +- "+" HOST_WIDE_INT_PRINT_DEC, +- vi->name, fo->offset, fo->size); ++ int rv_neverused ATTRIBUTE_UNUSED; ++ ++ rv_neverused = asprintf (&tempname, "%s." HOST_WIDE_INT_PRINT_DEC ++ "+" HOST_WIDE_INT_PRINT_DEC, ++ vi->name, fo->offset, fo->size); + newname = ggc_strdup (tempname); + free (tempname); + } +--- a/src/gcc/tree-switch-conversion.c ++++ b/src/gcc/tree-switch-conversion.c +@@ -858,7 +858,7 @@ do_switchconv (void) + { + gcc_assert (info.reason); + fprintf (dump_file, "Bailing out - "); +- fprintf (dump_file, info.reason); ++ fprintf (dump_file, "%s", info.reason); + fprintf (dump_file, "--------------------------------\n"); + } + } +--- a/src/libcpp/lex.c ++++ b/src/libcpp/lex.c +@@ -1512,6 +1512,8 @@ cpp_type2name (enum cpp_ttype type) + void + cpp_output_token (const cpp_token *token, FILE *fp) + { ++ size_t rv_neverused ATTRIBUTE_UNUSED; ++ + switch (TOKEN_SPELL (token)) + { + case SPELL_OPERATOR: +@@ -1545,7 +1547,7 @@ cpp_output_token (const cpp_token *token, FILE *fp) + { + unsigned char buffer[10]; + i += utf8_to_ucn (buffer, name + i) - 1; +- fwrite (buffer, 1, 10, fp); ++ rv_neverused = fwrite (buffer, 1, 10, fp); + } + else + fputc (NODE_NAME (token->val.node)[i], fp); +@@ -1553,7 +1555,7 @@ cpp_output_token (const cpp_token *token, FILE *fp) + break; + + case SPELL_LITERAL: +- fwrite (token->val.str.text, 1, token->val.str.len, fp); ++ rv_neverused = fwrite (token->val.str.text, 1, token->val.str.len, fp); + break; + + case SPELL_NONE: +--- a/src/libcpp/macro.c ++++ b/src/libcpp/macro.c +@@ -1701,7 +1701,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro) + function-like macros, but not at the end. */ + if (following_paste_op) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); + return false; + } + break; +@@ -1714,7 +1714,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro) + function-like macros, but not at the beginning. */ + if (macro->count == 1) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, "%s", paste_op_error_msg); + return false; + } + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-arm-earlyclobbers.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-arm-earlyclobbers.diff @@ -0,0 +1,40 @@ +# DP: Fix earlyclobbers on some arm.md DImode shifts. + +gcc/ + +2010-09-12 Bernd Schmidt + + * config/arm/arm.md (arm_ashldi3_1bit, arm_ashrdi3_1bit, + arm_lshrdi3_1bit): Put earlyclobber on the right alternative. + +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (revision 164231) ++++ b/src/gcc/config/arm/arm.md (revision 164232) +@@ -3322,7 +3322,7 @@ + ) + + (define_insn "arm_ashldi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] +@@ -3381,7 +3381,7 @@ + ) + + (define_insn "arm_ashrdi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] +@@ -3438,7 +3438,7 @@ + ) + + (define_insn "arm_lshrdi3_1bit" +- [(set (match_operand:DI 0 "s_register_operand" "=&r,r") ++ [(set (match_operand:DI 0 "s_register_operand" "=r,&r") + (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] --- gcc-4.4-4.4.7.orig/debian/patches/gcc-arm-implicit-it.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-arm-implicit-it.diff @@ -0,0 +1,19 @@ +# DP: Pass -mimplicit-it=thumb if -mthumb to as on ARM. + +gcc/ + +2010-07-09 Andrew Stubbs + + * config/arm/elf.h (ASM_SPEC): Pass -mimplicit-it=thumb if -mthumb. + +--- a/src/gcc/config/arm/elf.h 2008-07-14 20:01:42 +0000 ++++ b/src/gcc/config/arm/elf.h 2010-07-09 12:18:59 +0000 +@@ -63,6 +63,7 @@ + %{mthumb-interwork:-mthumb-interwork} \ + %{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \ + %{mfloat-abi=*} %{mfpu=*} \ ++%{mthumb:%{!-mimplicit-it=*:-mimplicit-it=thumb}} \ + %(subtarget_extra_asm_spec)" + #endif + + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-arm-thumb2-sched.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-arm-thumb2-sched.diff @@ -0,0 +1,292 @@ +# DP: [arm] enable scheduling for Thumb-2, fix PR target/42031. + +2009-11-10 Daniel Jacobowitz + + * config/arm/arm.c (arm_override_options): Enable scheduling for + Thumb-2. + +2009-11-14 Richard Earnshaw + + PR target/42031 + * arm.md (adddi_sesidi_di): Place tied contraint first. + (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise + (subdi_zesidi_di, subdi_sesidi_di): Likewise. + (mulsi3_compare0, mulsi_compare0_scratch): Likewise. + (mulsi3addsi, mulsi3addsi_compare0): Likewise. + (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise. + (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise. + (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise. + (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise. + (arm_lshrdi3_1bit, one_cmpldi2): Likewise. + +2009-11-27 Julian Brown + + * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2 + reloads to LO_REGS. + +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (revision 154188) ++++ b/src/gcc/config/arm/arm.c (working copy) +@@ -1616,8 +1616,7 @@ + fix_cm3_ldrd = 0; + } + +- /* ??? We might want scheduling for thumb2. */ +- if (TARGET_THUMB && flag_schedule_insns) ++ if (TARGET_THUMB1 && flag_schedule_insns) + { + /* Don't warn since it's on by default in -O2. */ + flag_schedule_insns = 0; +Index: gcc/config/arm/arm.md +=================================================================== +--- a/src/gcc/config/arm/arm.md (revision 154188) ++++ b/src/gcc/config/arm/arm.md (working copy) +@@ -521,7 +521,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (plus:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" + "#" +@@ -550,7 +550,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (plus:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" + "#" +@@ -995,7 +995,7 @@ + + (define_insn "*subdi_di_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (minus:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +@@ -1007,7 +1007,7 @@ + + (define_insn "*subdi_di_sesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (minus:DI (match_operand:DI 1 "s_register_operand" "r,0") ++ (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +@@ -1021,7 +1021,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, #0" +@@ -1033,7 +1033,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, %2, asr #31" +@@ -1202,7 +1202,7 @@ + (define_insn "*arm_mulsi3" + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r") + (mult:SI (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")))] ++ (match_operand:SI 1 "s_register_operand" "%0,r")))] + "TARGET_32BIT && !arm_arch6" + "mul%?\\t%0, %2, %1" + [(set_attr "insn" "mul") +@@ -1256,7 +1256,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r")) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=&r,&r") + (mult:SI (match_dup 2) (match_dup 1)))] +@@ -1284,7 +1284,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=&r,&r"))] + "TARGET_ARM && !arm_arch6" +@@ -1312,8 +1312,8 @@ + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r") + (plus:SI + (mult:SI (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) +- (match_operand:SI 3 "s_register_operand" "?r,r,0,0")))] ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) ++ (match_operand:SI 3 "s_register_operand" "r,r,0,0")))] + "TARGET_32BIT && !arm_arch6" + "mla%?\\t%0, %2, %1, %3" + [(set_attr "insn" "mla") +@@ -1337,8 +1337,8 @@ + (compare:CC_NOOV + (plus:SI (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) +- (match_operand:SI 3 "s_register_operand" "?r,r,0,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) ++ (match_operand:SI 3 "s_register_operand" "r,r,0,0")) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r") + (plus:SI (mult:SI (match_dup 2) (match_dup 1)) +@@ -1371,7 +1371,7 @@ + (compare:CC_NOOV + (plus:SI (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) + (match_operand:SI 3 "s_register_operand" "?r,r,0,0")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))] +@@ -1551,7 +1551,7 @@ + (truncate:SI + (lshiftrt:DI + (mult:DI +- (sign_extend:DI (match_operand:SI 1 "s_register_operand" "%r,0")) ++ (sign_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) + (sign_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) + (const_int 32)))) + (clobber (match_scratch:SI 3 "=&r,&r"))] +@@ -1595,7 +1595,7 @@ + (truncate:SI + (lshiftrt:DI + (mult:DI +- (zero_extend:DI (match_operand:SI 1 "s_register_operand" "%r,0")) ++ (zero_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) + (zero_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) + (const_int 32)))) + (clobber (match_scratch:SI 3 "=&r,&r"))] +@@ -1850,7 +1850,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed" +@@ -1871,7 +1871,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8")] +@@ -2428,8 +2428,8 @@ + ; constants for op 2 will never be given to these patterns. + (define_insn_and_split "*anddi_notdi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (and:DI (not:DI (match_operand:DI 1 "s_register_operand" "r,0")) +- (match_operand:DI 2 "s_register_operand" "0,r")))] ++ (and:DI (not:DI (match_operand:DI 1 "s_register_operand" "0,r")) ++ (match_operand:DI 2 "s_register_operand" "r,0")))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))" +@@ -2583,7 +2583,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8") +@@ -2704,7 +2704,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (xor:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8") +@@ -2781,7 +2781,7 @@ + + (define_insn "*andsi_iorsi3_notsi" + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r") +- (and:SI (ior:SI (match_operand:SI 1 "s_register_operand" "r,r,0") ++ (and:SI (ior:SI (match_operand:SI 1 "s_register_operand" "%0,r,r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")) + (not:SI (match_operand:SI 3 "arm_rhs_operand" "rI,rI,rI"))))] + "TARGET_32BIT" +@@ -3135,7 +3135,7 @@ + + (define_insn "arm_ashldi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (ashift:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +@@ -3194,7 +3194,7 @@ + + (define_insn "arm_ashrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +@@ -3250,7 +3250,7 @@ + + (define_insn "arm_lshrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +@@ -3497,10 +3497,10 @@ + ) + + ;; The constraints here are to prevent a *partial* overlap (where %Q0 == %R1). +-;; The second alternative is to allow the common case of a *full* overlap. ++;; The first alternative allows the common case of a *full* overlap. + (define_insn "*arm_negdi2" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (neg:DI (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0" +@@ -3653,7 +3653,7 @@ + + (define_insn_and_split "one_cmpldi2" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (not:DI (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (not:DI (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed" +Index: gcc/config/arm/arm.h +=================================================================== +--- a/src/gcc/config/arm/arm.h (revision 154725) ++++ b/src/gcc/config/arm/arm.h (working copy) +@@ -1263,7 +1263,7 @@ + In general this is just CLASS, but for the Thumb core registers and + immediate constants we prefer a LO_REGS class or a subset. */ + #define PREFERRED_RELOAD_CLASS(X, CLASS) \ +- (TARGET_ARM ? (CLASS) : \ ++ (TARGET_32BIT ? (CLASS) : \ + ((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \ + || (CLASS) == NO_REGS || (CLASS) == STACK_REG \ + ? LO_REGS : (CLASS))) --- gcc-4.4-4.4.7.orig/debian/patches/gcc-atom-doc.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-atom-doc.diff @@ -0,0 +1,30 @@ +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (revision 146514) ++++ b/src/gcc/doc/invoke.texi (working copy) +@@ -10959,6 +10959,9 @@ + @item core2 + Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 + instruction set support. ++@item atom ++Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 ++instruction set support. + @item k6 + AMD K6 CPU with MMX instruction set support. + @item k6-2, k6-3 +Index: gcc/doc/md.texi +=================================================================== +--- a/src/gcc/doc/md.texi (revision 146514) ++++ b/src/gcc/doc/md.texi (working copy) +@@ -7506,6 +7506,11 @@ + recognize complicated bypasses, e.g.@: when the consumer is only an address + of insn @samp{store} (not a stored value). + ++If there are more one bypass with the same output and input insns, the ++chosen bypass is the first bypass with a guard in description whose ++guard function returns nonzero. If there is no such bypass, then ++bypass without the guard function is chosen. ++ + @findex exclusion_set + @findex presence_set + @findex final_presence_set --- gcc-4.4-4.4.7.orig/debian/patches/gcc-atom.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-atom.diff @@ -0,0 +1,2744 @@ +Index: gcc/genautomata.c +=================================================================== +--- a/src/gcc/genautomata.c (revision 146514) ++++ b/src/gcc/genautomata.c (working copy) +@@ -1,5 +1,5 @@ + /* Pipeline hazard description translator. +- Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 ++ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 + Free Software Foundation, Inc. + + Written by Vladimir Makarov +@@ -22,21 +22,25 @@ + + /* References: + +- 1. Detecting pipeline structural hazards quickly. T. Proebsting, ++ 1. The finite state automaton based pipeline hazard recognizer and ++ instruction scheduler in GCC. V. Makarov. Proceedings of GCC ++ summit, 2003. ++ ++ 2. Detecting pipeline structural hazards quickly. T. Proebsting, + C. Fraser. Proceedings of ACM SIGPLAN-SIGACT Symposium on + Principles of Programming Languages, pages 280--286, 1994. + + This article is a good start point to understand usage of finite + state automata for pipeline hazard recognizers. But I'd +- recommend the 2nd article for more deep understanding. ++ recommend the 1st and 3rd article for more deep understanding. + +- 2. Efficient Instruction Scheduling Using Finite State Automata: ++ 3. Efficient Instruction Scheduling Using Finite State Automata: + V. Bala and N. Rubin, Proceedings of MICRO-28. This is the best + article about usage of finite state automata for pipeline hazard + recognizers. + +- The current implementation is different from the 2nd article in the +- following: ++ The current implementation is described in the 1st article and it ++ is different from the 3rd article in the following: + + 1. New operator `|' (alternative) is permitted in functional unit + reservation which can be treated deterministically and +@@ -463,7 +467,10 @@ + insn. */ + int insn_num; + /* The following field value is list of bypasses in which given insn +- is output insn. */ ++ is output insn. Bypasses with the same input insn stay one after ++ another in the list in the same order as their occurrences in the ++ description but the bypass without a guard stays always the last ++ in a row of bypasses with the same input insn. */ + struct bypass_decl *bypass_list; + + /* The following fields are defined by automaton generator. */ +@@ -2367,18 +2374,67 @@ + } + + +-/* The function searches for bypass with given IN_INSN_RESERV in given +- BYPASS_LIST. */ +-static struct bypass_decl * +-find_bypass (struct bypass_decl *bypass_list, +- struct insn_reserv_decl *in_insn_reserv) ++/* The function inserts BYPASS in the list of bypasses of the ++ corresponding output insn. The order of bypasses in the list is ++ decribed in a comment for member `bypass_list' (see above). If ++ there is already the same bypass in the list the function reports ++ this and does nothing. */ ++static void ++insert_bypass (struct bypass_decl *bypass) + { +- struct bypass_decl *bypass; +- +- for (bypass = bypass_list; bypass != NULL; bypass = bypass->next) +- if (bypass->in_insn_reserv == in_insn_reserv) +- break; +- return bypass; ++ struct bypass_decl *curr, *last; ++ struct insn_reserv_decl *out_insn_reserv = bypass->out_insn_reserv; ++ struct insn_reserv_decl *in_insn_reserv = bypass->in_insn_reserv; ++ ++ for (curr = out_insn_reserv->bypass_list, last = NULL; ++ curr != NULL; ++ last = curr, curr = curr->next) ++ if (curr->in_insn_reserv == in_insn_reserv) ++ { ++ if ((bypass->bypass_guard_name != NULL ++ && curr->bypass_guard_name != NULL ++ && ! strcmp (bypass->bypass_guard_name, curr->bypass_guard_name)) ++ || bypass->bypass_guard_name == curr->bypass_guard_name) ++ { ++ if (bypass->bypass_guard_name == NULL) ++ { ++ if (!w_flag) ++ error ("the same bypass `%s - %s' is already defined", ++ bypass->out_insn_name, bypass->in_insn_name); ++ else ++ warning (0, "the same bypass `%s - %s' is already defined", ++ bypass->out_insn_name, bypass->in_insn_name); ++ } ++ else if (!w_flag) ++ error ("the same bypass `%s - %s' (guard %s) is already defined", ++ bypass->out_insn_name, bypass->in_insn_name, ++ bypass->bypass_guard_name); ++ else ++ warning ++ (0, "the same bypass `%s - %s' (guard %s) is already defined", ++ bypass->out_insn_name, bypass->in_insn_name, ++ bypass->bypass_guard_name); ++ return; ++ } ++ if (curr->bypass_guard_name == NULL) ++ break; ++ if (curr->next == NULL || curr->next->in_insn_reserv != in_insn_reserv) ++ { ++ last = curr; ++ break; ++ } ++ ++ } ++ if (last == NULL) ++ { ++ bypass->next = out_insn_reserv->bypass_list; ++ out_insn_reserv->bypass_list = bypass; ++ } ++ else ++ { ++ bypass->next = last->next; ++ last->next = bypass; ++ } + } + + /* The function processes pipeline description declarations, checks +@@ -2391,7 +2447,6 @@ + decl_t decl_in_table; + decl_t out_insn_reserv; + decl_t in_insn_reserv; +- struct bypass_decl *bypass; + int automaton_presence; + int i; + +@@ -2514,36 +2569,7 @@ + = DECL_INSN_RESERV (out_insn_reserv); + DECL_BYPASS (decl)->in_insn_reserv + = DECL_INSN_RESERV (in_insn_reserv); +- bypass +- = find_bypass (DECL_INSN_RESERV (out_insn_reserv)->bypass_list, +- DECL_BYPASS (decl)->in_insn_reserv); +- if (bypass != NULL) +- { +- if (DECL_BYPASS (decl)->latency == bypass->latency) +- { +- if (!w_flag) +- error +- ("the same bypass `%s - %s' is already defined", +- DECL_BYPASS (decl)->out_insn_name, +- DECL_BYPASS (decl)->in_insn_name); +- else +- warning +- (0, "the same bypass `%s - %s' is already defined", +- DECL_BYPASS (decl)->out_insn_name, +- DECL_BYPASS (decl)->in_insn_name); +- } +- else +- error ("bypass `%s - %s' is already defined", +- DECL_BYPASS (decl)->out_insn_name, +- DECL_BYPASS (decl)->in_insn_name); +- } +- else +- { +- DECL_BYPASS (decl)->next +- = DECL_INSN_RESERV (out_insn_reserv)->bypass_list; +- DECL_INSN_RESERV (out_insn_reserv)->bypass_list +- = DECL_BYPASS (decl); +- } ++ insert_bypass (DECL_BYPASS (decl)); + } + } + } +@@ -8159,19 +8185,32 @@ + (advance_cycle_insn_decl)->insn_num)); + fprintf (output_file, " case %d:\n", + bypass->in_insn_reserv->insn_num); +- if (bypass->bypass_guard_name == NULL) +- fprintf (output_file, " return %d;\n", +- bypass->latency); +- else ++ for (;;) + { +- fprintf (output_file, +- " if (%s (%s, %s))\n", +- bypass->bypass_guard_name, INSN_PARAMETER_NAME, +- INSN2_PARAMETER_NAME); +- fprintf (output_file, +- " return %d;\n break;\n", +- bypass->latency); ++ if (bypass->bypass_guard_name == NULL) ++ { ++ gcc_assert (bypass->next == NULL ++ || (bypass->in_insn_reserv ++ != bypass->next->in_insn_reserv)); ++ fprintf (output_file, " return %d;\n", ++ bypass->latency); ++ } ++ else ++ { ++ fprintf (output_file, ++ " if (%s (%s, %s))\n", ++ bypass->bypass_guard_name, INSN_PARAMETER_NAME, ++ INSN2_PARAMETER_NAME); ++ fprintf (output_file, " return %d;\n", ++ bypass->latency); ++ } ++ if (bypass->next == NULL ++ || bypass->in_insn_reserv != bypass->next->in_insn_reserv) ++ break; ++ bypass = bypass->next; + } ++ if (bypass->bypass_guard_name != NULL) ++ fprintf (output_file, " break;\n"); + } + fputs (" }\n break;\n", output_file); + } +Index: gcc/rtl.def +=================================================================== +--- a/src/gcc/rtl.def (revision 146514) ++++ b/src/gcc/rtl.def (working copy) +@@ -1088,7 +1088,11 @@ + guard for the bypass. The function will get the two insns as + parameters. If the function returns zero the bypass will be + ignored for this case. Additional guard is necessary to recognize +- complicated bypasses, e.g. when consumer is load address. */ ++ complicated bypasses, e.g. when consumer is load address. If there ++ are more one bypass with the same output and input insns, the ++ chosen bypass is the first bypass with a guard in description whose ++ guard function returns nonzero. If there is no such bypass, then ++ bypass without the guard function is chosen. */ + DEF_RTL_EXPR(DEFINE_BYPASS, "define_bypass", "issS", RTX_EXTRA) + + /* (define_automaton string) describes names of automata generated and +Index: gcc/ChangeLog.ix86 +=================================================================== +--- a/src/gcc/ChangeLog.ix86 (revision 0) ++++ b/src/gcc/ChangeLog.ix86 (revision 0) +@@ -0,0 +1,121 @@ ++2009-04-20 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-20 Joey Ye ++ Xuepeng Guo ++ H.J. Lu ++ ++ * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count. ++ ++ * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro. ++ (IX86_LEA_PRIORITY): Likewise. ++ (distance_non_agu_define): New function. ++ (distance_agu_use): Likewise. ++ (ix86_lea_for_add_ok): Likewise. ++ (ix86_dep_by_shift_count): Likewise. ++ ++ * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we ++ should split for LEA. ++ ++ * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new ++ function. ++ (ix86_dep_by_shift_count): Likewise. ++ ++2009-04-07 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-07 H.J. Lu ++ ++ * doc/invoke.texi: Document Atom support. ++ ++2009-04-06 H.J. Lu ++ ++ * config/i386/i386.md: Revert 2 accidental checkins. ++ ++2009-04-06 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-06 Joey Ye ++ Xuepeng Guo ++ H.J. Lu ++ ++ Atom pipeline model, tuning and insn selection. ++ * config.gcc (atom): Add atom config options and target. ++ ++ * config/i386/atom.md: New. ++ ++ * config/i386/i386.c (atom_cost): New cost. ++ (m_ATOM): New macro flag. ++ (initial_ix86_tune_features): Set m_ATOM. ++ (x86_accumulate_outgoing_args): Likewise. ++ (x86_arch_always_fancy_math_387): Likewise. ++ (processor_target): Add Atom cost. ++ (cpu_names): Add Atom cpu name. ++ (override_options): Set Atom ISA. ++ (ix86_issue_rate): New case PROCESSOR_ATOM. ++ (ix86_adjust_cost): Likewise. ++ ++ * config/i386/i386.h (TARGET_ATOM): New target macro. ++ (ix86_tune_indices): Add X86_TUNE_OPT_AGU. ++ (TARGET_OPT_AGU): New target option. ++ (target_cpu_default): Add TARGET_CPU_DEFAULT_atom. ++ (processor_type): Add PROCESSOR_ATOM. ++ ++ * config/i386/i386.md (cpu): Add new value "atom". ++ (use_carry, movu): New attr. ++ (atom.md): Include atom.md. ++ (adddi3_carry_rex64): Set attr "use_carry". ++ (addqi3_carry): Likewise. ++ (addhi3_carry): Likewise. ++ (addsi3_carry): Likewise. ++ (*addsi3_carry_zext): Likewise. ++ (subdi3_carry_rex64): Likewise. ++ (subqi3_carry): Likewise. ++ (subhi3_carry): Likewise. ++ (subsi3_carry): Likewise. ++ (x86_movdicc_0_m1_rex64): Likewise. ++ (*x86_movdicc_0_m1_se): Likewise. ++ (x86_movsicc_0_m1): Likewise. ++ (*x86_movsicc_0_m1_se): Likewise. ++ (*adddi_1_rex64): Emit add insn as much as possible. ++ (*addsi_1): Likewise. ++ (return_internal): Set atom_unit. ++ (return_internal_long): Likewise. ++ (return_pop_internal): Likewise. ++ (*rcpsf2_sse): Set atom_sse_attr attr. ++ (*qrt2_sse): Likewise. ++ ++2009-04-02 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-02 H.J. Lu ++ ++ * config/i386/i386.c (ix86_abi): Move initialization to ... ++ (override_options): Here. ++ ++2009-03-29 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-29 H.J. Lu ++ ++ * config/i386/i386-protos.h (ix86_agi_dependent): New. ++ ++ * config/i386/i386.c (ix86_agi_dependent): Rewrite. ++ (ix86_adjust_cost): Updated. ++ ++2009-03-27 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-27 Vladimir Makarov ++ ++ * genautomata.c: Add a new year to the copyright. Add a new ++ reference. ++ (struct insn_reserv_decl): Add comments for member bypass_list. ++ (find_bypass): Remove. ++ (insert_bypass): New. ++ (process_decls): Use insert_bypass. ++ (output_internal_insn_latency_func): Output all bypasses with the ++ same input insn in one switch case. ++ ++ * rtl.def (define_bypass): Describe bypass choice. ++ * doc/md.texi (define_bypass): Ditto. +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (revision 146514) ++++ b/src/gcc/config.gcc (working copy) +@@ -1088,7 +1088,7 @@ + tmake_file="${tmake_file} i386/t-linux64" + need_64bit_hwint=yes + case X"${with_cpu}" in +- Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx) ++ Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx) + ;; + X) + if test x$with_cpu_64 = x; then +@@ -1097,7 +1097,7 @@ + ;; + *) + echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 +- echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2 ++ echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2 + exit 1 + ;; + esac +@@ -1202,7 +1202,7 @@ + # libgcc/configure.ac instead. + need_64bit_hwint=yes + case X"${with_cpu}" in +- Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx) ++ Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx) + ;; + X) + if test x$with_cpu_64 = x; then +@@ -1211,7 +1211,7 @@ + ;; + *) + echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 +- echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2 ++ echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2 + exit 1 + ;; + esac +@@ -2805,7 +2805,7 @@ + esac + # OK + ;; +- "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic) ++ "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic) + # OK + ;; + *) +Index: gcc/config/i386/i386.h +=================================================================== +--- a/src/gcc/config/i386/i386.h (revision 146514) ++++ b/src/gcc/config/i386/i386.h (working copy) +@@ -236,6 +236,7 @@ + #define TARGET_GENERIC64 (ix86_tune == PROCESSOR_GENERIC64) + #define TARGET_GENERIC (TARGET_GENERIC32 || TARGET_GENERIC64) + #define TARGET_AMDFAM10 (ix86_tune == PROCESSOR_AMDFAM10) ++#define TARGET_ATOM (ix86_tune == PROCESSOR_ATOM) + + /* Feature tests against the various tunings. */ + enum ix86_tune_indices { +@@ -300,6 +301,7 @@ + X86_TUNE_USE_VECTOR_FP_CONVERTS, + X86_TUNE_USE_VECTOR_CONVERTS, + X86_TUNE_FUSE_CMP_AND_BRANCH, ++ X86_TUNE_OPT_AGU, + + X86_TUNE_LAST + }; +@@ -387,6 +389,7 @@ + ix86_tune_features[X86_TUNE_USE_VECTOR_CONVERTS] + #define TARGET_FUSE_CMP_AND_BRANCH \ + ix86_tune_features[X86_TUNE_FUSE_CMP_AND_BRANCH] ++#define TARGET_OPT_AGU ix86_tune_features[X86_TUNE_OPT_AGU] + + /* Feature tests against the various architecture variations. */ + enum ix86_arch_indices { +@@ -569,6 +572,7 @@ + TARGET_CPU_DEFAULT_prescott, + TARGET_CPU_DEFAULT_nocona, + TARGET_CPU_DEFAULT_core2, ++ TARGET_CPU_DEFAULT_atom, + + TARGET_CPU_DEFAULT_geode, + TARGET_CPU_DEFAULT_k6, +@@ -2260,6 +2264,7 @@ + PROCESSOR_GENERIC32, + PROCESSOR_GENERIC64, + PROCESSOR_AMDFAM10, ++ PROCESSOR_ATOM, + PROCESSOR_max + }; + +Index: gcc/config/i386/i386.md +=================================================================== +--- a/src/gcc/config/i386/i386.md (revision 146514) ++++ b/src/gcc/config/i386/i386.md (working copy) +@@ -316,7 +316,7 @@ + + + ;; Processor type. +-(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2, ++(define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,atom, + generic64,amdfam10" + (const (symbol_ref "ix86_schedule"))) + +@@ -612,6 +612,12 @@ + (define_attr "i387_cw" "trunc,floor,ceil,mask_pm,uninitialized,any" + (const_string "any")) + ++;; Define attribute to classify add/sub insns that consumes carry flag (CF) ++(define_attr "use_carry" "0,1" (const_string "0")) ++ ++;; Define attribute to indicate unaligned ssemov insns ++(define_attr "movu" "0,1" (const_string "0")) ++ + ;; Describe a user's asm statement. + (define_asm_attributes + [(set_attr "length" "128") +@@ -727,6 +733,7 @@ + (include "k6.md") + (include "athlon.md") + (include "geode.md") ++(include "atom.md") + + + ;; Operand and operator predicates and constraints +@@ -5790,6 +5797,7 @@ + "TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)" + "adc{q}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "DI")]) + +@@ -5864,6 +5872,7 @@ + "ix86_binary_operator_ok (PLUS, QImode, operands)" + "adc{b}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "QI")]) + +@@ -5876,6 +5885,7 @@ + "ix86_binary_operator_ok (PLUS, HImode, operands)" + "adc{w}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "HI")]) + +@@ -5888,6 +5898,7 @@ + "ix86_binary_operator_ok (PLUS, SImode, operands)" + "adc{l}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "SI")]) + +@@ -5901,6 +5912,7 @@ + "TARGET_64BIT && ix86_binary_operator_ok (PLUS, SImode, operands)" + "adc{l}\t{%2, %k0|%k0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "SI")]) + +@@ -6130,9 +6142,9 @@ + (set_attr "mode" "SI")]) + + (define_insn "*adddi_1_rex64" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r") +- (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0,r") +- (match_operand:DI 2 "x86_64_general_operand" "rme,re,le"))) ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r,r") ++ (plus:DI (match_operand:DI 1 "nonimmediate_operand" "%0,0,r,r") ++ (match_operand:DI 2 "x86_64_general_operand" "rme,re,0,le"))) + (clobber (reg:CC FLAGS_REG))] + "TARGET_64BIT && ix86_binary_operator_ok (PLUS, DImode, operands)" + { +@@ -6153,6 +6165,10 @@ + } + + default: ++ /* Use add as much as possible to replace lea for AGU optimization. */ ++ if (which_alternative == 2 && TARGET_OPT_AGU) ++ return "add{q}\t{%1, %0|%0, %1}"; ++ + gcc_assert (rtx_equal_p (operands[0], operands[1])); + + /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'. +@@ -6171,8 +6187,11 @@ + } + } + [(set (attr "type") +- (cond [(eq_attr "alternative" "2") ++ (cond [(and (eq_attr "alternative" "2") ++ (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0))) + (const_string "lea") ++ (eq_attr "alternative" "3") ++ (const_string "lea") + ; Current assemblers are broken and do not allow @GOTOFF in + ; ought but a memory context. + (match_operand:DI 2 "pic_symbolic_operand" "") +@@ -6189,8 +6208,8 @@ + (plus:DI (match_operand:DI 1 "register_operand" "") + (match_operand:DI 2 "x86_64_nonmemory_operand" ""))) + (clobber (reg:CC FLAGS_REG))] +- "TARGET_64BIT && reload_completed +- && true_regnum (operands[0]) != true_regnum (operands[1])" ++ "TARGET_64BIT && reload_completed ++ && ix86_lea_for_add_ok (PLUS, insn, operands)" + [(set (match_dup 0) + (plus:DI (match_dup 1) + (match_dup 2)))] +@@ -6394,9 +6413,9 @@ + + + (define_insn "*addsi_1" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,rm,r") +- (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,r") +- (match_operand:SI 2 "general_operand" "g,ri,li"))) ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=r,rm,r,r") ++ (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,0,r,r") ++ (match_operand:SI 2 "general_operand" "g,ri,0,li"))) + (clobber (reg:CC FLAGS_REG))] + "ix86_binary_operator_ok (PLUS, SImode, operands)" + { +@@ -6417,6 +6436,10 @@ + } + + default: ++ /* Use add as much as possible to replace lea for AGU optimization. */ ++ if (which_alternative == 2 && TARGET_OPT_AGU) ++ return "add{l}\t{%1, %0|%0, %1}"; ++ + gcc_assert (rtx_equal_p (operands[0], operands[1])); + + /* Make things pretty and `subl $4,%eax' rather than `addl $-4, %eax'. +@@ -6433,7 +6456,10 @@ + } + } + [(set (attr "type") +- (cond [(eq_attr "alternative" "2") ++ (cond [(and (eq_attr "alternative" "2") ++ (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0))) ++ (const_string "lea") ++ (eq_attr "alternative" "3") + (const_string "lea") + ; Current assemblers are broken and do not allow @GOTOFF in + ; ought but a memory context. +@@ -6451,8 +6477,7 @@ + (plus (match_operand 1 "register_operand" "") + (match_operand 2 "nonmemory_operand" ""))) + (clobber (reg:CC FLAGS_REG))] +- "reload_completed +- && true_regnum (operands[0]) != true_regnum (operands[1])" ++ "reload_completed && ix86_lea_for_add_ok (PLUS, insn, operands)" + [(const_int 0)] + { + rtx pat; +@@ -7553,6 +7578,7 @@ + "TARGET_64BIT && ix86_binary_operator_ok (MINUS, DImode, operands)" + "sbb{q}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "DI")]) + +@@ -7601,6 +7627,7 @@ + "ix86_binary_operator_ok (MINUS, QImode, operands)" + "sbb{b}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "QI")]) + +@@ -7613,6 +7640,7 @@ + "ix86_binary_operator_ok (MINUS, HImode, operands)" + "sbb{w}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "HI")]) + +@@ -7625,6 +7653,7 @@ + "ix86_binary_operator_ok (MINUS, SImode, operands)" + "sbb{l}\t{%2, %0|%0, %2}" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "mode" "SI")]) + +@@ -15244,6 +15273,7 @@ + "reload_completed" + "ret" + [(set_attr "length" "1") ++ (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "0") + (set_attr "modrm" "0")]) + +@@ -15256,6 +15286,7 @@ + "reload_completed" + "rep\;ret" + [(set_attr "length" "1") ++ (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "0") + (set_attr "prefix_rep" "1") + (set_attr "modrm" "0")]) +@@ -15266,6 +15297,7 @@ + "reload_completed" + "ret\t%0" + [(set_attr "length" "3") ++ (set_attr "atom_unit" "jeu") + (set_attr "length_immediate" "2") + (set_attr "modrm" "0")]) + +@@ -16387,6 +16419,7 @@ + "TARGET_SSE_MATH" + "%vrcpss\t{%1, %d0|%d0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "rcp") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "SF")]) + +@@ -16738,6 +16771,7 @@ + "TARGET_SSE_MATH" + "%vrsqrtss\t{%1, %d0|%d0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "rcp") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "SF")]) + +@@ -16758,6 +16792,7 @@ + "SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH" + "%vsqrts\t{%1, %d0|%d0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "sqrt") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "") + (set_attr "athlon_decode" "*") +@@ -19811,6 +19846,7 @@ + ; Since we don't have the proper number of operands for an alu insn, + ; fill in all the blanks. + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") +@@ -19826,6 +19862,7 @@ + "" + "sbb{q}\t%0, %0" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") +@@ -19869,6 +19906,7 @@ + ; Since we don't have the proper number of operands for an alu insn, + ; fill in all the blanks. + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") +@@ -19884,6 +19922,7 @@ + "" + "sbb{l}\t%0, %0" + [(set_attr "type" "alu") ++ (set_attr "use_carry" "1") + (set_attr "pent_pair" "pu") + (set_attr "memory" "none") + (set_attr "imm_disp" "false") +@@ -20216,7 +20255,8 @@ + } + } + [(set (attr "type") +- (cond [(eq_attr "alternative" "0") ++ (cond [(and (eq_attr "alternative" "0") ++ (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0))) + (const_string "alu") + (match_operand:SI 2 "const0_operand" "") + (const_string "imov") +@@ -20259,7 +20299,8 @@ + } + } + [(set (attr "type") +- (cond [(eq_attr "alternative" "0") ++ (cond [(and (eq_attr "alternative" "0") ++ (eq (symbol_ref "TARGET_OPT_AGU") (const_int 0))) + (const_string "alu") + (match_operand:DI 2 "const0_operand" "") + (const_string "imov") +@@ -21751,6 +21792,7 @@ + return patterns[locality]; + } + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "prefetch") + (set_attr "memory" "none")]) + + (define_insn "*prefetch_sse_rex" +@@ -21769,6 +21811,7 @@ + return patterns[locality]; + } + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "prefetch") + (set_attr "memory" "none")]) + + (define_insn "*prefetch_3dnow" +Index: gcc/config/i386/atom.md +=================================================================== +--- a/src/gcc/config/i386/atom.md (revision 0) ++++ b/src/gcc/config/i386/atom.md (revision 0) +@@ -0,0 +1,795 @@ ++;; Atom Scheduling ++;; Copyright (C) 2009 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 ++;; . ++;; ++;; Atom is an in-order core with two integer pipelines. ++ ++ ++(define_attr "atom_unit" "sishuf,simul,jeu,complex,other" ++ (const_string "other")) ++ ++(define_attr "atom_sse_attr" "rcp,movdup,lfence,fence,prefetch,sqrt,mxcsr,other" ++ (const_string "other")) ++ ++(define_automaton "atom") ++ ++;; Atom has two ports: port 0 and port 1 connecting to all execution units ++(define_cpu_unit "atom-port-0,atom-port-1" "atom") ++ ++;; EU: Execution Unit ++;; Atom EUs are connected by port 0 or port 1. ++ ++(define_cpu_unit "atom-eu-0, atom-eu-1, ++ atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4" ++ "atom") ++ ++;; Some EUs have duplicated copied and can be accessed via either ++;; port 0 or port 1 ++;; (define_reservation "atom-port-either" "(atom-port-0 | atom-port-1)") ++ ++;;; Some instructions is dual-pipe execution, need both ports ++;;; Complex multi-op macro-instructoins need both ports and all EUs ++(define_reservation "atom-port-dual" "(atom-port-0 + atom-port-1)") ++(define_reservation "atom-all-eu" "(atom-eu-0 + atom-eu-1 + ++ atom-imul-1 + atom-imul-2 + atom-imul-3 + ++ atom-imul-4)") ++ ++;;; Most of simple instructions have 1 cycle latency. Some of them ++;;; issue in port 0, some in port 0 and some in either port. ++(define_reservation "atom-simple-0" "(atom-port-0 + atom-eu-0)") ++(define_reservation "atom-simple-1" "(atom-port-1 + atom-eu-1)") ++(define_reservation "atom-simple-either" "(atom-simple-0 | atom-simple-1)") ++ ++;;; Some insn issues in port 0 with 3 cycle latency and 1 cycle tput ++(define_reservation "atom-eu-0-3-1" "(atom-port-0 + atom-eu-0, nothing*2)") ++ ++;;; fmul insn can have 4 or 5 cycles latency ++(define_reservation "atom-fmul-5c" "(atom-port-0 + atom-eu-0), nothing*4") ++(define_reservation "atom-fmul-4c" "(atom-port-0 + atom-eu-0), nothing*3") ++ ++;;; fadd can has 5 cycles latency depends on instruction forms ++(define_reservation "atom-fadd-5c" "(atom-port-1 + atom-eu-1), nothing*5") ++ ++;;; imul insn has 5 cycles latency ++(define_reservation "atom-imul-32" ++ "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4, ++ atom-port-0") ++;;; imul instruction excludes other non-FP instructions. ++(exclusion_set "atom-eu-0, atom-eu-1" ++ "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4") ++ ++;;; dual-execution instructions can have 1,2,4,5 cycles latency depends on ++;;; instruction forms ++(define_reservation "atom-dual-1c" "(atom-port-dual + atom-eu-0 + atom-eu-1)") ++(define_reservation "atom-dual-2c" ++ "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing)") ++(define_reservation "atom-dual-5c" ++ "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing*4)") ++ ++;;; Complex macro-instruction has variants of latency, and uses both ports. ++(define_reservation "atom-complex" "(atom-port-dual + atom-all-eu)") ++ ++(define_insn_reservation "atom_other" 9 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "other") ++ (eq_attr "atom_unit" "!jeu"))) ++ "atom-complex, atom-all-eu*8") ++ ++;; return has type "other" with atom_unit "jeu" ++(define_insn_reservation "atom_other_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "other") ++ (eq_attr "atom_unit" "jeu"))) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_multi" 9 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "multi")) ++ "atom-complex, atom-all-eu*8") ++ ++;; Normal alu insns without carry ++(define_insn_reservation "atom_alu" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "none") ++ (eq_attr "use_carry" "0")))) ++ "atom-simple-either") ++ ++;; Normal alu insns without carry ++(define_insn_reservation "atom_alu_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "!none") ++ (eq_attr "use_carry" "0")))) ++ "atom-simple-either") ++ ++;; Alu insn consuming CF, such as add/sbb ++(define_insn_reservation "atom_alu_carry" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "none") ++ (eq_attr "use_carry" "1")))) ++ "atom-simple-either") ++ ++;; Alu insn consuming CF, such as add/sbb ++(define_insn_reservation "atom_alu_carry_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "!none") ++ (eq_attr "use_carry" "1")))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_alu1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_alu1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_negnot" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "negnot") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_negnot_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "negnot") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_imov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_imov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; 16<-16, 32<-32 ++(define_insn_reservation "atom_imovx" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "none") ++ (ior (and (match_operand:HI 0 "register_operand") ++ (match_operand:HI 1 "general_operand")) ++ (and (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "general_operand")))))) ++ "atom-simple-either") ++ ++;; 16<-16, 32<-32, mem ++(define_insn_reservation "atom_imovx_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "!none") ++ (ior (and (match_operand:HI 0 "register_operand") ++ (match_operand:HI 1 "general_operand")) ++ (and (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "general_operand")))))) ++ "atom-simple-either") ++ ++;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8 ++(define_insn_reservation "atom_imovx_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "none") ++ (ior (match_operand:QI 0 "register_operand") ++ (ior (and (match_operand:SI 0 "register_operand") ++ (not (match_operand:SI 1 "general_operand"))) ++ (match_operand:DI 0 "register_operand")))))) ++ "atom-simple-0") ++ ++;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8, mem ++(define_insn_reservation "atom_imovx_2_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "!none") ++ (ior (match_operand:QI 0 "register_operand") ++ (ior (and (match_operand:SI 0 "register_operand") ++ (not (match_operand:SI 1 "general_operand"))) ++ (match_operand:DI 0 "register_operand")))))) ++ "atom-simple-0") ++ ++;; 16<-8 ++(define_insn_reservation "atom_imovx_3" 3 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (match_operand:HI 0 "register_operand") ++ (match_operand:QI 1 "general_operand")))) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_lea" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "lea") ++ (eq_attr "mode" "!HI"))) ++ "atom-simple-either") ++ ++;; lea 16bit address is complex insn ++(define_insn_reservation "atom_lea_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "lea") ++ (eq_attr "mode" "HI"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_incdec" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "incdec") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_incdec_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "incdec") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; simple shift instruction use SHIFT eu, none memory ++(define_insn_reservation "atom_ishift" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (and (eq_attr "memory" "none") (eq_attr "prefix_0f" "0")))) ++ "atom-simple-0") ++ ++;; simple shift instruction use SHIFT eu, memory ++(define_insn_reservation "atom_ishift_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (and (eq_attr "memory" "!none") (eq_attr "prefix_0f" "0")))) ++ "atom-simple-0") ++ ++;; DF shift (prefixed with 0f) is complex insn with latency of 7 cycles ++(define_insn_reservation "atom_ishift_3" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (eq_attr "prefix_0f" "1"))) ++ "atom-complex, atom-all-eu*6") ++ ++(define_insn_reservation "atom_ishift1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_ishift1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_imul" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (and (eq_attr "memory" "none") (eq_attr "mode" "SI")))) ++ "atom-imul-32") ++ ++(define_insn_reservation "atom_imul_mem" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (and (eq_attr "memory" "!none") (eq_attr "mode" "SI")))) ++ "atom-imul-32") ++ ++;; latency set to 10 as common 64x64 imul ++(define_insn_reservation "atom_imul_3" 10 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (eq_attr "mode" "!SI"))) ++ "atom-complex, atom-all-eu*9") ++ ++(define_insn_reservation "atom_idiv" 65 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "idiv")) ++ "atom-complex, atom-all-eu*32, nothing*32") ++ ++(define_insn_reservation "atom_icmp" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmp") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_icmp_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmp") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_test" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "test") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_test_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "test") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_ibr" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "!load"))) ++ "atom-simple-1") ++ ++;; complex if jump target is from address ++(define_insn_reservation "atom_ibr_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "load"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_setcc" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "!store"))) ++ "atom-simple-either") ++ ++;; 2 cycles complex if target is in memory ++(define_insn_reservation "atom_setcc_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "store"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_icmov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_icmov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; UCODE if segreg, ignored ++(define_insn_reservation "atom_push" 2 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "push")) ++ "atom-dual-2c") ++ ++;; pop r64 is 1 cycle. UCODE if segreg, ignored ++(define_insn_reservation "atom_pop" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "pop") ++ (eq_attr "mode" "DI"))) ++ "atom-dual-1c") ++ ++;; pop non-r64 is 2 cycles. UCODE if segreg, ignored ++(define_insn_reservation "atom_pop_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "pop") ++ (eq_attr "mode" "!DI"))) ++ "atom-dual-2c") ++ ++;; UCODE if segreg, ignored ++(define_insn_reservation "atom_call" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "call")) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_callv" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "callv")) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_leave" 3 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "leave")) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_str" 3 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "str")) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_sselog" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_sselog_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_sselog1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_sselog1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++;; not pmad, not psad ++(define_insn_reservation "atom_sseiadd" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "!simul") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-simple-either") ++ ++;; pmad, psad and 64 ++(define_insn_reservation "atom_sseiadd_2" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "simul" ) ++ (eq_attr "mode" "DI"))))) ++ "atom-fmul-4c") ++ ++;; pmad, psad and 128 ++(define_insn_reservation "atom_sseiadd_3" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "simul" ) ++ (eq_attr "mode" "TI"))))) ++ "atom-fmul-5c") ++ ++;; if paddq(64 bit op), phadd/phsub ++(define_insn_reservation "atom_sseiadd_4" 6 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (ior (match_operand:V2DI 0 "register_operand") ++ (eq_attr "atom_unit" "complex")))) ++ "atom-complex, atom-all-eu*5") ++ ++;; if immediate op. ++(define_insn_reservation "atom_sseishft" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "atom_unit" "!sishuf") ++ (match_operand 2 "immediate_operand")))) ++ "atom-simple-either") ++ ++;; if palignr or psrldq ++(define_insn_reservation "atom_sseishft_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "atom_unit" "sishuf") ++ (match_operand 2 "immediate_operand")))) ++ "atom-simple-0") ++ ++;; if reg/mem op ++(define_insn_reservation "atom_sseishft_3" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (not (match_operand 2 "immediate_operand")))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_sseimul" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "sseimul")) ++ "atom-simple-0") ++ ++;; rcpss or rsqrtss ++(define_insn_reservation "atom_sse" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "atom_sse_attr" "rcp") (eq_attr "mode" "SF")))) ++ "atom-fmul-4c") ++ ++;; movshdup, movsldup. Suggest to type sseishft ++(define_insn_reservation "atom_sse_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (eq_attr "atom_sse_attr" "movdup"))) ++ "atom-simple-0") ++ ++;; lfence ++(define_insn_reservation "atom_sse_3" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (eq_attr "atom_sse_attr" "lfence"))) ++ "atom-simple-either") ++ ++;; sfence,clflush,mfence, prefetch ++(define_insn_reservation "atom_sse_4" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (ior (eq_attr "atom_sse_attr" "fence") ++ (eq_attr "atom_sse_attr" "prefetch")))) ++ "atom-simple-0") ++ ++;; rcpps, rsqrtss, sqrt, ldmxcsr ++(define_insn_reservation "atom_sse_5" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (ior (ior (eq_attr "atom_sse_attr" "sqrt") ++ (eq_attr "atom_sse_attr" "mxcsr")) ++ (and (eq_attr "atom_sse_attr" "rcp") ++ (eq_attr "mode" "V4SF"))))) ++ "atom-complex, atom-all-eu*6") ++ ++;; xmm->xmm ++(define_insn_reservation "atom_ssemov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "xy")))) ++ "atom-simple-either") ++ ++;; reg->xmm ++(define_insn_reservation "atom_ssemov_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "r")))) ++ "atom-simple-0") ++ ++;; xmm->reg ++(define_insn_reservation "atom_ssemov_3" 3 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "r") (match_operand 1 "register_operand" "xy")))) ++ "atom-eu-0-3-1") ++ ++;; mov mem ++(define_insn_reservation "atom_ssemov_4" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "movu" "0") (eq_attr "memory" "!none")))) ++ "atom-simple-0") ++ ++;; movu mem ++(define_insn_reservation "atom_ssemov_5" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (ior (eq_attr "movu" "1") (eq_attr "memory" "!none")))) ++ "atom-complex, atom-all-eu") ++ ++;; no memory simple ++(define_insn_reservation "atom_sseadd" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "mode" "!V2DF") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-fadd-5c") ++ ++;; memory simple ++(define_insn_reservation "atom_sseadd_mem" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "!none") ++ (and (eq_attr "mode" "!V2DF") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-dual-5c") ++ ++;; maxps, minps, *pd, hadd, hsub ++(define_insn_reservation "atom_sseadd_3" 8 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (ior (eq_attr "mode" "V2DF") (eq_attr "atom_unit" "complex")))) ++ "atom-complex, atom-all-eu*7") ++ ++;; Except dppd/dpps ++(define_insn_reservation "atom_ssemul" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "mode" "!SF"))) ++ "atom-fmul-5c") ++ ++;; Except dppd/dpps, 4 cycle if mulss ++(define_insn_reservation "atom_ssemul_2" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "mode" "SF"))) ++ "atom-fmul-4c") ++ ++(define_insn_reservation "atom_ssecmp" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssecmp")) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_ssecomi" 10 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssecomi")) ++ "atom-complex, atom-all-eu*9") ++ ++;; no memory and cvtpi2ps, cvtps2pi, cvttps2pi ++(define_insn_reservation "atom_ssecvt" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "register_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "register_operand"))))) ++ "atom-fadd-5c") ++ ++;; memory and cvtpi2ps, cvtps2pi, cvttps2pi ++(define_insn_reservation "atom_ssecvt_2" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "memory_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "memory_operand"))))) ++ "atom-dual-5c") ++ ++;; otherwise. 7 cycles average for cvtss2sd ++(define_insn_reservation "atom_ssecvt_3" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (not (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "nonimmediate_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "nonimmediate_operand")))))) ++ "atom-complex, atom-all-eu*6") ++ ++;; memory and cvtsi2sd ++(define_insn_reservation "atom_sseicvt" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseicvt") ++ (and (match_operand:V2DF 0 "register_operand") ++ (match_operand:SI 1 "memory_operand")))) ++ "atom-dual-5c") ++ ++;; otherwise. 8 cycles average for cvtsd2si ++(define_insn_reservation "atom_sseicvt_2" 8 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseicvt") ++ (not (and (match_operand:V2DF 0 "register_operand") ++ (match_operand:SI 1 "memory_operand"))))) ++ "atom-complex, atom-all-eu*7") ++ ++(define_insn_reservation "atom_ssediv" 62 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssediv")) ++ "atom-complex, atom-all-eu*12, nothing*49") ++ ++;; simple for fmov ++(define_insn_reservation "atom_fmov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++;; simple for fmov ++(define_insn_reservation "atom_fmov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; Define bypass here ++ ++;; There will be no stall from lea to non-mem EX insns ++(define_bypass 0 "atom_lea" ++ "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec, atom_setcc, atom_icmov, atom_pop") ++ ++(define_bypass 0 "atom_lea" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "!ix86_agi_dependent") ++ ++;; There will be 3 cycles stall from EX insns to AGAN insns LEA ++(define_bypass 4 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_lea") ++ ++;; There will be 3 cycles stall from EX insns to insns need addr calculation ++(define_bypass 4 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_negnot_mem, atom_imov_mem, atom_incdec_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imul_mem, atom_icmp_mem, ++ atom_test_mem, atom_icmov_mem, atom_sselog_mem, ++ atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_agi_dependent") ++ ++;; Stall from imul to lea is 8 cycles. ++(define_bypass 9 "atom_imul, atom_imul_mem" "atom_lea") ++ ++;; Stall from imul to memory address is 8 cycles. ++(define_bypass 9 "atom_imul, atom_imul_mem" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_negnot_mem, atom_imov_mem, atom_incdec_mem, ++ atom_ishift_mem, atom_ishift1_mem, atom_rotate_mem, ++ atom_rotate1_mem, atom_imul_mem, atom_icmp_mem, ++ atom_test_mem, atom_icmov_mem, atom_sselog_mem, ++ atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem" ++ "ix86_agi_dependent") ++ ++;; There will be 0 cycle stall from cmp/test to jcc ++ ++;; There will be 1 cycle stall from flag producer to cmov and adc/sbb ++(define_bypass 2 "atom_icmp, atom_test, atom_alu, atom_alu_carry, ++ atom_alu1, atom_negnot, atom_incdec, atom_ishift, ++ atom_ishift1, atom_rotate, atom_rotate1" ++ "atom_icmov, atom_alu_carry") ++ ++;; lea to shift count stall is 2 cycles ++(define_bypass 3 "atom_lea" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_dep_by_shift_count") ++ ++;; lea to shift source stall is 1 cycle ++(define_bypass 2 "atom_lea" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1" ++ "!ix86_dep_by_shift_count") ++ ++;; non-lea to shift count stall is 1 cycle ++(define_bypass 2 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_dep_by_shift_count") +Index: gcc/config/i386/sse.md +=================================================================== +--- a/src/gcc/config/i386/sse.md (revision 146514) ++++ b/src/gcc/config/i386/sse.md (working copy) +@@ -338,6 +338,7 @@ + && !(MEM_P (operands[0]) && MEM_P (operands[1]))" + "vmovup\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "movu" "1") + (set_attr "prefix" "vex") + (set_attr "mode" "")]) + +@@ -363,6 +364,7 @@ + && !(MEM_P (operands[0]) && MEM_P (operands[1]))" + "movup\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "movu" "1") + (set_attr "mode" "")]) + + (define_insn "avx_movdqu" +@@ -373,6 +375,7 @@ + "TARGET_AVX && !(MEM_P (operands[0]) && MEM_P (operands[1]))" + "vmovdqu\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "movu" "1") + (set_attr "prefix" "vex") + (set_attr "mode" "")]) + +@@ -383,6 +386,7 @@ + "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))" + "movdqu\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") ++ (set_attr "movu" "1") + (set_attr "prefix_data16" "1") + (set_attr "mode" "TI")]) + +@@ -424,7 +428,7 @@ + UNSPEC_MOVNT))] + "TARGET_SSE2" + "movntdq\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix_data16" "1") + (set_attr "mode" "TI")]) + +@@ -434,7 +438,7 @@ + UNSPEC_MOVNT))] + "TARGET_SSE2" + "movnti\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "mode" "V2DF")]) + + (define_insn "avx_lddqu" +@@ -445,6 +449,7 @@ + "TARGET_AVX" + "vlddqu\t{%1, %0|%0, %1}" + [(set_attr "type" "ssecvt") ++ (set_attr "movu" "1") + (set_attr "prefix" "vex") + (set_attr "mode" "")]) + +@@ -454,7 +459,8 @@ + UNSPEC_LDDQU))] + "TARGET_SSE3" + "lddqu\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") ++ (set_attr "movu" "1") + (set_attr "prefix_rep" "1") + (set_attr "mode" "TI")]) + +@@ -761,6 +767,7 @@ + "TARGET_SSE" + "%vrcpps\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "rcp") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "V4SF")]) + +@@ -787,6 +794,7 @@ + "TARGET_SSE" + "rcpss\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "rcp") + (set_attr "mode" "SF")]) + + (define_expand "sqrtv8sf2" +@@ -832,6 +840,7 @@ + "TARGET_SSE" + "%vsqrtps\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "sqrt") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "V4SF")]) + +@@ -876,6 +885,7 @@ + "SSE_VEC_FLOAT_MODE_P (mode)" + "sqrts\t{%1, %0|%0, %1}" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "sqrt") + (set_attr "mode" "")]) + + (define_expand "rsqrtv8sf2" +@@ -1039,7 +1049,7 @@ + (const_int 1)))] + "SSE_VEC_FLOAT_MODE_P (mode)" + "s\t{%2, %0|%0, %2}" +- [(set_attr "type" "sse") ++ [(set_attr "type" "sseadd") + (set_attr "mode" "")]) + + ;; These versions of the min/max patterns implement exactly the operations +@@ -1175,6 +1185,7 @@ + "TARGET_SSE3" + "addsubpd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseadd") ++ (set_attr "atom_unit" "complex") + (set_attr "mode" "V2DF")]) + + (define_insn "avx_hv4df3" +@@ -1298,6 +1309,7 @@ + "TARGET_SSE3" + "hps\t{%2, %0|%0, %2}" + [(set_attr "type" "sseadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_rep" "1") + (set_attr "mode" "V4SF")]) + +@@ -5066,6 +5078,7 @@ + "TARGET_SSE2 && ix86_binary_operator_ok (MULT, V8HImode, operands)" + "pmaddwd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "simul") + (set_attr "prefix_data16" "1") + (set_attr "mode" "TI")]) + +@@ -7025,6 +7038,7 @@ + movq\t{%H1, %0|%0, %H1} + mov{q}\t{%H1, %0|%0, %H1}" + [(set_attr "type" "ssemov,sseishft,ssemov,imov") ++ (set_attr "atom_unit" "*,sishuf,*,*") + (set_attr "memory" "*,none,*,*") + (set_attr "mode" "V2SF,TI,TI,DI")]) + +@@ -7057,6 +7071,7 @@ + psrldq\t{$8, %0|%0, 8} + movq\t{%H1, %0|%0, %H1}" + [(set_attr "type" "ssemov,sseishft,ssemov") ++ (set_attr "atom_unit" "*,sishuf,*") + (set_attr "memory" "*,none,*") + (set_attr "mode" "V2SF,TI,TI")]) + +@@ -7614,6 +7629,7 @@ + "TARGET_SSE2" + "psadbw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "simul") + (set_attr "prefix_data16" "1") + (set_attr "mode" "TI")]) + +@@ -7635,7 +7651,7 @@ + UNSPEC_MOVMSK))] + "SSE_VEC_FLOAT_MODE_P (mode)" + "%vmovmskp\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "")]) + +@@ -7645,7 +7661,7 @@ + UNSPEC_MOVMSK))] + "TARGET_SSE2" + "%vpmovmskb\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix_data16" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "SI")]) +@@ -7668,7 +7684,7 @@ + "TARGET_SSE2 && !TARGET_64BIT" + ;; @@@ check ordering of operands in intel/nonintel syntax + "%vmaskmovdqu\t{%2, %1|%1, %2}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix_data16" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) +@@ -7682,7 +7698,7 @@ + "TARGET_SSE2 && TARGET_64BIT" + ;; @@@ check ordering of operands in intel/nonintel syntax + "%vmaskmovdqu\t{%2, %1|%1, %2}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix_data16" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) +@@ -7693,6 +7709,7 @@ + "TARGET_SSE" + "%vldmxcsr\t%0" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "mxcsr") + (set_attr "prefix" "maybe_vex") + (set_attr "memory" "load")]) + +@@ -7702,6 +7719,7 @@ + "TARGET_SSE" + "%vstmxcsr\t%0" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "mxcsr") + (set_attr "prefix" "maybe_vex") + (set_attr "memory" "store")]) + +@@ -7720,6 +7738,7 @@ + "TARGET_SSE || TARGET_3DNOW_A" + "sfence" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "fence") + (set_attr "memory" "unknown")]) + + (define_insn "sse2_clflush" +@@ -7728,6 +7747,7 @@ + "TARGET_SSE2" + "clflush\t%a0" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "fence") + (set_attr "memory" "unknown")]) + + (define_expand "sse2_mfence" +@@ -7745,6 +7765,7 @@ + "TARGET_64BIT || TARGET_SSE2" + "mfence" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "fence") + (set_attr "memory" "unknown")]) + + (define_expand "sse2_lfence" +@@ -7762,6 +7783,7 @@ + "TARGET_SSE2" + "lfence" + [(set_attr "type" "sse") ++ (set_attr "atom_sse_attr" "lfence") + (set_attr "memory" "unknown")]) + + (define_insn "sse3_mwait" +@@ -7885,6 +7907,7 @@ + "TARGET_SSSE3" + "phaddw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -7913,6 +7936,7 @@ + "TARGET_SSSE3" + "phaddw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -7967,6 +7991,7 @@ + "TARGET_SSSE3" + "phaddd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -7987,6 +8012,7 @@ + "TARGET_SSSE3" + "phaddd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8073,6 +8099,7 @@ + "TARGET_SSSE3" + "phaddsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8101,6 +8128,7 @@ + "TARGET_SSSE3" + "phaddsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8187,6 +8215,7 @@ + "TARGET_SSSE3" + "phsubw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8215,6 +8244,7 @@ + "TARGET_SSSE3" + "phsubw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8269,6 +8299,7 @@ + "TARGET_SSSE3" + "phsubd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8289,6 +8320,7 @@ + "TARGET_SSSE3" + "phsubd\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8375,6 +8407,7 @@ + "TARGET_SSSE3" + "phsubsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8403,6 +8436,7 @@ + "TARGET_SSSE3" + "phsubsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "complex") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8509,6 +8543,7 @@ + "TARGET_SSSE3" + "pmaddubsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "simul") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8547,6 +8582,7 @@ + "TARGET_SSSE3" + "pmaddubsw\t{%2, %0|%0, %2}" + [(set_attr "type" "sseiadd") ++ (set_attr "atom_unit" "simul") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8754,6 +8790,7 @@ + return "palignr\t{%3, %2, %0|%0, %2, %3}"; + } + [(set_attr "type" "sseishft") ++ (set_attr "atom_unit" "sishuf") + (set_attr "prefix_data16" "1") + (set_attr "prefix_extra" "1") + (set_attr "mode" "TI")]) +@@ -8770,6 +8807,7 @@ + return "palignr\t{%3, %2, %0|%0, %2, %3}"; + } + [(set_attr "type" "sseishft") ++ (set_attr "atom_unit" "sishuf") + (set_attr "prefix_extra" "1") + (set_attr "mode" "DI")]) + +@@ -8956,7 +8994,7 @@ + UNSPEC_MOVNTDQA))] + "TARGET_SSE4_1" + "%vmovntdqa\t{%1, %0|%0, %1}" +- [(set_attr "type" "ssecvt") ++ [(set_attr "type" "ssemov") + (set_attr "prefix_extra" "1") + (set_attr "prefix" "maybe_vex") + (set_attr "mode" "TI")]) +Index: gcc/config/i386/i386-c.c +=================================================================== +--- a/src/gcc/config/i386/i386-c.c (revision 146514) ++++ b/src/gcc/config/i386/i386-c.c (working copy) +@@ -119,6 +119,10 @@ + def_or_undef (parse_in, "__core2"); + def_or_undef (parse_in, "__core2__"); + break; ++ case PROCESSOR_ATOM: ++ def_or_undef (parse_in, "__atom"); ++ def_or_undef (parse_in, "__atom__"); ++ break; + /* use PROCESSOR_max to not set/unset the arch macro. */ + case PROCESSOR_max: + break; +@@ -187,6 +191,9 @@ + case PROCESSOR_CORE2: + def_or_undef (parse_in, "__tune_core2__"); + break; ++ case PROCESSOR_ATOM: ++ def_or_undef (parse_in, "__tune_atom__"); ++ break; + case PROCESSOR_GENERIC32: + case PROCESSOR_GENERIC64: + break; +Index: gcc/config/i386/i386-protos.h +=================================================================== +--- a/src/gcc/config/i386/i386-protos.h (revision 146514) ++++ b/src/gcc/config/i386/i386-protos.h (working copy) +@@ -85,6 +85,9 @@ + extern void ix86_expand_binary_operator (enum rtx_code, + enum machine_mode, rtx[]); + extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]); ++extern bool ix86_lea_for_add_ok (enum rtx_code, rtx, rtx[]); ++extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn); ++extern bool ix86_agi_dependent (rtx set_insn, rtx use_insn); + extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode, + rtx[]); + extern rtx ix86_build_const_vector (enum machine_mode, bool, rtx); +Index: gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c (revision 146514) ++++ b/src/gcc/config/i386/i386.c (working copy) +@@ -1036,6 +1036,79 @@ + 1, /* cond_not_taken_branch_cost. */ + }; + ++static const ++struct processor_costs atom_cost = { ++ COSTS_N_INSNS (1), /* cost of an add instruction */ ++ COSTS_N_INSNS (1) + 1, /* cost of a lea instruction */ ++ COSTS_N_INSNS (1), /* variable shift costs */ ++ COSTS_N_INSNS (1), /* constant shift costs */ ++ {COSTS_N_INSNS (3), /* cost of starting multiply for QI */ ++ COSTS_N_INSNS (4), /* HI */ ++ COSTS_N_INSNS (3), /* SI */ ++ COSTS_N_INSNS (4), /* DI */ ++ COSTS_N_INSNS (2)}, /* other */ ++ 0, /* cost of multiply per each bit set */ ++ {COSTS_N_INSNS (18), /* cost of a divide/mod for QI */ ++ COSTS_N_INSNS (26), /* HI */ ++ COSTS_N_INSNS (42), /* SI */ ++ COSTS_N_INSNS (74), /* DI */ ++ COSTS_N_INSNS (74)}, /* other */ ++ COSTS_N_INSNS (1), /* cost of movsx */ ++ COSTS_N_INSNS (1), /* cost of movzx */ ++ 8, /* "large" insn */ ++ 17, /* MOVE_RATIO */ ++ 2, /* cost for loading QImode using movzbl */ ++ {4, 4, 4}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {4, 4, 4}, /* cost of storing integer registers */ ++ 4, /* cost of reg,reg fld/fst */ ++ {12, 12, 12}, /* cost of loading fp registers ++ in SFmode, DFmode and XFmode */ ++ {6, 6, 8}, /* cost of storing fp registers ++ in SFmode, DFmode and XFmode */ ++ 2, /* cost of moving MMX register */ ++ {8, 8}, /* cost of loading MMX registers ++ in SImode and DImode */ ++ {8, 8}, /* cost of storing MMX registers ++ in SImode and DImode */ ++ 2, /* cost of moving SSE register */ ++ {8, 8, 8}, /* cost of loading SSE registers ++ in SImode, DImode and TImode */ ++ {8, 8, 8}, /* cost of storing SSE registers ++ in SImode, DImode and TImode */ ++ 5, /* MMX or SSE register to integer */ ++ 32, /* size of l1 cache. */ ++ 256, /* size of l2 cache. */ ++ 64, /* size of prefetch block */ ++ 6, /* number of parallel prefetches */ ++ 3, /* Branch cost */ ++ COSTS_N_INSNS (8), /* cost of FADD and FSUB insns. */ ++ COSTS_N_INSNS (8), /* cost of FMUL instruction. */ ++ COSTS_N_INSNS (20), /* cost of FDIV instruction. */ ++ COSTS_N_INSNS (8), /* cost of FABS instruction. */ ++ COSTS_N_INSNS (8), /* cost of FCHS instruction. */ ++ COSTS_N_INSNS (40), /* cost of FSQRT instruction. */ ++ {{libcall, {{11, loop}, {-1, rep_prefix_4_byte}}}, ++ {libcall, {{32, loop}, {64, rep_prefix_4_byte}, ++ {8192, rep_prefix_8_byte}, {-1, libcall}}}}, ++ {{libcall, {{8, loop}, {15, unrolled_loop}, ++ {2048, rep_prefix_4_byte}, {-1, libcall}}}, ++ {libcall, {{24, loop}, {32, unrolled_loop}, ++ {8192, rep_prefix_8_byte}, {-1, libcall}}}}, ++ 1, /* scalar_stmt_cost. */ ++ 1, /* scalar load_cost. */ ++ 1, /* scalar_store_cost. */ ++ 1, /* vec_stmt_cost. */ ++ 1, /* vec_to_scalar_cost. */ ++ 1, /* scalar_to_vec_cost. */ ++ 1, /* vec_align_load_cost. */ ++ 2, /* vec_unalign_load_cost. */ ++ 1, /* vec_store_cost. */ ++ 3, /* cond_taken_branch_cost. */ ++ 1, /* cond_not_taken_branch_cost. */ ++}; ++ + /* Generic64 should produce code tuned for Nocona and K8. */ + static const + struct processor_costs generic64_cost = { +@@ -1194,6 +1267,7 @@ + #define m_PENT4 (1<preds) ++ if (e->src == bb) ++ { ++ simple_loop = true; ++ break; ++ } ++ ++ if (simple_loop) ++ { ++ rtx prev = BB_END (bb); ++ while (prev ++ && prev != insn ++ && distance < LEA_SEARCH_THRESHOLD) ++ { ++ if (INSN_P (prev)) ++ { ++ distance++; ++ for (def_rec = DF_INSN_DEFS (prev); *def_rec; def_rec++) ++ if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF ++ && !DF_REF_IS_ARTIFICIAL (*def_rec) ++ && (regno1 == DF_REF_REGNO (*def_rec) ++ || regno2 == DF_REF_REGNO (*def_rec))) ++ { ++ insn_type = get_attr_type (prev); ++ if (insn_type != TYPE_LEA) ++ goto done; ++ } ++ } ++ prev = PREV_INSN (prev); ++ } ++ } ++ } ++ ++ distance = -1; ++ ++done: ++ /* get_attr_type may modify recog data. We want to make sure ++ that recog data is valid for instruction INSN, on which ++ distance_non_agu_define is called. INSN is unchanged here. */ ++ extract_insn_cached (insn); ++ return distance; ++} ++ ++/* Return the distance between INSN and the next insn that uses ++ register number REGNO0 in memory address. Return -1 if no such ++ a use is found within LEA_SEARCH_THRESHOLD or REGNO0 is set. */ ++ ++static int ++distance_agu_use (unsigned int regno0, rtx insn) ++{ ++ basic_block bb = BLOCK_FOR_INSN (insn); ++ int distance = 0; ++ df_ref *def_rec; ++ df_ref *use_rec; ++ ++ if (insn != BB_END (bb)) ++ { ++ rtx next = NEXT_INSN (insn); ++ while (next && distance < LEA_SEARCH_THRESHOLD) ++ { ++ if (INSN_P (next)) ++ { ++ distance++; ++ ++ for (use_rec = DF_INSN_USES (next); *use_rec; use_rec++) ++ if ((DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_LOAD ++ || DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_STORE) ++ && regno0 == DF_REF_REGNO (*use_rec)) ++ { ++ /* Return DISTANCE if OP0 is used in memory ++ address in NEXT. */ ++ return distance; ++ } ++ ++ for (def_rec = DF_INSN_DEFS (next); *def_rec; def_rec++) ++ if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF ++ && !DF_REF_IS_ARTIFICIAL (*def_rec) ++ && regno0 == DF_REF_REGNO (*def_rec)) ++ { ++ /* Return -1 if OP0 is set in NEXT. */ ++ return -1; ++ } ++ } ++ if (next == BB_END (bb)) ++ break; ++ next = NEXT_INSN (next); ++ } ++ } ++ ++ if (distance < LEA_SEARCH_THRESHOLD) ++ { ++ edge e; ++ edge_iterator ei; ++ bool simple_loop = false; ++ ++ FOR_EACH_EDGE (e, ei, bb->succs) ++ if (e->dest == bb) ++ { ++ simple_loop = true; ++ break; ++ } ++ ++ if (simple_loop) ++ { ++ rtx next = BB_HEAD (bb); ++ while (next ++ && next != insn ++ && distance < LEA_SEARCH_THRESHOLD) ++ { ++ if (INSN_P (next)) ++ { ++ distance++; ++ ++ for (use_rec = DF_INSN_USES (next); *use_rec; use_rec++) ++ if ((DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_LOAD ++ || DF_REF_TYPE (*use_rec) == DF_REF_REG_MEM_STORE) ++ && regno0 == DF_REF_REGNO (*use_rec)) ++ { ++ /* Return DISTANCE if OP0 is used in memory ++ address in NEXT. */ ++ return distance; ++ } ++ ++ for (def_rec = DF_INSN_DEFS (next); *def_rec; def_rec++) ++ if (DF_REF_TYPE (*def_rec) == DF_REF_REG_DEF ++ && !DF_REF_IS_ARTIFICIAL (*def_rec) ++ && regno0 == DF_REF_REGNO (*def_rec)) ++ { ++ /* Return -1 if OP0 is set in NEXT. */ ++ return -1; ++ } ++ ++ } ++ next = NEXT_INSN (next); ++ } ++ } ++ } ++ ++ return -1; ++} ++ ++/* Define this macro to tune LEA priority vs ADD, it take effect when ++ there is a dilemma of choicing LEA or ADD ++ Negative value: ADD is more preferred than LEA ++ Zero: Netrual ++ Positive value: LEA is more preferred than ADD*/ ++#define IX86_LEA_PRIORITY 2 ++ ++/* Return true if it is ok to optimize an ADD operation to LEA ++ operation to avoid flag register consumation. For the processors ++ like ATOM, if the destination register of LEA holds an actual ++ address which will be used soon, LEA is better and otherwise ADD ++ is better. */ ++ ++bool ++ix86_lea_for_add_ok (enum rtx_code code ATTRIBUTE_UNUSED, ++ rtx insn, rtx operands[]) ++{ ++ unsigned int regno0 = true_regnum (operands[0]); ++ unsigned int regno1 = true_regnum (operands[1]); ++ unsigned int regno2; ++ ++ if (!TARGET_OPT_AGU || optimize_function_for_size_p (cfun)) ++ return regno0 != regno1; ++ ++ regno2 = true_regnum (operands[2]); ++ ++ /* If a = b + c, (a!=b && a!=c), must use lea form. */ ++ if (regno0 != regno1 && regno0 != regno2) ++ return true; ++ else ++ { ++ int dist_define, dist_use; ++ dist_define = distance_non_agu_define (regno1, regno2, insn); ++ if (dist_define <= 0) ++ return true; ++ ++ /* If this insn has both backward non-agu dependence and forward ++ agu dependence, the one with short distance take effect. */ ++ dist_use = distance_agu_use (regno0, insn); ++ if (dist_use <= 0 ++ || (dist_define + IX86_LEA_PRIORITY) < dist_use) ++ return false; ++ ++ return true; ++ } ++} ++ ++/* Return true if destination reg of SET_BODY is shift count of ++ USE_BODY. */ ++ ++static bool ++ix86_dep_by_shift_count_body (const_rtx set_body, const_rtx use_body) ++{ ++ rtx set_dest; ++ rtx shift_rtx; ++ int i; ++ ++ /* Retrieve destination of SET_BODY. */ ++ switch (GET_CODE (set_body)) ++ { ++ case SET: ++ set_dest = SET_DEST (set_body); ++ if (!set_dest || !REG_P (set_dest)) ++ return false; ++ break; ++ case PARALLEL: ++ for (i = XVECLEN (set_body, 0) - 1; i >= 0; i--) ++ if (ix86_dep_by_shift_count_body (XVECEXP (set_body, 0, i), ++ use_body)) ++ return true; ++ default: ++ return false; ++ break; ++ } ++ ++ /* Retrieve shift count of USE_BODY. */ ++ switch (GET_CODE (use_body)) ++ { ++ case SET: ++ shift_rtx = XEXP (use_body, 1); ++ break; ++ case PARALLEL: ++ for (i = XVECLEN (use_body, 0) - 1; i >= 0; i--) ++ if (ix86_dep_by_shift_count_body (set_body, ++ XVECEXP (use_body, 0, i))) ++ return true; ++ default: ++ return false; ++ break; ++ } ++ ++ if (shift_rtx ++ && (GET_CODE (shift_rtx) == ASHIFT ++ || GET_CODE (shift_rtx) == LSHIFTRT ++ || GET_CODE (shift_rtx) == ASHIFTRT ++ || GET_CODE (shift_rtx) == ROTATE ++ || GET_CODE (shift_rtx) == ROTATERT)) ++ { ++ rtx shift_count = XEXP (shift_rtx, 1); ++ ++ /* Return true if shift count is dest of SET_BODY. */ ++ if (REG_P (shift_count) ++ && true_regnum (set_dest) == true_regnum (shift_count)) ++ return true; ++ } ++ ++ return false; ++} ++ ++/* Return true if destination reg of SET_INSN is shift count of ++ USE_INSN. */ ++ ++bool ++ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn) ++{ ++ return ix86_dep_by_shift_count_body (PATTERN (set_insn), ++ PATTERN (use_insn)); ++} ++ + /* Return TRUE or FALSE depending on whether the unary operator meets the + appropriate constraints. */ + +@@ -19022,6 +19423,7 @@ + switch (ix86_tune) + { + case PROCESSOR_PENTIUM: ++ case PROCESSOR_ATOM: + case PROCESSOR_K6: + return 2; + +@@ -19088,41 +19490,21 @@ + return 1; + } + +-/* A subroutine of ix86_adjust_cost -- return true iff INSN has a memory +- address with operands set by DEP_INSN. */ ++/* Return true iff USE_INSN has a memory address with operands set by ++ SET_INSN. */ + +-static int +-ix86_agi_dependent (rtx insn, rtx dep_insn, enum attr_type insn_type) ++bool ++ix86_agi_dependent (rtx set_insn, rtx use_insn) + { +- rtx addr; +- +- if (insn_type == TYPE_LEA +- && TARGET_PENTIUM) +- { +- addr = PATTERN (insn); +- +- if (GET_CODE (addr) == PARALLEL) +- addr = XVECEXP (addr, 0, 0); +- +- gcc_assert (GET_CODE (addr) == SET); +- +- addr = SET_SRC (addr); +- } +- else +- { +- int i; +- extract_insn_cached (insn); +- for (i = recog_data.n_operands - 1; i >= 0; --i) +- if (MEM_P (recog_data.operand[i])) +- { +- addr = XEXP (recog_data.operand[i], 0); +- goto found; +- } +- return 0; +- found:; +- } +- +- return modified_in_p (addr, dep_insn); ++ int i; ++ extract_insn_cached (use_insn); ++ for (i = recog_data.n_operands - 1; i >= 0; --i) ++ if (MEM_P (recog_data.operand[i])) ++ { ++ rtx addr = XEXP (recog_data.operand[i], 0); ++ return modified_in_p (addr, set_insn) != 0; ++ } ++ return false; + } + + static int +@@ -19150,7 +19532,20 @@ + { + case PROCESSOR_PENTIUM: + /* Address Generation Interlock adds a cycle of latency. */ +- if (ix86_agi_dependent (insn, dep_insn, insn_type)) ++ if (insn_type == TYPE_LEA) ++ { ++ rtx addr = PATTERN (insn); ++ ++ if (GET_CODE (addr) == PARALLEL) ++ addr = XVECEXP (addr, 0, 0); ++ ++ gcc_assert (GET_CODE (addr) == SET); ++ ++ addr = SET_SRC (addr); ++ if (modified_in_p (addr, dep_insn)) ++ cost += 1; ++ } ++ else if (ix86_agi_dependent (dep_insn, insn)) + cost += 1; + + /* ??? Compares pair with jump/setcc. */ +@@ -19160,7 +19555,7 @@ + /* Floating point stores require value to be ready one cycle earlier. */ + if (insn_type == TYPE_FMOV + && get_attr_memory (insn) == MEMORY_STORE +- && !ix86_agi_dependent (insn, dep_insn, insn_type)) ++ && !ix86_agi_dependent (dep_insn, insn)) + cost += 1; + break; + +@@ -19183,7 +19578,7 @@ + in parallel with previous instruction in case + previous instruction is not needed to compute the address. */ + if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH) +- && !ix86_agi_dependent (insn, dep_insn, insn_type)) ++ && !ix86_agi_dependent (dep_insn, insn)) + { + /* Claim moves to take one cycle, as core can issue one load + at time and the next load can start cycle later. */ +@@ -19212,7 +19607,7 @@ + in parallel with previous instruction in case + previous instruction is not needed to compute the address. */ + if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH) +- && !ix86_agi_dependent (insn, dep_insn, insn_type)) ++ && !ix86_agi_dependent (dep_insn, insn)) + { + /* Claim moves to take one cycle, as core can issue one load + at time and the next load can start cycle later. */ +@@ -19229,6 +19624,7 @@ + case PROCESSOR_ATHLON: + case PROCESSOR_K8: + case PROCESSOR_AMDFAM10: ++ case PROCESSOR_ATOM: + case PROCESSOR_GENERIC32: + case PROCESSOR_GENERIC64: + memory = get_attr_memory (insn); +@@ -19237,7 +19633,7 @@ + in parallel with previous instruction in case + previous instruction is not needed to compute the address. */ + if ((memory == MEMORY_LOAD || memory == MEMORY_BOTH) +- && !ix86_agi_dependent (insn, dep_insn, insn_type)) ++ && !ix86_agi_dependent (dep_insn, insn)) + { + enum attr_unit unit = get_attr_unit (insn); + int loadcost = 3; --- gcc-4.4-4.4.7.orig/debian/patches/gcc-build-id.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-build-id.diff @@ -0,0 +1,114 @@ +# DP: Add configure check if linker supports --build-id + +Index: a/src/gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (revision 146981) ++++ b/src/gcc/configure.ac (working copy) +@@ -3510,6 +3510,41 @@ + ;; + esac + ++AC_CACHE_CHECK(linker --build-id support, ++ gcc_cv_ld_buildid, ++ [gcc_cv_ld_buildid=no ++ if test $in_tree_ld = yes ; then ++ if test "$gcc_cv_gld_major_version" -eq 2 -a \ ++ "$gcc_cv_gld_minor_version" -ge 18 -o \ ++ "$gcc_cv_gld_major_version" -gt 2 \ ++ && test $in_tree_ld_is_elf = yes; then ++ gcc_cv_ld_buildid=yes ++ fi ++ elif test x$gcc_cv_ld != x; then ++ if $gcc_cv_ld --help 2>/dev/null | grep build-id > /dev/null; then ++ gcc_cv_ld_buildid=yes ++ fi ++ fi]) ++if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(HAVE_LD_BUILDID, 1, ++ [Define if your linker supports --build-id.]) ++fi ++ ++AC_ARG_ENABLE(linker-build-id, ++[ --enable-linker-build-id ++ compiler will always pass --build-id to linker], ++[], ++enable_linker_build_id=no) ++ ++if test x"$enable_linker_build_id" = xyes; then ++ if test x"$gcc_cv_ld_buildid" = xyes; then ++ AC_DEFINE(ENABLE_LD_BUILDID, 1, ++ [Define if gcc should always pass --build-id to linker.]) ++ else ++ AC_MSG_WARN(--build-id is not supported by your linker; --enable-linker-build-id ignored) ++ fi ++fi ++ + AC_CACHE_CHECK(linker --sysroot support, + gcc_cv_ld_sysroot, + [gcc_cv_ld_sysroot=no +Index: a/src/gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c (revision 146981) ++++ b/src/gcc/gcc.c (working copy) +@@ -730,6 +730,13 @@ + #endif + #endif + ++#ifndef LINK_BUILDID_SPEC ++# if defined(HAVE_LD_BUILDID) && defined(ENABLE_LD_BUILDID) ++# define LINK_BUILDID_SPEC "%{!r:--build-id} " ++# endif ++#endif ++ ++ + /* -u* was put back because both BSD and SysV seem to support it. */ + /* %{static:} simply prevents an error message if the target machine + doesn't handle -static. */ +@@ -1844,9 +1851,16 @@ + asm_spec = XOBFINISH (&obstack, const char *); + } + #endif +-#ifdef LINK_EH_SPEC ++ ++#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC ++# ifdef LINK_BUILDID_SPEC ++ /* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before. */ ++ obstack_grow (&obstack, LINK_BUILDID_SPEC, sizeof(LINK_BUILDID_SPEC) - 1); ++# endif ++# ifdef LINK_EH_SPEC + /* Prepend LINK_EH_SPEC to whatever link_spec we had before. */ + obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1); ++# endif + obstack_grow0 (&obstack, link_spec, strlen (link_spec)); + link_spec = XOBFINISH (&obstack, const char *); + #endif +Index: a/src/gcc/config.in +=================================================================== +--- a/src/gcc/config.in (revision 146981) ++++ b/src/gcc/config.in (working copy) +@@ -101,6 +101,12 @@ + #endif + + ++/* Define if gcc should always pass --build-id to linker. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_LD_BUILDID ++#endif ++ ++ + /* Define to 1 if translation of program messages to the user's native + language is requested. */ + #ifndef USED_FOR_TARGET +@@ -1025,6 +1031,12 @@ + #endif + + ++/* Define if your linker supports --build-id. */ ++#ifndef USED_FOR_TARGET ++#undef HAVE_LD_BUILDID ++#endif ++ ++ + /* Define if your linker supports --demangle option. */ + #ifndef USED_FOR_TARGET + #undef HAVE_LD_DEMANGLE --- gcc-4.4-4.4.7.orig/debian/patches/gcc-cloog-dl.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-cloog-dl.diff @@ -0,0 +1,182 @@ +# DP: Link against -ldl instead of -lcloog -lppl. Exit with an error when using +# DP: the Graphite loop transformation infrastructure without having the +# DP: libcloog-ppl0 package installed. Packages using these optimizations +# DP: should build-depend on libcloog-ppl0. + +2009-01-27 Jakub Jelinek + + * Makefile.in (BACKENDLIBS): Link against -ldl instead of -lcloog -lppl. + (graphite.o): Force -O, remove -fkeep-inline-functions. + * graphite.c: Include . Reference libcloog and libppl symbols + through pointers in cloog_pointers variable. + (init_cloog_pointers): New function. + (gcc_type_for_iv_of_clast_loop): Rename stmt_for argument to stmt_fora. + (graphite_transform_loops): Call init_cloog_pointers. + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -919,7 +919,7 @@ + # How to link with both our special library facilities + # and the system's installed libraries. + LIBS = @LIBS@ $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) $(LIBDECNUMBER) +-BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) ++BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl) + # Any system libraries needed just for GNAT. + SYSLIBS = @GNAT_LIBEXC@ + +@@ -3079,6 +3079,9 @@ + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(out_file) $(OUTPUT_OPTION) + ++graphite.o : \ ++ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS)) ++ + # Build auxiliary files that support ecoff format. + mips-tfile: mips-tfile.o version.o $(LIBDEPS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS) +Index: b/src/gcc/graphite.c +=================================================================== +--- a/src/gcc/graphite.c ++++ b/src/gcc/graphite.c +@@ -59,6 +59,112 @@ + #include "cloog/cloog.h" + #include "graphite.h" + ++#include ++#define DYNSYMS \ ++ DYNSYM (cloog_block_alloc); \ ++ DYNSYM (cloog_block_list_free); \ ++ DYNSYM (cloog_block_list_malloc); \ ++ DYNSYM (cloog_clast_create); \ ++ DYNSYM (cloog_clast_free); \ ++ DYNSYM (cloog_domain_free); \ ++ DYNSYM (cloog_domain_matrix2domain); \ ++ DYNSYM (cloog_initialize); \ ++ DYNSYM (cloog_loop_malloc); \ ++ DYNSYM (cloog_matrix_alloc); \ ++ DYNSYM (cloog_matrix_copy); \ ++ DYNSYM (cloog_matrix_free); \ ++ DYNSYM (cloog_matrix_print); \ ++ DYNSYM (cloog_names_malloc); \ ++ DYNSYM (cloog_names_scalarize); \ ++ DYNSYM (cloog_options_free); \ ++ DYNSYM (cloog_options_malloc); \ ++ DYNSYM (cloog_program_dump_cloog); \ ++ DYNSYM (cloog_program_extract_scalars); \ ++ DYNSYM (cloog_program_free); \ ++ DYNSYM (cloog_program_generate); \ ++ DYNSYM (cloog_program_malloc); \ ++ DYNSYM (cloog_program_print); \ ++ DYNSYM (cloog_program_scatter); \ ++ DYNSYM (cloog_statement_alloc); \ ++ DYNSYM (ppl_finalize); \ ++ DYNSYM (pprint); \ ++ DYNSYM (stmt_block); \ ++ DYNSYM (stmt_for); \ ++ DYNSYM (stmt_guard); \ ++ DYNSYM (stmt_root); \ ++ DYNSYM (stmt_user); ++static struct ++{ ++ bool inited; ++ void *h; ++#define DYNSYM(x) __typeof (x) *p_##x ++ DYNSYMS ++#undef DYNSYM ++} cloog_pointers; ++ ++#define cloog_block_alloc (*cloog_pointers.p_cloog_block_alloc) ++#define cloog_block_list_free (*cloog_pointers.p_cloog_block_list_free) ++#define cloog_block_list_malloc (*cloog_pointers.p_cloog_block_list_malloc) ++#define cloog_clast_create (*cloog_pointers.p_cloog_clast_create) ++#define cloog_clast_free (*cloog_pointers.p_cloog_clast_free) ++#define cloog_domain_free (*cloog_pointers.p_cloog_domain_free) ++#define cloog_domain_matrix2domain (*cloog_pointers.p_cloog_domain_matrix2domain) ++#define cloog_initialize (*cloog_pointers.p_cloog_initialize) ++#define cloog_loop_malloc (*cloog_pointers.p_cloog_loop_malloc) ++#define cloog_matrix_alloc (*cloog_pointers.p_cloog_matrix_alloc) ++#define cloog_matrix_copy (*cloog_pointers.p_cloog_matrix_copy) ++#define cloog_matrix_free (*cloog_pointers.p_cloog_matrix_free) ++#define cloog_matrix_print (*cloog_pointers.p_cloog_matrix_print) ++#define cloog_names_malloc (*cloog_pointers.p_cloog_names_malloc) ++#define cloog_names_scalarize (*cloog_pointers.p_cloog_names_scalarize) ++#define cloog_options_free (*cloog_pointers.p_cloog_options_free) ++#define cloog_options_malloc (*cloog_pointers.p_cloog_options_malloc) ++#define cloog_program_dump_cloog (*cloog_pointers.p_cloog_program_dump_cloog) ++#define cloog_program_extract_scalars (*cloog_pointers.p_cloog_program_extract_scalars) ++#define cloog_program_free (*cloog_pointers.p_cloog_program_free) ++#define cloog_program_generate (*cloog_pointers.p_cloog_program_generate) ++#define cloog_program_malloc (*cloog_pointers.p_cloog_program_malloc) ++#define cloog_program_print (*cloog_pointers.p_cloog_program_print) ++#define cloog_program_scatter (*cloog_pointers.p_cloog_program_scatter) ++#define cloog_statement_alloc (*cloog_pointers.p_cloog_statement_alloc) ++#define ppl_finalize (*cloog_pointers.p_ppl_finalize) ++#define pprint (*cloog_pointers.p_pprint) ++#define stmt_block (*cloog_pointers.p_stmt_block) ++#define stmt_for (*cloog_pointers.p_stmt_for) ++#define stmt_guard (*cloog_pointers.p_stmt_guard) ++#define stmt_root (*cloog_pointers.p_stmt_root) ++#define stmt_user (*cloog_pointers.p_stmt_user) ++ ++#define cloog_finalize (*cloog_pointers.p_ppl_finalize) ++ ++static bool ++init_cloog_pointers (void) ++{ ++ void *h; ++ ++ if (cloog_pointers.inited) ++ return cloog_pointers.h != NULL; ++ h = dlopen ("libcloog-ppl.so.1", RTLD_LAZY); ++ if (!h) ++ h = dlopen ("libcloog-debian.so.0", RTLD_LAZY); ++ cloog_pointers.h = h; ++ if (h == NULL) ++ return false; ++#define DYNSYM(x) \ ++ do \ ++ { \ ++ union { __typeof (cloog_pointers.p_##x) p; void *q; } u; \ ++ u.q = dlsym (h, #x); \ ++ if (u.q == NULL) \ ++ return false; \ ++ cloog_pointers.p_##x = u.p; \ ++ } \ ++ while (0) ++ DYNSYMS ++#undef DYNSYM ++ return true; ++} ++ + static VEC (scop_p, heap) *current_scops; + + /* Converts a GMP constant V to a tree and returns it. */ +@@ -4075,10 +4181,10 @@ + STMT. */ + + static tree +-gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for) ++gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_fora) + { +- struct clast_user_stmt *stmt = clast_get_body_of_loop ((struct clast_stmt *) stmt_for); +- const char *cloog_iv = stmt_for->iterator; ++ struct clast_user_stmt *stmt = clast_get_body_of_loop ((struct clast_stmt *) stmt_fora); ++ const char *cloog_iv = stmt_fora->iterator; + CloogStatement *cs = stmt->statement; + graphite_bb_p gbb = (graphite_bb_p) cloog_statement_usr (cs); + +@@ -6109,6 +6215,12 @@ + if (number_of_loops () <= 1) + return; + ++ if (!init_cloog_pointers ()) ++ { ++ sorry ("Graphite loop optimizations can only be used if the libcloog-ppl1 or libcloog-ppl0 package is installed"); ++ return; ++ } ++ + current_scops = VEC_alloc (scop_p, heap, 3); + recompute_all_dominators (); + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-d-lang.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-d-lang.diff @@ -0,0 +1,252 @@ +# DP: Add D options and specs for the gcc driver. + +--- + gcc/d/lang-specs.h | 60 +++++++++++++++++ + gcc/d/lang.opt | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 236 insertions(+), 0 deletions(-) + create mode 100644 gcc/d/lang-specs.h + create mode 100644 gcc/d/lang.opt + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/d/lang.opt 2010-08-19 19:00:10.000000000 +0100 +@@ -0,0 +1,176 @@ ++; GDC -- D front-end for GCC ++; Copyright (C) 2004 David Friedman ++; ++; This program is free software; you can redistribute it and/or modify ++; it under the terms of the GNU General Public License as published by ++; the Free Software Foundation; either version 2 of the License, or ++; (at your option) any later version. ++; ++; This program is distributed in the hope that it will be useful, ++; but WITHOUT ANY WARRANTY; without even the implied warranty of ++; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++; GNU General Public License for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with this program; if not, write to the Free Software ++; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ ++; This is used in GCC 3.4+ ++ ++Language ++D ++ ++I ++D Joined Separate ++-I Add to the end of the main include path. ++ ++J ++D Joined Separate ++-J Add to the end of the string import path. ++ ++fdeprecated ++D ++Allow use of deprecated features ++ ++fassert ++D ++Generate runtime code for assert()'s ++ ++frelease ++D ++Compile release version ++ ++funittest ++D ++Compile in unittest code ++ ++fversion= ++D Joined RejectNegative ++-fversion= Compile in version code >= or identified by ++ ++fdebug= ++D Joined RejectNegative ++-fdebug,-fdebug=,-fdebug= Compile in debug code, code <= level, or code identified by ident ++ ++fdebug ++D ++Compile in debug code ++ ++fdebug-c ++D ++With -g, generate C debug information for debugger compatibility ++ ++fdeps= ++D Joined RejectNegative ++-fdeps= Write module dependencies to filename ++ ++fd-verbose ++D ++Print information about D language processing to stdout ++ ++fd-version=1 ++D RejectNegative ++Compile as D language version 1 ++ ++femit-templates= ++D Joined RejectNegative ++-femit-templates=[normal|private|all|none|auto] Control template emission ++ ++femit-templates ++D ++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies ++ ++nostdinc ++D ++Do not search standard system include directories ++ ++fonly= ++D Joined RejectNegative ++Process all modules specified on the command line, but only generate code for the module specified by the argument. ++ ++fod= ++D Joined RejectNegative ++-fod= Specify the object output directory. Note: this is actually a driver option; the backend ignores it. ++ ++fop ++D ++Specify that the source file's parent directories should be appended to the object output directory. Note: this is actually a driver option; the backend ignores it. ++ ++fignore-unknown-pragmas ++D ++Ignore unsupported pragmas ++ ++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 ++ ++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 ++ ++fmultilib-dir= ++D Joined RejectNegative ++-fmultilib-dir= Select header multilib subdirectory ++ ++Wsign-compare ++D ++Warn about signed-unsigned comparisons ++ ++fdump-source ++D RejectNegative ++Dump decoded UTF-8 text and source from HTML ++ ++fbuiltin ++D ++Recognize built-in functions ++ ++funsigned-char ++D ++Make \"char\" unsigned by default (silently ignored in D) ++ ++fsigned-char ++D ++Make \"char\" signed by default (silently ignored in D) ++ ++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 ++ ++Wall ++D ++Enable most warning messages ++ ++Werror ++D ++Error out the compiler on warnings ++ ++fXf= ++D Joined RejectNegative ++-fXf= Write JSON file to +--- /dev/null ++++ b/src/gcc/d/lang-specs.h 2010-08-01 14:45:55.000000000 +0100 +@@ -0,0 +1,60 @@ ++/* GDC -- D front-end for GCC ++ Copyright (C) 2004 David Friedman ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++*/ ++ ++#ifndef D_D_SPEC ++#define D_D_SPEC 0 ++#endif ++ ++/* %{!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_options) ? */ ++ ++#if GCC_SPEC_FORMAT_4 ++#define D_D_SPEC_REST 0, 1, 0 ++#else ++#define D_D_SPEC_REST 0 ++#endif ++ ++#if D_DRIVER_ONLY ++#define D_USE_EXTRA_SPEC_FUNCTIONS 1 ++{".html", "@d", D_D_SPEC_REST }, ++{".HTML", "@d", D_D_SPEC_REST }, ++{".htm", "@d", D_D_SPEC_REST }, ++{".HTM", "@d", D_D_SPEC_REST }, ++{".xhtml", "@d", D_D_SPEC_REST }, ++{".XHTML", "@d", D_D_SPEC_REST }, ++{".d", "@d", D_D_SPEC_REST }, ++{".D", "@d", D_D_SPEC_REST }, ++{".dd", "@d", D_D_SPEC_REST }, ++{".DD", "@d", D_D_SPEC_REST }, ++{".di", "@d", D_D_SPEC_REST }, ++{".DI", "@d", D_D_SPEC_REST }, ++{"@d", ++ "%{!E:cc1d %i %:d-all-sources() %(cc1_options) %(cc1d) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC_REST }, ++#else ++{".d", "@d", D_D_SPEC_REST }, ++{".D", "@d", D_D_SPEC_REST }, ++{".di", "@d", D_D_SPEC_REST }, ++{".DI", "@d", D_D_SPEC_REST }, ++{"@d", ++ "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %N %{nostdinc*} %{+e*} %{I*} %{J*}\ ++ %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", D_D_SPEC_REST }, ++#endif ++ --- gcc-4.4-4.4.7.orig/debian/patches/gcc-default-format-security.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-default-format-security.diff @@ -0,0 +1,54 @@ +# DP: Turn on -Wformat -Wformat-security by default for C, C++, ObjC, ObjC++. + +--- + gcc/c-common.c | 2 +- + gcc/c.opt | 2 +- + gcc/doc/invoke.texi | 8 ++++++++ + 3 files changed, 10 insertions(+), 2 deletions(-) + +--- a/src/gcc/c-common.c ++++ b/src/gcc/c-common.c +@@ -300,7 +300,7 @@ int warn_unknown_pragmas; /* Tri state variable. */ + /* Warn about format/argument anomalies in calls to formatted I/O functions + (*printf, *scanf, strftime, strfmon, etc.). */ + +-int warn_format; ++int warn_format = 1; + + /* Warn about using __null (as NULL in C++) as sentinel. For code compiled + with GCC this doesn't matter as __null is guaranteed to have the right +--- a/src/gcc/c.opt ++++ b/src/gcc/c.opt +@@ -236,7 +236,7 @@ C ObjC C++ ObjC++ Var(warn_format_contains_nul) Warning + Warn about format strings that contain NUL bytes + + Wformat-security +-C ObjC C++ ObjC++ Var(warn_format_security) Warning ++C ObjC C++ ObjC++ Var(warn_format_security) Init(1) Warning + Warn about possible security problems with format functions + + Wformat-y2k +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -2864,6 +2864,9 @@ aspects of format checking, the options @option{-Wformat-y2k}, + @option{-Wformat-nonliteral}, @option{-Wformat-security}, and + @option{-Wformat=2} are available, but are not included in @option{-Wall}. + ++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++. To disable, use @option{-Wformat=0}. ++ + @item -Wformat-y2k + @opindex Wformat-y2k + @opindex Wno-format-y2k +@@ -2917,6 +2920,11 @@ currently a subset of what @option{-Wformat-nonliteral} warns about, but + in future warnings may be added to @option{-Wformat-security} that are not + included in @option{-Wformat-nonliteral}.) + ++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=2 + @opindex Wformat=2 + @opindex Wno-format=2 --- gcc-4.4-4.4.7.orig/debian/patches/gcc-default-fortify-source.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-default-fortify-source.diff @@ -0,0 +1,32 @@ +# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++. + +--- + gcc/doc/invoke.texi | 6 ++++++ + gcc/gcc.c | 1 + + 2 files changed, 7 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -5415,6 +5415,12 @@ also turns on the following optimization flags: + 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 +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -810,6 +810,7 @@ static const char *cpp_unique_options = + %{H} %C %{D*&U*&A*} %{i*} %Z %i\ + %{fmudflap:-D_MUDFLAP -include mf-runtime.h}\ + %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\ ++ %{!D_FORTIFY_SOURCE:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=2}}}\ + %{E|M|MM:%W{o*}}"; + + /* This contains cpp options which are common with cc1_options and are passed --- gcc-4.4-4.4.7.orig/debian/patches/gcc-default-relro.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-default-relro.diff @@ -0,0 +1,29 @@ +# DP: Turn on -Wl,-z,relro by default. + +--- + gcc/doc/invoke.texi | 3 +++ + gcc/gcc.c | 1 + + 2 files changed, 4 insertions(+), 0 deletions(-) + +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -8082,6 +8082,9 @@ For example, @samp{-Wl,-Map,output.map} passes @samp{-Map output.map} to the + linker. When using the GNU linker, you can also get the same effect with + @samp{-Wl,-Map=output.map}. + ++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option ++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. ++ + @item -u @var{symbol} + @opindex u + Pretend the symbol @var{symbol} is undefined, to force linking of +--- a/src/gcc/gcc.c~ 2010-03-21 09:32:25.000000000 +0100 ++++ b/src/gcc/gcc.c 2010-03-21 09:34:26.434838978 +0100 +@@ -749,6 +749,7 @@ + %{fuse-ld=gold:-use-gold} \ + %{fuse-ld=bfd:-use-ld}" \ + "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\ ++ -z relro\ + %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\ + %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\ + %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\ --- gcc-4.4-4.4.7.orig/debian/patches/gcc-default-ssp.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-default-ssp.diff @@ -0,0 +1,192 @@ +# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++. +# DP: Build libgcc using -fno-stack-protector. + +--- a/src/gcc/doc/invoke.texi.orig 2009-11-15 17:45:15.000000000 +0100 ++++ b/src/gcc/doc/invoke.texi 2009-11-15 17:50:09.000000000 +0100 +@@ -7172,6 +7172,10 @@ + when a function is entered and then checked when the function exits. + If a guard check fails, an error message is printed and the program exits. + ++NOTE: In Ubuntu 6.10 and later versions this option is enabled by default ++for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector} ++nor @option{-nostdlib} are found. ++ + @item -fstack-protector-all + @opindex fstack-protector-all + Like @option{-fstack-protector} except that all functions are protected. +--- a/src/gcc/objc/lang-specs.h.orig 2009-11-15 17:45:02.000000000 +0100 ++++ b/src/gcc/objc/lang-specs.h 2009-11-15 17:54:47.000000000 +0100 +@@ -31,13 +31,13 @@ + %{traditional|ftraditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ +- cc1obj -fpreprocessed -fno-section-anchors %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ ++ cc1obj -fpreprocessed -fno-section-anchors %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) -fno-section-anchors%(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {".mi", "@objc-cpp-output", 0, 0, 0}, + {"@objc-cpp-output", +- "%{!M:%{!MM:%{!E:cc1obj -fno-section-anchors -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ "%{!M:%{!MM:%{!E:cc1obj -fno-section-anchors -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}} \ + %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} ", 0, 0, 0}, + {"@objective-c-header", +@@ -48,11 +48,11 @@ + %{traditional|ftraditional|traditional-cpp:\ + %eGNU Objective C no longer supports traditional compilation}\ + %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\ +- cc1obj -fpreprocessed %b.mi %(cc1_options) -fno-section-anchors %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj -fpreprocessed %b.mi %(cc1_options) -fno-section-anchors %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}\ + %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, +--- a/src/gcc/objcp/lang-specs.h.orig 2007-08-02 12:38:44.000000000 +0200 ++++ b/src/gcc/objcp/lang-specs.h 2009-11-15 17:50:13.000000000 +0100 +@@ -36,7 +36,7 @@ + %(cpp_options) %2 -o %{save-temps:%b.mii} %{!save-temps:%g.mii} \n}\ + cc1objplus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.mii} %{!save-temps:%g.mii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@objective-c++", +@@ -46,15 +46,15 @@ + %(cpp_options) %2 -o %{save-temps:%b.mii} %{!save-temps:%g.mii} \n}\ + cc1objplus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.mii} %{!save-temps:%g.mii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".mii", "@objective-c++-cpp-output", 0, 0, 0}, + {"@objective-c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objc++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1objplus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/src/gcc/gcc.c.orig 2009-11-15 17:45:15.000000000 +0100 ++++ b/src/gcc/gcc.c 2009-11-15 17:50:10.000000000 +0100 +@@ -708,6 +708,14 @@ + #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" + #endif + ++#ifndef SSP_DEFAULT_SPEC ++#ifdef TARGET_LIBC_PROVIDES_SSP ++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!nostdlib:%{!ffreestanding:-fstack-protector}}}}" ++#else ++#define SSP_DEFAULT_SPEC "" ++#endif ++#endif ++ + #ifndef LINK_SSP_SPEC + #ifdef TARGET_LIBC_PROVIDES_SSP + #define LINK_SSP_SPEC "%{fstack-protector:}" +@@ -777,6 +785,7 @@ + static const char *cc1plus_spec = CC1PLUS_SPEC; + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *link_ssp_spec = LINK_SSP_SPEC; ++static const char *ssp_default_spec = SSP_DEFAULT_SPEC; + static const char *asm_spec = ASM_SPEC; + static const char *asm_final_spec = ASM_FINAL_SPEC; + static const char *link_spec = LINK_SPEC; +@@ -833,7 +842,7 @@ + static const char *cpp_options = + "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\ + %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\ +- %{undef} %{save-temps:-fpch-preprocess}"; ++ %{undef} %{save-temps:-fpch-preprocess} %(ssp_default)"; + + /* This contains cpp options which are not passed when the preprocessor + output will be used by another program. */ +@@ -1015,15 +1024,15 @@ + %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i} \n\ + cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} \ +- %(cc1_options)}\ ++ %(cc1_options) %(ssp_default)}\ + %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\ + %{!fsyntax-only:%(invoke_as)}} \ + %{combine:\ + %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \ + %(cpp_options) -o %{save-temps:%b.i} %{!save-temps:%g.i}}\ + %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\ +- cc1 %(cpp_unique_options) %(cc1_options)}}\ ++ cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}\ + %{!fsyntax-only:%(invoke_as)}}}}}}", 0, 1, 1}, + {"-", + "%{!E:%e-E or -x required when input is from standard input}\ +@@ -1046,7 +1055,7 @@ + %W{o*:--output-pch=%*}%V}}}}}}", 0, 0, 0}, + {".i", "@cpp-output", 0, 1, 0}, + {"@cpp-output", +- "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0}, ++ "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 1, 0}, + {".s", "@assembler", 0, 1, 0}, + {"@assembler", + "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 1, 0}, +@@ -1607,6 +1616,7 @@ + INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec), + INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec), + INIT_STATIC_SPEC ("link_ssp", &link_ssp_spec), ++ INIT_STATIC_SPEC ("ssp_default", &ssp_default_spec), + INIT_STATIC_SPEC ("endfile", &endfile_spec), + INIT_STATIC_SPEC ("link", &link_spec), + INIT_STATIC_SPEC ("lib", &lib_spec), +--- a/src/gcc/cp/lang-specs.h.orig 2007-08-06 13:10:19.000000000 +0200 ++++ b/src/gcc/cp/lang-specs.h 2009-11-15 17:50:09.000000000 +0100 +@@ -47,7 +47,7 @@ + %(cpp_options) %2 -o %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\ + cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:-o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {"@c++", +@@ -57,11 +57,11 @@ + %(cpp_options) %2 -o %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\ + cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ + %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ +- %(cc1_options) %2 %{+e1*}\ ++ %(cc1_options) %(ssp_default) %2 %{+e1*}\ + %{!fsyntax-only:%(invoke_as)}}}}", + CPLUSPLUS_CPP_SPEC, 0, 0}, + {".ii", "@c++-cpp-output", 0, 0, 0}, + {"@c++-cpp-output", + "%{!M:%{!MM:%{!E:\ +- cc1plus -fpreprocessed %i %(cc1_options) %2 %{+e*}\ ++ cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2 %{+e*}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, +--- a/src/gcc/Makefile.in.orig 2009-11-15 17:45:13.000000000 +0100 ++++ b/src/gcc/Makefile.in 2009-11-15 17:50:09.000000000 +0100 +@@ -588,6 +588,7 @@ + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) \ + -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \ ++ -fno-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +@@ -601,6 +602,7 @@ + CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \ + -finhibit-size-directive -fno-inline-functions -fno-exceptions \ + -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ ++ -fno-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional sources to handle exceptions; overridden by targets as needed. --- gcc-4.4-4.4.7.orig/debian/patches/gcc-driver-extra-langs.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-driver-extra-langs.diff @@ -0,0 +1,20 @@ +# DP: Add options and specs for languages that are not built from a source +# DP: (but built from separate sources). + +--- + gcc/Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -443,8 +443,8 @@ check_gcc_parallelize=execute.exp=execute/2* \ + execute.exp=execute/\[013-9a-zA-Z\]* \ + compile.exp dg.exp \ + struct-layout-1.exp,unsorted.exp,stackalign.exp,i386.exp +-lang_opt_files=@lang_opt_files@ $(srcdir)/c.opt $(srcdir)/common.opt +-lang_specs_files=@lang_specs_files@ ++lang_opt_files=$(sort @lang_opt_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt)) $(srcdir)/c.opt $(srcdir)/common.opt ++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h)) + lang_tree_files=@lang_tree_files@ + target_cpu_default=@target_cpu_default@ + GCC_THREAD_FILE=@thread_file@ --- gcc-4.4-4.4.7.orig/debian/patches/gcc-hash-style-both.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-hash-style-both.diff @@ -0,0 +1,164 @@ +# DP: Link using --hash-style=both (alpha, amd64, armel, ia64, i386, powerpc, ppc64, 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. + +--- + 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 +- + gcc/config/sparc/linux64.h | 6 +++--- + 9 files changed, 12 insertions(+), 12 deletions(-) + +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see + + #define ELF_DYNAMIC_LINKER LINUX_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: \ +--- a/src/gcc/config/i386/linux.h ++++ b/src/gcc/config/i386/linux.h +@@ -113,7 +113,7 @@ along with GCC; see the file COPYING3. If not see + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- a/src/gcc/config/i386/linux64.h ++++ b/src/gcc/config/i386/linux64.h +@@ -70,7 +70,7 @@ along with GCC; see the file COPYING3. If not see + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -40,7 +40,7 @@ do { \ + #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: \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -352,11 +352,11 @@ extern int dot_symbols; + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=both %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -906,7 +906,7 @@ SVR4_ASM_SPEC \ + #define LINUX_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:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -77,7 +77,7 @@ along with GCC; see the file COPYING3. If not see + + #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} \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ along with GCC; see the file COPYING3. If not see + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!ibcs: \ +--- a/src/gcc/config/sparc/linux64.h ++++ b/src/gcc/config/sparc/linux64.h +@@ -121,7 +121,7 @@ along with GCC; see the file COPYING3. If not see + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,%R/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,%R/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -130,7 +130,7 @@ along with GCC; see the file COPYING3. If not see + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -211,7 +211,7 @@ along with GCC; see the file COPYING3. If not see + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,%R/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- a/src/gcc/config/arm/linux-elf.h~ 2009-02-20 16:20:38.000000000 +0100 ++++ b/src/gcc/config/arm/linux-elf.h 2009-12-21 13:19:36.000000000 +0100 +@@ -72,6 +72,7 @@ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=both \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-hash-style-gnu.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-hash-style-gnu.diff @@ -0,0 +1,134 @@ +# DP: Link using --hash-style=gnu (alpha, amd64, armel, ia64, i386, powerpc, ppc64, 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. + +--- + gcc/config/alpha/linux-elf.h | 2 +- + gcc/config/i386/linux.h | 2 +- + gcc/config/i386/linux64.h | 2 +- + gcc/config/ia64/linux.h | 2 +- + gcc/config/rs6000/linux64.h | 4 ++-- + gcc/config/rs6000/sysv4.h | 2 +- + gcc/config/s390/linux.h | 2 +- + gcc/config/sparc/linux.h | 2 +- + 8 files changed, 9 insertions(+), 9 deletions(-) + +--- a/src/gcc/config/alpha/linux-elf.h ++++ b/src/gcc/config/alpha/linux-elf.h +@@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see + + #define ELF_DYNAMIC_LINKER LINUX_DYNAMIC_LINKER + +-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ ++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{shared:-shared} \ + %{!shared: \ +--- a/src/gcc/config/i386/linux.h ++++ b/src/gcc/config/i386/linux.h +@@ -113,7 +113,7 @@ along with GCC; see the file COPYING3. If not see + { "dynamic_linker", LINUX_DYNAMIC_LINKER } + + #undef LINK_SPEC +-#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- a/src/gcc/config/i386/linux64.h ++++ b/src/gcc/config/i386/linux64.h +@@ -70,7 +70,7 @@ along with GCC; see the file COPYING3. If not see + #endif + + #undef LINK_SPEC +-#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -40,7 +40,7 @@ do { \ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- a/src/gcc/config/rs6000/linux64.h ++++ b/src/gcc/config/rs6000/linux64.h +@@ -352,11 +352,11 @@ extern int dot_symbols; + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) + + +-#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}}}" + +-#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \ ++#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}}" + +--- a/src/gcc/config/rs6000/sysv4.h ++++ b/src/gcc/config/rs6000/sysv4.h +@@ -906,7 +906,7 @@ SVR4_ASM_SPEC \ + #define LINUX_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=gnu %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + +--- a/src/gcc/config/s390/linux.h ++++ b/src/gcc/config/s390/linux.h +@@ -77,7 +77,7 @@ along with GCC; see the file COPYING3. If not see + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- a/src/gcc/config/sparc/linux.h ++++ b/src/gcc/config/sparc/linux.h +@@ -86,7 +86,7 @@ along with GCC; see the file COPYING3. If not see + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ + %{!mno-relax:%{!r:-relax}} \ + %{!shared: \ + %{!ibcs: \ +--- a/src/gcc/config/arm/linux-elf.h~ 2009-02-20 16:20:38.000000000 +0100 ++++ b/src/gcc/config/arm/linux-elf.h 2009-12-21 13:19:36.000000000 +0100 +@@ -72,6 +72,7 @@ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "} \ + -X \ ++ --hash-style=gnu \ + %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-ice-apport.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-ice-apport.diff @@ -0,0 +1,25 @@ +# DP: Report an ICE to apport (if apport is available +# DP: and the environment variable GCC_NOAPPORT is not set) + +--- + gcc/gcc.c | 9 +++++++++ + 1 files changed, 9 insertions(+), 0 deletions(-) + +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -6325,6 +6325,15 @@ retry_ice (const char *prog, const char **argv) + { + notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n", + temp_filenames[attempt * 2]); ++ if (!getenv ("GCC_NOAPPORT") ++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK)) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (temp_filenames[attempt * 2]) + strlen (new_argv[0])); ++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", ++ new_argv[0], temp_filenames[attempt * 2]); ++ system (cmd); ++ free (cmd); ++ } + /* Make sure it is not deleted. */ + free (temp_filenames[attempt * 2]); + temp_filenames[attempt * 2] = NULL; --- gcc-4.4-4.4.7.orig/debian/patches/gcc-ice-hack.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-ice-hack.diff @@ -0,0 +1,315 @@ +# DP: Retry the build on an ice, save the calling options and preprocessed +# DP: source when the ice is reproducible. + +2004-01-23 Jakub Jelinek + + * system.h (ICE_EXIT_CODE): Define. + * gcc.c (execute): Don't free first string early, but at the end + of the function. Call retry_ice if compiler exited with + ICE_EXIT_CODE. + (retry_ice): New function. + * diagnostic.c (diagnostic_count_diagnostic, + diagnostic_action_after_output, error_recursion): Exit with + ICE_EXIT_CODE instead of FATAL_EXIT_CODE. + +--- + gcc/Makefile.in | 2 + + gcc/diagnostic.c | 2 +- + gcc/gcc.c | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 238 insertions(+), 2 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -181,6 +181,8 @@ SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error + dfp.o-warn = -Wno-error + # mips-tfile.c contains -Wcast-qual warnings. + mips-tfile.o-warn = -Wno-error ++# gcc-ice-hack ++gcc.o-warn = -Wno-error + + # All warnings have to be shut off in stage1 if the compiler used then + # isn't gcc; configure determines that. WARN_CFLAGS will be either +--- a/src/gcc/diagnostic.c ++++ b/src/gcc/diagnostic.c +@@ -195,7 +195,7 @@ diagnostic_action_after_output (diagnostic_context *context, + fnotice (stderr, "Please submit a full bug report,\n" + "with preprocessed source if appropriate.\n" + "See %s for instructions.\n", bug_report_url); +- exit (ICE_EXIT_CODE); ++ exit (FATAL_EXIT_CODE); + + case DK_FATAL: + if (context->abort_on_error) +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -365,6 +365,9 @@ static void init_gcc_specs (struct obstack *, const char *, const char *, + #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX) + static const char *convert_filename (const char *, int, int); + #endif ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++static void retry_ice (const char *prog, const char **argv); ++#endif + + static const char *getenv_spec_function (int, const char **); + static const char *if_exists_spec_function (int, const char **); +@@ -3015,7 +3018,7 @@ execute (void) + } + } + +- if (string != commands[i].prog) ++ if (i && string != commands[i].prog) + free (CONST_CAST (char *, string)); + } + +@@ -3072,6 +3075,16 @@ See %s for instructions.", + else if (WIFEXITED (status) + && WEXITSTATUS (status) >= MIN_FATAL_STATUS) + { ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++ /* For ICEs in cc1, cc1obj, cc1plus see if it is ++ reproducible or not. */ ++ char *p; ++ if (WEXITSTATUS (status) == ICE_EXIT_CODE ++ && i == 0 ++ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) ++ && ! strncmp (p + 1, "cc1", 3)) ++ retry_ice (commands[0].prog, commands[0].argv); ++#endif + if (WEXITSTATUS (status) > greatest_status) + greatest_status = WEXITSTATUS (status); + ret_code = -1; +@@ -3092,6 +3105,9 @@ See %s for instructions.", + } + } + ++ if (commands[0].argv[0] != commands[0].prog) ++ free ((PTR) commands[0].argv[0]); ++ + return ret_code; + } + } +@@ -6108,6 +6124,224 @@ give_switch (int switchnum, int omit_first_word) + switches[switchnum].validated = 1; + } + ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS)) ++#define RETRY_ICE_ATTEMPTS 2 ++ ++static void ++retry_ice (const char *prog, const char **argv) ++{ ++ int nargs, out_arg = -1, quiet = 0, attempt; ++ int pid, retries, sleep_interval; ++ const char **new_argv; ++ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2]; ++ ++ if (input_filename == NULL || ! strcmp (input_filename, "-")) ++ return; ++ ++ for (nargs = 0; argv[nargs] != NULL; ++nargs) ++ /* Only retry compiler ICEs, not preprocessor ones. */ ++ if (! strcmp (argv[nargs], "-E")) ++ return; ++ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o') ++ { ++ if (out_arg == -1) ++ out_arg = nargs; ++ else ++ return; ++ } ++ /* If the compiler is going to output any time information, ++ it might vary between invocations. */ ++ else if (! strcmp (argv[nargs], "-quiet")) ++ quiet = 1; ++ else if (! strcmp (argv[nargs], "-ftime-report")) ++ return; ++ ++ if (out_arg == -1 || !quiet) ++ return; ++ ++ memset (temp_filenames, '\0', sizeof (temp_filenames)); ++ new_argv = alloca ((nargs + 3) * sizeof (const char *)); ++ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *)); ++ new_argv[nargs++] = "-frandom-seed=0"; ++ new_argv[nargs] = NULL; ++ if (new_argv[out_arg][2] == '\0') ++ new_argv[out_arg + 1] = "-"; ++ else ++ new_argv[out_arg] = "-o-"; ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt) ++ { ++ int fd = -1; ++ int status; ++ ++ temp_filenames[attempt * 2] = make_temp_file (".out"); ++ temp_filenames[attempt * 2 + 1] = make_temp_file (".err"); ++ ++ if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ int i; ++ int fd1, fd2; ++ struct stat st1, st2; ++ size_t n, len; ++ char *buf; ++ ++ buf = xmalloc (8192); ++ ++ for (i = 0; i < 2; ++i) ++ { ++ fd1 = open (temp_filenames[i], O_RDONLY); ++ fd2 = open (temp_filenames[2 + i], O_RDONLY); ++ ++ if (fd1 < 0 || fd2 < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0) ++ { ++ i = -1; ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ if (st1.st_size != st2.st_size) ++ { ++ close (fd1); ++ close (fd2); ++ break; ++ } ++ ++ len = 0; ++ for (n = st1.st_size; n; n -= len) ++ { ++ len = n; ++ if (len > 4096) ++ len = 4096; ++ ++ if (read (fd1, buf, len) != (int) len ++ || read (fd2, buf + 4096, len) != (int) len) ++ { ++ i = -1; ++ break; ++ } ++ ++ if (memcmp (buf, buf + 4096, len) != 0) ++ break; ++ } ++ ++ close (fd1); ++ close (fd2); ++ ++ if (n) ++ break; ++ } ++ ++ free (buf); ++ if (i == -1) ++ break; ++ ++ if (i != 2) ++ { ++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); ++ break; ++ } ++ ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ break; ++ write (fd, "//", 2); ++ for (i = 0; i < nargs; i++) ++ { ++ write (fd, " ", 1); ++ write (fd, new_argv[i], strlen (new_argv[i])); ++ } ++ write (fd, "\n", 1); ++ new_argv[nargs] = "-E"; ++ new_argv[nargs + 1] = NULL; ++ } ++ ++ /* Fork a subprocess; wait and retry if it fails. */ ++ sleep_interval = 1; ++ pid = -1; ++ for (retries = 0; retries < 4; retries++) ++ { ++ pid = fork (); ++ if (pid >= 0) ++ break; ++ sleep (sleep_interval); ++ sleep_interval *= 2; ++ } ++ ++ if (pid < 0) ++ break; ++ else if (pid == 0) ++ { ++ if (attempt != RETRY_ICE_ATTEMPTS) ++ fd = open (temp_filenames[attempt * 2], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 1) ++ { ++ close (1); ++ dup (fd); ++ close (fd); ++ } ++ ++ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR); ++ if (fd < 0) ++ exit (-1); ++ if (fd != 2) ++ { ++ close (2); ++ dup (fd); ++ close (fd); ++ } ++ ++ if (prog == new_argv[0]) ++ execvp (prog, (char *const *) new_argv); ++ else ++ execv (new_argv[0], (char *const *) new_argv); ++ exit (-1); ++ } ++ ++ if (waitpid (pid, &status, 0) < 0) ++ break; ++ ++ if (attempt < RETRY_ICE_ATTEMPTS ++ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE)) ++ { ++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n"); ++ break; ++ } ++ else if (attempt == RETRY_ICE_ATTEMPTS) ++ { ++ close (fd); ++ if (WIFEXITED (status) ++ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE) ++ { ++ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n", ++ temp_filenames[attempt * 2]); ++ /* Make sure it is not deleted. */ ++ free (temp_filenames[attempt * 2]); ++ temp_filenames[attempt * 2] = NULL; ++ break; ++ } ++ } ++ } ++ ++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++) ++ if (temp_filenames[attempt]) ++ { ++ unlink (temp_filenames[attempt]); ++ free (temp_filenames[attempt]); ++ } ++} ++#endif ++ + /* Search for a file named NAME trying various prefixes including the + user's -B prefix and some standard ones. + Return the absolute file name found. If nothing is found, return NAME. */ --- gcc-4.4-4.4.7.orig/debian/patches/gcc-java-align-data.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-java-align-data.diff @@ -0,0 +1,14 @@ +# DP: java: Align data in .rodata.jutf8.* sections, taken from the trunk. + +http://gcc.gnu.org/ml/java-patches/2010-q3/msg00014.html + +--- a/src/gcc/java/class.c ++++ b/src/gcc/java/class.c +@@ -972,6 +972,7 @@ + TREE_READONLY (decl) = 1; + TREE_THIS_VOLATILE (decl) = 0; + DECL_INITIAL (decl) = cinit; ++ DECL_USER_ALIGN (decl) = 1; + + if (HAVE_GAS_SHF_MERGE) + { --- gcc-4.4-4.4.7.orig/debian/patches/gcc-lfs.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-lfs.diff @@ -0,0 +1,96 @@ +# DP: Check for large file support (backport from 4.6). + +gcc/ + +2010-11-02 Ian Lance Taylor + + * configure.ac: Use AC_SYS_LARGEFILE. + * configure: Rebuild. + * config.in: Rebuild. + +2010-11-11 Paolo Bonzini + + * Makefile.in (gengtype-lex.c): Include bconfig.h first. + +libcpp/ + +2010-11-02 Ian Lance Taylor + + * configure.ac: Use AC_SYS_LARGEFILE. + * configure: Rebuild. + * config.in: Rebuild. + + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -303,6 +303,8 @@ + AC_PROG_CPP + AC_C_INLINE + ++AC_SYS_LARGEFILE ++ + # sizeof(char) is 1 by definition. + AC_CHECK_SIZEOF(void *) + AC_CHECK_SIZEOF(short) +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -1546,6 +1546,18 @@ + #endif + + ++/* Number of bits in a file offset, on hosts where this is settable. */ ++#ifndef USED_FOR_TARGET ++#undef _FILE_OFFSET_BITS ++#endif ++ ++ ++/* Define for large files, on AIX-style hosts. */ ++#ifndef USED_FOR_TARGET ++#undef _LARGE_FILES ++#endif ++ ++ + /* Define to 1 if on MINIX. */ + #ifndef USED_FOR_TARGET + #undef _MINIX +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3457,7 +3457,11 @@ + + # Generated source files for gengtype. + gengtype-lex.c : gengtype-lex.l +- -$(FLEX) $(FLEXFLAGS) -o$@ $< ++ -$(FLEX) $(FLEXFLAGS) -o$@ $< && { \ ++ echo '#include "bconfig.h"' > $@.tmp; \ ++ cat $@ >> $@.tmp; \ ++ mv $@.tmp $@; \ ++ } + + # + # Remake internationalization support. +--- a/src/libcpp/configure.ac ++++ b/src/libcpp/configure.ac +@@ -13,6 +13,8 @@ + AC_PROG_CC + AC_PROG_RANLIB + ++AC_SYS_LARGEFILE ++ + MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing + AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal]) + AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf]) +--- a/src/libcpp/config.in ++++ b/src/libcpp/config.in +@@ -266,6 +266,12 @@ + /* Define to 1 if your declares `struct tm'. */ + #undef TM_IN_SYS_TIME + ++/* Number of bits in a file offset, on hosts where this is settable. */ ++#undef _FILE_OFFSET_BITS ++ ++/* Define for large files, on AIX-style hosts. */ ++#undef _LARGE_FILES ++ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-linaro-doc.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-linaro-doc.diff @@ -0,0 +1,1617 @@ +# DP: Changes for the Linaro 4.4-2011.01-0 release (documentation). + +--- a/src/INSTALL/configure.html ++++ b/src/INSTALL/configure.html +@@ -423,6 +423,46 @@ + + + ++
--with-multilib-list=list
--without-multilib-list
Specify what multilibs to build. ++Currently only implemented for sh*-*-*. ++ ++

list is a comma separated list of CPU names. These must be of the ++form sh* or m* (in which case they match the compiler option ++for that processor). The list should not contain any endian options - ++these are handled by --with-endian. ++ ++

If list is empty, then there will be no multilibs for extra ++processors. The multilib for the secondary endian remains enabled. ++ ++

As a special case, if an entry in the list starts with a ! ++(exclamation point), then it is added to the list of excluded multilibs. ++Entries of this sort should be compatible with ‘MULTILIB_EXCLUDES’ ++(once the leading ! has been stripped). ++ ++

If --with-multilib-list is not given, then a default set of ++multilibs is selected based on the value of --target. This is ++usually the complete set of libraries, but some targets imply a more ++specialized subset. ++ ++

Example 1: to configure a compiler for SH4A only, but supporting both ++endians, with little endian being the default: ++

          --with-cpu=sh4a --with-endian=little,big --with-multilib-list=
++
++

Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with ++only little endian SH4AL: ++

          --with-cpu=sh4a --with-endian=little,big --with-multilib-list=sh4al,!mb/m4al
++
++
--with-endian=endians
Specify what endians to use. ++Currently only implemented for sh*-*-*. ++ ++

endians may be one of the following: ++

++
big
Use big endian exclusively. ++
little
Use little endian exclusively. ++
big,little
Use big endian by default. Provide a multilib for little endian. ++
little,big
Use little endian by default. Provide a multilib for big endian. ++
++ +
--enable-threads
Specify that the target + supports threads. This affects the Objective-C compiler and runtime + library, and exception handling for other languages like C++ and Java. +@@ -764,6 +804,9 @@ + 128-bit long double when built against GNU C Library 2.4 and later, + 64-bit long double otherwise. + ++
--enable-fdpic
On SH uClinux systems, generate ELF FDPIC code rather than code ++expected to be postprocessed into the FLT binary format. ++ +
--with-gmp=pathname
--with-gmp-include=pathname
--with-gmp-lib=pathname
--with-mpfr=pathname
--with-mpfr-include=pathname
--with-mpfr-lib=pathname
If you do not have GMP (the GNU Multiple Precision library) and the + MPFR Libraries installed in a standard location and you want to build + GCC, you can explicitly specify the directory where they are installed +--- a/src/gcc/doc/arm-neon-intrinsics.texi ++++ b/src/gcc/doc/arm-neon-intrinsics.texi +@@ -43,20 +43,18 @@ + + + @itemize @bullet +-@item uint64x1_t vadd_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vadd.i64 @var{d0}, @var{d0}, @var{d0}} ++@item float32x2_t vadd_f32 (float32x2_t, float32x2_t) ++@*@emph{Form of expected instruction(s):} @code{vadd.f32 @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet +-@item int64x1_t vadd_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vadd.i64 @var{d0}, @var{d0}, @var{d0}} ++@item uint64x1_t vadd_u64 (uint64x1_t, uint64x1_t) + @end itemize + + + @itemize @bullet +-@item float32x2_t vadd_f32 (float32x2_t, float32x2_t) +-@*@emph{Form of expected instruction(s):} @code{vadd.f32 @var{d0}, @var{d0}, @var{d0}} ++@item int64x1_t vadd_s64 (int64x1_t, int64x1_t) + @end itemize + + +@@ -1013,20 +1011,18 @@ + + + @itemize @bullet +-@item uint64x1_t vsub_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vsub.i64 @var{d0}, @var{d0}, @var{d0}} ++@item float32x2_t vsub_f32 (float32x2_t, float32x2_t) ++@*@emph{Form of expected instruction(s):} @code{vsub.f32 @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet +-@item int64x1_t vsub_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vsub.i64 @var{d0}, @var{d0}, @var{d0}} ++@item uint64x1_t vsub_u64 (uint64x1_t, uint64x1_t) + @end itemize + + + @itemize @bullet +-@item float32x2_t vsub_f32 (float32x2_t, float32x2_t) +-@*@emph{Form of expected instruction(s):} @code{vsub.f32 @var{d0}, @var{d0}, @var{d0}} ++@item int64x1_t vsub_s64 (int64x1_t, int64x1_t) + @end itemize + + +@@ -4696,7 +4692,7 @@ + + @itemize @bullet + @item uint32_t vget_lane_u32 (uint32x2_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.u32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4714,7 +4710,7 @@ + + @itemize @bullet + @item int32_t vget_lane_s32 (int32x2_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.s32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4732,7 +4728,7 @@ + + @itemize @bullet + @item float32_t vget_lane_f32 (float32x2_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.f32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4750,19 +4746,17 @@ + + @itemize @bullet + @item uint64_t vget_lane_u64 (uint64x1_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{r0}, @var{r0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64_t vget_lane_s64 (int64x1_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{r0}, @var{r0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item uint32_t vgetq_lane_u32 (uint32x4_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.u32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4780,7 +4774,7 @@ + + @itemize @bullet + @item int32_t vgetq_lane_s32 (int32x4_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.s32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4798,7 +4792,7 @@ + + @itemize @bullet + @item float32_t vgetq_lane_f32 (float32x4_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov.f32 @var{r0}, @var{d0}[@var{0}]} ++@*@emph{Form of expected instruction(s):} @code{vmov.32 @var{r0}, @var{d0}[@var{0}]} + @end itemize + + +@@ -4886,13 +4880,11 @@ + + @itemize @bullet + @item uint64x1_t vset_lane_u64 (uint64_t, uint64x1_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vset_lane_s64 (int64_t, int64x1_t, const int) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + +@@ -5081,13 +5073,11 @@ + + @itemize @bullet + @item uint64x1_t vdup_n_u64 (uint64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vdup_n_s64 (int64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + +@@ -5147,13 +5137,11 @@ + + @itemize @bullet + @item uint64x2_t vdupq_n_u64 (uint64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + + @itemize @bullet + @item int64x2_t vdupq_n_s64 (int64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + +@@ -5213,13 +5201,11 @@ + + @itemize @bullet + @item uint64x1_t vmov_n_u64 (uint64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vmov_n_s64 (int64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + +@@ -5279,13 +5265,11 @@ + + @itemize @bullet + @item uint64x2_t vmovq_n_u64 (uint64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + + @itemize @bullet + @item int64x2_t vmovq_n_s64 (int64_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}} + @end itemize + + +@@ -5572,32 +5556,30 @@ + + + @itemize @bullet +-@item uint64x1_t vget_low_u64 (uint64x2_t) ++@item float32x2_t vget_low_f32 (float32x4_t) + @*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet +-@item int64x1_t vget_low_s64 (int64x2_t) ++@item poly16x4_t vget_low_p16 (poly16x8_t) + @*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet +-@item float32x2_t vget_low_f32 (float32x4_t) ++@item poly8x8_t vget_low_p8 (poly8x16_t) + @*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet +-@item poly16x4_t vget_low_p16 (poly16x8_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}} ++@item uint64x1_t vget_low_u64 (uint64x2_t) + @end itemize + + + @itemize @bullet +-@item poly8x8_t vget_low_p8 (poly8x16_t) +-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}} ++@item int64x1_t vget_low_s64 (int64x2_t) + @end itemize + + +@@ -9727,13 +9709,11 @@ + + @itemize @bullet + @item uint64x1_t vand_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vand @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vand_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vand @var{d0}, @var{d0}, @var{d0}} + @end itemize + + +@@ -9827,13 +9807,11 @@ + + @itemize @bullet + @item uint64x1_t vorr_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vorr @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vorr_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vorr @var{d0}, @var{d0}, @var{d0}} + @end itemize + + +@@ -9927,13 +9905,11 @@ + + @itemize @bullet + @item uint64x1_t veor_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{veor @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64x1_t veor_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{veor @var{d0}, @var{d0}, @var{d0}} + @end itemize + + +@@ -10027,13 +10003,11 @@ + + @itemize @bullet + @item uint64x1_t vbic_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vbic @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vbic_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vbic @var{d0}, @var{d0}, @var{d0}} + @end itemize + + +@@ -10127,13 +10101,11 @@ + + @itemize @bullet + @item uint64x1_t vorn_u64 (uint64x1_t, uint64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vorn @var{d0}, @var{d0}, @var{d0}} + @end itemize + + + @itemize @bullet + @item int64x1_t vorn_s64 (int64x1_t, int64x1_t) +-@*@emph{Form of expected instruction(s):} @code{vorn @var{d0}, @var{d0}, @var{d0}} + @end itemize + + +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -35,6 +35,7 @@ + * Long Long:: Double-word integers---@code{long long int}. + * Complex:: Data types for complex numbers. + * Floating Types:: Additional Floating Types. ++* Half-Precision:: Half-Precision Floating Point. + * Decimal Float:: Decimal Floating Types. + * Hex Floats:: Hexadecimal floating-point constants. + * Fixed-Point:: Fixed-Point Types. +@@ -916,6 +917,56 @@ + Not all targets support additional floating point types. @code{__float80} + and @code{__float128} types are supported on i386, x86_64 and ia64 targets. + ++@node Half-Precision ++@section Half-Precision Floating Point ++@cindex half-precision floating point ++@cindex @code{__fp16} data type ++ ++On ARM targets, GCC supports half-precision (16-bit) floating point via ++the @code{__fp16} type. You must enable this type explicitly ++with the @option{-mfp16-format} command-line option in order to use it. ++ ++ARM supports two incompatible representations for half-precision ++floating-point values. You must choose one of the representations and ++use it consistently in your program. ++ ++Specifying @option{-mfp16-format=ieee} selects the IEEE 754-2008 format. ++This format can represent normalized values in the range of @math{2^{-14}} to 65504. ++There are 11 bits of significand precision, approximately 3 ++decimal digits. ++ ++Specifying @option{-mfp16-format=alternative} selects the ARM ++alternative format. This representation is similar to the IEEE ++format, but does not support infinities or NaNs. Instead, the range ++of exponents is extended, so that this format can represent normalized ++values in the range of @math{2^{-14}} to 131008. ++ ++The @code{__fp16} type is a storage format only. For purposes ++of arithmetic and other operations, @code{__fp16} values in C or C++ ++expressions are automatically promoted to @code{float}. In addition, ++you cannot declare a function with a return value or parameters ++of type @code{__fp16}. ++ ++Note that conversions from @code{double} to @code{__fp16} ++involve an intermediate conversion to @code{float}. Because ++of rounding, this can sometimes produce a different result than a ++direct conversion. ++ ++ARM provides hardware support for conversions between ++@code{__fp16} and @code{float} values ++as an extension to VFP and NEON (Advanced SIMD). GCC generates ++code using these hardware instructions if you compile with ++options to select an FPU that provides them; ++for example, @option{-mfpu=neon-fp16 -mfloat-abi=softfp}, ++in addition to the @option{-mfp16-format} option to select ++a half-precision format. ++ ++Language-level support for the @code{__fp16} data type is ++independent of whether GCC generates code using hardware floating-point ++instructions. In cases where hardware support is not specified, GCC ++implements conversions between @code{__fp16} and @code{float} values ++as library calls. ++ + @node Decimal Float + @section Decimal Floating Types + @cindex decimal floating types +@@ -2397,7 +2448,7 @@ + + @item interrupt + @cindex interrupt handler functions +-Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k, ++Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k, MIPS + and Xstormy16 ports to indicate that the specified function is an + interrupt handler. The compiler will generate function entry and exit + sequences suitable for use in an interrupt handler when this attribute +@@ -2420,6 +2471,42 @@ + On ARMv7-M the interrupt type is ignored, and the attribute means the function + may be called with a word aligned stack pointer. + ++On MIPS targets, you can use the following attributes to modify the behavior ++of an interrupt handler: ++@table @code ++@item use_shadow_register_set ++@cindex @code{use_shadow_register_set} attribute ++Assume that the handler uses a shadow register set, instead of ++the main general-purpose registers. ++ ++@item keep_interrupts_masked ++@cindex @code{keep_interrupts_masked} attribute ++Keep interrupts masked for the whole function. Without this attribute, ++GCC tries to reenable interrupts for as much of the function as it can. ++ ++@item use_debug_exception_return ++@cindex @code{use_debug_exception_return} attribute ++Return using the @code{deret} instruction. Interrupt handlers that don't ++have this attribute return using @code{eret} instead. ++@end table ++ ++You can use any combination of these attributes, as shown below: ++@smallexample ++void __attribute__ ((interrupt)) v0 (); ++void __attribute__ ((interrupt, use_shadow_register_set)) v1 (); ++void __attribute__ ((interrupt, keep_interrupts_masked)) v2 (); ++void __attribute__ ((interrupt, use_debug_exception_return)) v3 (); ++void __attribute__ ((interrupt, use_shadow_register_set, ++ keep_interrupts_masked)) v4 (); ++void __attribute__ ((interrupt, use_shadow_register_set, ++ use_debug_exception_return)) v5 (); ++void __attribute__ ((interrupt, keep_interrupts_masked, ++ use_debug_exception_return)) v6 (); ++void __attribute__ ((interrupt, use_shadow_register_set, ++ keep_interrupts_masked, ++ use_debug_exception_return)) v7 (); ++@end smallexample ++ + @item interrupt_handler + @cindex interrupt handler functions on the Blackfin, m68k, H8/300 and SH processors + Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and SH to +@@ -2518,6 +2605,25 @@ + may interact badly with some GCC extensions such as @code{__builtin_apply} + (@pxref{Constructing Calls}). + ++@item micromips/nomicromips ++@cindex @code{micromips} attribute ++@cindex @code{nomicromips} attribute ++ ++On MIPS targets, you can use the @code{micromips} and @code{nomicromips} ++function attributes to locally select or turn off microMIPS code generation. ++A function with the @code{micromips} attribute is emitted as microMIPS code, ++while microMIPS code generation is disabled for functions with the ++@code{nomicromips} attribute. These attributes override the ++@option{-mmicromips} and @option{-mno-micromips} options on the command line ++(@pxref{MIPS Options}). ++ ++When compiling files containing mixed microMIPS and non-microMIPS code, the ++preprocessor symbol @code{__mips_micromips} reflects the setting on the ++command line, ++not that within individual functions. Mixed microMIPS and non-microMIPS code ++may interact badly with some GCC extensions such as @code{__builtin_apply} ++(@pxref{Constructing Calls}). ++ + @item model (@var{model-name}) + @cindex function addressability on the M32R/D + @cindex variable addressability on the IA-64 +--- a/src/gcc/doc/fragments.texi ++++ b/src/gcc/doc/fragments.texi +@@ -143,6 +143,22 @@ + *mthumb/*mhard-float* + @end smallexample + ++@findex MULTILIB_ALIASES ++@item MULTILIB_ALIASES ++Sometimes it is desirable to support a large set of multilib options, but ++only build libraries for a subset of those multilibs. The remaining ++combinations use a sutiable alternative multilb. In that case, set ++@code{MULTILIB_ALIASES} to a list of the form @samp{realname=aliasname}. ++ ++For example, consider a little-endian ARM toolchain with big-endian and ++Thumb multilibs. If a big-endian Thumb multilib is not wanted, then ++setting @code{MULTILIB_ALIASES} to @samp{mbig-endian=mbig-endian/mthumb} ++makes this combination use the big-endian ARM libraries instead. ++ ++If the multilib is instead excluded by setting @code{MULTILIB_EXCEPTIONS} ++then big-endian Thumb code uses the default multilib as none of the ++remaining multilibs match. ++ + @findex MULTILIB_EXTRA_OPTS + @item MULTILIB_EXTRA_OPTS + Sometimes it is desirable that when building multiple versions of +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -988,6 +988,57 @@ + + @end table + ++@item --with-multilib-list=@var{list} ++@itemx --without-multilib-list ++Specify what multilibs to build. ++Currently only implemented for sh*-*-*. ++ ++@var{list} is a comma separated list of CPU names. These must be of the ++form @code{sh*} or @code{m*} (in which case they match the compiler option ++for that processor). The list should not contain any endian options - ++these are handled by @option{--with-endian}. ++ ++If @var{list} is empty, then there will be no multilibs for extra ++processors. The multilib for the secondary endian remains enabled. ++ ++As a special case, if an entry in the list starts with a @code{!} ++(exclamation point), then it is added to the list of excluded multilibs. ++Entries of this sort should be compatible with @samp{MULTILIB_EXCLUDES} ++(once the leading @code{!} has been stripped). ++ ++If @option{--with-multilib-list} is not given, then a default set of ++multilibs is selected based on the value of @option{--target}. This is ++usually the complete set of libraries, but some targets imply a more ++specialized subset. ++ ++Example 1: to configure a compiler for SH4A only, but supporting both ++endians, with little endian being the default: ++@smallexample ++--with-cpu=sh4a --with-endian=little,big --with-multilib-list= ++@end smallexample ++ ++Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with ++only little endian SH4AL: ++@smallexample ++--with-cpu=sh4a --with-endian=little,big --with-multilib-list=sh4al,!mb/m4al ++@end smallexample ++ ++@item --with-endian=@var{endians} ++Specify what endians to use. ++Currently only implemented for sh*-*-*. ++ ++@var{endians} may be one of the following: ++@table @code ++@item big ++Use big endian exclusively. ++@item little ++Use little endian exclusively. ++@item big,little ++Use big endian by default. Provide a multilib for little endian. ++@item little,big ++Use little endian by default. Provide a multilib for big endian. ++@end table ++ + @item --enable-threads + Specify that the target + supports threads. This affects the Objective-C compiler and runtime +@@ -1436,6 +1487,10 @@ + 128-bit @code{long double} when built against GNU C Library 2.4 and later, + 64-bit @code{long double} otherwise. + ++@item --enable-fdpic ++On SH uClinux systems, generate ELF FDPIC code rather than code ++expected to be postprocessed into the FLT binary format. ++ + @item --with-gmp=@var{pathname} + @itemx --with-gmp-include=@var{pathname} + @itemx --with-gmp-lib=@var{pathname} +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -251,6 +251,7 @@ + -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol + -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol + -Wpointer-arith -Wno-pointer-to-int-cast @gol ++-Wno-poison-system-directories @gol + -Wredundant-decls @gol + -Wreturn-type -Wsequence-point -Wshadow @gol + -Wsign-compare -Wsign-conversion -Wstack-protector @gol +@@ -321,7 +322,7 @@ + @item Optimization Options + @xref{Optimize Options,,Options that Control Optimization}. + @gccoptlist{ +--falign-functions[=@var{n}] -falign-jumps[=@var{n}] @gol ++-falign-arrays -falign-functions[=@var{n}] -falign-jumps[=@var{n}] @gol + -falign-labels[=@var{n}] -falign-loops[=@var{n}] -fassociative-math @gol + -fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize @gol + -fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves @gol +@@ -438,8 +439,11 @@ + -msched-prolog -mno-sched-prolog @gol + -mlittle-endian -mbig-endian -mwords-little-endian @gol + -mfloat-abi=@var{name} -msoft-float -mhard-float -mfpe @gol ++-mfp16-format=@var{name} + -mthumb-interwork -mno-thumb-interwork @gol ++-mfix-janus-2cc @gol + -mcpu=@var{name} -march=@var{name} -mfpu=@var{name} @gol ++-mmarvell-div @gol + -mstructure-size-boundary=@var{n} @gol + -mabort-on-noreturn @gol + -mlong-calls -mno-long-calls @gol +@@ -452,6 +456,7 @@ + -mtpcs-frame -mtpcs-leaf-frame @gol + -mcaller-super-interworking -mcallee-super-interworking @gol + -mtp=@var{name} @gol ++-mlow-irq-latency @gol + -mword-relocations @gol + -mfix-cortex-m3-ldrd} + +@@ -574,7 +579,7 @@ + -mno-wide-multiply -mrtd -malign-double @gol + -mpreferred-stack-boundary=@var{num} + -mincoming-stack-boundary=@var{num} +--mcld -mcx16 -msahf -mrecip @gol ++-mcld -mcx16 -msahf -mmovbe -mrecip @gol + -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx @gol + -maes -mpclmul @gol + -msse4a -m3dnow -mpopcnt -mabm -msse5 @gol +@@ -584,7 +589,7 @@ + -m96bit-long-double -mregparm=@var{num} -msseregparm @gol + -mveclibabi=@var{type} -mpc32 -mpc64 -mpc80 -mstackrealign @gol + -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol +--mcmodel=@var{code-model} @gol ++-mcmodel=@var{code-model} -mabi=@var{name} @gol + -m32 -m64 -mlarge-data-threshold=@var{num} @gol + -mfused-madd -mno-fused-madd -msse2avx} + +@@ -652,12 +657,13 @@ + @gccoptlist{-EL -EB -march=@var{arch} -mtune=@var{arch} @gol + -mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2 @gol + -mips64 -mips64r2 @gol +--mips16 -mno-mips16 -mflip-mips16 @gol ++-mips16 -mips16e -mno-mips16 -mflip-mips16 @gol + -minterlink-mips16 -mno-interlink-mips16 @gol + -mabi=@var{abi} -mabicalls -mno-abicalls @gol + -mshared -mno-shared -mplt -mno-plt -mxgot -mno-xgot @gol + -mgp32 -mgp64 -mfp32 -mfp64 -mhard-float -msoft-float @gol + -msingle-float -mdouble-float -mdsp -mno-dsp -mdspr2 -mno-dspr2 @gol ++-mmicromips -mno-micromips -mmcu -mmno-mcu @gol + -mfpu=@var{fpu-type} @gol + -msmartmips -mno-smartmips @gol + -mpaired-single -mno-paired-single -mdmx -mno-mdmx @gol +@@ -673,6 +679,7 @@ + -mcheck-zero-division -mno-check-zero-division @gol + -mdivide-traps -mdivide-breaks @gol + -mmemcpy -mno-memcpy -mlong-calls -mno-long-calls @gol ++-mjals -mno-jals @gol + -mmad -mno-mad -mfused-madd -mno-fused-madd -nocpp @gol + -mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400 @gol + -mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120 @gol +@@ -778,12 +785,12 @@ + -m5-32media -m5-32media-nofpu @gol + -m5-compact -m5-compact-nofpu @gol + -mb -ml -mdalign -mrelax @gol +--mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol ++-mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol + -mieee -mbitops -misize -minline-ic_invalidate -mpadstruct -mspace @gol + -mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol + -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol + -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol +--minvalid-symbols} ++-minvalid-symbols -mfdpic} + + @emph{SPARC Options} + @gccoptlist{-mcpu=@var{cpu-type} @gol +@@ -1189,8 +1196,8 @@ + option. + + @item @var{language} +-This will display the options supported for @var{language}, where +-@var{language} is the name of one of the languages supported in this ++This will display the options supported for @var{language}, where ++@var{language} is the name of one of the languages supported in this + version of GCC. + + @item @samp{common} +@@ -1390,7 +1397,7 @@ + @opindex std + Determine the language standard. @xref{Standards,,Language Standards + Supported by GCC}, for details of these standard versions. This option +-is currently only supported when compiling C or C++. ++is currently only supported when compiling C or C++. + + The compiler can accept several base standards, such as @samp{c89} or + @samp{c++98}, and GNU dialects of those standards, such as +@@ -2816,21 +2823,21 @@ + A pointer is compared against integer zero with @samp{<}, @samp{<=}, + @samp{>}, or @samp{>=}. + +-@item ++@item + (C++ only) An enumerator and a non-enumerator both appear in a + conditional expression. + +-@item ++@item + (C++ only) Ambiguous virtual bases. + +-@item ++@item + (C++ only) Subscripting an array which has been declared @samp{register}. + +-@item ++@item + (C++ only) Taking the address of a variable which has been declared + @samp{register}. + +-@item ++@item + (C++ only) A base class is not initialized in a derived class' copy + constructor. + +@@ -3366,9 +3373,9 @@ + + Level 1: Most aggressive, quick, least accurate. + Possibly useful when higher levels +-do not warn but -fstrict-aliasing still breaks the code, as it has very few ++do not warn but -fstrict-aliasing still breaks the code, as it has very few + false negatives. However, it has many false positives. +-Warns for all pointer conversions between possibly incompatible types, ++Warns for all pointer conversions between possibly incompatible types, + even if never dereferenced. Runs in the frontend only. + + Level 2: Aggressive, quick, not too precise. +@@ -3377,12 +3384,12 @@ + Unlike level 1, it only warns when an address is taken. Warns about + incomplete types. Runs in the frontend only. + +-Level 3 (default for @option{-Wstrict-aliasing}): +-Should have very few false positives and few false ++Level 3 (default for @option{-Wstrict-aliasing}): ++Should have very few false positives and few false + negatives. Slightly slower than levels 1 or 2 when optimization is enabled. + Takes care of the common punn+dereference pattern in the frontend: + @code{*(int*)&some_float}. +-If optimization is enabled, it also runs in the backend, where it deals ++If optimization is enabled, it also runs in the backend, where it deals + with multiple statement cases using flow-sensitive points-to information. + Only warns when the converted pointer is dereferenced. + Does not warn about incomplete types. +@@ -3469,6 +3476,14 @@ + option will @emph{not} warn about unknown pragmas in system + headers---for that, @option{-Wunknown-pragmas} must also be used. + ++@item -Wno-poison-system-directories ++@opindex Wno-poison-system-directories ++Do not warn for @option{-I} or @option{-L} options using system ++directories such as @file{/usr/include} when cross compiling. This ++option is intended for use in chroot environments when such ++directories contain the correct headers and libraries for the target ++system rather than the host. ++ + @item -Wfloat-equal + @opindex Wfloat-equal + @opindex Wno-float-equal +@@ -4563,7 +4578,7 @@ + + @item -fdbg-cnt=@var{counter-value-list} + @opindex fdbg-cnt +-Set the internal debug counter upperbound. @var{counter-value-list} ++Set the internal debug counter upperbound. @var{counter-value-list} + is a comma-separated list of @var{name}:@var{value} pairs + which sets the upperbound of each debug counter @var{name} to @var{value}. + All debug counters have the initial upperbound of @var{UINT_MAX}, +@@ -4643,7 +4658,7 @@ + @opindex fdump-rtl-ce3 + @option{-fdump-rtl-ce1}, @option{-fdump-rtl-ce2}, and + @option{-fdump-rtl-ce3} enable dumping after the three +-if conversion passes. ++if conversion passes. + + @itemx -fdump-rtl-cprop_hardreg + @opindex fdump-rtl-cprop_hardreg +@@ -4772,7 +4787,7 @@ + + @item -fdump-rtl-seqabstr + @opindex fdump-rtl-seqabstr +-Dump after common sequence discovery. ++Dump after common sequence discovery. + + @item -fdump-rtl-shorten + @opindex fdump-rtl-shorten +@@ -5345,7 +5360,13 @@ + each of them. + + Not all optimizations are controlled directly by a flag. Only +-optimizations that have a flag are listed. ++optimizations that have a flag are listed in this section. ++ ++Depending on the target and how GCC was configured, a slightly different ++set of optimizations may be enabled at each @option{-O} level than ++those listed here. You can invoke GCC with @samp{-Q --help=optimizers} ++to find out the exact set of optimizations that are enabled at each level. ++@xref{Overall Options}, for examples. + + @table @gcctabopt + @item -O +@@ -5949,7 +5970,7 @@ + by allowing other instructions to be issued until the result of the load + or floating point instruction is required. + +-Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. ++Enabled at levels @option{-O2}, @option{-O3}. + + @item -fschedule-insns2 + @opindex fschedule-insns2 +@@ -6054,8 +6075,8 @@ + + @item -fsel-sched-pipelining + @opindex fsel-sched-pipelining +-Enable software pipelining of innermost loops during selective scheduling. +-This option has no effect until one of @option{-fselective-scheduling} or ++Enable software pipelining of innermost loops during selective scheduling. ++This option has no effect until one of @option{-fselective-scheduling} or + @option{-fselective-scheduling2} is turned on. + + @item -fsel-sched-pipelining-outer-loops +@@ -6119,9 +6140,9 @@ + + @item -fipa-struct-reorg + @opindex fipa-struct-reorg +-Perform structure reorganization optimization, that change C-like structures +-layout in order to better utilize spatial locality. This transformation is +-effective for programs containing arrays of structures. Available in two ++Perform structure reorganization optimization, that change C-like structures ++layout in order to better utilize spatial locality. This transformation is ++effective for programs containing arrays of structures. Available in two + compilation modes: profile-based (enabled with @option{-fprofile-generate}) + or static (which uses built-in heuristics). Require @option{-fipa-type-escape} + to provide the safety of this transformation. It works only in whole program +@@ -6140,7 +6161,7 @@ + @opindex fipa-cp + Perform interprocedural constant propagation. + This optimization analyzes the program to determine when values passed +-to functions are constants and then optimizes accordingly. ++to functions are constants and then optimizes accordingly. + This optimization can substantially increase performance + if the application has constants passed to functions. + This flag is enabled by default at @option{-O2}, @option{-Os} and @option{-O3}. +@@ -6164,10 +6185,9 @@ + of the matrix. The second optimization is matrix transposing that + attempts to change the order of the matrix's dimensions in order to + improve cache locality. +-Both optimizations need the @option{-fwhole-program} flag. ++Both optimizations need the @option{-fwhole-program} flag. + Transposing is enabled only if profiling information is available. + +- + @item -ftree-sink + @opindex ftree-sink + Perform forward store motion on trees. This flag is +@@ -6191,9 +6211,9 @@ + + @item -ftree-builtin-call-dce + @opindex ftree-builtin-call-dce +-Perform conditional dead code elimination (DCE) for calls to builtin functions +-that may set @code{errno} but are otherwise side-effect free. This flag is +-enabled by default at @option{-O2} and higher if @option{-Os} is not also ++Perform conditional dead code elimination (DCE) for calls to builtin functions ++that may set @code{errno} but are otherwise side-effect free. This flag is ++enabled by default at @option{-O2} and higher if @option{-Os} is not also + specified. + + @item -ftree-dominator-opts +@@ -6258,8 +6278,8 @@ + + @item -floop-strip-mine + Perform loop strip mining transformations on loops. Strip mining +-splits a loop into two nested loops. The outer loop has strides +-equal to the strip size and the inner loop has strides of the ++splits a loop into two nested loops. The outer loop has strides ++equal to the strip size and the inner loop has strides of the + original loop within a strip. For example, given a loop like: + @smallexample + DO I = 1, N +@@ -6621,6 +6641,14 @@ + The @option{-fstrict-overflow} option is enabled at levels + @option{-O2}, @option{-O3}, @option{-Os}. + ++@item -falign-arrays ++@opindex falign-arrays ++Set the minimum alignment for array variables to be the largest power ++of two less than or equal to their total storage size, or the biggest ++alignment used on the machine, whichever is smaller. This option may be ++helpful when compiling legacy code that uses type punning on arrays that ++does not strictly conform to the C standard. ++ + @item -falign-functions + @itemx -falign-functions=@var{n} + @opindex falign-functions +@@ -6756,7 +6784,7 @@ + Set the directory to search the profile data files in to @var{path}. + This option affects only the profile data generated by + @option{-fprofile-generate}, @option{-ftest-coverage}, @option{-fprofile-arcs} +-and used by @option{-fprofile-use} and @option{-fbranch-probabilities} ++and used by @option{-fprofile-use} and @option{-fbranch-probabilities} + and its related options. + By default, GCC will use the current directory as @var{path} + thus the profile data file will appear in the same directory as the object file. +@@ -7185,6 +7213,21 @@ + + Not all targets support this option. + ++@item -fremove-local-statics ++@opindex fremove-local-statics ++Converts function-local static variables to automatic variables when it ++is safe to do so. This transformation can reduce the number of ++instructions executed due to automatic variables being cheaper to ++read/write than static variables. ++ ++@item -fpromote-loop-indices ++@opindex fpromote-loop-indices ++Converts loop indices that have a type shorter than the word size to ++word-sized quantities. This transformation can reduce the overhead ++associated with sign/zero-extension and truncation of such variables. ++Using @option{-funsafe-loop-optimizations} with this option may result ++in more effective optimization. ++ + @item --param @var{name}=@var{value} + @opindex param + In some places, GCC uses various constants to control the amount of +@@ -7218,8 +7261,8 @@ + The threshold ratio (as a percentage) between a structure frequency + and the frequency of the hottest structure in the program. This parameter + is used by struct-reorg optimization enabled by @option{-fipa-struct-reorg}. +-We say that if the ratio of a structure frequency, calculated by profiling, +-to the hottest structure frequency in the program is less than this ++We say that if the ratio of a structure frequency, calculated by profiling, ++to the hottest structure frequency in the program is less than this + parameter, then structure reorganization is not applied to this structure. + The default is 10. + +@@ -7692,8 +7735,8 @@ + The default value is 50. + + @item selsched-max-sched-times +-The maximum number of times that an instruction will be scheduled during +-selective scheduling. This is the limit on the number of iterations ++The maximum number of times that an instruction will be scheduled during ++selective scheduling. This is the limit on the number of iterations + through which the instruction may be pipelined. The default value is 2. + + @item selsched-max-insns-to-rename +@@ -8065,7 +8108,7 @@ + @cindex linker script + Use @var{script} as the linker script. This option is supported by most + systems using the GNU linker. On some targets, such as bare-board +-targets without an operating system, the @option{-T} option may be required ++targets without an operating system, the @option{-T} option may be required + when linking to avoid references to undefined symbols. + + @item -Xlinker @var{option} +@@ -8081,7 +8124,7 @@ + @option{-Xlinker "-assert definitions"}, because this passes the entire + string as a single argument, which is not what the linker expects. + +-When using the GNU linker, it is usually more convenient to pass ++When using the GNU linker, it is usually more convenient to pass + arguments to linker options using the @option{@var{option}=@var{value}} + syntax than as separate arguments. For example, you can specify + @samp{-Xlinker -Map=output.map} rather than +@@ -8092,7 +8135,7 @@ + @opindex Wl + Pass @var{option} as an option to the linker. If @var{option} contains + commas, it is split into multiple options at the commas. You can use this +-syntax to pass an argument to the option. ++syntax to pass an argument to the option. + For example, @samp{-Wl,-Map,output.map} passes @samp{-Map output.map} to the + linker. When using the GNU linker, you can also get the same effect with + @samp{-Wl,-Map=output.map}. +@@ -8740,6 +8783,12 @@ + @code{,}, @code{!}, @code{|}, and @code{*} as needed. + + ++@item -mlow-irq-latency ++@opindex mlow-irq-latency ++Avoid instructions with high interrupt latency when generating ++code. This can increase code size and reduce performance. ++The option is off by default. ++ + @end table + + The conditional text @code{X} in a %@{@code{S}:@code{X}@} or similar +@@ -9019,11 +9068,6 @@ + @samp{hard} allows generation of floating-point instructions + and uses FPU-specific calling conventions. + +-Using @option{-mfloat-abi=hard} with VFP coprocessors is not supported. +-Use @option{-mfloat-abi=softfp} with the appropriate @option{-mfpu} option +-to allow the compiler to generate code that makes use of the hardware +-floating-point capabilities for these CPUs. +- + The default depends on the specific target configuration. Note that + the hard-float and soft-float ABIs are not link-compatible; you must + compile your entire program with the same ABI, and link with a +@@ -9077,10 +9121,10 @@ + @samp{arm10e}, @samp{arm1020e}, @samp{arm1022e}, + @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp}, + @samp{arm1156t2-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, +-@samp{cortex-a8}, @samp{cortex-a9}, +-@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m3}, +-@samp{cortex-m1}, +-@samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}. ++@samp{cortex-a5}, @samp{cortex-a8}, @samp{cortex-a9}, ++@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m4}, @samp{cortex-m3}, ++@samp{cortex-m1}, @samp{cortex-m0}, ++@samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, @samp{marvell-f}. + + @item -mtune=@var{name} + @opindex mtune +@@ -9114,14 +9158,26 @@ + @opindex mfp + This specifies what floating point hardware (or hardware emulation) is + available on the target. Permissible names are: @samp{fpa}, @samp{fpe2}, +-@samp{fpe3}, @samp{maverick}, @samp{vfp}, @samp{vfpv3}, @samp{vfpv3-d16} and +-@samp{neon}. @option{-mfp} and @option{-mfpe} ++@samp{fpe3}, @samp{maverick}, @samp{vfp}, @samp{vfpv3}, @samp{vfpv3-fp16}, ++@samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv4}, @samp{vfpv4-d16}, @samp{neon}, @samp{neon-fp16} and @samp{neon-vfpv4}. ++@option{-mfp} and @option{-mfpe} + are synonyms for @option{-mfpu}=@samp{fpe}@var{number}, for compatibility + with older versions of GCC@. + + If @option{-msoft-float} is specified this specifies the format of + floating point values. + ++@item -mfp16-format=@var{name} ++@opindex mfp16-format ++Specify the format of the @code{__fp16} half-precision floating-point type. ++Permissible names are @samp{none}, @samp{ieee}, and @samp{alternative}; ++the default is @samp{none}, in which case the @code{__fp16} type is not ++defined. @xref{Half-Precision}, for more information. ++ ++@item -mmarvell-div ++@opindex mmarvell-div ++Generate hardware integer division instructions supported by some Marvell cores. ++ + @item -mstructure-size-boundary=@var{n} + @opindex mstructure-size-boundary + The size of all structures and unions will be rounded up to a multiple +@@ -9225,6 +9281,10 @@ + mixed 16/32-bit Thumb-2 instructions based on the @option{-mcpu=@var{name}} + and @option{-march=@var{name}} options. + ++@item -mfix-janus-2cc ++@opindex mfix-janus-2cc ++Work around hardware errata for Avalent Janus 2CC cores. ++ + @item -mtpcs-frame + @opindex mtpcs-frame + Generate a stack frame that is compliant with the Thumb Procedure Call +@@ -9513,7 +9573,7 @@ + and link scripts will be used to support Core B. This option + defines @code{__BFIN_COREB}. When this option is used, coreb_main + should be used instead of main. It must be used with +-@option{-mmulticore}. ++@option{-mmulticore}. + + @item -msdram + @opindex msdram +@@ -10980,6 +11040,9 @@ + @item core2 + Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 + instruction set support. ++@item atom ++Intel Atom CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 ++instruction set support. + @item k6 + AMD K6 CPU with MMX instruction set support. + @item k6-2, k6-3 +@@ -11247,7 +11310,7 @@ + libraries assume that extended precision (80 bit) floating-point operations + are enabled by default; routines in such libraries could suffer significant + loss of accuracy, typically through so-called "catastrophic cancellation", +-when this option is used to set the precision to less than extended precision. ++when this option is used to set the precision to less than extended precision. + + @item -mstackrealign + @opindex mstackrealign +@@ -11379,6 +11442,11 @@ + In 64-bit mode, SAHF instruction is used to optimize @code{fmod}, @code{drem} + or @code{remainder} built-in functions: see @ref{Other Builtins} for details. + ++@item -mmovbe ++@opindex mmovbe ++This option will enable GCC to use movbe instruction to implement ++@code{__builtin_bswap32} and @code{__builtin_bswap64}. ++ + @item -mrecip + @opindex mrecip + This option will enable GCC to use RCPSS and RSQRTSS instructions (and their +@@ -11415,6 +11483,16 @@ + @option{-funsafe-math-optimizations} have to be enabled. A SVML or ACML ABI + compatible library will have to be specified at link time. + ++@item -mabi=@var{name} ++@opindex mabi ++Generate code for the specified calling convention. Permissible values ++are: @samp{sysv} for the ABI used on GNU/Linux and other systems and ++@samp{ms} for the Microsoft ABI. The default is to use the Microsoft ++ABI when targeting Windows. On all other systems, the default is the ++SYSV ABI. You can control this behavior for a specific function by ++using the function attribute @samp{ms_abi}/@samp{sysv_abi}. ++@xref{Function Attributes}. ++ + @item -mpush-args + @itemx -mno-push-args + @opindex mpush-args +@@ -11612,6 +11690,15 @@ + specifies that a GUI application is to be generated by + instructing the linker to set the PE header subsystem type + appropriately. ++ ++@item -mpe-aligned-commons ++@opindex mpe-aligned-commons ++This option is available for Cygwin and MinGW targets. It ++specifies that the GNU extension to the PE file format that ++permits the correct alignment of COMMON variables should be ++used when generating code. It will be enabled by default if ++GCC detects that the target assembler found during configuration ++supports the feature. + @end table + + See also under @ref{i386 and x86-64 Options} for standard options. +@@ -12068,7 +12155,7 @@ + + @multitable @columnfractions 0.20 0.80 + @item @strong{Family} @tab @strong{@samp{-mcpu} arguments} +-@item @samp{51qe} @tab @samp{51qe} ++@item @samp{51} @tab @samp{51} @samp{51ac} @samp{51cn} @samp{51em} @samp{51qe} + @item @samp{5206} @tab @samp{5202} @samp{5204} @samp{5206} + @item @samp{5206e} @tab @samp{5206e} + @item @samp{5208} @tab @samp{5207} @samp{5208} +@@ -12077,6 +12164,7 @@ + @item @samp{5216} @tab @samp{5214} @samp{5216} + @item @samp{52235} @tab @samp{52230} @samp{52231} @samp{52232} @samp{52233} @samp{52234} @samp{52235} + @item @samp{5225} @tab @samp{5224} @samp{5225} ++@item @samp{52259} @tab @samp{52252} @samp{52254} @samp{52255} @samp{52256} @samp{52258} @samp{52259} + @item @samp{5235} @tab @samp{5232} @samp{5233} @samp{5234} @samp{5235} @samp{523x} + @item @samp{5249} @tab @samp{5249} + @item @samp{5250} @tab @samp{5250} +@@ -12084,6 +12172,7 @@ + @item @samp{5272} @tab @samp{5272} + @item @samp{5275} @tab @samp{5274} @samp{5275} + @item @samp{5282} @tab @samp{5280} @samp{5281} @samp{5282} @samp{528x} ++@item @samp{53017} @tab @samp{53011} @samp{53012} @samp{53013} @samp{53014} @samp{53015} @samp{53016} @samp{53017} + @item @samp{5307} @tab @samp{5307} + @item @samp{5329} @tab @samp{5327} @samp{5328} @samp{5329} @samp{532x} + @item @samp{5373} @tab @samp{5372} @samp{5373} @samp{537x} +@@ -12583,8 +12672,9 @@ + @samp{24kec}, @samp{24kef2_1}, @samp{24kef1_1}, + @samp{34kc}, @samp{34kf2_1}, @samp{34kf1_1}, + @samp{74kc}, @samp{74kf2_1}, @samp{74kf1_1}, @samp{74kf3_2}, ++@samp{1004kc}, @samp{1004kf2_1}, @samp{1004kf1_1}, + @samp{loongson2e}, @samp{loongson2f}, +-@samp{m4k}, ++@samp{m4k}, @samp{m14k}, + @samp{octeon}, + @samp{orion}, + @samp{r2000}, @samp{r3000}, @samp{r3900}, @samp{r4000}, @samp{r4400}, +@@ -12682,11 +12772,14 @@ + Equivalent to @samp{-march=mips64r2}. + + @item -mips16 ++@itemx -mips16e + @itemx -mno-mips16 + @opindex mips16 ++@opindex mips16e + @opindex mno-mips16 + Generate (do not generate) MIPS16 code. If GCC is targetting a + MIPS32 or MIPS64 architecture, it will make use of the MIPS16e ASE@. ++@option{-mips16e} is a deprecated alias for @option{-mips16}. + + MIPS16 code generation can also be controlled on a per-function basis + by means of @code{mips16} and @code{nomips16} attributes. +@@ -12702,13 +12795,14 @@ + @itemx -mno-interlink-mips16 + @opindex minterlink-mips16 + @opindex mno-interlink-mips16 +-Require (do not require) that non-MIPS16 code be link-compatible with +-MIPS16 code. ++Require (do not require) that non-MIPS16/non-microMIPS code be link-compatible ++with MIPS16/microMIPS code. + +-For example, non-MIPS16 code cannot jump directly to MIPS16 code; ++For example, non-MIPS16/non-microMIPS code cannot jump directly to ++MIPS16/microMIPS code; + it must either use a call or an indirect jump. @option{-minterlink-mips16} + therefore disables direct jumps unless GCC knows that the target of the +-jump is not MIPS16. ++jump is not MIPS16/non microMIPS. + + @item -mabi=32 + @itemx -mabi=o64 +@@ -12911,12 +13005,29 @@ + Use (do not use) the MIPS-3D ASE@. @xref{MIPS-3D Built-in Functions}. + The option @option{-mips3d} implies @option{-mpaired-single}. + ++@item -mmicromips ++@itemx -mno-micromips ++@opindex mmicromips ++@opindex mno-mmicromips ++Generate (do not generate) microMIPS code. If GCC is targetting a ++MIPS32 or MIPS64 architecture, it will make use of the microMIPS ASE@. ++ ++MicroMIPS code generation can also be controlled on a per-function basis ++by means of @code{micromips} and @code{nomicromips} attributes. ++@xref{Function Attributes}, for more information. ++ + @item -mmt + @itemx -mno-mt + @opindex mmt + @opindex mno-mt + Use (do not use) MT Multithreading instructions. + ++@item -mmcu ++@itemx -mno-mcu ++@opindex mmcu ++@opindex mno-mcu ++Use (do not use) the MIPS MCU ASE instructions. ++ + @item -mlong64 + @opindex mlong64 + Force @code{long} types to be 64 bits wide. See @option{-mlong32} for +@@ -13112,6 +13223,16 @@ + This option has no effect on abicalls code. The default is + @option{-mno-long-calls}. + ++@item -mjals ++@itemx -mno-jals ++@opindex mjals ++@opindex mno-jals ++Generate (do not generate) the @code{jals} instruction for microMIPS ++by recognizing that the branch delay slot instruction can be 16 bits. ++This implies that the funciton call cannot switch the current mode ++during the linking stage, because we don't have the @code{jalxs} ++instruction that supports 16-bit branch delay slot instructions. ++ + @item -mmad + @itemx -mno-mad + @opindex mmad +@@ -14033,8 +14154,8 @@ + @itemx -mdouble-float + @opindex msingle-float + @opindex mdouble-float +-Generate code for single or double-precision floating point operations. +-@option{-mdouble-float} implies @option{-msingle-float}. ++Generate code for single or double-precision floating point operations. ++@option{-mdouble-float} implies @option{-msingle-float}. + + @item -msimple-fpu + @opindex msimple-fpu +@@ -14042,7 +14163,7 @@ + + @item -mfpu + @opindex mfpu +-Specify type of floating point unit. Valid values are @var{sp_lite} ++Specify type of floating point unit. Valid values are @var{sp_lite} + (equivalent to -msingle-float -msimple-fpu), @var{dp_lite} (equivalent + to -mdouble-float -msimple-fpu), @var{sp_full} (equivalent to -msingle-float), + and @var{dp_full} (equivalent to -mdouble-float). +@@ -14678,7 +14799,7 @@ + + @item -mel + @opindex mel +-Compile code for little endian mode. ++Compile code for little endian mode. + + @item -mnhwloop + @opindex mnhwloop +@@ -14690,7 +14811,7 @@ + + @item -mmac + @opindex mmac +-Enable the use of multiply-accumulate instructions. Disabled by default. ++Enable the use of multiply-accumulate instructions. Disabled by default. + + @item -mscore5 + @opindex mscore5 +@@ -14807,7 +14928,8 @@ + + @item -mfmovd + @opindex mfmovd +-Enable the use of the instruction @code{fmovd}. ++Enable the use of the instruction @code{fmovd}. Check @option{-mdalign} for ++alignment constraints. + + @item -mhitachi + @opindex mhitachi +@@ -14982,6 +15104,11 @@ + This option is only meaningful when @option{-mno-pt-fixed} is in effect. + It will then prevent cross-basic-block cse, hoisting and most scheduling + of symbol loads. The default is @option{-mno-invalid-symbols}. ++ ++@item -mfdpic ++@opindex fdpic ++Generate code using the FDPIC ABI for uClinux, as documented at ++@w{@uref{http://www.codesourcery.com/public/docs/sh-fdpic/sh-fdpic-abi.txt}}. + @end table + + @node SPARC Options +@@ -15343,7 +15470,7 @@ + @opindex mhint-max-distance + The encoding of the branch hint instruction limits the hint to be within + 256 instructions of the branch it is effecting. By default, GCC makes +-sure it is within 125. ++sure it is within 125. + + @item -msafe-hints + @opindex msafe-hints +@@ -15810,19 +15937,19 @@ + In C code, controls the placement of uninitialized global variables. + Unix C compilers have traditionally permitted multiple definitions of + such variables in different compilation units by placing the variables +-in a common block. +-This is the behavior specified by @option{-fcommon}, and is the default +-for GCC on most targets. ++in a common block. ++This is the behavior specified by @option{-fcommon}, and is the default ++for GCC on most targets. + On the other hand, this behavior is not required by ISO C, and on some + targets may carry a speed or code size penalty on variable references. +-The @option{-fno-common} option specifies that the compiler should place ++The @option{-fno-common} option specifies that the compiler should place + uninitialized global variables in the data section of the object file, + rather than generating them as common blocks. +-This has the effect that if the same variable is declared ++This has the effect that if the same variable is declared + (without @code{extern}) in two different compilations, + you will get a multiple-definition error when you link them. +-In this case, you must compile with @option{-fcommon} instead. +-Compiling with @option{-fno-common} is useful on targets for which ++In this case, you must compile with @option{-fcommon} instead. ++Compiling with @option{-fno-common} is useful on targets for which + it provides better performance, or if you wish to verify that the + program will work on other systems which always treat uninitialized + variable declarations this way. +--- a/src/gcc/doc/md.texi ++++ b/src/gcc/doc/md.texi +@@ -2574,6 +2574,9 @@ + + @item R + An address that can be used in a non-macro load or store. ++ ++@item YC ++For MIPS, it is the same as the constraint @code{R}. For microMIPS, it matches an address within a 12-bit offset that can be used for microMIPS @code{ll}, @code{sc}, etc. + @end table + + @item Motorola 680x0---@file{config/m68k/constraints.md} +@@ -7504,6 +7507,11 @@ + recognize complicated bypasses, e.g.@: when the consumer is only an address + of insn @samp{store} (not a stored value). + ++If there are more one bypass with the same output and input insns, the ++chosen bypass is the first bypass with a guard in description whose ++guard function returns nonzero. If there is no such bypass, then ++bypass without the guard function is chosen. ++ + @findex exclusion_set + @findex presence_set + @findex final_presence_set +--- a/src/gcc/doc/tm.texi ++++ b/src/gcc/doc/tm.texi +@@ -2472,6 +2472,15 @@ + added to another register (as well as added to a displacement). + @end defmac + ++@defmac MODE_INDEX_REG_CLASS (@var{mode}) ++This is a variation of the @code{INDEX_REG_CLASS} macro which allows ++the selection of an index register in a mode dependent manner. It can ++return @code{NO_REGS} for modes that do not support any form of index ++register. If @var{mode} is @code{VOIDmode} then the macro should ++return a class of registers that is suitable for all addresses in ++which an index register of some form is allowed. ++@end defmac ++ + @defmac REGNO_OK_FOR_BASE_P (@var{num}) + A C expression which is nonzero if register number @var{num} is + suitable for use as a base register in operand addresses. It may be +@@ -2531,6 +2540,14 @@ + only if neither labeling works. + @end defmac + ++@defmac REGNO_MODE_OK_FOR_INDEX_P (@var{num}, @var{mode}) ++A C expression that is just like @code{REGNO_OK_FOR_INDEX_P}, except ++that the expression may examine the mode of the memory reference ++in @var{mode}. If @var{mode} is @code{VOIDmode}, the macro should ++return true if @var{x} is suitable for all modes in which some ++form of index register is allowed. ++@end defmac ++ + @defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class}) + A C expression that places additional restrictions on the register class + to use when it is necessary to copy value @var{x} into a register in class +@@ -3266,7 +3283,8 @@ + @code{INCOMING_FRAME_SP_OFFSET}. Which is unfortunately not usable + during virtual register instantiation. + +-The default value for this macro is @code{FIRST_PARM_OFFSET (fundecl)}, ++The default value for this macro is ++@code{FIRST_PARM_OFFSET (fundecl) + crtl->args.pretend_args_size}, + which is correct for most machines; in general, the arguments are found + immediately before the stack frame. Note that this is not the case on + some targets that save registers into the caller's frame, such as SPARC +@@ -4332,6 +4350,18 @@ + compiled. + @end defmac + ++@deftypefn {Target Hook} rtx TARGET_LIBCALL_VALUE (enum machine_mode ++@var{mode}, rtx @var{fun}) ++Define this hook if the back-end needs to know the name of the libcall ++function in order to determine where the result should be returned. ++ ++The mode of the result is given by @var{mode} and the name of the called ++library function is given by @var{fun}. The hook should return an RTX ++representing the place where the library function result will be returned. ++ ++If this hook is not defined, then LIBCALL_VALUE will be used. ++@end deftypefn ++ + @defmac FUNCTION_VALUE_REGNO_P (@var{regno}) + A C expression that is nonzero if @var{regno} is the number of a hard + register in which the values of called function may come back. +@@ -6851,8 +6881,9 @@ + @end defmac + + @defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED +-Define this macro if the register defined by +-@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. Do not define ++A C expression that is nonzero if the register defined by ++@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. If not defined, ++the default is zero. Do not define + this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined. + @end defmac + +@@ -7250,7 +7281,14 @@ + A C statement (sans semicolon) to output to the stdio stream + @var{stream} the assembler definition of a common-label named + @var{name} whose size is @var{size} bytes. The variable @var{rounded} +-is the size rounded up to whatever alignment the caller wants. ++is the size rounded up to whatever alignment the caller wants. It is ++possible that @var{size} may be zero, for instance if a struct with no ++other member than a zero-length array is defined. In this case, the ++backend must output a symbol definition that allocates at least one ++byte, both so that the address of the resulting object does not compare ++equal to any other, and because some object formats cannot even express ++the concept of a zero-sized common symbol, as that is how they represent ++an ordinary undefined external. + + Use the expression @code{assemble_name (@var{stream}, @var{name})} to + output the name itself; before and after that, output the additional +@@ -8107,6 +8145,22 @@ + to registers using alternate names. + @end defmac + ++@defmac OVERLAPPING_REGISTER_NAMES ++If defined, a C initializer for an array of structures containing a ++name, a register number and a count of the number of consecutive ++machine registers the name overlaps. This macro defines additional ++names for hard registers, thus allowing the @code{asm} option in ++declarations to refer to registers using alternate names. Unlike ++@code{ADDITIONAL_REGISTER_NAMES}, this macro should be used when the ++register name implies multiple underlying registers. ++ ++This macro should be used when it is important that a clobber in an ++@code{asm} statement clobbers all the underlying values implied by the ++register name. For example, on ARM, clobbering the double-precision ++VFP register ``d0'' implies clobbering both single-precision registers ++``s0'' and ``s1''. ++@end defmac ++ + @defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr}) + Define this macro if you are using an unusual assembler that + requires different names for the machine instructions. +@@ -8156,6 +8210,19 @@ + If this macro is not defined, it is equivalent to a null statement. + @end defmac + ++@deftypefn {Target Hook} void TARGET_ASM_FINAL_POSTSCAN_INSN (FILE *@var{FILE}, rtx @var{insn}, rtx *@var{opvec}, int @var{noperands}) ++If defined, this target hook is a function which is executed just after the ++output of assembler code for @var{insn}, to change the mode of the assembler ++if necessary. ++ ++Here the argument @var{opvec} is the vector containing the operands ++extracted from @var{insn}, and @var{noperands} is the number of ++elements of the vector which contain meaningful data for this insn. ++The contents of this vector are what was used to convert the insn ++template into assembler code, so you can change the assembler mode ++by checking the contents of the vector. ++@end deftypefn ++ + @defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code}) + A C compound statement to output to stdio stream @var{stream} the + assembler syntax for an instruction operand @var{x}. @var{x} is an +@@ -10426,6 +10493,18 @@ + passed along. + @end deftypefn + ++@deftypefn {Target Hook} int TARGET_COMMUTATIVE_OPERAND_PRECEDENCE (const_rtx @var{op}, int @var{value}) ++This target hook returns a value indicating whether @var{OP}, an operand of ++a commutative operation, is preferred as the first or second operand. ++The higher the value, the stronger the preference for being the first operand. ++Negative values are used to indicate a preference for the first operand ++and positive values for the second operand. Usually the hook will return ++@var{VALUE}, which is the default precedence for @var{OP} ++(see @file{rtlanal.c}:@code{commutative_operand_precedence()}), but sometimes ++backends may wish certain operands to appear at the right places within ++instructions. ++@end deftypefn ++ + @deftypefn {Target Hook} void TARGET_SET_CURRENT_FUNCTION (tree @var{decl}) + The compiler invokes this hook whenever it changes its current function + context (@code{cfun}). You can define this function if +@@ -10622,6 +10701,38 @@ + the front end. + @end deftypefn + ++@deftypefn {Target Hook} {const char *} TARGET_INVALID_PARAMETER_TYPE (tree @var{type}) ++If defined, this macro returns the diagnostic message when it is ++invalid for functions to include parameters of type @var{type}, ++or @code{NULL} if validity should be determined by ++the front end. This is currently used only by the C and C++ front ends. ++@end deftypefn ++ ++@deftypefn {Target Hook} {const char *} TARGET_INVALID_RETURN_TYPE (tree @var{type}) ++If defined, this macro returns the diagnostic message when it is ++invalid for functions to have return type @var{type}, ++or @code{NULL} if validity should be determined by ++the front end. This is currently used only by the C and C++ front ends. ++@end deftypefn ++ ++@deftypefn {Target Hook} {tree} TARGET_PROMOTED_TYPE (tree @var{type}) ++If defined, this target hook returns the type to which values of ++@var{type} should be promoted when they appear in expressions, ++analogous to the integer promotions, or @code{NULL_TREE} to use the ++front end's normal promotion rules. This hook is useful when there are ++target-specific types with special promotion rules. ++This is currently used only by the C and C++ front ends. ++@end deftypefn ++ ++@deftypefn {Target Hook} {tree} TARGET_CONVERT_TO_TYPE (tree @var{type}, tree @var{expr}) ++If defined, this hook returns the result of converting @var{expr} to ++@var{type}. It should return the converted expression, ++or @code{NULL_TREE} to apply the front end's normal conversion rules. ++This hook is useful when there are target-specific types with special ++conversion rules. ++This is currently used only by the C and C++ front ends. ++@end deftypefn ++ + @defmac TARGET_USE_JCR_SECTION + This macro determines whether to use the JCR section to register Java + classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both +--- a/src/gcc/java/gcj.texi ++++ b/src/gcc/java/gcj.texi +@@ -607,6 +607,13 @@ + accessing an object via a reference. On other systems you won't need + this because null pointer accesses are caught automatically by the + processor. ++ ++@item -fuse-atomic-builtins ++On some systems, gcc can generate code for built-in atomic operations. ++Use this option to force gcj to use these builtins when compiling Java ++code. Where this capability is present it should be automatically ++detected, so you won't usually need to use this option. ++ + @end table + + @c man end +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -94,7 +94,7 @@ + How you can copy and share this manual. + * Funding:: How to help assure continued work for free + software. +-* Index:: Index of this documentation. ++* Library Index:: Index of this documentation. + @end menu + + +@@ -1713,8 +1713,8 @@ + @c Index + @c --------------------------------------------------------------------- + +-@node Index +-@unnumbered Index ++@node Library Index ++@unnumbered Library Index + + @printindex cp + --- gcc-4.4-4.4.7.orig/debian/patches/gcc-linaro.diff +++ gcc-4.4-4.4.7/debian/patches/gcc-linaro.diff @@ -0,0 +1,88946 @@ +# DP: Changes for the Linaro 4.4-2011.02-0 release. + +--- a/src/ChangeLog.linaro ++++ b/src/ChangeLog.linaro +@@ -0,0 +1,8691 @@ ++2011-02-04 Andrew Stubbs ++ ++ GCC Linaro 4.4-2011.02-0 released. ++ ++ gcc/ ++ * LINARO-VERSION: Update. ++ ++2011-01-28 Ramana Radhakrishnan ++ ++ LP: #709329 ++ Backport from FSF trunk ++ 2010-07-03 Jie Zhang ++ ++ * config/arm/arm.c (arm_attr_length_move_neon): New. ++ * config/arm/arm-protos.h (arm_attr_length_move_neon): Declare. ++ * config/arm/neon.md (define_mode_attr V_slen): Remove. ++ (neon_mov for VSTRUCT): Use arm_attr_length_move_neon ++ to compute length attribute. ++ ++2011-01-07 Andrew Stubbs ++ ++ gcc/ ++ * LINARO-VERSION: Bump version. ++ ++2011-01-07 Andrew Stubbs ++ ++ GCC Linaro 4.4-2011.01-0 released. ++ ++ gcc/ ++ * LINARO-VERSION: Update. ++ ++2010-12-21 Ulrich Weigand ++ ++ LP: #617384 ++ Backport from mainline: ++ ++ * config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all ++ instructions injected into the prologue to prologue_locator. ++ ++2010-12-10 Andrew Stubbs ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-12-10 Andrew Stubbs ++ ++ GCC Linaro 4.4-2010.12-0 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-12-03 Julian Brown ++ ++ Fix lp629671 ++ ++ gcc/ ++ * config/arm/arm.h (REG_CLASS_CONTENTS): Remove soft frame pointer ++ from CORE_REGS and GENERAL_REGS classes. ++ * config/arm/arm.md (*thumb1_movsi_insn): Ignore all parts of final ++ constraint for register preferencing. ++ ++2010-10-12 Michael Hope ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-10-12 Michael Hope ++ ++ GCC Linaro 4.4-2010.10-0 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-10-04 Michael Hope ++ ++ Merged gcc_4_4_5_release from upstream (r164870) ++ ++2010-09-30 Yao Qi ++ ++ Fix LP:#647597 ++ gcc/ ++ * c-common.c (fname_decl): Update decl's source location. ++ ++2010-09-24 Yao Qi ++ ++ Backport from FSF to fix ICE found in LP:635409: ++ ++ 2010-07-07 Bernd Schmidt ++ ++ gcc/ ++ PR rtl-optimization/44787 ++ * config/arm/arm.md (arith_shiftsi): Allow stack pointer in operand 2. ++ * config/arm/thumb2.md (thumb2_arith_shiftsi): Likewise. ++ ++2010-09-10 Andrew Stubbs ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-09-10 Andrew Stubbs ++ ++ GCC Linaro 4.4-2010.09-1 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-09-10 Ulrich Weigand ++ ++ Backport from mainline: ++ 2010-09-09 Vladimir Makarov ++ ++ PR middle-end/45312 ++ * reload1.c (merge_assigned_reloads): Remove. ++ (reload_as_needed): Don't call it. ++ ++2010-09-10 Andrew Stubbs ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-09-10 Andrew Stubbs ++ ++ GCC Linaro 4.4-2010.09-0 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-08-07 Andrew Stubbs ++ ++ Merge from FSF GCC 4.4 branch (pre 4.4.5). ++ ++2010-08-06 Andrew Stubbs ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-08-06 Andrew Stubbs ++ ++ GCC Linaro 4.4-2010.08-0 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-08-06 Yao Qi ++ ++ LP: #602285 ++ gcc/testsuite ++ * gcc.dg/tree-ssa/predcom-3.c: Append param max-unroll-times=3 ++ in dg-options to fix test failure. ++ * gcc.dg/tree-ssa/predcom-4.c: Likewise. ++ * gcc.dg/tree-ssa/predcom-5.c: Likewise. ++ ++2010-08-03 Michael Hope ++ ++ LP: #605080 ++ * libjava/classpath/lib/gnu/javax/print/ipp/IppPrintService.class: Re-generated ++ after updating the corresponding .java file ++ * libjava/classpath/lib/gnu/javax/print/ipp/IppRequest$RequestWriter.class: Likewise ++ * libjava/classpath/lib/gnu/javax/print/ipp/IppRequest.class: Likewise ++ * libjava/classpath/lib/gnu/javax/print/ipp/IppResponse$ResponseReader.class: Likewise ++ * libjava/classpath/lib/gnu/javax/print/ipp/IppResponse.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class: Likewise ++ * libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class: Likewise ++ ++2010-08-02 Ulrich Weigand ++ ++ LP: #500524 ++ ++ Backport from mainline: ++ 2010-04-03 Richard Guenther ++ ++ PR middle-end/42509 ++ * alias.c (nonoverlapping_memrefs_p): For spill-slot accesses ++ require a non-NULL MEM_OFFSET. ++ ++2010-07-30 Ulrich Weigand ++ ++ LP: #604874 ++ Backport from mainline: ++ ++ gcc/cp/ ++ PR c++/45112 ++ * decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED. ++ ++ gcc/testsuite/ ++ PR c++/45112 ++ * testsuite/g++.dg/pr45112.C: New test. ++ ++2010-08-06 Yao Qi ++ ++ LP: #612011 ++ gcc/ ++ * config/arm/arm.c (output_move_double): Fix typo generating ++ instructions ('ldr'->'str'). ++ ++ gcc/testsuite/ ++ * gcc.target/arm/pr45094.c: New test. ++ ++2010-08-05 Yao Qi ++ ++ gcc/testsuite ++ * g++.dg/eh/ref1.C: Change ARM triplet to a more ++ general form. ++ * g++.dg/eh/ref2.C: Likewise. ++ * g++.dg/ext/packed8.C: Likewise. ++ * g++.dg/init/array16.C: Likewise. ++ * g++.dg/other/crash-4.C: Likewise. ++ * g++.dg/other/packed1.C: Likewise. ++ * gcc.dg/builtin-stringop-chk-1.c: Likewise. ++ * gcc.dg/tree-ssa/loop-31.c: Likewise. ++ ++2010-08-04 Yao Qi ++ ++ LP: #612406 ++ gcc/testsuite ++ * gcc.c-torture/execute/bcp-1.x: Change ARM triplet to ++ a more general form. ++ ++2010-08-03 Yao Qi ++ ++ LP: #612405 ++ gcc/testsuite ++ * gcc.c-torture/execute/990208-1.x: Change ARM triplet to ++ a more general form. ++ ++2010-08-03 Chung-Lin Tang ++ ++ Backport from mainline for Launchpad Bug #602745: ++ ++ 2010-07-28 Chung-Lin Tang ++ ++ gcc/ ++ * config/arm/arm.c (arm_pcs_default): Remove static. ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_PCS or ++ __ARM_PCS_VFP to indicate soft/hard-float calling convention. ++ (arm_pcs_default): Declare. ++ ++2010-07-23 Ulrich Weigand ++ ++ Revert most PowerPC-related patches: ++ ++ 2010-05-19 Thomas Schwinge ++ ++ Issue #8729 ++ ++ Integrate . ++ Drop the TARGET_TITAN_FPU and fsqrt changes. ++ ++ XXXX-XX-XX Philipp Tomsich ++ ++ NOT ASSIGNED TO FSF ++ COPYRIGHT Philipp Tomsich (Theobroma Systems Design und Consulting GmbH) ++ ++ gcc/ ++ * config.gcc: Recognize titan. ++ * config/rs6000/rs6000.c (titan_cost): New. ++ (rs6000_override_options, rs6000_issue_rate): Handle titan. ++ * config/rs6000/rs6000.h (processor_type): Register titan. ++ * config/rs6000/rs6000.md (cpu): Register titan. ++ Include "titan.md". ++ * config/rs6000/titan.md: New. ++ * doc/invoke.texi : Document titan. ++ ++ 2010-04-20 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/t-spe-fprules (spe-softfp-srcs): Don't add ++ $(gcc_srcdir)/config/soft-fp as a prefix. ++ (LIB2ADD): Use patterns with the source filenames as the filter. ++ ++ 2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/divdf3.S (__divdf3): Use JUMP_TARGET instead of L. ++ * config/rs6000/muldf3.S (__muldf3): Likewise. ++ ++ 2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_muldiv_scale2.S (__spe_return_inf_mul_div): ++ New function. ++ * config/rs6000/divdf3.S (__divdf3): Call it. ++ * config/rs6000/muldf3.S (__muldf3): Likewise. ++ ++ 2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_add_exception.S: Remove .file directive. ++ * config/rs6000/spe_adddf3.S: Likewise. ++ * config/rs6000/spe_cmpdf2.S: Likewise. ++ * config/rs6000/spe_divdf3.S: Likewise. ++ * config/rs6000/spe_eqdf2.S: Likewise. ++ * config/rs6000/spe_extendsfdf2.S: Likewise. ++ * config/rs6000/spe_fixdfdi.S: Likewise. ++ * config/rs6000/spe_fixdfsi.S: Likewise. ++ * config/rs6000/spe_fixunsdfdi.S: Likewise. ++ * config/rs6000/spe_fixunsdfsi.S: Likewise. ++ * config/rs6000/spe_floatdidf.S: Likewise. ++ * config/rs6000/spe_floatsidf.S: Likewise. ++ * config/rs6000/spe_floatundidf.S: Likewise. ++ * config/rs6000/spe_floatunsidf.S: Likewise. ++ * config/rs6000/spe_gedf2.S: Likewise. ++ * config/rs6000/spe_gtdf2.S: Likewise. ++ * config/rs6000/spe_ledf2.S: Likewise. ++ * config/rs6000/spe_ltdf2.S: Likewise. ++ * config/rs6000/spe_muldf3.S: Likewise. ++ * config/rs6000/spe_muldiv_scale2.S: Likewise. ++ * config/rs6000/spe_nedf2.S: Likewise. ++ * config/rs6000/spe_neg.S: Likewise. ++ * config/rs6000/spe_subdf3.S: Likewise. ++ * config/rs6000/spe_truncdfsf2.S: Likewise. ++ * config/rs6000/spe_unord_sub.S: Likewise. ++ * config/rs6000/spe_unorddf2.S: Likewise. ++ ++ 2010-04-08 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_arith.S: Remove. Split into: ++ * config/rs6000/spe_adddf3.S: ...this. ++ * config/rs6000/spe_subdf3.S: ...this. ++ * config/rs6000/spe_muldf3.S: ...this. ++ * config/rs6000/spe_divdf3.S: ...this. ++ * config/rs6000/spe_add_exception.S: ...this. ++ * config/rs6000/spe_muldiv_scale2.S: ...and this. ++ * config/rs6000/spe_cmp.S: Remove. Split into: ++ * config/rs6000/spe_cmpdf2.S: ...this. ++ * config/rs6000/spe_eqdf2.S: ...this. ++ * config/rs6000/spe_nedf2.S: ...this. ++ * config/rs6000/spe_gedf2.S: ...this. ++ * config/rs6000/spe_gtdf2.S: ...this. ++ * config/rs6000/spe_ledf2.S: ...this. ++ * config/rs6000/spe_ltdf2.S: ...this. ++ * config/rs6000/spe_unorddf2.S: ...this. ++ * config/rs6000/spe_unord_sub.S: ...and this. ++ * config/rs6000/spe_cnv.S: Remove. Split into: ++ * config/rs6000/fixdfdi.S: ...this. ++ * config/rs6000/fixdfsi.S: ...this. ++ * config/rs6000/fixunsdfdi.S: ...this. ++ * config/rs6000/fixunsdfsi.S: ...this. ++ * config/rs6000/floatdidf.S: ...this. ++ * config/rs6000/floatsidf.S: ...this. ++ * config/rs6000/floatundidf.S: ...this. ++ * config/rs6000/floatunsidf.S: ...this. ++ * config/rs6000/extendsfdf2.S: ...this. ++ * config/rs6000/truncdfsf2.S: ...this. ++ * config/rs6000/t-spe-fprules (spe-files): Remove removed files. ++ Add new files. ++ ++ 2010-04-05 Nathan Froyd ++ ++ gcc/ ++ * config.gcc (powerpc-*-eabi*): Use soft-fp/t-softfp. ++ ++ 2010-04-02 Nathan Froyd ++ ++ Issue #7937 ++ ++ * release-notes-csl.xml: New note. ++ ++ libgcc/ ++ * configure.ac: Check for __SPE__ when compiling for powerpc*. ++ * configure: Regenerate. ++ * config.host: Add t-spe-fprules if compiling for SPE. ++ * config/rs6000/t-spe-fprules: New file. ++ * config/rs6000/spe_arith.S: New file. ++ * config/rs6000/spe_cmp.S: New file. ++ * config/rs6000/spe_cnv.S: New file. ++ * config/rs6000?spe_neg.S: New file. ++ ++ 2010-04-02 Nathan Froyd ++ ++ gcc/ ++ * config.gcc (powerpc-*-eabi*): Use rs6000/t-fprules-softfp. ++ ++ 2010-03-31 Joseph Myers ++ ++ Backport from FSF: ++ ++ gcc/ ++ 2009-10-10 Peter Bergner ++ ++ * configure.ac: Add test for dci instruction. ++ * configure: Regenerate. ++ * config.in: Likewise. ++ * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp. ++ * doc/invoke.texi: Add cpu_type 476 and 476fp. ++ (-mmulhw): Add 476 to description. ++ (-mdlmzb): Likewise. ++ * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476. ++ * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost. ++ (processor_target_table): Add 476 and 476fp entries. ++ (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476. ++ (rs6000_issue_rate): Add CPU_PPC476. ++ * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define. ++ (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp. ++ (processor_type): Add PROCESSOR_PPC476. ++ (EXTRA_SPECS): Add asm_cpu_476 string. ++ * config/rs6000/rs6000.md: (define_attr "type"): Add isel attribute. ++ (define_attr "cpu"): Add ppc476. ++ Include 476.md. ++ Update comments for 476. ++ (isel_signed, isel_unsigned): Change to use "isel" type attribute. ++ * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476. ++ Update copyright year. ++ * config/rs6000/476.md: New file. ++ * config/rs6000/40x.md: Add description for "isel" attribute. ++ Update copyright year. ++ * config/rs6000/440.md: Likewise. ++ * config/rs6000/603.md: Likewise. ++ * config/rs6000/6xx.md: Likewise. ++ * config/rs6000/7450.md: Likewise. ++ * config/rs6000/7xx.md: Likewise. ++ * config/rs6000/8540.md: Likewise. ++ * config/rs6000/cell.md: Likewise. ++ * config/rs6000/e300c2c3.md: Likewise. ++ * config/rs6000/e500mc.md: Likewise. ++ * config/rs6000/mpc.md: Likewise. ++ * config/rs6000/power4.md: Likewise. ++ * config/rs6000/power5.md: Likewise. ++ * config/rs6000/power6.md: Likewise. ++ * config/rs6000/power7.md: Likewise. ++ * config/rs6000/rios1.md: Likewise. ++ * config/rs6000/rios2.md: Likewise. ++ * config/rs6000/rs64.md: Likewise. ++ ++ 2010-03-30 Joseph Myers ++ ++ Issue #5851 ++ ++ Backport: ++ ++ gcc/ ++ 2009-06-16 J"orn Rennecke ++ Janis Johnson ++ ++ PR target/39254 ++ * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE ++ for the symbol ref of a constant that is the source of a move ++ - nor for any other not-obvious-label-ref constants. ++ ++ 2010-03-09 Nathan Froyd ++ ++ Revert: ++ ++ gcc/ ++ 2010-03-08 Nathan Froyd ++ ++ * config/rs6000/rs6000.md (define_insn ""): Disable on TARGET_ISEL targets. ++ ++ 2010-03-09 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-12-07 Edmar Wienskoski ++ ++ * gcc.target/powerpc/ppc-eq0-1.c: Adjust testcase for isel ++ targets. ++ ++ 2010-03-09 Nathan Froyd ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/block-move-1.c (memcpy): Declare. ++ * gcc.target/powerpc/block-move-2.c (memcpy): Likewise. ++ ++ 2010-03-08 Nathan Froyd ++ ++ Issue #7183 ++ ++ * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Don't force_reg on ++ const0_rtx operand. ++ * config/rs6000/rs6000.md (isel_signed, isel_unsigned): Permit ++ const_int 0 for the second operand; make third operand slightly more ++ lenient. ++ (define_insn ""): Disable on TARGET_ISEL targets. ++ ++ 2010-03-05 Nathan Froyd ++ ++ Issue #7183 ++ ++ * release-notes-csl.xml: New notes. ++ ++ gcc/ ++ * doc/invoke.texi (mblock-move-inline-limit): Tweak @opindex directive. ++ Tweak text to reflect target-specific setting of this option. ++ ++ 2010-03-05 Nathan Froyd ++ ++ Issue #7792 ++ ++ Backport from upstream: ++ ++ gcc/ ++ 2009-09-10 Nathan Froyd ++ ++ * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing ++ with actual SPE/paired vector modes before using 64-bit alignment. ++ Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE. ++ ++ 2010-03-04 Nathan Froyd ++ ++ Issue #7183 ++ ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Change prototype. ++ Ensure that isel pattern is only emitted with proper conditions. ++ (rs6000_emit_cmove): Change call to rs6000_emit_int_cmove to match. ++ (output_isel): Check that condition is LT, GT, LTU, GTU, or EQ. ++ (rs6000_emit_sISEL): New function. ++ (rs6000_emit_sCOND): Call it if computing an SImode result. ++ (rs6000_rtx_costs): Alter costs for comparisons for TARGET_ISEL. ++ * config/rs6000/rs6000.md (abssi2_isel): Change pattern to use ++ lt rather than ge. ++ (isel_signed, isel_unsigned): Tighten constraints on comparison ++ operator. ++ (sne, sge, sgt, sle, slt): Check TARGET_ISEL. ++ ++ 2010-03-04 Nathan Froyd ++ ++ Issue #7183 ++ ++ gcc/ ++ * config/rs6000/rs6000.opt (mblock-move-inline-limit=): New option. ++ * config/rs6000/rs6000.c (rs6000_override_options): Set ++ rs6000_block_move_inline_limit. ++ * doc/invoke.texi (-mblock-move-inline-limit): Document. ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/block-move-1.c: New test. ++ * gcc.target/powerpc/block-move-2.c: New test. ++ ++ 2010-02-05 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-06-25 Andrew Pinski ++ ++ PR target/38731 ++ * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use ++ DATA_ALIGNMENT instead. ++ ++ 2010-02-05 Nathan Froyd ++ ++ Issue #7587 ++ ++ * release-notes-csl.xml: New note. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2010-02-05 Nathan Froyd ++ ++ * config/rs6000/rs6000.c (rs6000_override_options): Invert check ++ for rs6000_gen_cell_microcode. ++ ++ 2009-07-03 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-05-26 Nathan Froyd ++ ++ Backport from mainline: ++ gcc/ ++ 2008-04-30 Nathan Froyd ++ * config/rs6000/t-ppccomm: Add build rules for new files. ++ (LIB2FUNCS_STATIC_EXTRA): Add new files. ++ ++ libgcc/ ++ 2008-04-30 Nathan Froyd ++ * config/rs6000/t-ppccomm: Add build rules for new files. ++ (LIB2ADD_ST): New variable. ++ ++ 2009-07-02 Andrew Jenner ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-02-04 Andrew Jenner ++ ++ gcc/ ++ * config.gcc: Handle powerpc-montavista-linux-gnu. ++ * config/rs6000/t-montavista-linux: New file. ++ * config/rs6000/montavista-linux.h: New file. ++ ++ 2009-06-29 Nathan Sidwell ++ ++ Merge from Sourcery G++ 4.3: ++ 2009-04-21 Andrew Jenner ++ gcc/testsuite/ ++ * lib/target-supports.exp: Handle powerpc-*-elf. ++ ++ 2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-06-02 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3, ++ mulv2sf3, divv2sf3): New expanders. ++ * config/rs6000/spe.md (spe_evabs, spe_evand, spe_evaddw, ++ spe_evdivws): Rename to use standard GCC names. ++ * config/rs6000/paired.md (negv2sf, absv2sf2, addv2sf3, subv2sf3, ++ mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders. ++ ++ 2007-09-19 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_ ++ names for renamed patterns. ++ ++ 2009-06-09 Nathan Froyd ++ ++ Backport from mainline: ++ ++ 2009-04-14 Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug ++ output for other floating point modes. ++ ++ 2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-11-24 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_savres_strategy): Always use ++ inline saves and restores when compiling position-independent code. ++ ++ 2008-11-17 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_emit_epilogue): Adjust ++ computation of restore_lr. Duplicate restoration of LR and ++ execute the appropriate one depending on whether GPRs are being ++ restored inline. ++ ++ 2008-11-17 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_savres_routine_sym): Fix ++ computation for cache selector. Mark the generated symbol as a ++ function. ++ (rs6000_emit_prologue): Correct condition. ++ * config/rs6000/rs6000.md (*save_gpregs_): Use explicit ++ match for register 11. ++ (*save_fpregs_): Likewise. ++ (*restore_gpregs_): Likewise. ++ (*return_and_restore_gpregs_): Likewise. ++ (*return_and_restore_fpregs_): Likewise. ++ * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for ++ register 11. ++ (*restore_gpregs_spe): Likewise. ++ (*return_and_restore_gpregs_spe): Likewise. ++ ++ 2008-10-24 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence ++ problem. ++ ++ 2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-07-02 Nathan Froyd ++ gcc/ ++ * config/rs6000/eabi.h (NAME__MAIN, INVOKE__main): Remove. ++ * config/rs6000/t-ppccomm (LIB2FUNS_STATIC_EXTRA): Remove eabi.S. ++ (eabi.S): Remove rule. ++ ++ 2008-10-13 Andrew Stubbs ++ gcc/ ++ * doc/invoke.texi (PowerPC Options): -meabi option no longer places ++ __eabi function in main. ++ ++ 2009-06-08 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-06-05 Nathan Froyd ++ ++ * config/rs6000/eabi.asm (__eabi_convert): Don't define if ++ _RELOCATABLE. ++ (__eabi_uconvert): Likewise. ++ ++ 2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-08-25 Nathan Froyd ++ gcc/ ++ * config/rs6000/sysv4.h (LIB_SIM_SPEC): Use LIB_DEFAULT_SPEC. ++ (STARTFILE_SIM_SPEC): Remove sim-crt0.o%s. ++ (ENDFILE_SIM_SPEC): Add -Tsim-hosted.ld. ++ (LINK_OS_SIM_SPEC): Define to empty. ++ ++ 2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-02-12 Nathan Sidwell ++ Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/eabi-ci.asm (__init): Add _init func start. ++ (__fini): Also declare _fini for newlib. ++ ++ 2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-08-16 Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_conditional_register_usage): Mark ++ call-saved AltiVec registers call-used if ! TARGET_ALTIVEC_ABI. ++ * config/rs6000/rs6000.h (CALL_USED_REGISTERS): Mark the first 20 ++ AltiVec registers call-used. ++ (CALL_REALLY_USED_REGISTERS): Likewise. ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/altivec-consts.c: Remove -mabi=altivec. ++ * gcc.target/powerpc/altivec-varargs-1.c: Likewise. ++ * gcc.dg/vmx/vmx.exp: Likewise. ++ ++ 2009-05-15 Mark Mitchell ++ Joseph Myers ++ Mark Shinwell ++ Vladimir Prus ++ Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config.gcc: Handle powerpc-wrs-linux-gnu. ++ * config/rs6000/t-wrs-linux, config/rs6000/wrs-linux.h: New. ++ ++ 2009-05-11 Nathan Sidwell ++ ++ Forward port 2009-02-12 Nathan Sidwell ++ Issue #4620 ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of ++ our distinct integral and vector types. ++ gcc/testsuite/ ++ * g++.dg/ext/altivec-17.C: New. ++ ++ 2009-04-29 Nathan Froyd ++ Kazu Hirata ++ Daniel Jacobowitz ++ Nathan Sidwell ++ Joseph Myers ++ ++ gcc/ ++ * config/rs6000/e500mc.h, config/rs6000/t-cs-eabi, ++ config/rs6000/t-cs-eabi-lite, config/rs6000/t-cs-linux, ++ config/rs6000/t-ppc-e500mc: New. ++ * config.gcc: Add Power multilib configurations. ++ * config/rs6000/eabi.h (CC1_EXTRA_SPEC, ASM_DEFAULT_SPEC): Define. ++ * config/rs6000/linux.h (CC1_EXTRA_SPEC, ASM_DEFAULT_SPEC, ++ SYSROOT_SUFFIX_SPEC): Define. ++ ++ 2009-04-29 Joseph Myers ++ Daniel Jacobowitz ++ Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Handle ++ -te500mc, -te500v1, -te500v2 and -te600. ++ ++ 2009-04-29 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/rs6000/sysv4.h (CC1_EXTRA_SPEC): Define and use. ++ ++ 2009-04-28 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-28 Joseph Myers ++ * config.gcc (powerpc*-*-* | rs6000-*-*): Add ++ rs6000/option-defaults.h to tm_file. Support cpu_32, cpu_64, ++ tune_32 and tune_64. ++ * doc/install.texi (--with-cpu-32, --with-cpu-64): Document ++ support on PowerPC. ++ * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ... ++ * config/rs6000/option-defaults.h: ... here. New file. ++ (OPT_64, OPT_32): Define. ++ (MASK_64BIT): Define to 0 if not already defined. ++ (OPT_ARCH64, OPT_ARCH32): Define. ++ (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32 ++ and tune_64. ++ ++2010-07-20 Paul Brook ++ ++ gcc/ ++ * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si, ++ thumb2_notsi_shiftsi, thumb2_notsi_shiftsi_compare0, ++ thumb2_not_shiftsi_compare0_scratch, thumb2_cmpsi_shiftsi, ++ thumb2_cmpsi_shiftsi_swp, thumb2_cmpsi_neg_shiftsi, ++ thumb2_arith_shiftsi, thumb2_arith_shiftsi_compare0, ++ thumb2_arith_shiftsi_compare0_scratch, thumb2_sub_shiftsi, ++ thumb2_sub_shiftsi_compare0, thumb2_sub_shiftsi_compare0_scratch): ++ Use const_shift_count predicate for "M" constraints. ++ * config/arm/predicates.md (const_shift_operand): Remove. ++ (const_shift_count): New. ++ ++ gcc/testsuite/ ++ * gcc.dg/long-long-shift-1.c: New test. ++ ++2010-07-13 Andrew Stubbs ++ ++ gcc/ ++ * REVISION: Bump version. ++ ++2010-07-13 Andrew Stubbs ++ ++ GCC Linaro 4.4-2010.07-0 released. ++ ++ gcc/ ++ * REVISION: Update. ++ ++2010-07-13 Andrew Stubbs ++ ++ * Makefile.tpl (install): Remove install-pdf and install-html ++ dependencies. ++ * Makefile.in: Regenerate. ++ ++ gcc/ ++ * Makefile.in (install): Remove install-pdf and install-html ++ dependencies. ++ ++2010-07-13 Michael Hope ++ ++ * libjava/Makefile.am (pkgconfigdir): Reverted changes to pkgconfigdir and ++ jardir back to the FSF version. ++ * libjava/Makefile.in (jardir): Likewise. ++ ++2010-07-13 Michael Hope ++ ++ LP: #602171 ++ * gcc/testsuite/gcc.target/i386/pr9771-1.c: Merge r159776 from FSF ++ GCC into the Linaro branch. ++ * gcc/testsuite/gcc.target/arm/frame-pointer-1.c: Likewise. ++ ++ Original entry: ++ 2010-05-24 Paul Brook ++ ++ * gcc.target/arm/frame-pointer-1.c: New test. ++ * gcc.target/i386/pr9771-1.c: Move code out of main to allow frame ++ pointer elimination. ++ ++ Note that the change was already present but the test cases hadn't ++ been updated. ++ ++2010-07-12 Ulrich Weigand ++ ++ Fix Launchpad Bug #602289 ++ ++ Backport from mainline: ++ ++ 2010-07-02 Sandra Loosemore ++ gcc/ ++ * config/arm/neon.ml (Vand): Split DImode variants and mark them ++ as No_op to disable testing for exact instruction match. ++ (Vorr): Likewise. ++ (Veor): Likewise. ++ (Vbic): Likewise. ++ (Vorn): Likewise. ++ gcc/testsuite/ ++ * gcc.target/arm/neon-vands64.c: New. ++ * gcc.target/arm/neon-vandu64.c: New. ++ * gcc.target/arm/neon-vbics64.c: New. ++ * gcc.target/arm/neon-vbicu64.c: New. ++ * gcc.target/arm/neon-veors64.c: New. ++ * gcc.target/arm/neon-veoru64.c: New. ++ * gcc.target/arm/neon-vorns64.c: New. ++ * gcc.target/arm/neon-vornu64.c: New. ++ * gcc.target/arm/neon-vorrs64.c: New. ++ * gcc.target/arm/neon-vorru64.c: New. ++ ++ Backport from mainline: ++ ++ 2010-07-02 Sandra Loosemore ++ Julian Brown ++ gcc/ ++ * config/arm/neon.ml (Vadd, Vsub): Split out 64-bit variants and add ++ No_op attribute to disable assembly output checks. ++ gcc/testsuite/ ++ * gcc.target/arm/neon-vsubs64.c: New execution test. ++ * gcc.target/arm/neon-vsubu64.c: New execution test. ++ * gcc.target/arm/neon-vadds64.c: New execution test. ++ * gcc.target/arm/neon-vaddu64.c: New execution test. ++ ++ Regenerate generated files: ++ ++ gcc/ ++ * doc/arm-neon-intrinsics.texi: Regenerate. ++ gcc/testsuite/ ++ * gcc.target/arm/neon/vadds64.c: Regenerate. ++ * gcc.target/arm/neon/vaddu64.c: Regenerate. ++ * gcc.target/arm/neon/vands64.c: Regenerate. ++ * gcc.target/arm/neon/vandu64.c: Regenerate. ++ * gcc.target/arm/neon/vbics64.c: Regenerate. ++ * gcc.target/arm/neon/vbicu64.c: Regenerate. ++ * gcc.target/arm/neon/veors64.c: Regenerate. ++ * gcc.target/arm/neon/veoru64.c: Regenerate. ++ * gcc.target/arm/neon/vorns64.c: Regenerate. ++ * gcc.target/arm/neon/vornu64.c: Regenerate. ++ * gcc.target/arm/neon/vorrs64.c: Regenerate. ++ * gcc.target/arm/neon/vorru64.c: Regenerate. ++ * gcc.target/arm/neon/vsubs64.c: Regenerate. ++ * gcc.target/arm/neon/vsubu64.c: Regenerate. ++ ++2010-07-09 Andrew Stubbs ++ ++ gcc/ ++ * config/arm/elf.h (ASM_SPEC): Pass -mimplicit-it=thumb if -mthumb. ++ ++2010-07-08 Andrew Stubbs ++ ++ gcc/ ++ * DEV-PHASE: Set to "Linaro". ++ * REVISION: New file. ++ ++2010-07-07 Yao Qi ++ ++ Revert a license patch. ++ ++ 2009-04-28 Joseph Myers ++ ++ gcc/ ++ * gcc.c (main): Add "const" to declaration of license_status. ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-09-04 Julian Brown ++ * Makefile.in (CSL_LICENSELIB): Remove space after -L to appease ++ Darwin ld. ++ ++ gcc/ ++ 2007-10-16 Joseph Myers ++ * gcc.c (license_me_flag): Define to 1 if not TARGET_FLEXLM. ++ ++ 2007-08-10 Nathan Froyd ++ * gcc.c (main): Consult license_me_flag to see if failure to ++ acquire a license implies bailing out entirely. ++ ++ 2007-08-24 Nathan Froyd ++ Issue #1892 ++ * gcc.c (main): Check license_me_flag before declaring failure. ++ ++ 2007-08-30 Nathan Sidwell ++ Issue #1892 ++ * gcc.c (main): Don't complain if license fails without -flicense-me ++ ++ 2007-04-12 Richard Sandiford ++ * gcc.c (main): If find_a_file fails, pass the original subproc ++ to csl_subproc_license_new. ++ ++ 2006-12-27 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * gcc.c (main): If the license check fails, remove the generated ++ file. ++ ++ 2006-12-22 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * aclocal.m4: Move licensing options ... ++ * acinclude.m4: ... here. ++ ++ 2006-12-13 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * gcc.c (csl/license.h): Include, if required. ++ (license_checked): New variable. ++ (no_license): Remove. ++ (process_command): Set license_checked, not no_license. ++ (main): Use CodeSourcery license library. Remove most ++ TARGET_FLEXLM code. ++ * aclocal.m4 (--with-license): New option. ++ (--with-csl-license-feature): Likewise. ++ (--with-csl-license-version): Likewise. ++ * Makefile.in (CSL_LICENSEINC): Define it. ++ (CSL_LICENSELIB): Likewise. ++ (CSL_LICENSE_PROG): Likewise. ++ (LIBS): Depend on CSL_LICENSELIB. ++ (GCC_PASSES): Depend on CSL_LICENSE_PROG. ++ (INCLUDES): Add CSL_LICENSEINC. ++ * configure.ac (CSL_AC_LICENSE_VERSION): Use it. ++ (CSL_AC_LICENSE): Likewise. ++ (CSL_AC_LICENSE_FEATURE): Likewise. ++ * config.in: Regenerated. ++ * configure: Regenerated. ++ ++ 2006-10-29 Richard Sandiford ++ Joseph Myers ++ * gcc.c (license_me_flag): New variable. ++ (feature_proxy_flag): New variable. ++ (no_license): New variable. ++ (process_command): Handle -flicense-me, -ffeature-proxy and ++ -fno-feature-proxy. Initialize no_license. ++ (main): Check licenses. ++ ++2010-07-06 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/ ++ 2009-11-14 Richard Earnshaw ++ ++ PR target/42031 ++ * arm.md (adddi_sesidi_di): Place tied contraint first. ++ (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise ++ (subdi_zesidi_di, subdi_sesidi_di): Likewise. ++ (mulsi3_compare0, mulsi_compare0_scratch): Likewise. ++ (mulsi3addsi, mulsi3addsi_compare0): Likewise. ++ (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise. ++ (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise. ++ (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise. ++ (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise. ++ (arm_lshrdi3_1bit, one_cmpldi2): Likewise. ++ ++2010-07-05 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/ada/ ++ 2010-01-11 Mikael Pettersson ++ ++ * gcc-interface/Makefile.in: Add arm*-*-linux-gnueabi. ++ * system-linux-armeb.ads, system-linux-armel.ads: New files. ++ ++2010-07-05 Yao Qi ++ ++ Import from Ubuntu GCC: ++ libjava/ ++ 2009-08-12 Andrew Haley ++ ++ * sysdep/arm/locks.h: Use atomic builtins For Linux EABI. ++ * configure.ac: Add ATOMICSPEC. ++ * libgcj.spec.in: Likewise. ++ * configure.host (arm*-linux*): Add -Wno-abi to cxxflags. ++ (testsuite/libjava.jvmti/jvmti-interp.exp): Likewise. ++ (testsuite/libjava.jvmti/jvmti.exp): Likewise. ++ (testsuite/libjava.jni/jni.exp): Likewise. ++ Set ATOMICSPEC. ++ ++2010-07-05 Yao Qi ++ ++ boehm-gc/ ++ * include/private/gc_locks.h: Patch arm-boehm-gc-locks.diff from Ubuntu. ++ ++2010-07-05 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/java/ ++ 2009-08-12 Andrew Haley ++ ++ * builtins.c (compareAndSwapInt_builtin): Use ++ flag_use_atomic_builtins. ++ (compareAndSwapLong_builtin): Likewise. ++ (compareAndSwapObject_builtin): Likewise. ++ * jvspec.c: Add flag_use_atomic_builtins. ++ * gcj.texi: Likewise. ++ * java-tree.h: Likewise. ++ * lang.opt: Likewise. ++ ++2010-07-05 Yao Qi ++ ++ Import from Ubuntu GCC: ++ ++ libjava/classpath/ ++ 2010-04-27 Andrew Haley ++ ++ * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty list. ++ ++ 2010-04-27 Andrew Haley ++ ++ * gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle ++ IppValueTag.UNKNOWN. ++ * gnu/javax/print/ipp/IppRequest.java (writeOperationAttributes): ++ Handle RequestedAttributes. ++ * gnu/javax/print/ipp/IppPrintService.java (processResponse): Add ++ DocFlavor.SERVICE_FORMATTED.PAGEABLE and ++ DocFlavor.SERVICE_FORMATTED.PRINTABLE. ++ ++2010-07-02 Yao Qi ++ Import from Ubuntu GCC: ++ gcc/ ++ 2009-10-05 Ramana Radhakrishnan ++ * config/arm/arm.c (arm_override_options): Really initialize ++ flag_dwarf2_cfi_asm to 0. ++ ++2010-07-02 Yao Qi ++ ++ Import from Ubuntu GCC: ++ ++ gcc/ ++ 2009-05-27 Julian Brown ++ * gcse.c (target.h): Include. ++ (can_assign_to_reg_without_clobbers_p): Check that the target allows ++ copy of argument to a pseudo register. ++ ++2010-07-02 Yao Qi ++ ++ gcc/ ++ * config.gcc: Patch pr40134.diff from Ubuntu. ++ * config/pa/pa-linux.h: Likewise. ++ ++2010-07-02 Yao Qi ++ ++ Import from Ubuntu GCC: ++ libstdc++-v3/ ++ 2009-12-09 Paolo Carlini ++ Matthias Klose ++ ++ PR libstdc++/40133 ++ * acinclude.m4 ([GLIBCXX_ENABLE_ATOMIC_BUILTINS]): On *-*-linux*, ++ *-*-kfreebsd*-gnu | *-*-gnu* targets do link tests when possible. ++ * configure: Regenerate. ++ ++2010-07-02 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/ ++ 2010-03-13 Mikael Pettersson ++ PR middle-end/43323 ++ Backport from mainline: ++ 2009-06-17 Adam Nemet ++ ++ * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, ++ STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions, ++ tree_strip_sign_nop_conversions and ++ tree_ssa_strip_useless_type_conversions rather than stripping ++ the operations here. ++ (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):Declare them. ++ * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it. ++ * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function. ++ * tree.c (tree_nop_conversion, tree_sign_nop_conversion, ++ tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New functions. ++ ++ gcc/testsuite/ ++ 2010-03-13 Mikael Pettersson ++ PR middle-end/43323 ++ * gcc.c-torture/execute/pr43323.c: New test. ++ ++ Backport from mainline: ++ 2009-06-17 Adam Nemet ++ ++ * gcc.c-torture/execute/bitfld-5.c: New test. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/objc/ ++ * lang-specs.h: Patch pr41848.diff from Ubuntu. ++ gcc/testsuite/ ++ * objc/execute/forward-1.x: Patch pr41848.diff from Ubuntu. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/ ++ * configure.ac: Patch gcc-stack_chk_fail-check.diff from Ubuntu. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ 2010-04-27 Jakub Jelinek ++ gcc/ ++ * unwind-dw2.c (_Unwind_DebugHook): Add used attribute. ++ ++ 2009-05-27 Tom Tromey ++ gcc/ ++ * unwind-dw2.c (_Unwind_DebugHook): New function. ++ (uw_install_context): Call _Unwind_DebugHook. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ 2009-07-20 Mikael Pettersson ++ gcc/ ++ Backport from mainline: ++ 2009-04-20 Ian Lance Taylor ++ Fix enum conversions which are invalid in C++. ++ * config/arm/arm.c (arm_rtx_costs_1) : Fix ++ typo in call to GET_MODE_CLASS. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ 2009-07-20 Mikael Pettersson ++ gcc/ ++ Backport from mainline: ++ 2009-04-20 Ian Lance Taylor ++ Fix enum conversions which are invalid in C++. ++ ++ PR target/39429 ++ * config/arm/arm.c (adjacent_mem_locations): Fix swapped ++ parameters in const_ok_for_op calls. ++ ++ gcc/testsuite/ ++ PR target/39429 ++ * gcc.target/arm/pr39429.c: New test case. ++ ++2010-06-30 Yao Qi ++ ++ Import from Ubuntu GCC: ++ gcc/ ++ * configure.ac, config.in: Patch gcc-build-id.diff from Ubuntu. ++ ++2010-06-16 Julian Brown ++ ++ gcc/ ++ * config/arm/arm.h (REG_CLASS_CONTENTS): Remove soft frame pointer ++ from CORE_REGS and GENERAL_REGS classes. ++ * config/arm/arm.md (*thumb1_movsi_insn): Ignore all parts of final ++ constraint for register preferencing. ++ ++2010-06-07 Julian Brown ++ ++ Merge from GCC 4.4.4. ++ ++2010-05-26 Joseph Myers ++ ++ gcc/testsuite/ ++ * gcc.target/arm/pr42496.c: Remove duplicate concatenated copy of ++ testcase. ++ ++2010-05-24 Paul Brook ++ ++ Issue #8426 - Avoid libsupc++ static vritable data ++ libstdc++-v3/ ++ * libsupc++/unwind-cxx.h (__get_terminate_handler, ++ __get_terminate_handler): New. ++ * libsupc++/eh_throw.cc: Use them. ++ * libsupc++/eh_ptr.cc: Ditto. ++ * libsupc++/eh_terminate.cc: Ditto. ++ * libsupc++/eh_term_handler.cc: Avoid static initializer on SymbianOS. ++ * libsupc++/eh_unex_handler.cc: Avoid static initializer on SymbianOS. ++ ++2010-05-22 Thomas Schwinge ++ ++ Issue #8729 ++ ++ * release-notes-csl.xml: New note. ++ ++2010-05-19 Thomas Schwinge ++ ++ Issue #8729 ++ ++ Integrate . ++ Drop the TARGET_TITAN_FPU and fsqrt changes. ++ ++ XXXX-XX-XX Philipp Tomsich ++ ++ NOT ASSIGNED TO FSF ++ COPYRIGHT Philipp Tomsich (Theobroma Systems Design und Consulting GmbH) ++ ++ gcc/ ++ * config.gcc: Recognize titan. ++ * config/rs6000/rs6000.c (titan_cost): New. ++ (rs6000_override_options, rs6000_issue_rate): Handle titan. ++ * config/rs6000/rs6000.h (processor_type): Register titan. ++ * config/rs6000/rs6000.md (cpu): Register titan. ++ Include "titan.md". ++ * config/rs6000/titan.md: New. ++ * doc/invoke.texi : Document titan. ++ ++2010-05-18 Paul Brook ++ ++ Issue #8426 - Fix libsupc++ symbol visibility ++ gcc/ ++ * config/arm/eabi-memset.c (__aeabi_memset): Remove bogus return value. ++ ++ Import from Ubuntu GCC: ++ ++ libstdc++-v3/ ++ 2009-07-06 Jason Merrill ++ ++ * libsupc++/vmi_class_type_info.cc (__do_dyncast): Use src2dst ++ hint ++ to defer searching bases that don't overlap the desired address. ++ gcc/testsuite/ ++ 2009-07-06 Jason Merrill ++ ++ * g++.dg/rtti/dyncast[34].C: New. ++ ++2010-07-02 Yao Qi ++ ++ libstdc++-v3/ ++ * libsupc++/eh_arm.cc (__cxa_type_match): Use correct namespace. ++ (__cxa_begin_cleanup): Ditto. ++ * libsupc++/unwind-cxx.h (__cxa_call_unexpected, __cxa_call_terminate, ++ __cxa_type_match, __cxa_begin_cleanup): Use correct types on ARM EABI. ++ * libsupc++/cxxabi.h: Add prototypes for __aeabi routines. ++ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Export with ++ default visibility. ++ * libsupc++/eh_call.cc (__cxa_call_terminate, __cxa_call_unexpected): ++ Use correct namespace and types. ++ ++2010-05-17 Jie Zhang ++ ++ Issue #8513 ++ ++ gcc/ ++ * config/arm/arm.c (arm_print_operand): Handle CONST ++ address. ++ * config/arm/arm.h (TARGET_USE_RELA): Define. ++ * config/arm/arm.md (define_split for SYMBOL_REF move): ++ Also split SYMBOL_REF + offset case. ++ * config/arm/vxworks.h (TARGET_USE_RELA): Define. ++ ++2010-05-12 Maxim Kuvyrkov ++ ++ Issue #8483 ++ ++ gcc/ ++ * targhooks.c (default_stack_protect_guard): Fix backporting mistake. ++ ++2010-05-12 Maxim Kuvyrkov ++ ++ Issue #8483 ++ ++ * release-notes-csl.xml: Add a release note. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2010-05-12 Maxim Kuvyrkov ++ * targhooks.c (default_stack_protect_guard): Avoid sharing RTL ++ for __stack_chk_guard. ++ 2010-05-12 Maxim Kuvyrkov ++ * gcc.target/m68k/20100512-1.c: New. ++ ++2010-05-11 Jie Zhang ++ ++ Issue #8473 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2010-04-26 Jie Zhang ++ PR tree-optimization/43833 ++ * tree-vrp.c (range_int_cst_p): New. ++ (range_int_cst_singleton_p): New. ++ (extract_range_from_binary_expr): Optimize BIT_AND_EXPR case ++ when both operands are constants. Use range_int_cst_p in ++ BIT_IOR_EXPR case. ++ ++ gcc/testsuite/ ++ 2010-04-26 Jie Zhang ++ PR tree-optimization/43833 ++ gcc.dg/Warray-bounds-8.c: New test case. ++ ++2010-05-06 Thomas Schwinge ++ Sandra Loosemore ++ ++ Issue #8578 ++ ++ * release-notes-csl.xml (Fix for invalid code generation bug): New ++ note. ++ ++2010-05-06 Thomas Schwinge ++ ++ Issue #8578 ++ ++ Backport from mainline branches/gcc-4_4-branch (r154046): ++ ++ gcc/ ++ 2009-11-09 Jakub Jelinek ++ ++ PR middle-end/40946 ++ Backport from mainline ++ 2009-09-09 Richard Guenther ++ ++ PR middle-end/41317 ++ * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove ++ code dealing with plain pointer bases. ++ (maybe_fold_offset_to_reference): Likewise. ++ (maybe_fold_stmt_addition): Adjust. ++ ++ gcc/testsuite/ ++ 2009-11-09 Jakub Jelinek ++ ++ PR middle-end/40946 ++ * gcc.dg/pr40946.c: New test. ++ ++ Backport from mainline ++ 2009-09-09 Richard Guenther ++ ++ PR middle-end/41317 ++ * gcc.c-torture/execute/pr41317.c: New testcase. ++ ++2010-05-04 Joseph Myers ++ ++ Backport: ++ ++ gcc/testsuite/ ++ 2009-11-23 Andy Hutchinson ++ ++ * gcc-dg/utf-array-short-wchar.c: Require-effective-target wchar. ++ * gcc-dg/utf-array.c: Ditto. ++ ++2010-04-27 Paul Brook ++ ++ libstdc++-v3/ ++ * configure.ac: Remove LIBSUPCXX_PRONLY. ++ * include/Makefile.am: Remove LIBSUPCXX_PRONLY. ++ * libsupc++/Makefile.am: Remove LIBSUPCXX_PRONLY. ++ * configure: Regenerate. ++ * Makefile.in: Regenerate. ++ * src/Makefile.in: Regenerate. ++ * doc/Makefile.in: Regenerate. ++ * po/Makefile.in: Regenerate. ++ * include/Makefile.in: Regenerate. ++ * libsupc++/Makefile.in: Regenerate. ++ * testsuite/Makefile.in: Regenerate. ++ ++2010-04-27 Nathan Sidwell ++ ++ gcc/ ++ * config/arm/nucleus.h (NUCLEUS_SHARED_CPP_BUILTINS): New. ++ (TARGET_OS_CPP_BUILTINS): Override. ++ * config/arm/unwind-arm.h (_Unwind_decode_target2): Target2 on ++ nucleus-shared is the same as linux. ++ ++2010-04-20 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/t-spe-fprules (spe-softfp-srcs): Don't add ++ $(gcc_srcdir)/config/soft-fp as a prefix. ++ (LIB2ADD): Use patterns with the source filenames as the filter. ++ ++2010-04-20 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-07-06 Nick Clifton ++ DJ Delorie ++ ++ * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if ++ __FMOVD_ENABLED__ is defined. ++ * config/sh/sh.h ++ (TARGET_FMOVD): Provide a default definition. ++ (MASK_FMOVD): Likewise. ++ (TARGET_CPU_CPP_BUILTINS): Define ++ __FMOVD_ENABLED__ if TARGET_FMOVD is true. ++ * config/sh/sh.md (movdf_i4): For alternative 0 use either one or ++ two fmov instructions depending upon whether TARGET_FMOVD is ++ enabled. ++ (split for DF load from memory into register): Also handle ++ MEMs which consist of REG+DISP addressing. ++ (split for DF store from register to memory): Likewise. ++ (movsf_ie): Always use single fp_mode. ++ * config/sh/sh.c (sh_override_options): Do not automatically ++ enable TARGET_MOVD for the SH2A when supporting doubles - leave ++ that to the -mfmovd command line switch. ++ (broken_move): Do not restrict fldi test to only the SH4 and SH4A. ++ (fldi_ok): Always allow. ++ * config/sh/sh.opt (mfmovd): Remove this switch. ++ * doc/invoke.texi (-mfmovd): Remove documentation of this switch. ++ ++ 2009-07-20 Christian Bruel ++ ++ gcc/ ++ * config/sh/sh.opt (-mfmovd): Resurrect and document. ++ * doc/invoke.texi (-mfmovd): Likewise. ++ * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting. ++ ++ gcc/testsuite/ ++ * gcc.target/sh/mfmovd.c: New test. ++ ++2010-04-20 Andrew Stubbs ++ ++ * gcc/config/sh/sh.h (CRT_GET_RFIB_DATA): New define. ++ (ASM_PREFERRED_EH_DATA_FORMAT): Add FDPIC settings. ++ (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise. ++ ++2010-04-19 Jie Zhang ++ ++ Issue #7944 ++ ++ Backporting from mainline: ++ ++ gcc/ ++ 2010-04-19 Jie Zhang ++ ++ PR target/43662 ++ * reginfo.c (reinit_regs): Set caller_save_initialized_p ++ to false. ++ ++ gcc/testsuite/ ++ 2010-04-19 Jie Zhang ++ ++ PR target/43662 ++ * gcc.target/i386/pr43662.c: New test. ++ ++2010-04-19 Bernd Schmidt ++ ++ gcc/ ++ * ifcvt.c (move_across_if): Delete. ++ (find_if_header): Don't call it. ++ ++2010-04-17 Daniel Jacobowitz ++ ++ Issue #8442 - DImode ICE. ++ ++ * release-notes-csl.xml (ARM internal compiler error fix): New note. ++ ++ gcc/ ++ * config/arm/arm.md (movsicc, movsfcc, movdfcc): Reverse ++ invalid DImode comparisons. ++ ++ gcc/testsuite/ ++ * gcc.c-torture/execute/20100416-1.c: New test. ++ ++2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/divdf3.S (__divdf3): Use JUMP_TARGET instead of L. ++ * config/rs6000/muldf3.S (__muldf3): Likewise. ++ ++2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_muldiv_scale2.S (__spe_return_inf_mul_div): ++ New function. ++ * config/rs6000/divdf3.S (__divdf3): Call it. ++ * config/rs6000/muldf3.S (__muldf3): Likewise. ++ ++2010-04-15 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_add_exception.S: Remove .file directive. ++ * config/rs6000/spe_adddf3.S: Likewise. ++ * config/rs6000/spe_cmpdf2.S: Likewise. ++ * config/rs6000/spe_divdf3.S: Likewise. ++ * config/rs6000/spe_eqdf2.S: Likewise. ++ * config/rs6000/spe_extendsfdf2.S: Likewise. ++ * config/rs6000/spe_fixdfdi.S: Likewise. ++ * config/rs6000/spe_fixdfsi.S: Likewise. ++ * config/rs6000/spe_fixunsdfdi.S: Likewise. ++ * config/rs6000/spe_fixunsdfsi.S: Likewise. ++ * config/rs6000/spe_floatdidf.S: Likewise. ++ * config/rs6000/spe_floatsidf.S: Likewise. ++ * config/rs6000/spe_floatundidf.S: Likewise. ++ * config/rs6000/spe_floatunsidf.S: Likewise. ++ * config/rs6000/spe_gedf2.S: Likewise. ++ * config/rs6000/spe_gtdf2.S: Likewise. ++ * config/rs6000/spe_ledf2.S: Likewise. ++ * config/rs6000/spe_ltdf2.S: Likewise. ++ * config/rs6000/spe_muldf3.S: Likewise. ++ * config/rs6000/spe_muldiv_scale2.S: Likewise. ++ * config/rs6000/spe_nedf2.S: Likewise. ++ * config/rs6000/spe_neg.S: Likewise. ++ * config/rs6000/spe_subdf3.S: Likewise. ++ * config/rs6000/spe_truncdfsf2.S: Likewise. ++ * config/rs6000/spe_unord_sub.S: Likewise. ++ * config/rs6000/spe_unorddf2.S: Likewise. ++ ++2010-04-13 Andrew Stubbs ++ ++ gcc/ ++ * regmove.c (fixup_match_2): Swap incorrect uses of src and dst. ++ ++2010-04-13 Julian Brown ++ ++ * release-notes-csl.xml (Better use of NEON instructions on Cortex-A8) ++ (Optimization of ARM NEON vdupq_n* intrinsics): Fix target lines for ++ notes. ++ ++2010-04-13 Julian Brown ++ ++ * release-notes-csl.xml (ARMv7-A performance improvements): Add note. ++ ++2010-04-13 Bernd Schmidt ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ PR target/21803 ++ * ifcvt.c (cond_exec_process_if_block): Look for identical sequences ++ at the start and end of the then/else blocks, and omit them from the ++ conversion. ++ (move_across_if): New function. ++ (find_if_header): Call it. ++ * cfgcleanup.c (flow_find_cross_jump): No longer static. ++ (flow_find_head_matching_sequence): New function. ++ (old_insns_match_p): Check REG_EH_REGION notes for calls. ++ * basic-block.h (flow_find_cross_jump, ++ flow_find_head_matching_sequence): Declare functions. ++ ++ gcc/testsuite/ ++ PR target/21803 ++ * gcc.target/arm/pr42496.c: New test. ++ ++2010-04-13 Maxim Kuvyrkov ++ ++ Revert buggy patch. ++ ++ 2010-04-04 Maxim Kuvyrkov ++ PR middle-end/40815 ++ gcc/ ++ * tree-ssa-reassoc.c (broken_up_substracts): Rename to plus_negates. ++ (negate_value): Move code to push elements to broken_up_substracts ... ++ (eliminate_plus_minus_pair): ... here. Push operands that have no ++ negative pair to plus_negates. ++ (repropagate_negates, init_reassoc, fini_reassoc): Update. ++ gcc/testsuite/ ++ * gcc.dg/tree-ssa/reassoc-19.c: New. ++ ++2010-04-11 Julian Brown ++ ++ Issue #7326 ++ ++ * release-notes-csl.xml (Improved code generation for ++ Cortex-A5): Add note. ++ ++2010-04-11 Julian Brown ++ ++ Issue #7326 ++ ++ gcc/ ++ * config/arm/arm.c (arm_issue_rate): Return 2 for Cortex-A5. ++ * config/arm/arm.md (generic_sched): No for Cortex-A5. ++ (generic_vfp): Likewise. ++ (cortex-a5.md): Include. ++ * config/arm/cortex-a5.md: New. ++ ++2010-04-12 Andrew Stubbs ++ ++ Issue #7178 ++ ++ gcc/ ++ * config/arm/arm.c (arm_init_libfuncs): Change __gnu_f2h_ieee to ++ __aeabi_f2h, __gnu_f2h_alternative to __aeabi_f2h_alt, __gnu_h2f_ieee ++ to __aeabi_h2f, and __gnu_h2f_alternative to __aeabi_h2f_alt. ++ * config/arm/fp16.c (__gnu_f2h_internal): Change return type to ++ unsigned int. Change 'sign' variable likewise. ++ (__gnu_h2f_internal): Set to static inline. ++ Change return type to unsigned int. Change 'sign' variable likewise. ++ (ALIAS): New define. ++ (__gnu_f2h_ieee): Change unsigned short to unsigned int. ++ (__gnu_h2f_ieee): Likewise. ++ (__gnu_f2h_alternative): Likewise. ++ (__gnu_h2f_alternative): Likewise. ++ (__aeabi_f2h, __aeabi_h2f): New aliases. ++ (__aeabi_f2h_alt, __aeabi_h2f_alt): Likewise. ++ * config/arm/sfp-machine.h (__extendhfsf2): Set to __aeabi_h2f. ++ (__truncsfhf2): Set to __aeabi_f2h. ++ ++ testsuite/ ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-5.C: Check for __aeabi_h2f ++ and __aeabi_f2h. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Likewise. ++ * gcc.dg/torture/arm-fp16-ops-5.c: Likewise. ++ * gcc.dg/torture/arm-fp16-ops-6.c: Likewise. ++ ++2010-04-10 Jie Zhang ++ ++ Issue #8368 ++ ++ gcc/testsuite/ ++ PR target/43417 ++ * gcc.target/sh/pr43417.c: New test. ++ ++2010-04-10 Bernd Schmidt ++ ++ Issue #8388 ++ ++ gcc/ ++ * tree-ssa-remove-local-statics.c (pass_remove_local_statics): ++ Readd TODO_rebuild_alias and TODO_update_ssa. ++ ++2010-04-10 Catherine Moore ++ ++ Issue #7474 ++ ++ * release-notes-csl.xml: New note. ++ ++ gcc/ ++ * gcc/config.gcc (mips-sde-elf): Enable soft-fp. ++ * gcc/config/mips/t-fprules-softfp: New. ++ * gcc/config/mips/sfp-machine: New. ++ ++ * release-notes-csl.xml: New note. ++ ++2010-04-09 Jie Zhang ++ ++ Issue #8368 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline 4.4: ++ ++ gcc/ ++ 2010-03-21 Kaz Kojima ++ ++ Backport from mainline: ++ 2009-05-12 Paolo Bonzini ++ ++ PR target/43417 ++ * config/sh/sh.md (cbranchdi4_i): Use an "I08" constraint ++ instead of "i" constraint. ++ ++2010-04-09 Jie Zhang ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline: ++ ++ gcc/cp/ ++ 2010-04-07 Jie Zhang ++ ++ PR c++/42556 ++ * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR ++ when all of its elements are non-constant and have been split out. ++ ++ gcc/testsuite/ ++ 2010-04-07 Jie Zhang ++ ++ PR c++/42556 ++ * g++.dg/init/pr42556.C: New test. ++ ++2010-04-09 Jie Zhang ++ ++ Issue #8224 ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ From Richard Earnshaw ++ ++ * doc/tm.texi (OVERLAPPING_REGISTER_NAMES): Document new macro. ++ * output.h (decode_reg_name_and_count): Declare. ++ * varasm.c (decode_reg_name_and_count): New function. ++ (decode_reg_name): Reimplement using decode_reg_name_and_count. ++ * reginfo.c (fix_register): Use decode_reg_name_and_count and ++ iterate over all regs used. ++ * stmt.c (expand_asm_operands): Likewise. ++ * config/arm/aout.h (OVERLAPPING_REGISTER_NAMES): Define. ++ (ADDITIONAL_REGISTER_NAMES): Remove aliases that overlap ++ multiple machine registers. ++ ++2010-04-09 Jie Zhang ++ ++ Issue #8224 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2010-03-21 Richard Earnshaw ++ ++ PR target/42321 ++ * arm.c (arm_output_epilogue): Correctly match VFP pop instructions ++ with their corresponding prologue pushes. ++ ++2010-04-08 Bernd Schmidt ++ ++ * release-notes-csl.xml: Fix spelling of NEON. ++ ++2010-04-08 Bernd Schmidt ++ ++ Issue #6952 ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ * ira-costs.c (record_reg_classes): Ignore alternatives that are ++ not enabled. ++ * config/arm/vfp.md (arm_movdi_vfp): Enable only when not tuning ++ for Cortex-A8. ++ (arm_movdi_vfp_cortexa8): New pattern. ++ * config/arm/neon.md (adddi3_neon, subdi3_neon, anddi3_neon, ++ iordi3_neon, xordi3_neon): Add alternatives to discourage Neon ++ instructions when tuning for Cortex-A8. Set attribute "alt_tune". ++ * config/arm/arm.md (define_attr "alt_tune", define_attr "enabled"): ++ New. ++ ++2010-04-08 Nathan Froyd ++ ++ libgcc/ ++ * config/rs6000/spe_arith.S: Remove. Split into: ++ * config/rs6000/spe_adddf3.S: ...this. ++ * config/rs6000/spe_subdf3.S: ...this. ++ * config/rs6000/spe_muldf3.S: ...this. ++ * config/rs6000/spe_divdf3.S: ...this. ++ * config/rs6000/spe_add_exception.S: ...this. ++ * config/rs6000/spe_muldiv_scale2.S: ...and this. ++ * config/rs6000/spe_cmp.S: Remove. Split into: ++ * config/rs6000/spe_cmpdf2.S: ...this. ++ * config/rs6000/spe_eqdf2.S: ...this. ++ * config/rs6000/spe_nedf2.S: ...this. ++ * config/rs6000/spe_gedf2.S: ...this. ++ * config/rs6000/spe_gtdf2.S: ...this. ++ * config/rs6000/spe_ledf2.S: ...this. ++ * config/rs6000/spe_ltdf2.S: ...this. ++ * config/rs6000/spe_unorddf2.S: ...this. ++ * config/rs6000/spe_unord_sub.S: ...and this. ++ * config/rs6000/spe_cnv.S: Remove. Split into: ++ * config/rs6000/fixdfdi.S: ...this. ++ * config/rs6000/fixdfsi.S: ...this. ++ * config/rs6000/fixunsdfdi.S: ...this. ++ * config/rs6000/fixunsdfsi.S: ...this. ++ * config/rs6000/floatdidf.S: ...this. ++ * config/rs6000/floatsidf.S: ...this. ++ * config/rs6000/floatundidf.S: ...this. ++ * config/rs6000/floatunsidf.S: ...this. ++ * config/rs6000/extendsfdf2.S: ...this. ++ * config/rs6000/truncdfsf2.S: ...this. ++ * config/rs6000/t-spe-fprules (spe-files): Remove removed files. ++ Add new files. ++ ++2010-04-08 Jie Zhang ++ ++ Issue #7122 ++ ++ gcc/ ++ * config/arm/vfp.md (thumb2_movdf_vfp): Require that one of ++ the operands be a register. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon-load-df0.c: Make it usable with ++ -mfloat-abi=softfp. ++ ++2010-04-07 Thomas Schwinge ++ Daniel Jacobowitz ++ ++ Issue #6715 ++ ++ PR debug/40521 ++ ++ gcc/ ++ * dwarf2out.c (NEED_UNWIND_TABLES): Define. ++ (dwarf2out_do_frame, dwarf2out_do_cfi_asm, dwarf2out_begin_prologue) ++ (dwarf2out_frame_finish, dwarf2out_assembly_start): Use it. ++ (dwarf2out_assembly_start): Correct logic for TARGET_UNWIND_INFO. ++ * config/arm/arm.h (DWARF2_UNWIND_INFO): Remove definition. ++ * config/arm/bpabi.h (DWARF2_UNWIND_INFO): Define to zero. ++ ++2010-04-07 Jie Zhang ++ ++ Issue #7122 ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon-vdup-1.c: Make it usable with ++ -mfloat-abi=softfp. ++ * gcc.target/arm/neon-vdup-2.c: Likewise. ++ * gcc.target/arm/neon-vdup-3.c: Likewise. ++ * gcc.target/arm/neon-vdup-4.c: Likewise. ++ * gcc.target/arm/neon-vdup-5.c: Likewise. ++ * gcc.target/arm/neon-vdup-6.c: Likewise. ++ * gcc.target/arm/neon-vdup-7.c: Likewise. ++ * gcc.target/arm/neon-vdup-8.c: Likewise. ++ * gcc.target/arm/neon-vdup-9.c: Likewise. ++ * gcc.target/arm/neon-vdup-10.c: Likewise. ++ * gcc.target/arm/neon-vdup-11.c: Likewise. ++ * gcc.target/arm/neon-vdup-12.c: Likewise. ++ * gcc.target/arm/neon-vdup-13.c: Likewise. ++ * gcc.target/arm/neon-vdup-14.c: Likewise. ++ * gcc.target/arm/neon-vdup-15.c: Likewise. ++ * gcc.target/arm/neon-vdup-16.c: Likewise. ++ * gcc.target/arm/neon-vdup-17.c: Likewise. ++ * gcc.target/arm/neon-vdup-18.c: Likewise. ++ * gcc.target/arm/neon-vdup-19.c: Likewise. ++ ++2010-04-07 Jie Zhang ++ ++ Issue #7122 ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for ++ CONST_VECTOR. ++ (arm_size_rtx_costs): Likewise. ++ (thumb2_size_rtx_costs): Likewise. ++ (neon_valid_immediate): Add a case for double 0.0. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon-vdup-1.c: New test case. ++ * gcc.target/arm/neon-vdup-2.c: New test case. ++ * gcc.target/arm/neon-vdup-3.c: New test case. ++ * gcc.target/arm/neon-vdup-4.c: New test case. ++ * gcc.target/arm/neon-vdup-5.c: New test case. ++ * gcc.target/arm/neon-vdup-6.c: New test case. ++ * gcc.target/arm/neon-vdup-7.c: New test case. ++ * gcc.target/arm/neon-vdup-8.c: New test case. ++ * gcc.target/arm/neon-vdup-9.c: New test case. ++ * gcc.target/arm/neon-vdup-10.c: New test case. ++ * gcc.target/arm/neon-vdup-11.c: New test case. ++ * gcc.target/arm/neon-vdup-12.c: New test case. ++ * gcc.target/arm/neon-vdup-13.c: New test case. ++ * gcc.target/arm/neon-vdup-14.c: New test case. ++ * gcc.target/arm/neon-vdup-15.c: New test case. ++ * gcc.target/arm/neon-vdup-16.c: New test case. ++ * gcc.target/arm/neon-vdup-17.c: New test case. ++ * gcc.target/arm/neon-vdup-18.c: New test case. ++ * gcc.target/arm/neon-vdup-19.c: New test case. ++ ++2010-04-05 Nathan Froyd ++ ++ gcc/ ++ * config.gcc (powerpc-*-eabi*): Use soft-fp/t-softfp. ++ ++2010-04-04 Maxim Kuvyrkov ++ ++ PR middle-end/40815 ++ ++ gcc/ ++ * tree-ssa-reassoc.c (broken_up_substracts): Rename to plus_negates. ++ (negate_value): Move code to push elements to broken_up_substracts ... ++ (eliminate_plus_minus_pair): ... here. Push operands that have no ++ negative pair to plus_negates. ++ (repropagate_negates, init_reassoc, fini_reassoc): Update. ++ gcc/testsuite/ ++ * gcc.dg/tree-ssa/reassoc-19.c: New. ++ ++2010-04-02 Nathan Froyd ++ ++ Issue #7937 ++ ++ * release-notes-csl.xml: New note. ++ ++ libgcc/ ++ * configure.ac: Check for __SPE__ when compiling for powerpc*. ++ * configure: Regenerate. ++ * config.host: Add t-spe-fprules if compiling for SPE. ++ * config/rs6000/t-spe-fprules: New file. ++ * config/rs6000/spe_arith.S: New file. ++ * config/rs6000/spe_cmp.S: New file. ++ * config/rs6000/spe_cnv.S: New file. ++ * config/rs6000?spe_neg.S: New file. ++ ++2010-04-02 Nathan Froyd ++ ++ gcc/ ++ * config.gcc (powerpc-*-eabi*): Use rs6000/t-fprules-softfp. ++ ++2010-04-01 Nathan Sidwell ++ ++ gcc/ ++ * config/arm/nucleus.h (LINK_SPEC): Add -z defs alongside -shared. ++ ++2010-04-01 Jie Zhang ++ ++ Issue #7944 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backporting from mainline: ++ ++ gcc/ ++ 2010-03-31 Jie Zhang ++ ++ PR 43562 ++ * reload.h (caller_save_initialized_p): Declare. ++ * toplev.c (backend_init_target): Don't call ++ init_caller_save but set caller_save_initialized_p ++ to false. ++ * caller-save.c (caller_save_initialized_p): Define. ++ (init_caller_save): Check caller_save_initialized_p. ++ * ira.c (ira): Call init_caller_save if flag_caller_saves. ++ ++ gcc/testsuite/ ++ 2010-03-31 Jie Zhang ++ ++ PR 43562 ++ * gcc.dg/pr43562.c: New test. ++ ++2010-04-01 Jie Zhang ++ ++ Issue #8315 ++ ++ Backport from mainline: ++ ++ gcc/cp/ ++ 2009-12-15 Jakub Jelinek ++ ++ PR c++/41183 ++ * cp-tree.h (current_class_ptr): Give NULL even when cfun ++ has NULL cfun->language. ++ ++ gcc/testsuite/ ++ 2009-12-15 Jakub Jelinek ++ ++ PR c++/41183 ++ * g++.dg/torture/pr41183.C: New test. ++ ++2010-03-31 Joseph Myers ++ ++ Backport from FSF: ++ ++ gcc/ ++ 2009-10-10 Peter Bergner ++ ++ * configure.ac: Add test for dci instruction. ++ * configure: Regenerate. ++ * config.in: Likewise. ++ * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp. ++ * doc/invoke.texi: Add cpu_type 476 and 476fp. ++ (-mmulhw): Add 476 to description. ++ (-mdlmzb): Likewise. ++ * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476. ++ * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost. ++ (processor_target_table): Add 476 and 476fp entries. ++ (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476. ++ (rs6000_issue_rate): Add CPU_PPC476. ++ * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define. ++ (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp. ++ (processor_type): Add PROCESSOR_PPC476. ++ (EXTRA_SPECS): Add asm_cpu_476 string. ++ * config/rs6000/rs6000.md: (define_attr "type"): Add isel attribute. ++ (define_attr "cpu"): Add ppc476. ++ Include 476.md. ++ Update comments for 476. ++ (isel_signed, isel_unsigned): Change to use "isel" type attribute. ++ * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476. ++ Update copyright year. ++ * config/rs6000/476.md: New file. ++ * config/rs6000/40x.md: Add description for "isel" attribute. ++ Update copyright year. ++ * config/rs6000/440.md: Likewise. ++ * config/rs6000/603.md: Likewise. ++ * config/rs6000/6xx.md: Likewise. ++ * config/rs6000/7450.md: Likewise. ++ * config/rs6000/7xx.md: Likewise. ++ * config/rs6000/8540.md: Likewise. ++ * config/rs6000/cell.md: Likewise. ++ * config/rs6000/e300c2c3.md: Likewise. ++ * config/rs6000/e500mc.md: Likewise. ++ * config/rs6000/mpc.md: Likewise. ++ * config/rs6000/power4.md: Likewise. ++ * config/rs6000/power5.md: Likewise. ++ * config/rs6000/power6.md: Likewise. ++ * config/rs6000/power7.md: Likewise. ++ * config/rs6000/rios1.md: Likewise. ++ * config/rs6000/rios2.md: Likewise. ++ * config/rs6000/rs64.md: Likewise. ++ ++2010-03-30 Joseph Myers ++ ++ Issue #5851 ++ ++ Backport: ++ ++ gcc/ ++ 2009-06-16 J"orn Rennecke ++ Janis Johnson ++ ++ PR target/39254 ++ * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE ++ for the symbol ref of a constant that is the source of a move ++ - nor for any other not-obvious-label-ref constants. ++ ++2010-03-30 Joseph Myers ++ ++ gcc/ ++ * config/arm/t-wrs-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS, MULTILIB_MATCHES, MULTILIB_ALIASES): Remove ++ handling of -tiwmmxt, -txscale, -tarm920t, -tthumb2 and ++ -tcortex-a8-be8. ++ * config/arm/wrs-linux.h (CC1_SPEC): Remove handling of -tiwmmxt, ++ -txscale, -tarm920t, -tthumb2 and -tcortex-a8-be8. ++ (SUBTARGET_EXTRA_ASM_SPEC, SUBTARGET_EXTRA_LINK_SPEC): Remove. ++ (SYSROOT_SUFFIX_SPEC): Remove handling of -tiwmmxt, -txscale, ++ -tarm920t, -tthumb2 and -tcortex-a8-be8. ++ ++2010-03-30 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-octeon-elf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS): Add Octeon II multilibs. ++ * config/mips/t-wrs-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS, MULTILIB_OSDIRNAMES): Add Octeon II ++ multilibs. ++ * config/mips/wrs-linux.h (SYSROOT_SUFFIX_SPEC): Handle ++ -march=octeon2. ++ ++2010-03-26 Jie Zhang ++ ++ Issue #7127 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline: ++ ++ gcc/cp/ ++ 2010-02-12 Jason Merrill ++ ++ PR c++/43024 ++ * name-lookup.h (current_binding_level): Check for null ++ cp_function_chain. ++ ++ gcc/testsuite/ ++ 2010-02-14 Volker Reichelt ++ ++ PR c++/43024 ++ * g++.dg/opt/ice1.C: New. ++ ++2010-03-24 Joseph Myers ++ ++ Issue #7919 ++ ++ Backport: ++ ++ fixincludes/ ++ 2010-03-24 Joseph Myers ++ ++ * inclhack.def (glibc_strncpy): New fix. ++ * fixincl.x: Regenerate. ++ * tests/base/bits/string2.h: Update. ++ ++ gcc/testsuite/ ++ 2010-03-24 Joseph Myers ++ ++ * gcc.dg/strncpy-fix-1.c: New test. ++ ++2010-03-23 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.c (mips_cpu_info_table): Add m14kc. ++ ++2010-03-21 Andrew Jenner ++ ++ Issue #8092 ++ ++ libgfortran/ ++ * io/unix.c (tempfile): Check fd for -1, not negative. ++ (regular_file): Likewise. ++ (open_external): Likewise. ++ (fallback_access): Likewise. ++ ++2010-03-18 Jie Zhang ++ ++ Issue #7122 ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ * config/arm/vfp.md (movdf_vfp): Add load double 0.0 case. ++ (thumb2_movdf_vfp): Likewise. ++ * config/arm/constraints.md (D0): New constraint. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon-load-df0.c: New test. ++ ++2010-03-17 Sandra Loosemore ++ ++ Issue #8002 ++ ++ * release-notes-csl.xml (Incorrect code generation bug fix): New note. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-11-30 Chao-ying Fu ++ ++ * config/mips/mips-dsp.md (mips_lhx_): Use sign_extend. ++ ++ gcc/testsuite/ ++ 2009-11-30 Chao-ying Fu ++ ++ * gcc.target/mips/dsp-lhx.c: New test. ++ * gcc.target/mips/dsp-no-lhx.c: New test. ++ ++2010-03-12 Joseph Myers ++ ++ gcc/ ++ * config/arm/t-wrs-linux (MULTILIB_EXCEPTIONS, MULTILIB_ALIASES): ++ Enable -muclibc -tthumb2-v7-a-neon multilib. ++ ++2010-03-11 Jie Zhang ++ ++ gcc/ ++ * config/arm/arm.c (arm_file_start): Remove unused ++ set_float_abi_attributes. ++ ++2010-03-11 Jie Zhang ++ ++ gcc/ ++ * config/arm/arm.c (thumb2_size_rtx_costs): Add missing ++ GET_CODE (). ++ ++2010-03-11 Jie Zhang ++ ++ Backport from upstream: ++ ++ gcc/ ++ 2010-03-09 Jie Zhang ++ ++ * config/arm/arm.md (thumb_mulsi3_v6): Remove trailing ++ whitespaces in output template. ++ ++2010-03-11 Nathan Sidwell ++ ++ Issue #7999 ++ ++ libstdc++/ ++ * configure.host (arm*-*-nucleauseabi): Add arm-eabi-extra.ver. ++ * config/os/nucleus/arm-eabi-extra.ver: New. ++ ++2010-03-10 Joseph Myers ++ ++ gcc/ ++ * config/arm/t-wrs-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS, MULTILIB_ALIASES): Add v7-A multilibs. ++ * config/arm/wrs-linux.h (CC1_SPEC, SYSROOT_SUFFIX_SPEC): ++ Likewise. ++ ++2010-03-09 Nathan Froyd ++ ++ Revert: ++ ++ gcc/ ++ 2010-03-08 Nathan Froyd ++ ++ * config/rs6000/rs6000.md (define_insn ""): Disable on TARGET_ISEL targets. ++ ++2010-03-09 Nathan Sidwell ++ ++ Issue #7940 ++ Backport 2009-10-14 Jakub Jelinek ++ ++ gcc/ ++ PR preprocessor/41543 ++ * input.h (BUILTINS_LOCATION): Change to 1 from 2. ++ Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT. ++ * tree.c: Include intl.h. ++ (expand_location): Handle BUILTINS_LOCATION. ++ * Makefile.in (tree.o): Depend on intl.h. ++ ++ gcc/testsuite/ ++ PR preprocessor/41543 ++ * gcc.dg/debug/dwarf2/pr41543.c: New test. ++ ++ libcpp/ ++ PR preprocessor/41543 ++ * include/line-map.h (RESERVED_LOCATION_COUNT): Define. ++ * line-map.c (linemap_init): Initialize highest_location and ++ highest_line to RESERVED_LOCATION_COUNT-1 instead of 0. ++ ++ * release-notes-csl.xml: Document. ++ ++2010-03-09 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-12-07 Edmar Wienskoski ++ ++ * gcc.target/powerpc/ppc-eq0-1.c: Adjust testcase for isel ++ targets. ++ ++2010-03-09 Nathan Froyd ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/block-move-1.c (memcpy): Declare. ++ * gcc.target/powerpc/block-move-2.c (memcpy): Likewise. ++ ++2010-03-09 Paul Brook ++ ++ * release-notes-csl.xml: Add missing Cortex-M4 note. ++ ++2010-03-08 Paul Brook ++ ++ gcc/ ++ * doc/invoke.texi: Document ARM -mcpu=cortex-m4. ++ * config/arm/arm.c (all_architectures): Change v7e-m default to ++ cortexm4. ++ * config/arm/arm-cores.def: Add cortex-m4. ++ * config/arm/arm-tune.md: Regenerate. ++ ++2010-03-08 Paul Brook ++ ++ gcc/ ++ * config/arm/t-cs-eabi (MULTILIB_MATCHES): Add cortex-m4. ++ * config/arm/t-cs-eabi-lite (MULTILIB_MATCHES): Ditto. ++ * config/arm/t-cs-uclinux-eabi (MULTILIB_MATCHES): Ditto. ++ ++2010-03-08 Nathan Froyd ++ ++ Issue #7183 ++ ++ * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Don't force_reg on ++ const0_rtx operand. ++ * config/rs6000/rs6000.md (isel_signed, isel_unsigned): Permit ++ const_int 0 for the second operand; make third operand slightly more ++ lenient. ++ (define_insn ""): Disable on TARGET_ISEL targets. ++ ++2010-03-08 Julian Brown ++ ++ * release-notes-csl.xml (Thumb-2 size optimization improvements): Add ++ note. ++ ++2010-03-05 Nathan Froyd ++ ++ Issue #7183 ++ ++ * release-notes-csl.xml: New notes. ++ ++ gcc/ ++ * doc/invoke.texi (mblock-move-inline-limit): Tweak @opindex directive. ++ Tweak text to reflect target-specific setting of this option. ++ ++2010-03-05 Nathan Froyd ++ ++ Issue #7792 ++ ++ Backport from upstream: ++ ++ gcc/ ++ 2009-09-10 Nathan Froyd ++ ++ * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing ++ with actual SPE/paired vector modes before using 64-bit alignment. ++ Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE. ++ ++2010-03-04 Nathan Froyd ++ ++ Issue #7183 ++ ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Change prototype. ++ Ensure that isel pattern is only emitted with proper conditions. ++ (rs6000_emit_cmove): Change call to rs6000_emit_int_cmove to match. ++ (output_isel): Check that condition is LT, GT, LTU, GTU, or EQ. ++ (rs6000_emit_sISEL): New function. ++ (rs6000_emit_sCOND): Call it if computing an SImode result. ++ (rs6000_rtx_costs): Alter costs for comparisons for TARGET_ISEL. ++ * config/rs6000/rs6000.md (abssi2_isel): Change pattern to use ++ lt rather than ge. ++ (isel_signed, isel_unsigned): Tighten constraints on comparison ++ operator. ++ (sne, sge, sgt, sle, slt): Check TARGET_ISEL. ++ ++2010-03-04 Nathan Froyd ++ ++ Issue #7183 ++ ++ gcc/ ++ * config/rs6000/rs6000.opt (mblock-move-inline-limit=): New option. ++ * config/rs6000/rs6000.c (rs6000_override_options): Set ++ rs6000_block_move_inline_limit. ++ * doc/invoke.texi (-mblock-move-inline-limit): Document. ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/block-move-1.c: New test. ++ * gcc.target/powerpc/block-move-2.c: New test. ++ ++2010-03-02 Nathan Froyd ++ ++ gcc/ ++ * tree-ssa-remove-local-statics.c (check_definedness): Pass NO_INSERT ++ to htab_find_slot. Make necessary changes as a result of doing so. ++ (compute_definedness_for_block): Likewise. ++ ++2010-03-02 Nathan Sidwell ++ ++ Issue #7928 ++ ++ * libtool.4 (nucleuseabi): Set deplibs check method. ++ ++ libstdc++-v3/ ++ * configure: Rebuilt. ++ ++2010-03-01 Nathan Froyd ++ ++ Issue #7788 ++ ++ gcc/ ++ * tree-ssa-remove-local-statics.c (check_definedness): Dump the ++ defined bitmap and information about the decl if debugging. ++ Do not clear the hash table slot; instead, set decl->optimizable_p ++ to false. ++ (unstaticize_variable): Finish if we can't optimize. ++ (execute_rls): Only do TODO_rebuild_alias and TODO_update_ssa if ++ we optimized anything. ++ (pass_remove_local_statics): Remove TODO_rebuild_alias and ++ TODO_update_ssa. ++ ++2010-02-28 Mark Mitchell ++ ++ Issue #7791 ++ ++ Backport from mainline: ++ ++ gcc/cp/ ++ 2010-02-27 Mark Mitchell ++ ++ PR c++/42748 ++ * cp-tree.h (push_tinst_level): Declare. ++ (pop_tinst_level): Likewise. ++ * pt.c (push_tinst_level): Give it external linkage. ++ (pop_tinst_level): Likewise. ++ * mangle.c (mangle_decl_string): Set the source location to that ++ of the decl while mangling. ++ ++ gcc/testsuite/ ++ 2010-02-27 Mark Mitchell ++ ++ PR c++/42748 ++ * g++.dg/abi/mangle11.C: Adjust mangling warning locations. ++ * g++.dg/abi/mangle12.C: Likewise. ++ * g++.dg/abi/mangle20-2.C: Likewise. ++ * g++.dg/abi/mangle17.C: Likewise. ++ * g++.dg/template/cond2.C: Likewise. ++ * g++.dg/template/pr35240.C: Likewise. ++ ++2010-02-25 Daniel Jacobowitz ++ Pedro Alves ++ ++ libiberty/ ++ * cygpath.c (IMAGE_IMPORT_MODULE_DIRECTORY) ++ (PIMAGE_IMPORT_MODULE_DIRECTORY, IMAGE_DIRECTORY_ENTRY_IMPORT): New. ++ (msvcrt_dll): Use GetModuleHandle instead of ++ LoadLibrary. Check the import table to figure out which C ++ runtime to use. ++ (msvcrt_stat): New function. Check for _stat32, _stat64i32, ++ and _stat. ++ (stat): Use msvcrt_stat. ++ ++2010-02-25 Andrew Stubbs ++ ++ gcc/ ++ * config/sh/sh.c (sh_output_mi_thunk): Adjust sibcalls for FDPIC. ++ * config/sh/sh.md (sibcalli_pcrel): Add !TARGET_FDPIC condition. ++ (sibcalli_pcrel_fdpic): New insn. ++ (sibcall_pcrel_fdpic): New insn. ++ (sibcall): Adjust for FDPIC. ++ (sibcall_valuei_pcrel): Add !TARGET_FDPIC condition. ++ (sibcall_valuei_pcrel_fdpic): New insn. ++ (sibcall_value_pcrel): Add !TARGET_FDPIC condition. ++ (sibcall_value_pcrel_fdpic): New insn. ++ (sibcall_value): Adjust for FDPIC. ++ ++2010-02-25 Maxim Kuvyrkov ++ ++ gcc/ ++ * tree.c (initializer_zerop): Handle STRING_CST. ++ ++2010-02-24 Andrew Stubbs ++ ++ gcc/ ++ * config/sh/sh.c (legitimize_pic_address): Use GOTFUNCDESC for weak ++ symbols. ++ ++2010-02-24 Catherine Moore ++ ++ gcc/ ++ * config/mips/t-sgxx-linux (MULTILIB_EXTRA_OPTS): Remove. ++ * config/mips/t-sgxxlite-linux (MULTILIB_EXTRA_OPTS): Remove. ++ ++2010-02-24 Catherine Moore ++ ++ gcc/ ++ * config/mips/linux.h (SUBTARGET_CC1_SPEC): Pass -mno-jals ++ in the absence of -mjals. ++ * config/mips/mips.opt (mjals): Fix typo. ++ ++ * release-notes-csl.xml: Document. ++ ++2010-02-23 Julian Brown ++ ++ gcc/ ++ * config/arm/arm.c (thumb2_size_rtx_costs): New. ++ (arm_rtx_costs): Call above for Thumb-2. ++ ++2010-02-23 Julian Brown ++ ++ gcc/ ++ * calls.c (precompute_register_parameters): Avoid generating a ++ register move if optimizing for size. ++ ++2010-02-20 Joseph Myers ++ ++ gcc/ ++ * config/mips/linux-unwind.h (mips_fallback_frame_state): Return ++ early if pc not 4-byte aligned. ++ ++2010-02-19 Joseph Myers ++ ++ gcc/ ++ * configure.ac (gcc_cv_libc_provides_ssp): Set to yes for ++ GNU/Linux targets with libssp disabled. ++ * configure: Regenerate. ++ ++2010-02-19 Julian Brown ++ ++ Issue #7760 ++ ++ gcc/cp/ ++ * mangle.c (mangle_decl_string): Set input location to location of ++ decl. ++ ++2010-02-18 Maciej W. Rozycki ++ ++ * release-notes-csl.xml: s/M14KC/M14Kc/. ++ ++2010-02-17 Nathan Sidwell ++ ++ gcc/ ++ * config/arm/nucleus.h (STARTFILE_SPEC, ENDFILE_SPEC): Add shared ++ crtbegin, crtend bits. ++ * config/arm/t-nucleus: New. ++ * config.gcc (arm-samsung-nucleuseabi): Add t-nucleus fragment. ++ ++2010-02-16 Paul Brook ++ ++ gcc/ ++ * config.gcc (arm*-*-symbianelf*): Add t-bpabi to t-symbian. ++ * config/arm/symbian.h (RENAME_LIBRARY): Remove. ++ * config/arm/lib1funcs.asm: Remove __symbian__ conditionals. ++ * config/arm/libunwind.S: Ditto. ++ * config/arm/t-symbian (LIB1ASMFUNCS): Remove. ++ (UNWIND_H, LIB2ADDEH, LIB2ADDEHDEP): Remove. ++ (LIB2FUNCS_STATIC_EXTRA): Remove. ++ (LIB2FUNCS_EXTRA): Add eabi-memcpy.c and eabi-memset.c. ++ * config/arm/eabi-memcpy.c: New file. ++ * config/arm/eabi-memset.c: New file. ++ ++ libstdc++-v3/ ++ * libsupc++/Makefile.am (sources): Add vec.cc when LIBSUPCXX_PRONLY. ++ * libsupc++/Makefile.in: Regenerate. ++ ++2010-02-16 Daniel Jacobowitz ++ ++ libiberty/ ++ * cygpath.c (cygpath): If cygpath exits, retry on the next request. ++ ++2010-02-16 Sandra Loosemore ++ ++ * release-notes-csl.xml: Document microMIPS. ++ ++2010-02-15 Julian Brown ++ ++ Issue #7329 ++ ++ * release-notes-csl.xml (Improved code generation for Cortex-A9): Add ++ note. ++ ++ Backport from mainline: ++ ++ Ramana Radhakrishnan ++ ++ gcc/ ++ * config/arm/cortex-a9.md: New - integer pipeline description. ++ ++2010-02-15 Julian Brown ++ ++ Issue #7486 ++ ++ gcc/ ++ * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args): ++ Use correct ABI for double-precision helper functions in hard-float ++ mode if only single-precision arithmetic is supported in hardware. ++ ++2010-02-11 Julian Brown ++ ++ Issue #3685 ++ ++ * release-notes-csl.xml (Thumb-2 function call optimization): Add ++ note. ++ ++2010-02-11 Andrew Stubbs ++ ++ gcc/ ++ * config/sh/uclinux.h (STARTFILE_SPEC): Append FDPIC_STARTFILE_SPEC. ++ (FDPIC_STARTFILE_SPEC): New define. ++ ++2010-02-09 Julian Brown ++ Mark Mitchell ++ ++ Issue #3685 ++ ++ gcc/ ++ * config/arm/arm.c (arm_function_ok_for_sibcall): Allow sibling ++ calls for Thumb-2. ++ (output_return_instruction): Use pop not ldmfd for Thumb-2. ++ * config/arm/arm.h (USE_RETURN_INSN): Enable for Thumb-2. ++ * config/arm/arm.md (*call_symbol, *call_value_symbol): Use for ++ Thumb-2. ++ (*call_insn, *call_value_insn): Don't use for Thumb-2. ++ (sibcall, sibcall_value, *sibcall_insn, *sibcall_value_insn): Use ++ for Thumb-2. ++ (return): New expander. ++ (*arm_return): New name for ARM return insn. ++ (*thumb2_return): New insn pattern. ++ ++2010-02-09 Julian Brown ++ ++ Issue #7336, #7568 ++ ++ * release-notes-csl.xml (Thumb-2 internal compiler error fix) ++ (Thumb-2 multiply fix): New notes. ++ ++2010-02-09 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-sgxxlite-linux (MULTILIB_OPTIONS, ++ MULTILIB_DIRNAMES): Add microMIPS multilibs. ++ (MULTILIB_EXCEPTIONS, MULTILIB_EXTRA_OPTS): New. ++ * config/mips/cs-sgxxlite-linux.h (SYSROOT_SUFFIX_SPEC): Update. ++ * config/mips/t-sgxx-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS): Add microMIPS multilibs. ++ (MULTILIB_EXTRA_OPTS): New. ++ * config/mips/cs-sgxx-linux.h (SYSROOT_SUFFIX_SPEC): Update. ++ ++2010-02-09 Nathan Sidwell ++ ++ gcc/ ++ * config/arm/nucleus.h (LINK_SPEC): Check -shared too. ++ ++2010-02-05 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-06-25 Andrew Pinski ++ ++ PR target/38731 ++ * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use ++ DATA_ALIGNMENT instead. ++ ++2010-02-05 Nathan Froyd ++ ++ Issue #7587 ++ ++ * release-notes-csl.xml: New note. ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2010-02-05 Nathan Froyd ++ ++ * config/rs6000/rs6000.c (rs6000_override_options): Invert check ++ for rs6000_gen_cell_microcode. ++ ++2010-02-04 Maxim Kuvyrkov ++ ++ Issue #7660 ++ ++ gcc/ ++ * config/arm/arm.h (FUNCTION_BOUNDARY): Set minimal allowed alignment ++ for THUMB mode when optimizing for space. ++ ++2010-02-04 Maxim Kuvyrkov ++ ++ Backport from mainline (for thumb2 size reduction): ++ ++ gcc/ ++ 2009-11-22 Richard Earnshaw ++ * opts.c (decode_options): Don't enable flag_schedule_insns ++ when optimizing for size. ++ * doc/invoke.texi: Document change. ++ ++2010-02-04 Daniel Jacobowitz ++ ++ Issue #7197 - backtrace() through throw() ++ ++ * release-notes-csl.xml (Improved backtrace function): New ++ note. ++ ++ libstdc++-v3/ ++ * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): For ++ ARM EABI, skip handlers for _US_VIRTUAL_UNWIND_FRAME ++ | _US_FORCE_UNWIND. ++ ++2010-02-03 Daniel Gutson ++ ++ Issue #6472 ++ ++ gcc/ ++ * config/arm/lib1funcs.asm (__ARM_ARCH__): __ARM_ARCH_7EM__ ++ added to the preprocessor condition. ++ ++2010-02-02 Joseph Myers ++ ++ gcc/ ++ * config/mips/linux.h (SUBTARGET_OVERRIDE_OPTIONS): Set ++ TARGET_INTERLINK_MIPS16. ++ ++2010-02-01 Julian Brown ++ ++ gcc/ ++ * config/arm/arm.md (*arm_cmpdi_insn, *arm_cmpdi_zero) ++ (*thumb_cmpdi_zero): Remove extraneous parallel around rtx patterns. ++ ++2010-01-29 Nathan Sidwell ++ ++ * libtool.m4 (nucleus*): Add shared library logic. ++ ++ gcc/ ++ * config.gcc (arm*-*-nucleuseabi*): Add nucleus and shared library ++ logic. ++ * config/arm/nucleus.h: New. ++ ++ libstdc++-v3/ ++ * configure: Regenerated. ++ ++2010-01-24 Mark Mitchell ++ ++ Backport from mainline: ++ ++ 2010-01-24 Mark Mitchell ++ ++ PR c++/42748 ++ * config/arm/arm.c (arm_mangle_type): Do not warn about changes to ++ mangling of va_list in system headers. ++ ++ 2010-01-24 Mark Mitchell ++ ++ PR c++/42748 ++ * g++.dg/abi/arm_va_list2.C: New test. ++ * g++.dg/abi/arm_va_list2.h: Companion header file. ++ ++ * release-notes-csl.xml: Document. ++ ++2010-01-13 Nathan Froyd ++ ++ Issue #6401 ++ ++ Backport from mainline: ++ ++ boehm-gc/ ++ 2009-07-17 Michael Meissner ++ ++ PR boehm-gc/40785 ++ * include/private/gc_locks.h (GC_test_and_set): If GCC 4.4, use ++ the __sync_lock_test_and _set and __sync_lock_release builtins on ++ the powerpc. If not GCC 4.4, fix up the constraints so that it ++ builds without error. ++ (GC_clear): Ditto. ++ ++2010-01-11 Sandra Loosemore ++ ++ Issue #6964 ++ * release-notes-csl.xml (Improved NEON code generation): New note. ++ ++2010-01-11 Maciej W. Rozycki ++ ++ Issue #4656 ++ Backport from FSF: ++ ++ gcc/ ++ 2009-04-18 Adam Nemet ++ * config/mips/mips.c (mips_final_postscan_insn): Make it static. ++ ++ gcc/ ++ 2009-04-10 Chao-ying Fu ++ * doc/tm.texi (Instruction Output): Document ++ TARGET_ASM_FINAL_POSTSCAN_INSN. ++ * target.h (final_postscan_insn): New field in asm_out. ++ * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define. ++ (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN. ++ * final.c (final_scan_insn): Call ++ targetm.asm_out.final_postscan_insn after outputting ++ an asm macro and a normal instruction. ++ ++ * config/mips/mips.h (FINAL_PRESCAN_INSN): New define. ++ * config/mips/mips-protos.h (mips_final_prescan_insn): Declare. ++ * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback. ++ (mips_final_prescan_insn, mips_final_postscan_insn): New functions. ++ (TARGET_ASM_FINAL_POSTSCAN_INSN): New define. ++ ++ * release-notes-csl.xml ++ (Interrupt handler code generation bug fix): New. ++ ++2010-01-08 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ * config/arm/neon.md (UNSPEC_VADD): Delete. ++ (UNSPEC_VMLA): Delete. ++ (UNSPEC_VMLS): Delete. ++ (UNSPEC_VMUL_N): Delete. ++ (UNSPEC_VSUB): Delete. ++ (adddi3_neon): New. ++ (subdi3_neon): New. ++ (mul3add_neon): Make a named insn. ++ (mul3add_neon): Likewise. ++ (neon_vadd): Turn into define_expand, get rid of unspec. ++ (neon_vmla): Likewise. ++ (neon_vmls): Likewise. ++ (neon_vsub): Likewise. ++ * config/arm/arm.md (arm_adddi3): Don't use for TARGET_NEON. ++ (arm_subdi3): Likewise. ++ ++2010-01-08 Chao-ying Fu ++ Catherine Moore ++ ++ gcc/ ++ * config/mips/mips-protos.h (micromips_load_store_pair_p): Add ++ argument. ++ * config/mips/mips.c (micromips_load_store_pair_p): New ++ argument swap_p. Check for base + offset. Check for ++ anti-dependence. ++ * config/mips/micromips.md: Adjust callers of ++ micromips_load_store_p to pass additional argument. ++ ++2010-01-08 Daniel Jacobowitz ++ Julian Brown ++ ++ gcc/ ++ * config/arm/arm.c (arm_canonicalize_comparison): Canonicalize DImode ++ comparisons. Adjust to take both operands. ++ (arm_select_cc_mode): Handle DImode comparisons. ++ (arm_gen_compare_reg): Generate a scratch register for DImode ++ comparisons which require one. Use xor for Thumb equality checks. ++ (arm_const_double_by_immediates): New. ++ (arm_print_operand): Allow 'Q' and 'R' for constants. ++ (get_arm_condition_code): Handle new CC_CZmode and CC_NCVmode. ++ * config/arm/arm.h (CANONICALIZE_COMPARISON): Always use ++ arm_canonicalize_comparison. ++ * config/arm/arm-modes.def: Add CC_CZmode and CC_NCVmode ++ * config/arm/arm-protos.h (arm_const_double_by_immediates): Declare. ++ (arm_canonicalize_comparison): Update prototype. ++ * config/arm/constraints.md (Di): New constraint. ++ * config/arm/predicates.md (arm_immediate_di_operand) ++ (arm_di_operand, cmpdi_operand): New. ++ * config/arm/arm.md (*arm_cmpdi_insn, *arm_cmpdi_unsigned) ++ (*arm_cmpdi_zero, *thumb_cmpdi_zero): New insns. ++ (cmpdi): Handle non-Cirrus also. ++ (bgt, ble, bgtu, bleu, sgt, sle, sgtu, sleu): Reverse DImode ++ comparisons. ++ ++2010-01-08 Julian Brown ++ ++ gcc/ ++ * config/arm/thumb2.md (*thumb2_addsi3_compare0): New. ++ (*thumb2_addsi3_compare0_scratch): New. ++ * config/arm/constraints.md (Pu): New. ++ * config/arm/arm.md (*addsi3_compare0): Remove FIXME comment. Use ++ for ARM mode only. ++ (*addsi3_compare0_scratch): Likewise. ++ ++2010-01-07 Julian Brown ++ ++ Backport from mainline: ++ ++ 2009-12-05 Richard Earnshaw ++ ++ gcc/ ++ * config/arm/thumb2.md (thumb2_mulsi_short_compare0_scratch): Use a ++ low register for the scratch. ++ ++2010-01-07 Julian Brown ++ ++ Issue #7336 ++ Backport from mainline: ++ ++ 2009-12-02 Richard Earnshaw ++ ++ gcc/ ++ * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si): Final condition ++ should be TARGET_THUMB2. ++ ++2010-01-06 Maxim Kuvyrkov ++ ++ Issue #7450 ++ ++ * release-notes-csl.xml (-pthread compiler option fix): New note. ++ ++ gcc/ ++ * config/m68k/uclinux.h (LIB_SPEC): Bring in sync with config/linux.h. ++ ++2010-01-05 Joseph Myers ++ ++ * configure.ac: Handle arm*-*-nucleuseabi. ++ * configure: Regenerate. ++ ++ gcc/ ++ * config.gcc: Handle arm*-*-nucleuseabi*. ++ ++ libgcc/ ++ * config.host: Handle arm*-*-nucleuseabi*. ++ ++2010-01-02 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-sgxx-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS): Add microMIPS multilibs. ++ (MULTILIB_EXTRA_OPTS): New. ++ * config/mips/cs-sgxx-linux.h (SYSROOT_SUFFIX_SPEC): Update. ++ ++2009-12-30 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-sgxxlite-linux (MULTILIB_OPTIONS, ++ MULTILIB_DIRNAMES): Add microMIPS multilibs. ++ (MULTILIB_EXCEPTIONS, MULTILIB_EXTRA_OPTS): New. ++ * config/mips/cs-sgxxlite-linux.h (SYSROOT_SUFFIX_SPEC): Update. ++ ++2009-12-29 Sandra Loosemore ++ ++ Issue #5785 ++ ++ * release-notes-csl.xml (Code size with -g): New note. ++ ++ gcc/ ++ Backport from FSF 4.4: ++ ++ 2009-10-19 Jakub Jelinek ++ ++ Backport from mainline: ++ 2009-10-16 Jakub Jelinek ++ ++ PR debug/40521 ++ * debug.h (struct gcc_debug_hooks): Add assembly_start hook. ++ * cgraphunit.c (cgraph_optimize): Call it. ++ * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into... ++ (dwarf2out_assembly_start): ... here. New hook. ++ (dwarf2out_debug_hooks): Add dwarf2out_assembly_start. ++ * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start ++ hook. ++ * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise. ++ * sdbout.c (sdb_debug_hooks): Likewise. ++ * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start. ++ (vmsdbgout_assembly_start): New hook. ++ ++ 2009-10-09 Jakub Jelinek ++ ++ PR debug/40521 ++ * dwarf2out.c (dwarf2out_init): Test whether ++ HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking ++ it is defined. ++ ++ 2009-10-02 Jakub Jelinek ++ ++ PR debug/40521 ++ * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test. ++ * configure: Regenerated. ++ * config.in: Regenerated. ++ * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if ++ !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame. ++ (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and ++ not emitting .eh_frame, emit .cfi_sections .debug_frame ++ directive. ++ ++2009-12-28 Sandra Loosemore ++ ++ Issue #7431 ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon-vmov_ns64.c: Add explicit return statement. ++ * gcc.target/arm/neon-vmov_nu64.c: Likewise. ++ * gcc.target/arm/neon-vdup_ns64.c: Likewise. ++ * gcc.target/arm/neon-vdup_nu64.c: Likewise. ++ * gcc.target/arm/neon-vget_lanes64.c: Likewise. ++ * gcc.target/arm/neon-vget_laneu64.c: Likewise. ++ * gcc.target/arm/neon-vset_lanes64.c: Likewise. ++ * gcc.target/arm/neon-vset_laneu64.c: Likewise. ++ ++2009-12-28 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ * config/arm/neon.md (UNSPEC_VDUP_LANE): Delete. ++ (V_double_vector_mode): New. ++ (neon_vdup_nv2di): Merge with neon_vdup_lanev2di, adjusting ++ the pattern from the latter to be predicable for consistency. ++ (neon_vdup_lane_internal): New. ++ (neon_vdup_lane): Turn into a define_expand and rewrite ++ to avoid using an unspec. ++ (neon_vdup_lanedi): Rewrite RTL pattern to avoid unspec. ++ (neon_vdup_lanev2di): Turn into a define_expand. ++ * config/arm/neon.ml (Vdup_n): Add No_op attribute for v2di case. ++ (Vmov_n): Likewise. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon/vmovQ_ns64.c: Regenerated. ++ * gcc.target/arm/neon/vmovQ_nu64.c: Regenerated. ++ * gcc.target/arm/neon/vdupQ_ns64.c: Regenerated. ++ * gcc.target/arm/neon/vdupQ_nu64.c: Regenerated. ++ * gcc.target/arm/neon-vdupQ_lanes64.c: New. ++ * gcc.target/arm/neon-vdupQ_laneu64.c: New. ++ * gcc.target/arm/neon-vdupQ_ns64.c: New. ++ * gcc.target/arm/neon-vdupQ_nu64.c: New. ++ * gcc.target/arm/neon-vmovQ_ns64.c: New. ++ * gcc.target/arm/neon-vmovQ_nu64.c: New. ++ ++2009-12-22 Catherine Moore ++ ++ Merge from micromips branch: ++ ++ 2009-10-23 Maciej W. Rozycki ++ ++ gcc/ ++ * config/mips/mips.opt (mjals): Fix a typo. ++ ++ 2009-10-23 Maciej W. Rozycki ++ ++ gcc/ ++ 2009-10-01 Chao-ying Fu ++ * config/mips/mips.opt (TARGET_JALS): Set to 1 by default. ++ * config/mips/mips.md (indirect_jump): Use JR for ++ microMIPS. ++ (tablejump): Likewise. ++ * config/mips/micromips.md (peephole2): New patterns for the ++ MOVEP instruction. ++ (*movepsisi, *movepsisf, *movepsfsi, *movepsfsf): Likewise. ++ * config/mips/mips-protos.h (micromips_movep_target_p): New ++ prototype. ++ * config/mips/mips.c (micromips_movep_target_p): New function. ++ ++ * passes.c (init_optimization_passes): Run pass_peephole2 after ++ pass_sched2 too. ++ ++ gcc/testsuite/ ++ 2009-10-23 Maciej W. Rozycki ++ * gcc.target/mips/near-far-1.c: Adjust scan-assembler to handle ++ the JALS instruction. ++ * gcc.target/mips/near-far-2.c: Likewise. ++ ++ 2009-10-23 Maciej W. Rozycki ++ ++ gcc/ ++ * config/mips/t-sgxx-sde (MULTILIB_EXTRA_OPTS): New variable, ++ set to "mno-jals". ++ ++ 2009-07-30 Maciej W. Rozycki ++ ++ gcc/ ++ 2009-07-30 Chao-ying Fu ++ * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add march=m14k* to ++ -mips32r2 targets. ++ ++ 2009-07-17 Maciej W. Rozycki ++ ++ gcc/ ++ 2009-07-17 Chao-ying Fu ++ * config/mips/mips.opt (mmucon): Rename to... ++ (mmcu): ... this. Replace MUCON with MCU. ++ * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Update ++ accordingly. ++ (ASM_SPEC): Likewise. ++ * doc/invoke.texi (MIPS Options): Likewise. ++ ++ 2009-07-17 Maciej W. Rozycki ++ ++ gcc/ ++ 2009-07-17 Chao-ying Fu ++ * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): Add march=m14k* to ++ -msoft-float targets. ++ * config/mips/sdemtk.h (MIPS_ARCH_FLOAT_SPEC): Likewise. ++ ++ 2009-07-10 Nathan Froyd ++ ++ gcc/ ++ * config/mips/mips.c (micromips_build_save_restore): Mark the ++ built PARALLEL as RTX_FRAME_RELATED_P. ++ ++ 2009-06-30 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-06-30 Nathan Froyd ++ ++ * gcc.dg/tree-ssa/gen-vect-25.c (n): New variable. ++ (main): Pass n to main_1 instead. ++ * gcc.dg/tree-ssa/gen-vect-28.c (off): New variable. ++ (main_1): New function, split off from... ++ (main): ...here. Pass `off' to main_1 instead. ++ ++ 2009-06-30 Nathan Froyd ++ ++ gcc/ ++ * config/mips/mips.md (clear_hazard): Remove TARGET_MICROMIPS code. ++ ++ 2009-06-30 Nathan Froyd ++ ++ gcc/ ++ * config/mips/mips.md (clear_hazard): Don't use . ++ ++ 2009-06-30 Nathan Froyd ++ ++ gcc/ ++ * config/mips/mips-protos.h (micromips_load_store_pair_p): Adjust ++ prototype. ++ * config/mips/mips.c (micromips_load_store_pair_p): Add check for ++ invalid load instruction. ++ * config/mips/micromips.md (*lwp, *swp): Adjust calls to ++ micromips_load_store_pair_p. ++ ++ 2009-06-09 Nathan Sidwell ++ ++ Port 2009-05-28 Chao-ying Fu ++ gcc/ ++ * config/mips/mips.c (mips_address_insns): Add a new parameter ++ check_micromips_12bit_p. ++ (mips_load_store_insns): Pass false to mips_address_insns for the new ++ parameter. ++ (mips_rtx_costs): Pass false to mips_address_insns for the new ++ parameter. ++ (mips_address_costs): Pass false to mips_address_insns for the new ++ parameter. ++ * config/mips/constraints.md (YC): New memory constraint. ++ (YD): New address constraint. ++ * config/mips/mips-protos.h (mips_address_insns): Add a new parameter. ++ * doc/md.texi (Constraints for Particular Machines): Document YC. ++ * config/mips/mips.md (mov_l, mov_r, mov_l, ++ mov_r): Use YC, instead of m. ++ (prefetch): Use YD, instead of p. ++ (sync_compare_and_swap, sync_add, sync_sub, ++ sync_old_add, sync_old_sub, sync_new_add, ++ sync_new_sub, sync_, sync_old_, ++ sync_new_, sync_nand, sync_old_nand, ++ sync_new_nand, sync_lock_test_and_set): Use YC, ++ instead of R for memory constraints. ++ ++ gcc/ ++ * config/mips/t-sgxx-sde (MULTILIB_OPTIONS): Add mmicromips. ++ (MULTILIB_DIRNAMES): Add micromips. ++ (MULTILIB_EXCLUSIONS): Exclude -mcode-readable=no when !mips16. ++ (MULTILIB_EXCEPTIONS): Remove no-float and fp-64 micromips libraries. ++ ++ Port 2009-05-13 Chao-ying Fu ++ gcc/ ++ * doc/extend.texi (Declare Attributes of Functions): Add "micromips" ++ and "nomicromips". ++ * doc/invoke.texi (MIPS Options): Add "-mmicromips"/"-mno-mmicromips", ++ "-mmucon"/"-mno-mucon", and "-mjals"/"-mno-jals". ++ Add "m14k" for processor names. ++ Update descriptions for "-minterlink-mips16" for microMIPS. ++ Document "-mmicromips"/"-mno-mmicromips". ++ Document "-mmucon"/"-mno-mucon". ++ Document "-mjals"/"-mno-jals". ++ * config/mips/micromips.md (*store_word_multiple, *load_word_multiple): ++ New instructions for save to/load from the stack. ++ New peephole2 to match load/store word pair. ++ (*lwp, *swp): New instructions for load/store word pair. ++ (mips_jraddiusp): New instruction. ++ * config/mips/crtn.asm: Add labels of "init" and "fini", as ++ objdump needs labels before microMIPS/MIPS16 instructions to dump ++ instructions correctly. ++ * config/mips/mips.md (micromips_type): New attribute for 16-bit ++ microMIPS instructions. ++ (*add3): Set micromips_type to add. ++ (sub3): Set micromips_type to sub. ++ (one_cmpl2): Set micromips_type to logical_not. ++ (*and3): Set micromips_type to logical_and. ++ (*ior3): Set micromips_type to logical_or. ++ Set micromips_type to logical_xor for unamed xor instructions. ++ (*zero_extend2): Set micromips_type to ++ zero_extend. ++ (mfhi_): Set micromips_type to mfhi. ++ (clear_hazard_): Use jrs.hb for microMIPS. ++ (*3): Disable microMIPS for this instruction. ++ (*micromips_ashl3): New instruction for microMIPS. ++ (*micromips_ashr3): New instruction for microMIPS. ++ (*micromips_lshr3): New instruction for microMIPS. ++ (*branch_equality): Check if it is not ++ microMIPS. ++ (*branch_equality_micromips): New instruction for microMIPS. ++ (*branch_equality_inverted): Check if it is not microMIPS. ++ (*branch_equality_inverted_micromips): New isntruction for ++ microMIPS. ++ (jump): Use "b" for microMIPS to save code size. ++ (*return): Use "jr" for microMIPS to save code size. ++ (return_internal): Use "jr" for microMIPS to save code size. ++ (sibcall_internal): Use MICROMIPS_J to enable jrs. ++ (sibcall_value_internal): Use MICROMIPS_J to enable jrs. ++ (sibcall_value_multiple_internal): Use MICROMIPS_J to enable jrs. ++ (micromips.md): New include. ++ * config/mips/mips.opt (mjals, mmicromips, mmucon): New options. ++ * config/mips/mips16.S: Skip code when __mips_micromips is defined. ++ * config/mips/mips-protos.h (micromips_output_save_restore, ++ micromips_save_restore_pattern_p, micromips_load_store_pair_p, ++ micromips_output_load_store_pair): New prototypes. ++ * config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Use 0x7f0 for ++ microMIPS. ++ (mips_base_micromips): New variable. ++ (mips_attribute_table): Add "micromips" and "nomicromips". ++ (mips_cpu_info_table): Add "m14k". ++ (mips_micromips_decl_p, mips_nomicromips_decl_p): New functions. ++ (mips_use_micromips_mode_p): New function. ++ (mips_insert_attributes): Add micromips_p and nomicromips_p. ++ Cannot use both mips16 and microMIPS. ++ (mips_start_function_definition): Set micromips/nomicromips. ++ (mips_function_ok_for_sibcall): Check if sibcall is ok for microMIPS. ++ For MIPS32, check if the called function is a microMIPS function. ++ (mips_print_operand_punctuation): Add ':' to support compact branches. ++ Add '!' to support branches with 16-bit delay slots. ++ (mips_init_print_operand_punct): Add ':' to generate compact branches. ++ Add '!' to generate branch with 16-bit delay slots by recognizing ++ 16-bit instructions in delay slots. ++ (mips_init_print_operand_punct): Add : and !. ++ (mips_save_reg): Add prototype, because it will be used later. ++ (micromips_build_save_restore): New function. ++ (mips_for_each_saved_reg): Add support for microMIPS lwm/swm. ++ (mips_expand_epilogue): Add jraddiusp support. ++ (was_micromips_p, was_micromips_pch_p): New variables. ++ (mips_set_mips16_micromips_mode): Change it from mips_set_mips16_mode. ++ Support the microMIPS mode for functions. ++ For microMIPS, we disable branch likely instructions. ++ (mips_set_current_function): Rename mips_set_mips16_mode to ++ mips_set_mips16_micromips_mode. ++ (mips_override_options): Check mips16 and microMIPS. ++ Rename mips_set_mips16_mode to mips_set_mips16_micromips_mode. ++ (micromips_save_restore_pattern_p, micromips_output_save_restore, ++ micromips_load_store_pair_p, micromips_output_load_store_pair): ++ New functions. ++ * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add __mips_micromips ++ and __mips_mucon. ++ (ISA_HAS_LWXS): Enable for microMIPS. ++ (ASM_SPEC): Pass -mmicromips/-mno-micromips and -mmucon/-mno-mucon. ++ (M16STORE_REG_P): New define for microMIPS store source register. ++ (MIPS_CALL): For microMIPS, we try to enable jals and jalrs. ++ (MICROMIPS_J): New define for microMIPS to enable jrs. ++ * config/mips/t-sde (MULTILIB_OPTIONS): Add mmicromips. ++ (MULTILIB_DIRNAMES): Add micromips ++ Exclude -mcode-readable=no when !mips16. ++ ++2009-12-21 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ * config/arm/arm.c (neon_expand_vector_init): Replace use of ++ UNSPEC_VSET_LANE with calls to appropriate gen_neon_vset_lane. ++ * config/arm/neon.md (UNSPEC_VCOMBINE): Delete. ++ (UNSPEC_VSET_LANE): Delete. ++ (vec_set_internal): Make code emitted match that for the ++ corresponding intrinsics. ++ (neon_vset_lane): Expand into vec_set_internal instead ++ of using UNSPEC_VSET_LANE. ++ (neon_vcombine): Rewrite pattern to eliminate UNPSEC_VCOMBINE. ++ ++2009-12-18 Maciej W. Rozycki ++ ++ libiberty/ ++ * pex-common.c (pex_read_err): Set stderr_pipe to -1 if a ++ corresponding stream has been opened. ++ (pex_free): Close pipe file descriptors corresponding to child's ++ stdout and stderr before waiting. ++ ++2009-12-17 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ * config/arm/neon.md (UNSPEC_VGET_HIGH, UNSPEC_VGET_LOW): Delete. ++ (neon_vget_high): Replace with.... ++ (neon_vget_highv16qi): New pattern using canonical RTL. ++ (neon_vget_highv8hi): Likewise. ++ (neon_vget_highv4si): Likewise. ++ (neon_vget_highv4sf): Likewise. ++ (neon_vget_highv2di): Likewise. ++ (neon_vget_low): Replace with.... ++ (neon_vget_lowv16qi): New pattern using canonical RTL. ++ (neon_vget_lowv8hi): Likewise. ++ (neon_vget_lowv4si): Likewise. ++ (neon_vget_lowv4sf): Likewise. ++ (neon_vget_lowv2di): Likewise. ++ ++2009-12-15 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ ++ * config/arm/neon.md (UNSPEC_VGET_LANE): Delete. ++ (vec_extractv2di): Correct error in register numbering. ++ Copy assembly pattern from neon_vget_lanev2di. ++ (neon_vget_lanedi): Rewrite to expand into emit_move_insn. ++ (neon_vget_lanev2di): Rewrite to expand into vec_extractv2di. ++ (neon_vset_lanedi): Rewrite to expand into emit_move_insn. ++ * config/arm/neon.ml (Vget_lane): Add No_op attribute to 64-bit ++ scalar variants to suppress test for this emitting vmov. ++ (Vset_lane): Likewise. ++ * doc/arm-neon-intrinsics.texi: Regenerated. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon/vget_lanes64.c: Regenerated. ++ * gcc.target/arm/neon/vget_laneu64.c: Regenerated. ++ * gcc.target/arm/neon/vset_lanes64.c: Regenerated. ++ * gcc.target/arm/neon/vset_laneu64.c: Regenerated. ++ * gcc.target/arm/neon-vget_lanes64.c: New execution test. ++ * gcc.target/arm/neon-vget_laneu64.c: New execution test. ++ * gcc.target/arm/neon-vset_lanes64.c: New execution test. ++ * gcc.target/arm/neon-vset_laneu64.c: New execution test. ++ ++2009-12-11 Maxim Kuvyrkov ++ ++ Issue #4955 ++ Backport from upstream: ++ ++ 2009-12-11 Sebastian Andrzej Siewior ++ PR target/36047 ++ * config/m68k/linux.h: Remove LABELNO from the mcount statement. It is ++ not used by glibc/uclibc and does not work with large binaries. ++ ++2009-12-10 Andrew Jenner ++ ++ gcc/ ++ * java/Make-lang.in (java.install-html): Add. ++ * objc/Make-lang.in (objc.install-html): Add. ++ * objcp/Make-lang.in (obj-c++.insatll-html): Add. ++ * cp/Make-lang.in (c++.install-html): Add. ++ * ada/gcc-interface/Make-lang.in (ada.install-html): Add. ++ * fortran/Make-lang.in: Update comment. ++ ++2009-12-10 Pedro Alves ++ ++ gcc/ ++ * config/arm/mingw32.h (FORTRAN_INIT): Define. ++ ++ revert: ++ 2009-12-07 Andrew Jenner ++ gcc/ ++ * fortran/gfortranspec.c (lang_specific_driver): Add -lmingw32 to ++ -lgfortranbegin group for CE. ++ ++2009-12-10 Andrew Jenner ++ ++ libgfortran/ ++ * io/read.c: Use HAVE_ERRNO_H instead of HAVE_ERRNO. ++ ++2009-12-10 Julian Brown ++ ++ Issue #7318 ++ ++ * release-notes-csl.xml (Indirect function call optimization): Add ++ note. ++ ++ gcc/ ++ * config/arm/arm.c (output_call_mem): Remove armv5 support. ++ * config/arm/arm.md (*call_mem): Disable for armv5. Add note. ++ (*call_value_mem): Likewise. ++ ++2009-12-08 Sandra Loosemore ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-08-24 Ramana Radhakrishnan ++ ++ * config/arm/neon.md (vashl3): Rename from ashl3. ++ (vashr3): Rename from ashr3. ++ (vlshr3): Rename from lshr3. ++ ++2009-12-08 Julian Brown ++ ++ Issue #6846 ++ ++ Backport from mainline: ++ ++ gcc/ ++ * config/arm/constraints.md (Ps, Pt): New constraint letters. ++ * config/arm/thumb2.md (*thumb2_addsi_short): Tighten constraints. ++ ++2009-12-09 Andrew Jenner ++ ++ gcc/ ++ * configure.ac: Add install-html to target_list for Make-hooks. ++ * configure: Regenerate. ++ * fortran/Make-lang.in (F95_HTMLFILES): New. ++ (fortran.html): Use it. ++ (fortran.install-html): New. ++ * Makefile.in (install-html): Add lang.install-html. ++ ++2009-12-08 Nathan Froyd ++ ++ * release-notes-csl.xml: Fix duplicate UUID. ++ ++2009-12-08 Nathan Froyd ++ ++ Issue #7244 ++ ++ * release-notes-csl.xml: New note. ++ ++ gcc/ ++ * tree-ssa-loop-promote.c (phi_nodes_to_promote): New variable. ++ (pli_cleanup): Free phi_nodes_to_promote if necessary. ++ (promote_short_indices): Allocate phi_nodes_to_promote. Traverse it. ++ (rebuild_with_promotion): Add the phi node to phi_nodes_to_promote. ++ Move the promotion logic... ++ (promote_phi_node): ...here. New function. ++ ++ gcc/testsuite/ ++ * gcc.dg/promote-short-11.c: New file. ++ * gcc.dg/promote-short-12.c: New file. ++ ++2009-12-07 Andrew Jenner ++ ++ libgfortran/ ++ * io/unix.c (id_from_fd) [__MINGW32CE__]: Don't use _get_osfhandle. ++ (fd_to_stream) [__MINGW32CE__]: Don't use fstat or isatty. ++ (sstream_isatty) [__MINGW32CE__]: Don't use isatty. ++ ++2009-12-07 Andrew Jenner ++ ++ gcc/ ++ * fortran/gfortranspec.c (lang_specific_driver): Add -lmingw32 to ++ -lgfortranbegin group for CE. ++ ++2009-12-03 Pedro Alves ++ ++ Windows CE port. ++ ++ libgfortran/ ++ * intrinsics/access.c: Don't include errno.h. ++ (access_func): Use get_oserrno. ++ * intrinsics/chdir.c, intrinsics/chmod.c: Only include errno.h if ++ HAVE_ERRNO_H. ++ * intrinsics/gerror.c: Only include errno.h if HAVE_ERRNO_H. ++ (gerror): Always build. Constify local `p'. Use get_oserror ++ instead of strerror. ++ * intrinsics/getcwd.c: Only include errno.h if HAVE_ERRNO_H. ++ * intrinsics/hostnm.c: Only include errno.h if HAVE_ERRNO_H. ++ (w32_gethostname) [__MINGW32CE__]: New. ++ (hostnm_i4_sub): Use get_oserrno. ++ * intrinsics/ierrno.c: Don't include errno.h. ++ (ierrno_i4, ierrno_i8): Use get_oserrno. ++ * intrinsics/kill.c: Only include errno.h if HAVE_ERRNO_H. ++ * intrinsics/link.c: Only include errno.h if HAVE_ERRNO_H. ++ * intrinsics/perror.c: Only include errno.h if HAVE_ERRNO_H. ++ (pwinerror) [__MINGW32CE__]: Declare. ++ (perror, HAVE_PERROR) [__MINGW32CE__]: Define. ++ * intrinsics/rename.c: Only include errno.h if HAVE_ERRNO_H. ++ (rename_i4_sub, rename_i8_sub): Use get_oserrno. ++ * intrinsics/signal.c: Only include errno.h if HAVE_ERRNO_H. ++ [__MINGW32CE__]: Include . ++ (not_supported): New function. ++ (signal_sub): Use `not_supported'. Add __attribute__((unused)) ++ markers to parameters. ++ (signal_sub_int, alarm_sub_i4, alarm_sub_i8, alarm_sub_int_i4) ++ (alarm_sub_int_i8): Ditto. ++ * intrinsics/sleep.c: Don't include errno.h. ++ * intrinsics/stat.c: Don't include errno.h. ++ (stat_i4_sub_0, stat_i8_sub_0, fstat_i4_sub, fstat_i8_sub): Use ++ get_oserrno. ++ * intrinsics/symlnk.c: Only include errno.h if HAVE_ERRNO_H. ++ * intrinsics/unlink.c: Don't include errno.h. ++ (unlink_i4_sub): Use get_oserrno. ++ * intrinsics/env.cd (getenv) ++ (get_environment_variable_i4) [__MINGW32CE__]: Always NULL. ++ * intrinsics/getXid.c: Include windows.h instead of process.h. ++ (getpid) [__MINGW32CE__]: Use GetCurrentProcessId. ++ * intrinsics/getlog.c: Don't define WIN32_LEAN_AND_MEAN. Include ++ malloc.h. ++ (EXTENDED_NAME_FORMAT): New typedef. ++ (ce_GetUserNameA): New function. ++ (GetUserName): New define. ++ * intrinsics/system.c [__MINGW32CE__]: Include windows.h. ++ (system_sub) [__MINGW32CE__]: Return not-supported. ++ * intrinsics/umask.c (ce_umask) [__MINGW32CE__]: New function. ++ (umask): New define. ++ ++ * io/open.c: Only include errno.h if HAVE_ERRNO_H. ++ [__MINGW32CE__]: Include . ++ (new_unit) [__MINGW32CE__]: Add error handling based on ++ GetLastError. ++ * io/read.c: Only include errno.h if HAVE_ERRNO_H. ++ [__MINGW32CE__]: Include . ++ (convert_real) [__MINGW32CE__]: Use SetLastError/GetLastError. ++ * io/transfer.c: Don't include errno.h. ++ (next_record_r): Use clear_oserrno, get_oserrno. ++ * io/unix.c: Only include errno.h if HAVE_ERRNO_H. ++ (id_from_path) [__MINGW32CE__]: Handle UNICODE. ++ (GFC_STDOUT_FILENO, GFC_STDERR_FILENO, GFC_STDIN_FILENO): New. ++ (flush_if_preconnected): Use them. ++ (COUNTOF): Define. ++ (strwinerror, pwinerror): New functions. ++ (get_oserror) [__MINGW32CE__]: Use strwinerror. ++ (get_oserrno): New function. ++ (clear_oserrno): New function. ++ (raw_write): Check if EINTR is defined. ++ (raw_close): Use GFC_STDOUT_FILENO, GFC_STDERR_FILENO and ++ GFC_STDIN_FILENO. ++ (buf_seek, mem_seek) [__MINGW32CE__]: Use SetLastError. ++ (fd_to_stream): Use GFC_STDOUT_FILENO, GFC_STDERR_FILENO and ++ GFC_STDIN_FILENO. ++ (ce_mktemp): New function. ++ (mktemp) [__MINGW32CE__]: Define to ce_mktemp. ++ (tempfile) [__MINGW32CE__]: Don't reference getenv. Use ++ GetLastError. ++ (regular_file) [__MINGW32CE__]: Use GetLastError/SetLastError. ++ (open_external): Use GFC_STDIN_FILENO. ++ (setmode, HAVE_SETMODE) [__MINGW32CE__]: Define. ++ (_setmode) [__MINGW32CE__]: Declare. ++ (output_stream): Use GFC_STDOUT_FILENO. ++ (error_stream): Use GFC_STDERR_FILENO. ++ (st_vprintf): : Use GFC_STDOUT_FILENO and GFC_STDERR_FILENO. ++ (delete_file) [__MINGW32CE__]: Use SetLastError. ++ * io/write.c: Only include errno.h if HAVE_ERRNO_H. ++ (write_a_char4): Cast crlf to gfc_char4_t *. ++ * io/write_float.def (signbit) [__MINGW32CE__]: Define. ++ ++ * runtime/error.c: Don't include errno.h. ++ (generate_error): Use get_oserrno. ++ * runtime/environ.c (ce_getenv) [__MINGW32CE__]: New function. ++ (getenv) [__MINGW32CE__]: New define. ++ * runtime/main.c (store_exe_path): Constify `cwd'. ++ ++ * libgfortran.h (get_oserrno, clear_oserrno): Declare. ++ ++ * configure.ac: Add check for errno.h. ++ * configure, config.h.in: Regenerate. ++ ++2009-12-03 Pedro Alves ++ ++ * configure.ac (arm*-*-mingw32*): New. Skip target-libiberty. ++ * configure: Regenerate. ++ ++2009-12-03 Andrew Jenner ++ ++ gcc/ ++ * config/arm/arm.c (TARGET_ASM_UNALIGNED_HI_OP): Define. ++ (TARGET_ASM_UNALIGNED_SI_OP): Define. ++ (TARGET_ASM_UNALIGNED_DI_OP): Define. ++ (TARGET_ASM_UNALIGNED_TI_OP): Define. ++ * config/arm/wince-pe.h: Enable dwarf debugging info. ++ ++2009-11-23 Nathan Sidwell ++ ++ Issue 1080. Fix for non C/C++ ++ gcc/ ++ * targhooks.c: Include convert.h. ++ (hook_cxx_ttype_ref_in_bit0): Rewrite to avoid using C frontend ++ routines. ++ ++2009-11-18 Daniel Jacobowitz ++ ++ Issue #6609 ++ ++ Backport from upstream: ++ ++ gcc/ ++ 2009-11-18 Daniel Jacobowitz ++ ++ * config/arm/neon-docgen.ml (analyze_shape_elt): Handle ++ Alternatives. ++ ++ gcc/ ++ 2009-11-11 Daniel Jacobowitz ++ ++ * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New. ++ (neon_expand_vector_init): Use them. Also handle non-constant ++ vectors with identical elements and vectors with only one ++ non-constant element. ++ (arm_print_operand): Handle 'y' modifier. ++ * config/arm/arm-protos.h (neon_make_constant): Declare. ++ * config/arm/neon.md (neon_vdup_n): Split into two ++ patterns. Use VX instead of VDQW for the first one. Allow ++ a VFP alternative and V32 modes for the second one. ++ * config/arm/neon.ml (shape_elt): Add Alternatives. ++ (ops): Use Alternatives for vdup lane instructions. ++ * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives. ++ * config/arm/vec-common.md (mov): Use neon_make_constant. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon: Regenerate generated tests. ++ ++2009-11-18 Sandra Loosemore ++ ++ Issue #6964 ++ ++ gcc/ ++ * config/arm/neon.md (UNSPEC_VABA): Delete. ++ (UNSPEC_VABAL): Delete. ++ (UNSPEC_VABS): Delete. ++ (UNSPEC_VABAL): Delete. ++ (UNSPEC_VAND): Delete. ++ (UNSPEC_VBIC): Delete. ++ (UNSPEC_VCLZ): Delete. ++ (UNSPEC_VCNT): Delete. ++ (UNSPEC_VDUP_N): Delete. ++ (UNSPEC_VEOR): Delete. ++ (UNSPEC_VMVN): Delete. ++ (UNSPEC_VORN): Delete. ++ (UNSPEC_VORR): Delete. ++ (iordi3_neon): Rewrite RTL without unspec. Add cases to handle ++ core registers too, to make this a replacement for the default. ++ (anddi3_neon): Likewise. ++ (orndi3_neon): Likewise. ++ (bicdi3_neon): Likewise. ++ (xordi3_neon): Likewise. ++ (neon_vabs): Rewrite as define_expand to get rid of unspec for ++ extra operand. ++ (neon_vaba): Rewrite to get rid of UNSPEC_VABA. ++ (neon_vabal): Rewrite to get rid of UNSPEC_VABAL. ++ (neon_vclz): Rewrite as define_expand and clz2 to get ++ rid of unspec and handle unused operand. ++ (neon_vcnt): Similarly, with popcount2. ++ (neon_vdup_n): Rewrite RTL without unspec. ++ (neon_vdup_ndi): Rewrite as define_expand and use emit_move_insn. ++ (neon_vdup_nv2di): Rewrite RTL without unspec. ++ * config/arm/arm.md (define_split for logical_binary_operator): ++ Disable for NEON registers. ++ (anddi3): Add new define_expand, and rename the insn. Disable ++ this insn for NEON. ++ (*anddi_notdi_di): Disable for TARGET_NEON, where bicdi3_neon applies. ++ (iordi3): As for anddi3. ++ (xordi3): Likewise. ++ * config/arm/predicates.md (imm_for_neon_logic_operand): ++ Require TARGET_NEON. ++ (imm_for_neon_inv_logic_operand): Likewise. ++ * config/arm/neon.ml (Vdup_n): Add No_op attribute to suppress test ++ for this emitting vmov. ++ (Vmov_n): Likewise. ++ * doc/arm-neon-intrinsics.texi: Regenerated. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon/vdup_ns64.c: Regenerated. ++ * gcc.target/arm/neon/vdup_nu64.c: Regenerated. ++ * gcc.target/arm/neon/vmov_ns64.c: Regenerated. ++ * gcc.target/arm/neon/vmov_nu64.c: Regenerated. ++ * gcc.target/arm/neon-vdup_ns64.c: New execution test. ++ * gcc.target/arm/neon-vdup_nu64.c: New execution test. ++ * gcc.target/arm/neon-vmov_ns64.c: New execution test. ++ * gcc.target/arm/neon-vmov_nu64.c: New execution test. ++ ++2009-11-11 Daniel Jacobowitz ++ ++ gcc/ ++ * config/arm/neon.md (*movmisalign_neon_load): Use ++ memory_operand. ++ ++2009-11-12 Andrew Jenner ++ ++ libgcc/ ++ * config.host: Handle arm*-*-mingw32ce* and arm*-*-cegcc*. ++ ++ gcc/ ++ * gthr-win32.h: Don't use errno.h or EINVAL under CE. ++ * config.gcc: Cleanup. Don't put msformat-c.o in src directory. ++ * config/i386/gthr-win32.c: Don't use 486 lock primitive or EINVAL ++ under CE. ++ * config/arm/pe-cxx.c: Update copyright message. ++ * config/arm/pe-stubs.c: Likewise. ++ * config/arm/t-mingw32: New file. ++ * config/arm/arm-protos.h (arm_major_arch): Declare. ++ (arm_thumb_arch_p): Declare. ++ (arm_pe_adjust_class_at_definition): Declare. ++ (arm_pe_type_dllimport_p): Declare. ++ (arm_pe_type_dllexport_p): Declare. ++ * config/arm/cygming.opt: Update copyright message. ++ * config/arm/wince-pe.h (FPUTYPE_DEFAULT): Change to "vfp". ++ Don't use DWARF2 debug information. ++ (TARGET_DEFAULT): Remove MASK_RETURN_AGGREGATES_IN_MEMORY. ++ * config/arm/mingw32.h: Update copyright message. ++ (STANDARD_INCLUDE_DIR): Define. ++ Include windows.h in libgcc2. ++ * config/arm/msformat-c.c: New file (copied from config/i386). ++ * tsystem.h: Don't use errno.h under CE. ++ ++2009-11-11 Julian Brown ++ ++ * release-notes-csl.xml (Internal compiler error fix): Add note for ++ #7000 fix. ++ ++2009-11-11 Julian Brown ++ ++ Issue #7000 ++ ++ gcc/ ++ * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2 ++ reloads to LO_REGS. ++ ++2009-11-11 Julian Brown ++ ++ gcc/ ++ * config/arm/thumb2.md (*thumb2_movdf_soft_insn): Fix pool ranges. ++ ++2009-11-10 Andrew Jenner ++ ++ NOT ASSIGNED TO FSF ++ Ported from CEGCC ++ ++ gcc/ ++ * config.gcc: Add arm-*-mingw32* from CEGCC. ++ * config/arm/pe-cxx.c: New file. ++ * config/arm/arm.c: Copied from CEGCC. ++ * config/arm/pe-stubs.c: New file. ++ * config/arm/wince-pe.h: Copied from CEGCC. ++ * config/arm/cygming.opt: New file. ++ * config/arm/t-cygming: New file. ++ * config/arm/mingw32.h: New file. ++ * config/arm/pe.opt: Copied from CEGCC. ++ * config/arm/t-wince-pe: Copied from CEGCC. ++ ++2009-11-05 Maxim Kuvyrkov ++ ++ gcc/testsuite/ ++ * gcc.target/m68k/pr41302.c: Fix target triplet. ++ ++2009-11-03 Maxim Kuvyrkov ++ ++ Revert: ++ ++ 2009-09-09 Maxim Kuvyrkov ++ gcc/ ++ * config/m68k/m68k.h (TRANSFER_FROM_TRAMPOLINE): Avoid warning. ++ ++2009-11-01 Daniel Gutson ++ ++ gcc/testsuite/ ++ * g++.dg/warn/miss-format-1.C: Updated line number. ++ ++2009-11-01 Maxim Kuvyrkov ++ Carlos O'Donell ++ ++ Issue #6954 ++ PR target/41302 ++ ++ * release-notes-csl.xml: Add release note. ++ ++ gcc/ ++ * config/m68k/m68k.c (m68k_reg_present_p): New static function. ++ (m68k_ok_for_sibcall_p): Handle different result return locations. ++ ++ gcc/testsuite/ ++ * gcc.target/m68k/pr41302.c: New test. ++ ++2009-10-29 Paul Brook ++ ++ Issue #6654 ++ gcc/ ++ * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special ++ case for noreturn functions. ++ (arm_compute_save_reg_mask): Remove special noreturn handling. ++ ++2009-10-28 Andrew Stubbs ++ ++ gcc/ ++ * config/sh/sh.md (movrt): Use SI mode for if_then_else. ++ ++2009-10-25 Maxim Kuvyrkov ++ ++ gcc/ ++ * t-eglibc (EGLIBC_AWK): Handle empty list of configs. ++ ++2009-10-21 Joseph Myers ++ ++ Issue #6815 ++ ++ gcc/ ++ * config/sh/uclinux.h (SUBTARGET_OVERRIDE_OPTIONS): Define. ++ ++2009-10-21 Joseph Myers ++ ++ Issue #6814 ++ ++ gcc/ ++ * config/sh/sh.md (tls_global_dynamic, tls_local_dynamic, ++ tls_initial_exec): Don't initialize PIC register here. ++ * config/sh/sh.c (prepare_move_operands): Initialize PIC register ++ here before generating those insns. ++ ++2009-10-21 Joseph Myers ++ ++ Issue #6814 ++ ++ Backport: ++ ++ gcc/ ++ 2009-10-21 Joseph Myers ++ ++ * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF. ++ ++ gcc/testsuite/ ++ 2009-10-21 Joseph Myers ++ ++ * gcc.dg/tls/pie-1.c: New test. ++ ++2009-10-19 Maxim Kuvyrkov ++ ++ gcc/testsuite/ ++ * g++.dg/torture/pr36191.C: Don't run with -fomit-frame-pointer on ++ m68k and fido. ++ ++2009-10-16 Nathan Froyd ++ ++ Issue #6828 ++ ++ gcc/testsuite/ ++ * gcc.dg/remove-local-statics-17.c: Change asm to be empty. ++ Change scan-tree-dump-times text to look for number of variables ++ removed. ++ ++2009-10-16 Julian Brown ++ ++ Issue #6842 ++ ++ gcc/ ++ * config/arm/thumb2.md (thumb2_addsi_short): Change length to 4. ++ ++2009-10-15 Joseph Myers ++ ++ Issue #6813 ++ ++ gcc/ ++ * config/sh/sh.c (sh_our_fdpic_reg): New. ++ * config/sh/sh-protos.h (sh_our_fdpic_reg): Declare. ++ * config/sh/sh.h (OUR_FDPIC_REG): Define in terms of ++ sh_our_fdpic_reg. ++ ++2009-10-15 Joseph Myers ++ ++ gcc/ ++ * ira.c (setup_eliminable_regset): Remove unused variable ++ regs_asm_clobbered. ++ ++2009-10-13 Joseph Myers ++ ++ Merge from FDPIC branch: ++ ++ 2008-06-12 Daniel Jacobowitz ++ ++ libgcc/ ++ * config.host (sh*-*-uclinux*): Add t-uclinux-fdpic. ++ * config/sh/t-uclinux-fdpic: New file. ++ ++ gcc/ ++ * config.gcc (sh*-*-uclinux*): Use t-slibgcc-elf-ver. ++ * config/sh/lib1funcs.asm (set_fpscr): Handle FDPIC. ++ * config/sh/t-uclinux (CRTSTUFF_T_CFLAGS_S): Set. ++ (EXTRA_MULTILIB_PARTS): Add crtbeginS.o crtendS.o crtbeginT.o. ++ * config/sh/uclinux.h (STARTFILE_SPEC, ENDFILE_SPEC): Update ++ for shared libraries. ++ (LINK_EH_SPEC): Define. ++ ++ 2008-06-12 Daniel Jacobowitz ++ ++ gcc/ ++ * config/sh/sh-protos.h (function_symbol): Update prototype. ++ * config/sh/constraints.md: Add Ccl constraint. ++ ++ * config/sh/lib1funcs.asm, config/sh/lib1funcs-4-300.asm, ++ config/sh/lib1funcs-Os-4-200.asm: Revert FDPIC hidden symbols. ++ ++ * config/sh/sh.c (sh_reloc_rw_mask): New function. ++ (TARGET_ASM_RELOC_RW_MASK): Define. ++ (expand_block_move, expand_ashiftrt, sh_expand_prologue) ++ (sh_expand_epilogue, sh_initialize_trampoline): Update for ++ function_symbol change. ++ (function_symbol): Take a fourth argument. Use the GOT for ++ FDPIC and SFUNC_GOT. Use PC-relative calls for FDPIC and ++ SFUNC_STATIC. ++ * config/sh/sh.md: Update patterns affected by function_symbol ++ change. ++ ++ 2008-05-22 Daniel Jacobowitz ++ ++ gcc/ ++ * config/sh/sh.h (TARGET_CPU_CPP_BUILTINS): Define __FDPIC__. ++ ++ 2008-04-23 Joseph Myers ++ ++ gcc/ ++ * sh.c (sh_load_function_descriptor): New. ++ * sh-protos.h (sh_load_function_descriptor): Declare. ++ * sh.md (calli, call_valuei, sibcalli, sibcall_valuei): Disable ++ for FDPIC. ++ (calli_fdpic, call_valuei_fdpic, sibcalli_fdpic, ++ sibcall_valuei_fdpic): New. ++ (call, call_value, sibcall, sibcall_value): Call ++ sh_load_function_descriptor and use new insns for FDPIC. ++ ++ 2008-04-23 Joseph Myers ++ ++ gcc/ ++ * config/sh/sh.c (legitimize_pic_address): Don't use @GOTOFF for ++ readonly data or code on FDPIC. ++ ++ 2008-04-22 Joseph Myers ++ ++ gcc/ ++ * config/sh/sh.c (function_symbol): Add comment. Treat SFUNC_GOT ++ like SFUNC_STATIC for FDPIC. Treat FDPIC like PIC. ++ * config/sh/lib1funcs.asm (sdivsi3, udivsi3_i4i, sdivsi3_i4i): ++ Make hidden. ++ * config/sh/lib1funcs-4-300.asm (udivsi3_i4i, sdivsi3_i4i): Make ++ hidden. ++ * config/sh/lib1funcs-Os-4-200.asm (udivsi3_i4i, sdivsi3_i4i): ++ Make hidden. ++ ++ 2008-04-22 Joseph Myers ++ ++ gcc/ ++ * config/sh/sh.c (sh_output_mi_thunk): Use PC-relative call for ++ FDPIC. ++ ++ 2008-04-21 Joseph Myers ++ ++ gcc/ ++ * config/sh/sh.c (sh_assemble_integer): New. ++ (TARGET_ASM_INTEGER): Define. ++ (prepare_move_operands): Legitimize PIC addresses for FDPIC. ++ (nonpic_symbol_mentioned_p): Handle UNSPEC_GOTFUNCDESC and ++ UNSPEC_GOTOFFFUNCDESC. ++ (legitimize_pic_address): Use GOTOFFFUNCDESC and GOTFUNCDESC for ++ function symbols for FDPIC. ++ (sh_illegitimate_symbolic_constant_p): Require constants to ++ satisfy LEGITIMATE_PIC_OPERAND_P for FDPIC. ++ * config/sh/sh.h (OUTPUT_ADDR_CONST_EXTRA): Handle ++ UNSPEC_GOTFUNCDESC and UNSPEC_GOTOFFFUNCDESC. ++ * config/sh/sh.md (UNSPEC_GOTFUNCDESC, UNSPEC_GOTOFFFUNCDESC, ++ sym2GOTFUNCDESC, symGOTFUNCDESC2reg, sym2GOTOFFFUNCDESC, ++ symGOTOFFFUNCDESC2reg): New. ++ ++ 2008-04-21 Joseph Myers ++ ++ gcc/ ++ Revert: ++ * config/sh/sh.md (call_pcrel, call_value_pcrel): Don't always ++ require PLT entries for FDPIC without PIC. ++ ++ 2008-04-21 Joseph Myers ++ ++ gcc/ ++ * config/sh/sh.c (sh_cannot_copy_insn_p): Don't return false up ++ front for FDPIC. ++ (sh_expand_prologue): Don't generate GOTaddr2picreg instruction ++ for FDPIC. ++ * config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Also set ++ call_really_used_regs[PIC_REG] for FDPIC. ++ (override_options): Disallow non-SH2 FDPIC. Set ++ flag_no_function_cse for FDPIC. ++ (OUR_FDPIC_REG): Define. ++ * config/sh/sh.md (call_pcrel, call_value_pcrel): Don't always ++ require PLT entries for FDPIC without PIC. ++ (call, call_value, sibcall, sibcall_value): Load PIC register and ++ use PC-relative calls for FDPIC. ++ (GOTaddr2picreg, symGOT_load, symGOTOFF2reg, tls_global_dynamic, ++ tls_local_dynamic, tls_initial_exec): Load PIC register for FDPIC. ++ ++ 2008-04-14 Joseph Myers ++ ++ gcc/ ++ * doc/tm.texi (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Document to ++ be zero or nonzero. ++ * defaults.h (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Define. ++ * df-scan.c (df_get_exit_block_use_set), regclass.c ++ (init_reg_sets_1), rtlanal.c (rtx_unstable_p, rtx_varies_p): ++ Handle new PIC_OFFSET_TABLE_REG_CALL_CLOBBERED semantics. ++ * config/ia64/ia64.h (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Define ++ to 1. ++ * config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Mark PIC_REG as ++ fixed and call-used for FDPIC. ++ (PIC_OFFSET_TABLE_REG_CALL_CLOBBERED): Define. ++ ++ 2008-04-14 Joseph Myers ++ ++ gcc/ ++ * config/sh/uclinux.h (SUBTARGET_ASM_SPEC): Undefine before ++ defining. ++ ++ 2008-04-14 Joseph Myers ++ ++ gcc/ ++ * config/sh/uclinux.h (SUBTARGET_ASM_SPEC): Define if ++ FDPIC_DEFAULT. ++ ++ 2008-04-14 Joseph Myers ++ ++ gcc/ ++ * doc/invoke.texi (SH Options): Document -mfdpic. ++ * doc/install.texi (--enable-fdpic): Document. ++ * config.gcc (sh*-*-uclinux*): Handle --enable-fdpic. ++ * config/sh/sh.opt (mfdpic): New option. ++ * config/sh/sh.h (TARGET_CPU_CPP_BUILTINS): Define __SH_FDPIC__ ++ for FDPIC. ++ (DRIVER_SELF_SPECS): Use SUBTARGET_DRIVER_SELF_SPECS. ++ (SUBTARGET_DRIVER_SELF_SPECS): Define. ++ * config/sh/uclinux.h (SUBTARGET_LINK_SPEC, ++ SUBTARGET_LINK_EMUL_SUFFIX): Define differently if FDPIC_DEFAULT. ++ (SUBTARGET_DRIVER_SELF_SPECS): Define if FDPIC_DEFAULT. ++ ++ 2008-04-02 Mark Shinwell ++ Daniel Jacobowitz ++ ++ Update sh-uclinux port from GCC 4.1 branch. ++ ++ libgcc/ ++ * config.host: Handle sh-*-uclinux* | sh[12]-*-uclinux*. ++ ++ gcc/testsuite/ ++ * gcc.target/sh/sh-relax.c: XFAIL for uClinux. ++ ++ gcc/ ++ * config.gcc: Handle sh-*-uclinux* | sh[12]-*-uclinux*. ++ * config/sh/sh-protos.h (sh_illegitimate_symbolic_constant_p): Declare. ++ * config/sh/t-sh: Use MULTILIB_CFLAGS for unwind-dw2-Os-4-200.o. ++ * config/sh/t-uclinux: New file. ++ * config/sh/sh.c (TARGET_CANNOT_FORCE_CONST_MEM): Define. ++ (prepare_move_operands): Handle SH_OFFSETS_MUST_BE_WITHIN_SECTIONS_P. ++ (sh_illegitimate_symbolic_constant_p): New function. ++ * config/sh/sh.h (SH_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define. ++ (LEGITIMATE_CONSTANT_P): Use sh_illegitimate_symbolic_constant_p. ++ * config/sh/uclinux.h: New file. ++ ++2009-10-12 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * config/arm/t-arm-elf (MULTILIB_MATCHES): Rename tag13 to armv7em. ++ * config/arm/t-cs-eabi (MULTILIB_MATCHES): Ditto. ++ * config/arm/t-cs-eabi-lite (MULTILIB_MATCHES): Ditto. ++ * config/arm/t-cs-uclinux-eabi (MULTILIB_MATCHES): Ditto. ++ * config/arm/t-cs-linux-lite (MULTILIB_MATCHES): Ditto. ++ ++2009-10-12 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * config.gcc: Add ARM --with-fpu=vfpv3-d16-fp16. ++ * config/arm/arm.c (FL_FOR_ARCHTAG13, arm_arch_tag13): Remove. ++ (FL_FOR_ARCH7EM, arm_arch7em): Define. ++ (all_architectures): Rename tag13 to armv7e-m. ++ (all_fpus): Add fpv4-sp-d16. ++ (arm_override_options): Use new names. ++ * config/arm/arm.h (arm_arch_tag13): Rename ... ++ (arm_arch7em): ... to this. ++ ++2009-10-13 Nathan Froyd ++ ++ Issue #6706 ++ ++ * release-notes-csl.xml (Optimizer bug fix): New note. ++ ++ gcc/ ++ * tree-ssa-loop-promote.c (insert_along_edge): New function. ++ (promote_variable_1): Move code for modifying GIMPLE_PHI ++ statements... ++ (rebuild_with_promotion): ...here. Rebuild GIMPLE_PHI statements. ++ (promote_variable_1): Only rewrite uses of promotable variables. ++ ++2009-10-12 Nathan Froyd ++ ++ Issue #6643 ++ ++ * release-notes-csl.xml: New note. ++ ++ gcc/ ++ * tree-ssa-remove-local-statics.c ++ (find_static_nonvolatile_declarations): Don't try to find definitions ++ in GIMPLE_ASM statements. ++ ++ gcc/testsuite/ ++ * gcc.dg/remove-local-statics-17.c: New test. ++ ++2009-10-12 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * config/arm/t-cs-eabi (MULTILIB_MATCHES): Add cortex-a5 and ++ neon-vfpv4. ++ * config/arm/t-cs-eabi-lite (MULTILIB_MATCHES): Add cortex-a5. ++ * config/arm/t-cs-linux (MULTILIB_MATCHES): Add cortex-a5 and ++ neon-vfpv4. ++ * config/arm/t-cs-uclinux-eabi (MULTILIB_MATCHES): Add cortex-a5. ++ * config/arm/t-cs-linux-lite (MULTILIB_MATCHES): Add cortex-a5. ++ ++2009-10-12 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * doc/invoke.texi: Document ARM -mcpu=cortex-a8. ++ * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5. ++ * config/arm/arm-cores.def: Add cortex-a5. ++ * config/arm/arm-tune.md: Regenerate. ++ ++2009-10-12 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove. ++ (arm_fpu_attr, arm_fpu_desc): Define. ++ (all_fpus): Add FPU information. Remove enums. ++ (fp_model_for_fpu): Remove. ++ (arm_override_options): Always lookup FPU by name. Set arm_fpu_attr. ++ (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2. ++ (arm_file_start): Use new FPU lookup table data. ++ * config/arm/arm.h (TARGET_FPA_EMU2): Define. ++ (TARGET_VFPD32, TARGET_VFP3, TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE, ++ TARGET_NEON_FP16, TARGET_FP16, TARGET_NEON): Use arm_arch_vfp_*. ++ (enum fputype, arm_fpu_tune): Remove. ++ (vfp_reg_type, arm_fpu_desc): Define. ++ (arm_arch_vfp_rev, arm_arch_vfp_regs, arm_arch_vfp_neon, ++ arm_arch_vfp_fp16): Define. ++ * config/arm/arm.md (fpu): Remove superfluous entries. ++ * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2. ++ * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Update. ++ * config/arm/bpabi.h (FPUTYPE_DEFAULT): Update. ++ * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Update. ++ * config/arm/vxworks.h (FPUTYPE_DEFAULT): Update. ++ * doc/invoke.texi: Document ARM VFPv4 FPU options. ++ * config.gcc: Add ARM VFPv4 --with-fpu options. ++ ++2009-10-11 Sandra Loosemore ++ ++ * release-notes-csl.xml (NEON improvements): New note, merged ++ from 4 old ones. ++ (Thumb-2 NEON bug fix): Delete. ++ (NEON store improvements): Delete. ++ (NEON vectorizer improvements): Delete. ++ (ARMv5 multilib improvements): Tweak wording. ++ (GCC NEON vector shift bug fix): Delete. ++ ++2009-10-11 Daniel Jacobowitz ++ ++ Issue #6429 - GDB test failures on ColdFire ++ ++ * release-notes-csl.xml (Stack unwinding bug fix): New note. ++ ++ gcc/ ++ * dwarf2out.c (dwarf2out_frame_debug): Check for queued saves ++ again after processing insn. ++ ++2009-10-10 Joseph Myers ++ ++ Issue #6756 ++ ++ * config/arm/neon.md (*movmisalign_neon): Split into ++ *movmisalign_neon_store and *movmisalign_neon_load. ++ Narrow predicates. ++ ++2009-10-09 Sandra Loosemore ++ ++ * release-notes-csl.xml (Compiler errors with float32_t): ++ Rephrase to avoid bad line break. ++ ++2009-10-09 Joseph Myers ++ ++ Issue #6297 ++ ++ gcc/ ++ * config/arm/t-cs-linux (MULTILIB_ALIASES): Don't map Thumb-2 NEON ++ to another library. ++ (MULTILIB_OSDIRNAMES): Add entry for Thumb-2 NEON. ++ ++2009-10-09 Joseph Myers ++ ++ gcc/ ++ * config/arm/arm.c (output_move_neon): Use DImode in call to ++ adjust_address. ++ ++2009-10-08 Joseph Myers ++ ++ * release-notes-csl.xml (NEON store improvements): Only enable for ++ ARM targets supporting hardware floating point. ++ ++2009-10-08 Maxim Kuvyrkov ++ ++ Issue #6439 ++ ++ Backport from mainline: ++ gcc/ ++ 2009-09-21 Jan Hubicka ++ * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL. ++ (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and ++ restore at the end. ++ ++2009-10-08 Joseph Myers ++ ++ Issue #6472 ++ ++ gcc/ ++ * config/arm/t-cs-eabi (MULTILIB_MATCHES): Map -mfpu=neon-fma-fp16 ++ to -mfpu=neon. ++ * config/arm-t-cs-linux (MULTILIB_MATCHES): Likewise. ++ ++2009-10-08 Daniel Gutson ++ ++ Issue #6697 ++ ++ libiberty/ ++ * argv.c (expandargv): Use xmalloc instead of malloc, ++ as suggested upstream. ++ ++2009-10-07 Joseph Myers ++ ++ gcc/ ++ * config/arm/arm.c (arm_vector_always_misalign): Adjust FIXME ++ comment. ++ ++2009-10-07 Joseph Myers ++ ++ Issue #6722 ++ ++ gcc/ ++ * config/arm/arm.c (arm_vector_always_misalign): Return false for ++ big endian. ++ * config/arm/neon.md (movmisalign): Disable for big endian. ++ ++2009-10-07 Maxim Kuvyrkov ++ ++ Issue #6713 ++ ++ gcc/ ++ * tree-sra.c (sra_type_can_be_decomposed_p): Disable SRA for bitfields ++ when compiling for BITS_BIG_ENDIAN target. ++ ++2009-10-07 Daniel Jacobowitz ++ ++ * release-notes-csl.xml (NEON store improvements): New note. ++ ++2009-10-07 Daniel Jacobowitz ++ ++ gcc/ ++ * config/arm/neon.md (*neon_mov): Reject two non-register ++ operands. ++ (movti, mov): Call force_reg on one operand if required. ++ * config/arm/vec-common.md (mov): Likewise. ++ ++2009-10-06 Paul Brook ++ ++ Issue #3869 ++ gcc/ ++ * target.h (gcc_target): Add warn_func_result. ++ * target-def.h (TARGET_WARN_FUNC_RESULT): Define and use. ++ * tree-cfg.h (execute_warn_function_return): Use ++ targetm.warn_func_result. ++ * config/arm/arm.c (TARGET_WARN_FUNC_RESULT): Define. ++ (arm_warn_func_result): New function. ++ ++ gcc/testuite/ ++ * gcc.target/arm/naked-3.c: New test. ++ ++2009-10-05 Nathan Sidwell ++ ++ Issue #6701 ++ gcc/ ++ * tree-ssa-structalias.c (get_constraint_for_component_ref): A ++ function decl may be the core of a component ref. ++ ++ gcc/testsuite/ ++ * g++.dg/opt/alias5.C: New. ++ ++ * release-notes-csl.xml: Document. ++ ++2009-10-05 Daniel Gutson ++ Daniel Jacobowitz ++ Pedro Alves ++ ++ Issue #6697 ++ ++ libiberty/ ++ * argv.c (consume_whitespace): New function. ++ (only_whitespace): New function. ++ (buildargv): Always use ISSPACE by calling consume_whitespace. ++ (expandargv): Skip empty files. Do not stop at the first empty ++ argument (calling only_whitespace).. ++ * testsuite/test-expandargv.c: (test_data): Test empty lines ++ and empty arguments. ++ (run_tests): Fix false positives due to shorter arguments. ++ ++ * release-config-csl.xml: Document. ++ ++2009-10-02 Paul Brook ++ ++ Issue #6705 ++ gcc/ ++ * config/arm/arm.c (neon_vector_mem_operand): Disallow PRE_DEC for ++ array loads. ++ (output_move_neon): Remove bogus FIXME. ++ ++2009-10-02 Paul Brook ++ ++ Issue #6223 ++ gcc/ ++ * targhooks.c (default_vector_min_alignment): New function. ++ * targhooks.h (default_vector_min_alignment): Add prototype. ++ * target.h (gcc_target): Add vectorize.vector_min_alignment and ++ vectorize.always_misalign. ++ * expr.c (expand_assignment): Handle MISALIGNED_INDIRECT_REF as a ++ destination. ++ (expand_expr_real_1): Handle writes to MISALIGNED_INDIRECT_REF. ++ * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use ++ targetm.vectorize.vector_min_alignment. ++ * target-def.h (TARGET_VECTOR_MIN_ALIGNMENT): Define. ++ (TARGET_VECTOR_ALWAYS_MISALIGN): Define. ++ (TARGET_VECTORIZE): Use them. ++ * tree-vect-transform.c (vectorizable_store): Honor ++ targetm.vectorize.always_misalign. ++ (vectorizable_load): Ditto. ++ (vect_gen_niters_for_prolog_loop): Use ++ targetm.vectorize.vector_min_alignment. ++ * config/arm/arm.c (arm_vector_min_alignment, ++ arm_vector_always_misalign): New functions. ++ (TARGET_VECTOR_MIN_ALIGNMENT, TARGET_VECTOR_ALWAYS_MISALIGN): Define. ++ (arm_print_operand): Include alignment qualifier in %A. ++ * config/arm/neon.md (movmisalign): Enable on big-endian targets. ++ ++ gcc/testsuite/ ++ * lib/target-supports.exp (check_effective_target_vect_element_align): ++ New function. ++ * gcc.dg/vect/no-section-anchors-vect-31.c: Use vect_element_align. ++ * gcc.dg/vect/no-section-anchors-vect-64.c: Ditto. ++ * gcc.dg/vect/no-section-anchors-vect-66.c: Ditto. ++ * gcc.dg/vect/no-section-anchors-vect-68.c: Ditto. ++ * gcc.dg/vect/no-section-anchors-vect-69.c: Ditto. ++ * gcc.dg/vect/section-anchors-vect-69.c: Ditto. ++ * gcc.dg/vect/slp-25.c: Ditto. ++ * gcc.dg/vect/vect-109.c: Ditto. ++ * gcc.dg/vect/vect-26.c: Ditto. ++ * gcc.dg/vect/vect-27.c: Ditto. ++ * gcc.dg/vect/vect-28.c: Ditto. ++ * gcc.dg/vect/vect-29.c: Ditto. ++ * gcc.dg/vect/vect-33.c: Ditto. ++ * gcc.dg/vect/vect-42.c: Ditto. ++ * gcc.dg/vect/vect-44.c: Ditto. ++ * gcc.dg/vect/vect-48.c: Ditto. ++ * gcc.dg/vect/vect-50.c: Ditto. ++ * gcc.dg/vect/vect-52.c: Ditto. ++ * gcc.dg/vect/vect-54.c: Ditto. ++ * gcc.dg/vect/vect-56.c: Ditto. ++ * gcc.dg/vect/vect-58.c: Ditto. ++ * gcc.dg/vect/vect-60.c: Ditto. ++ * gcc.dg/vect/vect-70.c: Ditto. ++ * gcc.dg/vect/vect-72.c: Ditto. ++ * gcc.dg/vect/vect-75.c: Ditto. ++ * gcc.dg/vect/vect-87.c: Ditto. ++ * gcc.dg/vect/vect-88.c: Ditto. ++ * gcc.dg/vect/vect-89.c: Ditto. ++ * gcc.dg/vect/vect-91.c: Ditto. ++ * gcc.dg/vect/vect-92.c: Ditto. ++ * gcc.dg/vect/vect-93.c: Ditto. ++ * gcc.dg/vect/vect-95.c: Ditto. ++ * gcc.dg/vect/vect-align-2.c: Ditto. ++ * gcc.dg/vect/vect-multitypes-1.c: Ditto. ++ * gcc.dg/vect/vect-multitypes-3.c: Ditto. ++ * gcc.dg/vect/vect-multitypes-4.c: Ditto. ++ * gcc.dg/vect/vect-multitypes-6.c: Ditto. ++ ++2009-10-02 Paul Brook ++ ++ Issue #4896 ++ gcc/ ++ * config/arm/t-cs-eabi: Change v5t multilib to v5te. ++ * config/arm/t-cs-linux: Ditto. ++ * config/arm/t-cs-linux-lite: Ditto. ++ ++2009-10-01 Sandra Loosemore ++ ++ Issue #5767 ++ gcc/ ++ * doc/extend.texi (Half-Precision): Update wording to reflect ++ that there are now multiple -mfpu options that enable fp16 ++ hardware support. ++ ++2009-09-30 Paul Brook ++ ++ gcc/ ++ * config/arm/neon.ml (vectype): Add T_floatSF. ++ (string_of_vectype): Add T_floatSF. ++ * config/arm/neon-gen.ml (signed_ctype): Add T_float32 -> T_floatSF. ++ (deftypes): Use float for float32_t. ++ * config/arm/arm_neon.h: Regenerate. ++ ++ gcc/testsuite/ ++ * g++.dg/other/arm-neon-1.C: New test. ++ ++2009-09-29 Daniel Jacobowitz ++ ++ Issue #4151 - CYGPATH support for the GDB input file. ++ ++ libiberty/ ++ * lrealpath.c (lrealpath): Use cygpath on Windows. ++ ++2009-09-28 Daniel Gutson ++ ++ Issue #6041 ++ ++ Backport from mainline (r148770): ++ ++ gcc/ ++ * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack ++ preservation properties of code. ++ ++2009-09-25 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testuite/ ++ 2009-09-25 Nathan Froyd ++ ++ * gcc.dg/vect/vect.exp: Append extra parameters as separate ++ parameters for alignment-sensitive -fsection-anchors tests. ++ ++2009-09-25 Daniel Gutson ++ ++ Issue #6409 ++ ++ gcc/ ++ * config/arm/neon.md (neon_vshll_n): Checking Bounds ++ fixed. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/neon/vfp-shift-a2t2.c: New test case. ++ ++ * release-notes-csl.xml: Document. ++ ++2009-09-24 Catherine Moore ++ ++ Issue #6412 ++ ++ Backport from gcc 4-4: ++ ++ gcc/ ++ 2009-09-21 Richard Sandiford ++ ++ * config/mips/mips.c (mips_override_options): Force flag_dwarf2_cfi_asm ++ to zero. ++ ++2009-09-24 Paul Brook ++ ++ gcc/ ++ * config/arm/arm_neon.h (float32_t): Define as "float". ++ ++2009-09-23 Paul Brook ++ ++ gcc/ ++ * config/arm/arm.c (use_vfp_abi): New function. ++ (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs ++ when undesirable. ++ (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate, ++ aapcs_vfp_allocate_return_reg): Use use_vfp_abi. ++ ++2009-09-23 Maxim Kuvyrkov ++ ++ Revert, the sequence is buggy: ++ ++ 2009-09-09 Maxim Kuvyrkov ++ gcc/ ++ * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Add ++ another rt_sigreturn sequence. ++ ++2009-09-22 Joseph Myers ++ ++ Backport: ++ ++ libstdc++-v3/ ++ 2009-09-17 Joseph Myers ++ ++ * testsuite/lib/libstdc++.exp (check_v3_target_binary_io): New. ++ * testsuite/lib/dg-options.exp (dg-require-binary-io): New. ++ * testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc, ++ testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc, ++ testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc, ++ testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc, ++ testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc, ++ testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc, ++ testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc, ++ testsuite/27_io/basic_istream/readsome/char/6746-2.cc, ++ testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc, ++ testsuite/27_io/objects/char/10.cc: Use dg-require-binary-io. ++ ++2009-09-22 Joseph Myers ++ ++ Backport: ++ ++ gcc/testsuite/ ++ 2009-09-08 Joseph Myers ++ ++ * gcc.dg/profile-dir-1.c, gcc.dg/profile-dir-2.c, ++ gcc.dg/profile-dir-3.c: Disable for remote-host testing. ++ ++2009-09-19 Sandra Loosemore ++ ++ Issues #6560, #4612 ++ ++ * release-notes-csl.xml (Preprocessor error handling): New note. ++ ++ Backport from mainline: ++ ++ gcc: ++ 2009-03-29 Joseph Myers ++ ++ PR preprocessor/34695 ++ * Makefile.in (c-opts.o): Depend on c-tree.h. ++ * c-common.c: Move down include of diagnostic.h. ++ (done_lexing, c_cpp_error): New. ++ * c-common.h (done_lexing): Declare. ++ * c-decl.c (c_write_global_declarations): Don't check cpp_errors ++ (parse_in). ++ * c-opts.c: Include c-tree.h. ++ (c_common_init_options): Set preprocessor error callback. ++ (c_common_handle_option): Do not set preprocessor ++ inhibit_warnings, warnings_are_errors, warn_system_headers, ++ pedantic_errors or inhibit_warnings flags. ++ (c_common_post_options): Do not check cpp_errors (parse_in). ++ (c_common_finish): Do not output dependencies if there were ++ errors. Do not check return value of cpp_finish. ++ * c-ppoutput.c (pp_file_change): Set input_location. ++ * c-tree.h (c_cpp_error): Declare. ++ * diagnostic.c (diagnostic_set_info_translated): Also initialize ++ override_column. ++ (diagnostic_build_prefix): Check override_column. ++ * diagnostic.h (diagnostic_info): Add override_column field. ++ (diagnostic_override_column): Define. ++ ++ gcc/cp: ++ 2009-03-29 Joseph Myers ++ ++ PR preprocessor/34695 ++ * cp-tree.h (cp_cpp_error): Remove. ++ * error.c (cp_cpp_error): Remove. ++ * parser.c (cp_lexer_new_main): Set done_lexing instead of ++ client_diagnostic and error callback. ++ ++ gcc/fortran: ++ 2009-03-29 Joseph Myers ++ ++ PR preprocessor/34695 ++ * cpp.c (cb_cpp_error): New. ++ (gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings. ++ Don't check cpp_errors (cpp_in). ++ (gfc_cpp_init_0): Set cb->error. ++ ++ gcc/testsuite: ++ 2009-03-29 Joseph Myers ++ ++ PR preprocessor/34695 ++ * gcc.dg/builtin-redefine.c, gcc.dg/cpp/redef2.c, ++ gcc.dg/cpp/redef3.c, gcc.dg/cpp/trad/redef2.c: Use dg-message ++ instead of dg-warning for "previous definition" messages. ++ * gcc.dg/cpp/Wvariadic-1.c, gcc.dg/cpp/Wvariadic-3.c: Expect ++ "warnings being treated as errors" message. ++ * gcc.dg/fltconst-1.c: Use -fshow-column. ++ ++ libcpp: ++ 2009-03-29 Joseph Myers ++ ++ PR preprocessor/34695 ++ * makedepend.c: Remove. ++ * Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove. ++ (all, clean, TAGS_SOURCES, include): Remove makedepend handling. ++ * directives.c (cpp_errors): Remove. ++ * errors.c (print_location, _cpp_begin_message, v_message): ++ Remove. ++ (cpp_error, cpp_error_with_line): Always use error callback. ++ (cpp_error, cpp_error_with_line, cpp_errno): Return bool. ++ * include/cpplib.h (cpp_options): Remove pedantic_errors, ++ inhibit_warnings, warn_system_headers, inhibit_errors, ++ warnings_are_errors, client_diagnostic. ++ (cpp_callbacks): Add extra arguments to error callback; make it ++ return bool. ++ (cpp_finish): Return void. ++ (cpp_destroy): Remove inaccurate comment about return value. ++ (cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove. ++ (CPP_DL_NOTE): Define. ++ * include/line-map.h (linemap_print_containing_files): Remove. ++ * init.c (cpp_finish): Do not check for or return number of ++ errors. ++ * internal.h (cpp_reader): Remove errors field. ++ * line-map.c (linemap_print_containing_files): Remove. ++ * macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message ++ about previous definition. Only emit it if previous diagnostic ++ was emitted. ++ ++ gcc: ++ 2009-03-31 Joseph Myers ++ ++ PR preprocessor/15638 ++ * c-common.c (c_cpp_error): Handle CPP_DL_FATAL. ++ ++ gcc/fortran: ++ 2009-03-31 Joseph Myers ++ ++ PR preprocessor/15638 ++ * cpp.c (cb_cpp_error): Handle CPP_DL_FATAL. ++ ++ gcc/testsuite: ++ 2009-03-31 Joseph Myers ++ ++ PR preprocessor/15638 ++ * gcc.dg/cpp/missing-header-1.c: New test. ++ * gcc.dg/cpp/include2.c: Only test #include <>. Expect ++ "compilation terminated" message. ++ * gcc.dg/cpp/include2a.c: New test. Copy of include2.c but only ++ test #include "". ++ * gcc.dg/pch/counter-2.c, gcc.dg/pch/valid-1.c, ++ gcc.dg/pch/valid-2.c, gcc.dg/pch/warn-1.c: Expect "compilation ++ terminated" message. ++ ++ libcpp: ++ 2009-03-31 Joseph Myers ++ ++ PR preprocessor/15638 ++ * files.c (_cpp_find_file): Call open_file_failed after diagnosing ++ invalid PCH. ++ (open_file_failed): Make error for missing file fatal. ++ * include/cpplib.h (CPP_DL_FATAL): Define. ++ ++ [libcpp/ChangeLog] ++ 2009-09-18 Chris Demetriou ++ ++ PR preprocessor/28435: ++ * include/cpplib.h (struct cpp_options): Add new member ++ deps.need_preprocessor_output. ++ * files.c (open_file_failed): If preprocessor output is needed ++ always report an error. ++ ++ [gcc/ChangeLog] ++ 2009-09-19 Chris Demetriou ++ ++ PR preprocessor/28435: ++ * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate ++ to cpplib that the preprocessor output is needed. ++ ++ [gcc/testsuite/ChangeLog] ++ 2009-09-19 Chris Demetriou ++ ++ PR preprocessor/28435: ++ * gcc.dg/cpp/missing-header-MD.c: New test. ++ * gcc.dg/cpp/missing-header-MMD.c: New test. ++ * gcc.dg/cpp/missing-sysheader-MD.c: New test. ++ * gcc.dg/cpp/missing-sysheader-MMD.c: New test. ++ ++2009-09-11 Daniel Jacobowitz ++ ++ Issue #5767 ++ ++ gcc/ ++ * config/arm/arm.c (all_fpus): Add tag-5, tag-6, and neon-fma-fp16. ++ (fp_model_for_fpu): Update. ++ (arm_file_start): Handle new FPUs. ++ * config/arm/arm.h (TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16) ++ (TARGET_NEON): Handle new FPUs. ++ (enum fputype): Add FPUTYPE_VFP_TAG5, FPUTYPE_VFP_TAG6, and ++ FPUTYPE_NEON_FMA_FP16. ++ ++2009-09-10 Daniel Jacobowitz ++ ++ Issue #5767 ++ ++ gcc/ ++ * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define. ++ (enum fputype): Add FPUTYPE_VFP3xD and FPUTYPE_VFP3xD_FP16. ++ * config/arm/arm.c (all_fpus): Handle FPUTYPE_VFP3xD and ++ FPUTYPE_VFP3xD_FP16. ++ (fp_model_for_fpu): Update. ++ (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs) ++ (arm_9e_rtx_costs): Only expect double-precision operations if the FPU ++ provides them. ++ (arm_print_operand): Handle 'p' modifier. ++ (arm_file_start): Handle new FPU types. ++ * config/arm/arm.md: Disable double-precision patterns if the FPU ++ does not provide them. ++ * config/arm/constraints.md: Add new "Dy" constraint for ++ double-precision constants. Update description of "Dv". ++ * config/arm/vfp.md: Disable double-precision patterns if the FPU ++ does not provide them. ++ (*arm_movdi_vfp, *thumb2_movdi_vfp): Use fcpys to move ++ double-precision values on a single-precision FPU. ++ (*movdf_vfp, *thumb2_movdf_vfp): Likewise. Use "Dy" for ++ double-precision constants. ++ ++2009-09-10 Daniel Jacobowitz ++ ++ Issue #5767 ++ ++ gcc/ ++ * config/arm/t-cs-eabi, config/arm/t-cs-eabi-lite, ++ config/arm/t-cs-linux-lite, config/arm/t-cs-uclinux-eabi: Add ++ -march=tag13 to MULTILIB_MATCHES. ++ ++2009-09-10 Daniel Jacobowitz ++ ++ Issue #5767 ++ ++ gcc/ ++ * config/arm/arm.c (FL_TAG13, FL_FOR_ARCHTAG13): New. ++ (arm_arch_tag13): New. ++ (all_architectures): Add tag13. ++ (arm_override_options): Set arm_arch_tag13. ++ * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD): Check ++ arm_arch_tag13. ++ (arm_arch_tag13): Declare. ++ * gcc/config/arm/t-arm-elf: Add commented-out match for -march=tag13. ++ ++2009-09-09 Maxim Kuvyrkov ++ ++ Issue #4203 ++ ++ * release-notes-csl.xml: Fix note. ++ ++2009-09-09 Paul Brook ++ ++ Issue #5767 ++ gcc/ ++ * doc/invoke.texi: Update list of ARM -mfpu= options. ++ * config.gcc: Update ARM --with-fpu option list. ++ * config/arm/arm.c (all_fpus): Add vfpv3-fp16 and vfpv3-d16-fp16. ++ (fp_model_for_fpu): Add FPUTYPE_VFP3D16_FP16 and FPUTYPE_VFP3_FP16. ++ (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no ++ NEON. ++ (arm_hard_regno_mode_ok): Allows HFmode in VFP registers if ++ TARGET_FP16. ++ (arm_file_start): Add FPUTYPE_VFP3D16_FP16 and FPUTYPE_VFP3_FP16. ++ * config/arm/arm.h (TARGET_FP16): Define. ++ (fputype): Add FPUTYPE_VFP3D16_FP16 and FPUTYPE_VFP3_FP16. ++ * config/arm/vfp.md (movhf_vfp_neon): New pattern (was movhf_vfp). ++ (movhf_vfp): Remove NEON instructions. ++ (extendhfsf2, truncsfhf2): Change condition to TARGET_FP16. ++ * config/arm/arm.md (define_attr "fpu"): Add vfpv3d16fp16 and ++ vfpv3fp16. ++ (arm32_movhf): Change condition to !TARGET_FP16. ++ ++ * release-notes-csl.xml: Document. ++ ++2009-09-09 Maxim Kuvyrkov ++ ++ gcc/ ++ * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Add ++ another rt_sigreturn sequence. ++ ++2009-09-09 Maxim Kuvyrkov ++ ++ gcc/ ++ * config/m68k/m68k.h (TRANSFER_FROM_TRAMPOLINE): Avoid warning. ++ ++2009-09-08 Paul Brook ++ Daniel Jacobowitz ++ ++ Issue #6027 ++ ++ * release-notes-csl.xml (Optimizer improvements): New note. ++ ++ Merge submitted patches: ++ http://gcc.gnu.org/ml/gcc-patches/2009-03/msg00250.html ++ ++ 2009-02-02 J"orn Rennecke ++ ++ gcc/ ++ * tree-ssa-pre.c (ppre_n_insert_for_speed_p): New function. ++ * (do_partial_partial_insertion): Use it to throttle ++ insert_into_preds_of_block calls. ++ * common.opt (-ftree-pre-partial-partial-obliviously): New option. ++ ++ 2009-01-15 J"orn Rennecke ++ ++ gcc/ ++ * common.opt (ftree-pre-partial-partial): New option. ++ * opts.c (decode_options): Initialize flag_tree_pre_partial_partial. ++ * tree-ssa-pre.c (execute_pre): Use flag_tree_pre_partial_partial. ++ ++2009-09-08 Paul Brook ++ Daniel Jacobowitz ++ ++ Issue #6027 ++ ++ Merge submitted patch: ++ http://gcc.gnu.org/ml/gcc-patches/2008-12/msg00199.html ++ ++ 2008-12-03 Steven Bosscher ++ ++ gcc/ ++ * opts.c (decode_options): Fix initialization of ++ flag_tree_switch_conversion. Don't set optimize_size in block ++ that is conditional on optimize_size (sic). Explicitly disable ++ PRE when optimizing for size (and add comment for rationale). ++ * tree-ssa-pre.c: Update outline of the algorithm. ++ (bitmap_set_and): Prototype. ++ (insert_into_preds_of_block): Don't report discovery of partial ++ redundancies here, do so from the callers instead (see below). ++ (do_regular_insertion): Add counter for an estimate for the number ++ of inserts required to eliminate a partial redundancy. If the ++ current function is optimized for size, only perform the partial ++ redundancy elimination if this requires inserting in only one ++ predecessor. Report all found partial redundancies from here. ++ (do_partial_partial_insertion): Report them from here too. ++ (insert_aux): Do not insert for partial-partial redundancies when ++ optimizing for size. ++ (execute_pre): Remove bogus ATTRIBUTE_UNUSED. ++ (do_pre): Run FRE at least, if PRE is disabled. ++ (gate_pre): Return true if flag_tree pre or flag_tree_fre is set. ++ ++2009-09-08 Joseph Myers ++ ++ Backport: ++ ++ gcc/testsuite/ ++ 2009-09-08 Joseph Myers ++ ++ * gcc.misc-tests/i386-prefetch.exp: Skip tests when multilib flags ++ contain -march. ++ * gcc.dg/tree-ssa/prefetch-7.c, gcc.target/i386/387-1.c, ++ gcc.target/i386/387-5.c, gcc.target/i386/cmov7.c, ++ gcc.target/i386/funcspec-1.c, gcc.target/i386/funcspec-8.c, ++ gcc.target/i386/gcc-have-sync-compare-and-swap-1.c, ++ gcc.target/i386/gcc-have-sync-compare-and-swap-2.c, ++ gcc.target/i386/isa-6.c, gcc.target/i386/lea.c, ++ gcc.target/i386/pentium4-not-mull.c, gcc.target/i386/sse-5.c, ++ gcc.target/i386/ssefn-1.c: Skip when multilib flags contain -march ++ options other than that used in dg-options. ++ ++2009-09-07 Maxim Kuvyrkov ++ ++ * release-notes-csl.xml: Add note. ++ gcc/ ++ * m68k/m68k-devices.def: Add MCF5441x family. ++ ++2009-09-04 Nathan Froyd ++ ++ * release-notes-csl.xml: Change tag to tag. ++ ++2009-09-04 Daniel Gutson ++ ++ gcc/ ++ * config/arm/arm.md (ctzsi2): Added braces ++ to avoid warning that broke booststrap. ++ ++2009-09-02 Joseph Myers ++ ++ Backport: ++ ++ libstdc++-v3/ ++ 2009-09-02 Joseph Myers ++ ++ * testsuite/lib/libstdc++.exp (libstdc++_init): Copy .tcc files ++ under util/ to remote host. Copy .h and .hpp files at more levels ++ under util/ to remote host. ++ ++2009-09-02 Daniel Jacobowitz ++ ++ libgcc/ ++ * shared-object.mk (c_flags-$(base)$(objext)): New. ++ ($(base)$(objext)): Use above. ++ ($(base)_s$(objext)): Likewise. ++ * static-object.mk (c_flags-$(base)$(objext)): New. ++ ($(base)$(objext)): Use above. ++ ++2009-08-26 Daniel Jacobowitz ++ ++ Issue #6189 - Enable pre-reload scheduling for Thumb-2 ++ ++ * release-notes-csl.xml (Improved optimization for Thumb-2): New note. ++ ++ gcc/ ++ * config/arm/arm.c (arm_override_options): Enable scheduling for ++ Thumb-2. ++ ++2009-08-26 Daniel Jacobowitz ++ ++ Issue #6131 - Enable additional optimizations by default in Lite ++ Issue #6103 - Reduce default unrolling parameters at -O3 ++ ++ * release-notes-csl.xml (Improved optimization for ARM): New note. ++ ++ gcc/ ++ * config/arm/arm.c (arm_override_options): If flag_unroll_loops has ++ the default value, adjust unrolling parameters. ++ (arm_optimization_options): Set flag_unroll_loops to a default value. ++ Enable flag_promote_loop_indices. ++ ++2009-08-26 Julian Brown ++ ++ gcc/config/arm/ ++ * uclinux-eabi.h (LINK_GCC_C_SEQUENCE_SPEC): Override definition ++ for uclinux. ++ ++2009-08-26 Kazu Hirata ++ ++ Issue #6089 ++ gcc/ ++ * config/arm/arm.c (arm_rtx_costs_1): Don't special case for ++ Thumb-2 in the MINUS case. ++ ++2009-08-21 Nathan Froyd ++ ++ Issue #6264 ++ ++ gcc/ ++ * tree-ssa-remove-local-statics.c (maybe_discover_new_declaration): ++ Don't consider non-local statics as eligible for optimization. ++ ++ gcc/cp/ ++ * decl2.c (mark_used): Mark _DECLs as DECL_NONLOCAL if appropriate. ++ ++ gcc/testsuite/ ++ * g++.dg/remove-local-statics-1.C: New test. ++ * g++.dg/remove-local-statics-2.C: New test. ++ ++2009-08-20 Maciej W. Rozycki ++ ++ Merge from Sourcery G++ 4.3: ++ 2008-10-02 Maciej W. Rozycki ++ Issue #3673 ++ gcc/testsuite/ ++ * lib/target-supports.exp ++ (check_effective_target_arm_iwmmxt_ok): New procedure. ++ * gcc.target/arm/mmx-1.c: Only run if arm_iwmmxt_ok. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/mmx-1.c: Remove the exclusion for ++ -mfloat-abi=softfp. ++ ++2009-08-18 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-08-18 Nathan Froyd ++ ++ * gcc.dg/vect/vect.exp: Add new stanza for aligned-section-anchors-* ++ tests. ++ * gcc.dg/vect/section-anchors-nest-1.c: Rename to... ++ * gcc.dg/vect/aligned-section-anchors-nest-1.c: ...this. Remove ++ dg-options. Fix dg-final clause. ++ ++2009-08-16 Maxim Kuvyrkov ++ ++ gcc/ ++ * config/m68k/lb1sf68.asm (PICCALL): Use long branch to subroutine ++ for supporting ColdFire ISAs. ++ ++2009-08-16 Maxim Kuvyrkov ++ ++ gcc/ ++ * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Add ++ alternative rt_sigreturn sequence. ++ ++2009-08-14 Andrew Stubbs ++ ++ Issue #6120 ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-08-11 Ulrich Weigand ++ * reload.c (find_reloads_subreg_address): Check the original ++ req_equiv_mem address to detect the case where an address is ++ not valid in the outer mode. ++ ++2009-08-14 Andrew Stubbs ++ ++ gcc/ ++ * longlong.h (SH udiv_qrnnd) Mark "t" register clobbered.: ++ ++2009-08-14 Andrew Stubbs ++ ++ libstdc++-v3/ ++ * config/cpu/sh/atomicity.h (__exchange_and_add): Set earlyclobber constraint. ++ ++2009-08-13 Maciej W. Rozycki ++ ++ * release-notes-csl.xml (C++ exception matching): Use the correct ++ sequence to get the & character. ++ ++2009-08-12 Andrew Stubbs ++ ++ gcc/testsuite/ ++ * gcc.dg/tree-ssa/pr21559.c: Compile with -fno-remove-local-statics. ++ * gcc.dg/tree-ssa/ssa-dse-6.c: Likewise. ++ ++2009-08-11 Kazu Hirata ++ ++ Issue #6172 ++ Backport from FSF: ++ gcc/ ++ 2009-07-15 Richard Earnshaw ++ * arm.md (ior_xor): New code iterator. ++ (split for ior/xor with shift and zero-extend): New split pattern. ++ * arm/predicates.md (subreg_lowpart_operator): New special predicate. ++ ++2009-08-11 Kazu Hirata ++ ++ Issue #6172 ++ Backport from FSF: ++ gcc/ ++ 2009-06-19 Ramana Radhakrishnan ++ PR target/40482 ++ * config/arm/arm.c (thumb_shiftable_const): Truncate val to ++ 32 bits. ++ * config/arm/arm.md: Likewise. ++ ++ gcc/testsuite/ ++ 2009-06-19 Ramana Radhakrishnan ++ PR target/40482 ++ * gcc.target/arm/pr40482.c: New test. ++ ++2009-08-11 Kazu Hirata ++ ++ Issue #6172 ++ Backport from FSF: ++ gcc/ ++ 2009-06-13 Richard Earnshaw ++ PR target/40327 ++ * arm/constraints.md (Pa, Pb): New constraints. ++ * arm/arm.md (thumb1_addsi3): Support more complex additions. Add a ++ split pattern to deal with them. ++ ++2009-08-11 Kazu Hirata ++ ++ Issue #6172 ++ Backport from FSF: ++ gcc/ ++ 2009-06-04 Richard Earnshaw ++ PR target/10242 ++ * arm.md (arm_addsi3): Don't try to split an add with an ++ eliminable register until after reload has completed. ++ ++2009-08-11 Kazu Hirata ++ ++ Issue #6172 ++ Backport from FSF: ++ gcc/ ++ 2009-06-02 Richard Earnshaw ++ * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a ++ push/pop multiple to 8-byte alignment. ++ ++2009-08-10 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-sgxx-linux (MULTILIB_MATCHES), ++ config/mips/cs-sgxx-linux.h (SYSROOT_SUFFIX_SPEC): Handle new ++ pre-MIPS32 CPUs. Correct "4ks" typo. Handle MIPS64 CPUs. ++ ++2009-08-06 Nathan Sidwell ++ ++ Issue 1080 ++ gcc/testsuite/ ++ * g++.dg/eh/ref1.C: Add dg-bogus for non-arm targets. ++ ++2009-08-04 Catherine Moore ++ ++ * gcc/ ++ * config/mips/linux.h (SUBTARGET_OVERRIDE_OPTIONS): Define. ++ * config/mips/mips.c (mips_override_options): Move the uclibc ++ check to SUBTARGET_OVERRIDE_OPTIONS. ++ ++2009-08-04 Sandra Loosemore ++ ++ Issue #6004 ++ ++ * release-notes-csl.xml (Support for MIPS 1004K cores): New note. ++ ++ gcc/ ++ * config/mips/sdemtk.h (MIPS_ARCH_FLOAT_SPEC): Add pattern for 1004K. ++ ++2009-08-04 Sandra Loosemore ++ ++ Issue #6004 ++ ++ Backport from FSF: ++ gcc/ ++ * doc/invoke.texi (MIPS Options): Document new 1004K -march options. ++ * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores. ++ * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K. ++ (MIPS_ARCH_FLOAT_SPEC): Likewise. ++ (BASE_DRIVER_SELF_SPECS): Likewise. ++ ++2009-08-04 Nathan Froyd ++ ++ gcc/ ++ * c.opt (fremove-local-statics): Enable for C++. ++ ++2009-08-04 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.opt (muclibc): Delete. ++ * config/mips/mips.c (mips_override_options): Check ++ linux_uclibc instead of building_for_uclibc. ++ ++2009-08-02 Joseph Myers ++ ++ Issue #5176 ++ ++ * release-notes-csl.xml: Add release note for ++ -fremove-local-statics default. ++ ++2009-07-29 Paul Brook ++ ++ gcc/ ++ * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation. ++ (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1 ++ implementation on ARMv6-M. ++ ++2009-07-29 Paul Brook ++ ++ gcc/ ++ * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and ++ do_push/do_pop. ++ ++2009-07-27 Joseph Myers ++ ++ * release-notes-csl.xml: Add release note for MinGW update. ++ ++2009-07-27 Paul Brook ++ ++ gcc/ ++ * config/arm/t-cs-eabi: Remove ARMv4 VFP multilib. Add big-endian ++ ARMv5t VFP multilib. ++ ++2009-07-24 Joseph Myers ++ ++ Backport: ++ ++ libstdc++-v3/ ++ 2009-07-24 Joseph Myers ++ ++ * include/c_global/cwchar (swprintf, vswprintf): Do not use if ++ _GLIBCXX_HAVE_BROKEN_VSWPRINTF. ++ * testsuite/lib/libstdc++.exp (check_v3_target_swprintf): New. ++ * testsuite/lib/dg-options.exp (dg-require-swprintf): New. ++ * testsuite/21_strings/headers/cwchar/functions_std.cc, ++ testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc, ++ testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc: ++ Use dg-require-swprintf. ++ ++2009-07-24 Nathan Sidwell ++ ++ Issue #1080 ++ * release-notes-csl.xml: Dcoument. ++ ++ gcc/ ++ * targhooks.c (hook_cxx_ttype_ref_in_bit0): New. ++ * targhooks.h (hook_cxx_ttype_ref_in_bit0): Declare. ++ * target.h (ttype_ref_encode): New field for c++. ++ * target-def.h (TARGET_CXX_TTYPE_REF_ENCODE): New. ++ (TARGET_CXX): Add it. ++ * except.c (output_ttype): If the expression is POINTER_PLUS_EXPR ++ look at the first operand for the exception type object. ++ * config/arm/arm.c (TARGET_CXX_TTYPE_REF_ENCODE): Override. ++ * config/arm/unwind-arm.c (__gnu_unwind_pr_common): Add comment ++ about references. ++ * config/arm/unwind-arm.h (_Unwind_decode_target2): Propagate the ++ bottom 2 bits. ++ ++ libstdc++-v3/ ++ * libsupc++/eh_arm.cc (__cxa_type_match): Use is_reference ++ parameter. ++ * libsupc++/eh_personality.cc (get_ttype_entry): Add is_ref ++ parameter and set it appropriately. ++ (get_adjusted_ptr): Add is_ref parameter and use it. ++ (check_exception_spec): Pass referenceness to get_adjusted_ptr. ++ (PERSONALITY_FUNCTION): Process referenceness. ++ ++ gcc/cp/ ++ * rtti.c (get_tinfo_decl): Assert not reference type. ++ * except.c (build_eh_type_type): Use ttype_ref_encode if the type ++ is a reference. ++ (expand_start_catch_block): Preserve referenceness on pointers if ++ ttype_ref_encode is non-NULL. ++ (finish_eh_spec_block): Likewise. ++ (can_convert_eh): Implement exactly the same algorithm as the ++ runtime matcher. ++ * semantics.c (finish_handler_parms): Look through reference types ++ before marking the exception object type. ++ ++ gcc/testsuite/ ++ * g++.dg/eh/ref1.C: New. ++ * g++.dg/eh/ref2.C: New. ++ ++2009-07-23 Joseph Myers ++ ++ Backport: ++ ++ gcc/testsuite/ ++ 2009-07-23 Joseph Myers ++ ++ * gcc.dg/dll-4.c: Allow foo1 and foo2 in either order in ++ scan-assembler. ++ ++2009-07-23 Joseph Myers ++ ++ Issue #5962 ++ ++ Backport: ++ ++ gcc/ ++ 2009-05-28 Dave Korn ++ ++ PR target/37216 ++ ++ * configure.ac (HAVE_GAS_ALIGNED_COMM): Add autoconf test and ++ macro definition for support of three-operand format aligned ++ .comm directive in assembler on cygwin/pe/mingw target OS. ++ * configure: Regenerate. ++ * config.h: Regenerate. ++ ++ * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Use ++ aligned form of .comm directive if -mpe-aligned-commons is in effect. ++ * config/i386/cygming.opt (-mpe-aligned-commons): Add new option. ++ ++ * doc/invoke.texi (-mpe-aligned-commons): Document new target option. ++ * doc/tm.texi (ASM_OUTPUT_COMMON): Document zero size commons. ++ ++ gcc/testsuite/ ++ 2009-05-28 Dave Korn ++ Uros Bizjak ++ Danny Smith ++ ++ PR target/37216 ++ ++ * lib/target-supports.exp (check_effective_target_pe_aligned_commons): ++ New function. ++ * gcc.target/i386/pr37216.c: New test source file. ++ * gcc.dg/compat/struct-layout-1_generate.c (dg_options[]): No longer ++ use -fno-common for testing Cygwin and MinGW targets. ++ ++2009-07-23 Nathan Sidwell ++ ++ gcc/ ++ * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE. ++ * config/arm/arm-unwind.c (__gnu_Unwind_Backtrace): Remove unused ++ label. ++ ++2009-07-22 Joseph Myers ++ ++ Issue #5774 ++ Merge from GCC 4.4.1. ++ * release-notes-csl.xml: Update release note for upgrade to 4.4. ++ ++2009-07-22 Maxim Kuvyrkov ++ ++ Issue #4203 ++ ++ * release-notes-csl.xml: Add note for the previous commit. ++ ++2009-07-22 Maxim Kuvyrkov ++ ++ Issue #4203 ++ Backport from upstream: ++ ++ gcc/ ++ 2009-07-09 Maxim Kuvyrkov ++ * varasm.c (build_constant_desc): Don't share RTL in pool entries. ++ gcc/testsuite/ ++ 2009-07-09 Maxim Kuvyrkov ++ * gcc.target/m68k/20090709-1.c: New. ++ ++2009-07-21 Paul Brook ++ ++ Issue #6016 ++ ++ gcc/ ++ * tree-vectorizer.c (increase_alignment): Handle nested arrays. ++ Terminate debug dump with newline. ++ ++ gcc/testsuite/ ++ * gcc.dg/vect/section-anchors-nest-1.c: New test. ++ * lib/target-supports.exp (check_effective_target_section_anchors): ++ Add arm*-*-*. ++ ++2009-07-20 Joseph Myers ++ ++ Issue #5565 ++ ++ fixincludes/ ++ * fixincl.tpl (sed_cmd_z): Hardcode to "sed". ++ * fixincl.x: Regenerate. ++ ++2009-07-20 Andrew Stubbs ++ ++ * release-notes-csl.xml: Document issue 6013 fix. ++ ++2009-07-19 Joseph Myers ++ ++ gcc/ ++ * config/mips/t-wrs-linux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES, ++ MULTILIB_EXCEPTIONS, MULTILIB_OSDIRNAMES): Add VR5500 multilib. ++ * config/mips/wrs-linux.h (SYSROOT_SUFFIX_SPEC: Update for VR5500 ++ multilib. ++ ++2009-07-19 Joseph Myers ++ ++ gcc/ ++ * config/i386/t-wrs-linux, config/i386/wrs-linux.h, ++ config/i386/wrs-linux.opt: New. ++ * config.gcc (i586-wrs-linux-gnu): Use these files. ++ ++2009-07-17 Nathan Froyd ++ ++ gcc/ ++ * tree-ssa-loop-promote.c (analyze_loop_index_defintion_pattern): ++ Don't call TREE_OPERAND. ++ ++2009-07-17 Joseph Myers ++ ++ Backport: ++ ++ config/ ++ 2009-07-17 Joseph Myers ++ ++ PR other/40784 ++ * tls.m4 (GCC_CHECK_TLS): Add extra quoting around argument to ++ AC_LINK_IFELSE. ++ ++ libjava/ ++ 2009-07-17 Joseph Myers ++ ++ PR other/40784 ++ * configure: Regenerate. ++ ++ libstdc++-v3/ ++ 2009-07-17 Joseph Myers ++ ++ PR other/40784 ++ * configure: Regenerate. ++ ++2009-07-17 Andrew Stubbs ++ ++ Issue #6013 ++ ++ Backport from mainline: ++ gcc/ ++ 2009-05-12 Kaz Kojima ++ * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns ++ unless -fschedule-insns is specified. ++ ++2009-07-16 Joseph Myers ++ ++ config/ ++ * tls.m4 (GCC_CHECK_TLS): Restrict shared library LDFLAGS to Linux ++ host (resync with upstream version). ++ ++ libgomp/ ++ * configure: Regenerate. ++ ++ libjava/ ++ * configure: Regenerate. ++ ++ libmudflap/ ++ * configure: Regenerate. ++ ++ libstdc++-v3/ ++ * configure: Regenerate. ++ ++2009-07-14 Joseph Myers ++ ++ Backport: ++ ++ gcc/testsuite/ ++ 2009-07-14 Joseph Myers ++ ++ * gcc.target/i386/pr37843-1.c, gcc.target/i386/pr37843-2.c, ++ gcc.target/i386/pr37843-3.c: Allow leading underscore on function ++ name. ++ ++2009-07-14 Maxim Kuvyrkov ++ ++ Revert: ++ ++ 2009-07-02 Maxim Kuvyrkov ++ Merge from Sourcery G++ 4.3: ++ gcc/ ++ * haifa-sched.c (max_issue): Fix handling of number of instruction to ++ try. ++ ++2009-07-14 Paul Brook ++ ++ Issue #5829 ++ ++ config/ ++ * stdint.m4: Avoid pulling in headers when checking basic type sizes. ++ ++ libstdc++-v3/ ++ * configure: Regenerate. ++ ++2009-07-13 Paul Brook ++ ++ Issue #2335 ++ gcc/ ++ * doc/tm.texi (ARG_POINTER_CFA_OFFSET): Document new default. ++ * defaults.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size. ++ * config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Add pretend_args_size. ++ ++2009-07-10 Mark Mitchell ++ ++ Issue #6006 ++ ++ * release-notes-csl.xml: Document. ++ ++ Backport from mainline: ++ 2009-07-10 Mark Mitchell ++ * config/arm/thumb2.md (thumb2_cbz): Correct computation of length ++ attribute. ++ (thumb2_cbnz): Likewise. ++ ++2009-07-10 Julian Brown ++ ++ Issue #5999 ++ ++ gcc/config/arm ++ * neon.md (movmisalign): Add neon_type attribute. ++ ++2009-07-10 Daniel Gutson ++ ++ Issue 4909 ++ ++ gcc/testsuite/ ++ * gcc.target/arm/ctz.c: Fixed scan-assembler target. ++ ++2009-07-09 Andrew Stubbs ++ ++ gcc/testsuite/ ++ * g++.dg/torture/pr36191.C: Don't attempt to test with ++ -fomit-frame-pointer. ++ ++2009-07-09 Andrew Stubbs ++ ++ gcc/ ++ * config.gcc (sh*-*-*): Remove cs-sgxxlite-linux.opt. ++ * config/sh/cs-sgxxlite-linux.h (SUBTARGET_OVERRIDE_OPTIONS): Use ++ linux_uclibc instead of build_for_uclibc. ++ * config/sh/cs-sgxxlite-linux.opt: Delete file. ++ ++2009-07-09 Julian Brown ++ ++ Backport from mainline: ++ ++ 2009-05-16 Richard Earnshaw ++ ++ gcc/config/arm/ ++ * arm.md (movdi2): Copy non-reg values to DImode registers. ++ ++2009-07-08 Catherine Moore ++ ++ gcc/testsuite/ ++ * gcc.dg/torture/type-generic-1.c: Link with floating point ++ emulation for target mips-sde-elf. ++ ++2009-07-07 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.md (abs2): Remove checks for HARD_FLOAT ++ and TARGET_SDE. ++ ++2009-07-07 Catherine Moore ++ ++ gcc/testsuite/ ++ * gcc.target/mips/clear-cache-2.c: Add target checks for ++ mips-sde-elf. ++ ++2009-07-06 Paul Brook ++ ++ Issue #3979 ++ gcc/ ++ * gengtype-lex.l (IWORD): Add HARD_REG_SET. ++ * expr.c (expand_expr_real_1): Record modified hard registers. ++ * function.h: Include hard-reg-set.h. ++ (rtl_data): Add asm_clobbers. ++ * ira.c (compute_regs_asm_clobbered): Use crtl->asm_clobbers. ++ (setup_eliminable_regset): Ditto. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/frame-pointer-1.c: New test. ++ ++2009-07-06 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-07-06 Nathan Froyd ++ ++ * lib/target-supports.exp ++ (check_effective_target_mips_newabi_large_long_double): New. ++ * gcc.target/mips/fpr-moves-5.c: Require mips_newabi_large_long_double ++ target. ++ * gcc.target/mips/fpr-moves-6.c: Likewise. ++ ++2009-07-05 Joseph Myers ++ ++ Backport: ++ ++ libstdc++-v3/ ++ 2009-07-05 Joseph Myers ++ ++ * ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc, ++ testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc, ++ testsuite/ext/vstring/element_access/char/front_back.cc, ++ testsuite/ext/vstring/element_access/wchar_t/front_back.cc, ++ testsuite/ext/vstring/init-list.cc, ++ testsuite/ext/vstring/moveable.cc, ++ testsuite/ext/vstring/requirements/citerators.cc, ++ testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc, ++ testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc: ++ Use dg-require-string-conversions. ++ ++2009-07-03 Joseph Myers ++ ++ Issue #1063 ++ ++ config/ ++ * tls.m4 (GCC_CHECK_TLS): Also test TLS in a shared library when ++ cross-compiling. ++ ++ libgomp/ ++ * configure: Regenerate. ++ ++ libjava/ ++ * configure: Regenerate. ++ ++ libmudflap/ ++ * configure: Regenerate. ++ ++ libstdc++-v3/ ++ * configure: Regenerate. ++ ++2009-07-03 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-05-26 Nathan Froyd ++ ++ Backport from mainline: ++ gcc/ ++ 2008-04-30 Nathan Froyd ++ * config/rs6000/t-ppccomm: Add build rules for new files. ++ (LIB2FUNCS_STATIC_EXTRA): Add new files. ++ ++ libgcc/ ++ 2008-04-30 Nathan Froyd ++ * config/rs6000/t-ppccomm: Add build rules for new files. ++ (LIB2ADD_ST): New variable. ++ ++2009-07-03 Maxim Kuvyrkov ++ ++ gcc/ ++ * doc/tm.texi (TARGET_COMMUTATIVE_OPERAND_PRECEDENCE): Document. ++ * target.h (commutative_operand_precedence): New hook. ++ * target-def.h (TARGET_COMMUTATIVE_OPERAND_PRECEDENCE): Define ++ the default. ++ * rtlanal.c (commutative_operand_precedence): Use the new hook. ++ Move favoring of pointer objects to ... ++ * config/rs6000/rs6000.c (rs6000_commutative_operand_precedence): ++ ... here. Implement hook. ++ ++2009-07-02 Andrew Jenner ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-03-30 Andrew Jenner ++ ++ gcc/ ++ * config.gcc: Accept montavista*-, not just montavista-. ++ * config/mips/t-montavista-linux: Add Octeon multilibs. ++ ++2009-07-02 Andrew Jenner ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-02-04 Andrew Jenner ++ ++ gcc/ ++ * config.gcc: Handle arm-montavista-linux-gnueabi, ++ mips-montavista-linux-gnu, mips64octeon*-montavista-elf* and ++ powerpc-montavista-linux-gnu. ++ * config/rs6000/t-montavista-linux: New file. ++ * config/rs6000/montavista-linux.h: New file. ++ * config/arm/t-montavista-linux: New file. ++ * config/arm/montavista-linux.h: New file. ++ * config/mips/t-montavista-linux: New file. ++ * config/mips/t-montavista-elf: New file. ++ * config/mips/montavista-linux.h: New file. ++ ++ libgcc/ ++ * config.host: Handle mips64octeon-montavista-elf*. ++ ++2009-07-02 Andrew Jenner ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-02-17 Andrew Jenner ++ Maciej Rozycki ++ ++ gcc/ ++ * unwind.inc (_Unwind_RaiseException): Use return value of ++ uw_init_context. ++ * unwind-dw2.c (uw_init_context): Make macro an expression instead of ++ a statement. ++ (uw_init_context_1): Add return value. ++ * unwind-sjlj.c (uw_init_context): Add return value. ++ ++2009-07-02 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.h (ISA_HAS_UL_US): Delete extraneous ++ definition. Fix typo. ++ * config/mips/mips.c (mips_expand_ext_as_unaligned_load): ++ Generate mov_uld or mov_ulw if ISA_HAS_UL_US. ++ * config/mips/mips.md (UNSPEC_UNALIGNED_LOAD): Equate to 60. ++ (UNSPEC_UNALIGNED_STORE): Equate to 61. ++ ++2009-07-02 Mark Mitchell ++ ++ Issue #5943 ++ ++ Backport from mainline: ++ ++ 2009-07-02 Mark Mitchell ++ ++ gcc/cp/ ++ * typeck.c (cp_build_binary_op): Move warnings about use of NULL ++ in arithmetic earlier and allow comparisions of NULL with ++ pointers-to-members. ++ ++ gcc/testsuite/ ++ * g++.dg/warn/null4.C: Extend. ++ ++2009-07-02 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * haifa-sched.c (max_issue): Fix handling of number of instruction to ++ try. ++ ++2009-07-02 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * haifa-sched.c (insn_finishes_cycle_p): New static function. ++ (max_issue): Use it. ++ * sched-int.h (struct sched_info: insn_finishes_block_p): New ++ scheduler hook. ++ * sched-rgn.c (rgn_insn_finishes_block_p): Implement it. ++ (region_sched_info): Update. ++ * sched-ebb.c (ebb_sched_info): Update. ++ * modulo-sched.c (sms_sched_info): Update. ++ * sel-sched-ir.c (sched_sel_haifa_sched_info): Update. ++ ++2009-07-01 Joseph Myers ++ ++ Issue #4168 ++ ++ gcc/ ++ * gcc.c (using_libgcc, executing_linker): New. ++ (execute): Check that libgcc.a exists in the multilib directory ++ when linking. ++ (process_command): Set using_libgcc to 0 for -nodefaultlibs, ++ -nostdlib and -B options. ++ (main): Set executing_linker when processing spec that may run the ++ linker. ++ ++2009-07-01 Catherine Moore ++ ++ gcc/testsuite/ ++ * gcc.target/mips/mips.exp (mips_option_groups): Add ++ -mocteon-useun. ++ * gcc.target/mips/octeon-useun.c: Change dg-mips-options to ++ dg-options. ++ * gcc.target/mips/branch-2.c: Likewise. ++ ++2009-07-01 Catherine Moore ++ ++ gcc/testsuite/ ++ * gcc.c-torture/execute/ieee/ieee.exp: Link with floating ++ point emulation for mips-sde-elf targets. ++ ++2009-06-30 Daniel Gutson ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-08-27 Daniel Gutson ++ ++ Janus 2CC ARM shift fix: ++ gcc/ ++ * config/arm/arm.md (*addsi3_carryin_shift): Added "length" clause ++ to handle the extra NOP. ++ (andsi_not_shiftsi_si): Likewise. ++ (*thumb1_ashlsi3): Likewise. ++ (*thumb1_ashrsi3): Likewise. ++ (*thumb1_lshrsi3): Likewise. ++ (*thumb1_rotrsi3): Likewise. ++ (*arm_shiftsi3): Likewise. ++ (*shiftsi3_compare0): Likewise. ++ (*shiftsi3_compare0_scratch): Likewise. ++ (*arm_notsi_shiftsi): Likewise. ++ (*arm_notsi_shiftsi_compare0): Likewise. ++ (*arm_not_shiftsi_compare0_scratch): Likewise. ++ (*arm_cmpsi_shiftsi): Likewise. ++ (*arm_cmpsi_shiftsi_swp): Likewise. ++ (*arm_cmpsi_negshiftsi_si): Likewise. ++ (*arith_shiftsi): Likewise. ++ (*arith_shiftsi_compare0): Likewise. ++ (*arith_shiftsi_compare0_scratch): Likewise. ++ (*sub_shiftsi): Likewise. ++ (*sub_shiftsi_compare0): Likewise. ++ (*sub_shiftsi_compare0_scratch): Likewise. ++ (*if_shift_move): Likewise. ++ (*if_move_shift): Likewise. ++ (*if_shift_shift): Likewise. ++ (*thumb1_ashlsi3_janus2): New. Duplicated pattern to handle the ++ extra NOP. ++ (*thumb1_ashrsi3_janus2): Likewise. ++ (*thumb1_lshrsi3_janus2): Likewise. ++ (*thumb1_rotrsi3_janus2): Likewise. ++ * config/arm/arm.c (arm_print_operand): Added the nop after the %S ++ pattern. ++ (arm_override_options): Added handling of the -mfix-janus-2cc flag ++ * config/arm/arm.h (janus2_code): Declare. ++ * config/arm/arm.opt (-mfix-janus-2cc): New. ++ ++ testsuite/ ++ * lib/target-supports.exp (check_effective_target_arm_no_thumb): ++ New function. ++ * gcc.target/arm/janus-2cc-shift-1.c: New. ++ * gcc.target/arm/janus-2cc-shift-2.c: New. ++ ++2009-06-29 Daniel Jacobowitz ++ ++ gcc/ ++ * config/arm/neon-testgen.ml: Use dg-add-options arm_neon. ++ ++ gcc/testsuite/ ++ * gcc/target/arm/neon/: Regenerated test cases. ++ ++ * gcc.target/arm/neon/polytypes.c, ++ gcc.target/arm/neon-vmla-1.c, gcc.target/arm/neon-vmls-1.c, ++ gcc.target/arm/neon-cond-1.c, gcc.dg/torture/arm-fp16-ops-8.c, ++ gcc.dg/torture/arm-fp16-ops-7.c, g++.dg/ext/arm-fp16/arm-fp16-ops-7.C, ++ g++.dg/ext/arm-fp16/arm-fp16-ops-8.C, g++.dg/abi/mangle-neon.C: Use ++ dg-add-options arm_neon. ++ ++ * gcc.target/arm/fp16-compile-vcvt.c, gcc.dg/torture/arm-fp16-ops-5.c, ++ gcc.dg/torture/arm-fp16-ops-6.c, g++.dg/ext/arm-fp16/arm-fp16-ops-5.C, ++ g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Use dg-add-options arm_neon_fp16 ++ and arm_neon_fp16_ok. ++ ++ * gcc.dg/vect/vect.exp, g++.dg/vect/vect.exp, ++ gfortran.dg/vect/vect.exp: Use add_options_for_arm_neon. ++ ++ * lib/target-supports.exp (add_options_for_arm_neon): New. ++ (check_effective_target_arm_neon_ok_nocache): New, from ++ check_effective_target_arm_neon_ok. Check multiple possibilities. ++ (check_effective_target_arm_neon_ok): Use ++ check_effective_target_arm_neon_ok_nocache. ++ (add_options_for_arm_neon_fp16) ++ (check_effective_target_arm_neon_fp16_ok) ++ check_effective_target_arm_neon_fp16_ok_nocache): New. ++ (check_effective_target_arm_neon_hw): Use add_options_for_arm_neon. ++ ++2009-06-29 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2005-03-10 Julian Brown ++ libstdc++-v3/ ++ * configure.ac (LIBSUPCXX_PRONLY): New AM_CONDITIONAL: yes ++ if we are compiling for SymbianOS on ARM. ++ * include/Makefile.am: Don't install C++ headers if ++ LIBSUPCXX_PRONLY is true. ++ * libsupc++/Makefile.am: Include only eh_personality.cc ++ in libsupc++ if LIBSUPCXX_PRONLY is true. ++ * Makefile.in: Regenerate. ++ * configure: Regenerate. ++ * include/Makefile.in: Regenerate. ++ * libmath/Makefile.in: Regenerate. ++ * libsupc++/Makefile.in: Regenerate. ++ * po/Makefile.in: Regenerate. ++ * src/Makefile.in: Regenerate. ++ * testsuite/Makefile.in: Regenerate. ++ ++2009-06-29 Nathan Sidwell ++ ++ Merge from Sourcery G++ 4.3: ++ 2009-02-27 Daniel Gutson ++ Issue #4459 ++ gcc/ ++ * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added. ++ * config/arm/arm-cores.def: Comment added. ++ * config/arm/bpapi.h (BE8_LINK_SPEC): New define. ++ (LINK_SPEC): BE_LINK_SPEC added. ++ ++ Merge from Sourcery G++ 4.3: ++ 2009-04-21 Andrew Jenner ++ gcc/testsuite/ ++ * lib/target-supports.exp: Handle powerpc-*-elf. ++ ++2009-06-26 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-08-10 Catherine Moore ++ Merge from Sourcery G++ 4.2: ++ 2008-02-28 Julian Brown ++ Merge from MIPS: ++ gcc/ ++ * Makefile.in (stmp-int-hdrs): Don't depend on ++ fixinc_list. Only ++ process fixincludes if fixinc_list is ++ present. ++ (install-mkheaders): Likewise. ++ ++2009-06-26 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-08-10 Catherine Moore ++ Merge from Sourcery G++ 4.2: ++ 2008-02-11 Julian Brown ++ Merge from MIPS: ++ 2004-06-29 Nigel Stephens ++ ++ * Makefile.in (libgcc.mk): Make this depend on ++ $(tmake_file), in ++ case new multilib options have been defined. ++ (s-mlib): Similarly. ++ ++2009-06-26 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-10-12 Catherine Moore ++ gcc/ ++ * config/mips/mips.opt (muclibc): New option entry. ++ * config/mips/mips.c (mips_override_options): Disable ++ __thread support when the -muclibc option is used. ++ ++2009-06-26 Maxim Kuvyrkov ++ ++ gcc/ ++ * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to ++ handle 2.6.30 kernel. ++ ++2009-06-26 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-02-26 Joseph Myers ++ ++ Issue #4730 ++ ++ gcc/ ++ * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args): ++ Use base ABI for conversion libfuncs between HFmode and SFmode. ++ ++2009-06-26 Sandra Loosemore ++ ++ Backport fp16 support from FSF mainline: ++ ++ 2009-05-20 Sandra Loosemore ++ ++ gcc/ ++ * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE, ++ TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and ++ TARGET_CONVERT_TO_TYPE. ++ * hooks.c (hook_tree_const_tree_null): Define. ++ * hooks.h (hook_tree_const_tree_null): Declare. ++ * target.h (struct gcc_target): Add invalid_parameter_type, ++ invalid_return_type, promoted_type, and convert_to_type fields. ++ * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define. ++ (TARGET_INVALID_RETURN_TYPE): Define. ++ (TARGET_PROMOTED_TYPE): Define. ++ (TARGET_CONVERT_TO_TYPE): Define. ++ (TARGET_INITIALIZER): Update for new fields. ++ * c-decl.c (grokdeclarator): Check targetm.invalid_return_type. ++ (grokparms): Check targetm.invalid_parameter_type. ++ * c-typeck.c (default_conversion): Check targetm.promoted_type. ++ * c-convert.c (convert): Check targetm.convert_to_type. ++ ++ gcc/cp/ ++ * typeck.c (default_conversion): Check targetm.promoted_type. ++ * decl.c (grokdeclarator): Check targetm.invalid_return_type. ++ (grokparms): Check targetm.invalid_parameter_type. ++ * cvt.c (ocp_convert): Check targetm.convert_to_type. ++ (build_expr_type_conversion): Check targetm.promoted_type. ++ ++ 2009-05-15 Sandra Loosemore ++ ++ gcc/ ++ * real.c (encode_ieee_half): Define. ++ (decode_ieee_half): Define. ++ (ieee_half_format): Define. ++ (arm_half_format): Define. ++ * real.h (ieee_half_format): Declare. ++ (arm_half_format): Declare. ++ ++ 2009-05-15 Sandra Loosemore ++ ++ gcc/ ++ * fold-const.c (fold_convert_const_real_from_real): Check for ++ overflow. ++ ++ 2009-06-18 Sandra Loosemore ++ ++ gcc/ ++ * doc/extend.texi (Half-Precision): New section. ++ * doc/invoke.texi (Option Summary): List -mfp16-format. ++ (ARM Options): List neon-fp16 as -mfpu value. Document -mfp16-format. ++ * config/arm/arm.opt (mfp16-format=): New. ++ * config/arm/arm.c: Include intl.h. ++ (TARGET_INVALID_PARAMETER_TYPE): Redefine. ++ (TARGET_INVALID_RETURN_TYPE): Redefine. ++ (TARGET_PROMOTED_TYPE): Redefine. ++ (TARGET_CONVERT_TO_TYPE): Redefine. ++ (arm_fp16_format): Define. ++ (all_fpus): Add entry for neon-fp16. ++ (fp_model_for_fpu): Likewise. ++ (struct fp16_format): Declare. ++ (all_fp16_formats): Define. ++ (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic ++ functions. ++ (arm_override_options): Set arm_fp16_format. Call sorry for fp16 ++ and no ldrh. ++ (arm_legitimate_index_p): Treat HFmode like HImode. ++ (thumb1_legitimate_address_p): Make it recognize HFmode constants. ++ (coproc_secondary_reload_class): Special-case HFmode. ++ (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16. ++ (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers. ++ (arm_init_fp16_builtins): New. ++ (arm_init_builtins): Call it. ++ (arm_invalid_parameter_type): New. ++ (arm_invalid_return_type): New. ++ (arm_promoted_type): New. ++ (arm_convert_to_type). ++ (arm_file_start): Deal with neon-fp16 as fpu_name. Emit tag for fp16 ++ format. ++ (arm_emit_fp16_const): New function. ++ (arm_mangle_type): Mangle __fp16 as "Dh". ++ * config/arm/arm.h (TARGET_VFPD32): Make it know about ++ FPUTYPE_NEON_FP16. ++ (TARGET_NEON_FP16): New. ++ (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16. ++ (enum fputype): Add FPUTYPE_NEON_FP16. ++ (enum arm_fp16_format_type): Declare. ++ (arm_fp16_format): Declare. ++ (LARGEST_EXPONENT_IS_NORMAL): Define. ++ * config/arm/arm-protos.h (arm_emit_fp16_const): Declare. ++ * config/arm/arm-modes.def (HFmode): Define. ++ * config/arm/vfp.md: (*movhf_vfp): New. ++ (extendhfsf2): New. ++ (truncsfhf2): New. ++ * config/arm/arm.md: (fpu): Add neon_fp16. ++ (floatsihf2, floatdihf2): New. ++ (fix_trunchfsi2, fix_trunchfdi2): New. ++ (truncdfhf2): New. ++ (extendhfdf2): New. ++ (movhf): New. ++ (*arm32_movhf): New. ++ (*thumb1_movhf): New. ++ (consttable_2): Add check for HFmode constants. ++ (consttable_4): Handle HFmode constants. ++ ++ 2009-06-18 Paul Brook ++ Sandra Loosemore ++ ++ gcc/ ++ * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define. ++ (__extendhfsf2, __truncsfhf2): Define. ++ * config/arm/fp16.c: New file. ++ * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c. ++ * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Add fp16.c. ++ ++ 2009-06-18 Sandra Loosemore ++ ++ gcc/testsuite/ ++ * gcc.target/arm/fp16-compile-alt-1.c: New. ++ * gcc.target/arm/fp16-compile-alt-2.c: New. ++ * gcc.target/arm/fp16-compile-alt-3.c: New. ++ * gcc.target/arm/fp16-compile-alt-4.c: New. ++ * gcc.target/arm/fp16-compile-alt-5.c: New. ++ * gcc.target/arm/fp16-compile-alt-6.c: New. ++ * gcc.target/arm/fp16-compile-alt-7.c: New. ++ * gcc.target/arm/fp16-compile-alt-8.c: New. ++ * gcc.target/arm/fp16-compile-alt-9.c: New. ++ * gcc.target/arm/fp16-compile-alt-10.c: New. ++ * gcc.target/arm/fp16-compile-alt-11.c: New. ++ * gcc.target/arm/fp16-compile-ieee-1.c: New. ++ * gcc.target/arm/fp16-compile-ieee-2.c: New. ++ * gcc.target/arm/fp16-compile-ieee-3.c: New. ++ * gcc.target/arm/fp16-compile-ieee-4.c: New. ++ * gcc.target/arm/fp16-compile-ieee-5.c: New. ++ * gcc.target/arm/fp16-compile-ieee-6.c: New. ++ * gcc.target/arm/fp16-compile-ieee-7.c: New. ++ * gcc.target/arm/fp16-compile-ieee-8.c: New. ++ * gcc.target/arm/fp16-compile-ieee-9.c: New. ++ * gcc.target/arm/fp16-compile-ieee-10.c: New. ++ * gcc.target/arm/fp16-compile-ieee-11.c: New. ++ * gcc.target/arm/fp16-compile-none-1.c: New. ++ * gcc.target/arm/fp16-compile-exprtype.c: New. ++ * gcc.target/arm/fp16-compile-vcvt.c: New. ++ * gcc.target/arm/fp16-builtins-1.c: New. ++ * gcc.target/arm/fp16-rounding-alt-1.c: New. ++ * gcc.target/arm/fp16-rounding-ieee-1.c: New. ++ * gcc.target/arm/fp16-param-1.c: New. ++ * gcc.target/arm/fp16-return-1.c: New. ++ * gcc.target/arm/fp16-unprototyped-1.c: New. ++ * gcc.target/arm/fp16-unprototyped-2.c: New. ++ * gcc.target/arm/fp16-variadic-1.c: New. ++ * gcc.dg/torture/arm-fp16-compile-assign.c: New. ++ * gcc.dg/torture/arm-fp16-compile-convert.c: New. ++ * gcc.dg/torture/arm-fp16-int-convert-alt.c: New. ++ * gcc.dg/torture/arm-fp16-int-convert-ieee.c: New. ++ * gcc.dg/torture/arm-fp16-ops.h: New. ++ * gcc.dg/torture/arm-fp16-ops-1.c: New. ++ * gcc.dg/torture/arm-fp16-ops-2.c: New. ++ * gcc.dg/torture/arm-fp16-ops-3.c: New. ++ * gcc.dg/torture/arm-fp16-ops-4.c: New. ++ * gcc.dg/torture/arm-fp16-ops-5.c: New. ++ * gcc.dg/torture/arm-fp16-ops-6.c: New. ++ * gcc.dg/torture/arm-fp16-ops-7.c: New. ++ * gcc.dg/torture/arm-fp16-ops-8.c: New. ++ * g++.dg/ext/arm-fp16/fp16-overload-1.C: New. ++ * g++.dg/ext/arm-fp16/fp16-return-1.C: New. ++ * g++.dg/ext/arm-fp16/fp16-param-1.C: New. ++ * g++.dg/ext/arm-fp16/fp16-mangle-1.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops.h: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-1.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-2.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-3.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-4.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-5.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-7.C: New. ++ * g++.dg/ext/arm-fp16/arm-fp16-ops-8.C: New. ++ ++ 2009-06-18 Sandra Loosemore ++ ++ gcc/ ++ * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine. ++ (arm_scalar_mode_supported_p): New function. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/fp16-compile-none-2.c: New. ++ * gcc.target/arm/fp16-compile-ieee-12.c: New. ++ * gcc.target/arm/fp16-compile-alt-12.c: New. ++ ++2009-06-24 Daniel Gutson ++ ++ Merge from Sourcery G++ 4.3: ++ ++ Issue #4753 ++ ++ gcc/ ++ * config/arm/arm-cores.def: Added core cortex-m0. ++ * config/arm/arm-tune.md ("tune"): Aded cortexm0. ++ * doc/invoke.texi: Added entry for cpu ARM Cortex-M0. ++ ++2009-06-24 Daniel Jacobowitz ++ ++ * release-notes-csl.xml (Mixed integer and floating-point code): New ++ note. ++ ++ gcc/ ++ * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register ++ move cost. ++ ++2009-06-23 Daniel Gutson ++ ++ Issue 4909 ++ gcc/ ++ * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro. ++ ++2009-06-23 Kazu Hirata ++ ++ Merge from Sourcery G++ 4.3: ++ ++ Issue #4613 ++ gcc/ ++ * config/arm/arm.c (arm_rtx_costs_1): Teach that the cost of MLS ++ is the same as its underlying multiplication. ++ * config/arm/arm.md (two splitters): New. ++ * config/arm/predicates.md (binary_operator): New. ++ ++2009-06-22 Kazu Hirata ++ ++ Merge from Sourcery G++ 4.3: ++ ++ Issue #5105 ++ gcc/testsuite/ ++ * gcc.target/m68k/pr36134.c: Use dg-skip-if to skip the testcase ++ if there is a conflict with -mcpu=. Use -mcpu=5208. ++ ++2009-06-22 Kazu Hirata ++ ++ Merge from Sourcery G++ 4.3: ++ ++ Issue #3422 ++ * config.gcc (mips64*-*-linux*, mipsisa64*-*-linux*, ++ mips*-*-linux*): Add mips/t-crtfm to tmake_file. ++ * config/mips/crtfastmath.c: New. ++ * config/mips/linux.h (ENDFILE_SPEC): New. ++ * config/mips/linux64.h (ENDFILE_SPEC): New. ++ * config/mips/t-crtfm: New. ++ ++ libgcc/ ++ * config.host (mips64*-*-linux*, mips*-*-linux*): Add mips/t-crtfm ++ to tmake_file. Add crtfastmath.o to extra_parts. ++ * config/mips/t-crtfm: New. ++ ++2009-06-22 Daniel Gutson ++ ++ Issue 4909 ++ ++ gcc/ ++ * config/arm/arm.md (UNSPEC_RBIT): New constant. ++ (rbitsi2): New insn. ++ (ctzsi2): New expand. ++ ++ gcc/testsuite/ ++ * gcc.target/arm/ctz.c: New test case. ++ ++ * release-notes-csl.xml: Document. ++ ++2009-06-22 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-05-14 Maxim Kuvyrkov ++ gcc/ ++ * config/m68k/m68k-devices.def: Add line for MCF5221x. ++ ++2009-06-19 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-10-21 Paul Brook ++ gcc/ ++ * config/arm/arm.md (consttable_4): Handle (high ...). ++ ++2009-06-19 Catherine Moore ++ ++ * release-notes-csl.xml: Document interrupt attributes ++ for MIPS. ++ ++2009-06-19 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-06-04 Paul Brook ++ Fix Issue #2917 ++ gcc/ ++ * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure ++ loads. Allow PRE_DEC. ++ (output_move_neon): Handle PRE_DEC. ++ (arm_print_operand): Add 'A' for neon structure loads. ++ * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype. ++ * config/arm/neon.md (movmisalign): Use Um constraint and %A. ++ * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand ++ calls. ++ (Um): New constraint. ++ ++2009-06-19 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ Issue #1510 ++ 2007-04-27 Paul Brook ++ gcc/ ++ * cse.c (cse_process_notes): Make sure PLUS are canonical. ++ ++2009-06-19 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-05-28 Paul Brook ++ Avoid Issue #2945 ++ gcc/ ++ * config/arm/arm.md (abssi2): Add TARGET_NO_SINGLE_COND_EXEC expander. ++ (arm_abssi2, arm_neg_abssi2): Enable for Thumb-2. Always split. ++ (arm_nocond_abssi2, arm_nocond_neg_abssi2): New patterns. ++ Add splitters for abssi patterns. ++ * config/arm/thumb2.md (thumb2_abssi2, thumb2_neg_abssi2): Remove. ++ ++2009-06-19 Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ 2007-03-30 Paul Brook ++ gcc/ ++ * calls.c (store_one_arg): Check alignment of mode used for save. ++ ++2009-06-19 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2007-02-16 Richard Sandiford ++ gcc/ ++ * config/m68k/m68k.h (INDEX_REG_CLASS): Delete in favor of... ++ (MODE_INDEX_REG_CLASS): ...this new macro. Return NO_REGS unless ++ MODE_OK_FOR_INDEX_P. ++ (MODE_OK_FOR_INDEX_P): New macro. ++ (REGNO_OK_FOR_INDEX_P): Delete in favor of... ++ (REGNO_MODE_OK_FOR_INDEX_P): ...this new macro. Return false ++ unless MODE_OK_FOR_INDEX_P. ++ (REG_OK_FOR_INDEX_P): Delete in favor of... ++ (REG_MODE_OK_FOR_INDEX_P): ...this new macro. Return false ++ unless MODE_OK_FOR_INDEX_P. ++ * m68k-protos.h (m68k_legitimate_index_reg_p): Add mode argument. ++ * m68k.c (m68k_legitimate_index_reg_p, m68k_decompose_index): ++ Add mode argument. Use it. ++ * config/m68k/m68k.md (tst_cf, cmp_cf, movsf_cf_hard) ++ (movdf_cf_hard, extendsfdf2_cf, truncdfsf2_cf, ftrunc2_cf) ++ (add3_cf, sub3_cf, fmul3_cf, div3_cf) ++ (neg2_cf, sqrt2_cf, abs2_cf): Replace "Q" ++ constraints for FP addresses with "m" constraints. ++ ++ 2007-02-16 Nathan Sidwell ++ gcc/testsuite/ ++ * gcc.dg/m68k-fp-1.c: New. ++ ++2009-06-19 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2007-02-16 Richard Sandiford ++ ++ gcc/ ++ * Makefile.in (postreload.o): Depend on addresses.h. ++ * addresses.h (index_reg_class, ok_for_index_p_1): New functions. ++ (regno_ok_for_index_p): New function. ++ * postreload.c: Include addresses.h. ++ (reload_combine): Use index_reg_class instead of INDEX_REG_CLASS. ++ * ira-costs.c (ok_for_index_p_nonstrict): Add a mode argument. ++ Use ok_for_index_p_1 instead of REGNO_OK_FOR_INDEX_P. ++ (record_address_regs): Use index_reg_class instead of INDEX_REG_CLASS. ++ Update calls to ok_for_index_p_nonstrict. ++ * regrename.c (scan_rtx_address): Use regno_ok_for_index_p instead of ++ REGNO_OK_FOR_INDEX_P and index_reg_class instead of INDEX_REG_CLASS. ++ (replace_oldest_value_addr): Likewise. ++ * reload.c (find_reloads_address): Use index_reg_class instead ++ of INDEX_REG_CLASS. Do not push an index register reload if ++ index_reg_class returns NO_REGS. ++ (find_reloads_address_1): Use index_reg_class instead ++ of INDEX_REG_CLASS and regno_ok_for_index_p instead of ++ REGNO_OK_FOR_INDEX_P. ++ * doc/tm.texi (MODE_INDEX_REG_CLASS): Document new macro. ++ (REGNO_MODE_OK_FOR_INDEX_P): Likewise. ++ ++2009-06-18 Catherine Moore ++ ++ Backport form mainline: ++ ++ 2009-04-02 Chao-ying Fu ++ James Grosbach ++ ++ * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc, ++ num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset, ++ cop0_sp_offset. ++ (machine_function): Add interrupt_handler_p, use_shadow_register_set_p, ++ keep_interrupts_masked_p, use_debug_exception_return_p. ++ (mips_attribute_table): Add interrupt, use_shadow_register_set, ++ keep_interrupts_masked, use_debug_exception_return. ++ (mips_interrupt_type_p, mips_use_shadow_register_set_p, ++ mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p): ++ New functions. ++ (mips_function_ok_for_sibcall): Return false for interrupt handlers. ++ (mips_print_operand): Process COP0 registers to print $0 .. $31 ++ correctly for GAS to process. ++ (mips_interrupt_extra_call_saved_reg_p): New function. ++ (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check ++ extra registers. ++ (mips_cfun_might_clobber_call_saved_reg_p): Likewise. ++ (mips_compute_frame_info): Add supports for interrupt context that ++ includes doubleword accumulators and COP0 registers. ++ (mips_for_each_saved_acc): New function. ++ (mips_for_each_saved_gpr_and_fpr): Change the function name from ++ mips_for_each_saved_reg. ++ (mips_save_reg): Save accumulators. ++ (mips_kernel_reg_p): A new for_each_rtx callback. ++ (mips_expand_prologue): Support interrupt handlers. ++ (mips_restore_reg): Restore accumulators. ++ (mips_expand_epilogue): Support interrupt handlers. ++ (mips_can_use_return_insn): Return false for interrupt handlers. ++ (mips_epilogue_uses): New function. ++ * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI, ++ UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC. ++ (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr, ++ cop0_move): New instructions. ++ * config/mips/mips-protos.h (mips_epilogue_uses): Declare. ++ * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New ++ defines. ++ (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM): ++ New defines. ++ (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines. ++ (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For ++ interrupt handlers, we use K0 as the temporary register. ++ (EPILOGUE_USES): Change to a function call. ++ * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt ++ handlers, we use K0 as the temporary register. ++ ++ * doc/extend.texi (Function Attributes): Document interrupt, ++ use_shadow_register_set, keep_interrupts_masked, ++ use_debug_exception_return for MIPS attributes. ++ ++2009-06-17 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/testsuite/ ++ 2009-06-10 Nathan Froyd ++ ++ * gcc.target/arm/neon-modes-1.c: New test. ++ ++2009-06-17 Joseph Myers ++ ++ Issue #5768 ++ ++ gcc/ ++ * config.gcc (i[34567]86-*-linux*): Use extra config files if ++ --enable-extra-sgxxlite-multilibs. ++ * config/i386/cs-linux-lite.h, config/i386/t-cs-linux-lite: New. ++ ++2009-06-16 Joseph Myers ++ ++ Merge from branches/ix86/gcc-4_4-branch: ++ ++ gcc/ ++ 2009-05-21 H.J. Lu ++ ++ Backport from mainline: ++ 2009-05-21 H.J. Lu ++ Uros Bizjak ++ ++ * config/i386/cpuid.h (bit_MOVBE): New. ++ ++ * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe. ++ ++ * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New. ++ (OPTION_MASK_ISA_MOVBE_UNSET): Likewise. ++ (ix86_handle_option): Handle OPT_mmovbe. ++ (ix86_target_string): Add -mmovbe. ++ (pta_flags): Add PTA_MOVBE. ++ (processor_alias_table): Add PTA_MOVBE to "atom". ++ (override_options): Handle PTA_MOVBE. ++ ++ * config/i386/i386.h (TARGET_MOVBE): New. ++ ++ * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE. ++ (*bswapsi_movbe): New. ++ (*bswapdi_movbe): Likewise. ++ (bswapdi2): Renamed to ... ++ (*bswapdi_1): This. ++ (bswapdi2): New expander. ++ ++ * config/i386/i386.opt (mmovbe): New. ++ ++ * doc/invoke.texi: Document -mmovbe. ++ ++ 2009-05-20 H.J. Lu ++ ++ Backport from mainline: ++ 2009-05-20 H.J. Lu ++ ++ * config/i386/driver-i386.c (host_detect_local_cpu): Check ++ extended family and model for Intel processors. Support Intel ++ Atom. ++ ++ 2009-04-20 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-20 Joey Ye ++ Xuepeng Guo ++ H.J. Lu ++ ++ * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count. ++ ++ * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro. ++ (IX86_LEA_PRIORITY): Likewise. ++ (distance_non_agu_define): New function. ++ (distance_agu_use): Likewise. ++ (ix86_lea_for_add_ok): Likewise. ++ (ix86_dep_by_shift_count): Likewise. ++ ++ * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we ++ should split for LEA. ++ ++ * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new ++ function. ++ (ix86_dep_by_shift_count): Likewise. ++ ++ 2009-04-07 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-07 H.J. Lu ++ ++ * doc/invoke.texi: Document Atom support. ++ ++ 2009-04-06 H.J. Lu ++ ++ * config/i386/i386.md: Revert 2 accidental checkins. ++ ++ 2009-04-06 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-06 Joey Ye ++ Xuepeng Guo ++ H.J. Lu ++ ++ Atom pipeline model, tuning and insn selection. ++ * config.gcc (atom): Add atom config options and target. ++ ++ * config/i386/atom.md: New. ++ ++ * config/i386/i386.c (atom_cost): New cost. ++ (m_ATOM): New macro flag. ++ (initial_ix86_tune_features): Set m_ATOM. ++ (x86_accumulate_outgoing_args): Likewise. ++ (x86_arch_always_fancy_math_387): Likewise. ++ (processor_target): Add Atom cost. ++ (cpu_names): Add Atom cpu name. ++ (override_options): Set Atom ISA. ++ (ix86_issue_rate): New case PROCESSOR_ATOM. ++ (ix86_adjust_cost): Likewise. ++ ++ * config/i386/i386.h (TARGET_ATOM): New target macro. ++ (ix86_tune_indices): Add X86_TUNE_OPT_AGU. ++ (TARGET_OPT_AGU): New target option. ++ (target_cpu_default): Add TARGET_CPU_DEFAULT_atom. ++ (processor_type): Add PROCESSOR_ATOM. ++ ++ * config/i386/i386.md (cpu): Add new value "atom". ++ (use_carry, movu): New attr. ++ (atom.md): Include atom.md. ++ (adddi3_carry_rex64): Set attr "use_carry". ++ (addqi3_carry): Likewise. ++ (addhi3_carry): Likewise. ++ (addsi3_carry): Likewise. ++ (*addsi3_carry_zext): Likewise. ++ (subdi3_carry_rex64): Likewise. ++ (subqi3_carry): Likewise. ++ (subhi3_carry): Likewise. ++ (subsi3_carry): Likewise. ++ (x86_movdicc_0_m1_rex64): Likewise. ++ (*x86_movdicc_0_m1_se): Likewise. ++ (x86_movsicc_0_m1): Likewise. ++ (*x86_movsicc_0_m1_se): Likewise. ++ (*adddi_1_rex64): Emit add insn as much as possible. ++ (*addsi_1): Likewise. ++ (return_internal): Set atom_unit. ++ (return_internal_long): Likewise. ++ (return_pop_internal): Likewise. ++ (*rcpsf2_sse): Set atom_sse_attr attr. ++ (*qrt2_sse): Likewise. ++ ++ 2009-04-02 H.J. Lu ++ ++ Backport from mainline: ++ 2009-04-02 H.J. Lu ++ ++ * config/i386/i386.c (ix86_abi): Move initialization to ... ++ (override_options): Here. ++ ++ 2009-03-29 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-29 H.J. Lu ++ ++ * config/i386/i386-protos.h (ix86_agi_dependent): New. ++ ++ * config/i386/i386.c (ix86_agi_dependent): Rewrite. ++ (ix86_adjust_cost): Updated. ++ ++ 2009-03-27 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-27 H.J. Lu ++ ++ PR target/39472 ++ * config/i386/i386.c (ix86_abi): New. ++ (override_options): Handle -mabi=. ++ (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ++ ix86_abi. ++ (ix86_call_abi_override): Likewise. ++ (init_cumulative_args): Likewise. ++ (function_arg_advance): Likewise. ++ (function_arg_64): Likewise. ++ (function_arg): Likewise. ++ (ix86_pass_by_reference): Likewise. ++ (ix86_function_value_regno_p): Likewise. ++ (ix86_build_builtin_va_list_abi): Likewise. ++ (setup_incoming_varargs_64): Likewise. ++ (is_va_list_char_pointer): Likewise. ++ (ix86_init_machine_status): Likewise. ++ (ix86_reg_parm_stack_space): Use enum calling_abi on ++ call_abi. ++ (ix86_function_type_abi): Return enum calling_abi. Rewrite ++ for 64bit. Replace DEFAULT_ABI with ix86_abi. ++ (ix86_function_abi): Make it static and return enum ++ calling_abi. ++ (ix86_cfun_abi): Return enum calling_abi. Replace DEFAULT_ABI ++ with ix86_abi. ++ (ix86_fn_abi_va_list): Updated. ++ ++ * config/i386/i386.h (ix86_abi): New. ++ (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi. ++ (CONDITIONAL_REGISTER_USAGE): Likewise. ++ (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi. ++ (machine_function): Likewise. ++ ++ * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI ++ with ix86_abi. ++ * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise. ++ (STACK_BOUNDARY): Likewise. ++ * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise. ++ ++ * config/i386/i386.opt (mabi=): New. ++ ++ * config/i386/i386-protos.h (ix86_cfun_abi): Changed to ++ return enum calling_abi. ++ (ix86_function_type_abi): Likewise. ++ (ix86_function_abi): Removed. ++ ++ 2009-03-27 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-27 Vladimir Makarov ++ ++ * genautomata.c: Add a new year to the copyright. Add a new ++ reference. ++ (struct insn_reserv_decl): Add comments for member bypass_list. ++ (find_bypass): Remove. ++ (insert_bypass): New. ++ (process_decls): Use insert_bypass. ++ (output_internal_insn_latency_func): Output all bypasses with the ++ same input insn in one switch case. ++ ++ * rtl.def (define_bypass): Describe bypass choice. ++ * doc/md.texi (define_bypass): Ditto. ++ ++ gcc/testsuite/ ++ 2009-05-21 H.J. Lu ++ ++ Backport from mainline: ++ 2009-05-21 H.J. Lu ++ ++ * gcc.target/i386/movbe-1.c: New. ++ * gcc.target/i386/movbe-2.c: Likewise. ++ ++ 2009-03-27 H.J. Lu ++ ++ Backport from mainline: ++ 2009-03-27 H.J. Lu ++ ++ PR target/39472 ++ * gcc.target/x86_64/abi/callabi/func-2a.c: New. ++ * gcc.target/x86_64/abi/callabi/func-2b.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/func-indirect-2a.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/func-indirect-2b.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/vaarg-4a.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/vaarg-4b.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/vaarg-5a.c: Likewise. ++ * gcc.target/x86_64/abi/callabi/vaarg-5b.c: Likewise. ++ ++2009-06-16 Daniel Jacobowitz ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-09-08 Daniel Jacobowitz ++ ++ gcc/ ++ * config/arm/unwind-arm.c (__gnu_unwind_pr_common): Correct test ++ for barrier handlers. ++ ++2009-06-16 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2006-12-15 Richard Sandiford ++ gcc/testsuite/ ++ * gcc.target/mips/octeon-useun.c: New test. ++ ++2009-06-16 Daniel Jacobowitz ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-04-04 Daniel Jacobowitz ++ ++ gcc/testsuite/ ++ * gcc.dg/pr34263.c: Add -fno-unroll-loops. ++ ++2009-06-16 Daniel Jacobowitz ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-12-03 Daniel Jacobowitz ++ ++ gcc/testsuite/ ++ * gcc.dg/vect/vect-shift-2.c, gcc.dg/vect/vect-shift-3.c: New. ++ * lib/target-supports.exp (check_effective_target_vect_shift_char): New ++ function. ++ ++2009-06-16 Daniel Jacobowitz ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-04-04 Daniel Jacobowitz ++ ++ gcc/ ++ * config/arm/arm.md (insv): Do not share operands[0]. ++ ++2009-06-16 Andrew Stubbs ++ ++ gcc/testsuite/ ++ * gcc.target/sh/20080410-1.c: Remove obsolete -fira option. ++ ++2009-06-16 Andrew Stubbs ++ ++ gcc/ ++ * config.gcc (sh*-*-*): Add sh/cs-sgxxlite-linux.opt when ++ --enable-extra-sgxxlite-multilibs. ++ * config/sh/cs-sgxxlite-linux.h: Define SUBTARGET_OVERRIDE_OPTIONS. ++ * config/sh/cs-sgxxlite-linux.opt: New file. ++ ++2009-06-16 Nathan Sidwell ++ ++ Merge 2009-03-06 Mark Mitchell ++ gcc/ ++ * configure.ac (--with-specs): New option. ++ * configure: Regenerated. ++ * gcc.c (driver_self_specs): Include CONFIGURE_SPECS. ++ * Makefile.in (DRIVER_DEFINES): Add -DCONFIGURE_SPECS. ++ ++ Merge 2009-04-04 Daniel Jacobowitz ++ gcc/ ++ * gcc.c (do_self_spec): Handle switches with arguments. ++ ++ Merge 2008-07-25 Mark Mitchell ++ Issue #3433 ++ gcc/ ++ * gcc.c (SWITCHES_NEED_SPACES): Define to "o". ++ ++2009-06-15 Nathan Sidwell ++ ++ Merge from Sourcery G++ 4.3. ++ ++ Issue 3304 ++ gcc/ ++ * config/arm/arm.c (arm_print_operand): Deal with HIGH. ++ * config/arm/constraints.md (j): New constraint for movw operands. ++ (N): Remove thumb2 meaning. ++ * config/arm/arm.md (*arm_movw): Delete. ++ (*arm_movsi_insn): Use j constraint for movw instead of N constraint. ++ * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise. ++ * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise. ++ ++2009-06-15 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2006-12-15 Richard Sandiford ++ Adapted from a patch by Cavium Networks. ++ gcc/ ++ * config/mips/mips.opt (mocteon-useun): New option. ++ * config/mips/mips.h: (ISA_HAS_UL_US): New macro. ++ (ASM_SPEC): Pass down -mocteon-useun and -mno-octeon-useun. ++ * config/mips/mips.c (mips_expand_ext_as_unaligned_load): Use ++ mov_ulw and mov_uld if ISA_HAS_UL_US. ++ (mips_expand_ins_as_unaligned_store): Likewise mov_usw and mov_usd. ++ * config/mips/mips.md: (UNSPEC_UNALIGNED_LOAD, ++ UNSPEC_UNALIGNED_STORE): New constants. ++ (mov_l, mov_r, mov_l, mov_r): Require ++ ISA_HAS_UL_US. ++ (mov_u, mov_u): New patterns. ++ ++2009-06-15 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.opt: Revert last patch. ++ * config/mips/mips-protos.h : Likewise. ++ * config/mips/mips.h: Likewise. ++ * config/mips/mips.md: Likewise. ++ * config/mips/mips.c: Likewise. ++ ++2009-06-12 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2006-12-15 Richard Sandiford ++ Adapted from a patch by Cavium Networks. ++ gcc/ ++ * config/mips/mips.opt (mocteon-useun): New option. ++ * config/mips/mips-protos.h (mips_lower_sign_bit_p, mips_use_ext_p): Declare. ++ (mips_adjust_register_ext_operands): Likewise. ++ * config/mips/mips.h (ISA_HAS_SEB_SEH, ISA_HAS_INS_EXT): Include TARGET_OCTEON. ++ (ISA_HAS_UL_US): New macro. ++ (ASM_SPEC): Pass down -mocteon-useun and -mno-octeon-useun. ++ * config/mips/mips.c (mips_cpu_info_table): Add an octeon entry. ++ (mips_rtx_cost_data): Adjust octeon costs. ++ (mips_expand_ext_as_unaligned_load): Use mov_ulw and mov_uld if ++ ISA_HAS_UL_US. ++ (mips_expand_ins_as_unaligned_store): Likewise mov_usw and mov_usd. ++ (mips_lower_sign_bit_p, mips_use_ins_p, mips_use_ext_p): New functions. ++ (mips_adjust_register_ext_operands): Likewise. ++ * config/mips/mips.md: (UNSPEC_UNALIGNED_LOAD, ++ UNSPEC_UNALIGNED_STORE): New constants. ++ (topbit): New mode attribute. ++ (any_extract ): New code macro. ++ (*_trunc_exts): New pattern. ++ (zero_extendsidi2): Turn into a define_expand. Rename old ++ define_insn_and_split to... ++ (*clear_upper32): Require !ISA_HAS_EXT_INS. ++ (*zero_extendsidi2_dext, *clear_upper32_dext): New patterns. ++ (*extv_truncdi): New pattern. ++ (extzv): Use mips_use_ext_p instead of mips_use_ins_ext_p. ++ Call mips_adjust_register_ext_operands. ++ (*extzv_truncdi, *extz_truncdi_exts): New patterns. ++ (insv): Use mips_use_ins_p instead of mips_use_ins_ext_p. ++ Fix formatting. ++ (insv): Use mips_use_ins_p instead of mips_use_ins_ext_p. ++ (*insvdi, *insv__di, *insvdi_clear_upper32) ++ (*cins): New patterns. ++ (mov_u, mov_u): New patterns. ++ (*truncsi_storeqi, *truncsi_storehi): Likewise. ++ * config/mips/predicates.md (mask_low_and_shift_operator): New ++ predicate. ++ ++ 2008-07-24 Joseph Myers ++ gcc/ ++ * config/mips/mips.c (mips_expand_ins_as_unaligned_store): Restore ++ Octeon unaligned store support. ++ ++ 2008-07-29 Catherine Moore ++ Daniel Jacobowitz ++ gcc/ ++ * config/mips/mips.h (ISA_HAS_BBIT): Enable for TARGET_OCTEON. ++ * config/mips/mips.md (branch_with_likely): New attribute. ++ (branch_without_likely): New attribute. ++ (define_delay): Check for new branch_likely attributes. ++ (branch_bit): Set branch_without_likely to "yes". ++ (branch_bit_truncdi): Likewise. ++ (branch_bit_inverted): Likewise. ++ (branch_bit_truncdi_inverted): Likewise. ++ ++2009-06-12 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-03-09 Nathan Froyd ++ gcc/ ++ * tree-ssa-loop-promote.c: New file. ++ * common.opt (fpromote-loop-indices): New option. ++ * timevar.def (TV_TREE_LOOP_PROMOTE): New timevar. ++ * Makefile.in (tree-ssa-loop-promote.o): New rule. ++ (OBJS-comon): Include it. ++ * tree-pass.h (pass_promote_short_indices): Declare. ++ * passes.c (init_optimization_passes): Add it. ++ * pointer-set.h (pointer_set_n_elements, pointer_set_clear, ++ pointer_map_n_elements, pointer_map_clear): Declare. ++ * pointer-set.c (pointer_set_n_elements, pointer_set_clear, ++ pointer_map_n_elements, pointer_map_clear): Define. ++ ++ gcc/doc/ ++ * invoke.texi (-fpromote-loop-indices): New entry. ++ ++ gcc/testsuite/ ++ * gcc.dg/promote-short-1.c: New file. ++ * gcc.dg/promote-short-2.c: New file. ++ * gcc.dg/promote-short-3.c: New file. ++ * gcc.dg/promote-short-4.c: New file. ++ * gcc.dg/promote-short-5.c: New file. ++ * gcc.dg/promote-short-6.c: New file. ++ * gcc.dg/promote-short-7.c: New file. ++ * gcc.dg/promote-short-8.c: New file. ++ ++ 2009-03-31 Daniel Jacobowitz ++ gcc/ ++ * common.opt (fpromote-loop-indices): Add Optimization keyword. ++ ++ 2009-04-08 Nathan Froyd ++ gcc/ ++ * tree-ssa-loop-promote.c (collection_promotion_candidates): ++ Delay allocation and initialization of new promote_info until we ++ know we have a candidate loop index. ++ ++ 2009-04-09 Nathan Froyd ++ gcc/ ++ * tree-ssa-loop-promote.c (rebuild_with_promotion_1): Load a memory ++ reference prior to promoting it. ++ ++ gcc/testsuite/ ++ * gcc.dg/promote-short-9.c: New test. ++ ++ 2009-04-09 Nathan Froyd ++ gcc/testsuite/ ++ * gcc.dg/promote-short-3.c: XFAIL test for x86, m68k, sh, and mips. ++ ++ 2009-04-13 Kazu Hirata ++ gcc/testsuite/ ++ * gcc.dg/promote-short-3.c: XFAIL on fido. ++ ++2009-06-11 Catherine Moore ++ ++ Merge from SourceryG++ 4.3: ++ Merge from MIPS: ++ 2007-11-29 Thiemo Seufer ++ gcc/ ++ * config/mips/mips.c (override_options): Let -fpic imply ++ -mabicalls, forward port from SDE . ++ ++2009-06-11 Nathan Froyd ++ ++ Backport from upstream: ++ ++ 2009-06-10 Nathan Froyd ++ gcc/ ++ * tree.h (tree_base): Add packed_flag and user_align fields. ++ Decrease size of spare field. ++ (TYPE_USER_ALIGN): Use user_align from tree_base. ++ (DECL_USER_ALIGN): Likewise. ++ (TYPE_PACKED): Use packed_flag from tree_base. ++ (DECL_PACKED): Likewise. ++ (tree_type): Delete packed_flag and user_align fields. Widen ++ precision field. Widen mode field and shuffle fields to align ++ mode on an 8-bit boundary. ++ (tree_decl_common): Delete decl_flag_1 and user_align fields. ++ Renumber decl_flag_* fields. Fix comments. Widen ++ decl_common_unused field. ++ (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* ++ fields. ++ (DECL_EXTERNAL): Likewise. ++ (DECL_BIT_FIELD): Likewise. ++ (DECL_NONADDRESSABLE_P): Likewise. ++ (TYPE_DECL_SUPRESS_DEBUG): Likewise. ++ * config/arm/arm-modes.def (XImode): Make it an INT_MODE. ++ ++2009-06-11 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-01-14 Nathan Froyd ++ gcc/ ++ * tree-ssa-remove-local-statics.c (maybe_discover_new_declaration): ++ Avoid variables with aggregate and vector types. ++ (maybe_create_new_variable): Create the var_ann prior to marking ++ the symbol for renaming. ++ ++ gcc/testsuite/ ++ * gcc.dg/remove-local-statics-15.c: New test. ++ * gcc.dg/remove-local-statics-16.c: New test. ++ ++ 2008-07-21 Nathan Froyd ++ gcc/ ++ * tree-ssa-remove-local-statics.c ++ (find_static_nonvolatile_declarations): Don't check for potential ++ definitions if we're looking at a statement with a CALL_EXPR. ++ (compute_definedness_for_block): Reorganize logic. ++ ++ gcc/testsuite/ ++ * gcc.dg/remove-local-statics-13.c: New test. ++ * gcc.dg/remove-local-statics-14.c: New test. ++ ++ 2008-07-08 Nathan Froyd ++ gcc/ ++ * passes.c (init_optimization_passes): Move pass_remove_local_statics ++ later in the pass order. ++ * tree-ssa-remove-local-statics.c (rls_done): Conditionally free the ++ bitmaps and NULL out bb->aux. ++ (unstaticize_variable): Deal with GIMPLE_MODIFY_STMTs instead of ++ MODIFY_EXPRs. ++ (compute_definedness_for_block): Check for defines only if we haven't ++ found a CALL_EXPR. ++ ++ 2008-05-30 Nathan Froyd ++ gcc/ ++ * tree-ssa-remove-local-statics.c ++ (find_static_nonvolatile_declarations): Use SSA_OP_VDEF. ++ (unstaticize_variable): Likewise. ++ (dump_final_bitmaps): Remove. ++ ++ 2008-02-25 Nathan Froyd ++ gcc/ ++ * tree-ssa-remove-local-statics. (initialize_statement_dataflow): ++ Continue hash table traversal. ++ (compute_definedness_for_block): Delete useless return statement. ++ Adjust comment accordingly. ++ ++ 2007-03-05 Nathan Froyd ++ gcc/ ++ * tree-pass.h (pass_remove_local_statics): Declare. ++ * passes.c (init_optimization_passes): Add ++ pass_remove_local_statics to the optimization passes. ++ * Makefile.in (OBJS-common): Add tree-ssa-remove-local-statics.c. ++ (tree-ssa-remove-local-statics.o): New rule. ++ * tree-ssa-remove-local-statics.c: New file. ++ * c.opt (fremove-local-statics): New option. ++ * timevar.def (TV_RLS): New timevar. ++ * toplev.h (flag_remove_local_statics): Declare. ++ * cgraph.h (struct cgraph_node): Add 'ever_was_nested'. ++ * cgraph.c (cgraph_node): Set ever_was_nested in the node and ++ its parent when creating a new node. ++ gcc/doc/ ++ * invoke.texi: Document -fremove-local-statics. ++ gcc/testsuite/ ++ * gcc.dg/remove-local-statics-1.c: New file. ++ * gcc.dg/remove-local-statics-2.c: New file. ++ * gcc.dg/remove-local-statics-3.c: New file. ++ * gcc.dg/remove-local-statics-4.c: New file. ++ * gcc.dg/remove-local-statics-5.c: New file. ++ * gcc.dg/remove-local-statics-6.c: New file. ++ * gcc.dg/remove-local-statics-7.c: New file. ++ * gcc.dg/remove-local-statics-8.c: New file. ++ * gcc.dg/remove-local-statics-9.c: New file. ++ * gcc.dg/remove-local-statics-10.c: New file. ++ * gcc.dg/remove-local-statics-11.c: New file. ++ * gcc.dg/remove-local-statics-12.c: New file. ++ ++2009-06-10 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-11-23 Richard Sandiford ++ * config/mips/mips.c (mips_legitimize_address): Handle ++ illegitimate CONST_INT addresses. ++ ++2009-06-10 Catherine Moore ++ ++ gcc/ ++ * config/mips/mips.c (mips_cp_restore_slot): Remove declaration ++ of intval and high. ++ (vr4130_swap_insns_p): Remove mis-applied patch. ++ ++2009-06-10 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ 2008-03-25 Maxim Kuvyrkov ++ Julian Brown ++ Merge from MIPS: ++ gcc/ ++ * config/mips/mips-protos.h (dspalu_bypass_p): Add prototype. ++ * config/mips/mips.c (dspalu_bypass_table): New. ++ (dspalu_bypass_p): New. ++ * 24k.md (r24k_dsp_alu, r24k_dsp_mac, r24k_dsp_mac_sat) ++ (r24k_dsp_acc_ext, r24k_dsp_acc_mod): New insn reservations. ++ (r24k_int_mult, r24k_int_mthilo, r24k_dsp_mac, r24k_dsp_mac_sat) ++ (r24k_dsp_acc_ext, r24k_dsp_acc_mod, r24k_dsp_alu): New bypasses. ++ * config/mips/mips.md (dspmac, dspmacsat, accext, accmod, dspalu) ++ (dspalusat): Add insn types. ++ * config/mips/mips-dsp.md (add3) ++ (mips_add_s_) ++ (sub3, mips_sub_s_, mips_addsc) ++ (mips_addwc, mips_modsub, mips_raddu_w_qb, mips_absq_s_) ++ (mips_precrq_qb_ph, mips_precrq_ph_w, mips_precrq_rs_ph_w) ++ (mips_precrqu_s_qb_ph, mips_preceq_w_phl, mips_preceq_w_phr) ++ (mips_precequ_ph_qbl, mips_precequ_ph_qbr, mips_precequ_ph_qbla) ++ (mips_precequ_ph_qbra, mips_preceu_ph_qbl, mips_preceu_ph_qbr) ++ (mips_preceu_ph_qbla, mips_preceu_ph_qbra, mips_shll_) ++ (mips_shll_s_, mips_shll_s_, mips_shrl_qb) ++ (mips_shra_ph, mips_shra_r_, mips_bitrev, mips_insv) ++ (mips_repl_qb, mips_repl_ph, mips_cmp_eq_) ++ (mips_cmp_lt_) ++ (mips_cmp_le_, mips_cmpgu_eq_qb) ++ (mips_cmpgu_lt_qb, mips_cmpgu_le_qb, mips_pick_) ++ (mips_packrl_ph, mips_wrdsp, mips_rddsp): Change type to dspalu. ++ (mips_dpau_h_qbl, mips_dpau_h_qbr, mips_dpsu_h_qbl, mips_dpsu_h_qbr) ++ (mips_dpaq_s_w_ph, mips_dpsq_s_w_ph, mips_mulsaq_s_w_ph) ++ (mips_maq_s_w_phl, mips_maq_s_w_phr, mips_maq_sa_w_phr: Set type to ++ dspmac. ++ (mips_dpaq_sa_l_w, mips_dpsq_sa_l_w, mips_maq_sa_w_phl): Set type to ++ dspmacsat. ++ (mips_extr_w, mips_extr_r_w, mips_extr_rs_w, mips_extp, mips_extpdp): ++ Set type to accext. ++ (mips_shilo, mips_mthlip): Set type to accmod. ++ * config/mips/mips-dspr2.md (mips_absq_s_qb, mips_addu_s_ph) ++ (mips_adduh_r_qb): Set type to dspalusat. ++ (mips_addu_ph, mips_adduh_qb, mips_append, mips_balign) ++ (mips_cmpgdu_eq_qb, mips_cmpgdu_lt_qb, mips_cmpgdu_le_qb) ++ (mips_precr_qb_ph, mips_precr_sra_ph_w, mips_precr_sra_r_ph_w) ++ (mips_prepend, mips_shra_qb, mips_shra_r_qb, mips_shrl_ph) ++ (mips_subu_ph, mips_subuh_qb, mips_subuh_r_qb, mips_addqh_ph) ++ (mips_addqh_r_ph, mips_addqh_w, mips_addqh_r_w, mips_subqh_ph) ++ (mips_subqh_r_ph, mips_subqh_w, mips_subqh_r_w): Set type to dspalu. ++ (mips_dpa_w_ph, mips_dps_w_ph, mips_mulsa_w_ph, mips_dpax_w_ph) ++ (mips_dpsx_w_ph, mips_dpaqx_s_w_ph, mips_dpsqx_s_w_ph): Set type to ++ dspmac. ++ (mips_subu_s_ph): Set type to dspalusat. ++ (mips_dpaqx_sa_w_ph, mips_dpsqx_sa_w_ph): Set type to dspmacsat. ++ ++ 2008-02-15 Julian Brown ++ Merge from MIPS: ++ 2007-11-06 David Ung ++ gcc/ ++ * config/mips/mips.h (AC1HI_REGNUM, AC1LO_REGNUM, AC2HI_REGNUM) ++ (AC2LO_REGNUM, AC3HI_REGNUM, AC3LO_REGNUM): Define constants. ++ ++ Merge from Sourcery G++ 4.2: ++ 2008-03-25 Maxim Kuvyrkov ++ Julian Brown ++ * 74k.md: (r74k_dsp_alu, r74k_dsp_alu_sat, r74k_dsp_mac, r74k_dsp_mac_sat) ++ (r74k_dsp_acc_ext, r74k_dsp_acc_mod): New insn reservations. ++ (r74k_dsp_mac, r74k_dsp_mac_sat, r74k_int_mult, r74k_int_mul3) ++ (r74k_dsp_mac, r74k_dsp_mac_sat): New bypasses. ++ ++2009-06-10 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-02-12 Julian Brown ++ Merge from MIPS: ++ 2007-12-21 David Ung ++ gcc/ ++ * config/mips/mips.h (TARGET_MIPS_SDE): Define macro as 0. ++ * config/mips/mips.md (abs2): Enable abs.[sd] patterns if ++ TARGET_MIPS_SDE && TARGET_HARD_FLOAT. ++ ++ 2008-07-17 Catherine Moore ++ gcc/ ++ * config/mips/sde.h (TARGET_MIPS_SDE): Define to 1. ++ ++2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-06-02 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3, ++ mulv2sf3, divv2sf3): New expanders. ++ * config/rs6000/spe.md (spe_evabs, spe_evand, spe_evaddw, ++ spe_evdivws): Rename to use standard GCC names. ++ * config/rs6000/paired.md (negv2sf, absv2sf2, addv2sf3, subv2sf3, ++ mulv2sf3, divv2sf3): Rename to avoid conflict with the new expanders. ++ ++ 2007-09-19 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (bdesc_2arg, bdesc_1arg): Use new CODE_FOR_ ++ names for renamed patterns. ++ ++2009-06-09 Nathan Froyd ++ ++ Backport from mainline: ++ ++ 2009-04-14 Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug ++ output for other floating point modes. ++ ++2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-11-24 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_savres_strategy): Always use ++ inline saves and restores when compiling position-independent code. ++ ++ 2008-11-17 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_emit_epilogue): Adjust ++ computation of restore_lr. Duplicate restoration of LR and ++ execute the appropriate one depending on whether GPRs are being ++ restored inline. ++ ++ 2008-11-17 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_savres_routine_sym): Fix ++ computation for cache selector. Mark the generated symbol as a ++ function. ++ (rs6000_emit_prologue): Correct condition. ++ * config/rs6000/rs6000.md (*save_gpregs_): Use explicit ++ match for register 11. ++ (*save_fpregs_): Likewise. ++ (*restore_gpregs_): Likewise. ++ (*return_and_restore_gpregs_): Likewise. ++ (*return_and_restore_fpregs_): Likewise. ++ * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for ++ register 11. ++ (*restore_gpregs_spe): Likewise. ++ (*return_and_restore_gpregs_spe): Likewise. ++ ++ 2008-10-24 Nathan Froyd ++ gcc/ ++ * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence ++ problem. ++ ++2009-06-09 Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-07-02 Nathan Froyd ++ gcc/ ++ * config/rs6000/eabi.h (NAME__MAIN, INVOKE__main): Remove. ++ * config/rs6000/t-ppccomm (LIB2FUNS_STATIC_EXTRA): Remove eabi.S. ++ (eabi.S): Remove rule. ++ ++ 2008-10-13 Andrew Stubbs ++ gcc/ ++ * doc/invoke.texi (PowerPC Options): -meabi option no longer places ++ __eabi function in main. ++ ++2009-06-09 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-02-11 David Ung ++ gcc/ ++ * config/mips/mips.c (mips_output_division): When ++ GENERATE_DIVIDE_TRAPS, generate the trap instrutions ++ against zero before the actual divide. This is friendlier ++ to out-of-order cpus like the 74k. ++ ++2009-06-09 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-03-25 Maxim Kuvyrkov ++ Julian Brown ++ Merge from MIPS: ++ gcc/ ++ * config/mips/mips.c (mips_mult_madd_chain_bypass_p): New. ++ * config/mips/mips-protos.h (mips_mult_madd_chain_bypass_p): Add ++ prototype. ++ * config/mips/74k.md: Add bypasses for r74k_int_mult, r74_int_madd, ++ r74k_int_mul3. ++ ++2009-06-09 Nathan Sidwell ++ ++ Forward port 2009-01-27 Nathan Sidwell ++ ++ Issue #4428 ++ gcc/ ++ * config/mips/mips.md (jump): Deal with $gp restoration in delay ++ slot for o32 and o64 ABIs. ++ ++ gcc/testsuite/ ++ * gcc.target/mips/branch-2.c: New. ++ ++2009-06-08 Nathan Froyd ++ ++ Backport from mainline: ++ ++ gcc/ ++ 2009-06-05 Nathan Froyd ++ ++ * config/rs6000/eabi.asm (__eabi_convert): Don't define if ++ _RELOCATABLE. ++ (__eabi_uconvert): Likewise. ++ ++2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-08-25 Nathan Froyd ++ gcc/ ++ * config/rs6000/sysv4.h (LIB_SIM_SPEC): Use LIB_DEFAULT_SPEC. ++ (STARTFILE_SIM_SPEC): Remove sim-crt0.o%s. ++ (ENDFILE_SIM_SPEC): Add -Tsim-hosted.ld. ++ (LINK_OS_SIM_SPEC): Define to empty. ++ ++2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-02-12 Nathan Sidwell ++ Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/eabi-ci.asm (__init): Add _init func start. ++ (__fini): Also declare _fini for newlib. ++ ++2009-06-08 Nathan Froyd ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-08-16 Daniel Jacobowitz ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_conditional_register_usage): Mark ++ call-saved AltiVec registers call-used if ! TARGET_ALTIVEC_ABI. ++ * config/rs6000/rs6000.h (CALL_USED_REGISTERS): Mark the first 20 ++ AltiVec registers call-used. ++ (CALL_REALLY_USED_REGISTERS): Likewise. ++ ++ gcc/testsuite/ ++ * gcc.target/powerpc/altivec-consts.c: Remove -mabi=altivec. ++ * gcc.target/powerpc/altivec-varargs-1.c: Likewise. ++ * gcc.dg/vmx/vmx.exp: Likewise. ++ ++2009-06-03 Mark Mitchell ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2009-02-10 Mark Mitchell ++ libjava/classpath/ ++ * m4/acinclude.m4 (CLASSPATH_TOOLEXECLIBDIR): Match libjava. ++ * configure.ac (--enable-version-specific-runtime-libs): Support. ++ * Makefile.in, */Makefile.in: Regenerated. ++ libjava/ ++ * Makefile.am (pkgconfigdir): Use toolexeclibdir, not $(libdir). ++ * configure.ac (dbexecdir): Likewise. ++ * configure: Regenerated. ++ ++2009-06-03 Joseph Myers ++ ++ fixincludes/ ++ * inclhack.def (glibc_string2_memset): New fix. ++ * fixincl.x: Regenerate. ++ * tests/base/bits/string2.h: Update. ++ ++2009-06-03 Mark Mitchell ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2009-02-10 Mark Mitchell ++ libjava/ ++ * Makefile.am (jardir): Set to a target-specific location. ++ gcc/java/ ++ * Make-lang.in: Adjust to match. ++ ++ Backport from mainline: ++ ++ 2009-06-02 Mark Mitchell ++ * decl.c (maybe_deduce_size_from_array_init): Use relayout_decl. ++ 2009-06-02 Mark Mitchell ++ * g++.dg/init/ref15.C: Require unwrapped targets. ++ ++2009-06-03 Kazu Hirata ++ ++ Backport from mainline: ++ gcc/ ++ 2009-04-14 Kazu Hirata ++ * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift ++ the same as a minus without a shift. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-01-23 Paul Brook ++ ++ gcc/ ++ * config/arm/arm.c (arm_final_prescan_insn): Use ++ TARGET_NO_SINGLE_COND_EXEC. ++ * config/arm/arm.h (TARGET_NO_SINGLE_COND_EXEC): Define. ++ * config/arm/arm.md: Add TARGET_NO_SINGLE_COND_EXEC conditions. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-12 Sandra Loosemore ++ ++ gcc/ ++ * config/arm/arm.c (arm_final_prescan_insn): Skip this processing ++ if TARGET_NO_COND_EXEC is true. ++ * config/arm/arm.h (TARGET_NO_COND_EXEC): Define. ++ * config/arm/arm.md (smaxsi3, *arm_smax_insn): Disable if ++ TARGET_NO_COND_EXEC is set. ++ (sminsi3, *arm_smin_insn): Likewise. ++ (umaxsi3, *arm_umaxsi3): Likewise. ++ (uminsi3, *arm_uminsi3): Likewise. ++ (*store_minmaxsi): Likewise. ++ (seq, sne, sgt, sle, sge, slt): Likewise. ++ (sgtu, sleu, sgeu, sltu): Likewise. ++ (sunordered, sordered): Likewise. ++ (sungt, sunge, sunlt, sunle): Likewise. ++ (movsicc, movsfcc, movdfcc): Likewise. ++ (*cond_return, *cond_return_inverted): Likewise. ++ (*compare_scc): Likewise. ++ (*cond_arith): Likewise. ++ (movcond): Likewise. ++ (anonymous define_split patterns): Likewise. ++ (define_cond_exec): Likewise. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/arm/arm.md (movsi): Don't split symbol refs here. ++ (define_split): New. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/arm/arm.c (arm_override_options): Override alignments if ++ tuning for Cortex-A8. ++ (create_fix_barrier, arm_reorg): If aligning to jumps or loops, ++ make labels have a size. ++ * config/arm/arm.md (VUNSPEC_ALIGN16, VUNSPEC_ALIGN32): New constants. ++ (align_16, align_32): New patterns. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp) ++ (*arm_movdi_vfp, *thumb2_movdi_vfp, *movsf_vfp, *thumb2_movsf_vfp) ++ (*movdf_vfp, *thumb2_movdf_vfp, *movsfcc_vfp, *thumb2_movsfcc_vfp) ++ (*movdfcc_vfp, *thumb2_movdfcc_vfp): Add neon_type. ++ * config/arm/arm.md (neon_type): Update comment. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-07-05 Mark Shinwell ++ ++ gcc/ ++ * config/arm/thumb2.md (thumb2_movsi_insn): Split ldr and ++ str alternatives according to use of high and low regs. ++ * config/arm/vfp.md (thumb2_movsi_vfp): Likewise. ++ * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Use high ++ regs when optimizing for size on Thumb-2. ++ ++2009-05-29 Julian Brown ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/testsuite/ ++ * gcc.target/arm/vfp-ldmdbd.c, gcc.target/arm/vfp-ldmdbs.c, ++ gcc.target/arm/vfp-ldmiad.c, gcc.target/arm/vfp-ldmias.c, ++ gcc.target/arm/vfp-stmdbd.c, gcc.target/arm/vfp-stmdbs.c, ++ gcc.target/arm/vfp-stmiad.c, gcc.target/arm/vfp-stmias.c: New. ++ * g++.dg/other/armv7m-1.C: New. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-08-12 Mark Shinwell ++ ++ gcc/ ++ * config/arm/arm.h (CLASS_LIKELY_SPILLED_P): Check against ++ LO_REGS only for Thumb-1. ++ (MODE_BASE_REG_CLASS): Restrict base registers to low ++ registers for Thumb-2. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-01-09 Julian Brown ++ ++ gcc/ ++ * config/arm/neon.md (UNSPEC_MISALIGNED_ACCESS): New constant. ++ (movmisalign): Define for D and Q width registers. ++ ++ gcc/testsuite/ ++ * lib/target-supports.exp ++ (check_effective_target_arm_vect_no_misalign): New function. ++ (check_effective_target_vect_no_align): Use above to determine ++ whether misaligned accesses are expected for ARM. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-0x-xx Vladimir Prus ++ ++ gcc/ ++ * config/arm/arm.c (arm_override_options): Warn if mlow-irq-latency is ++ specified in thumb mode. ++ (load_multiple_sequence): Return 0 if low irq latency is requested. ++ (store_multiple_sequence): Likewise. ++ (arm_gen_load_multiple): Load registers one-by-one if low irq latency ++ is requested. ++ (arm_gen_store_multiple): Likewise. ++ (vfp_output_fldmd): When low_irq_latency is non zero, pop each ++ register separately. ++ (vfp_emit_fstmd): When low_irq_latency is non zero, save each register ++ separately. ++ (arm_get_vfp_saved_size): Adjust saved register size calculation for ++ the above changes. ++ (print_pop_reg_by_ldr): New. ++ (arm_output_epilogue): Use print_pop_reg_by_ldr when low irq latency ++ is requested. ++ (emit_multi_reg_push): Push registers separately if low irq latency ++ is requested. ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set __low_irq_latency__. ++ (low_irq_latency): Define. ++ * config/arm/lib1funcs.asm (do_pop, do_push): Define as variadic ++ macros. When __low_irq_latency__ is defined, push and pop registers ++ individually. ++ (div0): Use correct punctuation. ++ * config/arm/ieee754-df.S: Adjust syntax of using do_push. ++ * config/arm/ieee754-sf.S: Likewise. ++ * config/arm/bpabi.S: Likewise. ++ * config/arm/arm.opt (mlow-irq-latency): New option. ++ * config/arm/predicates.md (load_multiple_operation): Return false is ++ low irq latency is requested. ++ (store_multiple_operation): Likewise. ++ * config/arm/arm.md (movmemqi): Don't use it if low irq latency is ++ requested. ++ * doc/invoke.texi (-mlow-irq-latency): Add documentation. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-20 Mark Shinwell ++ ++ gcc/ ++ * config/arm/arm.h (arm_arch_marvell_f): Delete. ++ * config/arm/arm.c (arm_override_options): Remove uses of ++ TARGET_MARVELL_F. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-02-02 Mark Shinwell ++ ++ gcc/ ++ * config/arm/thumb2.md: Include hwdiv.md and move instruction patterns ++ for sdiv and udiv to that file. ++ * config/arm/arm.c (all_architectures): Add marvell-f entry. ++ (ARM_ARCH_NAME_SIZE): Define. ++ (arm_arch_name): Allocate ARM_ARCH_NAME_SIZE bytes of space. ++ (arm_override_options): Be more careful writing to arm_arch_name. ++ Take setting of -mmarvell-div and TARGET_THUMB2 into account when ++ setting arm_arch_hwdiv. Cause error if -mmarvell-div is used when ++ not targeting a Marvell core. ++ * config/arm/arm.h (arm_arch_marvell_f): New. ++ * config/arm/hwdiv.md: New. ++ * config/arm/t-arm (MD_INCLUDES): Add hwdiv.md. ++ * config.gcc: Recognize marvell-f as a supported ARM architecture. ++ * doc/invoke.texi (ARM Options): Document -mcpu=marvell-f and ++ -mmarvell-div. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-01-10 Mark Shinwell ++ ++ gcc/ ++ * config/arm/marvell-f.md: Fix FSF address and comment capitalization. ++ * config/arm/marvell-f-vfp.md: New. ++ * config/arm/arm-cores.def: Add FL_VFPV2 for marvell-f. ++ * config/arm/arm.md: Include marvell-f-vfp.md. ++ (generic_vfp): Don't set attribute to "yes" for marvell_f tuning. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-22 Sandra Loosemore ++ ++ gcc/ ++ * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add code to define ++ __ARM_TUNE_MARVELL_F__. ++ * config/arm/lib1funcs.asm (ARM_DIV_BODY): Conditionalize for ++ __ARM_TUNE_MARVELL_F__. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-18 Mark Shinwell ++ ++ gcc/ ++ * config/arm/vfp.md: When targeting a Marvell core, only ++ enable patterns involving multiply-accumulate type ++ instructions when optimizing for size. ++ ++2009-05-29 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-01-03 Mark Shinwell ++ 2007-09-19 Paul Brook ++ ++ NOT ASSIGNED TO FSF ++ Port from Marvell compiler: ++ gcc/ ++ * config/arm/arm.c (arm_issue_rate): Add Marvell-F support. ++ (arm_multipass_dfa_lookahead): New. ++ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define. ++ (FL_MARVELL_F, FL_COMPAT): New. ++ (arm_tune_marvell_f): New. ++ (arm_override_options): Set arm_tune_marvell_f as appropriate. Mask out ++ FL_COMPAT when checking cpu vs. arch. ++ * config/arm/arm.h (arm_tune_marvell_f): Declare. ++ * config/arm/arm-cores.def: Add marvell-f entry. ++ * config/arm/arm-tune.md: Regenerate. ++ * config/arm/t-arm (MD_INCLUDES): Add marvell-f.md. ++ * config/arm/arm.md: Don't use generic scheduler for marvell-f. ++ Include marvell-f.md. Extend "insn" attribute with mov/mvn/ ++ and/orr/eor cases and annotate instruction patterns accordingly. ++ * config/arm/vfp.md: Annotate likewise. ++ * config/arm/marvell-f.md: New. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2008-02-18 Julian Brown ++ Paul Brook ++ ++ gcc/ ++ * config/arm/bpabi.S (test_div_by_zero): New macro. ++ (aeabi_ldivmod): Use above macro to tailcall long long div-by-zero ++ handler. ++ (aeabi_uldivmod): Likewise. ++ * config/arm/bpabi-v6m.S (test_div_by_zero): New macro. ++ (aeabi_ldivmod, aeabi_uldivmod): Use above macro. ++ * config/arm/lib1funcs.asm (ARM_LDIV0): Tailcall int div-by-zero ++ handler. Add signed/unsigned argument, pass correct value to that ++ handler. ++ (THUMB_LDIV0): Same, for Thumb. ++ (DIV_FUNC_END): Add signed argument. ++ (WEAK): New macro. ++ (__udivsi3, __umodsi3): Add unsigned argument to DIV_FUNC_END. ++ (__divsi3, modsi3): Add signed argument to DIV_FUNC_END. ++ (__aeabi_uidivmod, __aeabi_idivmod): Check division by zero. ++ (__div0): Rename to __aeabi_idiv0, __aeabi_ldiv0 for EABI, and declare ++ those names weak. ++ * config/arm/t-bpabi (LIB1ASMFUNCS): Add _aeabi_idiv0, _aeabi_ldiv0. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-06-06 Joseph Myers ++ ++ gcc/ ++ * config/arm/arm.h (VALID_IWMMXT_REG_MODE): Allow SImode. ++ (ARM_LEGITIMIZE_RELOAD_ADDRESS): Reduce range allowed for SImode ++ offsets with iWMMXt. ++ * config/arm/arm.c (arm_hard_regno_mode_ok): Update for change to ++ VALID_IWMMXT_REG_MODE. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM ++ specially for Thumb-1. ++ (ASM_OUTPUT_REG_POP): Likewise. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ Issue #5167 ++ ++ libiberty/ ++ * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT. ++ (pex_win32_exec_child): Create inheritable duplicate descriptors to ++ pass to child process, and close originals (if non-stdin/stdout). Close ++ duplicates when child has spawned. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-07-05 Mark Shinwell ++ ++ gcc/ ++ * config/arm/arm.h (BRANCH_COST): Set to 1 when optimizing for size ++ on Thumb-2. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-09-19 Vladimir Prus ++ ++ gcc/ ++ * config/arm/arm.c (arm_optimization_options): Disable ++ -fmove-loop-invariants. Use very restrictive inlining heuristics. ++ ++ gcc/testsuite/ ++ * gcc.c-torture/execute/bcp-1.x: New. Don't run bcp-1.c test on arm, ++ with -Os. ++ * gcc.c-torture/execute/990208-1.x: New. Likewise. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ libgcc/ ++ * config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*) ++ (arm*-*-symbianelf): Add arm/t-divmod-ef to tmake_file. ++ * Makefile.in (LIB2_DIVMOD_EXCEPTION_FLAGS): Set to previous ++ default if not set by a target-specific Makefile fragment. ++ (lib2-divmod-o, lib2-divmod-s-o): Use above. ++ * config/arm/t-divmod-ef: New. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-04-17 Paul Brook ++ ++ gcc/ ++ * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define. ++ (arm_dwarf_register_span): New function. ++ (arm_dbx_register_number): Add VFPv3 dwarf numbering. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ Issue #4515 ++ ++ gcc/ ++ * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP. ++ * config/arm/ieee754-sf.S (cmpsf2): Likewise. ++ ++2009-05-28 Julian Brown ++ ++ Merged from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/arm/arm.c (arm_hard_regno_mode_ok): Allow 4-byte quantities ++ in core registers. Update comment. ++ ++2009-05-28 Joseph Myers ++ ++ Issue #5266 ++ ++ Backport: ++ gcc/ ++ 2009-05-28 Joseph Myers ++ * config/arm/lib1funcs.asm (__clear_cache): Define if ++ L_clear_cache. ++ * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an ++ error if used. ++ * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache. ++ ++2009-05-27 Sandra Loosemore ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-05 Mark Mitchell ++ ++ * configure.in (*-*-vxworks*): Remove target-libstdc++-v3 from ++ noconfigdirs. ++ * configure: Regenerated. ++ ++2009-05-27 Sandra Loosemore ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-03-12 Richard Sandiford ++ ++ gcc/ ++ * config/vx-common.h (TARGET_FLEXLM): Define. ++ ++2009-05-27 Sandra Loosemore ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-08-26 Mark Mitchell ++ ++ gcc/testsuite/ ++ * lib/prune.exp (prune_warnings): Extend the default ++ implementation to prune linker warnings about libm on Solaris. ++ libstdc++-v3/ ++ * testsuite/lib/prune.exp (prune_g++_output): Prune linker ++ warnings about libm on Solaris. ++ ++2009-05-27 Sandra Loosemore ++ ++ Merged from Sourcery G++ 4.3: ++ ++ 2007-08-26 Mark Mitchell ++ ++ fixincludes/ ++ * inclhack.def (solaris_mutex_init_2): Remove precise machine ++ checks; look at to determine whether fix is ++ required. ++ (solaris_rwlock_init_1): Likewise. ++ (solaris_once_init_2): Likewise. ++ * tests/base/sys/types.h: Add output generated by ++ solaris_mutex_init_2. ++ * fixincl.x: Regenerated. ++ ++2009-05-27 Catherine Moore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-11-23 Richard Sandiford ++ * config/mips/mips.c (mips_legitimize_address): Handle ++ illegitimate CONST_INT addresses. ++ ++2009-05-26 Sandra Loosemore ++ Mark Shinwell ++ Joseph Myers ++ ++ Revised patch merged from Sourcery G++ 4.3. ++ ++ gcc/ ++ * doc/invoke.texi (-falign-arrays): Document. ++ * function.h (alignment_for_aligned_arrays): Declare. ++ * function.c (get_stack_local_alignment): Use it. ++ (alignment_for_aligned_arrays): Define. ++ * cfgexpand.c (get_decl_align_unit): Use it here, too. ++ * common.opt (-falign-arrays): New. ++ * varasm.c (assemble_variable): Use alignment_for_aligned_arrays, ++ and use it irrespective of whether DATA_ALIGNMENT is defined. ++ ++2009-05-26 Nathan Sidwell ++ ++ Forward port 2007-07-05 Richard Sandiford ++ ++ gcc/ ++ * config/arm/neon-gen.ml: Include vxWorks.h rather than stdint.h ++ for VxWorks kernels. ++ * config/arm/arm_neon.h: Regenerate. ++ ++2009-05-23 Mark Mitchell ++ ++ Backport from mainline: ++ ++ 2009-05-23 Mark Mitchell ++ * final.c (shorten_branches): Do not align labels for jump tables. ++ (final_scan_insn): Use JUMP_TABLE_DATA_P. ++ 2009-05-23 Mark Mitchell ++ Maxim Kuvyrkov ++ * gcc.dg/falign-labels-1.c: New test. ++ ++2009-05-22 Mark Mitchell ++ ++ Backport from mainline: ++ ++ 2009-05-22 Mark Mitchell ++ * config/arm/thumb2.md: Add 16-bit multiply instructions. ++ 2009-05-22 Mark Mitchell ++ * lib/target-supports.exp (check_effective_target_arm_thumb2_ok): ++ New function. ++ * gcc.target/arm/thumb2-mul-space.c: New file. ++ * gcc.target/arm/thumb2-mul-space-2.c: New file. ++ * gcc.target/arm/thumb2-mul-space-3.c: New file. ++ * gcc.target/arm/thumb2-mul-speed.c: New file. ++ ++2009-05-22 Julian Brown ++ ++ gcc/ ++ * gcse.c (hash_scan_set): Don't make copies of instructions the ++ target deems uncopyable. ++ ++2009-05-22 Nathan Sidwell ++ ++ * release-notes-csl.xml: Remove notes erroneously ported from ++ 4.3. They will be picked up during the document build. ++ ++ Forward port 2008-09-11 Mark Mitchell ++ ++ Issue #3606 ++ * release-notes-csl.xml: Document dllexport fix. ++ ++ gcc/ ++ * tree.c (handle_dll_attribute): Mark dllexport'd inlines as ++ non-external. ++ ++ gcc/cp ++ * decl2.c (decl_needed_p): Consider dllexport'd functions needed. ++ * semantics.c (expand_or_defer_fn): Similarly. ++ ++ gcc/testsuite/ ++ * gcc.dg/dll-6.c: New test. ++ * gcc.dg/dll-6a.c: Likewise. ++ * gcc.dg/dll-7.c: Likewise. ++ * gcc.dg/dll-7a.c: Likewise. ++ * g++.dg/ext/dllexport2.C: Likewise. ++ * g++.dg/ext/dllexport2a.cc: Likewise. ++ ++2009-05-21 Sandra Loosemore ++ ++ Issue #4289 ++ Backport from mainline: ++ ++ 2009-03-27 Sandra Loosemore ++ ++ fixincludes/ ++ * server.c (run_shell): Quote directory name passed to cd. ++ ++2009-05-21 Sandra Loosemore ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-04-04 Sandra Loosemore ++ ++ Issue #5104 ++ PR tree-optimization/39604 ++ ++ gcc/testsuite ++ * g++.dg/tree-ssa/sink-1.C: New. ++ ++ gcc/ ++ * tree_ssa-sink.c (sink_code_in_bb): Do not sink statements out ++ of a lexical block containing variable definitions. ++ ++2009-05-21 Sandra Loosemore ++ ++ Issue #5174 ++ Backport from mainline: ++ ++ 2009-04-09 Sandra Loosemore ++ ++ gcc/ ++ * doc/invoke.texi (Optimize Options): Add cross-reference to ++ -Q --help=optimizers examples. ++ ++2009-05-21 Mark Mitchell ++ ++ Backport from mainline: ++ ++ 2009-05-21 Mark Mitchell ++ * config/arm/neon.md (*mul3add_neon): New pattern. ++ (*mul3negadd_neon): Likewise. ++ 2009-05-21 Mark Mitchell ++ * gcc.dg/target/arm/neon-vmla-1.c: New. ++ * gcc.dg/target/arm/neon-vmls-1.c: Likewise. ++ ++2009-05-21 Sandra Loosemore ++ ++ gcc/ ++ * cp/decl.c (grokdeclarator): Fix merge error. ++ ++2009-05-19 Catherine Moore ++ ++ Backport from mainline: ++ ++ 2009-04-15 Catherine Moore ++ * debug.h (set_name): Declare. ++ * dwarf2out.c (dwarf2out_set_name): Declare. ++ (dwarf2_debug_hooks): Add set_name. ++ (find_AT_string): New. ++ (add_AT_string): Call find_AT_string. ++ (dwarf2out_set_name): New. ++ * cp/decl.c (grokdeclarator): Call set_name. ++ * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing. ++ * debug.c (do_nothing_debug_hooks): Likewise. ++ * dbxout.c (dbx_debug_hooks): Likewise. ++ * sdbout.c (sdb_debug_hooks): Likewise. ++ ++ 2009-04-17 David Edelsohn ++ * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing. ++ ++ 2009-04-28 Catherine Moore ++ * debug.h (set_name): Add comment. ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-06 Andrew Stubbs ++ gcc/testsuite/ ++ * gcc.dg/pragma-isr-trapa2.c: Skip test for FPU-less architectures. ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-06 Andrew Stubbs ++ gcc/testsuite/ ++ * gcc.target/sh/sh4a-memmovua.c: Include string.h instead of stdlib.h. ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-06 Andrew Stubbs ++ gcc/testsuite/ ++ * gcc.target/sh/sh4a-bitmovua.c (y0): Rename to y_0 to avoid a clash ++ with the built-in y0, and the subsequent warning. ++ (y1): Likewise, rename to y_1. ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-06 Andrew Stubbs ++ gcc/ ++ * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the ++ delay slot. ++ (ic_invalidate_array): Likewise. ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-06 Andrew Stubbs ++ gcc/libstdc++-v3/ ++ * config/cpu/sh/atomicity.h: Put the SH4A specific functions in the ++ __gnu_cxx namespace. Remove "static inline". ++ ++2009-05-19 Andrew Stubbs ++ ++ Backport from mainline: ++ ++ 2009-04-02 Andrew Stubbs ++ gcc/ ++ * config/sh/linux-unwind.h: Disable when inhibit_libc is defined. ++ ++2009-05-18 Nathan Sidwell ++ ++ gcc/testsuite/ ++ * g++.dg/ext/ms-1.C: Fix mixfixed misapplied patch. ++ ++2009-05-18 Maxim Kuvyrkov ++ ++ Backport from mainline: ++ ++ 2009-05-18 Maxim Kuvyrkov ++ M68K TLS support. ++ gcc/ ++ * configure.ac (m68k-*-*): Check if binutils support TLS. ++ * configure: Regenerate. ++ * config/m68k/predicates.md (symbolic_operand): Extend comment. ++ * config/m68k/constraints.md (Cu): New constraint. ++ * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove. ++ (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants. ++ (movsi): Handle TLS symbols. ++ (addsi3_5200): Handle XTLS symbols, indent. ++ * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare. ++ (m68k_tls_reference_p): Declare. ++ (m68k_legitimize_address): Declare. ++ (m68k_unwrap_symbol): Declare. ++ * config/m68k/m68k.opt (mxtls): New option. ++ * config/m68k/m68k.c (ggc.h): Include. ++ (m68k_output_dwarf_dtprel): Implement hook. ++ (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define. ++ (m68k_expand_prologue): Load GOT pointer when function needs it. ++ (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols. ++ (m68k_legitimate_constant_address_p): Same. ++ (m68k_decompose_address): Handle TLS references. ++ (m68k_get_gp): New static function. ++ (enum m68k_reloc): New contants. ++ (TLS_RELOC_P): New macro. ++ (m68k_wrap_symbol): New static function. ++ (m68k_unwrap_symbol): New function. ++ (m68k_final_prescan_insn_1): New static function. ++ (m68k_final_prescan_insn): New function. ++ (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static ++ functions. ++ (legitimize_pic_address): Handle TLS references.. ++ (m68k_tls_get_addr, m68k_get_tls_get_addr) ++ (m68k_libcall_value_in_a0_p) ++ (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp) ++ (m68k_call_m68k_read_tp): Helper variables and functions for ... ++ (m68k_legitimize_tls_address): Handle TLS references. ++ (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p): ++ New functions. ++ (m68k_legitimize_address): Handle TLS symbols. ++ (m68k_get_reloc_decoration): New static function. ++ (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and ++ UNSPEC_RELOC32. ++ (m68k_output_dwarf_dtprel): Implement hook. ++ (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32. ++ (m68k_libcall_value): Return result in A0 instead of D0 when asked by ++ m68k_call_* routines. ++ (sched_attr_op_type): Handle TLS symbols. ++ (gt-m68k.h): Include. ++ * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define. ++ (LEGITIMATE_PIC_OPERAND_P): Support TLS. ++ gcc/testsuite/ ++ * gcc.target/m68k/tls-ie.c: New test. ++ * gcc.target/m68k/tls-le.c: New test. ++ * gcc.target/m68k/tls-gd.c: New test. ++ * gcc.target/m68k/tls-ld.c: New test. ++ * gcc.target/m68k/tls-ie-xgot.c: New test. ++ * gcc.target/m68k/tls-le-xtls.c: New test. ++ * gcc.target/m68k/tls-gd-xgot.c: New test. ++ * gcc.target/m68k/tls-ld-xgot.c: New test. ++ * gcc.target/m68k/tls-ld-xtls.c: New test. ++ * gcc.target/m68k/tls-ld-xgot-xtls.c: New test. ++ ++ Merge from Sourcery G++ 4.3: ++ gcc/ ++ * config/m68k/m68k.c (m68k_legitimize_address): New function. ++ * config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Use it. ++ * config/m68k/m68k-proto.h (m68k_legitimize_address): Declare it. ++ ++2009-05-15 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-10-23 Kazu Hirata ++ ++ Issue 3852 ++ gcc/ ++ * config/arm/t-asa (MULTILIB_EXTRA_OPTS): New. ++ ++ 2008-05-28 Kazu Hirata ++ ++ Issue 2895 ++ gcc/ ++ * config.gcc (arm*-*-linux*): Handle enable_extra_asa_multilibs. ++ enable_extra_asa_multilibs. ++ * config/arm/t-asa: New. ++ ++ 2008-05-28 Kazu Hirata ++ ++ * config/arm/t-asa (MULTILIB_EXCEPTIONS): Remove ++ march=armv4t/mfpu=neon* and march=armv4t/*mfloat-abi=softfp. Add ++ *march=armv4t*/*mfpu=neon* and *march=armv4t*/*mfloat-abi=softfp*. ++ (MULTILIB_ALIASES): Remove march?armv4t=mthumb/march?armv4t* and ++ march?armv6=mthumb/march?armv6*. Add ++ march?armv4t=mthumb/march?armv4t, march?armv6=mthumb/march?armv6, ++ and ++ march?armv6/mfloat-abi?softfp=mthumb/march?armv6/mfloat-abi?softfp. ++ ++2009-05-15 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CAVIUM ++ gcc/ ++ * config/mips/octeon-elf-unwind.h, config/mips/octeon-elf.h, ++ config/mips/octeon.h, config/mips/t-octeon-elf: New. ++ * config.gcc: Handle mips64octeon*-wrs-elf*. ++ (mips-wrs-linux-gnu): Use mips/octeon.h. ++ * config/mips/mips-protos.h (octeon_output_shared_variable): New. ++ * config/mips/mips.c (octeon_handle_cvmx_shared_attribute, ++ octeon_select_section, octeon_unique_section, ++ octeon_output_shared_variable): New. ++ (mips_attribute_table): Add cvmx_shared. ++ (mips_in_small_data_p): Check for cvmx_shared attribute. ++ ++ libgcc/ ++ * config.host: Handle mips64octeon*-wrs-elf*. ++ ++2009-05-15 Mark Mitchell ++ Joseph Myers ++ Mark Shinwell ++ Vladimir Prus ++ Paul Brook ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config.gcc (arm-wrs-linux-gnueabi, i586-wrs-linux-gnu, ++ mips-wrs-linux-gnu, powerpc-wrs-linux-gnu, sparc-wrs-linux-gnu): ++ Handle new targets. ++ * config/arm/t-wrs-linux, config/arm/wrs-linux.h, ++ config/mips/t-wrs-linux, config/mips/wrs-linux.h, ++ config/rs6000/t-wrs-linux, config/rs6000/wrs-linux.h: New. ++ * config/sparc/linux64.h (TARGET_DEFAULT): Define differently for ++ BIARCH_32BIT_DEFAULT. ++ ++2009-05-15 Sandra Loosemore ++ ++ Backport from upstream: ++ ++ 2009-05-15 Sandra Loosemore ++ ++ gcc/ ++ * optabs.c (prepare_float_lib_cmp): Test that the comparison, ++ swapped, and reversed optabs exist before trying to use them. ++ ++2009-05-12 Joseph Myers ++ ++ gcc/ ++ * config/arm/nocrt0.h (LIB_SPEC): Undefine before defining. ++ ++2009-05-12 Joseph Myers ++ ++ Merge from ARM/hard_vfp_4_4_branch: ++ ++ gcc/ ++ 2009-05-12 Joseph Myers ++ * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and ++ V4SImode as representatives of all 64-bit and 128-bit vector ++ types. Allow vector types without vector modes. ++ (aapcs_vfp_is_call_or_return_candidate): Handle vector types ++ without vector modes like BLKmode. ++ (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like ++ BLKmode. Avoid unsupported vector modes or TImode moves for ++ non-TARGET_NEON. ++ (aapcs_vfp_allocate_return_reg): Likewise. ++ (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and ++ V8QImode if TARGET_NEON || TARGET_IWMMXT. ++ ++ 2009-05-12 Joseph Myers ++ * config/arm/arm.c (arm_handle_pcs_attribute): New. ++ (arm_get_pcs_model): Pass attribute arguments to ++ arm_pcs_from_attribute. ++ (arm_init_cumulative_args): Use base AAPCS for conversions from ++ floating-point types to DImode. ++ (arm_attribute_table): Add pcs attribute. ++ (arm_handle_pcs_attribute): New. ++ * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming ++ conversions from floating-point types to DImode, also declare them ++ to use base AAPCS and declare functions they call to use base ++ AAPCS and their RTABI names. ++ ++ 2009-05-12 Joseph Myers ++ * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about ++ -mfloat-abi=hard not being supported for VFP. ++ ++ 2009-05-11 Kazu Hirata ++ * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall ++ SYMBOL_REF to hard_libcall_value. ++ ++ 2009-03-05 Joseph Myers ++ Richard Earnshaw ++ * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument ++ has been put on the stack, all remaining co-processory arguments for ++ that co-processor also go on the stack. ++ ++ 2009-03-05 Joseph Myers ++ * config/arm/arm.c (arm_return_in_memory): Handle returning ++ vectors of suitable size in registers also for AAPCS case. ++ ++ 2009-01-13 Richard Earnshaw ++ * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement. ++ ++ 2008-12-09 Richard Earnshaw ++ ARM Hard-VFP calling convention ++ * target-def.h (TARGET_LIBCALL_VALUE): New hook. ++ * target.h (gcc_target): Add libcall_value to table of call hooks. ++ * targhooks.h (default_libcall_value): Default implementation. ++ * targhooks.c (default_libcall_value): Likewise. ++ * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it. ++ * optabs.c (expand_unop): Use it. ++ * expr.h (hard_libcall_value): Pass the function RTX through. ++ * calls.c (emit_library_call_value_1): Update call to ++ hard_libcall_value. ++ * explow.c (hard_libcall_value): Use new target hook. ++ * testsuite/lib/target-supports.exp ++ (check_effective_target_arm_hard_vfp_ok): New hook. ++ (check_effective_target_arm_neon_ok): Improve test for neon ++ availability. ++ * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant. ++ * config/arm/arm.c: Include cgraph.h ++ (TARGET_FUNCTION_VALUE): Override default hook. ++ (arm_pcs_default): New variable. ++ (arm_override_options): Don't fault hard calling convention with VFP. ++ Add support for AAPCS variants. ++ (arm_function_value): Make static. Handle AAPCS variants. ++ (arm_libcall_value): New function. ++ (arm_apply_result_size): Handle VFP registers in results. ++ (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp ++ conventions. ++ (pcs_attribute_args): New variable. ++ (arm_pcs_from_attribute): New function. ++ (arm_get_pcs_model): New function. ++ (aapcs_vfp_cum_init): New function. ++ (aapcs_vfp_sub_candidate): New function. ++ (aapcs_vfp_is_return_candidate): New function. ++ (aapcs_vfp_is_call_candidate): New function. ++ (aapcs_vfp_allocate): New function. ++ (aapcs_vfp_allocate_return_reg): New function. ++ (aapcs_vfp_advance): New function. ++ (aapcs_cp_arg_layout): New variable. ++ (aapcs_select_call_coproc): New function. ++ (aapcs_select_return_coproc): New function. ++ (aapcs_allocate_return_reg): New function. ++ (aapcs_libcall_value): New function. ++ (aapcs_layout_arg): New function. ++ (arm_init_cumulative_args): Initialize AAPCS args data. ++ (arm_function_arg): Handle AAPCS variants using new interface. ++ (arm_arg_parital_bytes): Likewise. ++ (arm_function_arg_advance): New function. ++ (arm_function_ok_for_sibcall): Ensure that sibling calls agree on ++ calling conventions. ++ (arm_setup_incoming_varargs): Handle new AAPCS args data. ++ * arm.h (NUM_VFP_ARG_REGS): Define. ++ (LIBCALL_VALUE): Update. ++ (FUNCTION_VALUE): Delete. ++ (FUNCTION_VALUE_REGNO_P): Add VFP regs. ++ (arm_pcs): New enum. ++ (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling. ++ (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance. ++ (FUNCTION_ARG_REGNO_P): Add VFP regs. ++ * arm-protos.h (arm_function_arg_advance): Add. ++ (aapcs_libcall_value): Add. ++ (arm_function_value): Delete. ++ ++ gcc/testsuite/ ++ 2009-05-12 Joseph Myers ++ * gcc.target/arm/eabi1.c: Do not skip for non-base ABI variants. ++ (PCS): Define macro to use base AAPCS. ++ (decl_float, __aeabi_d2f, __aeabi_f2d): Use PCS macro. ++ ++ 2009-05-11 Daniel Jacobowitz ++ * lib/target-supports.exp (check_effective_target_arm_neon_ok): ++ Correct arm_neon.h typo. ++ ++ 2009-03-06 Richard Earnshaw ++ * lib/target-supports.exp (check_effective_target_hard_vfp_ok): Make ++ this a linkage test. ++ * gcc.target/arm/aapcs/aapcs.exp: New framework for testing AAPCS ++ argument marshalling. ++ * abitest.h: New file. ++ * vfp1.c, vfp2.c, vfp3.c, vfp4.c, vfp5.c, vfp6.c, vfp7.c: New tests. ++ * vfp8.c, vfp9.c, vfp10.c, vfp11.c, vfp12.c, vfp13.c, vfp14.c: New. ++ ++2009-05-12 Nathan Sidwell ++ ++ gcc/testsuite/ ++ * g++.dg/ext/ms-1.C: Fix misapplied patch. ++ ++2009-05-12 Maxim Kuvyrkov ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2009-05-12 Maxim Kuvyrkov ++ * ChangeLog.csl: Add changelog for the previous commit. ++ gcc/ ++ * configure: Regenerate with proper autoconf version. ++ ++ 2009-05-12 Maxim Kuvyrkov ++ gcc/ ++ * common.opt (feglibc): New dummy option. ++ * opts.c (common_handle_option): Handle it. ++ * config.gcc: Handle 'eglibc' vendor. ++ * config/t-eglibc: Define multilibs for testing EGLIBC features. ++ * configure.ac (--with-eglibc-configs, EGLICB_CONFIGS): New option and ++ variable. ++ * configure: Regenerate. ++ * Makefile.in (EGLIBC_CONFIGS): Handle ++ ++2009-05-11 Nathan Sidwell ++ ++ gcc/ ++ * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX. ++ * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455 ++ multilibs. ++ * config/m68k/m68k.h (FL_UCLINUX): Define. ++ ++ * release-notes-csl.xml: Document. ++ ++ gcc/ ++ * config/m68k/m68k-devices.def (52274, 52277): New devices. ++ (5301x, 5225x): New devices. ++ (51xx): New devices. ++ ++ * release-notes-csl.xml: Document new processors. ++ ++ Forward port 2009-02-12 Nathan Sidwell ++ Issue #4620 ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of ++ our distinct integral and vector types. ++ gcc/testsuite/ ++ * g++.dg/ext/altivec-17.C: New. ++ ++ * release-notes-csl.xml: Add note. ++ ++2009-05-08 Nathan Sidwell ++ ++ Issue 5335 ++ gcc/ ++ * class.c (resolve_address_of_overloaded_function): Use ++ OVL_CURRENT for error. ++ (instantiate_type): Allow FUNCTION_DECL when ms_extensions are ++ active. Don't copy the rhs node. Delete COMPOUND_EXPR code. ++ * typeck.c (build_compound_expr): Check RHS has known type. ++ ++ gcc/testsuite/ ++ * g++.dg/ext/ms-1.C: New. ++ * g++.old-deja/g++.other/overload11.C: Adjust. ++ ++ * release-notes-csl.xml: Add two notes. ++ ++2009-05-04 Kazu Hirata ++ ++ Backport: ++ gcc/ ++ 2009-05-04 Kazu Hirata ++ * expmed.c (synth_mult): When trying out a shift, pass the result ++ of a signed shift. ++ ++2009-05-04 Kazu Hirata ++ ++ Backport: ++ gcc/ ++ 2009-05-04 Kazu Hirata ++ * expmed.c (shiftsub_cost): Rename to shiftsub0_cost. ++ (shiftsub1_cost): New. ++ (init_expmed): Compute shiftsub1_cost. ++ (synth_mult): Optimize multiplications by constants of the form ++ -(2^^m-1) for some constant positive integer m. ++ ++2009-05-01 Andrew Stubbs ++ ++ gcc/ ++ * config/sh/cs-sgxxlite-linux.h, config/sh/t-sgxxlite-linux: New. ++ * config.gcc: Add SH multilib configurations. ++ ++2009-05-01 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-17 Andrew Stubbs ++ * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG, ++ TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG. ++ (--with-multilib-list): Add default value. ++ * configure: Regenerate. ++ * Makefile.in (TM_ENDIAN_CONFIG): Define. ++ (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define. ++ * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG, ++ TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG. ++ Don't add default cpu to multilib list unnecessarily, but do enable ++ the relevant compiler option.. ++ Add support for --with-multilib-list= and ++ --with-multilib-list=! to supress unwanted multilibs. ++ * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables. ++ (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables. ++ (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and ++ TM_MULTILIB_CONFIG. ++ (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG. ++ (MULTILIB_OSDIRNAMES): New variable. ++ * config/sh/t-1e: Delete file. ++ * config/sh/t-mlib-sh1: Delete file. ++ * config/sh/t-mlib-sh2: Delete file. ++ * config/sh/t-mlib-sh2a: Delete file. ++ * config/sh/t-mlib-sh2a-nofpu: Delete file. ++ * config/sh/t-mlib-sh2a-single: Delete file. ++ * config/sh/t-mlib-sh2a-single-only: Delete file. ++ * config/sh/t-mlib-sh2e: Delete file. ++ * config/sh/t-mlib-sh3e: Delete file. ++ * config/sh/t-mlib-sh4: Delete file. ++ * config/sh/t-mlib-sh4-nofpu: Delete file. ++ * config/sh/t-mlib-sh4-single: Delete file. ++ * config/sh/t-mlib-sh4-single-only: Delete file. ++ * config/sh/t-mlib-sh4a: Delete file. ++ * config/sh/t-mlib-sh4a-nofpu: Delete file. ++ * config/sh/t-mlib-sh4a-single: Delete file. ++ * config/sh/t-mlib-sh4a-single-only: Delete file. ++ * config/sh/t-mlib-sh4al: Delete file. ++ * config/sh/t-mlib-sh5-32media: Delete file. ++ * config/sh/t-mlib-sh5-32media-nofpu: Delete file. ++ * config/sh/t-mlib-sh5-64media: Delete file. ++ * config/sh/t-mlib-sh5-64media-nofpu: Delete file. ++ * config/sh/t-mlib-sh5-compact: Delete file. ++ * config/sh/t-mlib-sh5-compact-nofpu: Delete file. ++ * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS. ++ * doc/install.texi (Options specification): Add ++ --with-multilib-list and --with-endian. ++ ++2009-05-01 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-02-12 Julian Brown ++ ++ Merge from MIPS: ++ ++ 2008-01-16 David Ung ++ ++ * config/mips/sdemtk.h: Define macro TARGET_MIPS_SDEMTK. ++ * config/mips/mips.c (mips_file_start): Check against ++ TARGET_MIPS_SDEMTK which supports the TARGET_NO_FLOAT option. ++ ++2009-05-01 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-03-17 Julian Brown ++ * config/mips/sdemtk.h (MIPS_ARCH_FLOAT_SPEC): Override, adding ++ -mno-float option. ++ ++2009-05-01 Julian Brown ++ Catherine Moore ++ Sandra Loosemore ++ Richard Sandiford ++ Nigel Stephens ++ Joseph Myers ++ ++ gcc/ ++ * config/mips/cs-sgxx-linux.h, config/mips/cs-sgxxlite-linux.h, ++ config/mips/t-sgxx-linux, config/mips/t-sgxx-sde, ++ config/mips/t-sgxxlite-linux: New. ++ * config.gcc: Add MIPS multilib configurations. ++ * config/mips/mips.opt (mips16e): Add as deprecated alias ++ for -mips16. ++ * doc/invoke.texi (Option Summary, MIPS Options): Document it. ++ ++2009-04-29 Nathan Froyd ++ Kazu Hirata ++ Daniel Jacobowitz ++ Nathan Sidwell ++ Joseph Myers ++ ++ gcc/ ++ * config/rs6000/e500mc.h, config/rs6000/t-cs-eabi, ++ config/rs6000/t-cs-eabi-lite, config/rs6000/t-cs-linux, ++ config/rs6000/t-ppc-e500mc: New. ++ * config.gcc: Add Power multilib configurations. ++ * config/rs6000/eabi.h (CC1_EXTRA_SPEC, ASM_DEFAULT_SPEC): Define. ++ * config/rs6000/linux.h (CC1_EXTRA_SPEC, ASM_DEFAULT_SPEC, ++ SYSROOT_SUFFIX_SPEC): Define. ++ ++2009-04-29 Joseph Myers ++ Daniel Jacobowitz ++ Nathan Froyd ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Handle ++ -te500mc, -te500v1, -te500v2 and -te600. ++ ++2009-04-29 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config/rs6000/sysv4.h (CC1_EXTRA_SPEC): Define and use. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config.gcc (mips*-*-*): Support arch_32 arch_64 tune_32 tune_64. ++ * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add support for ++ arch_32 arch_64 tune_32 tune_64. ++ ++2009-04-28 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-28 Joseph Myers ++ * config.gcc (powerpc*-*-* | rs6000-*-*): Add ++ rs6000/option-defaults.h to tm_file. Support cpu_32, cpu_64, ++ tune_32 and tune_64. ++ * doc/install.texi (--with-cpu-32, --with-cpu-64): Document ++ support on PowerPC. ++ * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ... ++ * config/rs6000/option-defaults.h: ... here. New file. ++ (OPT_64, OPT_32): Define. ++ (MASK_64BIT): Define to 0 if not already defined. ++ (OPT_ARCH64, OPT_ARCH32): Define. ++ (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32 ++ and tune_64. ++ ++2009-04-28 Joseph Myers ++ Paul Brook ++ Daniel Gutson ++ Julian Brown ++ Sandra Loosemore ++ ++ gcc/ ++ * config/arm/nocrt0.h, config/arm/t-cs-eabi, ++ config/arm/t-cs-eabi-lite, config/arm/t-cs-linux, ++ config/arm/t-cs-linux-lite, config/arm/t-cs-uclinux-eabi: New. ++ * config.gcc: Add ARM multilib configurations. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-02-05 Paul Brook ++ * doc/fragments.texi: Document MULTILIB_ALIASES. ++ * genmultilib: Add aliases. ++ * Makefile.in (s-mlib): Pass MULTILIB_ALIASES. ++ ++ 2009-02-03 Andrew Stubbs ++ * config/print-sysroot-suffix.sh: Add support for MULTILIB_ALIASES. ++ * config/t-sysroot-suffix: Pass MULTILIB_ALIASES. ++ ++2009-04-28 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-07 Andrew Stubbs ++ * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file. ++ Add t-sysroot-suffix to tmake_file. ++ * config/print-sysroot-suffix.sh: New file. ++ * config/t-sysroot-suffix: New file. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-08-18 Nathan Froyd ++ ++ libgomp/ ++ * Makefile.am (LTLDFLAGS): Define. ++ (LINK): Define. ++ * Makefile.in: Regenerate. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ * config.gcc (i[34567]86-*-linux*): Use extra config files if ++ --enable-extra-sgxx-multilibs. ++ * config/i386/cs-linux.h, config/i386/cs-linux.opt, ++ config/i386/t-cs-linux: New. ++ ++2009-04-28 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-16 Joseph Myers ++ * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in ++ XLR entry. ++ * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC): ++ Handle -march=xlr. ++ * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move, ++ logical and signext. ++ ++2009-04-28 Joseph Myers ++ ++ Backport: ++ ++ gcc/ ++ 2009-04-14 Joseph Myers ++ * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute ++ library paths. ++ * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-07-02 Joseph Myers ++ * c-incpath.c: Include toplev.h. ++ (merge_include_chains): Use warning instead of cpp_error for ++ system directory poisoning diagnostic. ++ * Makefile.in (c-incpath.o): Depend on toplev.h. ++ * gcc.c (LINK_COMMAND_SPEC): Pass ++ --error-poison-system-directories if ++ -Werror=poison-system-directories. ++ ++ 2007-06-13 Joseph Myers ++ * common.opt (--Wno-poison-system-directories): New. ++ * doc/invoke.texi (-Wno-poison-system-directories): Document. ++ * c-incpath.c: Include flags.h. ++ (merge_include_chains): Check flag_poison_system_directories. ++ * gcc.c (LINK_COMMAND_SPEC): Pass --no-poison-system-directories ++ to linker if -Wno-poison-system-directories. ++ * Makefile.in (c-incpath.o): Depend on $(FLAGS_H). ++ ++ 2007-03-20 Daniel Jacobowitz ++ Joseph Myers ++ * configure.ac (--enable-poison-system-directories): New option. ++ * configure, config.in: Regenerate. ++ * c-incpath.c (merge_include_chains): If ++ ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of ++ /usr/include, /usr/local/include or /usr/X11R6/include. ++ ++2009-04-28 Mark Mitchell ++ Vladimir Prus ++ Joseph Myers ++ Carlos O'Donell ++ Daniel Jacobowitz ++ Kazu Hirata ++ ++ libiberty/ ++ * configure.ac: Add cygpath for mingw hosts. ++ * configure: Regenerate. ++ * Makefile.in: Add cygpath. ++ * cygpath.c: New. ++ * pex-win32.c (pex_win32_open_read, pex_win32_open_write): Use ++ open not _open. ++ ++ include/ ++ * libiberty.h (cygpath): Declare. ++ ++ config/ ++ * mh-mingw (CFLAGS, BOOT_CFLAGS): Do not use -D__USE_MINGW_ACCESS. ++ Add a comment. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ 2008-05-01 Carlos O'Donell ++ ++ * Makefile.tpl (install): Call install-html and install-pdf. ++ * Makefile.in: Regenerate. ++ ++ gcc/ ++ * Makefile.in (install): Depend on install-html and install-pdf. ++ ++2009-04-28 Joseph Myers ++ ++ libgomp/ ++ * Makefile.am (install-data-am): Do not depend on install-html and ++ install-pdf. ++ * Makefile.in: Regenerate. ++ ++2009-04-28 Joseph Myers ++ ++ Merge from Sourcery G++ 4.3: ++ ++ libgomp/ ++ 2008-09-03 Nathan Froyd ++ * libgomp.texi (Library Index): Renamed from "Index" to prevent ++ conflict with index.html on case-insensitive file systems. ++ ++ 2008-08-18 Nathan Froyd ++ * Makefile.am (datarootdir, docdir, htmldir, pdfdir): Define. ++ (HTMLS_INSTALL, HTMLS_BUILD): Define. ++ ($(HTMLS_BUILD)): New rule. ++ (html__strip_dir): Define. ++ (install-data-am): Add install-html and install-pdf prerequsites. ++ (install-html): Add actions. ++ (TEXI2HTML): Define. ++ * Makefile.in: Regenerate. ++ * configure.ac (datarootdir, docdir, htmldir, pdfdir): Add ++ appropriate --with options and AC_SUBSTs. ++ * configure: Regenerate. ++ ++2009-04-28 Joseph Myers ++ ++ gcc/ ++ * gcc.c (main): Add "const" to declaration of license_status. ++ ++ Merge from Sourcery G++ 4.3: ++ ++ gcc/ ++ 2008-09-04 Julian Brown ++ * Makefile.in (CSL_LICENSELIB): Remove space after -L to appease ++ Darwin ld. ++ ++ gcc/ ++ 2007-10-16 Joseph Myers ++ * gcc.c (license_me_flag): Define to 1 if not TARGET_FLEXLM. ++ ++ 2007-08-10 Nathan Froyd ++ * gcc.c (main): Consult license_me_flag to see if failure to ++ acquire a license implies bailing out entirely. ++ ++ 2007-08-24 Nathan Froyd ++ Issue #1892 ++ * gcc.c (main): Check license_me_flag before declaring failure. ++ ++ 2007-08-30 Nathan Sidwell ++ Issue #1892 ++ * gcc.c (main): Don't complain if license fails without -flicense-me ++ ++ 2007-04-12 Richard Sandiford ++ * gcc.c (main): If find_a_file fails, pass the original subproc ++ to csl_subproc_license_new. ++ ++ 2006-12-27 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * gcc.c (main): If the license check fails, remove the generated ++ file. ++ ++ 2006-12-22 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * aclocal.m4: Move licensing options ... ++ * acinclude.m4: ... here. ++ ++ 2006-12-13 Mark Mitchell ++ NOT ASSIGNED TO FSF ++ COPYRIGHT CODESOURCERY ++ * gcc.c (csl/license.h): Include, if required. ++ (license_checked): New variable. ++ (no_license): Remove. ++ (process_command): Set license_checked, not no_license. ++ (main): Use CodeSourcery license library. Remove most ++ TARGET_FLEXLM code. ++ * aclocal.m4 (--with-license): New option. ++ (--with-csl-license-feature): Likewise. ++ (--with-csl-license-version): Likewise. ++ * Makefile.in (CSL_LICENSEINC): Define it. ++ (CSL_LICENSELIB): Likewise. ++ (CSL_LICENSE_PROG): Likewise. ++ (LIBS): Depend on CSL_LICENSELIB. ++ (GCC_PASSES): Depend on CSL_LICENSE_PROG. ++ (INCLUDES): Add CSL_LICENSEINC. ++ * configure.ac (CSL_AC_LICENSE_VERSION): Use it. ++ (CSL_AC_LICENSE): Likewise. ++ (CSL_AC_LICENSE_FEATURE): Likewise. ++ * config.in: Regenerated. ++ * configure: Regenerated. ++ ++ 2006-10-29 Richard Sandiford ++ Joseph Myers ++ * gcc.c (license_me_flag): New variable. ++ (feature_proxy_flag): New variable. ++ (no_license): New variable. ++ (process_command): Handle -flicense-me, -ffeature-proxy and ++ -fno-feature-proxy. Initialize no_license. ++ (main): Check licenses. ++ ++2009-04-28 Joseph Myers ++ ++ * release-notes-csl.xml: New. ++ ++ ++Local Variables: ++mode: change-log ++change-log-default-name: "ChangeLog.csl" ++End: +--- a/src/boehm-gc/include/private/gc_locks.h ++++ b/src/boehm-gc/include/private/gc_locks.h +@@ -139,49 +139,35 @@ + # define GC_TEST_AND_SET_DEFINED + # endif + # if defined(POWERPC) +-# if 0 /* CPP_WORDSZ == 64 totally broken to use int locks with ldarx */ +- inline static int GC_test_and_set(volatile unsigned int *addr) { +- unsigned long oldval; +- unsigned long temp = 1; /* locked value */ +- +- __asm__ __volatile__( +- "1:\tldarx %0,0,%3\n" /* load and reserve */ +- "\tcmpdi %0, 0\n" /* if load is */ +- "\tbne 2f\n" /* non-zero, return already set */ +- "\tstdcx. %2,0,%1\n" /* else store conditional */ +- "\tbne- 1b\n" /* retry if lost reservation */ +- "\tsync\n" /* import barrier */ +- "2:\t\n" /* oldval is zero if we set */ +- : "=&r"(oldval), "=p"(addr) +- : "r"(temp), "1"(addr) +- : "cr0","memory"); +- return (int)oldval; +- } ++# define GC_TEST_AND_SET_DEFINED ++# define GC_CLEAR_DEFINED ++# if (__GNUC__>4)||((__GNUC__==4)&&(__GNUC_MINOR__>=4)) ++# define GC_test_and_set(addr) __sync_lock_test_and_set (addr, 1) ++# define GC_clear(addr) __sync_lock_release (addr) + # else + inline static int GC_test_and_set(volatile unsigned int *addr) { + int oldval; + int temp = 1; /* locked value */ + + __asm__ __volatile__( +- "1:\tlwarx %0,0,%3\n" /* load and reserve */ ++ "\n1:\n" ++ "\tlwarx %0,%y3\n" /* load and reserve, 32-bits */ + "\tcmpwi %0, 0\n" /* if load is */ + "\tbne 2f\n" /* non-zero, return already set */ +- "\tstwcx. %2,0,%1\n" /* else store conditional */ ++ "\tstwcx. %2,%y3\n" /* else store conditional */ + "\tbne- 1b\n" /* retry if lost reservation */ + "\tsync\n" /* import barrier */ + "2:\t\n" /* oldval is zero if we set */ +- : "=&r"(oldval), "=p"(addr) +- : "r"(temp), "1"(addr) ++ : "=&r"(oldval), "=m"(addr) ++ : "r"(temp), "Z"(addr) + : "cr0","memory"); + return oldval; + } +-# endif +-# define GC_TEST_AND_SET_DEFINED + inline static void GC_clear(volatile unsigned int *addr) { + __asm__ __volatile__("lwsync" : : : "memory"); + *(addr) = 0; + } +-# define GC_CLEAR_DEFINED ++# endif + # endif + # if defined(ALPHA) + inline static int GC_test_and_set(volatile unsigned int * addr) +@@ -221,6 +207,12 @@ + # define GC_CLEAR_DEFINED + # endif /* ALPHA */ + # ifdef ARM32 ++# define GC_TEST_AND_SET_DEFINED ++# if (__GNUC__>4)||((__GNUC__==4)&&(__GNUC_MINOR__>=4)) && defined(__ARM_EABI__) ++# define GC_CLEAR_DEFINED ++# define GC_test_and_set(addr) __sync_lock_test_and_set (addr, 1) ++# define GC_clear(addr) __sync_lock_release (addr) ++# else + inline static int GC_test_and_set(volatile unsigned int *addr) { + int oldval; + /* SWP on ARM is very similar to XCHG on x86. Doesn't lock the +@@ -233,7 +225,7 @@ + : "memory"); + return oldval; + } +-# define GC_TEST_AND_SET_DEFINED ++# endif + # endif /* ARM32 */ + # ifdef CRIS + inline static int GC_test_and_set(volatile unsigned int *addr) { +--- a/src/config/mh-mingw ++++ b/src/config/mh-mingw +@@ -1,6 +1,8 @@ + # Add -D__USE_MINGW_ACCESS to enable the built compiler to work on Windows + # Vista (see PR33281 for details). +-BOOT_CFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format +-CFLAGS += -D__USE_MINGW_ACCESS ++# Because we wrap access in libiberty/cygpath.c, we do not want to use ++# the MinGW wrappers for access. ++BOOT_CFLAGS += -Wno-pedantic-ms-format ++# CFLAGS += -D__USE_MINGW_ACCESS + # Increase stack limit to same as Linux default. + LDFLAGS += -Wl,--stack,8388608 +--- a/src/config/stdint.m4 ++++ b/src/config/stdint.m4 +@@ -115,19 +115,19 @@ + + # Lacking an uintptr_t? Test size of void * + case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in +- stddef.h:* | *:no) AC_CHECK_SIZEOF(void *) ;; ++ stddef.h:* | *:no) AC_CHECK_SIZEOF(void *,,/* no standard headers */) ;; + esac + + # Lacking an uint64_t? Test size of long + case "$acx_cv_header_stdint:$ac_cv_type_uint64_t:$ac_cv_type_u_int64_t" in +- stddef.h:*:* | *:no:no) AC_CHECK_SIZEOF(long) ;; ++ stddef.h:*:* | *:no:no) AC_CHECK_SIZEOF(long,,/* no standard headers */) ;; + esac + + if test $acx_cv_header_stdint = stddef.h; then + # Lacking a good header? Test size of everything and deduce all types. +- AC_CHECK_SIZEOF(int) +- AC_CHECK_SIZEOF(short) +- AC_CHECK_SIZEOF(char) ++ AC_CHECK_SIZEOF(int,,/* no standard headers */) ++ AC_CHECK_SIZEOF(short,,/* no standard headers */) ++ AC_CHECK_SIZEOF(char,,/* no standard headers */) + + AC_MSG_CHECKING(for type equivalent to int8_t) + case "$ac_cv_sizeof_char" in +--- a/src/config/tls.m4 ++++ b/src/config/tls.m4 +@@ -1,5 +1,6 @@ + dnl Check whether the target supports TLS. + AC_DEFUN([GCC_CHECK_TLS], [ ++ AC_REQUIRE([AC_CANONICAL_HOST]) + GCC_ENABLE(tls, yes, [], [Use thread-local storage]) + AC_CACHE_CHECK([whether the target supports thread-local storage], + gcc_cv_have_tls, [ +@@ -66,7 +67,24 @@ + [dnl This is the cross-compiling case. Assume libc supports TLS if the + dnl binutils and the compiler do. + AC_LINK_IFELSE([__thread int a; int b; int main() { return a = b; }], +- [gcc_cv_have_tls=yes], [gcc_cv_have_tls=no]) ++ [chktls_save_LDFLAGS="$LDFLAGS" ++ dnl Shared library options may depend on the host; this check ++ dnl is only known to be needed for GNU/Linux. ++ case $host in ++ *-*-linux*) ++ LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS" ++ ;; ++ esac ++ chktls_save_CFLAGS="$CFLAGS" ++ CFLAGS="-fPIC $CFLAGS" ++ dnl If -shared works, test if TLS works in a shared library. ++ AC_LINK_IFELSE([int f() { return 0; }], ++ [AC_LINK_IFELSE([__thread int a; int b; int f() { return a = b; }], ++ [gcc_cv_have_tls=yes], ++ [gcc_cv_have_tls=no])], ++ [gcc_cv_have_tls=yes]) ++ CFLAGS="$chktls_save_CFLAGS" ++ LDFLAGS="$chktls_save_LDFLAGS"], [gcc_cv_have_tls=no]) + ] + )]) + if test "$enable_tls $gcc_cv_have_tls" = "yes yes"; then +--- a/src/configure ++++ b/src/configure +@@ -2277,7 +2277,7 @@ + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" + ;; + *-*-vxworks*) +- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}" + ;; + alpha*-dec-osf*) + # ld works, but does not support shared libraries. +@@ -2338,10 +2338,17 @@ + esac + libgloss_dir=arm + ;; ++ arm*-*-nucleuseabi) ++ noconfigdirs="$noconfigdirs ${libgcj}" ++ libgloss_dir=arm ++ ;; + arm*-*-symbianelf*) + noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" + libgloss_dir=arm + ;; ++ arm*-*-mingw32*) ++ noconfigdirs="$noconfigdirs target-libgloss ${libgcj} target-libiberty" ++ ;; + arm-*-pe*) + noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" + ;; +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -512,7 +512,7 @@ + noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}" + ;; + *-*-vxworks*) +- noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty target-libstdc++-v3 ${libgcj}" ++ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}" + ;; + alpha*-dec-osf*) + # ld works, but does not support shared libraries. +@@ -573,10 +573,17 @@ + esac + libgloss_dir=arm + ;; ++ arm*-*-nucleuseabi) ++ noconfigdirs="$noconfigdirs ${libgcj}" ++ libgloss_dir=arm ++ ;; + arm*-*-symbianelf*) + noconfigdirs="$noconfigdirs ${libgcj} target-libiberty" + libgloss_dir=arm + ;; ++ arm*-*-mingw32*) ++ noconfigdirs="$noconfigdirs target-libgloss ${libgcj} target-libiberty" ++ ;; + arm-*-pe*) + noconfigdirs="$noconfigdirs target-libgloss ${libgcj}" + ;; +--- a/src/fixincludes/fixincl.tpl ++++ b/src/fixincludes/fixincl.tpl +@@ -38,7 +38,7 @@ + #ifndef SED_PROGRAM + #define SED_PROGRAM "/usr/bin/sed" + #endif +-static char const sed_cmd_z[] = SED_PROGRAM; ++static char const sed_cmd_z[] = "sed"; + [= + + FOR fix =] +--- a/src/fixincludes/inclhack.def ++++ b/src/fixincludes/inclhack.def +@@ -1302,6 +1302,43 @@ + }; + + ++/* glibc's bits/string2.h (before 2004-05-26) generates bogus ++ -Wstrict-aliasing warnings from calls to memset. */ ++fix = { ++ hackname = glibc_string2_memset; ++ files = "bits/string2.h"; ++ select = "#ifndef _HAVE_STRING_ARCH_memset\n# if _STRING_ARCH_unaligned"; ++ c_fix = format; ++ c_fix_arg = "%0 && 0"; ++ test_text = "#ifndef _HAVE_STRING_ARCH_memset\n" ++ "# if _STRING_ARCH_unaligned\n" ++ "# endif\n" ++ "#endif\n"; ++}; ++ ++ ++/* Some versions of glibc have a version of bits/string2.h that ++ produces "value computed is not used" warnings from strncpy; fix ++ this definition by using __builtin_strncpy instead as in newer ++ versions. */ ++fix = { ++ hackname = glibc_strncpy; ++ files = bits/string2.h; ++ bypass = "__builtin_strncpy"; ++ c_fix = format; ++ c_fix_arg = "# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)"; ++ c_fix_arg = "# define strncpy([^\n]*\\\\\n)*[^\n]*"; ++ test_text = <<-EOT ++ # define strncpy(dest, src, n) \ ++ (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \\ ++ ? (strlen (src) + 1 >= ((size_t) (n)) \\ ++ ? (char *) memcpy (dest, src, n) \\ ++ : strncpy (dest, src, n)) \\ ++ : strncpy (dest, src, n))) ++ EOT; ++ ++}; ++ + /* + * Fix these files to use the types we think they should for + * ptrdiff_t, size_t, and wchar_t. +@@ -3006,24 +3043,32 @@ + }; + + /* +- * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing +- * "0" for the last field of the pthread_mutex_t structure, which is +- * of type upad64_t, which itself is typedef'd to int64_t, but with +- * __STDC__ defined (e.g. by -ansi) it is a union. So change the +- * initializer to "{0}" instead ++ * Sun Solaris defines the last field of the pthread_mutex_t structure ++ * to have type upad64_t. Whether upad64_t is an integer type or a ++ * union depends on whether or not the headers believe that a 64-bit ++ * integer type is available. But, PTHREAD_MUTEX_INITIALIZER is not ++ * appropriately conditionalized; it always uses "0", and never "{0}". ++ * In order to avoid warnings/errors from the compiler, we must make ++ * the initializer use braces where appropriate. ++ * ++ * Prior to Solaris 10, if __STDC__ is 1 (as when compiling with ++ * -ansi), the definition would be a union. Beginning with Solaris ++ * 10, the headers check for __GNUC__, and will never use a union with ++ * GCC. We check /usr/include/sys/types.h to see if it checks for ++ * __STDC__. ++ * ++ * A "mach" test for Solaris 10 is undesirable because we want to ++ * allow a compiler built for Solaris <10 to be used on Solaris >=10, ++ * but the installed version of fixincludes hard-wires the target ++ * machine to the configure-time $target, rather than automatically ++ * determining it at installation time. + */ + fix = { + hackname = solaris_mutex_init_2; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; +- /* +- * On Solaris 10, this fix is unnecessary because upad64_t is +- * always defined correctly regardless of the definition of the +- * __STDC__ macro. The first "mach" pattern matches up to +- * solaris9. The second "mach" pattern will not match any two (or +- * more) digit solaris version, but it will match e.g. 2.5.1. +- */ +- mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; ++ mach = '*-*-solaris*'; ++ test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" +@@ -3034,6 +3079,7 @@ + "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)" + ",[ \t]*0\\}" "(|[ \t].*)$"; + test_text = ++ "`mkdir -p sys; echo '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' >> sys/types.h`" + '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" + "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n" + "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n" +@@ -3045,17 +3091,14 @@ + + + /* +- * Sun Solaris defines PTHREAD_RWLOCK_INITIALIZER with a "0" for some +- * fields of the pthread_rwlock_t structure, which are of type +- * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ +- * defined (e.g. by -ansi) it is a union. So change the initializer +- * to "{0}" instead. ++ * See comments for solaris_mutex_init_2 re. upad64_t. + */ + fix = { + hackname = solaris_rwlock_init_1; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; + mach = '*-*-solaris*'; ++ test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" +@@ -3091,24 +3134,14 @@ + + + /* +- * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some +- * fields of the pthread_once_t structure, which are of type +- * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ +- * defined (e.g. by -ansi) it is a union. So change the initializer +- * to "{0}" instead. This test relies on solaris_once_init_1. ++ * See comments for solaris_mutex_init_2 re. upad64_t. + */ + fix = { + hackname = solaris_once_init_2; + select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + files = pthread.h; +- /* +- * On Solaris 10, this fix is unnecessary because upad64_t is +- * always defined correctly regardless of the definition of the +- * __STDC__ macro. The first "mach" pattern matches up to +- * solaris9. The second "mach" pattern will not match any two (or +- * more) digit solaris version, but it will match e.g. 2.5.1. +- */ +- mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; ++ mach = '*-*-solaris*'; ++ test = " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; + c_fix = format; + c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" + "%0\n" +--- a/src/fixincludes/server.c ++++ b/src/fixincludes/server.c +@@ -266,7 +266,7 @@ + /* Make sure the process will pay attention to us, send the + supplied command, and then have it output a special marker that + we can find. */ +- fprintf (server_pair.pf_write, "cd %s\n%s\n\necho\necho %s\n", ++ fprintf (server_pair.pf_write, "cd '%s'\n%s\n\necho\necho %s\n", + p_cur_dir, pz_cmd, z_done); + fflush (server_pair.pf_write); + +--- a/src/fixincludes/tests/base/bits/string2.h ++++ b/src/fixincludes/tests/base/bits/string2.h +@@ -16,3 +16,17 @@ + # define __STRING_INLINE extern __inline + # endif + #endif /* GLIBC_C99_INLINE_3_CHECK */ ++ ++ ++#if defined( GLIBC_STRING2_MEMSET_CHECK ) ++#ifndef _HAVE_STRING_ARCH_memset ++# if _STRING_ARCH_unaligned && 0 ++# endif ++#endif ++ ++#endif /* GLIBC_STRING2_MEMSET_CHECK */ ++ ++ ++#if defined( GLIBC_STRNCPY_CHECK ) ++# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n) ++#endif /* GLIBC_STRNCPY_CHECK */ +--- a/src/fixincludes/tests/base/sys/types.h ++++ b/src/fixincludes/tests/base/sys/types.h +@@ -28,3 +28,4 @@ + + #endif /* ushort_t */ + #endif /* GNU_TYPES_CHECK */ ++#if !defined(__STRICT_ANSI__) && !defined(_NO_LONGLONG) +--- a/src/gcc/LINARO-VERSION ++++ b/src/gcc/LINARO-VERSION +@@ -0,0 +1 @@ ++4.4-2011.02-0 +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -327,6 +327,8 @@ + # It also specifies -isystem ./include to find, e.g., stddef.h. + GCC_CFLAGS=$(CFLAGS_FOR_TARGET) $(INTERNAL_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) -Wold-style-definition $($@-warn) -isystem ./include $(TCFLAGS) + ++EGLIBC_CONFIGS = @EGLIBC_CONFIGS@ ++ + # --------------------------------------------------- + # Programs which produce files for the target machine + # --------------------------------------------------- +@@ -408,6 +410,9 @@ + + xmake_file=@xmake_file@ + tmake_file=@tmake_file@ ++TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@ ++TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@ ++TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@ + out_file=$(srcdir)/config/@out_file@ + out_object_file=@out_object_file@ + md_file=$(srcdir)/config/@md_file@ +@@ -1249,6 +1254,7 @@ + tree-ssa-loop-manip.o \ + tree-ssa-loop-niter.o \ + tree-ssa-loop-prefetch.o \ ++ tree-ssa-loop-promote.o \ + tree-ssa-loop-unswitch.o \ + tree-ssa-loop.o \ + tree-ssa-math-opts.o \ +@@ -1258,6 +1264,7 @@ + tree-ssa-pre.o \ + tree-ssa-propagate.o \ + tree-ssa-reassoc.o \ ++ tree-ssa-remove-local-statics.o \ + tree-ssa-sccvn.o \ + tree-ssa-sink.o \ + tree-ssa-structalias.o \ +@@ -1674,7 +1681,7 @@ + $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \ + $(LIB2ADD_ST) $(LIB2ADDEH) $(srcdir)/emutls.c gcov-iov.h $(SFP_MACHINE) + +-libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \ ++libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs $(tmake_file) \ + xgcc$(exeext) + : > tmp-libgcc.mvars + echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars +@@ -1728,7 +1735,7 @@ + # driver program needs to select the library directory based on the + # switches. + multilib.h: s-mlib; @true +-s-mlib: $(srcdir)/genmultilib Makefile ++s-mlib: $(srcdir)/genmultilib Makefile $(tmakefile) + if test @enable_multilib@ = yes \ + || test -n "$(MULTILIB_OSDIRNAMES)"; then \ + $(SHELL) $(srcdir)/genmultilib \ +@@ -1739,10 +1746,11 @@ + "$(MULTILIB_EXTRA_OPTS)" \ + "$(MULTILIB_EXCLUSIONS)" \ + "$(MULTILIB_OSDIRNAMES)" \ ++ "$(MULTILIB_ALIASES)" \ + "@enable_multilib@" \ + > tmp-mlib.h; \ + else \ +- $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' no \ ++ $(SHELL) $(srcdir)/genmultilib '' '' '' '' '' '' '' '' no \ + > tmp-mlib.h; \ + fi + $(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h +@@ -1816,7 +1824,7 @@ + + incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \ + intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \ +- $(MACHMODE_H) ++ $(MACHMODE_H) $(FLAGS_H) toplev.h + + c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \ + $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \ +@@ -1900,7 +1908,7 @@ + $(TREE_H) $(C_PRAGMA_H) $(FLAGS_H) $(TOPLEV_H) langhooks.h \ + $(TREE_INLINE_H) $(DIAGNOSTIC_H) intl.h debug.h $(C_COMMON_H) \ + opts.h options.h $(MKDEPS_H) incpath.h cppdefault.h $(TARGET_H) \ +- $(TM_P_H) $(VARRAY_H) ++ $(TM_P_H) $(VARRAY_H) $(C_TREE_H) + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@ + +@@ -1953,7 +1961,8 @@ + -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ \ + $(VALGRIND_DRIVER_DEFINES) \ +- `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` ++ `test "X$${SHLIB_LINK}" = "X" || test "@enable_shared@" != "yes" || echo "-DENABLE_SHARED_LIBGCC"` \ ++ -DCONFIGURE_SPECS="\"@CONFIGURE_SPECS@\"" + + gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \ + Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \ +@@ -2058,7 +2067,7 @@ + all-tree.def $(FLAGS_H) $(FUNCTION_H) $(PARAMS_H) \ + $(TOPLEV_H) $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) langhooks.h \ + $(REAL_H) gt-tree.h tree-iterator.h $(BASIC_BLOCK_H) $(TREE_FLOW_H) \ +- $(OBSTACK_H) pointer-set.h fixed-value.h ++ $(OBSTACK_H) pointer-set.h fixed-value.h intl.h + tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(TREE_H) langhooks.h $(TOPLEV_H) $(SPLAY_TREE_H) $(TREE_DUMP_H) \ + tree-iterator.h tree-pass.h $(DIAGNOSTIC_H) $(REAL_H) fixed-value.h +@@ -2176,6 +2185,9 @@ + alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) $(GIMPLE_H) \ + $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \ + $(DBGCNT_H) ++tree-ssa-remove-local-statics.o: tree-ssa-remove-local-statics.c \ ++ coretypes.h $(CONFIG_H) $(SYSTEM_H) $(BASIC_BLOCK_H) tree.h tree-pass.h \ ++ $(TM_H) $(HASHTAB_H) $(BASIC_BLOCK_H) + tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \ + $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \ + $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \ +@@ -2271,6 +2283,12 @@ + $(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) hard-reg-set.h \ + tree-chrec.h $(TOPLEV_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \ + $(OPTABS_H) ++tree-ssa-loop-promote.o: tree-ssa-loop-promote.c \ ++ coretypes.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TOPLEV_H) \ ++ $(RTL_H) $(TM_P_H) hard-reg-set.h $(OBSTACK_H) $(BASIC_BLOCK_H) \ ++ pointer-set.h intl.h $(TREE_H) $(GIMPLE_H) $(HASHTAB_H) $(DIAGNOSTIC_H) \ ++ $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(FLAGS_H) $(TIMEVAR_H) \ ++ tree-pass.h $(TM_H) + tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \ + $(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) $(SCEV_H) \ + $(PARAMS_H) $(DIAGNOSTIC_H) tree-pass.h $(TM_H) coretypes.h tree-affine.h \ +@@ -2865,7 +2883,7 @@ + $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \ + hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \ + $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \ +- $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h $(DF_H) $(DBGCNT_H) ++ $(OBSTACK_H) $(TIMEVAR_H) tree-pass.h addresses.h $(DF_H) $(DBGCNT_H) + postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ + $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ + $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \ +@@ -3582,7 +3600,7 @@ + # be rebuilt. + + # Build the include directories. +-stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) fixinc_list ++stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) $(UNWIND_H) + # Copy in the headers provided with gcc. + # The sed command gets just the last file name component; + # this is necessary because VPATH could add a dirname. +@@ -3601,21 +3619,23 @@ + done + rm -f include/unwind.h + cp $(UNWIND_H) include/unwind.h +- set -e; for ml in `cat fixinc_list`; do \ +- sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \ +- multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \ +- fix_dir=include-fixed$${multi_dir}; \ +- if $(LIMITS_H_TEST) ; then \ +- cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \ +- else \ +- cat $(srcdir)/glimits.h > tmp-xlimits.h; \ +- fi; \ +- $(mkinstalldirs) $${fix_dir}; \ +- chmod a+rx $${fix_dir} || true; \ +- rm -f $${fix_dir}/limits.h; \ +- mv tmp-xlimits.h $${fix_dir}/limits.h; \ +- chmod a+r $${fix_dir}/limits.h; \ +- done ++ set -e; if [ -f fixinc_list ] ; then \ ++ for ml in `cat fixinc_list`; do \ ++ sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \ ++ multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \ ++ fix_dir=include-fixed$${multi_dir}; \ ++ if $(LIMITS_H_TEST) ; then \ ++ cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \ ++ else \ ++ cat $(srcdir)/glimits.h > tmp-xlimits.h; \ ++ fi; \ ++ $(mkinstalldirs) $${fix_dir}; \ ++ chmod a+rx $${fix_dir} || true; \ ++ rm -f $${fix_dir}/limits.h; \ ++ mv tmp-xlimits.h $${fix_dir}/limits.h; \ ++ chmod a+r $${fix_dir}/limits.h; \ ++ done; \ ++ fi + # Install the README + rm -f include-fixed/README + cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README +@@ -3918,8 +3938,7 @@ + + # List the directories or single hmtl files which are installed by + # install-html. The lang.html file triggers language fragments to build +-# html documentation. Installing language fragment documentation is not +-# yet supported. ++# html documentation. + HTMLS_INSTALL=$(build_htmldir)/cpp $(build_htmldir)/gcc \ + $(build_htmldir)/gccinstall $(build_htmldir)/gccint \ + $(build_htmldir)/cppinternals +@@ -4222,7 +4241,7 @@ + + html__strip_dir = `echo $$p | sed -e 's|^.*/||'`; + +-install-html: $(HTMLS_BUILD) ++install-html: $(HTMLS_BUILD) lang.install-html + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS_INSTALL)'; for p in $$list; do \ +@@ -4340,16 +4359,18 @@ + + # Install supporting files for fixincludes to be run later. + install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-itoolsdirs \ +- macro_list fixinc_list ++ macro_list + $(INSTALL_DATA) $(srcdir)/gsyslimits.h \ + $(DESTDIR)$(itoolsdatadir)/gsyslimits.h + $(INSTALL_DATA) macro_list $(DESTDIR)$(itoolsdatadir)/macro_list +- $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list +- set -e; for ml in `cat fixinc_list`; do \ +- multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \ +- $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \ +- $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \ +- done ++ set -e; if [ -f fixinc_list ] ; then \ ++ $(INSTALL_DATA) fixinc_list $(DESTDIR)$(itoolsdatadir)/fixinc_list; \ ++ for ml in `cat fixinc_list`; do \ ++ multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \ ++ $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \ ++ $(INSTALL_DATA) include-fixed$${multidir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \ ++ done; \ ++ fi + $(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \ + $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \ + if [ x$(STMP_FIXPROTO) != x ] ; then \ +--- a/src/gcc/ada/gcc-interface/Make-lang.in ++++ b/src/gcc/ada/gcc-interface/Make-lang.in +@@ -23,7 +23,7 @@ + # + # foo.all.cross, foo.start.encap, foo.rest.encap, + # foo.install-common, foo.install-man, foo.install-info, foo.install-pdf, +-# foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall, ++# foo.install-html, foo.info, foo.dvi, foo.pdf, foo.html, foo.uninstall, + # foo.mostlyclean, foo.clean, foo.distclean, + # foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4 + # +@@ -450,6 +450,8 @@ + + ada.html: + ++ada.install-html: ++ + doc/gnat_ugn.dvi: doc/gnat_ugn.texi $(gcc_docdir)/include/fdl.texi \ + $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi + $(TEXI2DVI) -c -I $(abs_docdir)/include -o $@ $< +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -1,5 +1,5 @@ + # Makefile for GNU Ada Compiler (GNAT). +-# Copyright (C) 1994-2009 Free Software Foundation, Inc. ++# Copyright (C) 1994-2010 Free Software Foundation, Inc. + + #This file is part of GCC. + +@@ -1533,6 +1533,41 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads. -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := High_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := False; ++ GCC_ZCX_Support : constant Boolean := False; ++ ++end System; +--- a/src/gcc/ada/system-linux-armel.ads ++++ b/src/gcc/ada/system-linux-armel.ads +@@ -0,0 +1,153 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNAT RUN-TIME COMPONENTS -- ++-- -- ++-- S Y S T E M -- ++-- -- ++-- S p e c -- ++-- (GNU-Linux/ARMEL Version) -- ++-- -- ++-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- ++-- -- ++-- This specification is derived from the Ada Reference Manual for use with -- ++-- GNAT. The copyright notice above, and the license provisions that follow -- ++-- apply solely to the contents of the part following the private keyword. -- ++-- -- ++-- GNAT is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 3, or (at your option) any later ver- -- ++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. -- ++-- -- ++-- As a special exception under Section 7 of GPL version 3, you are granted -- ++-- additional permissions described in the GCC Runtime Library Exception, -- ++-- version 3.1, as published by the Free Software Foundation. -- ++-- -- ++-- You should have received a copy of the GNU General Public License and -- ++-- a copy of the GCC Runtime Library Exception along with this program; -- ++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- ++-- . -- ++-- -- ++-- GNAT was originally developed by the GNAT team at New York University. -- ++-- Extensive contributions were provided by Ada Core Technologies Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++package System is ++ pragma Pure; ++ -- Note that we take advantage of the implementation permission to make ++ -- this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada ++ -- 2005, this is Pure in any case (AI-362). ++ ++ type Name is (SYSTEM_NAME_GNAT); ++ System_Name : constant Name := SYSTEM_NAME_GNAT; ++ ++ -- System-Dependent Named Numbers ++ ++ Min_Int : constant := Long_Long_Integer'First; ++ Max_Int : constant := Long_Long_Integer'Last; ++ ++ Max_Binary_Modulus : constant := 2 ** Long_Long_Integer'Size; ++ Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1; ++ ++ Max_Base_Digits : constant := Long_Long_Float'Digits; ++ Max_Digits : constant := Long_Long_Float'Digits; ++ ++ Max_Mantissa : constant := 63; ++ Fine_Delta : constant := 2.0 ** (-Max_Mantissa); ++ ++ Tick : constant := 0.000_001; ++ ++ -- Storage-related Declarations ++ ++ type Address is private; ++ pragma Preelaborable_Initialization (Address); ++ Null_Address : constant Address; ++ ++ Storage_Unit : constant := 8; ++ Word_Size : constant := 32; ++ Memory_Size : constant := 2 ** 32; ++ ++ -- Address comparison ++ ++ function "<" (Left, Right : Address) return Boolean; ++ function "<=" (Left, Right : Address) return Boolean; ++ function ">" (Left, Right : Address) return Boolean; ++ function ">=" (Left, Right : Address) return Boolean; ++ function "=" (Left, Right : Address) return Boolean; ++ ++ pragma Import (Intrinsic, "<"); ++ pragma Import (Intrinsic, "<="); ++ pragma Import (Intrinsic, ">"); ++ pragma Import (Intrinsic, ">="); ++ pragma Import (Intrinsic, "="); ++ ++ -- Other System-Dependent Declarations ++ ++ type Bit_Order is (High_Order_First, Low_Order_First); ++ Default_Bit_Order : constant Bit_Order := Low_Order_First; ++ pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning ++ ++ -- Priority-related Declarations (RM D.1) ++ ++ -- 0 .. 98 corresponds to the system priority range 1 .. 99. ++ -- ++ -- If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use ++ -- of the entire range provided by the system. ++ -- ++ -- If the scheduling policy is SCHED_OTHER the only valid system priority ++ -- is 1 and other values are simply ignored. ++ ++ Max_Priority : constant Positive := 97; ++ Max_Interrupt_Priority : constant Positive := 98; ++ ++ subtype Any_Priority is Integer range 0 .. 98; ++ subtype Priority is Any_Priority range 0 .. 97; ++ subtype Interrupt_Priority is Any_Priority range 98 .. 98; ++ ++ Default_Priority : constant Priority := 48; ++ ++private ++ ++ type Address is mod Memory_Size; ++ Null_Address : constant Address := 0; ++ ++ -------------------------------------- ++ -- System Implementation Parameters -- ++ -------------------------------------- ++ ++ -- These parameters provide information about the target that is used ++ -- by the compiler. They are in the private part of System, where they ++ -- can be accessed using the special circuitry in the Targparm unit ++ -- whose source should be consulted for more detailed descriptions ++ -- of the individual switch values. ++ ++ Backend_Divide_Checks : constant Boolean := False; ++ Backend_Overflow_Checks : constant Boolean := False; ++ Command_Line_Args : constant Boolean := True; ++ Configurable_Run_Time : constant Boolean := False; ++ Denorm : constant Boolean := True; ++ Duration_32_Bits : constant Boolean := False; ++ Exit_Status_Supported : constant Boolean := True; ++ Fractional_Fixed_Ops : constant Boolean := False; ++ Frontend_Layout : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : constant Boolean := True; ++ Stack_Check_Limits : constant Boolean := False; ++ Support_64_Bit_Divides : constant Boolean := True; ++ Support_Aggregates : constant Boolean := True; ++ Support_Composite_Assign : constant Boolean := True; ++ Support_Composite_Compare : constant Boolean := True; ++ Support_Long_Shifts : constant Boolean := True; ++ Always_Compatible_Rep : constant Boolean := False; ++ Suppress_Standard_Library : constant Boolean := False; ++ Use_Ada_Main_Program_Name : constant Boolean := False; ++ ZCX_By_Default : constant Boolean := False; ++ GCC_ZCX_Support : constant Boolean := False; ++ ++end System; +--- a/src/gcc/addresses.h ++++ b/src/gcc/addresses.h +@@ -78,3 +78,42 @@ + + return ok_for_base_p_1 (regno, mode, outer_code, index_code); + } ++ ++/* Wrapper function to unify target macros MODE_INDEX_REG_CLASS and ++ INDEX_REG_CLASS. Arguments as for the MODE_INDEX_REG_CLASS macro. */ ++ ++static inline enum reg_class ++index_reg_class (enum machine_mode mode ATTRIBUTE_UNUSED) ++{ ++#ifdef MODE_INDEX_REG_CLASS ++ return MODE_INDEX_REG_CLASS (mode); ++#else ++ return INDEX_REG_CLASS; ++#endif ++} ++ ++/* Wrapper function to unify target macros REGNO_MODE_OK_FOR_INDEX_P ++ and REGNO_OK_FOR_INDEX_P. Arguments as for the ++ REGNO_MODE_OK_FOR_INDEX_P macro. */ ++ ++static inline bool ++ok_for_index_p_1 (unsigned regno, enum machine_mode mode ATTRIBUTE_UNUSED) ++{ ++#ifdef REGNO_MODE_OK_FOR_INDEX_P ++ return REGNO_MODE_OK_FOR_INDEX_P (regno, mode); ++#else ++ return REGNO_OK_FOR_INDEX_P (regno); ++#endif ++} ++ ++/* Wrapper around ok_for_index_p_1, for use after register allocation is ++ complete. Arguments as for the called function. */ ++ ++static inline bool ++regno_ok_for_index_p (unsigned regno, enum machine_mode mode) ++{ ++ if (regno >= FIRST_PSEUDO_REGISTER && reg_renumber[regno] >= 0) ++ regno = reg_renumber[regno]; ++ ++ return ok_for_index_p_1 (regno, mode); ++} +--- a/src/gcc/basic-block.h ++++ b/src/gcc/basic-block.h +@@ -900,6 +900,10 @@ + + /* In cfgcleanup.c. */ + extern bool cleanup_cfg (int); ++extern int flow_find_cross_jump (int, basic_block, basic_block, rtx *, rtx *); ++extern int flow_find_head_matching_sequence (int, basic_block, basic_block, ++ rtx *, rtx *, int); ++ + extern bool delete_unreachable_blocks (void); + + extern bool mark_dfs_back_edges (void); +--- a/src/gcc/c-common.c ++++ b/src/gcc/c-common.c +@@ -33,7 +33,6 @@ + #include "varray.h" + #include "expr.h" + #include "c-common.h" +-#include "diagnostic.h" + #include "tm_p.h" + #include "obstack.h" + #include "cpplib.h" +@@ -42,6 +41,7 @@ + #include "tree-inline.h" + #include "c-tree.h" + #include "toplev.h" ++#include "diagnostic.h" + #include "tree-iterator.h" + #include "hashtab.h" + #include "tree-mudflap.h" +@@ -497,6 +497,10 @@ + This is a count, since unevaluated expressions can nest. */ + int skip_evaluation; + ++/* Whether lexing has been completed, so subsequent preprocessor ++ errors should use the compiler's input_location. */ ++bool done_lexing = false; ++ + /* Information about how a function name is generated. */ + struct fname_var_t + { +@@ -1021,6 +1025,8 @@ + if (!IS_EMPTY_STMT (stmts)) + saved_function_name_decls + = tree_cons (decl, stmts, saved_function_name_decls); ++ DECL_SOURCE_LOCATION (decl) = loc; ++ + *fname_vars[ix].decl = decl; + input_location = saved_location; + } +@@ -7511,6 +7517,68 @@ + #undef catenate_messages + } + ++/* Callback from cpp_error for PFILE to print diagnostics from the ++ preprocessor. The diagnostic is of type LEVEL, at location ++ LOCATION unless this is after lexing and the compiler's location ++ should be used instead, with column number possibly overridden by ++ COLUMN_OVERRIDE if not zero; MSG is the translated message and AP ++ the arguments. Returns true if a diagnostic was emitted, false ++ otherwise. */ ++ ++bool ++c_cpp_error (cpp_reader *pfile ATTRIBUTE_UNUSED, int level, ++ location_t location, unsigned int column_override, ++ const char *msg, va_list *ap) ++{ ++ diagnostic_info diagnostic; ++ diagnostic_t dlevel; ++ int save_warn_system_headers = warn_system_headers; ++ bool ret; ++ ++ switch (level) ++ { ++ case CPP_DL_WARNING_SYSHDR: ++ if (flag_no_output) ++ return false; ++ warn_system_headers = 1; ++ /* Fall through. */ ++ case CPP_DL_WARNING: ++ if (flag_no_output) ++ return false; ++ dlevel = DK_WARNING; ++ break; ++ case CPP_DL_PEDWARN: ++ if (flag_no_output && !flag_pedantic_errors) ++ return false; ++ dlevel = DK_PEDWARN; ++ break; ++ case CPP_DL_ERROR: ++ dlevel = DK_ERROR; ++ break; ++ case CPP_DL_ICE: ++ dlevel = DK_ICE; ++ break; ++ case CPP_DL_NOTE: ++ dlevel = DK_NOTE; ++ break; ++ case CPP_DL_FATAL: ++ dlevel = DK_FATAL; ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ if (done_lexing) ++ location = input_location; ++ diagnostic_set_info_translated (&diagnostic, msg, ap, ++ location, dlevel); ++ if (column_override) ++ diagnostic_override_column (&diagnostic, column_override); ++ ret = report_diagnostic (&diagnostic); ++ if (level == CPP_DL_WARNING_SYSHDR) ++ warn_system_headers = save_warn_system_headers; ++ return ret; ++} ++ + /* Walk a gimplified function and warn for functions whose return value is + ignored and attribute((warn_unused_result)) is set. This is done before + inlining, so we don't have to worry about that. */ +--- a/src/gcc/c-common.h ++++ b/src/gcc/c-common.h +@@ -658,6 +658,11 @@ + + extern int skip_evaluation; + ++/* Whether lexing has been completed, so subsequent preprocessor ++ errors should use the compiler's input_location. */ ++ ++extern bool done_lexing; ++ + /* C types are partitioned into three subsets: object, function, and + incomplete types. */ + #define C_TYPE_OBJECT_P(type) \ +--- a/src/gcc/c-convert.c ++++ b/src/gcc/c-convert.c +@@ -70,6 +70,7 @@ + tree e = expr; + enum tree_code code = TREE_CODE (type); + const char *invalid_conv_diag; ++ tree ret; + + if (type == error_mark_node + || expr == error_mark_node +@@ -85,6 +86,9 @@ + + if (type == TREE_TYPE (expr)) + return expr; ++ ret = targetm.convert_to_type (type, expr); ++ if (ret) ++ return ret; + + if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr))) + return fold_convert (type, expr); +--- a/src/gcc/c-decl.c ++++ b/src/gcc/c-decl.c +@@ -4002,6 +4002,7 @@ + bool bitfield = width != NULL; + tree element_type; + struct c_arg_info *arg_info = 0; ++ const char *errmsg; + + if (decl_context == FUNCDEF) + funcdef_flag = true, decl_context = NORMAL; +@@ -4539,6 +4540,12 @@ + error ("%qs declared as function returning an array", name); + type = integer_type_node; + } ++ errmsg = targetm.invalid_return_type (type); ++ if (errmsg) ++ { ++ error (errmsg); ++ type = integer_type_node; ++ } + + /* Construct the function type and go to the next + inner layer of declarator. */ +@@ -5052,6 +5059,7 @@ + { + tree parm, type, typelt; + unsigned int parmno; ++ const char *errmsg; + + /* If there is a parameter of incomplete type in a definition, + this is an error. In a declaration this is valid, and a +@@ -5095,6 +5103,14 @@ + } + } + ++ errmsg = targetm.invalid_parameter_type (type); ++ if (errmsg) ++ { ++ error (errmsg); ++ TREE_VALUE (typelt) = error_mark_node; ++ TREE_TYPE (parm) = error_mark_node; ++ } ++ + if (DECL_NAME (parm) && TREE_USED (parm)) + warn_if_shadowing (parm); + } +@@ -8087,7 +8103,7 @@ + + /* Don't waste time on further processing if -fsyntax-only or we've + encountered errors. */ +- if (flag_syntax_only || errorcount || sorrycount || cpp_errors (parse_in)) ++ if (flag_syntax_only || errorcount || sorrycount) + return; + + /* Close the external scope. */ +--- a/src/gcc/c-opts.c ++++ b/src/gcc/c-opts.c +@@ -40,6 +40,7 @@ + #include "mkdeps.h" + #include "target.h" + #include "tm_p.h" ++#include "c-tree.h" /* For c_cpp_error. */ + + #ifndef DOLLARS_IN_IDENTIFIERS + # define DOLLARS_IN_IDENTIFIERS true +@@ -201,6 +202,7 @@ + { + static const unsigned int lang_flags[] = {CL_C, CL_ObjC, CL_CXX, CL_ObjCXX}; + unsigned int i, result; ++ struct cpp_callbacks *cb; + + /* This is conditionalized only because that is the way the front + ends used to do it. Maybe this should be unconditional? */ +@@ -216,6 +218,8 @@ + + parse_in = cpp_create_reader (c_dialect_cxx () ? CLK_GNUCXX: CLK_GNUC89, + ident_hash, line_table); ++ cb = cpp_get_callbacks (parse_in); ++ cb->error = c_cpp_error; + + cpp_opts = cpp_get_options (parse_in); + cpp_opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS; +@@ -333,12 +337,12 @@ + or environment var dependency generation is used. */ + cpp_opts->deps.style = (code == OPT_M ? DEPS_SYSTEM: DEPS_USER); + flag_no_output = 1; +- cpp_opts->inhibit_warnings = 1; + break; + + case OPT_MD: + case OPT_MMD: + cpp_opts->deps.style = (code == OPT_MD ? DEPS_SYSTEM: DEPS_USER); ++ cpp_opts->deps.need_preprocessor_output = true; + deps_file = arg; + break; + +@@ -444,7 +448,6 @@ + break; + + case OPT_Werror: +- cpp_opts->warnings_are_errors = value; + global_dc->warning_as_error_requested = value; + break; + +@@ -503,10 +506,6 @@ + warn_strict_null_sentinel = value; + break; + +- case OPT_Wsystem_headers: +- cpp_opts->warn_system_headers = value; +- break; +- + case OPT_Wtraditional: + cpp_opts->warn_traditional = value; + break; +@@ -895,8 +894,6 @@ + c_common_post_options, so that a subsequent -Wno-endif-labels + is not overridden. */ + case OPT_pedantic_errors: +- cpp_opts->pedantic_errors = 1; +- /* Fall through. */ + case OPT_pedantic: + cpp_opts->pedantic = 1; + cpp_opts->warn_endif_labels = 1; +@@ -971,10 +968,6 @@ + flag_undef = 1; + break; + +- case OPT_w: +- cpp_opts->inhibit_warnings = 1; +- break; +- + case OPT_v: + verbose = true; + break; +@@ -1159,10 +1152,6 @@ + + input_location = UNKNOWN_LOCATION; + +- /* If an error has occurred in cpplib, note it so we fail +- immediately. */ +- errorcount += cpp_errors (parse_in); +- + *pfilename = this_input_filename + = cpp_read_main_file (parse_in, in_fnames[0]); + /* Don't do any compilation or preprocessing if there is no input file. */ +@@ -1274,7 +1263,8 @@ + { + FILE *deps_stream = NULL; + +- if (cpp_opts->deps.style != DEPS_NONE) ++ /* Don't write the deps file if there are errors. */ ++ if (cpp_opts->deps.style != DEPS_NONE && errorcount == 0) + { + /* If -M or -MM was seen without -MF, default output to the + output stream. */ +@@ -1290,7 +1280,7 @@ + + /* For performance, avoid tearing down cpplib's internal structures + with cpp_destroy (). */ +- errorcount += cpp_finish (parse_in, deps_stream); ++ cpp_finish (parse_in, deps_stream); + + if (deps_stream && deps_stream != out_stream + && (ferror (deps_stream) || fclose (deps_stream))) +--- a/src/gcc/c-ppoutput.c ++++ b/src/gcc/c-ppoutput.c +@@ -521,6 +521,7 @@ + + if (map != NULL) + { ++ input_location = map->start_location; + if (print.first_time) + { + /* Avoid printing foo.i when the main file is foo.c. */ +--- a/src/gcc/c-tree.h ++++ b/src/gcc/c-tree.h +@@ -647,4 +647,8 @@ + extern void pedwarn_c90 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4); + extern void pedwarn_c99 (location_t, int opt, const char *, ...) ATTRIBUTE_GCC_CDIAG(3,4); + ++extern bool c_cpp_error (cpp_reader *, int, location_t, unsigned int, ++ const char *, va_list *) ++ ATTRIBUTE_GCC_CDIAG(5,0); ++ + #endif /* ! GCC_C_TREE_H */ +--- a/src/gcc/c-typeck.c ++++ b/src/gcc/c-typeck.c +@@ -1765,6 +1765,7 @@ + tree orig_exp; + tree type = TREE_TYPE (exp); + enum tree_code code = TREE_CODE (type); ++ tree promoted_type; + + /* Functions and arrays have been converted during parsing. */ + gcc_assert (code != FUNCTION_TYPE); +@@ -1801,6 +1802,10 @@ + if (exp == error_mark_node) + return error_mark_node; + ++ promoted_type = targetm.promoted_type (type); ++ if (promoted_type) ++ return convert (promoted_type, exp); ++ + if (INTEGRAL_TYPE_P (type)) + return perform_integral_promotions (exp); + +--- a/src/gcc/c.opt ++++ b/src/gcc/c.opt +@@ -720,6 +720,10 @@ + C ObjC C++ ObjC++ + Treat the input file as already preprocessed + ++fremove-local-statics ++C C++ Var(flag_remove_local_statics) Optimization ++Convert function-local static variables to automatic variables when it is safe to do so ++ + freplace-objc-classes + ObjC ObjC++ + Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime +--- a/src/gcc/calls.c ++++ b/src/gcc/calls.c +@@ -711,7 +711,9 @@ + + For small register classes, also do this if this call uses + register parameters. This is to avoid reload conflicts while +- loading the parameters registers. */ ++ loading the parameters registers. ++ ++ Avoid creating the extra move if optimizing for size. */ + + else if ((! (REG_P (args[i].value) + || (GET_CODE (args[i].value) == SUBREG +@@ -719,6 +721,7 @@ + && args[i].mode != BLKmode + && rtx_cost (args[i].value, SET, optimize_insn_for_speed_p ()) + > COSTS_N_INSNS (1) ++ && !optimize_size + && ((SMALL_REGISTER_CLASSES && *reg_parm_seen) + || optimize)) + args[i].value = copy_to_mode_reg (args[i].mode, args[i].value); +@@ -3806,7 +3809,7 @@ + cse'ing of library calls could delete a call and leave the pop. */ + NO_DEFER_POP; + valreg = (mem_value == 0 && outmode != VOIDmode +- ? hard_libcall_value (outmode) : NULL_RTX); ++ ? hard_libcall_value (outmode, orgfun) : NULL_RTX); + + /* Stack must be properly aligned now. */ + gcc_assert (!(stack_pointer_delta +@@ -4051,8 +4054,17 @@ + /* We need to make a save area. */ + unsigned int size = arg->locate.size.constant * BITS_PER_UNIT; + enum machine_mode save_mode = mode_for_size (size, MODE_INT, 1); +- rtx adr = memory_address (save_mode, XEXP (arg->stack_slot, 0)); +- rtx stack_area = gen_rtx_MEM (save_mode, adr); ++ rtx adr; ++ rtx stack_area; ++ ++ /* We can only use save_mode if the arg is sufficiently ++ aligned. */ ++ if (STRICT_ALIGNMENT ++ && GET_MODE_ALIGNMENT (save_mode) > arg->locate.boundary) ++ save_mode = BLKmode; ++ ++ adr = memory_address (save_mode, XEXP (arg->stack_slot, 0)); ++ stack_area = gen_rtx_MEM (save_mode, adr); + + if (save_mode == BLKmode) + { +--- a/src/gcc/cfgcleanup.c ++++ b/src/gcc/cfgcleanup.c +@@ -68,7 +68,6 @@ + static bool try_crossjump_to_edge (int, edge, edge); + static bool try_crossjump_bb (int, basic_block); + static bool outgoing_edges_match (int, basic_block, basic_block); +-static int flow_find_cross_jump (int, basic_block, basic_block, rtx *, rtx *); + static bool old_insns_match_p (int, rtx, rtx); + + static void merge_blocks_move_predecessor_nojumps (basic_block, basic_block); +@@ -967,13 +966,27 @@ + be filled that clobbers a parameter expected by the subroutine. + + ??? We take the simple route for now and assume that if they're +- equal, they were constructed identically. */ ++ equal, they were constructed identically. + +- if (CALL_P (i1) +- && (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1), ++ Also check for identical exception regions. */ ++ ++ if (CALL_P (i1)) ++ { ++ /* Ensure the same EH region. */ ++ rtx n1 = find_reg_note (i1, REG_EH_REGION, 0); ++ rtx n2 = find_reg_note (i2, REG_EH_REGION, 0); ++ ++ if (!n1 && n2) ++ return false; ++ ++ if (n1 && (!n2 || XEXP (n1, 0) != XEXP (n2, 0))) ++ return false; ++ ++ if (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1), + CALL_INSN_FUNCTION_USAGE (i2)) +- || SIBLING_CALL_P (i1) != SIBLING_CALL_P (i2))) +- return false; ++ || SIBLING_CALL_P (i1) != SIBLING_CALL_P (i2)) ++ return false; ++ } + + #ifdef STACK_REGS + /* If cross_jump_death_matters is not 0, the insn's mode +@@ -1053,7 +1066,7 @@ + To simplify callers of this function, if the blocks match exactly, + store the head of the blocks in *F1 and *F2. */ + +-static int ++int + flow_find_cross_jump (int mode ATTRIBUTE_UNUSED, basic_block bb1, + basic_block bb2, rtx *f1, rtx *f2) + { +@@ -1155,6 +1168,108 @@ + *f1 = last1; + *f2 = last2; + } ++ ++ return ninsns; ++} ++ ++/* Like flow_find_cross_jump, except start looking for a matching sequence from ++ the head of the two blocks. Do not include jumps at the end. ++ If STOP_AFTER is nonzero, stop after finding that many matching ++ instructions. */ ++ ++int ++flow_find_head_matching_sequence (int mode ATTRIBUTE_UNUSED, basic_block bb1, ++ basic_block bb2, rtx *f1, rtx *f2, ++ int stop_after) ++{ ++ rtx i1, i2, last1, last2, beforelast1, beforelast2; ++ int ninsns = 0; ++ edge e; ++ edge_iterator ei; ++ int nehedges1 = 0, nehedges2 = 0; ++ ++ FOR_EACH_EDGE (e, ei, bb1->succs) ++ if (e->flags & EDGE_EH) ++ nehedges1++; ++ FOR_EACH_EDGE (e, ei, bb2->succs) ++ if (e->flags & EDGE_EH) ++ nehedges2++; ++ ++ i1 = BB_HEAD (bb1); ++ i2 = BB_HEAD (bb2); ++ last1 = beforelast1 = last2 = beforelast2 = NULL_RTX; ++ ++ while (true) ++ { ++ ++ /* Ignore notes. */ ++ while (!INSN_P (i1) && i1 != BB_END (bb1)) ++ i1 = NEXT_INSN (i1); ++ ++ while (!INSN_P (i2) && i2 != BB_END (bb2)) ++ i2 = NEXT_INSN (i2); ++ ++ if (NOTE_P (i1) || NOTE_P (i2) ++ || JUMP_P (i1) || JUMP_P (i2)) ++ break; ++ ++ if ((i1 == BB_END (bb1) && i2 != BB_END (bb2) ++ && nehedges1 > 0) ++ || (i2 == BB_END (bb2) && i1 != BB_END (bb1) ++ && nehedges2 > 0) ++ || (i1 == BB_END (bb1) && i2 == BB_END (bb2) ++ && nehedges1 != nehedges2)) ++ break; ++ ++ if (!old_insns_match_p (mode, i1, i2)) ++ break; ++ ++ merge_memattrs (i1, i2); ++ ++ /* Don't begin a cross-jump with a NOTE insn. */ ++ if (INSN_P (i1)) ++ { ++ /* If the merged insns have different REG_EQUAL notes, then ++ remove them. */ ++ rtx equiv1 = find_reg_equal_equiv_note (i1); ++ rtx equiv2 = find_reg_equal_equiv_note (i2); ++ ++ if (equiv1 && !equiv2) ++ remove_note (i1, equiv1); ++ else if (!equiv1 && equiv2) ++ remove_note (i2, equiv2); ++ else if (equiv1 && equiv2 ++ && !rtx_equal_p (XEXP (equiv1, 0), XEXP (equiv2, 0))) ++ { ++ remove_note (i1, equiv1); ++ remove_note (i2, equiv2); ++ } ++ ++ beforelast1 = last1, beforelast2 = last2; ++ last1 = i1, last2 = i2; ++ ninsns++; ++ } ++ ++ if (i1 == BB_END (bb1) || i2 == BB_END (bb2) ++ || (stop_after > 0 && ninsns == stop_after)) ++ break; ++ ++ i1 = NEXT_INSN (i1); ++ i2 = NEXT_INSN (i2); ++ } ++ ++#ifdef HAVE_cc0 ++ /* Don't allow a compare to be shared by cross-jumping unless the insn ++ after the compare is also shared. */ ++ if (ninsns && reg_mentioned_p (cc0_rtx, last1) && sets_cc0_p (last1)) ++ last1 = beforelast1, last2 = beforelast2, ninsns--; ++#endif ++ ++ if (ninsns) ++ { ++ *f1 = last1; ++ *f2 = last2; ++ } + + return ninsns; + } +--- a/src/gcc/cfgexpand.c ++++ b/src/gcc/cfgexpand.c +@@ -448,7 +448,8 @@ + { + unsigned int align; + +- align = LOCAL_DECL_ALIGNMENT (decl); ++ align = alignment_for_aligned_arrays (TREE_TYPE (decl), ++ LOCAL_DECL_ALIGNMENT (decl)); + + if (align > MAX_SUPPORTED_STACK_ALIGNMENT) + align = MAX_SUPPORTED_STACK_ALIGNMENT; +--- a/src/gcc/cgraph.c ++++ b/src/gcc/cgraph.c +@@ -475,9 +475,11 @@ + if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL) + { + node->origin = cgraph_node (DECL_CONTEXT (decl)); ++ node->origin->ever_was_nested = 1; + node->next_nested = node->origin->nested; + node->origin->nested = node; + node->master_clone = node; ++ node->ever_was_nested = 1; + } + if (assembler_name_hash) + { +--- a/src/gcc/cgraph.h ++++ b/src/gcc/cgraph.h +@@ -185,6 +185,8 @@ + unsigned output : 1; + /* Set for aliases once they got through assemble_alias. */ + unsigned alias : 1; ++ /* Set if the function is a nested function or has nested functions. */ ++ unsigned ever_was_nested : 1; + + /* In non-unit-at-a-time mode the function body of inline candidates is saved + into clone before compiling so the function in original form can be +--- a/src/gcc/common.opt ++++ b/src/gcc/common.opt +@@ -153,6 +153,10 @@ + Common Var(warn_padded) Warning + Warn when padding is required to align structure members + ++Wpoison-system-directories ++Common Var(flag_poison_system_directories) Init(1) ++Warn for -I and -L options using system directories if cross compiling ++ + Wshadow + Common Var(warn_shadow) Warning + Warn when one local variable shadows another +@@ -270,6 +274,12 @@ + fabi-version= + Common Joined UInteger Var(flag_abi_version) Init(2) + ++falign-arrays ++Target Report Var(flag_align_arrays) ++Set the minimum alignment for array variables to be the largest power ++of two less than or equal to their total storage size, or the biggest ++alignment used on the machine, whichever is smaller. ++ + falign-functions + Common Report Var(align_functions,0) Optimization UInteger + Align the start of functions +@@ -467,6 +477,10 @@ + Common Report Var(flag_early_inlining) Init(1) Optimization + Perform early inlining + ++feglibc= ++Common Report Joined Undocumented ++EGLIBC configuration specifier, serves multilib purposes. ++ + feliminate-dwarf2-dups + Common Report Var(flag_eliminate_dwarf2_dups) + Perform DWARF2 duplicate elimination +@@ -895,6 +909,10 @@ + Common Report Var(flag_profile_values) + Insert code to profile values of expressions + ++fpromote-loop-indices ++Common Report Var(flag_promote_loop_indices) Optimization ++Promote loop indices to word-sized indices when safe ++ + frandom-seed + Common + +@@ -1227,6 +1245,15 @@ + Common Report Var(flag_tree_pre) Optimization + Enable SSA-PRE optimization on trees + ++ftree-pre-partial-partial ++Common Report Var(flag_tree_pre_partial_partial) Optimization ++In SSA-PRE optimization on trees, enable partial-partial redundancy elimination. ++ ++ftree-pre-partial-partial-obliviously ++Common Report Var(flag_tree_pre_partial_partial_obliviously) Optimization ++In SSA-PRE optimization on trees, enable partial-partial redundancy ++elimination without regard for the cost of the inserted phi nodes. ++ + ftree-reassoc + Common Report Var(flag_tree_reassoc) Init(1) Optimization + Enable reassociation on tree level +--- a/src/gcc/config/arm/aout.h ++++ b/src/gcc/config/arm/aout.h +@@ -163,31 +163,45 @@ + {"mvdx12", 39}, \ + {"mvdx13", 40}, \ + {"mvdx14", 41}, \ +- {"mvdx15", 42}, \ +- {"d0", 63}, {"q0", 63}, \ +- {"d1", 65}, \ +- {"d2", 67}, {"q1", 67}, \ +- {"d3", 69}, \ +- {"d4", 71}, {"q2", 71}, \ +- {"d5", 73}, \ +- {"d6", 75}, {"q3", 75}, \ +- {"d7", 77}, \ +- {"d8", 79}, {"q4", 79}, \ +- {"d9", 81}, \ +- {"d10", 83}, {"q5", 83}, \ +- {"d11", 85}, \ +- {"d12", 87}, {"q6", 87}, \ +- {"d13", 89}, \ +- {"d14", 91}, {"q7", 91}, \ +- {"d15", 93}, \ +- {"q8", 95}, \ +- {"q9", 99}, \ +- {"q10", 103}, \ +- {"q11", 107}, \ +- {"q12", 111}, \ +- {"q13", 115}, \ +- {"q14", 119}, \ +- {"q15", 123} \ ++ {"mvdx15", 42} \ ++} ++#endif ++ ++#ifndef OVERLAPPING_REGISTER_NAMES ++#define OVERLAPPING_REGISTER_NAMES \ ++{ \ ++ {"d0", 63, 2}, \ ++ {"d1", 65, 2}, \ ++ {"d2", 67, 2}, \ ++ {"d3", 69, 2}, \ ++ {"d4", 71, 2}, \ ++ {"d5", 73, 2}, \ ++ {"d6", 75, 2}, \ ++ {"d7", 77, 2}, \ ++ {"d8", 79, 2}, \ ++ {"d9", 81, 2}, \ ++ {"d10", 83, 2}, \ ++ {"d11", 85, 2}, \ ++ {"d12", 87, 2}, \ ++ {"d13", 89, 2}, \ ++ {"d14", 91, 2}, \ ++ {"d15", 93, 2}, \ ++ {"q0", 63, 4}, \ ++ {"q1", 67, 4}, \ ++ {"q2", 71, 4}, \ ++ {"q3", 75, 4}, \ ++ {"q4", 79, 4}, \ ++ {"q5", 83, 4}, \ ++ {"q6", 87, 4}, \ ++ {"q7", 91, 4}, \ ++ {"q8", 95, 4}, \ ++ {"q9", 99, 4}, \ ++ {"q10", 103, 4}, \ ++ {"q11", 107, 4}, \ ++ {"q12", 111, 4}, \ ++ {"q13", 115, 4}, \ ++ {"q14", 119, 4}, \ ++ {"q15", 123, 4} \ + } + #endif + +--- a/src/gcc/config/arm/arm-cores.def ++++ b/src/gcc/config/arm/arm-cores.def +@@ -104,6 +104,7 @@ + ARM_CORE("xscale", xscale, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale) + ARM_CORE("iwmmxt", iwmmxt, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale) + ARM_CORE("iwmmxt2", iwmmxt2, 5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale) ++ARM_CORE("marvell-f", marvell_f, 5TE, FL_LDSCHED | FL_VFPV2 | FL_MARVELL_F, 9e) + + /* V5TEJ Architecture Processors */ + ARM_CORE("arm926ej-s", arm926ejs, 5TEJ, FL_LDSCHED, 9e) +@@ -117,9 +118,14 @@ + ARM_CORE("mpcorenovfp", mpcorenovfp, 6K, FL_LDSCHED, 9e) + ARM_CORE("mpcore", mpcore, 6K, FL_LDSCHED | FL_VFPV2, 9e) + ARM_CORE("arm1156t2-s", arm1156t2s, 6T2, FL_LDSCHED, 9e) ++ ++/* V7 Architecture Processors */ ++ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, 9e) + ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, 9e) + ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, 9e) + ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, 9e) + ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, 9e) ++ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, 9e) + ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, 9e) + ARM_CORE("cortex-m1", cortexm1, 6M, FL_LDSCHED, 9e) ++ARM_CORE("cortex-m0", cortexm0, 6M, FL_LDSCHED, 9e) +--- a/src/gcc/config/arm/arm-modes.def ++++ b/src/gcc/config/arm/arm-modes.def +@@ -25,15 +25,26 @@ + FIXME What format is this? */ + FLOAT_MODE (XF, 12, 0); + ++/* Half-precision floating point */ ++FLOAT_MODE (HF, 2, 0); ++ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE) ++ ? &arm_half_format : &ieee_half_format)); ++ + /* CCFPEmode should be used with floating inequalities, + CCFPmode should be used with floating equalities. + CC_NOOVmode should be used with SImode integer equalities. + CC_Zmode should be used if only the Z flag is set correctly + CC_Nmode should be used if only the N (sign) flag is set correctly ++ CC_CZmode should be used if only the C and Z flags are correct ++ (used for DImode unsigned comparisons). ++ CC_NCVmode should be used if only the N, C, and V flags are correct ++ (used for DImode signed comparisons). + CCmode should be used otherwise. */ + + CC_MODE (CC_NOOV); + CC_MODE (CC_Z); ++CC_MODE (CC_CZ); ++CC_MODE (CC_NCV); + CC_MODE (CC_SWP); + CC_MODE (CCFP); + CC_MODE (CCFPE); +@@ -62,6 +73,4 @@ + INT_MODE (EI, 24); + INT_MODE (OI, 32); + INT_MODE (CI, 48); +-/* ??? This should actually have 512 bits but the precision only has 9 +- bits. */ +-FRACTIONAL_INT_MODE (XI, 511, 64); ++INT_MODE (XI, 64); +--- a/src/gcc/config/arm/arm-protos.h ++++ b/src/gcc/config/arm/arm-protos.h +@@ -1,6 +1,7 @@ +-/* Prototypes for exported functions defined in arm.c and pe.c +- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +- Free Software Foundation, Inc. ++/* Prototypes for exported functions defined in arm.c, pe.c, ++ pe-cxx and pe-stubs.c. ++ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, ++ 2009 Free Software Foundation, Inc. + Contributed by Richard Earnshaw (rearnsha@arm.com) + Minor hacks by Nick Clifton (nickc@cygnus.com) + +@@ -42,6 +43,8 @@ + extern unsigned int arm_dbx_register_number (unsigned int); + extern void arm_output_fn_unwind (FILE *, bool); + ++extern int arm_major_arch (void); ++extern bool arm_thumb_arch_p (void); + + #ifdef RTX_CODE + extern bool arm_vector_mode_supported_p (enum machine_mode); +@@ -49,8 +52,7 @@ + extern int const_ok_for_arm (HOST_WIDE_INT); + extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx, + HOST_WIDE_INT, rtx, rtx, int); +-extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, enum machine_mode, +- rtx *); ++extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, rtx *, rtx *); + extern int legitimate_pic_operand_p (rtx); + extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx); + extern rtx legitimize_tls_address (rtx, rtx); +@@ -72,6 +74,7 @@ + enum machine_mode, int, int); + extern void neon_pairwise_reduce (rtx, rtx, enum machine_mode, + rtx (*) (rtx, rtx, rtx)); ++extern rtx neon_make_constant (rtx); + extern void neon_expand_vector_init (rtx, rtx); + extern void neon_lane_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT); + extern void neon_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT); +@@ -88,7 +91,7 @@ + + extern int cirrus_memory_offset (rtx); + extern int arm_coproc_mem_operand (rtx, bool); +-extern int neon_vector_mem_operand (rtx, bool); ++extern int neon_vector_mem_operand (rtx, int); + extern int neon_struct_mem_operand (rtx); + extern int arm_no_early_store_addr_dep (rtx, rtx); + extern int arm_no_early_alu_shift_dep (rtx, rtx); +@@ -119,6 +122,7 @@ + extern void arm_reload_out_hi (rtx *); + extern int arm_const_double_inline_cost (rtx); + extern bool arm_const_double_by_parts (rtx); ++extern bool arm_const_double_by_immediates (rtx); + extern const char *fp_immediate_constant (rtx); + extern void arm_emit_call_insn (rtx, rtx); + extern const char *output_call (rtx *); +@@ -133,6 +137,7 @@ + extern const char *output_move_quad (rtx *); + extern const char *output_move_vfp (rtx *operands); + extern const char *output_move_neon (rtx *operands); ++extern int arm_attr_length_move_neon (rtx); + extern const char *output_add_immediate (rtx *); + extern const char *arithmetic_instr (rtx, int); + extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int); +@@ -144,6 +149,7 @@ + extern int arm_debugger_arg_offset (int, rtx); + extern bool arm_is_long_call_p (tree); + extern int arm_emit_vector_const (FILE *, rtx); ++extern void arm_emit_fp16_const (rtx c); + extern const char * arm_output_load_gr (rtx *); + extern const char *vfp_output_fstmd (rtx *); + extern void arm_set_return_address (rtx, rtx); +@@ -154,13 +160,15 @@ + + #if defined TREE_CODE + extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int); ++extern void arm_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, ++ tree, bool); + extern void arm_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree); + extern bool arm_pad_arg_upward (enum machine_mode, const_tree); + extern bool arm_pad_reg_upward (enum machine_mode, tree, int); + extern bool arm_needs_doubleword_align (enum machine_mode, tree); +-extern rtx arm_function_value(const_tree, const_tree); + #endif + extern int arm_apply_result_size (void); ++extern rtx aapcs_libcall_value (enum machine_mode); + + #endif /* RTX_CODE */ + +@@ -193,6 +201,11 @@ + extern int arm_dllexport_name_p (const char *); + extern int arm_dllimport_name_p (const char *); + ++/* In pe-cxx.c and pe-stubs.c */ ++extern void arm_pe_adjust_class_at_definition (tree); ++extern bool arm_pe_type_dllimport_p (tree); ++extern bool arm_pe_type_dllexport_p (tree); ++ + #ifdef TREE_CODE + extern void arm_pe_unique_section (tree, int); + extern void arm_pe_encode_section_info (tree, rtx, int); +--- a/src/gcc/config/arm/arm-tune.md ++++ b/src/gcc/config/arm/arm-tune.md +@@ -1,5 +1,5 @@ + ;; -*- buffer-read-only: t -*- + ;; Generated automatically by gentune.sh from arm-cores.def + (define_attr "tune" +- "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1" ++ "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,marvell_f,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,cortexa5,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm4,cortexm3,cortexm1,cortexm0" + (const (symbol_ref "arm_tune"))) +--- a/src/gcc/config/arm/arm.c ++++ b/src/gcc/config/arm/arm.c +@@ -43,6 +43,7 @@ + #include "optabs.h" + #include "toplev.h" + #include "recog.h" ++#include "cgraph.h" + #include "ggc.h" + #include "except.h" + #include "c-pragma.h" +@@ -53,6 +54,8 @@ + #include "debug.h" + #include "langhooks.h" + #include "df.h" ++#include "intl.h" ++#include "params.h" + #include "libfuncs.h" + + /* Forward definitions of types. */ +@@ -111,6 +114,7 @@ + static unsigned long arm_isr_value (tree); + static unsigned long arm_compute_func_type (void); + static tree arm_handle_fndecl_attribute (tree *, tree, tree, int, bool *); ++static tree arm_handle_pcs_attribute (tree *, tree, tree, int, bool *); + static tree arm_handle_isr_attribute (tree *, tree, tree, int, bool *); + #if TARGET_DLLIMPORT_DECL_ATTRIBUTES + static tree arm_handle_notshared_attribute (tree *, tree, tree, int, bool *); +@@ -124,11 +128,16 @@ + static int count_insns_for_constant (HOST_WIDE_INT, int); + static int arm_get_strip_length (int); + static bool arm_function_ok_for_sibcall (tree, tree); ++static bool arm_return_in_memory (const_tree, const_tree); ++static rtx arm_function_value (const_tree, const_tree, bool); ++static rtx arm_libcall_value (enum machine_mode, rtx); ++ + static void arm_internal_label (FILE *, const char *, unsigned long); + static void arm_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, HOST_WIDE_INT, + tree); + static bool arm_rtx_costs_1 (rtx, enum rtx_code, int*, bool); + static bool arm_size_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *); ++static bool thumb2_size_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *); + static bool arm_slowmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool); + static bool arm_fastmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool); + static bool arm_xscale_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool); +@@ -149,6 +158,9 @@ + static rtx emit_set_insn (rtx, rtx); + static int arm_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode, + tree, bool); ++static rtx aapcs_allocate_return_reg (enum machine_mode, const_tree, ++ const_tree); ++static int aapcs_select_return_coproc (const_tree, const_tree); + + #ifdef OBJECT_FORMAT_ELF + static void arm_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED; +@@ -176,6 +188,7 @@ + static bool arm_output_ttype (rtx); + #endif + static void arm_dwarf_handle_frame_unspec (const char *, rtx, int); ++static rtx arm_dwarf_register_span(rtx); + + static tree arm_cxx_guard_type (void); + static bool arm_cxx_guard_mask_bit (void); +@@ -198,6 +211,15 @@ + static int arm_issue_rate (void); + static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; + static bool arm_allocate_stack_slots_for_args (void); ++static bool arm_warn_func_result (void); ++static int arm_multipass_dfa_lookahead (void); ++static const char *arm_invalid_parameter_type (const_tree t); ++static const char *arm_invalid_return_type (const_tree t); ++static tree arm_promoted_type (const_tree t); ++static tree arm_convert_to_type (tree type, tree expr); ++static bool arm_scalar_mode_supported_p (enum machine_mode); ++static int arm_vector_min_alignment (const_tree type); ++static bool arm_vector_always_misalign(const_tree); + + + /* Initialize the GCC target structure. */ +@@ -219,6 +241,17 @@ + #undef TARGET_ASM_INTEGER + #define TARGET_ASM_INTEGER arm_assemble_integer + ++#ifdef ARM_PE ++#undef TARGET_ASM_UNALIGNED_HI_OP ++#define TARGET_ASM_UNALIGNED_HI_OP "\t.2byte\t" ++#undef TARGET_ASM_UNALIGNED_SI_OP ++#define TARGET_ASM_UNALIGNED_SI_OP "\t.4byte\t" ++#undef TARGET_ASM_UNALIGNED_DI_OP ++#define TARGET_ASM_UNALIGNED_DI_OP "\t.8byte\t" ++#undef TARGET_ASM_UNALIGNED_TI_OP ++#define TARGET_ASM_UNALIGNED_TI_OP NULL ++#endif ++ + #undef TARGET_ASM_FUNCTION_PROLOGUE + #define TARGET_ASM_FUNCTION_PROLOGUE arm_output_function_prologue + +@@ -257,6 +290,12 @@ + #undef TARGET_FUNCTION_OK_FOR_SIBCALL + #define TARGET_FUNCTION_OK_FOR_SIBCALL arm_function_ok_for_sibcall + ++#undef TARGET_FUNCTION_VALUE ++#define TARGET_FUNCTION_VALUE arm_function_value ++ ++#undef TARGET_LIBCALL_VALUE ++#define TARGET_LIBCALL_VALUE arm_libcall_value ++ + #undef TARGET_ASM_OUTPUT_MI_THUNK + #define TARGET_ASM_OUTPUT_MI_THUNK arm_output_mi_thunk + #undef TARGET_ASM_CAN_OUTPUT_MI_THUNK +@@ -300,6 +339,9 @@ + #undef TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS + #define TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS arm_allocate_stack_slots_for_args + ++#undef TARGET_WARN_FUNC_RESULT ++#define TARGET_WARN_FUNC_RESULT arm_warn_func_result ++ + #undef TARGET_DEFAULT_SHORT_ENUMS + #define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums + +@@ -354,6 +396,9 @@ + #undef TARGET_ASM_TTYPE + #define TARGET_ASM_TTYPE arm_output_ttype + ++#undef TARGET_CXX_TTYPE_REF_ENCODE ++#define TARGET_CXX_TTYPE_REF_ENCODE hook_cxx_ttype_ref_in_bit0 ++ + #undef TARGET_ARM_EABI_UNWINDER + #define TARGET_ARM_EABI_UNWINDER true + #endif /* TARGET_UNWIND_INFO */ +@@ -361,6 +406,9 @@ + #undef TARGET_DWARF_HANDLE_FRAME_UNSPEC + #define TARGET_DWARF_HANDLE_FRAME_UNSPEC arm_dwarf_handle_frame_unspec + ++#undef TARGET_DWARF_REGISTER_SPAN ++#define TARGET_DWARF_REGISTER_SPAN arm_dwarf_register_span ++ + #undef TARGET_CANNOT_COPY_INSN_P + #define TARGET_CANNOT_COPY_INSN_P arm_cannot_copy_insn_p + +@@ -399,6 +447,30 @@ + #define TARGET_ASM_OUTPUT_DWARF_DTPREL arm_output_dwarf_dtprel + #endif + ++#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ++#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD arm_multipass_dfa_lookahead ++ ++#undef TARGET_INVALID_PARAMETER_TYPE ++#define TARGET_INVALID_PARAMETER_TYPE arm_invalid_parameter_type ++ ++#undef TARGET_INVALID_RETURN_TYPE ++#define TARGET_INVALID_RETURN_TYPE arm_invalid_return_type ++ ++#undef TARGET_PROMOTED_TYPE ++#define TARGET_PROMOTED_TYPE arm_promoted_type ++ ++#undef TARGET_CONVERT_TO_TYPE ++#define TARGET_CONVERT_TO_TYPE arm_convert_to_type ++ ++#undef TARGET_SCALAR_MODE_SUPPORTED_P ++#define TARGET_SCALAR_MODE_SUPPORTED_P arm_scalar_mode_supported_p ++ ++#undef TARGET_VECTOR_MIN_ALIGNMENT ++#define TARGET_VECTOR_MIN_ALIGNMENT arm_vector_min_alignment ++ ++#undef TARGET_VECTOR_ALWAYS_MISALIGN ++#define TARGET_VECTOR_ALWAYS_MISALIGN arm_vector_always_misalign ++ + struct gcc_target targetm = TARGET_INITIALIZER; + + /* Obstack for minipool constant handling. */ +@@ -424,18 +496,18 @@ + /* The default processor used if not overridden by commandline. */ + static enum processor_type arm_default_cpu = arm_none; + +-/* Which floating point model to use. */ +-enum arm_fp_model arm_fp_model; +- +-/* Which floating point hardware is available. */ +-enum fputype arm_fpu_arch; +- + /* Which floating point hardware to schedule for. */ +-enum fputype arm_fpu_tune; ++int arm_fpu_attr; ++ ++/* Which floating popint hardware to use. */ ++const struct arm_fpu_desc *arm_fpu_desc; + + /* Whether to use floating point hardware. */ + enum float_abi_type arm_float_abi; + ++/* Which __fp16 format to use. */ ++enum arm_fp16_format_type arm_fp16_format; ++ + /* Which ABI to use. */ + enum arm_abi_type arm_abi; + +@@ -474,9 +546,19 @@ + #define FL_DIV (1 << 18) /* Hardware divide. */ + #define FL_VFPV3 (1 << 19) /* Vector Floating Point V3. */ + #define FL_NEON (1 << 20) /* Neon instructions. */ ++#define FL_MARVELL_F (1 << 21) /* Marvell Feroceon. */ ++#define FL_ARCH7EM (1 << 22) /* Instructions present in ARMv7E-M. */ + + #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */ + ++/* Some flags are ignored when comparing -mcpu and -march: ++ FL_MARVELL_F so that -mcpu=marvell-f -march=v5te works. ++ FL_LDSCHED and FL_WBUF only effect tuning, ++ FL_CO_PROC, FL_VFPV2, FL_VFPV3 and FL_NEON because FP ++ coprocessors are handled separately. */ ++#define FL_COMPAT (FL_MARVELL_F | FL_LDSCHED | FL_WBUF | FL_CO_PROC | \ ++ FL_VFPV2 | FL_VFPV3 | FL_NEON) ++ + #define FL_FOR_ARCH2 FL_NOTM + #define FL_FOR_ARCH3 (FL_FOR_ARCH2 | FL_MODE32) + #define FL_FOR_ARCH3M (FL_FOR_ARCH3 | FL_ARCH3M) +@@ -498,6 +580,7 @@ + #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM) + #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_DIV) + #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_DIV) ++#define FL_FOR_ARCH7EM (FL_FOR_ARCH7M | FL_ARCH7EM) + + /* The bits in this mask specify which + instructions we are allowed to generate. */ +@@ -534,6 +617,9 @@ + /* Nonzero if instructions not present in the 'M' profile can be used. */ + int arm_arch_notm = 0; + ++/* Nonzero if instructions present in ARMv7E-M can be used. */ ++int arm_arch7em = 0; ++ + /* Nonzero if this chip can benefit from load scheduling. */ + int arm_ld_sched = 0; + +@@ -552,6 +638,9 @@ + /* Nonzero if tuning for XScale */ + int arm_tune_xscale = 0; + ++/* Nonzero if tuning for Marvell Feroceon. */ ++int arm_tune_marvell_f = 0; ++ + /* Nonzero if we want to tune for stores that access the write-buffer. + This typically means an ARM6 or ARM7 with MMU or MPU. */ + int arm_tune_wbuf = 0; +@@ -562,6 +651,9 @@ + /* Nonzero if generating Thumb instructions. */ + int thumb_code = 0; + ++/* Nonzero if generating code for Janus2. */ ++int janus2_code = 0; ++ + /* Nonzero if we should define __THUMB_INTERWORK__ in the + preprocessor. + XXX This is a bit of a hack, it's intended to help work around +@@ -594,6 +686,8 @@ + /* The maximum number of insns to be used when loading a constant. */ + static int arm_constant_limit = 3; + ++enum arm_pcs arm_pcs_default; ++ + /* For an explanation of these variables, see final_prescan_insn below. */ + int arm_ccfsm_state; + /* arm_current_cc is also used for Thumb-2 cond_exec blocks. */ +@@ -674,9 +768,11 @@ + {"armv7-a", cortexa8, "7A", FL_CO_PROC | FL_FOR_ARCH7A, NULL}, + {"armv7-r", cortexr4, "7R", FL_CO_PROC | FL_FOR_ARCH7R, NULL}, + {"armv7-m", cortexm3, "7M", FL_CO_PROC | FL_FOR_ARCH7M, NULL}, ++ {"armv7e-m", cortexm4, "7EM", FL_CO_PROC | FL_FOR_ARCH7EM, NULL}, + {"ep9312", ep9312, "4T", FL_LDSCHED | FL_CIRRUS | FL_FOR_ARCH4, NULL}, + {"iwmmxt", iwmmxt, "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL}, + {"iwmmxt2", iwmmxt2, "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL}, ++ {"marvell-f", marvell_f, "5TE", FL_CO_PROC | FL_FOR_ARCH5TE | FL_MARVELL_F, NULL}, + {NULL, arm_none, NULL, 0 , NULL} + }; + +@@ -706,49 +802,34 @@ + + /* The name of the preprocessor macro to define for this architecture. */ + +-char arm_arch_name[] = "__ARM_ARCH_0UNK__"; +- +-struct fpu_desc +-{ +- const char * name; +- enum fputype fpu; +-}; +- ++#define ARM_ARCH_NAME_SIZE 25 ++char arm_arch_name[ARM_ARCH_NAME_SIZE] = "__ARM_ARCH_0UNK__"; + + /* Available values for -mfpu=. */ + +-static const struct fpu_desc all_fpus[] = ++static const struct arm_fpu_desc all_fpus[] = + { +- {"fpa", FPUTYPE_FPA}, +- {"fpe2", FPUTYPE_FPA_EMU2}, +- {"fpe3", FPUTYPE_FPA_EMU2}, +- {"maverick", FPUTYPE_MAVERICK}, +- {"vfp", FPUTYPE_VFP}, +- {"vfp3", FPUTYPE_VFP3}, +- {"vfpv3", FPUTYPE_VFP3}, +- {"vfpv3-d16", FPUTYPE_VFP3D16}, +- {"neon", FPUTYPE_NEON} ++ {"fpa", ARM_FP_MODEL_FPA, 0, 0, false, false}, ++ {"fpe2", ARM_FP_MODEL_FPA, 2, 0, false, false}, ++ {"fpe3", ARM_FP_MODEL_FPA, 3, 0, false, false}, ++ {"maverick", ARM_FP_MODEL_MAVERICK, 0, 0, false, false}, ++ {"vfp", ARM_FP_MODEL_VFP, 2, VFP_REG_D16, false, false}, ++ {"vfpv3", ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false}, ++ {"vfpv3-fp16", ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, true }, ++ {"vfpv3-d16", ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, false}, ++ {"vfpv3xd", ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, false}, ++ {"vfpv3xd-fp16", ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, true }, ++ {"vfpv3-d16-fp16", ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, true }, ++ {"neon", ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true , false}, ++ {"neon-fp16", ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true , true }, ++ {"vfpv4", ARM_FP_MODEL_VFP, 4, VFP_REG_D32, false, true }, ++ {"vfpv4-d16", ARM_FP_MODEL_VFP, 4, VFP_REG_D16, false, true }, ++ {"fpv4-sp-d16", ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, false, true }, ++ {"neon-vfpv4", ARM_FP_MODEL_VFP, 4, VFP_REG_D32, true , true }, ++ /* Compatibility aliases. */ ++ {"vfp3", ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false}, + }; + +- +-/* Floating point models used by the different hardware. +- See fputype in arm.h. */ +- +-static const enum fputype fp_model_for_fpu[] = +-{ +- /* No FP hardware. */ +- ARM_FP_MODEL_UNKNOWN, /* FPUTYPE_NONE */ +- ARM_FP_MODEL_FPA, /* FPUTYPE_FPA */ +- ARM_FP_MODEL_FPA, /* FPUTYPE_FPA_EMU2 */ +- ARM_FP_MODEL_FPA, /* FPUTYPE_FPA_EMU3 */ +- ARM_FP_MODEL_MAVERICK, /* FPUTYPE_MAVERICK */ +- ARM_FP_MODEL_VFP, /* FPUTYPE_VFP */ +- ARM_FP_MODEL_VFP, /* FPUTYPE_VFP3D16 */ +- ARM_FP_MODEL_VFP, /* FPUTYPE_VFP3 */ +- ARM_FP_MODEL_VFP /* FPUTYPE_NEON */ +-}; +- +- + struct float_abi + { + const char * name; +@@ -766,6 +847,23 @@ + }; + + ++struct fp16_format ++{ ++ const char *name; ++ enum arm_fp16_format_type fp16_format_type; ++}; ++ ++ ++/* Available values for -mfp16-format=. */ ++ ++static const struct fp16_format all_fp16_formats[] = ++{ ++ {"none", ARM_FP16_FORMAT_NONE}, ++ {"ieee", ARM_FP16_FORMAT_IEEE}, ++ {"alternative", ARM_FP16_FORMAT_ALTERNATIVE} ++}; ++ ++ + struct abi_name + { + const char *name; +@@ -924,6 +1022,44 @@ + set_optab_libfunc (smod_optab, SImode, NULL); + set_optab_libfunc (umod_optab, SImode, NULL); + ++ /* Half-precision float operations. The compiler handles all operations ++ with NULL libfuncs by converting the SFmode. */ ++ switch (arm_fp16_format) ++ { ++ case ARM_FP16_FORMAT_IEEE: ++ case ARM_FP16_FORMAT_ALTERNATIVE: ++ ++ /* Conversions. */ ++ set_conv_libfunc (trunc_optab, HFmode, SFmode, ++ (arm_fp16_format == ARM_FP16_FORMAT_IEEE ++ ? "__aeabi_f2h" ++ : "__aeabi_f2h_alt")); ++ set_conv_libfunc (sext_optab, SFmode, HFmode, ++ (arm_fp16_format == ARM_FP16_FORMAT_IEEE ++ ? "__aeabi_h2f" ++ : "__aeabi_h2f_alt")); ++ ++ /* Arithmetic. */ ++ set_optab_libfunc (add_optab, HFmode, NULL); ++ set_optab_libfunc (sdiv_optab, HFmode, NULL); ++ set_optab_libfunc (smul_optab, HFmode, NULL); ++ set_optab_libfunc (neg_optab, HFmode, NULL); ++ set_optab_libfunc (sub_optab, HFmode, NULL); ++ ++ /* Comparisons. */ ++ set_optab_libfunc (eq_optab, HFmode, NULL); ++ set_optab_libfunc (ne_optab, HFmode, NULL); ++ set_optab_libfunc (lt_optab, HFmode, NULL); ++ set_optab_libfunc (le_optab, HFmode, NULL); ++ set_optab_libfunc (ge_optab, HFmode, NULL); ++ set_optab_libfunc (gt_optab, HFmode, NULL); ++ set_optab_libfunc (unord_optab, HFmode, NULL); ++ break; ++ ++ default: ++ break; ++ } ++ + if (TARGET_AAPCS_BASED) + synchronize_libfunc = init_one_libfunc ("__sync_synchronize"); + } +@@ -1139,6 +1275,7 @@ + arm_override_options (void) + { + unsigned i; ++ int len; + enum processor_type target_arch_cpu = arm_none; + enum processor_type selected_cpu = arm_none; + +@@ -1156,7 +1293,11 @@ + { + /* Set the architecture define. */ + if (i != ARM_OPT_SET_TUNE) +- sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch); ++ { ++ len = snprintf (arm_arch_name, ARM_ARCH_NAME_SIZE, ++ "__ARM_ARCH_%s__", sel->arch); ++ gcc_assert (len < ARM_ARCH_NAME_SIZE); ++ } + + /* Determine the processor core for which we should + tune code-generation. */ +@@ -1182,8 +1323,8 @@ + make sure that they are compatible. We only generate + a warning though, and we prefer the CPU over the + architecture. */ +- if (insn_flags != 0 && (insn_flags ^ sel->flags)) +- warning (0, "switch -mcpu=%s conflicts with -march= switch", ++ if (insn_flags != 0 && ((insn_flags ^ sel->flags) & ~FL_COMPAT)) ++ warning (0, "switch -mcpu=%s conflicts with -march= switch, assuming CPU feature set", + ptr->string); + + insn_flags = sel->flags; +@@ -1283,7 +1424,11 @@ + + insn_flags = sel->flags; + } +- sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch); ++ ++ len = snprintf (arm_arch_name, ARM_ARCH_NAME_SIZE, ++ "__ARM_ARCH_%s__", sel->arch); ++ gcc_assert (len < ARM_ARCH_NAME_SIZE); ++ + arm_default_cpu = (enum processor_type) (sel - all_cores); + if (arm_tune == arm_none) + arm_tune = arm_default_cpu; +@@ -1293,8 +1438,35 @@ + chosen. */ + gcc_assert (arm_tune != arm_none); + ++ if (arm_tune == cortexa8 && optimize >= 3) ++ { ++ /* These alignments were experimentally determined to improve SPECint ++ performance on SPECCPU 2000. */ ++ if (align_functions <= 0) ++ align_functions = 16; ++ if (align_jumps <= 0) ++ align_jumps = 16; ++ } ++ + tune_flags = all_cores[(int)arm_tune].flags; + ++ if (target_fp16_format_name) ++ { ++ for (i = 0; i < ARRAY_SIZE (all_fp16_formats); i++) ++ { ++ if (streq (all_fp16_formats[i].name, target_fp16_format_name)) ++ { ++ arm_fp16_format = all_fp16_formats[i].fp16_format_type; ++ break; ++ } ++ } ++ if (i == ARRAY_SIZE (all_fp16_formats)) ++ error ("invalid __fp16 format option: -mfp16-format=%s", ++ target_fp16_format_name); ++ } ++ else ++ arm_fp16_format = ARM_FP16_FORMAT_NONE; ++ + if (target_abi_name) + { + for (i = 0; i < ARRAY_SIZE (arm_all_abis); i++) +@@ -1387,6 +1559,7 @@ + arm_arch6 = (insn_flags & FL_ARCH6) != 0; + arm_arch6k = (insn_flags & FL_ARCH6K) != 0; + arm_arch_notm = (insn_flags & FL_NOTM) != 0; ++ arm_arch7em = (insn_flags & FL_ARCH7EM) != 0; + arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0; + arm_arch_xscale = (insn_flags & FL_XSCALE) != 0; + arm_arch_cirrus = (insn_flags & FL_CIRRUS) != 0; +@@ -1394,12 +1567,25 @@ + arm_ld_sched = (tune_flags & FL_LDSCHED) != 0; + arm_tune_strongarm = (tune_flags & FL_STRONG) != 0; + thumb_code = (TARGET_ARM == 0); ++ janus2_code = (TARGET_FIX_JANUS != 0); ++ if (janus2_code && TARGET_THUMB2) ++ error ("janus2 fix is not applicable when targeting a thumb2 core"); + arm_tune_wbuf = (tune_flags & FL_WBUF) != 0; + arm_tune_xscale = (tune_flags & FL_XSCALE) != 0; ++ arm_tune_marvell_f = (tune_flags & FL_MARVELL_F) != 0; + arm_arch_iwmmxt = (insn_flags & FL_IWMMXT) != 0; +- arm_arch_hwdiv = (insn_flags & FL_DIV) != 0; + arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0; + ++ /* Hardware integer division is supported by some variants of the ARM ++ architecture in Thumb-2 mode. In addition some (but not all) Marvell ++ CPUs support their own hardware integer division instructions. ++ The assembler will pick the correct encoding. */ ++ if (TARGET_MARVELL_DIV && (insn_flags & FL_MARVELL_F) == 0) ++ error ("-mmarvell-div is only supported when targeting a Marvell core"); ++ ++ arm_arch_hwdiv = (TARGET_ARM && TARGET_MARVELL_DIV) ++ || (TARGET_THUMB2 && (insn_flags & FL_DIV) != 0); ++ + /* If we are not using the default (ARM mode) section anchor offset + ranges, then set the correct ranges now. */ + if (TARGET_THUMB1) +@@ -1438,7 +1624,6 @@ + if (TARGET_IWMMXT_ABI && !TARGET_IWMMXT) + error ("iwmmxt abi requires an iwmmxt capable cpu"); + +- arm_fp_model = ARM_FP_MODEL_UNKNOWN; + if (target_fpu_name == NULL && target_fpe_name != NULL) + { + if (streq (target_fpe_name, "2")) +@@ -1449,46 +1634,52 @@ + error ("invalid floating point emulation option: -mfpe=%s", + target_fpe_name); + } +- if (target_fpu_name != NULL) +- { +- /* The user specified a FPU. */ +- for (i = 0; i < ARRAY_SIZE (all_fpus); i++) +- { +- if (streq (all_fpus[i].name, target_fpu_name)) +- { +- arm_fpu_arch = all_fpus[i].fpu; +- arm_fpu_tune = arm_fpu_arch; +- arm_fp_model = fp_model_for_fpu[arm_fpu_arch]; +- break; +- } +- } +- if (arm_fp_model == ARM_FP_MODEL_UNKNOWN) +- error ("invalid floating point option: -mfpu=%s", target_fpu_name); +- } +- else ++ ++ if (target_fpu_name == NULL) + { + #ifdef FPUTYPE_DEFAULT +- /* Use the default if it is specified for this platform. */ +- arm_fpu_arch = FPUTYPE_DEFAULT; +- arm_fpu_tune = FPUTYPE_DEFAULT; ++ target_fpu_name = FPUTYPE_DEFAULT; + #else +- /* Pick one based on CPU type. */ +- /* ??? Some targets assume FPA is the default. +- if ((insn_flags & FL_VFP) != 0) +- arm_fpu_arch = FPUTYPE_VFP; +- else +- */ + if (arm_arch_cirrus) +- arm_fpu_arch = FPUTYPE_MAVERICK; ++ target_fpu_name = "maverick"; + else +- arm_fpu_arch = FPUTYPE_FPA_EMU2; ++ target_fpu_name = "fpe2"; + #endif +- if (tune_flags & FL_CO_PROC && arm_fpu_arch == FPUTYPE_FPA_EMU2) +- arm_fpu_tune = FPUTYPE_FPA; ++ } ++ ++ arm_fpu_desc = NULL; ++ for (i = 0; i < ARRAY_SIZE (all_fpus); i++) ++ { ++ if (streq (all_fpus[i].name, target_fpu_name)) ++ { ++ arm_fpu_desc = &all_fpus[i]; ++ break; ++ } ++ } ++ if (!arm_fpu_desc) ++ error ("invalid floating point option: -mfpu=%s", target_fpu_name); ++ ++ switch (arm_fpu_desc->model) ++ { ++ case ARM_FP_MODEL_FPA: ++ if (arm_fpu_desc->rev == 2) ++ arm_fpu_attr = FPU_FPE2; ++ else if (arm_fpu_desc->rev == 3) ++ arm_fpu_attr = FPU_FPE3; + else +- arm_fpu_tune = arm_fpu_arch; +- arm_fp_model = fp_model_for_fpu[arm_fpu_arch]; +- gcc_assert (arm_fp_model != ARM_FP_MODEL_UNKNOWN); ++ arm_fpu_attr = FPU_FPA; ++ break; ++ ++ case ARM_FP_MODEL_MAVERICK: ++ arm_fpu_attr = FPU_MAVERICK; ++ break; ++ ++ case ARM_FP_MODEL_VFP: ++ arm_fpu_attr = FPU_VFP; ++ break; ++ ++ default: ++ gcc_unreachable(); + } + + if (target_float_abi_name != NULL) +@@ -1509,9 +1700,6 @@ + else + arm_float_abi = TARGET_DEFAULT_FLOAT_ABI; + +- if (arm_float_abi == ARM_FLOAT_ABI_HARD && TARGET_VFP) +- sorry ("-mfloat-abi=hard and VFP"); +- + /* FPA and iWMMXt are incompatible because the insn encodings overlap. + VFP and iWMMXt can theoretically coexist, but it's unlikely such silicon + will ever exist. GCC makes no attempt to support this combination. */ +@@ -1522,15 +1710,40 @@ + if (TARGET_THUMB2 && TARGET_IWMMXT) + sorry ("Thumb-2 iWMMXt"); + ++ /* __fp16 support currently assumes the core has ldrh. */ ++ if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE) ++ sorry ("__fp16 and no ldrh"); ++ + /* If soft-float is specified then don't use FPU. */ + if (TARGET_SOFT_FLOAT) +- arm_fpu_arch = FPUTYPE_NONE; ++ arm_fpu_attr = FPU_NONE; ++ ++ if (TARGET_AAPCS_BASED) ++ { ++ if (arm_abi == ARM_ABI_IWMMXT) ++ arm_pcs_default = ARM_PCS_AAPCS_IWMMXT; ++ else if (arm_float_abi == ARM_FLOAT_ABI_HARD ++ && TARGET_HARD_FLOAT ++ && TARGET_VFP) ++ arm_pcs_default = ARM_PCS_AAPCS_VFP; ++ else ++ arm_pcs_default = ARM_PCS_AAPCS; ++ } ++ else ++ { ++ if (arm_float_abi == ARM_FLOAT_ABI_HARD && TARGET_VFP) ++ sorry ("-mfloat-abi=hard and VFP"); ++ ++ if (arm_abi == ARM_ABI_APCS) ++ arm_pcs_default = ARM_PCS_APCS; ++ else ++ arm_pcs_default = ARM_PCS_ATPCS; ++ } + + /* For arm2/3 there is no need to do any scheduling if there is only + a floating point emulator, or we are doing software floating-point. */ + if ((TARGET_SOFT_FLOAT +- || arm_fpu_tune == FPUTYPE_FPA_EMU2 +- || arm_fpu_tune == FPUTYPE_FPA_EMU3) ++ || (TARGET_FPA && arm_fpu_desc->rev)) + && (tune_flags & FL_MODE32) == 0) + flag_schedule_insns = flag_schedule_insns_after_reload = 0; + +@@ -1620,8 +1833,7 @@ + fix_cm3_ldrd = 0; + } + +- /* ??? We might want scheduling for thumb2. */ +- if (TARGET_THUMB && flag_schedule_insns) ++ if (TARGET_THUMB1 && flag_schedule_insns) + { + /* Don't warn since it's on by default in -O2. */ + flag_schedule_insns = 0; +@@ -1655,15 +1867,38 @@ + max_insns_skipped = 3; + } + +- /* Ideally we would want to use CFI directives to generate +- debug info. However this also creates the .eh_frame +- section, so disable them until GAS can handle +- this properly. See PR40521. */ +- if (TARGET_AAPCS_BASED) +- flag_dwarf2_cfi_asm = 0; +- + /* Register global variables with the garbage collector. */ + arm_add_gc_roots (); ++ ++ if (low_irq_latency && TARGET_THUMB) ++ { ++ warning (0, ++ "-low-irq-latency has no effect when compiling for the Thumb"); ++ low_irq_latency = 0; ++ } ++ ++ /* CSL LOCAL */ ++ /* Loop unrolling can be a substantial win. At -O2, limit to 2x ++ unrolling by default to prevent excessive code growth; at -O3, ++ limit to 4x unrolling by default. We know we are not optimizing ++ for size if this is set (see arm_optimization_options). */ ++ if (flag_unroll_loops == 2) ++ { ++ if (optimize == 2) ++ { ++ flag_unroll_loops = 1; ++ if (!PARAM_SET_P (PARAM_MAX_UNROLL_TIMES)) ++ set_param_value ("max-unroll-times", 2); ++ } ++ else if (optimize > 2) ++ { ++ flag_unroll_loops = 1; ++ if (!PARAM_SET_P (PARAM_MAX_UNROLL_TIMES)) ++ set_param_value ("max-unroll-times", 4); ++ } ++ else ++ flag_unroll_loops = 0; ++ } + } + + static void +@@ -1793,6 +2028,14 @@ + return !IS_NAKED (arm_current_func_type ()); + } + ++static bool ++arm_warn_func_result (void) ++{ ++ /* Naked functions are implemented entirely in assembly, including the ++ return sequence, so suppress warnings about this. */ ++ return !IS_NAKED (arm_current_func_type ()); ++} ++ + + /* Return 1 if it is possible to return using a single instruction. + If SIBLING is non-null, this is a test for a return before a sibling +@@ -2821,13 +3064,82 @@ + immediate value easier to load. */ + + enum rtx_code +-arm_canonicalize_comparison (enum rtx_code code, enum machine_mode mode, +- rtx * op1) ++arm_canonicalize_comparison (enum rtx_code code, rtx *op0, rtx *op1) + { +- unsigned HOST_WIDE_INT i = INTVAL (*op1); +- unsigned HOST_WIDE_INT maxval; ++ enum machine_mode mode; ++ unsigned HOST_WIDE_INT i, maxval; ++ ++ mode = GET_MODE (*op0); ++ if (mode == VOIDmode) ++ mode = GET_MODE (*op1); ++ + maxval = (((unsigned HOST_WIDE_INT) 1) << (GET_MODE_BITSIZE(mode) - 1)) - 1; + ++ /* For DImode, we have GE/LT/GEU/LTU comparisons. In ARM mode ++ we can also use cmp/cmpeq for GTU/LEU. GT/LE must be either ++ reversed or (for constant OP1) adjusted to GE/LT. Similarly ++ for GTU/LEU in Thumb mode. */ ++ if (mode == DImode) ++ { ++ rtx tem; ++ ++ /* To keep things simple, always use the Cirrus cfcmp64 if it is ++ available. */ ++ if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK) ++ return code; ++ ++ if (code == GT || code == LE ++ || (!TARGET_ARM && (code == GTU || code == LEU))) ++ { ++ /* Missing comparison. First try to use an available ++ comparison. */ ++ if (GET_CODE (*op1) == CONST_INT) ++ { ++ i = INTVAL (*op1); ++ switch (code) ++ { ++ case GT: ++ case LE: ++ if (i != maxval ++ && arm_const_double_by_immediates (GEN_INT (i + 1))) ++ { ++ *op1 = GEN_INT (i + 1); ++ return code == GT ? GE : LT; ++ } ++ break; ++ case GTU: ++ case LEU: ++ if (i != ~((unsigned HOST_WIDE_INT) 0) ++ && arm_const_double_by_immediates (GEN_INT (i + 1))) ++ { ++ *op1 = GEN_INT (i + 1); ++ return code == GTU ? GEU : LTU; ++ } ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ ++ /* If that did not work, reverse the condition. */ ++ tem = *op0; ++ *op0 = *op1; ++ *op1 = tem; ++ return swap_condition (code); ++ } ++ ++ return code; ++ } ++ ++ /* Comparisons smaller than DImode. Only adjust comparisons against ++ an out-of-range constant. */ ++ if (GET_CODE (*op1) != CONST_INT ++ || const_ok_for_arm (INTVAL (*op1)) ++ || const_ok_for_arm (- INTVAL (*op1))) ++ return code; ++ ++ i = INTVAL (*op1); ++ + switch (code) + { + case EQ: +@@ -2884,14 +3196,19 @@ + + /* Define how to find the value returned by a function. */ + +-rtx +-arm_function_value(const_tree type, const_tree func ATTRIBUTE_UNUSED) ++static rtx ++arm_function_value(const_tree type, const_tree func, ++ bool outgoing ATTRIBUTE_UNUSED) + { + enum machine_mode mode; + int unsignedp ATTRIBUTE_UNUSED; + rtx r ATTRIBUTE_UNUSED; + + mode = TYPE_MODE (type); ++ ++ if (TARGET_AAPCS_BASED) ++ return aapcs_allocate_return_reg (mode, type, func); ++ + /* Promote integer types. */ + if (INTEGRAL_TYPE_P (type)) + PROMOTE_FUNCTION_MODE (mode, unsignedp, type); +@@ -2908,7 +3225,57 @@ + } + } + +- return LIBCALL_VALUE(mode); ++ return LIBCALL_VALUE (mode); ++} ++ ++rtx ++arm_libcall_value (enum machine_mode mode, rtx libcall) ++{ ++ if (TARGET_AAPCS_BASED && arm_pcs_default != ARM_PCS_AAPCS ++ && GET_MODE_CLASS (mode) == MODE_FLOAT) ++ { ++ /* The following libcalls return their result in integer registers, ++ even though they return a floating point value. */ ++ if (rtx_equal_p (libcall, ++ convert_optab_libfunc (sfloat_optab, mode, SImode)) ++ || rtx_equal_p (libcall, ++ convert_optab_libfunc (ufloat_optab, mode, SImode)) ++ || rtx_equal_p (libcall, ++ convert_optab_libfunc (sfloat_optab, mode, DImode)) ++ || rtx_equal_p (libcall, ++ convert_optab_libfunc (ufloat_optab, mode, DImode)) ++ || rtx_equal_p (libcall, ++ convert_optab_libfunc (trunc_optab, HFmode, SFmode)) ++ || rtx_equal_p (libcall, ++ convert_optab_libfunc (sext_optab, SFmode, HFmode))) ++ return gen_rtx_REG (mode, ARG_REGISTER(1)); ++ ++ /* Values from double-precision helper functions are returned in core ++ registers if the selected core only supports single-precision ++ arithmetic, even if we are using the hard-float ABI. */ ++ if (TARGET_VFP ++ && (rtx_equal_p (libcall, optab_libfunc (add_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (sdiv_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (smul_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (neg_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (sub_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (eq_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (lt_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (le_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (ge_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (gt_optab, DFmode)) ++ || rtx_equal_p (libcall, optab_libfunc (unord_optab, DFmode)) ++ || rtx_equal_p (libcall, convert_optab_libfunc (sext_optab, ++ DFmode, SFmode)) ++ || rtx_equal_p (libcall, convert_optab_libfunc (trunc_optab, ++ SFmode, DFmode)))) ++ return gen_rtx_REG (mode, ARG_REGISTER (1)); ++ ++ /* XXX There are other libcalls that return in integer registers, ++ but I think they are all handled by hard insns. */ ++ } ++ ++ return LIBCALL_VALUE (mode); + } + + /* Determine the amount of memory needed to store the possible return +@@ -2918,10 +3285,12 @@ + { + int size = 16; + +- if (TARGET_ARM) ++ if (TARGET_32BIT) + { + if (TARGET_HARD_FLOAT_ABI) + { ++ if (TARGET_VFP) ++ size += 32; + if (TARGET_FPA) + size += 12; + if (TARGET_MAVERICK) +@@ -2934,27 +3303,56 @@ + return size; + } + +-/* Decide whether a type should be returned in memory (true) +- or in a register (false). This is called as the target hook +- TARGET_RETURN_IN_MEMORY. */ ++/* Decide whether TYPE should be returned in memory (true) ++ or in a register (false). FNTYPE is the type of the function making ++ the call. */ + static bool +-arm_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED) ++arm_return_in_memory (const_tree type, const_tree fntype) + { + HOST_WIDE_INT size; + +- size = int_size_in_bytes (type); ++ size = int_size_in_bytes (type); /* Negative if not fixed size. */ ++ ++ if (TARGET_AAPCS_BASED) ++ { ++ /* Simple, non-aggregate types (ie not including vectors and ++ complex) are always returned in a register (or registers). ++ We don't care about which register here, so we can short-cut ++ some of the detail. */ ++ if (!AGGREGATE_TYPE_P (type) ++ && TREE_CODE (type) != VECTOR_TYPE ++ && TREE_CODE (type) != COMPLEX_TYPE) ++ return false; ++ ++ /* Any return value that is no larger than one word can be ++ returned in r0. */ ++ if (((unsigned HOST_WIDE_INT) size) <= UNITS_PER_WORD) ++ return false; ++ ++ /* Check any available co-processors to see if they accept the ++ type as a register candidate (VFP, for example, can return ++ some aggregates in consecutive registers). These aren't ++ available if the call is variadic. */ ++ if (aapcs_select_return_coproc (type, fntype) >= 0) ++ return false; ++ ++ /* Vector values should be returned using ARM registers, not ++ memory (unless they're over 16 bytes, which will break since ++ we only have four call-clobbered registers to play with). */ ++ if (TREE_CODE (type) == VECTOR_TYPE) ++ return (size < 0 || size > (4 * UNITS_PER_WORD)); ++ ++ /* The rest go in memory. */ ++ return true; ++ } + +- /* Vector values should be returned using ARM registers, not memory (unless +- they're over 16 bytes, which will break since we only have four +- call-clobbered registers to play with). */ + if (TREE_CODE (type) == VECTOR_TYPE) + return (size < 0 || size > (4 * UNITS_PER_WORD)); + + if (!AGGREGATE_TYPE_P (type) && +- !(TARGET_AAPCS_BASED && TREE_CODE (type) == COMPLEX_TYPE)) +- /* All simple types are returned in registers. +- For AAPCS, complex types are treated the same as aggregates. */ +- return 0; ++ (TREE_CODE (type) != VECTOR_TYPE)) ++ /* All simple types are returned in registers. */ ++ return false; + + if (arm_abi != ARM_ABI_APCS) + { +@@ -2971,7 +3369,7 @@ + the aggregate is either huge or of variable size, and in either case + we will want to return it via memory and not in a register. */ + if (size < 0 || size > UNITS_PER_WORD) +- return 1; ++ return true; + + if (TREE_CODE (type) == RECORD_TYPE) + { +@@ -2991,18 +3389,18 @@ + continue; + + if (field == NULL) +- return 0; /* An empty structure. Allowed by an extension to ANSI C. */ ++ return false; /* An empty structure. Allowed by an extension to ANSI C. */ + + /* Check that the first field is valid for returning in a register. */ + + /* ... Floats are not allowed */ + if (FLOAT_TYPE_P (TREE_TYPE (field))) +- return 1; ++ return true; + + /* ... Aggregates that are not themselves valid for returning in + a register are not allowed. */ + if (arm_return_in_memory (TREE_TYPE (field), NULL_TREE)) +- return 1; ++ return true; + + /* Now check the remaining fields, if any. Only bitfields are allowed, + since they are not addressable. */ +@@ -3014,10 +3412,10 @@ + continue; + + if (!DECL_BIT_FIELD_TYPE (field)) +- return 1; ++ return true; + } + +- return 0; ++ return false; + } + + if (TREE_CODE (type) == UNION_TYPE) +@@ -3034,18 +3432,18 @@ + continue; + + if (FLOAT_TYPE_P (TREE_TYPE (field))) +- return 1; ++ return true; + + if (arm_return_in_memory (TREE_TYPE (field), NULL_TREE)) +- return 1; ++ return true; + } + +- return 0; ++ return false; + } + #endif /* not ARM_WINCE */ + + /* Return all other types in memory. */ +- return 1; ++ return true; + } + + /* Indicate whether or not words of a double are in big-endian order. */ +@@ -3070,60 +3468,851 @@ + return 1; + } + +-/* Initialize a variable CUM of type CUMULATIVE_ARGS +- for a call to a function whose data type is FNTYPE. +- For a library call, FNTYPE is NULL. */ +-void +-arm_init_cumulative_args (CUMULATIVE_ARGS *pcum, tree fntype, +- rtx libname ATTRIBUTE_UNUSED, +- tree fndecl ATTRIBUTE_UNUSED) ++const struct pcs_attribute_arg + { +- /* On the ARM, the offset starts at 0. */ +- pcum->nregs = 0; +- pcum->iwmmxt_nregs = 0; +- pcum->can_split = true; ++ const char *arg; ++ enum arm_pcs value; ++} pcs_attribute_args[] = ++ { ++ {"aapcs", ARM_PCS_AAPCS}, ++ {"aapcs-vfp", ARM_PCS_AAPCS_VFP}, ++ {"aapcs-iwmmxt", ARM_PCS_AAPCS_IWMMXT}, ++ {"atpcs", ARM_PCS_ATPCS}, ++ {"apcs", ARM_PCS_APCS}, ++ {NULL, ARM_PCS_UNKNOWN} ++ }; + +- /* Varargs vectors are treated the same as long long. +- named_count avoids having to change the way arm handles 'named' */ +- pcum->named_count = 0; +- pcum->nargs = 0; ++static enum arm_pcs ++arm_pcs_from_attribute (tree attr) ++{ ++ const struct pcs_attribute_arg *ptr; ++ const char *arg; + +- if (TARGET_REALLY_IWMMXT && fntype) +- { +- tree fn_arg; ++ /* Get the value of the argument. */ ++ if (TREE_VALUE (attr) == NULL_TREE ++ || TREE_CODE (TREE_VALUE (attr)) != STRING_CST) ++ return ARM_PCS_UNKNOWN; + +- for (fn_arg = TYPE_ARG_TYPES (fntype); +- fn_arg; +- fn_arg = TREE_CHAIN (fn_arg)) +- pcum->named_count += 1; ++ arg = TREE_STRING_POINTER (TREE_VALUE (attr)); + +- if (! pcum->named_count) +- pcum->named_count = INT_MAX; +- } +-} ++ /* Check it against the list of known arguments. */ ++ for (ptr = pcs_attribute_args; ptr->arg != NULL; ptr++) ++ if (streq (arg, ptr->arg)) ++ return ptr->value; + ++ /* An unrecognized interrupt type. */ ++ return ARM_PCS_UNKNOWN; ++} + +-/* Return true if mode/type need doubleword alignment. */ +-bool +-arm_needs_doubleword_align (enum machine_mode mode, tree type) ++/* Get the PCS variant to use for this call. TYPE is the function's type ++ specification, DECL is the specific declartion. DECL may be null if ++ the call could be indirect or if this is a library call. */ ++static enum arm_pcs ++arm_get_pcs_model (const_tree type, const_tree decl) + { +- return (GET_MODE_ALIGNMENT (mode) > PARM_BOUNDARY +- || (type && TYPE_ALIGN (type) > PARM_BOUNDARY)); +-} ++ bool user_convention = false; ++ enum arm_pcs user_pcs = arm_pcs_default; ++ tree attr; + ++ gcc_assert (type); + +-/* Determine where to put an argument to a function. +- Value is zero to push the argument on the stack, +- or a hard register in which to store the argument. ++ attr = lookup_attribute ("pcs", TYPE_ATTRIBUTES (type)); ++ if (attr) ++ { ++ user_pcs = arm_pcs_from_attribute (TREE_VALUE (attr)); ++ user_convention = true; ++ } + +- MODE is the argument's machine mode. +- TYPE is the data type of the argument (as a tree). +- This is null for libcalls where that information may +- not be available. +- CUM is a variable of type CUMULATIVE_ARGS which gives info about +- the preceding args and about the function being called. +- NAMED is nonzero if this argument is a named parameter +- (otherwise it is an extra parameter matching an ellipsis). */ ++ if (TARGET_AAPCS_BASED) ++ { ++ /* Detect varargs functions. These always use the base rules ++ (no argument is ever a candidate for a co-processor ++ register). */ ++ bool base_rules = (TYPE_ARG_TYPES (type) != 0 ++ && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (type))) ++ != void_type_node)); ++ ++ if (user_convention) ++ { ++ if (user_pcs > ARM_PCS_AAPCS_LOCAL) ++ sorry ("Non-AAPCS derived PCS variant"); ++ else if (base_rules && user_pcs != ARM_PCS_AAPCS) ++ error ("Variadic functions must use the base AAPCS variant"); ++ } ++ ++ if (base_rules) ++ return ARM_PCS_AAPCS; ++ else if (user_convention) ++ return user_pcs; ++ else if (decl && flag_unit_at_a_time) ++ { ++ /* Local functions never leak outside this compilation unit, ++ so we are free to use whatever conventions are ++ appropriate. */ ++ /* FIXME: remove CONST_CAST_TREE when cgraph is constified. */ ++ struct cgraph_local_info *i = cgraph_local_info (CONST_CAST_TREE(decl)); ++ if (i && i->local) ++ return ARM_PCS_AAPCS_LOCAL; ++ } ++ } ++ else if (user_convention && user_pcs != arm_pcs_default) ++ sorry ("PCS variant"); ++ ++ /* For everything else we use the target's default. */ ++ return arm_pcs_default; ++} ++ ++ ++static void ++aapcs_vfp_cum_init (CUMULATIVE_ARGS *pcum ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ rtx libcall ATTRIBUTE_UNUSED, ++ const_tree fndecl ATTRIBUTE_UNUSED) ++{ ++ /* Record the unallocated VFP registers. */ ++ pcum->aapcs_vfp_regs_free = (1 << NUM_VFP_ARG_REGS) - 1; ++ pcum->aapcs_vfp_reg_alloc = 0; ++} ++ ++/* Walk down the type tree of TYPE counting consecutive base elements. ++ If *MODEP is VOIDmode, then set it to the first valid floating point ++ type. If a non-floating point type is found, or if a floating point ++ type that doesn't match a non-VOIDmode *MODEP is found, then return -1, ++ otherwise return the count in the sub-tree. */ ++static int ++aapcs_vfp_sub_candidate (const_tree type, enum machine_mode *modep) ++{ ++ enum machine_mode mode; ++ HOST_WIDE_INT size; ++ ++ switch (TREE_CODE (type)) ++ { ++ case REAL_TYPE: ++ mode = TYPE_MODE (type); ++ if (mode != DFmode && mode != SFmode) ++ return -1; ++ ++ if (*modep == VOIDmode) ++ *modep = mode; ++ ++ if (*modep == mode) ++ return 1; ++ ++ break; ++ ++ case COMPLEX_TYPE: ++ mode = TYPE_MODE (TREE_TYPE (type)); ++ if (mode != DFmode && mode != SFmode) ++ return -1; ++ ++ if (*modep == VOIDmode) ++ *modep = mode; ++ ++ if (*modep == mode) ++ return 2; ++ ++ break; ++ ++ case VECTOR_TYPE: ++ /* Use V2SImode and V4SImode as representatives of all 64-bit ++ and 128-bit vector types, whether or not those modes are ++ supported with the present options. */ ++ size = int_size_in_bytes (type); ++ switch (size) ++ { ++ case 8: ++ mode = V2SImode; ++ break; ++ case 16: ++ mode = V4SImode; ++ break; ++ default: ++ return -1; ++ } ++ ++ if (*modep == VOIDmode) ++ *modep = mode; ++ ++ /* Vector modes are considered to be opaque: two vectors are ++ equivalent for the purposes of being homogeneous aggregates ++ if they are the same size. */ ++ if (*modep == mode) ++ return 1; ++ ++ break; ++ ++ case ARRAY_TYPE: ++ { ++ int count; ++ tree index = TYPE_DOMAIN (type); ++ ++ /* Can't handle incomplete types. */ ++ if (!COMPLETE_TYPE_P(type)) ++ return -1; ++ ++ count = aapcs_vfp_sub_candidate (TREE_TYPE (type), modep); ++ if (count == -1 ++ || !index ++ || !TYPE_MAX_VALUE (index) ++ || !host_integerp (TYPE_MAX_VALUE (index), 1) ++ || !TYPE_MIN_VALUE (index) ++ || !host_integerp (TYPE_MIN_VALUE (index), 1) ++ || count < 0) ++ return -1; ++ ++ count *= (1 + tree_low_cst (TYPE_MAX_VALUE (index), 1) ++ - tree_low_cst (TYPE_MIN_VALUE (index), 1)); ++ ++ /* There must be no padding. */ ++ if (!host_integerp (TYPE_SIZE (type), 1) ++ || (tree_low_cst (TYPE_SIZE (type), 1) ++ != count * GET_MODE_BITSIZE (*modep))) ++ return -1; ++ ++ return count; ++ } ++ ++ case RECORD_TYPE: ++ { ++ int count = 0; ++ int sub_count; ++ tree field; ++ ++ /* Can't handle incomplete types. */ ++ if (!COMPLETE_TYPE_P(type)) ++ return -1; ++ ++ for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) ++ { ++ if (TREE_CODE (field) != FIELD_DECL) ++ continue; ++ ++ sub_count = aapcs_vfp_sub_candidate (TREE_TYPE (field), modep); ++ if (sub_count < 0) ++ return -1; ++ count += sub_count; ++ } ++ ++ /* There must be no padding. */ ++ if (!host_integerp (TYPE_SIZE (type), 1) ++ || (tree_low_cst (TYPE_SIZE (type), 1) ++ != count * GET_MODE_BITSIZE (*modep))) ++ return -1; ++ ++ return count; ++ } ++ ++ case UNION_TYPE: ++ case QUAL_UNION_TYPE: ++ { ++ /* These aren't very interesting except in a degenerate case. */ ++ int count = 0; ++ int sub_count; ++ tree field; ++ ++ /* Can't handle incomplete types. */ ++ if (!COMPLETE_TYPE_P(type)) ++ return -1; ++ ++ for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) ++ { ++ if (TREE_CODE (field) != FIELD_DECL) ++ continue; ++ ++ sub_count = aapcs_vfp_sub_candidate (TREE_TYPE (field), modep); ++ if (sub_count < 0) ++ return -1; ++ count = count > sub_count ? count : sub_count; ++ } ++ ++ /* There must be no padding. */ ++ if (!host_integerp (TYPE_SIZE (type), 1) ++ || (tree_low_cst (TYPE_SIZE (type), 1) ++ != count * GET_MODE_BITSIZE (*modep))) ++ return -1; ++ ++ return count; ++ } ++ ++ default: ++ break; ++ } ++ ++ return -1; ++} ++ ++/* Return true if PCS_VARIANT should use VFP registers. */ ++static bool ++use_vfp_abi (enum arm_pcs pcs_variant, bool is_double) ++{ ++ if (pcs_variant == ARM_PCS_AAPCS_VFP) ++ return true; ++ ++ if (pcs_variant != ARM_PCS_AAPCS_LOCAL) ++ return false; ++ ++ return (TARGET_32BIT && TARGET_VFP && TARGET_HARD_FLOAT && ++ (TARGET_VFP_DOUBLE || !is_double)); ++} ++ ++static bool ++aapcs_vfp_is_call_or_return_candidate (enum arm_pcs pcs_variant, ++ enum machine_mode mode, const_tree type, ++ int *base_mode, int *count) ++{ ++ enum machine_mode new_mode = VOIDmode; ++ ++ if (GET_MODE_CLASS (mode) == MODE_FLOAT ++ || GET_MODE_CLASS (mode) == MODE_VECTOR_INT ++ || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT) ++ { ++ *count = 1; ++ new_mode = mode; ++ } ++ else if (GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT) ++ { ++ *count = 2; ++ new_mode = (mode == DCmode ? DFmode : SFmode); ++ } ++ else if (type && (mode == BLKmode || TREE_CODE (type) == VECTOR_TYPE)) ++ { ++ int ag_count = aapcs_vfp_sub_candidate (type, &new_mode); ++ ++ if (ag_count > 0 && ag_count <= 4) ++ *count = ag_count; ++ else ++ return false; ++ } ++ else ++ return false; ++ ++ ++ if (!use_vfp_abi (pcs_variant, ARM_NUM_REGS (new_mode) > 1)) ++ return false; ++ ++ *base_mode = new_mode; ++ return true; ++} ++ ++static bool ++aapcs_vfp_is_return_candidate (enum arm_pcs pcs_variant, ++ enum machine_mode mode, const_tree type) ++{ ++ int count ATTRIBUTE_UNUSED; ++ int ag_mode ATTRIBUTE_UNUSED; ++ ++ if (!use_vfp_abi (pcs_variant, false)) ++ return false; ++ return aapcs_vfp_is_call_or_return_candidate (pcs_variant, mode, type, ++ &ag_mode, &count); ++} ++ ++static bool ++aapcs_vfp_is_call_candidate (CUMULATIVE_ARGS *pcum, enum machine_mode mode, ++ const_tree type) ++{ ++ if (!use_vfp_abi (pcum->pcs_variant, false)) ++ return false; ++ ++ return aapcs_vfp_is_call_or_return_candidate (pcum->pcs_variant, mode, type, ++ &pcum->aapcs_vfp_rmode, ++ &pcum->aapcs_vfp_rcount); ++} ++ ++static bool ++aapcs_vfp_allocate (CUMULATIVE_ARGS *pcum, enum machine_mode mode, ++ const_tree type ATTRIBUTE_UNUSED) ++{ ++ int shift = GET_MODE_SIZE (pcum->aapcs_vfp_rmode) / GET_MODE_SIZE (SFmode); ++ unsigned mask = (1 << (shift * pcum->aapcs_vfp_rcount)) - 1; ++ int regno; ++ ++ for (regno = 0; regno < NUM_VFP_ARG_REGS; regno += shift) ++ if (((pcum->aapcs_vfp_regs_free >> regno) & mask) == mask) ++ { ++ pcum->aapcs_vfp_reg_alloc = mask << regno; ++ if (mode == BLKmode || (mode == TImode && !TARGET_NEON)) ++ { ++ int i; ++ int rcount = pcum->aapcs_vfp_rcount; ++ int rshift = shift; ++ enum machine_mode rmode = pcum->aapcs_vfp_rmode; ++ rtx par; ++ if (!TARGET_NEON) ++ { ++ /* Avoid using unsupported vector modes. */ ++ if (rmode == V2SImode) ++ rmode = DImode; ++ else if (rmode == V4SImode) ++ { ++ rmode = DImode; ++ rcount *= 2; ++ rshift /= 2; ++ } ++ } ++ par = gen_rtx_PARALLEL (mode, rtvec_alloc (rcount)); ++ for (i = 0; i < rcount; i++) ++ { ++ rtx tmp = gen_rtx_REG (rmode, ++ FIRST_VFP_REGNUM + regno + i * rshift); ++ tmp = gen_rtx_EXPR_LIST ++ (VOIDmode, tmp, ++ GEN_INT (i * GET_MODE_SIZE (rmode))); ++ XVECEXP (par, 0, i) = tmp; ++ } ++ ++ pcum->aapcs_reg = par; ++ } ++ else ++ pcum->aapcs_reg = gen_rtx_REG (mode, FIRST_VFP_REGNUM + regno); ++ return true; ++ } ++ return false; ++} ++ ++static rtx ++aapcs_vfp_allocate_return_reg (enum arm_pcs pcs_variant ATTRIBUTE_UNUSED, ++ enum machine_mode mode, ++ const_tree type ATTRIBUTE_UNUSED) ++{ ++ if (!use_vfp_abi (pcs_variant, false)) ++ return false; ++ ++ if (mode == BLKmode || (mode == TImode && !TARGET_NEON)) ++ { ++ int count; ++ int ag_mode; ++ int i; ++ rtx par; ++ int shift; ++ ++ aapcs_vfp_is_call_or_return_candidate (pcs_variant, mode, type, ++ &ag_mode, &count); ++ ++ if (!TARGET_NEON) ++ { ++ if (ag_mode == V2SImode) ++ ag_mode = DImode; ++ else if (ag_mode == V4SImode) ++ { ++ ag_mode = DImode; ++ count *= 2; ++ } ++ } ++ shift = GET_MODE_SIZE(ag_mode) / GET_MODE_SIZE(SFmode); ++ par = gen_rtx_PARALLEL (mode, rtvec_alloc (count)); ++ for (i = 0; i < count; i++) ++ { ++ rtx tmp = gen_rtx_REG (ag_mode, FIRST_VFP_REGNUM + i * shift); ++ tmp = gen_rtx_EXPR_LIST (VOIDmode, tmp, ++ GEN_INT (i * GET_MODE_SIZE (ag_mode))); ++ XVECEXP (par, 0, i) = tmp; ++ } ++ ++ return par; ++ } ++ ++ return gen_rtx_REG (mode, FIRST_VFP_REGNUM); ++} ++ ++static void ++aapcs_vfp_advance (CUMULATIVE_ARGS *pcum ATTRIBUTE_UNUSED, ++ enum machine_mode mode ATTRIBUTE_UNUSED, ++ const_tree type ATTRIBUTE_UNUSED) ++{ ++ pcum->aapcs_vfp_regs_free &= ~pcum->aapcs_vfp_reg_alloc; ++ pcum->aapcs_vfp_reg_alloc = 0; ++ return; ++} ++ ++#define AAPCS_CP(X) \ ++ { \ ++ aapcs_ ## X ## _cum_init, \ ++ aapcs_ ## X ## _is_call_candidate, \ ++ aapcs_ ## X ## _allocate, \ ++ aapcs_ ## X ## _is_return_candidate, \ ++ aapcs_ ## X ## _allocate_return_reg, \ ++ aapcs_ ## X ## _advance \ ++ } ++ ++/* Table of co-processors that can be used to pass arguments in ++ registers. Idealy no arugment should be a candidate for more than ++ one co-processor table entry, but the table is processed in order ++ and stops after the first match. If that entry then fails to put ++ the argument into a co-processor register, the argument will go on ++ the stack. */ ++static struct ++{ ++ /* Initialize co-processor related state in CUMULATIVE_ARGS structure. */ ++ void (*cum_init) (CUMULATIVE_ARGS *, const_tree, rtx, const_tree); ++ ++ /* Return true if an argument of mode MODE (or type TYPE if MODE is ++ BLKmode) is a candidate for this co-processor's registers; this ++ function should ignore any position-dependent state in ++ CUMULATIVE_ARGS and only use call-type dependent information. */ ++ bool (*is_call_candidate) (CUMULATIVE_ARGS *, enum machine_mode, const_tree); ++ ++ /* Return true if the argument does get a co-processor register; it ++ should set aapcs_reg to an RTX of the register allocated as is ++ required for a return from FUNCTION_ARG. */ ++ bool (*allocate) (CUMULATIVE_ARGS *, enum machine_mode, const_tree); ++ ++ /* Return true if a result of mode MODE (or type TYPE if MODE is ++ BLKmode) is can be returned in this co-processor's registers. */ ++ bool (*is_return_candidate) (enum arm_pcs, enum machine_mode, const_tree); ++ ++ /* Allocate and return an RTX element to hold the return type of a ++ call, this routine must not fail and will only be called if ++ is_return_candidate returned true with the same parameters. */ ++ rtx (*allocate_return_reg) (enum arm_pcs, enum machine_mode, const_tree); ++ ++ /* Finish processing this argument and prepare to start processing ++ the next one. */ ++ void (*advance) (CUMULATIVE_ARGS *, enum machine_mode, const_tree); ++} aapcs_cp_arg_layout[ARM_NUM_COPROC_SLOTS] = ++ { ++ AAPCS_CP(vfp) ++ }; ++ ++#undef AAPCS_CP ++ ++static int ++aapcs_select_call_coproc (CUMULATIVE_ARGS *pcum, enum machine_mode mode, ++ tree type) ++{ ++ int i; ++ ++ for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++) ++ if (aapcs_cp_arg_layout[i].is_call_candidate (pcum, mode, type)) ++ return i; ++ ++ return -1; ++} ++ ++static int ++aapcs_select_return_coproc (const_tree type, const_tree fntype) ++{ ++ /* We aren't passed a decl, so we can't check that a call is local. ++ However, it isn't clear that that would be a win anyway, since it ++ might limit some tail-calling opportunities. */ ++ enum arm_pcs pcs_variant; ++ ++ if (fntype) ++ { ++ const_tree fndecl = NULL_TREE; ++ ++ if (TREE_CODE (fntype) == FUNCTION_DECL) ++ { ++ fndecl = fntype; ++ fntype = TREE_TYPE (fntype); ++ } ++ ++ pcs_variant = arm_get_pcs_model (fntype, fndecl); ++ } ++ else ++ pcs_variant = arm_pcs_default; ++ ++ if (pcs_variant != ARM_PCS_AAPCS) ++ { ++ int i; ++ ++ for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++) ++ if (aapcs_cp_arg_layout[i].is_return_candidate (pcs_variant, ++ TYPE_MODE (type), ++ type)) ++ return i; ++ } ++ return -1; ++} ++ ++static rtx ++aapcs_allocate_return_reg (enum machine_mode mode, const_tree type, ++ const_tree fntype) ++{ ++ /* We aren't passed a decl, so we can't check that a call is local. ++ However, it isn't clear that that would be a win anyway, since it ++ might limit some tail-calling opportunities. */ ++ enum arm_pcs pcs_variant; ++ ++ if (fntype) ++ { ++ const_tree fndecl = NULL_TREE; ++ ++ if (TREE_CODE (fntype) == FUNCTION_DECL) ++ { ++ fndecl = fntype; ++ fntype = TREE_TYPE (fntype); ++ } ++ ++ pcs_variant = arm_get_pcs_model (fntype, fndecl); ++ } ++ else ++ pcs_variant = arm_pcs_default; ++ ++ /* Promote integer types. */ ++ if (type && INTEGRAL_TYPE_P (type)) ++ PROMOTE_FUNCTION_MODE (mode, unsignedp, type); ++ ++ if (pcs_variant != ARM_PCS_AAPCS) ++ { ++ int i; ++ ++ for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++) ++ if (aapcs_cp_arg_layout[i].is_return_candidate (pcs_variant, mode, ++ type)) ++ return aapcs_cp_arg_layout[i].allocate_return_reg (pcs_variant, ++ mode, type); ++ } ++ ++ /* Promotes small structs returned in a register to full-word size ++ for big-endian AAPCS. */ ++ if (type && arm_return_in_msb (type)) ++ { ++ HOST_WIDE_INT size = int_size_in_bytes (type); ++ if (size % UNITS_PER_WORD != 0) ++ { ++ size += UNITS_PER_WORD - size % UNITS_PER_WORD; ++ mode = mode_for_size (size * BITS_PER_UNIT, MODE_INT, 0); ++ } ++ } ++ ++ return gen_rtx_REG (mode, R0_REGNUM); ++} ++ ++rtx ++aapcs_libcall_value (enum machine_mode mode) ++{ ++ return aapcs_allocate_return_reg (mode, NULL_TREE, NULL_TREE); ++} ++ ++/* Lay out a function argument using the AAPCS rules. The rule ++ numbers referred to here are those in the AAPCS. */ ++static void ++aapcs_layout_arg (CUMULATIVE_ARGS *pcum, enum machine_mode mode, ++ tree type, int named) ++{ ++ int nregs, nregs2; ++ int ncrn; ++ ++ /* We only need to do this once per argument. */ ++ if (pcum->aapcs_arg_processed) ++ return; ++ ++ pcum->aapcs_arg_processed = true; ++ ++ /* Special case: if named is false then we are handling an incoming ++ anonymous argument which is on the stack. */ ++ if (!named) ++ return; ++ ++ /* Is this a potential co-processor register candidate? */ ++ if (pcum->pcs_variant != ARM_PCS_AAPCS) ++ { ++ int slot = aapcs_select_call_coproc (pcum, mode, type); ++ pcum->aapcs_cprc_slot = slot; ++ ++ /* We don't have to apply any of the rules from part B of the ++ preparation phase, these are handled elsewhere in the ++ compiler. */ ++ ++ if (slot >= 0) ++ { ++ /* A Co-processor register candidate goes either in its own ++ class of registers or on the stack. */ ++ if (!pcum->aapcs_cprc_failed[slot]) ++ { ++ /* C1.cp - Try to allocate the argument to co-processor ++ registers. */ ++ if (aapcs_cp_arg_layout[slot].allocate (pcum, mode, type)) ++ return; ++ ++ /* C2.cp - Put the argument on the stack and note that we ++ can't assign any more candidates in this slot. We also ++ need to note that we have allocated stack space, so that ++ we won't later try to split a non-cprc candidate between ++ core registers and the stack. */ ++ pcum->aapcs_cprc_failed[slot] = true; ++ pcum->can_split = false; ++ } ++ ++ /* We didn't get a register, so this argument goes on the ++ stack. */ ++ gcc_assert (pcum->can_split == false); ++ return; ++ } ++ } ++ ++ /* C3 - For double-word aligned arguments, round the NCRN up to the ++ next even number. */ ++ ncrn = pcum->aapcs_ncrn; ++ if ((ncrn & 1) && arm_needs_doubleword_align (mode, type)) ++ ncrn++; ++ ++ nregs = ARM_NUM_REGS2(mode, type); ++ ++ /* Sigh, this test should really assert that nregs > 0, but a GCC ++ extension allows empty structs and then gives them empty size; it ++ then allows such a structure to be passed by value. For some of ++ the code below we have to pretend that such an argument has ++ non-zero size so that we 'locate' it correctly either in ++ registers or on the stack. */ ++ gcc_assert (nregs >= 0); ++ ++ nregs2 = nregs ? nregs : 1; ++ ++ /* C4 - Argument fits entirely in core registers. */ ++ if (ncrn + nregs2 <= NUM_ARG_REGS) ++ { ++ pcum->aapcs_reg = gen_rtx_REG (mode, ncrn); ++ pcum->aapcs_next_ncrn = ncrn + nregs; ++ return; ++ } ++ ++ /* C5 - Some core registers left and there are no arguments already ++ on the stack: split this argument between the remaining core ++ registers and the stack. */ ++ if (ncrn < NUM_ARG_REGS && pcum->can_split) ++ { ++ pcum->aapcs_reg = gen_rtx_REG (mode, ncrn); ++ pcum->aapcs_next_ncrn = NUM_ARG_REGS; ++ pcum->aapcs_partial = (NUM_ARG_REGS - ncrn) * UNITS_PER_WORD; ++ return; ++ } ++ ++ /* C6 - NCRN is set to 4. */ ++ pcum->aapcs_next_ncrn = NUM_ARG_REGS; ++ ++ /* C7,C8 - arugment goes on the stack. We have nothing to do here. */ ++ return; ++} ++ ++/* Initialize a variable CUM of type CUMULATIVE_ARGS ++ for a call to a function whose data type is FNTYPE. ++ For a library call, FNTYPE is NULL. */ ++void ++arm_init_cumulative_args (CUMULATIVE_ARGS *pcum, tree fntype, ++ rtx libname, ++ tree fndecl ATTRIBUTE_UNUSED) ++{ ++ /* Long call handling. */ ++ if (fntype) ++ pcum->pcs_variant = arm_get_pcs_model (fntype, fndecl); ++ else ++ pcum->pcs_variant = arm_pcs_default; ++ ++ if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL) ++ { ++ /* XXX We should also detect some library calls here and handle ++ them using the base rules too; for example the floating point ++ support functions always work this way. */ ++ ++ if (rtx_equal_p (libname, ++ convert_optab_libfunc (sfix_optab, DImode, DFmode)) ++ || rtx_equal_p (libname, ++ convert_optab_libfunc (ufix_optab, DImode, DFmode)) ++ || rtx_equal_p (libname, ++ convert_optab_libfunc (sfix_optab, DImode, SFmode)) ++ || rtx_equal_p (libname, ++ convert_optab_libfunc (ufix_optab, DImode, SFmode)) ++ || rtx_equal_p (libname, ++ convert_optab_libfunc (trunc_optab, HFmode, SFmode)) ++ || rtx_equal_p (libname, ++ convert_optab_libfunc (sext_optab, SFmode, HFmode))) ++ pcum->pcs_variant = ARM_PCS_AAPCS; ++ ++ /* We must pass arguments to double-precision helper functions in core ++ registers if we only have hardware support for single-precision ++ arithmetic, even if we are using the hard-float ABI. */ ++ if (TARGET_VFP ++ && (rtx_equal_p (libname, optab_libfunc (add_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (sdiv_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (smul_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (neg_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (sub_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (eq_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (lt_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (le_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (ge_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (gt_optab, DFmode)) ++ || rtx_equal_p (libname, optab_libfunc (unord_optab, DFmode)) ++ || rtx_equal_p (libname, convert_optab_libfunc (sext_optab, ++ DFmode, SFmode)) ++ || rtx_equal_p (libname, convert_optab_libfunc (trunc_optab, ++ SFmode, DFmode)) ++ || rtx_equal_p (libname, convert_optab_libfunc (sfix_optab, ++ SImode, DFmode)) ++ || rtx_equal_p (libname, convert_optab_libfunc (ufix_optab, ++ SImode, DFmode)))) ++ pcum->pcs_variant = ARM_PCS_AAPCS; ++ ++ pcum->aapcs_ncrn = pcum->aapcs_next_ncrn = 0; ++ pcum->aapcs_reg = NULL_RTX; ++ pcum->aapcs_partial = 0; ++ pcum->aapcs_arg_processed = false; ++ pcum->aapcs_cprc_slot = -1; ++ pcum->can_split = true; ++ ++ if (pcum->pcs_variant != ARM_PCS_AAPCS) ++ { ++ int i; ++ ++ for (i = 0; i < ARM_NUM_COPROC_SLOTS; i++) ++ { ++ pcum->aapcs_cprc_failed[i] = false; ++ aapcs_cp_arg_layout[i].cum_init (pcum, fntype, libname, fndecl); ++ } ++ } ++ return; ++ } ++ ++ /* Legacy ABIs */ ++ ++ /* On the ARM, the offset starts at 0. */ ++ pcum->nregs = 0; ++ pcum->iwmmxt_nregs = 0; ++ pcum->can_split = true; ++ ++ /* Varargs vectors are treated the same as long long. ++ named_count avoids having to change the way arm handles 'named' */ ++ pcum->named_count = 0; ++ pcum->nargs = 0; ++ ++ if (TARGET_REALLY_IWMMXT && fntype) ++ { ++ tree fn_arg; ++ ++ for (fn_arg = TYPE_ARG_TYPES (fntype); ++ fn_arg; ++ fn_arg = TREE_CHAIN (fn_arg)) ++ pcum->named_count += 1; ++ ++ if (! pcum->named_count) ++ pcum->named_count = INT_MAX; ++ } ++} ++ ++ ++/* Return true if mode/type need doubleword alignment. */ ++bool ++arm_needs_doubleword_align (enum machine_mode mode, tree type) ++{ ++ return (GET_MODE_ALIGNMENT (mode) > PARM_BOUNDARY ++ || (type && TYPE_ALIGN (type) > PARM_BOUNDARY)); ++} ++ ++ ++/* Determine where to put an argument to a function. ++ Value is zero to push the argument on the stack, ++ or a hard register in which to store the argument. ++ ++ MODE is the argument's machine mode. ++ TYPE is the data type of the argument (as a tree). ++ This is null for libcalls where that information may ++ not be available. ++ CUM is a variable of type CUMULATIVE_ARGS which gives info about ++ the preceding args and about the function being called. ++ NAMED is nonzero if this argument is a named parameter ++ (otherwise it is an extra parameter matching an ellipsis). */ + + rtx + arm_function_arg (CUMULATIVE_ARGS *pcum, enum machine_mode mode, +@@ -3131,6 +4320,17 @@ + { + int nregs; + ++ /* Handle the special case quickly. Pick an arbitrary value for op2 of ++ a call insn (op3 of a call_value insn). */ ++ if (mode == VOIDmode) ++ return const0_rtx; ++ ++ if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL) ++ { ++ aapcs_layout_arg (pcum, mode, type, named); ++ return pcum->aapcs_reg; ++ } ++ + /* Varargs vectors are treated the same as long long. + named_count avoids having to change the way arm handles 'named' */ + if (TARGET_IWMMXT_ABI +@@ -3172,10 +4372,16 @@ + + static int + arm_arg_partial_bytes (CUMULATIVE_ARGS *pcum, enum machine_mode mode, +- tree type, bool named ATTRIBUTE_UNUSED) ++ tree type, bool named) + { + int nregs = pcum->nregs; + ++ if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL) ++ { ++ aapcs_layout_arg (pcum, mode, type, named); ++ return pcum->aapcs_partial; ++ } ++ + if (TARGET_IWMMXT_ABI && arm_vector_mode_supported_p (mode)) + return 0; + +@@ -3187,6 +4393,39 @@ + return 0; + } + ++void ++arm_function_arg_advance (CUMULATIVE_ARGS *pcum, enum machine_mode mode, ++ tree type, bool named) ++{ ++ if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL) ++ { ++ aapcs_layout_arg (pcum, mode, type, named); ++ ++ if (pcum->aapcs_cprc_slot >= 0) ++ { ++ aapcs_cp_arg_layout[pcum->aapcs_cprc_slot].advance (pcum, mode, ++ type); ++ pcum->aapcs_cprc_slot = -1; ++ } ++ ++ /* Generic stuff. */ ++ pcum->aapcs_arg_processed = false; ++ pcum->aapcs_ncrn = pcum->aapcs_next_ncrn; ++ pcum->aapcs_reg = NULL_RTX; ++ pcum->aapcs_partial = 0; ++ } ++ else ++ { ++ pcum->nargs += 1; ++ if (arm_vector_mode_supported_p (mode) ++ && pcum->named_count > pcum->nargs ++ && TARGET_IWMMXT_ABI) ++ pcum->iwmmxt_nregs += 1; ++ else ++ pcum->nregs += ARM_NUM_REGS2 (mode, type); ++ } ++} ++ + /* Variable sized types are passed by reference. This is a GCC + extension to the ARM ABI. */ + +@@ -3237,6 +4476,8 @@ + /* Whereas these functions are always known to reside within the 26 bit + addressing range. */ + { "short_call", 0, 0, false, true, true, NULL }, ++ /* Specify the procedure call conventions for a function. */ ++ { "pcs", 1, 1, false, true, true, arm_handle_pcs_attribute }, + /* Interrupt Service Routines have special prologue and epilogue requirements. */ + { "isr", 0, 1, false, false, false, arm_handle_isr_attribute }, + { "interrupt", 0, 1, false, false, false, arm_handle_isr_attribute }, +@@ -3335,7 +4576,22 @@ + } + } + } +- ++ ++ return NULL_TREE; ++} ++ ++/* Handle a "pcs" attribute; arguments as in struct ++ attribute_spec.handler. */ ++static tree ++arm_handle_pcs_attribute (tree *node ATTRIBUTE_UNUSED, tree name, tree args, ++ int flags ATTRIBUTE_UNUSED, bool *no_add_attrs) ++{ ++ if (arm_pcs_from_attribute (args) == ARM_PCS_UNKNOWN) ++ { ++ warning (OPT_Wattributes, "%qs attribute ignored", ++ IDENTIFIER_POINTER (name)); ++ *no_add_attrs = true; ++ } + return NULL_TREE; + } + +@@ -3500,7 +4756,7 @@ + + /* Return nonzero if it is ok to make a tail-call to DECL. */ + static bool +-arm_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED) ++arm_function_ok_for_sibcall (tree decl, tree exp) + { + unsigned long func_type; + +@@ -3508,8 +4764,8 @@ + return false; + + /* Never tailcall something for which we have no decl, or if we +- are in Thumb mode. */ +- if (decl == NULL || TARGET_THUMB) ++ are generating code for Thumb-1. */ ++ if (decl == NULL || !TARGET_32BIT) + return false; + + /* The PIC register is live on entry to VxWorks PLT entries, so we +@@ -3533,6 +4789,21 @@ + if (IS_INTERRUPT (func_type)) + return false; + ++ if (!VOID_TYPE_P (TREE_TYPE (DECL_RESULT (cfun->decl)))) ++ { ++ /* Check that the return value locations are the same. For ++ example that we aren't returning a value from the sibling in ++ a VFP register but then need to transfer it to a core ++ register. */ ++ rtx a, b; ++ ++ a = arm_function_value (TREE_TYPE (exp), decl, false); ++ b = arm_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)), ++ cfun->decl, false); ++ if (!rtx_equal_p (a, b)) ++ return false; ++ } ++ + /* Never tailcall if function may be called with a misaligned SP. */ + if (IS_STACKALIGN (func_type)) + return false; +@@ -3585,7 +4856,7 @@ + } + else + { +- rtx seq; ++ rtx seq, insn; + + if (!cfun->machine->pic_reg) + cfun->machine->pic_reg = gen_reg_rtx (Pmode); +@@ -3602,6 +4873,11 @@ + + seq = get_insns (); + end_sequence (); ++ ++ for (insn = seq; insn; insn = NEXT_INSN (insn)) ++ if (INSN_P (insn)) ++ INSN_LOCATOR (insn) = prologue_locator; ++ + emit_insn_after (seq, entry_of_function ()); + } + } +@@ -4131,6 +5407,7 @@ + if (GET_MODE_SIZE (mode) <= 4 + && ! (arm_arch4 + && (mode == HImode ++ || mode == HFmode + || (mode == QImode && outer == SIGN_EXTEND)))) + { + if (code == MULT) +@@ -4159,13 +5436,15 @@ + load. */ + if (arm_arch4) + { +- if (mode == HImode || (outer == SIGN_EXTEND && mode == QImode)) ++ if (mode == HImode ++ || mode == HFmode ++ || (outer == SIGN_EXTEND && mode == QImode)) + range = 256; + else + range = 4096; + } + else +- range = (mode == HImode) ? 4095 : 4096; ++ range = (mode == HImode || mode == HFmode) ? 4095 : 4096; + + return (code == CONST_INT + && INTVAL (index) < range +@@ -4336,7 +5615,8 @@ + return 1; + + /* This is PC relative data after arm_reorg runs. */ +- else if (GET_MODE_SIZE (mode) >= 4 && reload_completed ++ else if ((GET_MODE_SIZE (mode) >= 4 || mode == HFmode) ++ && reload_completed + && (GET_CODE (x) == LABEL_REF + || (GET_CODE (x) == CONST + && GET_CODE (XEXP (x, 0)) == PLUS +@@ -5035,7 +6315,7 @@ + case UMOD: + if (TARGET_HARD_FLOAT && mode == SFmode) + *total = COSTS_N_INSNS (2); +- else if (TARGET_HARD_FLOAT && mode == DFmode) ++ else if (TARGET_HARD_FLOAT && mode == DFmode && !TARGET_VFP_SINGLE) + *total = COSTS_N_INSNS (4); + else + *total = COSTS_N_INSNS (20); +@@ -5074,23 +6354,6 @@ + return true; + + case MINUS: +- if (TARGET_THUMB2) +- { +- if (GET_MODE_CLASS (mode) == MODE_FLOAT) +- { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) +- *total = COSTS_N_INSNS (1); +- else +- *total = COSTS_N_INSNS (20); +- } +- else +- *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); +- /* Thumb2 does not have RSB, so all arguments must be +- registers (subtracting a constant is canonicalized as +- addition of the negated constant). */ +- return false; +- } +- + if (mode == DImode) + { + *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); +@@ -5113,7 +6376,9 @@ + + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + if (GET_CODE (XEXP (x, 0)) == CONST_DOUBLE +@@ -5154,6 +6419,17 @@ + return true; + } + ++ /* A shift as a part of RSB costs no more than RSB itself. */ ++ if (GET_CODE (XEXP (x, 0)) == MULT ++ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT ++ && ((INTVAL (XEXP (XEXP (x, 0), 1)) ++ & (INTVAL (XEXP (XEXP (x, 0), 1)) - 1)) == 0)) ++ { ++ *total += rtx_cost (XEXP (XEXP (x, 0), 0), code, speed); ++ *total += rtx_cost (XEXP (x, 1), code, speed); ++ return true; ++ } ++ + if (subcode == MULT + && GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT + && ((INTVAL (XEXP (XEXP (x, 1), 1)) & +@@ -5175,6 +6451,19 @@ + return true; + } + ++ /* MLS is just as expensive as its underlying multiplication. ++ Exclude a shift by a constant, which is expressed as a ++ multiplication. */ ++ if (TARGET_32BIT && arm_arch_thumb2 ++ && GET_CODE (XEXP (x, 1)) == MULT ++ && ! (GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT ++ && ((INTVAL (XEXP (XEXP (x, 1), 1)) & ++ (INTVAL (XEXP (XEXP (x, 1), 1)) - 1)) == 0))) ++ { ++ /* The cost comes from the cost of the multiply. */ ++ return false; ++ } ++ + /* Fall through */ + + case PLUS: +@@ -5203,7 +6492,9 @@ + + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + if (GET_CODE (XEXP (x, 1)) == CONST_DOUBLE +@@ -5318,7 +6609,9 @@ + case NEG: + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -5469,9 +6762,11 @@ + return true; + + case ABS: +- if (GET_MODE_CLASS (mode == MODE_FLOAT)) ++ if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -5574,7 +6869,19 @@ + return true; + + case CONST_DOUBLE: +- if (TARGET_HARD_FLOAT && vfp3_const_double_rtx (x)) ++ if (TARGET_HARD_FLOAT && vfp3_const_double_rtx (x) ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ *total = COSTS_N_INSNS (1); ++ else ++ *total = COSTS_N_INSNS (4); ++ return true; ++ ++ case CONST_VECTOR: ++ if (TARGET_NEON ++ && TARGET_HARD_FLOAT ++ && outer == SET ++ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) ++ && neon_immediate_valid_for_move (x, mode, NULL, NULL)) + *total = COSTS_N_INSNS (1); + else + *total = COSTS_N_INSNS (4); +@@ -5649,7 +6956,8 @@ + return false; + + case MINUS: +- if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -5679,7 +6987,8 @@ + return false; + + case PLUS: +- if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -5709,7 +7018,8 @@ + return false; + + case NEG: +- if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -5733,7 +7043,8 @@ + return false; + + case ABS: +- if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) + *total = COSTS_N_INSNS (1); + else + *total = COSTS_N_INSNS (1 + ARM_NUM_REGS (mode)); +@@ -5763,60 +7074,434 @@ + case HImode: + *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2); + +- case SImode: +- break; ++ case SImode: ++ break; ++ ++ default: ++ *total += COSTS_N_INSNS (2); ++ } ++ } ++ ++ if (mode == DImode) ++ *total += COSTS_N_INSNS (1); ++ ++ return false; ++ ++ case CONST_INT: ++ if (const_ok_for_arm (INTVAL (x))) ++ *total = COSTS_N_INSNS (outer_code == SET ? 1 : 0); ++ else if (const_ok_for_arm (~INTVAL (x))) ++ *total = COSTS_N_INSNS (outer_code == AND ? 0 : 1); ++ else if (const_ok_for_arm (-INTVAL (x))) ++ { ++ if (outer_code == COMPARE || outer_code == PLUS ++ || outer_code == MINUS) ++ *total = 0; ++ else ++ *total = COSTS_N_INSNS (1); ++ } ++ else ++ *total = COSTS_N_INSNS (2); ++ return true; ++ ++ case CONST: ++ case LABEL_REF: ++ case SYMBOL_REF: ++ *total = COSTS_N_INSNS (2); ++ return true; ++ ++ case CONST_DOUBLE: ++ *total = COSTS_N_INSNS (4); ++ return true; ++ ++ case CONST_VECTOR: ++ if (TARGET_NEON ++ && TARGET_HARD_FLOAT ++ && outer_code == SET ++ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) ++ && neon_immediate_valid_for_move (x, mode, NULL, NULL)) ++ *total = COSTS_N_INSNS (1); ++ else ++ *total = COSTS_N_INSNS (4); ++ return true; ++ ++ case HIGH: ++ case LO_SUM: ++ /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the ++ cost of these slightly. */ ++ *total = COSTS_N_INSNS (1) + 1; ++ return true; ++ ++ default: ++ if (mode != VOIDmode) ++ *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); ++ else ++ *total = COSTS_N_INSNS (4); /* How knows? */ ++ return false; ++ } ++} ++ ++static bool ++thumb2_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, ++ int *total) ++{ ++ /* Attempt to give a lower cost to RTXs which can optimistically be ++ represented as short insns, assuming that the right conditions will hold ++ later (e.g. low registers will be chosen if a short insn requires them). ++ ++ Note that we don't make wide insns cost twice as much as narrow insns, ++ because we can't prove that a particular RTX will actually use a narrow ++ insn, because not enough information is available (e.g., we don't know ++ which hard registers pseudos will be assigned). Consider these to be ++ "expected" sizes/weightings. ++ ++ (COSTS_NARROW_INSNS has the same weight as COSTS_N_INSNS.) */ ++ ++#define COSTS_NARROW_INSNS(N) ((N) * 4) ++#define COSTS_WIDE_INSNS(N) ((N) * 6) ++#define THUMB2_LIBCALL_COST COSTS_WIDE_INSNS (2) ++ enum machine_mode mode = GET_MODE (x); ++ ++ switch (code) ++ { ++ case MEM: ++ if (REG_P (XEXP (x, 0))) ++ { ++ /* Hopefully this will use a narrow ldm/stm insn. */ ++ *total = COSTS_NARROW_INSNS (1); ++ return true; ++ } ++ else if ((GET_CODE (XEXP (x, 0)) == SYMBOL_REF ++ && CONSTANT_POOL_ADDRESS_P (XEXP (x, 0))) ++ || reg_mentioned_p (virtual_stack_vars_rtx, XEXP (x, 0)) ++ || reg_mentioned_p (stack_pointer_rtx, XEXP (x, 0))) ++ { ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)); ++ return true; ++ } ++ else if (GET_CODE (XEXP (x, 0)) == PLUS) ++ { ++ rtx plus = XEXP (x, 0); ++ ++ if (GET_CODE (XEXP (plus, 1)) == CONST_INT) ++ { ++ HOST_WIDE_INT cst = INTVAL (XEXP (plus, 1)); ++ ++ if (cst >= 0 && cst < 256) ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)); ++ else ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); ++ ++ *total += rtx_cost (XEXP (plus, 0), code, false); ++ ++ return true; ++ } ++ } ++ ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)); ++ return false; ++ ++ case DIV: ++ case MOD: ++ case UDIV: ++ case UMOD: ++ if (arm_arch_hwdiv) ++ *total = COSTS_WIDE_INSNS (1); ++ else ++ *total = THUMB2_LIBCALL_COST; ++ return false; ++ ++ case ROTATE: ++ if (mode == SImode && REG_P (XEXP (x, 1))) ++ { ++ *total = COSTS_WIDE_INSNS (1) + COSTS_NARROW_INSNS (1) ++ + rtx_cost (XEXP (x, 0), code, false); ++ return true; ++ } ++ /* Fall through */ ++ ++ case ASHIFT: ++ case LSHIFTRT: ++ case ASHIFTRT: ++ if (mode == DImode && GET_CODE (XEXP (x, 1)) == CONST_INT) ++ { ++ *total = COSTS_WIDE_INSNS (3) + rtx_cost (XEXP (x, 0), code, false); ++ return true; ++ } ++ else if (mode == SImode) ++ { ++ *total = COSTS_NARROW_INSNS (1); ++ return false; ++ } ++ ++ /* Needs a libcall. */ ++ *total = THUMB2_LIBCALL_COST; ++ return false; ++ ++ case ROTATERT: ++ if (mode == DImode && GET_CODE (XEXP (x, 1)) == CONST_INT) ++ { ++ *total = COSTS_WIDE_INSNS (3) + rtx_cost (XEXP (x, 0), code, false); ++ return true; ++ } ++ else if (mode == SImode) ++ { ++ if (GET_CODE (XEXP (x, 1)) == CONST_INT) ++ *total = COSTS_WIDE_INSNS (1) + rtx_cost (XEXP (x, 0), code, false); ++ else ++ *total = COSTS_NARROW_INSNS (1) ++ + rtx_cost (XEXP (x, 0), code, false); ++ return true; ++ } ++ ++ /* Needs a libcall. */ ++ *total = THUMB2_LIBCALL_COST; ++ return false; ++ ++ case MINUS: ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ { ++ *total = COSTS_WIDE_INSNS (1); ++ return false; ++ } ++ ++ if (mode == SImode) ++ { ++ enum rtx_code subcode0 = GET_CODE (XEXP (x, 0)); ++ enum rtx_code subcode1 = GET_CODE (XEXP (x, 1)); ++ ++ if (subcode0 == ROTATE || subcode0 == ROTATERT || subcode0 == ASHIFT ++ || subcode0 == LSHIFTRT || subcode0 == ASHIFTRT ++ || subcode1 == ROTATE || subcode1 == ROTATERT ++ || subcode1 == ASHIFT || subcode1 == LSHIFTRT ++ || subcode1 == ASHIFTRT) ++ { ++ /* It's just the cost of the two operands. */ ++ *total = 0; ++ return false; ++ } ++ ++ if (subcode1 == CONST_INT) ++ { ++ HOST_WIDE_INT cst = INTVAL (XEXP (x, 1)); ++ ++ if (cst >= 0 && cst < 256) ++ *total = COSTS_NARROW_INSNS (1); ++ else ++ *total = COSTS_WIDE_INSNS (1); ++ ++ *total += rtx_cost (XEXP (x, 0), code, false); ++ ++ return true; ++ } ++ ++ *total = COSTS_NARROW_INSNS (1); ++ return false; ++ } ++ ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); ++ return false; ++ ++ case PLUS: ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ { ++ *total = COSTS_WIDE_INSNS (1); ++ return false; ++ } ++ ++ /* Fall through */ ++ case AND: case XOR: case IOR: ++ if (mode == SImode) ++ { ++ enum rtx_code subcode = GET_CODE (XEXP (x, 0)); ++ ++ if (subcode == ROTATE || subcode == ROTATERT || subcode == ASHIFT ++ || subcode == LSHIFTRT || subcode == ASHIFTRT ++ || (code == AND && subcode == NOT)) ++ { ++ /* It's just the cost of the two operands. */ ++ *total = 0; ++ return false; ++ } ++ ++ if (code == PLUS && GET_CODE (XEXP (x, 1)) == CONST_INT) ++ { ++ HOST_WIDE_INT cst = INTVAL (XEXP (x, 1)); ++ ++ if ((reg_mentioned_p (virtual_stack_vars_rtx, XEXP (x, 0)) ++ || reg_mentioned_p (stack_pointer_rtx, XEXP (x, 0))) ++ && cst > -512 && cst < 1024) ++ /* Only approximately correct, depending on destination ++ register. */ ++ *total = COSTS_NARROW_INSNS (1); ++ else if (cst > -256 && cst < 256) ++ *total = COSTS_NARROW_INSNS (1); ++ else ++ *total = COSTS_WIDE_INSNS (1); ++ ++ *total += rtx_cost (XEXP (x, 0), code, false); ++ ++ return true; ++ } ++ ++ if (subcode == MULT ++ && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode)) ++ { ++ *total = COSTS_WIDE_INSNS (1) ++ + rtx_cost (XEXP (x, 1), code, false); ++ return true; ++ } ++ } ++ ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)); ++ return false; ++ ++ case MULT: ++ if (mode == SImode && GET_CODE (XEXP (x, 1)) != CONST_INT) ++ { ++ /* Might be using muls. */ ++ *total = COSTS_NARROW_INSNS (1); ++ return false; ++ } ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); ++ return false; ++ ++ case NEG: ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ { ++ *total = COSTS_WIDE_INSNS (1); ++ return false; ++ } ++ ++ /* Fall through */ ++ case NOT: ++ if (mode == SImode) ++ { ++ *total = COSTS_NARROW_INSNS (1); ++ return false; ++ } ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); ++ return false; ++ ++ case IF_THEN_ELSE: ++ *total = COSTS_NARROW_INSNS (1); ++ return false; ++ ++ case COMPARE: ++ if (cc_register (XEXP (x, 0), VOIDmode)) ++ *total = 0; ++ else ++ *total = COSTS_NARROW_INSNS (1); ++ return false; + +- default: +- *total += COSTS_N_INSNS (2); +- } +- } ++ case ABS: ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ *total = COSTS_WIDE_INSNS (1); ++ else ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)) * 2; ++ return false; + +- if (mode == DImode) +- *total += COSTS_N_INSNS (1); ++ case SIGN_EXTEND: ++ if (GET_MODE_SIZE (mode) <= 4) ++ *total = GET_CODE (XEXP (x, 0)) == MEM ? 0 : COSTS_NARROW_INSNS (1); ++ else ++ *total = COSTS_NARROW_INSNS (1) ++ + COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); ++ return false; + ++ case ZERO_EXTEND: ++ if (GET_MODE_SIZE (mode) > 4) ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode) - 1); ++ else if (GET_CODE (XEXP (x, 0)) == MEM) ++ *total = 0; ++ else ++ *total = COSTS_NARROW_INSNS (1); + return false; + + case CONST_INT: +- if (const_ok_for_arm (INTVAL (x))) +- *total = COSTS_N_INSNS (outer_code == SET ? 1 : 0); +- else if (const_ok_for_arm (~INTVAL (x))) +- *total = COSTS_N_INSNS (outer_code == AND ? 0 : 1); +- else if (const_ok_for_arm (-INTVAL (x))) +- { +- if (outer_code == COMPARE || outer_code == PLUS +- || outer_code == MINUS) ++ { ++ HOST_WIDE_INT cst = INTVAL (x); ++ ++ switch (outer_code) ++ { ++ case PLUS: ++ if (cst > -256 && cst < 256) ++ *total = 0; ++ else ++ /* See note about optabs below. */ ++ *total = COSTS_N_INSNS (1); ++ return true; ++ ++ case MINUS: ++ case COMPARE: ++ if (cst >= 0 && cst < 256) ++ *total = 0; ++ else ++ /* See note about optabs below. */ ++ *total = COSTS_N_INSNS (1); ++ return true; ++ ++ case ASHIFT: ++ case ASHIFTRT: ++ case LSHIFTRT: + *total = 0; +- else ++ return true; ++ ++ default: ++ /* Constants are compared explicitly against COSTS_N_INSNS (1) in ++ optabs.c, creating an alternative, larger code sequence for more ++ expensive constants). So, it doesn't pay to make some constants ++ cost more than this. */ + *total = COSTS_N_INSNS (1); +- } +- else +- *total = COSTS_N_INSNS (2); +- return true; ++ } ++ return true; ++ } + + case CONST: + case LABEL_REF: + case SYMBOL_REF: +- *total = COSTS_N_INSNS (2); ++ *total = COSTS_WIDE_INSNS (2); + return true; + + case CONST_DOUBLE: +- *total = COSTS_N_INSNS (4); ++ *total = COSTS_WIDE_INSNS (4); ++ return true; ++ ++ case CONST_VECTOR: ++ if (TARGET_NEON ++ && TARGET_HARD_FLOAT ++ && outer_code == SET ++ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)) ++ && neon_immediate_valid_for_move (x, mode, NULL, NULL)) ++ *total = COSTS_WIDE_INSNS (1); ++ else ++ *total = COSTS_WIDE_INSNS (4); + return true; + + case HIGH: + case LO_SUM: + /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the + cost of these slightly. */ +- *total = COSTS_N_INSNS (1) + 1; ++ *total = COSTS_WIDE_INSNS (1) + 1; + return true; + + default: + if (mode != VOIDmode) +- *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); ++ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode)); + else +- *total = COSTS_N_INSNS (4); /* How knows? */ ++ /* A guess (inherited from arm_size_rtx_costs). */ ++ *total = COSTS_WIDE_INSNS (4); + return false; + } ++ ++ return true; ++#undef THUMB2_LIBCALL_COST ++#undef COSTS_WIDE_INSNS ++#undef COSTS_NARROW_INSNS + } + + /* RTX costs when optimizing for size. */ +@@ -5825,7 +7510,12 @@ + bool speed) + { + if (!speed) +- return arm_size_rtx_costs (x, code, outer_code, total); ++ { ++ if (TARGET_THUMB2) ++ return thumb2_size_rtx_costs (x, code, outer_code, total); ++ else ++ return arm_size_rtx_costs (x, code, outer_code, total); ++ } + else + return all_cores[(int)arm_tune].rtx_costs (x, code, outer_code, total, + speed); +@@ -5950,7 +7640,9 @@ + + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -6107,7 +7799,9 @@ + + if (GET_MODE_CLASS (mode) == MODE_FLOAT) + { +- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode)) ++ if (TARGET_HARD_FLOAT ++ && (mode == SFmode ++ || (mode == DFmode && !TARGET_VFP_SINGLE))) + { + *total = COSTS_N_INSNS (1); + return false; +@@ -6453,11 +8147,14 @@ + vmov i64 17 aaaaaaaa bbbbbbbb cccccccc dddddddd + eeeeeeee ffffffff gggggggg hhhhhhhh + vmov f32 18 aBbbbbbc defgh000 00000000 00000000 ++ vmov f32 19 00000000 00000000 00000000 00000000 + + For case 18, B = !b. Representable values are exactly those accepted by + vfp3_const_double_index, but are output as floating-point numbers rather + than indices. + ++ For case 19, we will change it to vmov.i32 when assembling. ++ + Variants 0-5 (inclusive) may also be used as immediates for the second + operand of VORR/VBIC instructions. + +@@ -6500,7 +8197,7 @@ + rtx el0 = CONST_VECTOR_ELT (op, 0); + REAL_VALUE_TYPE r0; + +- if (!vfp3_const_double_rtx (el0)) ++ if (!vfp3_const_double_rtx (el0) && el0 != CONST0_RTX (GET_MODE (el0))) + return -1; + + REAL_VALUE_FROM_CONST_DOUBLE (r0, el0); +@@ -6522,7 +8219,10 @@ + if (elementwidth) + *elementwidth = 0; + +- return 18; ++ if (el0 == CONST0_RTX (GET_MODE (el0))) ++ return 19; ++ else ++ return 18; + } + + /* Splat vector constant out into a byte vector. */ +@@ -6753,25 +8453,198 @@ + } + } + +-/* Initialize a vector with non-constant elements. FIXME: We can do better +- than the current implementation (building a vector on the stack and then +- loading it) in many cases. See rs6000.c. */ ++/* If VALS is a vector constant that can be loaded into a register ++ using VDUP, generate instructions to do so and return an RTX to ++ assign to the register. Otherwise return NULL_RTX. */ ++ ++static rtx ++neon_vdup_constant (rtx vals) ++{ ++ enum machine_mode mode = GET_MODE (vals); ++ enum machine_mode inner_mode = GET_MODE_INNER (mode); ++ int n_elts = GET_MODE_NUNITS (mode); ++ bool all_same = true; ++ rtx x; ++ int i; ++ ++ if (GET_CODE (vals) != CONST_VECTOR || GET_MODE_SIZE (inner_mode) > 4) ++ return NULL_RTX; ++ ++ for (i = 0; i < n_elts; ++i) ++ { ++ x = XVECEXP (vals, 0, i); ++ if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0))) ++ all_same = false; ++ } ++ ++ if (!all_same) ++ /* The elements are not all the same. We could handle repeating ++ patterns of a mode larger than INNER_MODE here (e.g. int8x8_t ++ {0, C, 0, C, 0, C, 0, C} which can be loaded using ++ vdup.i16). */ ++ return NULL_RTX; ++ ++ /* We can load this constant by using VDUP and a constant in a ++ single ARM register. This will be cheaper than a vector ++ load. */ ++ ++ x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0)); ++ return gen_rtx_VEC_DUPLICATE (mode, x); ++} ++ ++/* Generate code to load VALS, which is a PARALLEL containing only ++ constants (for vec_init) or CONST_VECTOR, efficiently into a ++ register. Returns an RTX to copy into the register, or NULL_RTX ++ for a PARALLEL that can not be converted into a CONST_VECTOR. */ ++ ++rtx ++neon_make_constant (rtx vals) ++{ ++ enum machine_mode mode = GET_MODE (vals); ++ rtx target; ++ rtx const_vec = NULL_RTX; ++ int n_elts = GET_MODE_NUNITS (mode); ++ int n_const = 0; ++ int i; ++ ++ if (GET_CODE (vals) == CONST_VECTOR) ++ const_vec = vals; ++ else if (GET_CODE (vals) == PARALLEL) ++ { ++ /* A CONST_VECTOR must contain only CONST_INTs and ++ CONST_DOUBLEs, but CONSTANT_P allows more (e.g. SYMBOL_REF). ++ Only store valid constants in a CONST_VECTOR. */ ++ for (i = 0; i < n_elts; ++i) ++ { ++ rtx x = XVECEXP (vals, 0, i); ++ if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE) ++ n_const++; ++ } ++ if (n_const == n_elts) ++ const_vec = gen_rtx_CONST_VECTOR (mode, XVEC (vals, 0)); ++ } ++ else ++ gcc_unreachable (); ++ ++ if (const_vec != NULL ++ && neon_immediate_valid_for_move (const_vec, mode, NULL, NULL)) ++ /* Load using VMOV. On Cortex-A8 this takes one cycle. */ ++ return const_vec; ++ else if ((target = neon_vdup_constant (vals)) != NULL_RTX) ++ /* Loaded using VDUP. On Cortex-A8 the VDUP takes one NEON ++ pipeline cycle; creating the constant takes one or two ARM ++ pipeline cycles. */ ++ return target; ++ else if (const_vec != NULL_RTX) ++ /* Load from constant pool. On Cortex-A8 this takes two cycles ++ (for either double or quad vectors). We can not take advantage ++ of single-cycle VLD1 because we need a PC-relative addressing ++ mode. */ ++ return const_vec; ++ else ++ /* A PARALLEL containing something not valid inside CONST_VECTOR. ++ We can not construct an initializer. */ ++ return NULL_RTX; ++} ++ ++/* Initialize vector TARGET to VALS. */ + + void + neon_expand_vector_init (rtx target, rtx vals) + { + enum machine_mode mode = GET_MODE (target); +- enum machine_mode inner = GET_MODE_INNER (mode); +- unsigned int i, n_elts = GET_MODE_NUNITS (mode); +- rtx mem; ++ enum machine_mode inner_mode = GET_MODE_INNER (mode); ++ int n_elts = GET_MODE_NUNITS (mode); ++ int n_var = 0, one_var = -1; ++ bool all_same = true; ++ rtx x, mem; ++ int i; ++ ++ for (i = 0; i < n_elts; ++i) ++ { ++ x = XVECEXP (vals, 0, i); ++ if (!CONSTANT_P (x)) ++ ++n_var, one_var = i; ++ ++ if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0))) ++ all_same = false; ++ } ++ ++ if (n_var == 0) ++ { ++ rtx constant = neon_make_constant (vals); ++ if (constant != NULL_RTX) ++ { ++ emit_move_insn (target, constant); ++ return; ++ } ++ } ++ ++ /* Splat a single non-constant element if we can. */ ++ if (all_same && GET_MODE_SIZE (inner_mode) <= 4) ++ { ++ x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0)); ++ emit_insn (gen_rtx_SET (VOIDmode, target, ++ gen_rtx_VEC_DUPLICATE (mode, x))); ++ return; ++ } + +- gcc_assert (VECTOR_MODE_P (mode)); ++ /* One field is non-constant. Load constant then overwrite varying ++ field. This is more efficient than using the stack. */ ++ if (n_var == 1) ++ { ++ rtx copy = copy_rtx (vals); ++ rtx index = GEN_INT (one_var); ++ ++ /* Load constant part of vector, substitute neighboring value for ++ varying element. */ ++ XVECEXP (copy, 0, one_var) = XVECEXP (vals, 0, (one_var + 1) % n_elts); ++ neon_expand_vector_init (target, copy); ++ ++ /* Insert variable. */ ++ x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, one_var)); ++ switch (mode) ++ { ++ case V8QImode: ++ emit_insn (gen_neon_vset_lanev8qi (target, x, target, index)); ++ break; ++ case V16QImode: ++ emit_insn (gen_neon_vset_lanev16qi (target, x, target, index)); ++ break; ++ case V4HImode: ++ emit_insn (gen_neon_vset_lanev4hi (target, x, target, index)); ++ break; ++ case V8HImode: ++ emit_insn (gen_neon_vset_lanev8hi (target, x, target, index)); ++ break; ++ case V2SImode: ++ emit_insn (gen_neon_vset_lanev2si (target, x, target, index)); ++ break; ++ case V4SImode: ++ emit_insn (gen_neon_vset_lanev4si (target, x, target, index)); ++ break; ++ case V2SFmode: ++ emit_insn (gen_neon_vset_lanev2sf (target, x, target, index)); ++ break; ++ case V4SFmode: ++ emit_insn (gen_neon_vset_lanev4sf (target, x, target, index)); ++ break; ++ case V2DImode: ++ emit_insn (gen_neon_vset_lanev2di (target, x, target, index)); ++ break; ++ default: ++ gcc_unreachable (); ++ } ++ return; ++ } + ++ /* Construct the vector in memory one field at a time ++ and load the whole vector. */ + mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0); + for (i = 0; i < n_elts; i++) +- emit_move_insn (adjust_address_nv (mem, inner, i * GET_MODE_SIZE (inner)), +- XVECEXP (vals, 0, i)); +- ++ emit_move_insn (adjust_address_nv (mem, inner_mode, ++ i * GET_MODE_SIZE (inner_mode)), ++ XVECEXP (vals, 0, i)); + emit_move_insn (target, mem); + } + +@@ -6930,10 +8803,13 @@ + } + + /* Return TRUE if OP is a memory operand which we can load or store a vector +- to/from. If CORE is true, we're moving from ARM registers not Neon +- registers. */ ++ to/from. TYPE is one of the following values: ++ 0 - Vector load/stor (vldr) ++ 1 - Core registers (ldm) ++ 2 - Element/structure loads (vld1) ++ */ + int +-neon_vector_mem_operand (rtx op, bool core) ++neon_vector_mem_operand (rtx op, int type) + { + rtx ind; + +@@ -6966,23 +8842,16 @@ + return arm_address_register_rtx_p (ind, 0); + + /* Allow post-increment with Neon registers. */ +- if (!core && GET_CODE (ind) == POST_INC) ++ if ((type != 1 && GET_CODE (ind) == POST_INC) ++ || (type == 0 && GET_CODE (ind) == PRE_DEC)) + return arm_address_register_rtx_p (XEXP (ind, 0), 0); + +-#if 0 +- /* FIXME: We can support this too if we use VLD1/VST1. */ +- if (!core +- && GET_CODE (ind) == POST_MODIFY +- && arm_address_register_rtx_p (XEXP (ind, 0), 0) +- && GET_CODE (XEXP (ind, 1)) == PLUS +- && rtx_equal_p (XEXP (XEXP (ind, 1), 0), XEXP (ind, 0))) +- ind = XEXP (ind, 1); +-#endif ++ /* FIXME: vld1 allows register post-modify. */ + + /* Match: + (plus (reg) + (const)). */ +- if (!core ++ if (type == 0 + && GET_CODE (ind) == PLUS + && GET_CODE (XEXP (ind, 0)) == REG + && REG_MODE_OK_FOR_BASE_P (XEXP (ind, 0), VOIDmode) +@@ -7049,10 +8918,19 @@ + enum reg_class + coproc_secondary_reload_class (enum machine_mode mode, rtx x, bool wb) + { ++ if (mode == HFmode) ++ { ++ if (!TARGET_NEON_FP16) ++ return GENERAL_REGS; ++ if (s_register_operand (x, mode) || neon_vector_mem_operand (x, 2)) ++ return NO_REGS; ++ return GENERAL_REGS; ++ } ++ + if (TARGET_NEON + && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT + || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT) +- && neon_vector_mem_operand (x, FALSE)) ++ && neon_vector_mem_operand (x, 0)) + return NO_REGS; + + if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode)) +@@ -7412,7 +9290,7 @@ + /* Don't accept any offset that will require multiple + instructions to handle, since this would cause the + arith_adjacentmem pattern to output an overlong sequence. */ +- if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) ++ if (!const_ok_for_op (val0, PLUS) || !const_ok_for_op (val1, PLUS)) + return 0; + + /* Don't allow an eliminable register: register elimination can make +@@ -7449,6 +9327,9 @@ + int base_reg = -1; + int i; + ++ if (low_irq_latency) ++ return 0; ++ + /* Can only handle 2, 3, or 4 insns at present, + though could be easily extended if required. */ + gcc_assert (nops >= 2 && nops <= 4); +@@ -7678,6 +9559,9 @@ + int base_reg = -1; + int i; + ++ if (low_irq_latency) ++ return 0; ++ + /* Can only handle 2, 3, or 4 insns at present, though could be easily + extended if required. */ + gcc_assert (nops >= 2 && nops <= 4); +@@ -7885,7 +9769,7 @@ + + As a compromise, we use ldr for counts of 1 or 2 regs, and ldm + for counts of 3 or 4 regs. */ +- if (arm_tune_xscale && count <= 2 && ! optimize_size) ++ if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size)) + { + rtx seq; + +@@ -7948,7 +9832,7 @@ + + /* See arm_gen_load_multiple for discussion of + the pros/cons of ldm/stm usage for XScale. */ +- if (arm_tune_xscale && count <= 2 && ! optimize_size) ++ if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size)) + { + rtx seq; + +@@ -8419,6 +10303,55 @@ + && (rtx_equal_p (XEXP (x, 0), y) || rtx_equal_p (XEXP (x, 1), y))) + return CC_Cmode; + ++ if (GET_MODE (x) == DImode || GET_MODE (y) == DImode) ++ { ++ /* To keep things simple, always use the Cirrus cfcmp64 if it is ++ available. */ ++ if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK) ++ return CCmode; ++ ++ switch (op) ++ { ++ case EQ: ++ case NE: ++ /* A DImode comparison against zero can be implemented by ++ or'ing the two halves together. */ ++ if (y == const0_rtx) ++ return CC_Zmode; ++ ++ /* We can do an equality test in three Thumb instructions. */ ++ if (!TARGET_ARM) ++ return CC_Zmode; ++ ++ /* FALLTHROUGH */ ++ ++ case LTU: ++ case LEU: ++ case GTU: ++ case GEU: ++ /* DImode unsigned comparisons can be implemented by cmp + ++ cmpeq without a scratch register. Not worth doing in ++ Thumb-2. */ ++ if (TARGET_ARM) ++ return CC_CZmode; ++ ++ /* FALLTHROUGH */ ++ ++ case LT: ++ case LE: ++ case GT: ++ case GE: ++ /* DImode signed and unsigned comparisons can be implemented ++ by cmp + sbcs with a scratch register, but that does not ++ set the Z flag - we must reverse GT/LE/GTU/LEU. */ ++ gcc_assert (op != EQ && op != NE); ++ return CC_NCVmode; ++ ++ default: ++ gcc_unreachable (); ++ } ++ } ++ + return CCmode; + } + +@@ -8428,10 +10361,39 @@ + rtx + arm_gen_compare_reg (enum rtx_code code, rtx x, rtx y) + { +- enum machine_mode mode = SELECT_CC_MODE (code, x, y); +- rtx cc_reg = gen_rtx_REG (mode, CC_REGNUM); ++ enum machine_mode mode; ++ rtx cc_reg; ++ int dimode_comparison = GET_MODE (x) == DImode || GET_MODE (y) == DImode; + +- emit_set_insn (cc_reg, gen_rtx_COMPARE (mode, x, y)); ++ /* We might have X as a constant, Y as a register because of the predicates ++ used for cmpdi. If so, force X to a register here. */ ++ if (dimode_comparison && !REG_P (x)) ++ x = force_reg (DImode, x); ++ ++ mode = SELECT_CC_MODE (code, x, y); ++ cc_reg = gen_rtx_REG (mode, CC_REGNUM); ++ ++ if (dimode_comparison ++ && !(TARGET_HARD_FLOAT && TARGET_MAVERICK) ++ && mode != CC_CZmode) ++ { ++ rtx clobber, set; ++ ++ /* To compare two non-zero values for equality, XOR them and ++ then compare against zero. Not used for ARM mode; there ++ CC_CZmode is cheaper. */ ++ if (mode == CC_Zmode && y != const0_rtx) ++ { ++ x = expand_binop (DImode, xor_optab, x, y, NULL_RTX, 0, OPTAB_WIDEN); ++ y = const0_rtx; ++ } ++ /* A scratch register is required. */ ++ clobber = gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (SImode)); ++ set = gen_rtx_SET (VOIDmode, cc_reg, gen_rtx_COMPARE (mode, x, y)); ++ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set, clobber))); ++ } ++ else ++ emit_set_insn (cc_reg, gen_rtx_COMPARE (mode, x, y)); + + return cc_reg; + } +@@ -9566,7 +11528,10 @@ + gcc_assert (GET_CODE (from) != BARRIER); + + /* Count the length of this insn. */ +- count += get_attr_length (from); ++ if (LABEL_P (from) && (align_jumps > 0 || align_loops > 0)) ++ count += MAX (align_jumps, align_loops); ++ else ++ count += get_attr_length (from); + + /* If there is a jump table, add its length. */ + tmp = is_jump_table (from); +@@ -9760,6 +11725,34 @@ + return false; + } + ++/* Return true if it is possible to inline both the high and low parts ++ of a 64-bit constant into 32-bit data processing instructions. */ ++bool ++arm_const_double_by_immediates (rtx val) ++{ ++ enum machine_mode mode = GET_MODE (val); ++ rtx part; ++ ++ if (mode == VOIDmode) ++ mode = DImode; ++ ++ part = gen_highpart_mode (SImode, mode, val); ++ ++ gcc_assert (GET_CODE (part) == CONST_INT); ++ ++ if (!const_ok_for_arm (INTVAL (part))) ++ return false; ++ ++ part = gen_lowpart (SImode, val); ++ ++ gcc_assert (GET_CODE (part) == CONST_INT); ++ ++ if (!const_ok_for_arm (INTVAL (part))) ++ return false; ++ ++ return true; ++} ++ + /* Scan INSN and note any of its operands that need fixing. + If DO_PUSHES is false we do not actually push any of the fixups + needed. The function returns TRUE if any fixups were needed/pushed. +@@ -9878,6 +11871,8 @@ + insn = table; + } + } ++ else if (LABEL_P (insn) && (align_jumps > 0 || align_loops > 0)) ++ address += MAX (align_jumps, align_loops); + } + + fix = minipool_fix_head; +@@ -10083,6 +12078,21 @@ + vfp_output_fldmd (FILE * stream, unsigned int base, int reg, int count) + { + int i; ++ int offset; ++ ++ if (low_irq_latency) ++ { ++ /* Output a sequence of FLDD instructions. */ ++ offset = 0; ++ for (i = reg; i < reg + count; ++i, offset += 8) ++ { ++ fputc ('\t', stream); ++ asm_fprintf (stream, "fldd\td%d, [%r,#%d]\n", i, base, offset); ++ } ++ asm_fprintf (stream, "\tadd\tsp, sp, #%d\n", count * 8); ++ return; ++ } ++ + + /* Workaround ARM10 VFPr1 bug. */ + if (count == 2 && !arm_arch6) +@@ -10153,6 +12163,56 @@ + rtx tmp, reg; + int i; + ++ if (low_irq_latency) ++ { ++ int saved_size; ++ rtx sp_insn; ++ ++ if (!count) ++ return 0; ++ ++ saved_size = count * GET_MODE_SIZE (DFmode); ++ ++ /* Since fstd does not have postdecrement addressing mode, ++ we first decrement stack pointer and then use base+offset ++ stores for VFP registers. The ARM EABI unwind information ++ can't easily describe base+offset loads, so we attach ++ a note for the effects of the whole block in the first insn, ++ and avoid marking the subsequent instructions ++ with RTX_FRAME_RELATED_P. */ ++ sp_insn = gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, ++ GEN_INT (-saved_size)); ++ sp_insn = emit_insn (sp_insn); ++ RTX_FRAME_RELATED_P (sp_insn) = 1; ++ ++ dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (count + 1)); ++ XVECEXP (dwarf, 0, 0) = ++ gen_rtx_SET (VOIDmode, stack_pointer_rtx, ++ plus_constant (stack_pointer_rtx, -saved_size)); ++ ++ /* push double VFP registers to stack */ ++ for (i = 0; i < count; ++i ) ++ { ++ rtx reg; ++ rtx mem; ++ rtx addr; ++ rtx insn; ++ reg = gen_rtx_REG (DFmode, base_reg + 2*i); ++ addr = (i == 0) ? stack_pointer_rtx ++ : gen_rtx_PLUS (SImode, stack_pointer_rtx, ++ GEN_INT (i * GET_MODE_SIZE (DFmode))); ++ mem = gen_frame_mem (DFmode, addr); ++ insn = emit_move_insn (mem, reg); ++ XVECEXP (dwarf, 0, i+1) = ++ gen_rtx_SET (VOIDmode, mem, reg); ++ } ++ ++ REG_NOTES (sp_insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf, ++ REG_NOTES (sp_insn)); ++ ++ return saved_size; ++ } ++ + /* Workaround ARM10 VFPr1 bug. Data corruption can occur when exactly two + register pairs are stored by a store multiple insn. We avoid this + by pushing an extra pair. */ +@@ -10703,13 +12763,13 @@ + { + if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY) + { +- output_asm_insn ("ldr%?\t%0, [%1, %2]!", otherops); +- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops); ++ output_asm_insn ("str%?\t%0, [%1, %2]!", otherops); ++ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops); + } + else + { +- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops); +- output_asm_insn ("ldr%?\t%0, [%1], %2", otherops); ++ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops); ++ output_asm_insn ("str%?\t%0, [%1], %2", otherops); + } + } + else if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY) +@@ -10767,7 +12827,7 @@ + } + + /* Output a move, load or store for quad-word vectors in ARM registers. Only +- handles MEMs accepted by neon_vector_mem_operand with CORE=true. */ ++ handles MEMs accepted by neon_vector_mem_operand with TYPE=1. */ + + const char * + output_move_quad (rtx *operands) +@@ -10963,6 +13023,12 @@ + ops[1] = reg; + break; + ++ case PRE_DEC: ++ templ = "v%smdb%%?\t%%0!, %%h1"; ++ ops[0] = XEXP (addr, 0); ++ ops[1] = reg; ++ break; ++ + case POST_MODIFY: + /* FIXME: Not currently enabled in neon_vector_mem_operand. */ + gcc_unreachable (); +@@ -11012,6 +13078,57 @@ + return ""; + } + ++/* Compute and return the length of neon_mov, where is ++ one of VSTRUCT modes: EI, OI, CI or XI. */ ++int ++arm_attr_length_move_neon (rtx insn) ++{ ++ rtx reg, mem, addr; ++ int regno, load; ++ enum machine_mode mode; ++ ++ extract_insn_cached (insn); ++ ++ if (REG_P (recog_data.operand[0]) && REG_P (recog_data.operand[1])) ++ { ++ mode = GET_MODE (recog_data.operand[0]); ++ switch (mode) ++ { ++ case EImode: ++ case OImode: ++ return 8; ++ case CImode: ++ return 12; ++ case XImode: ++ return 16; ++ default: ++ gcc_unreachable (); ++ } ++ } ++ ++ load = REG_P (recog_data.operand[0]); ++ reg = recog_data.operand[!load]; ++ mem = recog_data.operand[load]; ++ ++ gcc_assert (MEM_P (mem)); ++ ++ mode = GET_MODE (reg); ++ regno = REGNO (reg); ++ addr = XEXP (mem, 0); ++ ++ /* Strip off const from addresses like (const (plus (...))). */ ++ if (GET_CODE (addr) == CONST && GET_CODE (XEXP (addr, 0)) == PLUS) ++ addr = XEXP (addr, 0); ++ ++ if (GET_CODE (addr) == LABEL_REF || GET_CODE (addr) == PLUS) ++ { ++ int insns = HARD_REGNO_NREGS (REGNO (reg), mode) / 2; ++ return insns * 4; ++ } ++ else ++ return 4; ++} ++ + /* Output an ADD r, s, #n where n may be too big for one instruction. + If adding zero to one register, output nothing. */ + const char * +@@ -11318,6 +13435,20 @@ + && crtl->uses_pic_offset_table) + save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM; + } ++ else if (IS_VOLATILE(func_type)) ++ { ++ /* For noreturn functions we historically omitted register saves ++ altogether. However this really messes up debugging. As a ++ compromise save just the fame pointers. Combined with the link ++ register saved elsewhere this should be sufficient to get ++ a backtrace. */ ++ if (frame_pointer_needed) ++ save_reg_mask |= 1 << HARD_FRAME_POINTER_REGNUM; ++ if (df_regs_ever_live_p (ARM_HARD_FRAME_POINTER_REGNUM)) ++ save_reg_mask |= 1 << ARM_HARD_FRAME_POINTER_REGNUM; ++ if (df_regs_ever_live_p (THUMB_HARD_FRAME_POINTER_REGNUM)) ++ save_reg_mask |= 1 << THUMB_HARD_FRAME_POINTER_REGNUM; ++ } + else + { + /* In the normal case we only need to save those registers +@@ -11404,11 +13535,6 @@ + | (1 << LR_REGNUM) + | (1 << PC_REGNUM); + +- /* Volatile functions do not return, so there +- is no need to save any other registers. */ +- if (IS_VOLATILE (func_type)) +- return save_reg_mask; +- + save_reg_mask |= arm_compute_save_reg0_reg12_mask (); + + /* Decide if we need to save the link register. +@@ -11566,7 +13692,7 @@ + if (count > 0) + { + /* Workaround ARM10 VFPr1 bug. */ +- if (count == 2 && !arm_arch6) ++ if (count == 2 && !arm_arch6 && !low_irq_latency) + count++; + saved += count * 8; + } +@@ -11706,8 +13832,10 @@ + sprintf (instr, "ldm%sfd\t%%|sp, {", conditional); + } + } +- else ++ else if (TARGET_ARM) + sprintf (instr, "ldm%sfd\t%%|sp!, {", conditional); ++ else ++ sprintf (instr, "pop\t{"); + + p = instr + strlen (instr); + +@@ -11895,6 +14023,41 @@ + return_used_this_function = 0; + } + ++/* Generate to STREAM a code sequence that pops registers identified ++ in REGS_MASK from SP. SP is incremented as the result. ++*/ ++static void ++print_pop_reg_by_ldr (FILE *stream, int regs_mask, int rfe) ++{ ++ int reg; ++ ++ gcc_assert (! (regs_mask & (1 << SP_REGNUM))); ++ ++ for (reg = 0; reg < PC_REGNUM; ++reg) ++ if (regs_mask & (1 << reg)) ++ asm_fprintf (stream, "\tldr\t%r, [%r], #4\n", ++ reg, SP_REGNUM); ++ ++ if (regs_mask & (1 << PC_REGNUM)) ++ { ++ if (rfe) ++ /* When returning from exception, we need to ++ copy SPSR to CPSR. There are two ways to do ++ that: the ldm instruction with "^" suffix, ++ and movs instruction. The latter would ++ require that we load from stack to some ++ scratch register, and then move to PC. ++ Therefore, we'd need extra instruction and ++ have to make sure we actually have a spare ++ register. Using ldm with a single register ++ is simler. */ ++ asm_fprintf (stream, "\tldm\tsp!, {pc}^\n"); ++ else ++ asm_fprintf (stream, "\tldr\t%r, [%r], #4\n", ++ PC_REGNUM, SP_REGNUM); ++ } ++} ++ + const char * + arm_output_epilogue (rtx sibling) + { +@@ -11955,7 +14118,7 @@ + /* This variable is for the Virtual Frame Pointer, not VFP regs. */ + int vfp_offset = offsets->frame; + +- if (arm_fpu_arch == FPUTYPE_FPA_EMU2) ++ if (TARGET_FPA_EMU2) + { + for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--) + if (df_regs_ever_live_p (reg) && !call_used_regs[reg]) +@@ -12179,7 +14342,7 @@ + SP_REGNUM, HARD_FRAME_POINTER_REGNUM); + } + +- if (arm_fpu_arch == FPUTYPE_FPA_EMU2) ++ if (TARGET_FPA_EMU2) + { + for (reg = FIRST_FPA_REGNUM; reg <= LAST_FPA_REGNUM; reg++) + if (df_regs_ever_live_p (reg) && !call_used_regs[reg]) +@@ -12220,24 +14383,29 @@ + + if (TARGET_HARD_FLOAT && TARGET_VFP) + { +- start_reg = FIRST_VFP_REGNUM; +- for (reg = FIRST_VFP_REGNUM; reg < LAST_VFP_REGNUM; reg += 2) ++ int end_reg = LAST_VFP_REGNUM + 1; ++ ++ /* Scan the registers in reverse order. We need to match ++ any groupings made in the prologue and generate matching ++ pop operations. */ ++ for (reg = LAST_VFP_REGNUM - 1; reg >= FIRST_VFP_REGNUM; reg -= 2) + { + if ((!df_regs_ever_live_p (reg) || call_used_regs[reg]) +- && (!df_regs_ever_live_p (reg + 1) || call_used_regs[reg + 1])) ++ && (!df_regs_ever_live_p (reg + 1) ++ || call_used_regs[reg + 1])) + { +- if (start_reg != reg) ++ if (end_reg > reg + 2) + vfp_output_fldmd (f, SP_REGNUM, +- (start_reg - FIRST_VFP_REGNUM) / 2, +- (reg - start_reg) / 2); +- start_reg = reg + 2; ++ (reg + 2 - FIRST_VFP_REGNUM) / 2, ++ (end_reg - (reg + 2)) / 2); ++ end_reg = reg; + } + } +- if (start_reg != reg) +- vfp_output_fldmd (f, SP_REGNUM, +- (start_reg - FIRST_VFP_REGNUM) / 2, +- (reg - start_reg) / 2); ++ if (end_reg > reg + 2) ++ vfp_output_fldmd (f, SP_REGNUM, 0, ++ (end_reg - (reg + 2)) / 2); + } ++ + if (TARGET_IWMMXT) + for (reg = FIRST_IWMMXT_REGNUM; reg <= LAST_IWMMXT_REGNUM; reg++) + if (df_regs_ever_live_p (reg) && !call_used_regs[reg]) +@@ -12263,22 +14431,19 @@ + to load use the LDR instruction - it is faster. For Thumb-2 + always use pop and the assembler will pick the best instruction.*/ + if (TARGET_ARM && saved_regs_mask == (1 << LR_REGNUM) +- && !IS_INTERRUPT(func_type)) ++ && !IS_INTERRUPT (func_type)) + { + asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM); + } + else if (saved_regs_mask) + { +- if (saved_regs_mask & (1 << SP_REGNUM)) +- /* Note - write back to the stack register is not enabled +- (i.e. "ldmfd sp!..."). We know that the stack pointer is +- in the list of registers and if we add writeback the +- instruction becomes UNPREDICTABLE. */ +- print_multi_reg (f, "ldmfd\t%r, ", SP_REGNUM, saved_regs_mask, +- rfe); +- else if (TARGET_ARM) +- print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask, +- rfe); ++ gcc_assert ( ! (saved_regs_mask & (1 << SP_REGNUM))); ++ if (TARGET_ARM) ++ if (low_irq_latency) ++ print_pop_reg_by_ldr (f, saved_regs_mask, rfe); ++ else ++ print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask, ++ rfe); + else + print_multi_reg (f, "pop\t", SP_REGNUM, saved_regs_mask, 0); + } +@@ -12399,6 +14564,32 @@ + + gcc_assert (num_regs && num_regs <= 16); + ++ if (low_irq_latency) ++ { ++ rtx insn = 0; ++ ++ /* Emit a series of ldr instructions rather rather than a single ldm. */ ++ /* TODO: Use ldrd where possible. */ ++ gcc_assert (! (mask & (1 << SP_REGNUM))); ++ ++ for (i = LAST_ARM_REGNUM; i >= 0; --i) ++ { ++ if (mask & (1 << i)) ++ ++ { ++ rtx reg, where, mem; ++ ++ reg = gen_rtx_REG (SImode, i); ++ where = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx); ++ mem = gen_rtx_MEM (SImode, where); ++ insn = emit_move_insn (mem, reg); ++ RTX_FRAME_RELATED_P (insn) = 1; ++ } ++ } ++ ++ return insn; ++ } ++ + /* We don't record the PC in the dwarf frame information. */ + num_dwarf_regs = num_regs; + if (mask & (1 << PC_REGNUM)) +@@ -12747,22 +14938,23 @@ + { + int reg = -1; + +- for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++) +- { +- if ((offsets->saved_regs_mask & (1 << i)) == 0) +- { +- reg = i; +- break; +- } +- } +- +- if (reg == -1 && arm_size_return_regs () <= 12 +- && !crtl->tail_call_emit) ++ /* If it is safe to use r3, then do so. This sometimes ++ generates better code on Thumb-2 by avoiding the need to ++ use 32-bit push/pop instructions. */ ++ if (!crtl->tail_call_emit ++ && arm_size_return_regs () <= 12) + { +- /* Push/pop an argument register (r3) if all callee saved +- registers are already being pushed. */ + reg = 3; + } ++ else ++ for (i = 4; i <= (TARGET_THUMB1 ? LAST_LO_REGNUM : 11); i++) ++ { ++ if ((offsets->saved_regs_mask & (1 << i)) == 0) ++ { ++ reg = i; ++ break; ++ } ++ } + + if (reg != -1) + { +@@ -12886,7 +15078,7 @@ + + /* Save any floating point call-saved registers used by this + function. */ +- if (arm_fpu_arch == FPUTYPE_FPA_EMU2) ++ if (TARGET_FPA_EMU2) + { + for (reg = LAST_FPA_REGNUM; reg >= FIRST_FPA_REGNUM; reg--) + if (df_regs_ever_live_p (reg) && !call_used_regs[reg]) +@@ -13430,6 +15622,7 @@ + fprintf (stream, HOST_WIDE_INT_PRINT_DEC, INTVAL (x)); + break; + ++ case CONST: + case SYMBOL_REF: + output_addr_const (stream, x); + break; +@@ -13493,7 +15686,11 @@ + { + fprintf (stream, ", %s ", shift); + if (val == -1) +- arm_print_operand (stream, XEXP (x, 1), 0); ++ { ++ arm_print_operand (stream, XEXP (x, 1), 0); ++ if (janus2_code) ++ fprintf(stream, "\n\tnop"); ++ } + else + fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, val); + } +@@ -13526,8 +15723,18 @@ + the value being loaded is big-wordian or little-wordian. The + order of the two register loads can matter however, if the address + of the memory location is actually held in one of the registers +- being overwritten by the load. */ ++ being overwritten by the load. ++ ++ The 'Q' and 'R' constraints are also available for 64-bit ++ constants. */ + case 'Q': ++ if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE) ++ { ++ rtx part = gen_lowpart (SImode, x); ++ fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, INTVAL (part)); ++ return; ++ } ++ + if (GET_CODE (x) != REG || REGNO (x) > LAST_ARM_REGNUM) + { + output_operand_lossage ("invalid operand for code '%c'", code); +@@ -13538,6 +15745,18 @@ + return; + + case 'R': ++ if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE) ++ { ++ enum machine_mode mode = GET_MODE (x); ++ rtx part; ++ ++ if (mode == VOIDmode) ++ mode = DImode; ++ part = gen_highpart_mode (SImode, mode, x); ++ fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, INTVAL (part)); ++ return; ++ } ++ + if (GET_CODE (x) != REG || REGNO (x) > LAST_ARM_REGNUM) + { + output_operand_lossage ("invalid operand for code '%c'", code); +@@ -13714,6 +15933,30 @@ + } + return; + ++ /* Print the high single-precision register of a VFP double-precision ++ register. */ ++ case 'p': ++ { ++ int mode = GET_MODE (x); ++ int regno; ++ ++ if (GET_MODE_SIZE (mode) != 8 || GET_CODE (x) != REG) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ regno = REGNO (x); ++ if (!VFP_REGNO_OK_FOR_DOUBLE (regno)) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ fprintf (stream, "s%d", regno - FIRST_VFP_REGNUM + 1); ++ } ++ return; ++ + /* Print a VFP/Neon double precision or quad precision register name. */ + case 'P': + case 'q': +@@ -13831,6 +16074,81 @@ + } + return; + ++ /* Memory operand for vld1/vst1 instruction. */ ++ case 'A': ++ { ++ rtx addr; ++ bool postinc = FALSE; ++ unsigned align; ++ ++ gcc_assert (GET_CODE (x) == MEM); ++ addr = XEXP (x, 0); ++ if (GET_CODE (addr) == POST_INC) ++ { ++ postinc = 1; ++ addr = XEXP (addr, 0); ++ } ++ align = MEM_ALIGN (x) >> 3; ++ asm_fprintf (stream, "[%r", REGNO (addr)); ++ if (align > GET_MODE_SIZE (GET_MODE (x))) ++ align = GET_MODE_SIZE (GET_MODE (x)); ++ if (align >= 8) ++ asm_fprintf (stream, ", :%d", align << 3); ++ asm_fprintf (stream, "]"); ++ if (postinc) ++ fputs("!", stream); ++ } ++ return; ++ ++ /* Translate an S register number into a D register number and element index. */ ++ case 'y': ++ { ++ int mode = GET_MODE (x); ++ int regno; ++ ++ if (GET_MODE_SIZE (mode) != 4 || GET_CODE (x) != REG) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ regno = REGNO (x); ++ if (!VFP_REGNO_OK_FOR_SINGLE (regno)) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ regno = regno - FIRST_VFP_REGNUM; ++ fprintf (stream, "d%d[%d]", regno / 2, regno % 2); ++ } ++ return; ++ ++ /* Register specifier for vld1.16/vst1.16. Translate the S register ++ number into a D register number and element index. */ ++ case 'z': ++ { ++ int mode = GET_MODE (x); ++ int regno; ++ ++ if (GET_MODE_SIZE (mode) != 2 || GET_CODE (x) != REG) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ regno = REGNO (x); ++ if (!VFP_REGNO_OK_FOR_SINGLE (regno)) ++ { ++ output_operand_lossage ("invalid operand for code '%c'", code); ++ return; ++ } ++ ++ regno = regno - FIRST_VFP_REGNUM; ++ fprintf (stream, "d%d[%d]", regno/2, ((regno % 2) ? 2 : 0)); ++ } ++ return; ++ + default: + if (x == 0) + { +@@ -13864,6 +16182,12 @@ + default: + gcc_assert (GET_CODE (x) != NEG); + fputc ('#', stream); ++ if (GET_CODE (x) == HIGH) ++ { ++ fputs (":lower16:", stream); ++ x = XEXP (x, 0); ++ } ++ + output_addr_const (stream, x); + break; + } +@@ -14133,6 +16457,28 @@ + default: gcc_unreachable (); + } + ++ case CC_CZmode: ++ switch (comp_code) ++ { ++ case NE: return ARM_NE; ++ case EQ: return ARM_EQ; ++ case GEU: return ARM_CS; ++ case GTU: return ARM_HI; ++ case LEU: return ARM_LS; ++ case LTU: return ARM_CC; ++ default: gcc_unreachable (); ++ } ++ ++ case CC_NCVmode: ++ switch (comp_code) ++ { ++ case GE: return ARM_GE; ++ case LT: return ARM_LT; ++ case GEU: return ARM_CS; ++ case LTU: return ARM_CC; ++ default: gcc_unreachable (); ++ } ++ + case CCmode: + switch (comp_code) + { +@@ -14255,6 +16601,10 @@ + first insn after the following code_label if REVERSE is true. */ + rtx start_insn = insn; + ++ /* Don't do this if we're not considering conditional execution. */ ++ if (TARGET_NO_SINGLE_COND_EXEC) ++ return; ++ + /* If in state 4, check if the target branch is reached, in order to + change back to state 0. */ + if (arm_ccfsm_state == 4) +@@ -14628,6 +16978,11 @@ + if (mode == DFmode) + return VFP_REGNO_OK_FOR_DOUBLE (regno); + ++ /* VFP registers can hold HFmode values, but there is no point in ++ putting them there unless we have hardware conversion insns. */ ++ if (mode == HFmode) ++ return TARGET_FP16 && VFP_REGNO_OK_FOR_SINGLE (regno); ++ + if (TARGET_NEON) + return (VALID_NEON_DREG_MODE (mode) && VFP_REGNO_OK_FOR_DOUBLE (regno)) + || (VALID_NEON_QREG_MODE (mode) +@@ -14647,16 +17002,16 @@ + return mode == SImode; + + if (IS_IWMMXT_REGNUM (regno)) +- return VALID_IWMMXT_REG_MODE (mode); ++ return VALID_IWMMXT_REG_MODE (mode) && mode != SImode; + } + +- /* We allow any value to be stored in the general registers. ++ /* We allow almost any value to be stored in the general registers. + Restrict doubleword quantities to even register pairs so that we can +- use ldrd. Do not allow Neon structure opaque modes in general registers; +- they would use too many. */ ++ use ldrd. Do not allow very large Neon structure opaque modes in ++ general registers; they would use too many. */ + if (regno <= LAST_ARM_REGNUM) + return !(TARGET_LDRD && GET_MODE_SIZE (mode) > 4 && (regno & 1) != 0) +- && !VALID_NEON_STRUCT_MODE (mode); ++ && ARM_NUM_REGS (mode) <= 4; + + if (regno == FRAME_POINTER_REGNUM + || regno == ARG_POINTER_REGNUM) +@@ -16113,6 +18468,15 @@ + } + + static void ++arm_init_fp16_builtins (void) ++{ ++ tree fp16_type = make_node (REAL_TYPE); ++ TYPE_PRECISION (fp16_type) = 16; ++ layout_type (fp16_type); ++ (*lang_hooks.types.register_builtin_type) (fp16_type, "__fp16"); ++} ++ ++static void + arm_init_builtins (void) + { + arm_init_tls_builtins (); +@@ -16122,6 +18486,71 @@ + + if (TARGET_NEON) + arm_init_neon_builtins (); ++ ++ if (arm_fp16_format) ++ arm_init_fp16_builtins (); ++} ++ ++/* Implement TARGET_INVALID_PARAMETER_TYPE. */ ++ ++static const char * ++arm_invalid_parameter_type (const_tree t) ++{ ++ if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16) ++ return N_("function parameters cannot have __fp16 type"); ++ return NULL; ++} ++ ++/* Implement TARGET_INVALID_PARAMETER_TYPE. */ ++ ++static const char * ++arm_invalid_return_type (const_tree t) ++{ ++ if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16) ++ return N_("functions cannot return __fp16 type"); ++ return NULL; ++} ++ ++/* Implement TARGET_PROMOTED_TYPE. */ ++ ++static tree ++arm_promoted_type (const_tree t) ++{ ++ if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16) ++ return float_type_node; ++ return NULL_TREE; ++} ++ ++/* Implement TARGET_CONVERT_TO_TYPE. ++ Specifically, this hook implements the peculiarity of the ARM ++ half-precision floating-point C semantics that requires conversions between ++ __fp16 to or from double to do an intermediate conversion to float. */ ++ ++static tree ++arm_convert_to_type (tree type, tree expr) ++{ ++ tree fromtype = TREE_TYPE (expr); ++ if (!SCALAR_FLOAT_TYPE_P (fromtype) || !SCALAR_FLOAT_TYPE_P (type)) ++ return NULL_TREE; ++ if ((TYPE_PRECISION (fromtype) == 16 && TYPE_PRECISION (type) > 32) ++ || (TYPE_PRECISION (type) == 16 && TYPE_PRECISION (fromtype) > 32)) ++ return convert (type, convert (float_type_node, expr)); ++ return NULL_TREE; ++} ++ ++/* Implement TARGET_SCALAR_MODE_SUPPORTED_P. ++ This simply adds HFmode as a supported mode; even though we don't ++ implement arithmetic on this type directly, it's supported by ++ optabs conversions, much the way the double-word arithmetic is ++ special-cased in the default hook. */ ++ ++static bool ++arm_scalar_mode_supported_p (enum machine_mode mode) ++{ ++ if (mode == HFmode) ++ return (arm_fp16_format != ARM_FP16_FORMAT_NONE); ++ else ++ return default_scalar_mode_supported_p (mode); + } + + /* Errors in the source file can cause expand_expr to return const0_rtx +@@ -17201,6 +19630,7 @@ + unsigned HOST_WIDE_INT mask = 0xff; + int i; + ++ val = val & (unsigned HOST_WIDE_INT)0xffffffffu; + if (val == 0) /* XXX */ + return 0; + +@@ -18288,41 +20718,8 @@ + } + else + { +- int set_float_abi_attributes = 0; +- switch (arm_fpu_arch) +- { +- case FPUTYPE_FPA: +- fpu_name = "fpa"; +- break; +- case FPUTYPE_FPA_EMU2: +- fpu_name = "fpe2"; +- break; +- case FPUTYPE_FPA_EMU3: +- fpu_name = "fpe3"; +- break; +- case FPUTYPE_MAVERICK: +- fpu_name = "maverick"; +- break; +- case FPUTYPE_VFP: +- fpu_name = "vfp"; +- set_float_abi_attributes = 1; +- break; +- case FPUTYPE_VFP3D16: +- fpu_name = "vfpv3-d16"; +- set_float_abi_attributes = 1; +- break; +- case FPUTYPE_VFP3: +- fpu_name = "vfpv3"; +- set_float_abi_attributes = 1; +- break; +- case FPUTYPE_NEON: +- fpu_name = "neon"; +- set_float_abi_attributes = 1; +- break; +- default: +- abort(); +- } +- if (set_float_abi_attributes) ++ fpu_name = arm_fpu_desc->name; ++ if (arm_fp_model == ARM_FP_MODEL_VFP) + { + if (TARGET_HARD_FLOAT) + asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n"); +@@ -18372,6 +20769,11 @@ + val = 6; + asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val); + ++ /* Tag_ABI_FP_16bit_format. */ ++ if (arm_fp16_format) ++ asm_fprintf (asm_out_file, "\t.eabi_attribute 38, %d\n", ++ (int)arm_fp16_format); ++ + if (arm_lang_output_object_attributes_hook) + arm_lang_output_object_attributes_hook(); + } +@@ -18601,6 +21003,23 @@ + return 1; + } + ++/* Emit a fp16 constant appropriately padded to occupy a 4-byte word. ++ HFmode constant pool entries are actually loaded with ldr. */ ++void ++arm_emit_fp16_const (rtx c) ++{ ++ REAL_VALUE_TYPE r; ++ long bits; ++ ++ REAL_VALUE_FROM_CONST_DOUBLE (r, c); ++ bits = real_to_target (NULL, &r, HFmode); ++ if (WORDS_BIG_ENDIAN) ++ assemble_zeros (2); ++ assemble_integer (GEN_INT (bits), 2, BITS_PER_WORD, 1); ++ if (!WORDS_BIG_ENDIAN) ++ assemble_zeros (2); ++} ++ + const char * + arm_output_load_gr (rtx *operands) + { +@@ -18638,19 +21057,24 @@ + that way. */ + + static void +-arm_setup_incoming_varargs (CUMULATIVE_ARGS *cum, ++arm_setup_incoming_varargs (CUMULATIVE_ARGS *pcum, + enum machine_mode mode, + tree type, + int *pretend_size, + int second_time ATTRIBUTE_UNUSED) + { +- int nregs = cum->nregs; +- if (nregs & 1 +- && ARM_DOUBLEWORD_ALIGN +- && arm_needs_doubleword_align (mode, type)) +- nregs++; +- ++ int nregs; ++ + cfun->machine->uses_anonymous_args = 1; ++ if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL) ++ { ++ nregs = pcum->aapcs_ncrn; ++ if ((nregs & 1) && arm_needs_doubleword_align (mode, type)) ++ nregs++; ++ } ++ else ++ nregs = pcum->nregs; ++ + if (nregs < NUM_ARG_REGS) + *pretend_size = (NUM_ARG_REGS - nregs) * UNITS_PER_WORD; + } +@@ -19034,9 +21458,10 @@ + || mode == V16QImode || mode == V4SFmode || mode == V2DImode)) + return true; + +- if ((mode == V2SImode) +- || (mode == V4HImode) +- || (mode == V8QImode)) ++ if ((TARGET_NEON || TARGET_IWMMXT) ++ && ((mode == V2SImode) ++ || (mode == V4HImode) ++ || (mode == V8QImode))) + return true; + + return false; +@@ -19067,9 +21492,14 @@ + if (IS_FPA_REGNUM (regno)) + return (TARGET_AAPCS_BASED ? 96 : 16) + regno - FIRST_FPA_REGNUM; + +- /* FIXME: VFPv3 register numbering. */ + if (IS_VFP_REGNUM (regno)) +- return 64 + regno - FIRST_VFP_REGNUM; ++ { ++ /* See comment in arm_dwarf_register_span. */ ++ if (VFP_REGNO_OK_FOR_SINGLE (regno)) ++ return 64 + regno - FIRST_VFP_REGNUM; ++ else ++ return 256 + (regno - FIRST_VFP_REGNUM) / 2; ++ } + + if (IS_IWMMXT_GR_REGNUM (regno)) + return 104 + regno - FIRST_IWMMXT_GR_REGNUM; +@@ -19080,6 +21510,39 @@ + gcc_unreachable (); + } + ++/* Dwarf models VFPv3 registers as 32 64-bit registers. ++ GCC models tham as 64 32-bit registers, so we need to describe this to ++ the DWARF generation code. Other registers can use the default. */ ++static rtx ++arm_dwarf_register_span(rtx rtl) ++{ ++ unsigned regno; ++ int nregs; ++ int i; ++ rtx p; ++ ++ regno = REGNO (rtl); ++ if (!IS_VFP_REGNUM (regno)) ++ return NULL_RTX; ++ ++ /* The EABI defines two VFP register ranges: ++ 64-95: Legacy VFPv2 numbering for S0-S31 (obsolescent) ++ 256-287: D0-D31 ++ The recommended encodings for s0-s31 is a DW_OP_bit_piece of the ++ corresponding D register. However gdb6.6 does not support this, so ++ we use the legacy encodings. We also use these encodings for D0-D15 ++ for compatibility with older debuggers. */ ++ if (VFP_REGNO_OK_FOR_SINGLE (regno)) ++ return NULL_RTX; ++ ++ nregs = GET_MODE_SIZE (GET_MODE (rtl)) / 8; ++ p = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc(nregs)); ++ regno = (regno - FIRST_VFP_REGNUM) / 2; ++ for (i = 0; i < nregs; i++) ++ XVECEXP (p, 0, i) = gen_rtx_REG (DImode, 256 + regno + i); ++ ++ return p; ++} + + #ifdef TARGET_UNWIND_INFO + /* Emit unwind directives for a store-multiple instruction or stack pointer +@@ -19564,8 +22027,10 @@ + { + case cortexr4: + case cortexr4f: ++ case cortexa5: + case cortexa8: + case cortexa9: ++ case marvell_f: + return 2; + + default: +@@ -19621,7 +22086,7 @@ + && lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type)) + { + static bool warned; +- if (!warned && warn_psabi) ++ if (!warned && warn_psabi && !in_system_header) + { + warned = true; + inform (input_location, +@@ -19630,6 +22095,10 @@ + return "St9__va_list"; + } + ++ /* Half-precision float. */ ++ if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16) ++ return "Dh"; ++ + if (TREE_CODE (type) != VECTOR_TYPE) + return NULL; + +@@ -19686,6 +22155,110 @@ + given on the command line. */ + if (level > 0) + flag_section_anchors = 2; ++ ++ if (size) ++ { ++ /* Select optimizations that are a win for code size. ++ ++ The inlining options set below have two important ++ consequences for functions not explicitly marked ++ inline: ++ - Static functions used once are inlined if ++ sufficiently small. Static functions used twice ++ are not inlined. ++ - Non-static functions are never inlined. ++ So in effect, inlining will never cause two copies ++ of function bodies to be created. */ ++ /* Empirical results show that these options benefit code ++ size on arm. */ ++ /* FIXME: -fsee seems to be broken for Thumb-2. */ ++ /* flag_see = 1; */ ++ flag_move_loop_invariants = 0; ++ /* In Thumb mode the function call code size overhead is typically very ++ small, and narrow branch instructions have very limited range. ++ Inlining even medium sized functions tends to bloat the caller and ++ require the use of long branch instructions. On average the long ++ branches cost more than eliminating the function call overhead saves, ++ so we use extremely restrictive automatic inlining heuristics. In ARM ++ mode the results are fairly neutral, probably due to better constant ++ pool placement. */ ++ set_param_value ("max-inline-insns-single", 1); ++ set_param_value ("max-inline-insns-auto", 1); ++ } ++ else ++ { ++ /* CSL LOCAL */ ++ /* Set flag_unroll_loops to a default value, so that we can tell ++ if it was specified on the command line; see ++ arm_override_options. */ ++ flag_unroll_loops = 2; ++ /* Promote loop indices to int where possible. Consider moving this ++ to -Os, also. */ ++ flag_promote_loop_indices = 1; ++ } ++} ++ ++/* Return how many instructions to look ahead for better insn ++ scheduling. */ ++static int ++arm_multipass_dfa_lookahead (void) ++{ ++ return (arm_tune == marvell_f) ? 4 : 0; ++} ++ ++/* Return the minimum alignment required to load or store a ++ vector of the given type, which may be less than the ++ natural alignment of the type. */ ++ ++static int ++arm_vector_min_alignment (const_tree type) ++{ ++ if (TARGET_NEON) ++ { ++ /* The NEON element load and store instructions only require the ++ alignment of the element type. They can benefit from higher ++ statically reported alignment, but we do not take advantage ++ of that yet. */ ++ gcc_assert (TREE_CODE (type) == VECTOR_TYPE); ++ return TYPE_ALIGN_UNIT (TREE_TYPE (type)); ++ } ++ ++ return default_vector_min_alignment (type); ++} ++ ++static bool ++arm_vector_always_misalign(const_tree type ATTRIBUTE_UNUSED) ++{ ++ /* On big-endian targets array loads (vld1) and vector loads (vldm) ++ use a different format. Always use the "misaligned" array variant. ++ FIXME: this still doesn't work for big-endian because of constant ++ loads and other operations using vldm ordering. See ++ issue 6722. */ ++ return TARGET_NEON && !BYTES_BIG_ENDIAN; ++} ++ ++int ++arm_major_arch (void) ++{ ++ if ((insn_flags & FL_FOR_ARCH6) == FL_FOR_ARCH6) ++ return 6; ++ else if ((insn_flags & FL_FOR_ARCH5) == FL_FOR_ARCH5) ++ return 5; ++ else if ((insn_flags & FL_FOR_ARCH4) == FL_FOR_ARCH4) ++ return 4; ++ else if ((insn_flags & FL_FOR_ARCH3) == FL_FOR_ARCH3) ++ return 3; ++ else if ((insn_flags & FL_FOR_ARCH2) == FL_FOR_ARCH2) ++ return 2; ++ ++ /* This should gives us a nice ICE somewhere. */ ++ return -1; ++} ++ ++bool ++arm_thumb_arch_p (void) ++{ ++ return (insn_flags & FL_THUMB) == FL_THUMB; + } + + #include "gt-arm.h" +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -84,7 +84,17 @@ + if (arm_arch_iwmmxt) \ + builtin_define ("__IWMMXT__"); \ + if (TARGET_AAPCS_BASED) \ +- builtin_define ("__ARM_EABI__"); \ ++ { \ ++ if (arm_pcs_default == ARM_PCS_AAPCS_VFP) \ ++ builtin_define ("__ARM_PCS_VFP"); \ ++ else if (arm_pcs_default == ARM_PCS_AAPCS) \ ++ builtin_define ("__ARM_PCS"); \ ++ builtin_define ("__ARM_EABI__"); \ ++ } \ ++ if (arm_tune_marvell_f) \ ++ builtin_define ("__ARM_TUNE_MARVELL_F__"); \ ++ if (low_irq_latency) \ ++ builtin_define ("__low_irq_latency__"); \ + } while (0) + + /* The various ARM cores. */ +@@ -199,6 +209,13 @@ + #define TARGET_AAPCS_BASED \ + (arm_abi != ARM_ABI_APCS && arm_abi != ARM_ABI_ATPCS) + ++/* True if we should avoid generating conditional execution instructions. */ ++#define TARGET_NO_COND_EXEC (arm_tune_marvell_f && !optimize_size) ++/* Avoid most conditional instructions, but allow pairs with opposite ++ conditions and the same destination. */ ++#define TARGET_NO_SINGLE_COND_EXEC \ ++ ((arm_tune_cortex_a9 || arm_tune_marvell_f) && !optimize_size) ++ + #define TARGET_HARD_TP (target_thread_pointer == TP_CP15) + #define TARGET_SOFT_TP (target_thread_pointer == TP_SOFT) + +@@ -211,35 +228,43 @@ + /* Thumb-1 only. */ + #define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm) + ++#define TARGET_FPA_EMU2 (TARGET_FPA && arm_fpu_desc->rev == 2) + /* The following two macros concern the ability to execute coprocessor + instructions for VFPv3 or NEON. TARGET_VFP3/TARGET_VFPD32 are currently + only ever tested when we know we are generating for VFP hardware; we need + to be more careful with TARGET_NEON as noted below. */ + + /* FPU is has the full VFPv3/NEON register file of 32 D registers. */ +-#define TARGET_VFPD32 (arm_fp_model == ARM_FP_MODEL_VFP \ +- && (arm_fpu_arch == FPUTYPE_VFP3 \ +- || arm_fpu_arch == FPUTYPE_NEON)) ++#define TARGET_VFPD32 (TARGET_VFP && arm_arch_vfp_regs == VFP_REG_D32) + + /* FPU supports VFPv3 instructions. */ +-#define TARGET_VFP3 (arm_fp_model == ARM_FP_MODEL_VFP \ +- && (arm_fpu_arch == FPUTYPE_VFP3D16 \ +- || TARGET_VFPD32)) ++#define TARGET_VFP3 (TARGET_VFP && arm_arch_vfp_rev >= 3) ++ ++/* FPU only supports VFP single-precision instructions. */ ++#define TARGET_VFP_SINGLE (TARGET_VFP && arm_arch_vfp_regs == VFP_REG_SINGLE) ++ ++/* FPU supports VFP double-precision instructions. */ ++#define TARGET_VFP_DOUBLE (TARGET_VFP && arm_arch_vfp_regs != VFP_REG_SINGLE) ++ ++/* FPU supports half-precision floating-point with NEON element load/store. */ ++#define TARGET_NEON_FP16 (TARGET_VFP && arm_arch_vfp_neon && arm_arch_vfp_fp16) ++ ++/* FPU supports VFP half-precision floating-point. */ ++#define TARGET_FP16 (TARGET_VFP && arm_arch_vfp_fp16) + + /* FPU supports Neon instructions. The setting of this macro gets + revealed via __ARM_NEON__ so we add extra guards upon TARGET_32BIT + and TARGET_HARD_FLOAT to ensure that NEON instructions are + available. */ + #define TARGET_NEON (TARGET_32BIT && TARGET_HARD_FLOAT \ +- && arm_fp_model == ARM_FP_MODEL_VFP \ +- && arm_fpu_arch == FPUTYPE_NEON) ++ && TARGET_VFP && arm_arch_vfp_neon) + + /* "DSP" multiply instructions, eg. SMULxy. */ + #define TARGET_DSP_MULTIPLY \ +- (TARGET_32BIT && arm_arch5e && arm_arch_notm) ++ (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7em)) + /* Integer SIMD instructions, and extend-accumulate instructions. */ + #define TARGET_INT_SIMD \ +- (TARGET_32BIT && arm_arch6 && arm_arch_notm) ++ (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em)) + + /* Should MOVW/MOVT be used in preference to a constant pool. */ + #define TARGET_USE_MOVT (arm_arch_thumb2 && !optimize_size) +@@ -289,40 +314,30 @@ + ARM_FP_MODEL_VFP + }; + +-extern enum arm_fp_model arm_fp_model; +- +-/* Which floating point hardware is available. Also update +- fp_model_for_fpu in arm.c when adding entries to this list. */ +-enum fputype +-{ +- /* No FP hardware. */ +- FPUTYPE_NONE, +- /* Full FPA support. */ +- FPUTYPE_FPA, +- /* Emulated FPA hardware, Issue 2 emulator (no LFM/SFM). */ +- FPUTYPE_FPA_EMU2, +- /* Emulated FPA hardware, Issue 3 emulator. */ +- FPUTYPE_FPA_EMU3, +- /* Cirrus Maverick floating point co-processor. */ +- FPUTYPE_MAVERICK, +- /* VFP. */ +- FPUTYPE_VFP, +- /* VFPv3-D16. */ +- FPUTYPE_VFP3D16, +- /* VFPv3. */ +- FPUTYPE_VFP3, +- /* Neon. */ +- FPUTYPE_NEON ++enum vfp_reg_type { ++ VFP_REG_D16, ++ VFP_REG_D32, ++ VFP_REG_SINGLE + }; + +-/* Recast the floating point class to be the floating point attribute. */ +-#define arm_fpu_attr ((enum attr_fpu) arm_fpu_tune) +- +-/* What type of floating point to tune for */ +-extern enum fputype arm_fpu_tune; ++extern const struct arm_fpu_desc ++{ ++ const char *name; ++ enum arm_fp_model model; ++ int rev; ++ enum vfp_reg_type myregs; ++ int neon; ++ int fp16; ++} *arm_fpu_desc; ++ ++#define arm_fp_model arm_fpu_desc->model ++#define arm_arch_vfp_rev arm_fpu_desc->rev ++#define arm_arch_vfp_regs arm_fpu_desc->myregs ++#define arm_arch_vfp_neon arm_fpu_desc->neon ++#define arm_arch_vfp_fp16 arm_fpu_desc->fp16 + +-/* What type of floating point instructions are available */ +-extern enum fputype arm_fpu_arch; ++/* Which floating point hardware to schedule for. */ ++extern int arm_fpu_attr; + + enum float_abi_type + { +@@ -337,6 +352,21 @@ + #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT + #endif + ++/* Which __fp16 format to use. ++ The enumeration values correspond to the numbering for the ++ Tag_ABI_FP_16bit_format attribute. ++ */ ++enum arm_fp16_format_type ++{ ++ ARM_FP16_FORMAT_NONE = 0, ++ ARM_FP16_FORMAT_IEEE = 1, ++ ARM_FP16_FORMAT_ALTERNATIVE = 2 ++}; ++ ++extern enum arm_fp16_format_type arm_fp16_format; ++#define LARGEST_EXPONENT_IS_NORMAL(bits) \ ++ ((bits) == 16 && arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE) ++ + /* Which ABI to use. */ + enum arm_abi_type + { +@@ -383,12 +413,18 @@ + /* Nonzero if instructions not present in the 'M' profile can be used. */ + extern int arm_arch_notm; + ++/* Nonzero if instructions present in ARMv7E-M can be used. */ ++extern int arm_arch7em; ++ + /* Nonzero if this chip can benefit from load scheduling. */ + extern int arm_ld_sched; + + /* Nonzero if generating thumb code. */ + extern int thumb_code; + ++/* Nonzero if generating Janus2 code. */ ++extern int janus2_code; ++ + /* Nonzero if this chip is a StrongARM. */ + extern int arm_tune_strongarm; + +@@ -404,6 +440,9 @@ + /* Nonzero if tuning for XScale. */ + extern int arm_tune_xscale; + ++/* Nonzero if tuning for Marvell Feroceon. */ ++extern int arm_tune_marvell_f; ++ + /* Nonzero if tuning for stores via the write buffer. */ + extern int arm_tune_wbuf; + +@@ -423,6 +462,10 @@ + /* Nonzero if chip supports integer division instruction. */ + extern int arm_arch_hwdiv; + ++/* Nonzero if we should minimize interrupt latency of the ++ generated code. */ ++extern int low_irq_latency; ++ + #ifndef TARGET_DEFAULT + #define TARGET_DEFAULT (MASK_APCS_FRAME) + #endif +@@ -537,7 +580,14 @@ + #define PREFERRED_STACK_BOUNDARY \ + (arm_abi == ARM_ABI_ATPCS ? 64 : STACK_BOUNDARY) + +-#define FUNCTION_BOUNDARY 32 ++/* There are two values that tweak function alignment: FUNCTION_BOUNDARY and ++ align_functions. The former is used by default and the latter can override ++ the default, but only when optimizing for speed. So FUNCTION_BOUNDARY is ++ the right place to tweak when optimizing for size. ++ In ARM mode, minimal allowed alignment is 32 bits. ++ In THUMB mode it is 16 bits; to avoid possible performance regressions ++ we use 16-bit alignment only when optimizing for size. */ ++#define FUNCTION_BOUNDARY ((TARGET_THUMB && optimize_size) ? 16 : 32) + + /* The lowest bit is used to indicate Thumb-mode functions, so the + vbit must go into the delta field of pointers to member +@@ -757,12 +807,11 @@ + fixed_regs[regno] = call_used_regs[regno] = 1; \ + } \ + \ +- if (TARGET_THUMB && optimize_size) \ +- { \ +- /* When optimizing for size, it's better not to use \ +- the HI regs, because of the overhead of stacking \ +- them. */ \ +- /* ??? Is this still true for thumb2? */ \ ++ if (TARGET_THUMB1 && optimize_size) \ ++ { \ ++ /* When optimizing for size on Thumb-1, it's better not \ ++ to use the HI regs, because of the overhead of \ ++ stacking them. */ \ + for (regno = FIRST_HI_REGNUM; \ + regno <= LAST_HI_REGNUM; ++regno) \ + fixed_regs[regno] = call_used_regs[regno] = 1; \ +@@ -881,6 +930,9 @@ + /* The number of (integer) argument register available. */ + #define NUM_ARG_REGS 4 + ++/* And similarly for the VFP. */ ++#define NUM_VFP_ARG_REGS 16 ++ + /* Return the register number of the N'th (integer) argument. */ + #define ARG_REGISTER(N) (N - 1) + +@@ -901,9 +953,6 @@ + #define MUST_USE_SJLJ_EXCEPTIONS 1 + #endif + +-/* We can generate DWARF2 Unwind info, even though we don't use it. */ +-#define DWARF2_UNWIND_INFO 1 +- + /* Use r0 and r1 to pass exception handling information. */ + #define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? N : INVALID_REGNUM) + +@@ -1059,7 +1108,7 @@ + (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2)) + + #define VALID_IWMMXT_REG_MODE(MODE) \ +- (arm_vector_mode_supported_p (MODE) || (MODE) == DImode) ++ (arm_vector_mode_supported_p (MODE) || (MODE) == DImode || (MODE) == SImode) + + /* Modes valid for Neon D registers. */ + #define VALID_NEON_DREG_MODE(MODE) \ +@@ -1191,8 +1240,8 @@ + { 0x0000DF00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */ \ + { 0x01000000, 0x00000000, 0x00000000, 0x00000000 }, /* CC_REG */ \ + { 0x00000000, 0x00000000, 0x00000000, 0x80000000 }, /* VFPCC_REG */ \ +- { 0x0200DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \ +- { 0x0200FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \ ++ { 0x0000DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \ ++ { 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \ + { 0xFAFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF } /* ALL_REGS */ \ + } + +@@ -1230,11 +1279,14 @@ + || reg_classes_intersect_p (VFP_REGS, (CLASS)) \ + : 0) + +-/* We need to define this for LO_REGS on thumb. Otherwise we can end up +- using r0-r4 for function arguments, r7 for the stack frame and don't +- have enough left over to do doubleword arithmetic. */ ++/* We need to define this for LO_REGS on Thumb-1. Otherwise we can end up ++ using r0-r4 for function arguments, r7 for the stack frame and don't have ++ enough left over to do doubleword arithmetic. For Thumb-2 all the ++ potentially problematic instructions accept high registers so this is not ++ necessary. Care needs to be taken to avoid adding new Thumb-2 patterns ++ that require many low registers. */ + #define CLASS_LIKELY_SPILLED_P(CLASS) \ +- ((TARGET_THUMB && (CLASS) == LO_REGS) \ ++ ((TARGET_THUMB1 && (CLASS) == LO_REGS) \ + || (CLASS) == CC_REG) + + /* The class value for index registers, and the one for base regs. */ +@@ -1245,7 +1297,7 @@ + when addressing quantities in QI or HI mode; if we don't know the + mode, then we must be conservative. */ + #define MODE_BASE_REG_CLASS(MODE) \ +- (TARGET_32BIT ? CORE_REGS : \ ++ (TARGET_32BIT ? (TARGET_THUMB2 ? LO_REGS : CORE_REGS) : \ + (((MODE) == SImode) ? BASE_REGS : LO_REGS)) + + /* For Thumb we can not support SP+reg addressing, so we return LO_REGS +@@ -1263,7 +1315,7 @@ + In general this is just CLASS, but for the Thumb core registers and + immediate constants we prefer a LO_REGS class or a subset. */ + #define PREFERRED_RELOAD_CLASS(X, CLASS) \ +- (TARGET_ARM ? (CLASS) : \ ++ (TARGET_32BIT ? (CLASS) : \ + ((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \ + || (CLASS) == NO_REGS || (CLASS) == STACK_REG \ + ? LO_REGS : (CLASS))) +@@ -1346,6 +1398,9 @@ + else if (TARGET_MAVERICK && TARGET_HARD_FLOAT) \ + /* Need to be careful, -256 is not a valid offset. */ \ + low = val >= 0 ? (val & 0xff) : -((-val) & 0xff); \ ++ else if (TARGET_REALLY_IWMMXT && MODE == SImode) \ ++ /* Need to be careful, -1024 is not a valid offset. */ \ ++ low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff); \ + else if (MODE == SImode \ + || (MODE == SFmode && TARGET_SOFT_FLOAT) \ + || ((MODE == HImode || MODE == QImode) && ! arm_arch4)) \ +@@ -1416,13 +1471,17 @@ + /* If defined, gives a class of registers that cannot be used as the + operand of a SUBREG that changes the mode of the object illegally. */ + +-/* Moves between FPA_REGS and GENERAL_REGS are two memory insns. */ ++/* Moves between FPA_REGS and GENERAL_REGS are two memory insns. ++ Moves between VFP_REGS and GENERAL_REGS are a single insn, but ++ it is typically more expensive than a single memory access. We set ++ the cost to less than two memory accesses so that floating ++ point to integer conversion does not go through memory. */ + #define REGISTER_MOVE_COST(MODE, FROM, TO) \ + (TARGET_32BIT ? \ + ((FROM) == FPA_REGS && (TO) != FPA_REGS ? 20 : \ + (FROM) != FPA_REGS && (TO) == FPA_REGS ? 20 : \ +- IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 10 : \ +- !IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 10 : \ ++ IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 15 : \ ++ !IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 15 : \ + (FROM) == IWMMXT_REGS && (TO) != IWMMXT_REGS ? 4 : \ + (FROM) != IWMMXT_REGS && (TO) == IWMMXT_REGS ? 4 : \ + (FROM) == IWMMXT_GR_REGS || (TO) == IWMMXT_GR_REGS ? 20 : \ +@@ -1491,9 +1550,10 @@ + + /* Define how to find the value returned by a library function + assuming the value has mode MODE. */ +-#define LIBCALL_VALUE(MODE) \ +- (TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_FPA \ +- && GET_MODE_CLASS (MODE) == MODE_FLOAT \ ++#define LIBCALL_VALUE(MODE) \ ++ (TARGET_AAPCS_BASED ? aapcs_libcall_value (MODE) \ ++ : (TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_FPA \ ++ && GET_MODE_CLASS (MODE) == MODE_FLOAT) \ + ? gen_rtx_REG (MODE, FIRST_FPA_REGNUM) \ + : TARGET_32BIT && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK \ + && GET_MODE_CLASS (MODE) == MODE_FLOAT \ +@@ -1502,22 +1562,16 @@ + ? gen_rtx_REG (MODE, FIRST_IWMMXT_REGNUM) \ + : gen_rtx_REG (MODE, ARG_REGISTER (1))) + +-/* Define how to find the value returned by a function. +- VALTYPE is the data type of the value (as a tree). +- If the precise function being called is known, FUNC is its FUNCTION_DECL; +- otherwise, FUNC is 0. */ +-#define FUNCTION_VALUE(VALTYPE, FUNC) \ +- arm_function_value (VALTYPE, FUNC); +- +-/* 1 if N is a possible register number for a function value. +- On the ARM, only r0 and f0 can return results. */ +-/* On a Cirrus chip, mvf0 can return results. */ +-#define FUNCTION_VALUE_REGNO_P(REGNO) \ +- ((REGNO) == ARG_REGISTER (1) \ +- || (TARGET_32BIT && ((REGNO) == FIRST_CIRRUS_FP_REGNUM) \ +- && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK) \ +- || ((REGNO) == FIRST_IWMMXT_REGNUM && TARGET_IWMMXT_ABI) \ +- || (TARGET_32BIT && ((REGNO) == FIRST_FPA_REGNUM) \ ++/* 1 if REGNO is a possible register number for a function value. */ ++#define FUNCTION_VALUE_REGNO_P(REGNO) \ ++ ((REGNO) == ARG_REGISTER (1) \ ++ || (TARGET_AAPCS_BASED && TARGET_32BIT \ ++ && TARGET_VFP && TARGET_HARD_FLOAT \ ++ && (REGNO) == FIRST_VFP_REGNUM) \ ++ || (TARGET_32BIT && ((REGNO) == FIRST_CIRRUS_FP_REGNUM) \ ++ && TARGET_HARD_FLOAT_ABI && TARGET_MAVERICK) \ ++ || ((REGNO) == FIRST_IWMMXT_REGNUM && TARGET_IWMMXT_ABI) \ ++ || (TARGET_32BIT && ((REGNO) == FIRST_FPA_REGNUM) \ + && TARGET_HARD_FLOAT_ABI && TARGET_FPA)) + + /* Amount of memory needed for an untyped call to save all possible return +@@ -1617,9 +1671,30 @@ + that is in text_section. */ + extern GTY(()) rtx thumb_call_via_label[14]; + ++/* The number of potential ways of assigning to a co-processor. */ ++#define ARM_NUM_COPROC_SLOTS 1 ++ ++/* Enumeration of procedure calling standard variants. We don't really ++ support all of these yet. */ ++enum arm_pcs ++{ ++ ARM_PCS_AAPCS, /* Base standard AAPCS. */ ++ ARM_PCS_AAPCS_VFP, /* Use VFP registers for floating point values. */ ++ ARM_PCS_AAPCS_IWMMXT, /* Use iWMMXT registers for vectors. */ ++ /* This must be the last AAPCS variant. */ ++ ARM_PCS_AAPCS_LOCAL, /* Private call within this compilation unit. */ ++ ARM_PCS_ATPCS, /* ATPCS. */ ++ ARM_PCS_APCS, /* APCS (legacy Linux etc). */ ++ ARM_PCS_UNKNOWN ++}; ++ ++/* Default procedure calling standard of current compilation unit. */ ++extern enum arm_pcs arm_pcs_default; ++ ++/* We can't define this inside a generator file because it needs enum ++ machine_mode. */ + /* A C type for declaring a variable that is used as the first argument of +- `FUNCTION_ARG' and other related values. For some target machines, the +- type `int' suffices and can hold the number of bytes of argument so far. */ ++ `FUNCTION_ARG' and other related values. */ + typedef struct + { + /* This is the number of registers of arguments scanned so far. */ +@@ -1628,9 +1703,33 @@ + int iwmmxt_nregs; + int named_count; + int nargs; +- int can_split; ++ /* Which procedure call variant to use for this call. */ ++ enum arm_pcs pcs_variant; ++ ++ /* AAPCS related state tracking. */ ++ int aapcs_arg_processed; /* No need to lay out this argument again. */ ++ int aapcs_cprc_slot; /* Index of co-processor rules to handle ++ this argument, or -1 if using core ++ registers. */ ++ int aapcs_ncrn; ++ int aapcs_next_ncrn; ++ rtx aapcs_reg; /* Register assigned to this argument. */ ++ int aapcs_partial; /* How many bytes are passed in regs (if ++ split between core regs and stack. ++ Zero otherwise. */ ++ int aapcs_cprc_failed[ARM_NUM_COPROC_SLOTS]; ++ int can_split; /* Argument can be split between core regs ++ and the stack. */ ++ /* Private data for tracking VFP register allocation */ ++ unsigned aapcs_vfp_regs_free; ++ unsigned aapcs_vfp_reg_alloc; ++ int aapcs_vfp_rcount; ++ /* Can't include insn-modes.h because this header is needed before we ++ generate it. */ ++ int /* enum machine_mode */ aapcs_vfp_rmode; + } CUMULATIVE_ARGS; + ++ + /* Define where to put the arguments to a function. + Value is zero to push the argument on the stack, + or a hard register in which to store the argument. +@@ -1674,13 +1773,7 @@ + of mode MODE and data type TYPE. + (TYPE is null for libcalls where that information may not be available.) */ + #define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ +- (CUM).nargs += 1; \ +- if (arm_vector_mode_supported_p (MODE) \ +- && (CUM).named_count > (CUM).nargs \ +- && TARGET_IWMMXT_ABI) \ +- (CUM).iwmmxt_nregs += 1; \ +- else \ +- (CUM).nregs += ARM_NUM_REGS2 (MODE, TYPE) ++ arm_function_arg_advance (&(CUM), (MODE), (TYPE), (NAMED)) + + /* If defined, a C expression that gives the alignment boundary, in bits, of an + argument with the specified mode and type. If it is not defined, +@@ -1692,9 +1785,11 @@ + + /* 1 if N is a possible register number for function argument passing. + On the ARM, r0-r3 are used to pass args. */ +-#define FUNCTION_ARG_REGNO_P(REGNO) \ +- (IN_RANGE ((REGNO), 0, 3) \ +- || (TARGET_IWMMXT_ABI \ ++#define FUNCTION_ARG_REGNO_P(REGNO) \ ++ (IN_RANGE ((REGNO), 0, 3) \ ++ || (TARGET_AAPCS_BASED && TARGET_VFP && TARGET_HARD_FLOAT \ ++ && IN_RANGE ((REGNO), FIRST_VFP_REGNUM, FIRST_VFP_REGNUM + 15)) \ ++ || (TARGET_IWMMXT_ABI \ + && IN_RANGE ((REGNO), FIRST_IWMMXT_REGNUM, FIRST_IWMMXT_REGNUM + 9))) + + +@@ -1763,10 +1858,8 @@ + + /* Determine if the epilogue should be output as RTL. + You should override this if you define FUNCTION_EXTRA_EPILOGUE. */ +-/* This is disabled for Thumb-2 because it will confuse the +- conditional insn counter. */ + #define USE_RETURN_INSN(ISCOND) \ +- (TARGET_ARM ? use_return_insn (ISCOND, NULL) : 0) ++ (TARGET_32BIT ? use_return_insn (ISCOND, NULL) : 0) + + /* Definitions for register eliminations. + +@@ -1986,6 +2079,9 @@ + #define TARGET_DEFAULT_WORD_RELOCATIONS 0 + #endif + ++/* Nonzero if the target uses RELA relocations. */ ++#define TARGET_USE_RELA 0 ++ + /* Nonzero if the constant value X is a legitimate general operand. + It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. + +@@ -2324,7 +2420,8 @@ + /* Try to generate sequences that don't involve branches, we can then use + conditional instructions */ + #define BRANCH_COST(speed_p, predictable_p) \ +- (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0)) ++ (TARGET_32BIT ? (TARGET_THUMB2 && optimize_size ? 1 : 4) \ ++ : (optimize > 0 ? 2 : 0)) + + /* Position Independent Code. */ + /* We decide which register to use based on the compilation options and +@@ -2376,22 +2473,11 @@ + : reverse_condition (code)) + + #define CANONICALIZE_COMPARISON(CODE, OP0, OP1) \ +- do \ +- { \ +- if (GET_CODE (OP1) == CONST_INT \ +- && ! (const_ok_for_arm (INTVAL (OP1)) \ +- || (const_ok_for_arm (- INTVAL (OP1))))) \ +- { \ +- rtx const_op = OP1; \ +- CODE = arm_canonicalize_comparison ((CODE), GET_MODE (OP0), \ +- &const_op); \ +- OP1 = const_op; \ +- } \ +- } \ +- while (0) ++ (CODE) = arm_canonicalize_comparison (CODE, &(OP0), &(OP1)) + + /* The arm5 clz instruction returns 32. */ + #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 32, 1) ++#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 32, 1) + + #undef ASM_APP_OFF + #define ASM_APP_OFF (TARGET_THUMB1 ? "\t.code\t16\n" : \ +@@ -2404,6 +2490,19 @@ + if (TARGET_ARM) \ + asm_fprintf (STREAM,"\tstmfd\t%r!,{%r}\n", \ + STACK_POINTER_REGNUM, REGNO); \ ++ else if (TARGET_THUMB1 \ ++ && (REGNO) == STATIC_CHAIN_REGNUM) \ ++ { \ ++ /* We can't push STATIC_CHAIN_REGNUM (r12) directly with Thumb-1. ++ We know that ASM_OUTPUT_REG_PUSH will be matched with ++ ASM_OUTPUT_REG_POP, and that r7 isn't used by the function ++ profiler, so we can use it as a scratch reg. WARNING: This isn't ++ safe in the general case! It may be sensitive to future changes ++ in final.c:profile_function. */ \ ++ asm_fprintf (STREAM, "\tpush\t{r7}\n"); \ ++ asm_fprintf (STREAM, "\tmov\tr7, %r\n", REGNO);\ ++ asm_fprintf (STREAM, "\tpush\t{r7}\n"); \ ++ } \ + else \ + asm_fprintf (STREAM, "\tpush {%r}\n", REGNO); \ + } while (0) +@@ -2415,6 +2514,14 @@ + if (TARGET_ARM) \ + asm_fprintf (STREAM, "\tldmfd\t%r!,{%r}\n", \ + STACK_POINTER_REGNUM, REGNO); \ ++ else if (TARGET_THUMB1 \ ++ && (REGNO) == STATIC_CHAIN_REGNUM) \ ++ { \ ++ /* See comment in ASM_OUTPUT_REG_PUSH. */ \ ++ asm_fprintf (STREAM, "\tpop\t{r7}\n"); \ ++ asm_fprintf (STREAM, "\tmov\t%r, r7\n", REGNO);\ ++ asm_fprintf (STREAM, "\tpop\t{r7}\n"); \ ++ } \ + else \ + asm_fprintf (STREAM, "\tpop {%r}\n", REGNO); \ + } while (0) +--- a/src/gcc/config/arm/arm.md ++++ b/src/gcc/config/arm/arm.md +@@ -99,6 +99,7 @@ + ; correctly for PIC usage. + (UNSPEC_GOTSYM_OFF 24) ; The offset of the start of the the GOT from a + ; a given symbolic address. ++ (UNSPEC_RBIT 25) ; rbit operation. + ] + ) + +@@ -131,6 +132,8 @@ + (VUNSPEC_WCMP_EQ 12) ; Used by the iWMMXt WCMPEQ instructions + (VUNSPEC_WCMP_GTU 13) ; Used by the iWMMXt WCMPGTU instructions + (VUNSPEC_WCMP_GT 14) ; Used by the iwMMXT WCMPGT instructions ++ (VUNSPEC_ALIGN16 15) ; Used to force 16-byte alignment. ++ (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment. + (VUNSPEC_EH_RETURN 20); Use to override the return address for exception + ; handling. + ] +@@ -144,6 +147,10 @@ + ; patterns that share the same RTL in both ARM and Thumb code. + (define_attr "is_thumb" "no,yes" (const (symbol_ref "thumb_code"))) + ++; FIX_JANUS is set to 'yes' when compiling for Janus2, it causes to ++; add a nop after shifts, in order to work around a Janus2 bug ++(define_attr "fix_janus" "no,yes" (const (symbol_ref "janus2_code"))) ++ + ; IS_STRONGARM is set to 'yes' when compiling for StrongARM, it affects + ; scheduling decisions for the load unit and the multiplier. + (define_attr "is_strongarm" "no,yes" (const (symbol_ref "arm_tune_strongarm"))) +@@ -158,7 +165,7 @@ + ; Floating Point Unit. If we only have floating point emulation, then there + ; is no point in scheduling the floating point insns. (Well, for best + ; performance we should try and group them together). +-(define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp,vfpv3d16,vfpv3,neon" ++(define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp" + (const (symbol_ref "arm_fpu_attr"))) + + ; LENGTH of an instruction (in bytes) +@@ -185,7 +192,7 @@ + ;; scheduling information. + + (define_attr "insn" +- "mov,mvn,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,other" ++ "mov,mvn,and,orr,eor,smulxy,smlaxy,smlalxy,smulwy,smlawx,mul,muls,mla,mlas,umull,umulls,umlal,umlals,smull,smulls,smlal,smlals,smlawy,smuad,smuadx,smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,umaal,smlald,smlsld,clz,mrs,msr,xtab,sdiv,udiv,other" + (const_string "other")) + + ; TYPE attribute is used to detect floating point instructions which, if +@@ -251,8 +258,6 @@ + (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched"))) + + ;; Classification of NEON instructions for scheduling purposes. +-;; Do not set this attribute and the "type" attribute together in +-;; any one instruction pattern. + (define_attr "neon_type" + "neon_int_1,\ + neon_int_2,\ +@@ -415,7 +420,7 @@ + + (define_attr "generic_sched" "yes,no" + (const (if_then_else +- (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9") ++ (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9,marvell_f") + (eq_attr "tune_cortexr4" "yes")) + (const_string "no") + (const_string "yes")))) +@@ -423,20 +428,37 @@ + (define_attr "generic_vfp" "yes,no" + (const (if_then_else + (and (eq_attr "fpu" "vfp") +- (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9") ++ (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9,marvell_f") + (eq_attr "tune_cortexr4" "no")) + (const_string "yes") + (const_string "no")))) + ++; Specifies which machine an alternative is tuned for. Used to compute ++; attribute ENABLED. ++(define_attr "alt_tune" "all,onlya8,nota8" (const_string "all")) ++ ++(define_attr "enabled" "" ++ (cond [(and (eq_attr "alt_tune" "onlya8") ++ (not (eq_attr "tune" "cortexa8"))) ++ (const_int 0) ++ ++ (and (eq_attr "alt_tune" "nota8") ++ (eq_attr "tune" "cortexa8")) ++ (const_int 0)] ++ (const_int 1))) ++ + (include "arm-generic.md") + (include "arm926ejs.md") + (include "arm1020e.md") + (include "arm1026ejs.md") + (include "arm1136jfs.md") ++(include "cortex-a5.md") + (include "cortex-a8.md") + (include "cortex-a9.md") + (include "cortex-r4.md") + (include "cortex-r4f.md") ++(include "marvell-f.md") ++(include "marvell-f-vfp.md") + (include "vfp11.md") + + +@@ -495,9 +517,10 @@ + (plus:DI (match_operand:DI 1 "s_register_operand" "%0, 0") + (match_operand:DI 2 "s_register_operand" "r, 0"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" ++ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK) && !TARGET_NEON" + "#" +- "TARGET_32BIT && reload_completed" ++ "TARGET_32BIT && reload_completed ++ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0])))" + [(parallel [(set (reg:CC_C CC_REGNUM) + (compare:CC_C (plus:SI (match_dup 1) (match_dup 2)) + (match_dup 1))) +@@ -521,7 +544,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (plus:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" + "#" +@@ -550,7 +573,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (plus:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" + "#" +@@ -620,10 +643,11 @@ + sub%?\\t%0, %1, #%n2 + sub%?\\t%0, %1, #%n2 + #" +- "TARGET_32BIT && +- GET_CODE (operands[2]) == CONST_INT ++ "TARGET_32BIT ++ && GET_CODE (operands[2]) == CONST_INT + && !(const_ok_for_arm (INTVAL (operands[2])) +- || const_ok_for_arm (-INTVAL (operands[2])))" ++ || const_ok_for_arm (-INTVAL (operands[2]))) ++ && (reload_completed || !arm_eliminable_register (operands[1]))" + [(clobber (const_int 0))] + " + arm_split_constant (PLUS, SImode, curr_insn, +@@ -639,10 +663,10 @@ + ;; register. Trying to reload it will always fail catastrophically, + ;; so never allow those alternatives to match if reloading is needed. + +-(define_insn "*thumb1_addsi3" +- [(set (match_operand:SI 0 "register_operand" "=l,l,l,*rk,*hk,l,!k") +- (plus:SI (match_operand:SI 1 "register_operand" "%0,0,l,*0,*0,!k,!k") +- (match_operand:SI 2 "nonmemory_operand" "I,J,lL,*hk,*rk,!M,!O")))] ++(define_insn_and_split "*thumb1_addsi3" ++ [(set (match_operand:SI 0 "register_operand" "=l,l,l,*rk,*hk,l,!k,l,l") ++ (plus:SI (match_operand:SI 1 "register_operand" "%0,0,l,*0,*0,!k,!k,0,l") ++ (match_operand:SI 2 "nonmemory_operand" "I,J,lL,*hk,*rk,!M,!O,Pa,Pb")))] + "TARGET_THUMB1" + "* + static const char * const asms[] = +@@ -653,7 +677,9 @@ + \"add\\t%0, %0, %2\", + \"add\\t%0, %0, %2\", + \"add\\t%0, %1, %2\", +- \"add\\t%0, %1, %2\" ++ \"add\\t%0, %1, %2\", ++ \"#\", ++ \"#\" + }; + if ((which_alternative == 2 || which_alternative == 6) + && GET_CODE (operands[2]) == CONST_INT +@@ -661,7 +687,22 @@ + return \"sub\\t%0, %1, #%n2\"; + return asms[which_alternative]; + " +- [(set_attr "length" "2")] ++ "&& reload_completed && CONST_INT_P (operands[2]) ++ && operands[1] != stack_pointer_rtx ++ && (INTVAL (operands[2]) > 255 || INTVAL (operands[2]) < -255)" ++ [(set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2))) ++ (set (match_dup 0) (plus:SI (match_dup 0) (match_dup 3)))] ++ { ++ HOST_WIDE_INT offset = INTVAL (operands[2]); ++ if (offset > 255) ++ offset = 255; ++ else if (offset < -255) ++ offset = -255; ++ ++ operands[3] = GEN_INT (offset); ++ operands[2] = GEN_INT (INTVAL (operands[2]) - offset); ++ } ++ [(set_attr "length" "2,2,2,2,2,2,2,4,4")] + ) + + ;; Reloading and elimination of the frame pointer can +@@ -678,7 +719,6 @@ + "" + ) + +-;; ??? Make Thumb-2 variants which prefer low regs + (define_insn "*addsi3_compare0" + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV +@@ -687,7 +727,7 @@ + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=r,r") + (plus:SI (match_dup 1) (match_dup 2)))] +- "TARGET_32BIT" ++ "TARGET_ARM" + "@ + add%.\\t%0, %1, %2 + sub%.\\t%0, %1, #%n2" +@@ -700,7 +740,7 @@ + (plus:SI (match_operand:SI 0 "s_register_operand" "r, r") + (match_operand:SI 1 "arm_add_operand" "rI,L")) + (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_ARM" + "@ + cmn%?\\t%0, %1 + cmp%?\\t%0, #%n1" +@@ -854,7 +894,11 @@ + [(set_attr "conds" "use") + (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*addsi3_carryin_alt1" +@@ -938,7 +982,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "") + (plus:DF (match_operand:DF 1 "s_register_operand" "") + (match_operand:DF 2 "arm_float_add_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + if (TARGET_MAVERICK + && !cirrus_fp_register (operands[2], DFmode)) +@@ -977,7 +1021,7 @@ + (minus:DI (match_operand:DI 1 "s_register_operand" "0,r,0") + (match_operand:DI 2 "s_register_operand" "r,0,0"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NEON" + "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2" + [(set_attr "conds" "clob") + (set_attr "length" "8")] +@@ -995,7 +1039,7 @@ + + (define_insn "*subdi_di_zesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (minus:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +@@ -1007,7 +1051,7 @@ + + (define_insn "*subdi_di_sesidi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (minus:DI (match_operand:DI 1 "s_register_operand" "r,0") ++ (minus:DI (match_operand:DI 1 "s_register_operand" "0,r") + (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +@@ -1021,7 +1065,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, #0" +@@ -1033,7 +1077,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (minus:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, %2\;rsc\\t%R0, %R1, %2, asr #31" +@@ -1176,7 +1220,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "") + (minus:DF (match_operand:DF 1 "arm_float_rhs_operand" "") + (match_operand:DF 2 "arm_float_rhs_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + if (TARGET_MAVERICK) + { +@@ -1202,7 +1246,7 @@ + (define_insn "*arm_mulsi3" + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r") + (mult:SI (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")))] ++ (match_operand:SI 1 "s_register_operand" "%0,r")))] + "TARGET_32BIT && !arm_arch6" + "mul%?\\t%0, %2, %1" + [(set_attr "insn" "mul") +@@ -1245,8 +1289,8 @@ + (match_operand:SI 2 "register_operand" "l,0,0")))] + "TARGET_THUMB1 && arm_arch6" + "@ +- mul\\t%0, %2 +- mul\\t%0, %1 ++ mul\\t%0, %2 ++ mul\\t%0, %1 + mul\\t%0, %1" + [(set_attr "length" "2") + (set_attr "insn" "mul")] +@@ -1256,7 +1300,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r")) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=&r,&r") + (mult:SI (match_dup 2) (match_dup 1)))] +@@ -1284,7 +1328,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r") +- (match_operand:SI 1 "s_register_operand" "%?r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=&r,&r"))] + "TARGET_ARM && !arm_arch6" +@@ -1312,8 +1356,8 @@ + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r") + (plus:SI + (mult:SI (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) +- (match_operand:SI 3 "s_register_operand" "?r,r,0,0")))] ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) ++ (match_operand:SI 3 "s_register_operand" "r,r,0,0")))] + "TARGET_32BIT && !arm_arch6" + "mla%?\\t%0, %2, %1, %3" + [(set_attr "insn" "mla") +@@ -1332,13 +1376,56 @@ + (set_attr "predicable" "yes")] + ) + ++; The combiner cannot combine the first and last insns in the ++; following sequence because of the intervening insn, so help the ++; combiner with this splitter. The combiner does attempt to split ++; this particular combination but does not know this exact split. ++; Note that the combiner puts the constant at the outermost operation ++; as a part of canonicalization. ++; ++; mul r3, r2, r1 ++; r3, r3, ++; add r3, r3, r4 ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (match_operator:SI 1 "plusminus_operator" ++ [(plus:SI (mult:SI (match_operand:SI 2 "s_register_operand" "") ++ (match_operand:SI 3 "s_register_operand" "")) ++ (match_operand:SI 4 "s_register_operand" "")) ++ (match_operand:SI 5 "arm_immediate_operand" "")]))] ++ "TARGET_32BIT" ++ [(set (match_dup 0) ++ (plus:SI (mult:SI (match_dup 2) (match_dup 3)) ++ (match_dup 4))) ++ (set (match_dup 0) ++ (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))] ++ "") ++ ++; Likewise for MLS. MLS is available only on select architectures. ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (match_operator:SI 1 "plusminus_operator" ++ [(minus:SI (match_operand:SI 2 "s_register_operand" "") ++ (mult:SI (match_operand:SI 3 "s_register_operand" "") ++ (match_operand:SI 4 "s_register_operand" ""))) ++ (match_operand:SI 5 "arm_immediate_operand" "")]))] ++ "TARGET_32BIT && arm_arch_thumb2" ++ [(set (match_dup 0) ++ (minus:SI (match_dup 2) ++ (mult:SI (match_dup 3) (match_dup 4)))) ++ (set (match_dup 0) ++ (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))] ++ "") ++ + (define_insn "*mulsi3addsi_compare0" + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV + (plus:SI (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) +- (match_operand:SI 3 "s_register_operand" "?r,r,0,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) ++ (match_operand:SI 3 "s_register_operand" "r,r,0,0")) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r,&r") + (plus:SI (mult:SI (match_dup 2) (match_dup 1)) +@@ -1371,7 +1458,7 @@ + (compare:CC_NOOV + (plus:SI (mult:SI + (match_operand:SI 2 "s_register_operand" "r,r,r,r") +- (match_operand:SI 1 "s_register_operand" "%r,0,r,0")) ++ (match_operand:SI 1 "s_register_operand" "%0,r,0,r")) + (match_operand:SI 3 "s_register_operand" "?r,r,0,0")) + (const_int 0))) + (clobber (match_scratch:SI 0 "=&r,&r,&r,&r"))] +@@ -1551,7 +1638,7 @@ + (truncate:SI + (lshiftrt:DI + (mult:DI +- (sign_extend:DI (match_operand:SI 1 "s_register_operand" "%r,0")) ++ (sign_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) + (sign_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) + (const_int 32)))) + (clobber (match_scratch:SI 3 "=&r,&r"))] +@@ -1595,7 +1682,7 @@ + (truncate:SI + (lshiftrt:DI + (mult:DI +- (zero_extend:DI (match_operand:SI 1 "s_register_operand" "%r,0")) ++ (zero_extend:DI (match_operand:SI 1 "s_register_operand" "%0,r")) + (zero_extend:DI (match_operand:SI 2 "s_register_operand" "r,r"))) + (const_int 32)))) + (clobber (match_scratch:SI 3 "=&r,&r"))] +@@ -1713,7 +1800,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "") + (mult:DF (match_operand:DF 1 "s_register_operand" "") + (match_operand:DF 2 "arm_float_rhs_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + if (TARGET_MAVERICK + && !cirrus_fp_register (operands[2], DFmode)) +@@ -1733,7 +1820,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "") + (div:DF (match_operand:DF 1 "arm_float_rhs_operand" "") + (match_operand:DF 2 "arm_float_rhs_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)" + "") + + ;; Modulo insns +@@ -1764,6 +1851,7 @@ + [(match_operand:DI 1 "s_register_operand" "") + (match_operand:DI 2 "s_register_operand" "")]))] + "TARGET_32BIT && reload_completed ++ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0]))) + && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))" + [(set (match_dup 0) (match_op_dup:SI 6 [(match_dup 1) (match_dup 2)])) + (set (match_dup 3) (match_op_dup:SI 6 [(match_dup 4) (match_dup 5)]))] +@@ -1837,11 +1925,19 @@ + }" + ) + +-(define_insn "anddi3" ++(define_expand "anddi3" ++ [(set (match_operand:DI 0 "s_register_operand" "") ++ (and:DI (match_operand:DI 1 "s_register_operand" "") ++ (match_operand:DI 2 "neon_inv_logic_op2" "")))] ++ "TARGET_32BIT" ++ "" ++) ++ ++(define_insn "*anddi3_insn" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (match_operand:DI 1 "s_register_operand" "%0,r") + (match_operand:DI 2 "s_register_operand" "r,r")))] +- "TARGET_32BIT && ! TARGET_IWMMXT" ++ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON" + "#" + [(set_attr "length" "8")] + ) +@@ -1850,7 +1946,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed" +@@ -1871,7 +1967,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8")] +@@ -1960,6 +2056,7 @@ + DONE; + " + [(set_attr "length" "4,4,16") ++ (set_attr "insn" "and") + (set_attr "predicable" "yes")] + ) + +@@ -1969,7 +2066,8 @@ + (match_operand:SI 2 "register_operand" "l")))] + "TARGET_THUMB1" + "and\\t%0, %0, %2" +- [(set_attr "length" "2")] ++ [(set_attr "length" "2") ++ (set_attr "insn" "and")] + ) + + (define_insn "*andsi3_compare0" +@@ -1984,7 +2082,8 @@ + "@ + and%.\\t%0, %1, %2 + bic%.\\t%0, %1, #%B2" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "and,*")] + ) + + (define_insn "*andsi3_compare0_scratch" +@@ -2280,7 +2379,7 @@ + } + } + +- target = operands[0]; ++ target = copy_rtx (operands[0]); + /* Avoid using a subreg as a subtarget, and avoid writing a paradoxical + subreg as the final target. */ + if (GET_CODE (target) == SUBREG) +@@ -2430,9 +2529,11 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (and:DI (not:DI (match_operand:DI 1 "s_register_operand" "r,0")) + (match_operand:DI 2 "s_register_operand" "0,r")))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NEON" + "#" +- "TARGET_32BIT && reload_completed && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))" ++ "TARGET_32BIT && reload_completed ++ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0]))) ++ && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))" + [(set (match_dup 0) (and:SI (not:SI (match_dup 1)) (match_dup 2))) + (set (match_dup 3) (and:SI (not:SI (match_dup 4)) (match_dup 5)))] + " +@@ -2528,7 +2629,11 @@ + (set_attr "shift" "2") + (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*andsi_notsi_si_compare0" +@@ -2556,11 +2661,19 @@ + [(set_attr "conds" "set")] + ) + +-(define_insn "iordi3" ++(define_expand "iordi3" ++ [(set (match_operand:DI 0 "s_register_operand" "") ++ (ior:DI (match_operand:DI 1 "s_register_operand" "") ++ (match_operand:DI 2 "neon_logic_op2" "")))] ++ "TARGET_32BIT" ++ "" ++) ++ ++(define_insn "*iordi3_insn" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (match_operand:DI 1 "s_register_operand" "%0,r") + (match_operand:DI 2 "s_register_operand" "r,r")))] +- "TARGET_32BIT && ! TARGET_IWMMXT" ++ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON" + "#" + [(set_attr "length" "8") + (set_attr "predicable" "yes")] +@@ -2576,6 +2689,7 @@ + orr%?\\t%Q0, %Q1, %2 + #" + [(set_attr "length" "4,8") ++ (set_attr "insn" "orr") + (set_attr "predicable" "yes")] + ) + +@@ -2583,7 +2697,7 @@ + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (ior:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8") +@@ -2638,7 +2752,8 @@ + (match_operand:SI 2 "register_operand" "l")))] + "TARGET_THUMB1" + "orr\\t%0, %0, %2" +- [(set_attr "length" "2")] ++ [(set_attr "length" "2") ++ (set_attr "insn" "orr")] + ) + + (define_peephole2 +@@ -2663,7 +2778,8 @@ + (ior:SI (match_dup 1) (match_dup 2)))] + "TARGET_32BIT" + "orr%.\\t%0, %1, %2" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "orr")] + ) + + (define_insn "*iorsi3_compare0_scratch" +@@ -2674,14 +2790,23 @@ + (clobber (match_scratch:SI 0 "=r"))] + "TARGET_32BIT" + "orr%.\\t%0, %1, %2" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "orr")] ++) ++ ++(define_expand "xordi3" ++ [(set (match_operand:DI 0 "s_register_operand" "") ++ (xor:DI (match_operand:DI 1 "s_register_operand" "") ++ (match_operand:DI 2 "s_register_operand" "")))] ++ "TARGET_32BIT" ++ "" + ) + +-(define_insn "xordi3" ++(define_insn "*xordi3_insn" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (xor:DI (match_operand:DI 1 "s_register_operand" "%0,r") + (match_operand:DI 2 "s_register_operand" "r,r")))] +- "TARGET_32BIT && !TARGET_IWMMXT" ++ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON" + "#" + [(set_attr "length" "8") + (set_attr "predicable" "yes")] +@@ -2697,14 +2822,15 @@ + eor%?\\t%Q0, %Q1, %2 + #" + [(set_attr "length" "4,8") +- (set_attr "predicable" "yes")] ++ (set_attr "predicable" "yes") ++ (set_attr "insn" "eor")] + ) + + (define_insn "*xordi_sesidi_di" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") + (xor:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,r")) +- (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + [(set_attr "length" "8") +@@ -2728,7 +2854,8 @@ + (match_operand:SI 2 "arm_rhs_operand" "rI")))] + "TARGET_32BIT" + "eor%?\\t%0, %1, %2" +- [(set_attr "predicable" "yes")] ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "eor")] + ) + + (define_insn "*thumb1_xorsi3" +@@ -2737,7 +2864,8 @@ + (match_operand:SI 2 "register_operand" "l")))] + "TARGET_THUMB1" + "eor\\t%0, %0, %2" +- [(set_attr "length" "2")] ++ [(set_attr "length" "2") ++ (set_attr "insn" "eor")] + ) + + (define_insn "*xorsi3_compare0" +@@ -2749,7 +2877,8 @@ + (xor:SI (match_dup 1) (match_dup 2)))] + "TARGET_32BIT" + "eor%.\\t%0, %1, %2" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "eor")] + ) + + (define_insn "*xorsi3_compare0_scratch" +@@ -2781,7 +2910,7 @@ + + (define_insn "*andsi_iorsi3_notsi" + [(set (match_operand:SI 0 "s_register_operand" "=&r,&r,&r") +- (and:SI (ior:SI (match_operand:SI 1 "s_register_operand" "r,r,0") ++ (and:SI (ior:SI (match_operand:SI 1 "s_register_operand" "%0,r,r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI")) + (not:SI (match_operand:SI 3 "arm_rhs_operand" "rI,rI,rI"))))] + "TARGET_32BIT" +@@ -2906,7 +3035,7 @@ + (smax:SI (match_operand:SI 1 "s_register_operand" "") + (match_operand:SI 2 "arm_rhs_operand" ""))) + (clobber (reg:CC CC_REGNUM))])] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + " + if (operands[2] == const0_rtx || operands[2] == constm1_rtx) + { +@@ -2933,7 +3062,8 @@ + (const_int -1)))] + "TARGET_32BIT" + "orr%?\\t%0, %1, %1, asr #31" +- [(set_attr "predicable" "yes")] ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "orr")] + ) + + (define_insn "*arm_smax_insn" +@@ -2941,7 +3071,7 @@ + (smax:SI (match_operand:SI 1 "s_register_operand" "%0,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "@ + cmp\\t%1, %2\;movlt\\t%0, %2 + cmp\\t%1, %2\;movge\\t%0, %1\;movlt\\t%0, %2" +@@ -2955,7 +3085,7 @@ + (smin:SI (match_operand:SI 1 "s_register_operand" "") + (match_operand:SI 2 "arm_rhs_operand" ""))) + (clobber (reg:CC CC_REGNUM))])] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + " + if (operands[2] == const0_rtx) + { +@@ -2973,7 +3103,8 @@ + (const_int 0)))] + "TARGET_32BIT" + "and%?\\t%0, %1, %1, asr #31" +- [(set_attr "predicable" "yes")] ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "and")] + ) + + (define_insn "*arm_smin_insn" +@@ -2981,7 +3112,7 @@ + (smin:SI (match_operand:SI 1 "s_register_operand" "%0,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "@ + cmp\\t%1, %2\;movge\\t%0, %2 + cmp\\t%1, %2\;movlt\\t%0, %1\;movge\\t%0, %2" +@@ -2995,7 +3126,7 @@ + (umax:SI (match_operand:SI 1 "s_register_operand" "") + (match_operand:SI 2 "arm_rhs_operand" ""))) + (clobber (reg:CC CC_REGNUM))])] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "" + ) + +@@ -3004,7 +3135,7 @@ + (umax:SI (match_operand:SI 1 "s_register_operand" "0,r,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "@ + cmp\\t%1, %2\;movcc\\t%0, %2 + cmp\\t%1, %2\;movcs\\t%0, %1 +@@ -3019,7 +3150,7 @@ + (umin:SI (match_operand:SI 1 "s_register_operand" "") + (match_operand:SI 2 "arm_rhs_operand" ""))) + (clobber (reg:CC CC_REGNUM))])] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "" + ) + +@@ -3028,7 +3159,7 @@ + (umin:SI (match_operand:SI 1 "s_register_operand" "0,r,?r") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "@ + cmp\\t%1, %2\;movcs\\t%0, %2 + cmp\\t%1, %2\;movcc\\t%0, %1 +@@ -3043,7 +3174,7 @@ + [(match_operand:SI 1 "s_register_operand" "r") + (match_operand:SI 2 "s_register_operand" "r")])) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "* + operands[3] = gen_rtx_fmt_ee (minmax_code (operands[3]), SImode, + operands[1], operands[2]); +@@ -3135,7 +3266,7 @@ + + (define_insn "arm_ashldi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (ashift:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" +@@ -3163,11 +3294,23 @@ + [(set (match_operand:SI 0 "register_operand" "=l,l") + (ashift:SI (match_operand:SI 1 "register_operand" "l,0") + (match_operand:SI 2 "nonmemory_operand" "N,l")))] +- "TARGET_THUMB1" ++ "TARGET_THUMB1 && !janus2_code" + "lsl\\t%0, %1, %2" + [(set_attr "length" "2")] + ) + ++(define_insn "*thumb1_ashlsi3_janus2" ++ [(set (match_operand:SI 0 "register_operand" "=l,l") ++ (ashift:SI (match_operand:SI 1 "register_operand" "l,0") ++ (match_operand:SI 2 "nonmemory_operand" "N,l")))] ++ "TARGET_THUMB1 && janus2_code" ++ "@ ++ lsl\\t%0, %1, %2 ++ lsl\\t%0, %1, %2\;nop" ++ [(set_attr "length" "2,4")] ++) ++ ++ + (define_expand "ashrdi3" + [(set (match_operand:DI 0 "s_register_operand" "") + (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "") +@@ -3194,12 +3337,13 @@ + + (define_insn "arm_ashrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" + "movs\\t%R0, %R1, asr #1\;mov\\t%Q0, %Q1, rrx" + [(set_attr "conds" "clob") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -3219,11 +3363,22 @@ + [(set (match_operand:SI 0 "register_operand" "=l,l") + (ashiftrt:SI (match_operand:SI 1 "register_operand" "l,0") + (match_operand:SI 2 "nonmemory_operand" "N,l")))] +- "TARGET_THUMB1" ++ "TARGET_THUMB1 && !janus2_code" + "asr\\t%0, %1, %2" + [(set_attr "length" "2")] + ) + ++(define_insn "*thumb1_ashrsi3_janus2" ++ [(set (match_operand:SI 0 "register_operand" "=l,l") ++ (ashiftrt:SI (match_operand:SI 1 "register_operand" "l,0") ++ (match_operand:SI 2 "nonmemory_operand" "N,l")))] ++ "TARGET_THUMB1 && janus2_code" ++ "@ ++ asr\\t%0, %1, %2 ++ asr\\t%0, %1, %2\;nop" ++ [(set_attr "length" "2,4")] ++) ++ + (define_expand "lshrdi3" + [(set (match_operand:DI 0 "s_register_operand" "") + (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "") +@@ -3250,12 +3405,13 @@ + + (define_insn "arm_lshrdi3_1bit" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "?r,0") ++ (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r") + (const_int 1))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_32BIT" + "movs\\t%R0, %R1, lsr #1\;mov\\t%Q0, %Q1, rrx" + [(set_attr "conds" "clob") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -3278,11 +3434,22 @@ + [(set (match_operand:SI 0 "register_operand" "=l,l") + (lshiftrt:SI (match_operand:SI 1 "register_operand" "l,0") + (match_operand:SI 2 "nonmemory_operand" "N,l")))] +- "TARGET_THUMB1" ++ "TARGET_THUMB1 && !janus2_code" + "lsr\\t%0, %1, %2" + [(set_attr "length" "2")] + ) + ++(define_insn "*thumb1_lshrsi3_janus2" ++ [(set (match_operand:SI 0 "register_operand" "=l,l") ++ (lshiftrt:SI (match_operand:SI 1 "register_operand" "l,0") ++ (match_operand:SI 2 "nonmemory_operand" "N,l")))] ++ "TARGET_THUMB1 && janus2_code" ++ "@ ++ lsr\\t%0, %1, %2 ++ lsr\\t%0, %1, %2; nop" ++ [(set_attr "length" "2,4")] ++) ++ + (define_expand "rotlsi3" + [(set (match_operand:SI 0 "s_register_operand" "") + (rotatert:SI (match_operand:SI 1 "s_register_operand" "") +@@ -3324,11 +3491,20 @@ + [(set (match_operand:SI 0 "register_operand" "=l") + (rotatert:SI (match_operand:SI 1 "register_operand" "0") + (match_operand:SI 2 "register_operand" "l")))] +- "TARGET_THUMB1" ++ "TARGET_THUMB1 && !janus2_code" + "ror\\t%0, %0, %2" + [(set_attr "length" "2")] + ) + ++(define_insn "*thumb1_rotrsi3_janus2" ++ [(set (match_operand:SI 0 "register_operand" "=l") ++ (rotatert:SI (match_operand:SI 1 "register_operand" "0") ++ (match_operand:SI 2 "register_operand" "l")))] ++ "TARGET_THUMB1 && janus2_code" ++ "ror\\t%0, %0, %2; nop" ++ [(set_attr "length" "4")] ++) ++ + (define_insn "*arm_shiftsi3" + [(set (match_operand:SI 0 "s_register_operand" "=r") + (match_operator:SI 3 "shift_operator" +@@ -3340,7 +3516,11 @@ + (set_attr "shift" "1") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*shiftsi3_compare0" +@@ -3357,7 +3537,11 @@ + (set_attr "shift" "1") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*shiftsi3_compare0_scratch" +@@ -3370,7 +3554,11 @@ + "TARGET_32BIT" + "* return arm_output_shift(operands, 1);" + [(set_attr "conds" "set") +- (set_attr "shift" "1")] ++ (set_attr "shift" "1") ++ (set (attr "length") (if_then_else (and (match_operand 2 "s_register_operand" "") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arm_notsi_shiftsi" +@@ -3382,9 +3570,14 @@ + "mvn%?\\t%0, %1%S3" + [(set_attr "predicable" "yes") + (set_attr "shift" "1") ++ (set_attr "insn" "mvn") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arm_notsi_shiftsi_compare0" +@@ -3399,9 +3592,14 @@ + "mvn%.\\t%0, %1%S3" + [(set_attr "conds" "set") + (set_attr "shift" "1") ++ (set_attr "insn" "mvn") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arm_not_shiftsi_compare0_scratch" +@@ -3415,9 +3613,14 @@ + "mvn%.\\t%0, %1%S3" + [(set_attr "conds" "set") + (set_attr "shift" "1") ++ (set_attr "insn" "mvn") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + ;; We don't really have extzv, but defining this using shifts helps +@@ -3497,10 +3700,10 @@ + ) + + ;; The constraints here are to prevent a *partial* overlap (where %Q0 == %R1). +-;; The second alternative is to allow the common case of a *full* overlap. ++;; The first alternative allows the common case of a *full* overlap. + (define_insn "*arm_negdi2" + [(set (match_operand:DI 0 "s_register_operand" "=&r,r") +- (neg:DI (match_operand:DI 1 "s_register_operand" "?r,0"))) ++ (neg:DI (match_operand:DI 1 "s_register_operand" "0,r"))) + (clobber (reg:CC CC_REGNUM))] + "TARGET_ARM" + "rsbs\\t%Q0, %Q1, #0\;rsc\\t%R0, %R1, #0" +@@ -3550,12 +3753,12 @@ + (define_expand "negdf2" + [(set (match_operand:DF 0 "s_register_operand" "") + (neg:DF (match_operand:DF 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)" + "") + + ;; abssi2 doesn't really clobber the condition codes if a different register + ;; is being set. To keep things simple, assume during rtl manipulations that +-;; it does, but tell the final scan operator the truth. Similarly for ++;; it does, and the splitter will eliminate it. Similarly for + ;; (neg (abs...)) + + (define_expand "abssi2" +@@ -3567,22 +3770,28 @@ + " + if (TARGET_THUMB1) + operands[2] = gen_rtx_SCRATCH (SImode); ++ else if (TARGET_NO_SINGLE_COND_EXEC) ++ { ++ emit_insn(gen_rtx_SET(VOIDmode, operands[0], ++ gen_rtx_ABS(SImode, operands[1]))); ++ DONE; ++ } + else + operands[2] = gen_rtx_REG (CCmode, CC_REGNUM); + ") + + (define_insn "*arm_abssi2" +- [(set (match_operand:SI 0 "s_register_operand" "=r,&r") +- (abs:SI (match_operand:SI 1 "s_register_operand" "0,r"))) ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (abs:SI (match_operand:SI 1 "s_register_operand" "r"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" +- "@ +- cmp\\t%0, #0\;rsblt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31" +- [(set_attr "conds" "clob,*") +- (set_attr "shift" "1") ++ "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC" ++ "#" ++ [(set_attr "shift" "1") + ;; predicable can't be set based on the variant, so left as no +- (set_attr "length" "8")] ++ (set (attr "length") ++ (if_then_else (eq_attr "is_thumb" "yes") ++ (const_int 10) ++ (const_int 8)))] + ) + + (define_insn_and_split "*thumb1_abssi2" +@@ -3600,17 +3809,17 @@ + ) + + (define_insn "*arm_neg_abssi2" +- [(set (match_operand:SI 0 "s_register_operand" "=r,&r") +- (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "0,r")))) ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "r")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" +- "@ +- cmp\\t%0, #0\;rsbgt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31" +- [(set_attr "conds" "clob,*") +- (set_attr "shift" "1") ++ "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC" ++ "#" ++ [(set_attr "shift" "1") + ;; predicable can't be set based on the variant, so left as no +- (set_attr "length" "8")] ++ (set (attr "length") ++ (if_then_else (eq_attr "is_thumb" "yes") ++ (const_int 10) ++ (const_int 8)))] + ) + + (define_insn_and_split "*thumb1_neg_abssi2" +@@ -3627,6 +3836,93 @@ + [(set_attr "length" "6")] + ) + ++;; Simplified version for when avoiding conditional execution ++(define_insn "*arm_nocond_abssi2" ++ [(set (match_operand:SI 0 "s_register_operand" "=&r") ++ (abs:SI (match_operand:SI 1 "s_register_operand" "r")))] ++ "TARGET_32BIT && TARGET_NO_SINGLE_COND_EXEC" ++ "#" ++ [(set_attr "shift" "1") ++ (set_attr "length" "8") ++ (set_attr "predicable" "yes")] ++) ++ ++(define_insn "*arm_nocond_neg_abssi2" ++ [(set (match_operand:SI 0 "s_register_operand" "=&r") ++ (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "r"))))] ++ "TARGET_32BIT && TARGET_NO_SINGLE_COND_EXEC" ++ "#" ++ [(set_attr "shift" "1") ++ (set_attr "length" "8") ++ (set_attr "predicable" "yes")] ++) ++ ++;; Splitters for ABS patterns. ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (abs:SI (match_operand:SI 1 "s_register_operand" ""))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT && reload_completed && rtx_equal_p(operands[0], operands[1])" ++ [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 1) (const_int 0))) ++ (cond_exec (lt (reg:CC CC_REGNUM) (const_int 0)) ++ (set (match_dup 0) (neg:SI (match_dup 1))))] ++) ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "")))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT && reload_completed && rtx_equal_p(operands[0], operands[1])" ++ [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 1) (const_int 0))) ++ (cond_exec (gt (reg:CC CC_REGNUM) (const_int 0)) ++ (set (match_dup 0) (neg:SI (match_dup 1))))] ++) ++ ++;; GCC does not add/remove clobbers when matching splitters, so we need ++;; variants with and without the CC clobber. ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (abs:SI (match_operand:SI 1 "s_register_operand" "")))] ++ "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])" ++ [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 1))) ++ (set (match_dup 0) (minus:SI (match_dup 0) ++ (ashiftrt:SI (match_dup 1) (const_int 31))))] ++) ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (abs:SI (match_operand:SI 1 "s_register_operand" ""))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])" ++ [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 1))) ++ (set (match_dup 0) (minus:SI (match_dup 0) ++ (ashiftrt:SI (match_dup 1) (const_int 31))))] ++) ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" ""))))] ++ "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])" ++ [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 1))) ++ (set (match_dup 0) (minus:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 0)))] ++) ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "")))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_32BIT && reload_completed && !rtx_equal_p(operands[0], operands[1])" ++ [(set (match_dup 0) (xor:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 1))) ++ (set (match_dup 0) (minus:SI (ashiftrt:SI (match_dup 1) (const_int 31)) ++ (match_dup 0)))] ++) ++ + (define_expand "abssf2" + [(set (match_operand:SF 0 "s_register_operand" "") + (abs:SF (match_operand:SF 1 "s_register_operand" "")))] +@@ -3636,7 +3932,7 @@ + (define_expand "absdf2" + [(set (match_operand:DF 0 "s_register_operand" "") + (abs:DF (match_operand:DF 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + "") + + (define_expand "sqrtsf2" +@@ -3648,12 +3944,12 @@ + (define_expand "sqrtdf2" + [(set (match_operand:DF 0 "s_register_operand" "") + (sqrt:DF (match_operand:DF 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE)" + "") + + (define_insn_and_split "one_cmpldi2" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r") +- (not:DI (match_operand:DI 1 "s_register_operand" "?r,0")))] ++ (not:DI (match_operand:DI 1 "s_register_operand" "0,r")))] + "TARGET_32BIT" + "#" + "TARGET_32BIT && reload_completed" +@@ -3682,7 +3978,8 @@ + (not:SI (match_operand:SI 1 "s_register_operand" "r")))] + "TARGET_32BIT" + "mvn%?\\t%0, %1" +- [(set_attr "predicable" "yes")] ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "mvn")] + ) + + (define_insn "*thumb1_one_cmplsi2" +@@ -3690,7 +3987,8 @@ + (not:SI (match_operand:SI 1 "register_operand" "l")))] + "TARGET_THUMB1" + "mvn\\t%0, %1" +- [(set_attr "length" "2")] ++ [(set_attr "length" "2") ++ (set_attr "insn" "mvn")] + ) + + (define_insn "*notsi_compare0" +@@ -3701,7 +3999,8 @@ + (not:SI (match_dup 1)))] + "TARGET_32BIT" + "mvn%.\\t%0, %1" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "mvn")] + ) + + (define_insn "*notsi_compare0_scratch" +@@ -3711,11 +4010,40 @@ + (clobber (match_scratch:SI 0 "=r"))] + "TARGET_32BIT" + "mvn%.\\t%0, %1" +- [(set_attr "conds" "set")] ++ [(set_attr "conds" "set") ++ (set_attr "insn" "mvn")] + ) + + ;; Fixed <--> Floating conversion insns + ++(define_expand "floatsihf2" ++ [(set (match_operand:HF 0 "general_operand" "") ++ (float:HF (match_operand:SI 1 "general_operand" "")))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1 = gen_reg_rtx (SFmode); ++ expand_float (op1, operands[1], 0); ++ op1 = convert_to_mode (HFmode, op1, 0); ++ emit_move_insn (operands[0], op1); ++ DONE; ++ }" ++) ++ ++(define_expand "floatdihf2" ++ [(set (match_operand:HF 0 "general_operand" "") ++ (float:HF (match_operand:DI 1 "general_operand" "")))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1 = gen_reg_rtx (SFmode); ++ expand_float (op1, operands[1], 0); ++ op1 = convert_to_mode (HFmode, op1, 0); ++ emit_move_insn (operands[0], op1); ++ DONE; ++ }" ++) ++ + (define_expand "floatsisf2" + [(set (match_operand:SF 0 "s_register_operand" "") + (float:SF (match_operand:SI 1 "s_register_operand" "")))] +@@ -3731,7 +4059,7 @@ + (define_expand "floatsidf2" + [(set (match_operand:DF 0 "s_register_operand" "") + (float:DF (match_operand:SI 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + if (TARGET_MAVERICK) + { +@@ -3740,6 +4068,30 @@ + } + ") + ++(define_expand "fix_trunchfsi2" ++ [(set (match_operand:SI 0 "general_operand" "") ++ (fix:SI (fix:HF (match_operand:HF 1 "general_operand" ""))))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1 = convert_to_mode (SFmode, operands[1], 0); ++ expand_fix (operands[0], op1, 0); ++ DONE; ++ }" ++) ++ ++(define_expand "fix_trunchfdi2" ++ [(set (match_operand:DI 0 "general_operand" "") ++ (fix:DI (fix:HF (match_operand:HF 1 "general_operand" ""))))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1 = convert_to_mode (SFmode, operands[1], 0); ++ expand_fix (operands[0], op1, 0); ++ DONE; ++ }" ++) ++ + (define_expand "fix_truncsfsi2" + [(set (match_operand:SI 0 "s_register_operand" "") + (fix:SI (fix:SF (match_operand:SF 1 "s_register_operand" ""))))] +@@ -3759,7 +4111,7 @@ + (define_expand "fix_truncdfsi2" + [(set (match_operand:SI 0 "s_register_operand" "") + (fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" ""))))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + if (TARGET_MAVERICK) + { +@@ -3776,9 +4128,25 @@ + [(set (match_operand:SF 0 "s_register_operand" "") + (float_truncate:SF + (match_operand:DF 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + "" + ) ++ ++/* DFmode -> HFmode conversions have to go through SFmode. */ ++(define_expand "truncdfhf2" ++ [(set (match_operand:HF 0 "general_operand" "") ++ (float_truncate:HF ++ (match_operand:DF 1 "general_operand" "")))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1; ++ op1 = convert_to_mode (SFmode, operands[1], 0); ++ op1 = convert_to_mode (HFmode, op1, 0); ++ emit_move_insn (operands[0], op1); ++ DONE; ++ }" ++) + + ;; Zero and sign extension instructions. + +@@ -3800,6 +4168,7 @@ + return \"mov%?\\t%R0, #0\"; + " + [(set_attr "length" "8") ++ (set_attr "insn" "mov") + (set_attr "predicable" "yes")] + ) + +@@ -3843,6 +4212,7 @@ + " + [(set_attr "length" "8") + (set_attr "shift" "1") ++ (set_attr "insn" "mov") + (set_attr "predicable" "yes")] + ) + +@@ -4123,6 +4493,28 @@ + "" + ) + ++(define_code_iterator ior_xor [ior xor]) ++ ++(define_split ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (ior_xor:SI (and:SI (ashift:SI ++ (match_operand:SI 1 "s_register_operand" "") ++ (match_operand:SI 2 "const_int_operand" "")) ++ (match_operand:SI 3 "const_int_operand" "")) ++ (zero_extend:SI ++ (match_operator 5 "subreg_lowpart_operator" ++ [(match_operand:SI 4 "s_register_operand" "")]))))] ++ "TARGET_32BIT ++ && (INTVAL (operands[3]) ++ == (GET_MODE_MASK (GET_MODE (operands[5])) ++ & (GET_MODE_MASK (GET_MODE (operands[5])) ++ << (INTVAL (operands[2])))))" ++ [(set (match_dup 0) (ior_xor:SI (ashift:SI (match_dup 1) (match_dup 2)) ++ (match_dup 4))) ++ (set (match_dup 0) (zero_extend:SI (match_dup 5)))] ++ "operands[5] = gen_lowpart (GET_MODE (operands[5]), operands[0]);" ++) ++ + (define_insn "*compareqi_eq0" + [(set (reg:CC_Z CC_REGNUM) + (compare:CC_Z (match_operand:QI 0 "s_register_operand" "r") +@@ -4639,9 +5031,24 @@ + (define_expand "extendsfdf2" + [(set (match_operand:DF 0 "s_register_operand" "") + (float_extend:DF (match_operand:SF 1 "s_register_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + "" + ) ++ ++/* HFmode -> DFmode conversions have to go through SFmode. */ ++(define_expand "extendhfdf2" ++ [(set (match_operand:DF 0 "general_operand" "") ++ (float_extend:DF (match_operand:HF 1 "general_operand" "")))] ++ "TARGET_EITHER" ++ " ++ { ++ rtx op1; ++ op1 = convert_to_mode (SFmode, operands[1], 0); ++ op1 = convert_to_mode (DFmode, op1, 0); ++ emit_insn (gen_movdf (operands[0], op1)); ++ DONE; ++ }" ++) + + ;; Move insns (including loads and stores) + +@@ -4877,6 +5284,7 @@ + }" + [(set_attr "length" "4,4,6,2,2,6,4,4") + (set_attr "type" "*,*,*,load2,store2,load2,store2,*") ++ (set_attr "insn" "*,mov,*,*,*,*,*,mov") + (set_attr "pool_range" "*,*,*,*,*,1020,*,*")] + ) + +@@ -4903,14 +5311,6 @@ + optimize && can_create_pseudo_p ()); + DONE; + } +- +- if (TARGET_USE_MOVT && !target_word_relocations +- && GET_CODE (operands[1]) == SYMBOL_REF +- && !flag_pic && !arm_tls_referenced_p (operands[1])) +- { +- arm_emit_movpair (operands[0], operands[1]); +- DONE; +- } + } + else /* TARGET_THUMB1... */ + { +@@ -4984,18 +5384,9 @@ + (set_attr "length" "4")] + ) + +-(define_insn "*arm_movw" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=r") +- (high:SI (match_operand:SI 1 "general_operand" "i")))] +- "TARGET_32BIT" +- "movw%?\t%0, #:lower16:%c1" +- [(set_attr "predicable" "yes") +- (set_attr "length" "4")] +-) +- + (define_insn "*arm_movsi_insn" + [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m") +- (match_operand:SI 1 "general_operand" "rk, I,K,N,mi,rk"))] ++ (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,rk"))] + "TARGET_ARM && ! TARGET_IWMMXT + && !(TARGET_HARD_FLOAT && TARGET_VFP) + && ( register_operand (operands[0], SImode) +@@ -5008,6 +5399,7 @@ + ldr%?\\t%0, %1 + str%?\\t%1, %0" + [(set_attr "type" "*,*,*,*,load1,store1") ++ (set_attr "insn" "mov,mov,mvn,mov,*,*") + (set_attr "predicable" "yes") + (set_attr "pool_range" "*,*,*,*,4096,*") + (set_attr "neg_pool_range" "*,*,*,*,4084,*")] +@@ -5027,9 +5419,33 @@ + " + ) + ++(define_split ++ [(set (match_operand:SI 0 "arm_general_register_operand" "") ++ (match_operand:SI 1 "general_operand" ""))] ++ "TARGET_32BIT ++ && TARGET_USE_MOVT ++ && (GET_CODE (operands[1]) == SYMBOL_REF ++ || (GET_CODE (operands[1]) == CONST ++ && GET_CODE (XEXP (operands[1], 0)) == PLUS ++ && GET_CODE (XEXP (XEXP (operands[1], 0), 0)) == SYMBOL_REF ++ && GET_CODE (XEXP (XEXP (operands[1], 0), 1)) == CONST_INT ++ /* The targets that use RELA relocations can have arbitrary ++ offset. The others targets, which use REL relocations, ++ have limited offset encodings. */ ++ && (TARGET_USE_RELA ++ || (INTVAL (XEXP (XEXP (operands[1], 0), 1)) >= -0x8000 ++ && INTVAL (XEXP (XEXP (operands[1], 0), 1)) <= 0x7fff)))) ++ && !flag_pic && !target_word_relocations ++ && !arm_tls_referenced_p (operands[1])" ++ [(clobber (const_int 0))] ++{ ++ arm_emit_movpair (operands[0], operands[1]); ++ DONE; ++}) ++ + (define_insn "*thumb1_movsi_insn" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*lhk") +- (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*lhk"))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*l*h*k") ++ (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*l*h*k"))] + "TARGET_THUMB1 + && ( register_operand (operands[0], SImode) + || register_operand (operands[1], SImode))" +@@ -5065,7 +5481,7 @@ + (set (match_dup 0) (ashift:SI (match_dup 0) (match_dup 2)))] + " + { +- unsigned HOST_WIDE_INT val = INTVAL (operands[1]); ++ unsigned HOST_WIDE_INT val = INTVAL (operands[1]) & 0xffffffffu; + unsigned HOST_WIDE_INT mask = 0xff; + int i; + +@@ -5627,6 +6043,7 @@ + ldr%(h%)\\t%0, %1\\t%@ movhi" + [(set_attr "type" "*,*,store1,load1") + (set_attr "predicable" "yes") ++ (set_attr "insn" "mov,mvn,*,*") + (set_attr "pool_range" "*,*,*,256") + (set_attr "neg_pool_range" "*,*,*,244")] + ) +@@ -5638,7 +6055,8 @@ + "@ + mov%?\\t%0, %1\\t%@ movhi + mvn%?\\t%0, #%B1\\t%@ movhi" +- [(set_attr "predicable" "yes")] ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "mov,mvn")] + ) + + (define_expand "thumb_movhi_clobber" +@@ -5769,6 +6187,7 @@ + ldr%(b%)\\t%0, %1 + str%(b%)\\t%1, %0" + [(set_attr "type" "*,*,load1,store1") ++ (set_attr "insn" "mov,mvn,*,*") + (set_attr "predicable" "yes")] + ) + +@@ -5787,9 +6206,111 @@ + mov\\t%0, %1" + [(set_attr "length" "2") + (set_attr "type" "*,load1,store1,*,*,*") ++ (set_attr "insn" "*,*,*,mov,mov,mov") + (set_attr "pool_range" "*,32,*,*,*,*")] + ) + ++;; HFmode moves ++(define_expand "movhf" ++ [(set (match_operand:HF 0 "general_operand" "") ++ (match_operand:HF 1 "general_operand" ""))] ++ "TARGET_EITHER" ++ " ++ if (TARGET_32BIT) ++ { ++ if (GET_CODE (operands[0]) == MEM) ++ operands[1] = force_reg (HFmode, operands[1]); ++ } ++ else /* TARGET_THUMB1 */ ++ { ++ if (can_create_pseudo_p ()) ++ { ++ if (GET_CODE (operands[0]) != REG) ++ operands[1] = force_reg (HFmode, operands[1]); ++ } ++ } ++ " ++) ++ ++(define_insn "*arm32_movhf" ++ [(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,r,r") ++ (match_operand:HF 1 "general_operand" " m,r,r,F"))] ++ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_FP16) ++ && ( s_register_operand (operands[0], HFmode) ++ || s_register_operand (operands[1], HFmode))" ++ "* ++ switch (which_alternative) ++ { ++ case 0: /* ARM register from memory */ ++ return \"ldr%(h%)\\t%0, %1\\t%@ __fp16\"; ++ case 1: /* memory from ARM register */ ++ return \"str%(h%)\\t%1, %0\\t%@ __fp16\"; ++ case 2: /* ARM register from ARM register */ ++ return \"mov%?\\t%0, %1\\t%@ __fp16\"; ++ case 3: /* ARM register from constant */ ++ { ++ REAL_VALUE_TYPE r; ++ long bits; ++ rtx ops[4]; ++ ++ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); ++ bits = real_to_target (NULL, &r, HFmode); ++ ops[0] = operands[0]; ++ ops[1] = GEN_INT (bits); ++ ops[2] = GEN_INT (bits & 0xff00); ++ ops[3] = GEN_INT (bits & 0x00ff); ++ ++ if (arm_arch_thumb2) ++ output_asm_insn (\"movw%?\\t%0, %1\", ops); ++ else ++ output_asm_insn (\"mov%?\\t%0, %2\;orr%?\\t%0, %0, %3\", ops); ++ return \"\"; ++ } ++ default: ++ gcc_unreachable (); ++ } ++ " ++ [(set_attr "conds" "unconditional") ++ (set_attr "type" "load1,store1,*,*") ++ (set_attr "length" "4,4,4,8") ++ (set_attr "predicable" "yes") ++ ] ++) ++ ++(define_insn "*thumb1_movhf" ++ [(set (match_operand:HF 0 "nonimmediate_operand" "=l,l,m,*r,*h") ++ (match_operand:HF 1 "general_operand" "l,mF,l,*h,*r"))] ++ "TARGET_THUMB1 ++ && ( s_register_operand (operands[0], HFmode) ++ || s_register_operand (operands[1], HFmode))" ++ "* ++ switch (which_alternative) ++ { ++ case 1: ++ { ++ rtx addr; ++ gcc_assert (GET_CODE(operands[1]) == MEM); ++ addr = XEXP (operands[1], 0); ++ if (GET_CODE (addr) == LABEL_REF ++ || (GET_CODE (addr) == CONST ++ && GET_CODE (XEXP (addr, 0)) == PLUS ++ && GET_CODE (XEXP (XEXP (addr, 0), 0)) == LABEL_REF ++ && GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST_INT)) ++ { ++ /* Constant pool entry. */ ++ return \"ldr\\t%0, %1\"; ++ } ++ return \"ldrh\\t%0, %1\"; ++ } ++ case 2: return \"strh\\t%1, %0\"; ++ default: return \"mov\\t%0, %1\"; ++ } ++ " ++ [(set_attr "length" "2") ++ (set_attr "type" "*,load1,store1,*,*") ++ (set_attr "pool_range" "*,1020,*,*,*")] ++) ++ + (define_expand "movsf" + [(set (match_operand:SF 0 "general_operand" "") + (match_operand:SF 1 "general_operand" ""))] +@@ -5842,6 +6363,7 @@ + [(set_attr "length" "4,4,4") + (set_attr "predicable" "yes") + (set_attr "type" "*,load1,store1") ++ (set_attr "insn" "mov,*,*") + (set_attr "pool_range" "*,4096,*") + (set_attr "neg_pool_range" "*,4084,*")] + ) +@@ -6297,7 +6819,7 @@ + (match_operand:BLK 1 "general_operand" "") + (match_operand:SI 2 "const_int_operand" "") + (match_operand:SI 3 "const_int_operand" "")] +- "TARGET_EITHER" ++ "TARGET_EITHER && !low_irq_latency" + " + if (TARGET_32BIT) + { +@@ -7476,7 +7998,7 @@ + (define_expand "cmpdf" + [(match_operand:DF 0 "s_register_operand" "") + (match_operand:DF 1 "arm_float_compare_operand" "")] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE" + " + arm_compare_op0 = operands[0]; + arm_compare_op1 = operands[1]; +@@ -7507,7 +8029,11 @@ + (set_attr "shift" "1") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arm_cmpsi_shiftsi_swp" +@@ -7522,7 +8048,11 @@ + (set_attr "shift" "1") + (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arm_cmpsi_negshiftsi_si" +@@ -7537,9 +8067,75 @@ + [(set_attr "conds" "set") + (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] ++) ++ ++;; DImode comparisons. The generic code generates branches that ++;; if-conversion can not reduce to a conditional compare, so we do ++;; that directly. ++ ++(define_insn "*arm_cmpdi_insn" ++ [(set (reg:CC_NCV CC_REGNUM) ++ (compare:CC_NCV (match_operand:DI 0 "s_register_operand" "r") ++ (match_operand:DI 1 "arm_di_operand" "rDi"))) ++ (clobber (match_scratch:SI 2 "=r"))] ++ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)" ++ "cmp\\t%Q0, %Q1\;sbcs\\t%2, %R0, %R1" ++ [(set_attr "conds" "set") ++ (set_attr "length" "8")] ++) ++ ++(define_insn "*arm_cmpdi_unsigned" ++ [(set (reg:CC_CZ CC_REGNUM) ++ (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r") ++ (match_operand:DI 1 "arm_di_operand" "rDi")))] ++ "TARGET_ARM" ++ "cmp%?\\t%R0, %R1\;cmpeq\\t%Q0, %Q1" ++ [(set_attr "conds" "set") ++ (set_attr "length" "8")] ++) ++ ++(define_insn "*arm_cmpdi_zero" ++ [(set (reg:CC_Z CC_REGNUM) ++ (compare:CC_Z (match_operand:DI 0 "s_register_operand" "r") ++ (const_int 0))) ++ (clobber (match_scratch:SI 1 "=r"))] ++ "TARGET_32BIT" ++ "orr%.\\t%1, %Q0, %R0" ++ [(set_attr "conds" "set") ++ (set_attr "insn" "orr")] + ) + ++(define_insn "*thumb_cmpdi_zero" ++ [(set (reg:CC_Z CC_REGNUM) ++ (compare:CC_Z (match_operand:DI 0 "s_register_operand" "l") ++ (const_int 0))) ++ (clobber (match_scratch:SI 1 "=l"))] ++ "TARGET_THUMB1" ++ "orr\\t%1, %Q0, %R0" ++ [(set_attr "conds" "set") ++ (set_attr "insn" "orr") ++ (set_attr "length" "2")] ++) ++ ++(define_expand "cmpdi" ++ [(match_operand:DI 0 "cmpdi_operand" "") ++ (match_operand:DI 1 "cmpdi_operand" "")] ++ "TARGET_32BIT" ++ "{ ++ /* We should not have two constants. */ ++ gcc_assert (GET_MODE (operands[0]) == DImode ++ || GET_MODE (operands[1]) == DImode); ++ ++ arm_compare_op0 = operands[0]; ++ arm_compare_op1 = operands[1]; ++ DONE; ++ }") ++ + ;; Cirrus SF compare instruction + (define_insn "*cirrus_cmpsf" + [(set (reg:CCFP CC_REGNUM) +@@ -7562,17 +8158,6 @@ + (set_attr "cirrus" "compare")] + ) + +-;; Cirrus DI compare instruction +-(define_expand "cmpdi" +- [(match_operand:DI 0 "cirrus_fp_register" "") +- (match_operand:DI 1 "cirrus_fp_register" "")] +- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK" +- "{ +- arm_compare_op0 = operands[0]; +- arm_compare_op1 = operands[1]; +- DONE; +- }") +- + (define_insn "*cirrus_cmpdi" + [(set (reg:CC CC_REGNUM) + (compare:CC (match_operand:DI 0 "cirrus_fp_register" "v") +@@ -7624,8 +8209,18 @@ + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (GT, arm_compare_op0, arm_compare_op1);" +-) ++{ ++ if (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_blt (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (GT, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "ble" + [(set (pc) +@@ -7633,8 +8228,18 @@ + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (LE, arm_compare_op0, arm_compare_op1);" +-) ++{ ++ if (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_bge (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (LE, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "bge" + [(set (pc) +@@ -7660,8 +8265,18 @@ + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (GTU, arm_compare_op0, arm_compare_op1);" +-) ++{ ++ if (!TARGET_ARM && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_bltu (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (GTU, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "bleu" + [(set (pc) +@@ -7669,8 +8284,18 @@ + (label_ref (match_operand 0 "" "")) + (pc)))] + "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (LEU, arm_compare_op0, arm_compare_op1);" +-) ++{ ++ if (!TARGET_ARM && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_bgeu (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (LEU, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "bgeu" + [(set (pc) +@@ -7879,77 +8504,117 @@ + (define_expand "seq" + [(set (match_operand:SI 0 "s_register_operand" "") + (eq:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (EQ, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "sne" + [(set (match_operand:SI 0 "s_register_operand" "") + (ne:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (NE, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "sgt" + [(set (match_operand:SI 0 "s_register_operand" "") + (gt:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (GT, arm_compare_op0, arm_compare_op1);" +-) ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" ++{ ++ if (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_slt (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (GT, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "sle" + [(set (match_operand:SI 0 "s_register_operand" "") + (le:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (LE, arm_compare_op0, arm_compare_op1);" +-) ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" ++{ ++ if (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_sge (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (LE, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "sge" + [(set (match_operand:SI 0 "s_register_operand" "") + (ge:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (GE, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "slt" + [(set (match_operand:SI 0 "s_register_operand" "") + (lt:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (LT, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "sgtu" + [(set (match_operand:SI 0 "s_register_operand" "") + (gtu:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (GTU, arm_compare_op0, arm_compare_op1);" +-) ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" ++{ ++ if (!TARGET_ARM && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_sltu (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (GTU, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "sleu" + [(set (match_operand:SI 0 "s_register_operand" "") + (leu:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" +- "operands[1] = arm_gen_compare_reg (LEU, arm_compare_op0, arm_compare_op1);" +-) ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" ++{ ++ if (!TARGET_ARM && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ emit_insn (gen_sgeu (operands[0])); ++ DONE; ++ } ++ operands[1] = arm_gen_compare_reg (LEU, arm_compare_op0, arm_compare_op1); ++}) + + (define_expand "sgeu" + [(set (match_operand:SI 0 "s_register_operand" "") + (geu:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (GEU, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "sltu" + [(set (match_operand:SI 0 "s_register_operand" "") + (ltu:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (LTU, arm_compare_op0, arm_compare_op1);" + ) + + (define_expand "sunordered" + [(set (match_operand:SI 0 "s_register_operand" "") + (unordered:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (UNORDERED, arm_compare_op0, + arm_compare_op1);" + ) +@@ -7957,7 +8622,7 @@ + (define_expand "sordered" + [(set (match_operand:SI 0 "s_register_operand" "") + (ordered:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (ORDERED, arm_compare_op0, + arm_compare_op1);" + ) +@@ -7965,7 +8630,7 @@ + (define_expand "sungt" + [(set (match_operand:SI 0 "s_register_operand" "") + (ungt:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (UNGT, arm_compare_op0, + arm_compare_op1);" + ) +@@ -7973,7 +8638,7 @@ + (define_expand "sunge" + [(set (match_operand:SI 0 "s_register_operand" "") + (unge:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (UNGE, arm_compare_op0, + arm_compare_op1);" + ) +@@ -7981,7 +8646,7 @@ + (define_expand "sunlt" + [(set (match_operand:SI 0 "s_register_operand" "") + (unlt:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (UNLT, arm_compare_op0, + arm_compare_op1);" + ) +@@ -7989,7 +8654,7 @@ + (define_expand "sunle" + [(set (match_operand:SI 0 "s_register_operand" "") + (unle:SI (match_dup 1) (const_int 0)))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP) && !TARGET_NO_COND_EXEC" + "operands[1] = arm_gen_compare_reg (UNLE, arm_compare_op0, + arm_compare_op1);" + ) +@@ -8018,6 +8683,7 @@ + "TARGET_ARM" + "mov%D1\\t%0, #0\;mov%d1\\t%0, #1" + [(set_attr "conds" "use") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -8028,6 +8694,7 @@ + "TARGET_ARM" + "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0" + [(set_attr "conds" "use") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -8038,6 +8705,7 @@ + "TARGET_ARM" + "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1" + [(set_attr "conds" "use") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -8241,7 +8909,7 @@ + (if_then_else:SI (match_operand 1 "arm_comparison_operator" "") + (match_operand:SI 2 "arm_not_operand" "") + (match_operand:SI 3 "arm_not_operand" "")))] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_COND_EXEC" + " + { + enum rtx_code code = GET_CODE (operands[1]); +@@ -8250,6 +8918,16 @@ + if (code == UNEQ || code == LTGT) + FAIL; + ++ if ((code == GT || code == LE) ++ && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ code = swap_condition (code); ++ } ++ + ccreg = arm_gen_compare_reg (code, arm_compare_op0, arm_compare_op1); + operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx); + }" +@@ -8260,7 +8938,7 @@ + (if_then_else:SF (match_operand 1 "arm_comparison_operator" "") + (match_operand:SF 2 "s_register_operand" "") + (match_operand:SF 3 "nonmemory_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_NO_COND_EXEC" + " + { + enum rtx_code code = GET_CODE (operands[1]); +@@ -8269,6 +8947,16 @@ + if (code == UNEQ || code == LTGT) + FAIL; + ++ if ((code == GT || code == LE) ++ && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ code = swap_condition (code); ++ } ++ + /* When compiling for SOFT_FLOAT, ensure both arms are in registers. + Otherwise, ensure it is a valid FP add operand */ + if ((!(TARGET_HARD_FLOAT && TARGET_FPA)) +@@ -8285,7 +8973,7 @@ + (if_then_else:DF (match_operand 1 "arm_comparison_operator" "") + (match_operand:DF 2 "s_register_operand" "") + (match_operand:DF 3 "arm_float_add_operand" "")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP)" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && (TARGET_FPA || TARGET_VFP_DOUBLE) && !TARGET_NO_COND_EXEC" + " + { + enum rtx_code code = GET_CODE (operands[1]); +@@ -8294,6 +8982,16 @@ + if (code == UNEQ || code == LTGT) + FAIL; + ++ if ((code == GT || code == LE) ++ && (GET_MODE (arm_compare_op0) == DImode ++ || GET_MODE (arm_compare_op1) == DImode)) ++ { ++ rtx tem = arm_compare_op0; ++ arm_compare_op0 = arm_compare_op1; ++ arm_compare_op1 = tem; ++ code = swap_condition (code); ++ } ++ + ccreg = arm_gen_compare_reg (code, arm_compare_op0, arm_compare_op1); + operands[1] = gen_rtx_fmt_ee (code, VOIDmode, ccreg, const0_rtx); + }" +@@ -8317,7 +9015,8 @@ + mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2 + mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2" + [(set_attr "length" "4,4,4,4,8,8,8,8") +- (set_attr "conds" "use")] ++ (set_attr "conds" "use") ++ (set_attr "insn" "mov,mvn,mov,mvn,mov,mov,mvn,mvn")] + ) + + (define_insn "*movsfcc_soft_insn" +@@ -8330,7 +9029,8 @@ + "@ + mov%D3\\t%0, %2 + mov%d3\\t%0, %1" +- [(set_attr "conds" "use")] ++ [(set_attr "conds" "use") ++ (set_attr "insn" "mov")] + ) + + +@@ -8553,7 +9253,7 @@ + (set_attr "type" "call")] + ) + +-;; Note: see *call_mem ++;; Note: see *call_mem. + + (define_insn "*call_value_mem" + [(set (match_operand 0 "" "") +@@ -8610,7 +9310,7 @@ + (match_operand 1 "" "")) + (use (match_operand 2 "" "")) + (clobber (reg:SI LR_REGNUM))] +- "TARGET_ARM ++ "TARGET_32BIT + && (GET_CODE (operands[0]) == SYMBOL_REF) + && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[0]))" + "* +@@ -8626,7 +9326,7 @@ + (match_operand:SI 2 "" ""))) + (use (match_operand 3 "" "")) + (clobber (reg:SI LR_REGNUM))] +- "TARGET_ARM ++ "TARGET_32BIT + && (GET_CODE (operands[1]) == SYMBOL_REF) + && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[1]))" + "* +@@ -8641,7 +9341,7 @@ + (match_operand:SI 1 "" "")) + (use (match_operand 2 "" "")) + (clobber (reg:SI LR_REGNUM))] +- "TARGET_THUMB ++ "TARGET_THUMB1 + && GET_CODE (operands[0]) == SYMBOL_REF + && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[0]))" + "bl\\t%a0" +@@ -8655,7 +9355,7 @@ + (match_operand 2 "" ""))) + (use (match_operand 3 "" "")) + (clobber (reg:SI LR_REGNUM))] +- "TARGET_THUMB ++ "TARGET_THUMB1 + && GET_CODE (operands[1]) == SYMBOL_REF + && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[1]))" + "bl\\t%a1" +@@ -8669,7 +9369,7 @@ + (match_operand 1 "general_operand" "")) + (return) + (use (match_operand 2 "" ""))])] +- "TARGET_ARM" ++ "TARGET_32BIT" + " + { + if (operands[2] == NULL_RTX) +@@ -8683,7 +9383,7 @@ + (match_operand 2 "general_operand" ""))) + (return) + (use (match_operand 3 "" ""))])] +- "TARGET_ARM" ++ "TARGET_32BIT" + " + { + if (operands[3] == NULL_RTX) +@@ -8696,7 +9396,7 @@ + (match_operand 1 "" "")) + (return) + (use (match_operand 2 "" ""))] +- "TARGET_ARM && GET_CODE (operands[0]) == SYMBOL_REF" ++ "TARGET_32BIT && GET_CODE (operands[0]) == SYMBOL_REF" + "* + return NEED_PLT_RELOC ? \"b%?\\t%a0(PLT)\" : \"b%?\\t%a0\"; + " +@@ -8709,15 +9409,20 @@ + (match_operand 2 "" ""))) + (return) + (use (match_operand 3 "" ""))] +- "TARGET_ARM && GET_CODE (operands[1]) == SYMBOL_REF" ++ "TARGET_32BIT && GET_CODE (operands[1]) == SYMBOL_REF" + "* + return NEED_PLT_RELOC ? \"b%?\\t%a1(PLT)\" : \"b%?\\t%a1\"; + " + [(set_attr "type" "call")] + ) + ++(define_expand "return" ++ [(return)] ++ "TARGET_32BIT && USE_RETURN_INSN (FALSE)" ++ "") ++ + ;; Often the return insn will be the same as loading from memory, so set attr +-(define_insn "return" ++(define_insn "*arm_return" + [(return)] + "TARGET_ARM && USE_RETURN_INSN (FALSE)" + "* +@@ -8734,13 +9439,26 @@ + (set_attr "predicable" "yes")] + ) + ++;; Note: this is not predicable, to avoid issues with linker-generated ++;; interworking stubs. ++(define_insn "*thumb2_return" ++ [(return)] ++ "TARGET_THUMB2 && USE_RETURN_INSN (FALSE)" ++ "* ++ { ++ return output_return_instruction (const_true_rtx, TRUE, FALSE); ++ }" ++ [(set_attr "type" "load1") ++ (set_attr "length" "12")] ++) ++ + (define_insn "*cond_return" + [(set (pc) + (if_then_else (match_operator 0 "arm_comparison_operator" + [(match_operand 1 "cc_register" "") (const_int 0)]) + (return) + (pc)))] +- "TARGET_ARM && USE_RETURN_INSN (TRUE)" ++ "TARGET_ARM && USE_RETURN_INSN (TRUE) && !TARGET_NO_COND_EXEC" + "* + { + if (arm_ccfsm_state == 2) +@@ -8761,7 +9479,7 @@ + [(match_operand 1 "cc_register" "") (const_int 0)]) + (pc) + (return)))] +- "TARGET_ARM && USE_RETURN_INSN (TRUE)" ++ "TARGET_ARM && USE_RETURN_INSN (TRUE) && !TARGET_NO_COND_EXEC" + "* + { + if (arm_ccfsm_state == 2) +@@ -9072,14 +9790,18 @@ + [(match_operator:SI 3 "shift_operator" + [(match_operand:SI 4 "s_register_operand" "r") + (match_operand:SI 5 "reg_or_int_operand" "rI")]) +- (match_operand:SI 2 "s_register_operand" "r")]))] ++ (match_operand:SI 2 "s_register_operand" "rk")]))] + "TARGET_ARM" + "%i1%?\\t%0, %2, %4%S3" + [(set_attr "predicable" "yes") + (set_attr "shift" "4") + (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_split +@@ -9117,7 +9839,11 @@ + (set_attr "shift" "4") + (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*arith_shiftsi_compare0_scratch" +@@ -9135,7 +9861,11 @@ + (set_attr "shift" "4") + (set (attr "type") (if_then_else (match_operand 5 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*sub_shiftsi" +@@ -9150,7 +9880,11 @@ + (set_attr "shift" "3") + (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*sub_shiftsi_compare0" +@@ -9170,7 +9904,11 @@ + (set_attr "shift" "3") + (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + (define_insn "*sub_shiftsi_compare0_scratch" +@@ -9188,7 +9926,11 @@ + (set_attr "shift" "3") + (set (attr "type") (if_then_else (match_operand 4 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)))] + ) + + +@@ -9201,6 +9943,7 @@ + "TARGET_ARM" + "mov%D1\\t%0, #0\;and%d1\\t%0, %2, #1" + [(set_attr "conds" "use") ++ (set_attr "insn" "mov") + (set_attr "length" "8")] + ) + +@@ -9214,6 +9957,7 @@ + orr%d2\\t%0, %1, #1 + mov%D2\\t%0, %1\;orr%d2\\t%0, %1, #1" + [(set_attr "conds" "use") ++ (set_attr "insn" "orr") + (set_attr "length" "4,8")] + ) + +@@ -9223,7 +9967,7 @@ + [(match_operand:SI 2 "s_register_operand" "r,r") + (match_operand:SI 3 "arm_add_operand" "rI,L")])) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "* + if (operands[3] == const0_rtx) + { +@@ -9278,6 +10022,7 @@ + return \"\"; + " + [(set_attr "conds" "use") ++ (set_attr "insn" "mov") + (set_attr "length" "4,4,8")] + ) + +@@ -9289,7 +10034,7 @@ + (match_operand:SI 3 "arm_rhs_operand" "rI,rI")]) + (match_operand:SI 1 "s_register_operand" "0,?r")])) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "* + if (GET_CODE (operands[4]) == LT && operands[3] == const0_rtx) + return \"%i5\\t%0, %1, %2, lsr #31\"; +@@ -9685,7 +10430,7 @@ + (match_operand:SI 1 "arm_rhs_operand" "0,rI,?rI") + (match_operand:SI 2 "arm_rhs_operand" "rI,0,rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_COND_EXEC" + "* + if (GET_CODE (operands[5]) == LT + && (operands[4] == const0_rtx)) +@@ -9751,7 +10496,7 @@ + (match_operand:SI 3 "arm_add_operand" "rIL,rIL")) + (match_operand:SI 1 "arm_rhs_operand" "0,?rI"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -9787,7 +10532,7 @@ + (match_operand:SI 2 "s_register_operand" "r,r") + (match_operand:SI 3 "arm_add_operand" "rIL,rIL")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -9825,7 +10570,7 @@ + [(match_operand:SI 3 "s_register_operand" "r") + (match_operand:SI 4 "arm_rhs_operand" "rI")]))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "12")] +@@ -9975,7 +10720,7 @@ + (not:SI + (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -9994,6 +10739,7 @@ + mov%d4\\t%0, %1\;mvn%D4\\t%0, %2 + mvn%d4\\t%0, #%B1\;mvn%D4\\t%0, %2" + [(set_attr "conds" "use") ++ (set_attr "insn" "mvn") + (set_attr "length" "4,8,8")] + ) + +@@ -10007,7 +10753,7 @@ + (match_operand:SI 2 "s_register_operand" "r,r")) + (match_operand:SI 1 "arm_not_operand" "0,?rIK"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -10026,6 +10772,7 @@ + mov%D4\\t%0, %1\;mvn%d4\\t%0, %2 + mvn%D4\\t%0, #%B1\;mvn%d4\\t%0, %2" + [(set_attr "conds" "use") ++ (set_attr "insn" "mvn") + (set_attr "length" "4,8,8")] + ) + +@@ -10040,7 +10787,7 @@ + (match_operand:SI 3 "arm_rhs_operand" "rM,rM")]) + (match_operand:SI 1 "arm_not_operand" "0,?rIK"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -10062,10 +10809,23 @@ + mvn%D5\\t%0, #%B1\;mov%d5\\t%0, %2%S4" + [(set_attr "conds" "use") + (set_attr "shift" "2") +- (set_attr "length" "4,8,8") ++ (set_attr "insn" "mov") + (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set_attr_alternative "length" ++ [(if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)) ++ (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 12) ++ (const_int 8)) ++ (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 12) ++ (const_int 8))])] + ) + + (define_insn "*ifcompare_move_shift" +@@ -10079,7 +10839,7 @@ + [(match_operand:SI 2 "s_register_operand" "r,r") + (match_operand:SI 3 "arm_rhs_operand" "rM,rM")]))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -10101,10 +10861,24 @@ + mvn%d5\\t%0, #%B1\;mov%D5\\t%0, %2%S4" + [(set_attr "conds" "use") + (set_attr "shift" "2") +- (set_attr "length" "4,8,8") ++ (set_attr "insn" "mov") + (set (attr "type") (if_then_else (match_operand 3 "const_int_operand" "") + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set_attr_alternative "length" ++ [(if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 8) ++ (const_int 4)) ++ (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 12) ++ (const_int 8)) ++ (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 12) ++ (const_int 8))]) ++ (set_attr "insn" "mov")] + ) + + (define_insn "*ifcompare_shift_shift" +@@ -10120,7 +10894,7 @@ + [(match_operand:SI 3 "s_register_operand" "r") + (match_operand:SI 4 "arm_rhs_operand" "rM")]))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "12")] +@@ -10141,12 +10915,16 @@ + "mov%d5\\t%0, %1%S6\;mov%D5\\t%0, %3%S7" + [(set_attr "conds" "use") + (set_attr "shift" "1") +- (set_attr "length" "8") ++ (set_attr "insn" "mov") + (set (attr "type") (if_then_else + (and (match_operand 2 "const_int_operand" "") + (match_operand 4 "const_int_operand" "")) + (const_string "alu_shift") +- (const_string "alu_shift_reg")))] ++ (const_string "alu_shift_reg"))) ++ (set (attr "length") (if_then_else (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "fix_janus" "yes")) ++ (const_int 16) ++ (const_int 8)))] + ) + + (define_insn "*ifcompare_not_arith" +@@ -10160,7 +10938,7 @@ + [(match_operand:SI 2 "s_register_operand" "r") + (match_operand:SI 3 "arm_rhs_operand" "rI")]))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "12")] +@@ -10178,6 +10956,7 @@ + "TARGET_ARM" + "mvn%d5\\t%0, %1\;%I6%D5\\t%0, %2, %3" + [(set_attr "conds" "use") ++ (set_attr "insn" "mvn") + (set_attr "length" "8")] + ) + +@@ -10192,7 +10971,7 @@ + (match_operand:SI 3 "arm_rhs_operand" "rI")]) + (not:SI (match_operand:SI 1 "s_register_operand" "r")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "12")] +@@ -10210,6 +10989,7 @@ + "TARGET_ARM" + "mvn%D5\\t%0, %1\;%I6%d5\\t%0, %2, %3" + [(set_attr "conds" "use") ++ (set_attr "insn" "mvn") + (set_attr "length" "8")] + ) + +@@ -10222,7 +11002,7 @@ + (neg:SI (match_operand:SI 2 "s_register_operand" "r,r")) + (match_operand:SI 1 "arm_not_operand" "0,?rIK"))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -10253,7 +11033,7 @@ + (match_operand:SI 1 "arm_not_operand" "0,?rIK") + (neg:SI (match_operand:SI 2 "s_register_operand" "r,r")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM" ++ "TARGET_ARM && !TARGET_NO_SINGLE_COND_EXEC" + "#" + [(set_attr "conds" "clob") + (set_attr "length" "8,12")] +@@ -10621,7 +11401,7 @@ + (match_dup 0) + (match_operand 4 "" ""))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM && reload_completed" ++ "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC" + [(set (match_dup 5) (match_dup 6)) + (cond_exec (match_dup 7) + (set (match_dup 0) (match_dup 4)))] +@@ -10649,7 +11429,7 @@ + (match_operand 4 "" "") + (match_dup 0))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM && reload_completed" ++ "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC" + [(set (match_dup 5) (match_dup 6)) + (cond_exec (match_op_dup 1 [(match_dup 5) (const_int 0)]) + (set (match_dup 0) (match_dup 4)))] +@@ -10670,7 +11450,7 @@ + (match_operand 4 "" "") + (match_operand 5 "" ""))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM && reload_completed" ++ "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC" + [(set (match_dup 6) (match_dup 7)) + (cond_exec (match_op_dup 1 [(match_dup 6) (const_int 0)]) + (set (match_dup 0) (match_dup 4))) +@@ -10702,7 +11482,7 @@ + (not:SI + (match_operand:SI 5 "s_register_operand" "")))) + (clobber (reg:CC CC_REGNUM))] +- "TARGET_ARM && reload_completed" ++ "TARGET_ARM && reload_completed && !TARGET_NO_SINGLE_COND_EXEC" + [(set (match_dup 6) (match_dup 7)) + (cond_exec (match_op_dup 1 [(match_dup 6) (const_int 0)]) + (set (match_dup 0) (match_dup 4))) +@@ -10737,6 +11517,7 @@ + mvn%D4\\t%0, %2 + mov%d4\\t%0, %1\;mvn%D4\\t%0, %2" + [(set_attr "conds" "use") ++ (set_attr "insn" "mvn") + (set_attr "length" "4,8")] + ) + +@@ -10871,6 +11652,24 @@ + " + ) + ++(define_insn "align_16" ++ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN16)] ++ "TARGET_EITHER" ++ "* ++ assemble_align (128); ++ return \"\"; ++ " ++) ++ ++(define_insn "align_32" ++ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN32)] ++ "TARGET_EITHER" ++ "* ++ assemble_align (256); ++ return \"\"; ++ " ++) ++ + (define_insn "consttable_end" + [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_END)] + "TARGET_EITHER" +@@ -10897,6 +11696,7 @@ + "TARGET_THUMB1" + "* + making_const_table = TRUE; ++ gcc_assert (GET_MODE_CLASS (GET_MODE (operands[0])) != MODE_FLOAT); + assemble_integer (operands[0], 2, BITS_PER_WORD, 1); + assemble_zeros (2); + return \"\"; +@@ -10909,19 +11709,30 @@ + "TARGET_EITHER" + "* + { ++ rtx x = operands[0]; + making_const_table = TRUE; +- switch (GET_MODE_CLASS (GET_MODE (operands[0]))) ++ switch (GET_MODE_CLASS (GET_MODE (x))) + { + case MODE_FLOAT: +- { +- REAL_VALUE_TYPE r; +- REAL_VALUE_FROM_CONST_DOUBLE (r, operands[0]); +- assemble_real (r, GET_MODE (operands[0]), BITS_PER_WORD); +- break; +- } ++ if (GET_MODE (x) == HFmode) ++ arm_emit_fp16_const (x); ++ else ++ { ++ REAL_VALUE_TYPE r; ++ REAL_VALUE_FROM_CONST_DOUBLE (r, x); ++ assemble_real (r, GET_MODE (x), BITS_PER_WORD); ++ } ++ break; + default: +- assemble_integer (operands[0], 4, BITS_PER_WORD, 1); +- mark_symbol_refs_as_used (operands[0]); ++ /* XXX: Sometimes gcc does something really dumb and ends up with ++ a HIGH in a constant pool entry, usually because it's trying to ++ load into a VFP register. We know this will always be used in ++ combination with a LO_SUM which ignores the high bits, so just ++ strip off the HIGH. */ ++ if (GET_CODE (x) == HIGH) ++ x = XEXP (x, 0); ++ assemble_integer (x, 4, BITS_PER_WORD, 1); ++ mark_symbol_refs_as_used (x); + break; + } + return \"\"; +@@ -11015,6 +11826,28 @@ + [(set_attr "predicable" "yes") + (set_attr "insn" "clz")]) + ++(define_insn "rbitsi2" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (unspec:SI [(match_operand:SI 1 "s_register_operand" "r")] UNSPEC_RBIT))] ++ "TARGET_32BIT && arm_arch_thumb2" ++ "rbit%?\\t%0, %1" ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "clz")]) ++ ++(define_expand "ctzsi2" ++ [(set (match_operand:SI 0 "s_register_operand" "") ++ (ctz:SI (match_operand:SI 1 "s_register_operand" "")))] ++ "TARGET_32BIT && arm_arch_thumb2" ++ " ++ { ++ rtx tmp = gen_reg_rtx (SImode); ++ emit_insn (gen_rbitsi2 (tmp, operands[1])); ++ emit_insn (gen_clzsi2 (operands[0], tmp)); ++ } ++ DONE; ++ " ++) ++ + ;; V5E instructions. + + (define_insn "prefetch" +@@ -11024,13 +11857,15 @@ + "TARGET_32BIT && arm_arch5e" + "pld\\t%a0") + +-;; General predication pattern ++;; General predication pattern. ++;; Conditional branches are available as both arm_cond_branch and ++;; predicated arm_jump, so it doesn't matter if we disable the latter. + + (define_cond_exec + [(match_operator 0 "arm_comparison_operator" + [(match_operand 1 "cc_register" "") + (const_int 0)])] +- "TARGET_32BIT" ++ "TARGET_32BIT && !TARGET_NO_SINGLE_COND_EXEC" + "" + ) + +--- a/src/gcc/config/arm/arm.opt ++++ b/src/gcc/config/arm/arm.opt +@@ -78,6 +78,10 @@ + mfp= + Target RejectNegative Joined Undocumented Var(target_fpe_name) + ++mfp16-format= ++Target RejectNegative Joined Var(target_fp16_format_name) ++Specify the __fp16 floating-point format ++ + ;; Now ignored. + mfpe + Target RejectNegative Mask(FPE) Undocumented +@@ -93,6 +97,10 @@ + Target RejectNegative + Alias for -mfloat-abi=hard + ++mfix-janus-2cc ++Target Report Mask(FIX_JANUS) ++Work around hardware errata for Avalent Janus 2CC cores. ++ + mlittle-endian + Target Report RejectNegative InverseMask(BIG_END) + Assume target CPU is configured as little endian +@@ -101,6 +109,10 @@ + Target Report Mask(LONG_CALLS) + Generate call insns as indirect calls, if necessary + ++mmarvell-div ++Target Report Mask(MARVELL_DIV) ++Generate hardware integer division instructions supported by some Marvell cores. ++ + mpic-register= + Target RejectNegative Joined Var(arm_pic_register_string) + Specify the register to be used for PIC addressing +@@ -157,6 +169,10 @@ + Target Report Mask(NEON_VECTORIZE_QUAD) + Use Neon quad-word (rather than double-word) registers for vectorization + ++mlow-irq-latency ++Target Report Var(low_irq_latency) ++Try to reduce interrupt latency of the generated code ++ + mword-relocations + Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS) + Only generate absolute relocations on word sized values. +--- a/src/gcc/config/arm/arm_neon.h ++++ b/src/gcc/config/arm/arm_neon.h +@@ -36,7 +36,11 @@ + extern "C" { + #endif + ++#if defined (__vxworks) && defined (_WRS_KERNEL) ++#include ++#else + #include ++#endif + + typedef __builtin_neon_qi int8x8_t __attribute__ ((__vector_size__ (8))); + typedef __builtin_neon_hi int16x4_t __attribute__ ((__vector_size__ (8))); +@@ -61,7 +65,7 @@ + typedef __builtin_neon_usi uint32x4_t __attribute__ ((__vector_size__ (16))); + typedef __builtin_neon_udi uint64x2_t __attribute__ ((__vector_size__ (16))); + +-typedef __builtin_neon_sf float32_t; ++typedef float float32_t; + typedef __builtin_neon_poly8 poly8_t; + typedef __builtin_neon_poly16 poly16_t; + +@@ -5085,7 +5089,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c) + { +- return (float32x2_t)__builtin_neon_vset_lanev2sf (__a, __b, __c); ++ return (float32x2_t)__builtin_neon_vset_lanev2sf ((__builtin_neon_sf) __a, __b, __c); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -5151,7 +5155,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c) + { +- return (float32x4_t)__builtin_neon_vset_lanev4sf (__a, __b, __c); ++ return (float32x4_t)__builtin_neon_vset_lanev4sf ((__builtin_neon_sf) __a, __b, __c); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -5283,7 +5287,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vdup_n_f32 (float32_t __a) + { +- return (float32x2_t)__builtin_neon_vdup_nv2sf (__a); ++ return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -5349,7 +5353,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vdupq_n_f32 (float32_t __a) + { +- return (float32x4_t)__builtin_neon_vdup_nv4sf (__a); ++ return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -5415,7 +5419,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vmov_n_f32 (float32_t __a) + { +- return (float32x2_t)__builtin_neon_vdup_nv2sf (__a); ++ return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -5481,7 +5485,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vmovq_n_f32 (float32_t __a) + { +- return (float32x4_t)__builtin_neon_vdup_nv4sf (__a); ++ return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -6591,7 +6595,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vmul_n_f32 (float32x2_t __a, float32_t __b) + { +- return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, __b, 3); ++ return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, (__builtin_neon_sf) __b, 3); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +@@ -6621,7 +6625,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vmulq_n_f32 (float32x4_t __a, float32_t __b) + { +- return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, __b, 3); ++ return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, (__builtin_neon_sf) __b, 3); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +@@ -6735,7 +6739,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) + { +- return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, __c, 3); ++ return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, (__builtin_neon_sf) __c, 3); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +@@ -6765,7 +6769,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) + { +- return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, __c, 3); ++ return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, (__builtin_neon_sf) __c, 3); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +@@ -6831,7 +6835,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c) + { +- return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, __c, 3); ++ return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, (__builtin_neon_sf) __c, 3); + } + + __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__)) +@@ -6861,7 +6865,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c) + { +- return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, __c, 3); ++ return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, (__builtin_neon_sf) __c, 3); + } + + __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__)) +@@ -7851,7 +7855,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vld1_f32 (const float32_t * __a) + { +- return (float32x2_t)__builtin_neon_vld1v2sf (__a); ++ return (float32x2_t)__builtin_neon_vld1v2sf ((const __builtin_neon_sf *) __a); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -7917,7 +7921,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vld1q_f32 (const float32_t * __a) + { +- return (float32x4_t)__builtin_neon_vld1v4sf (__a); ++ return (float32x4_t)__builtin_neon_vld1v4sf ((const __builtin_neon_sf *) __a); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -7977,7 +7981,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c) + { +- return (float32x2_t)__builtin_neon_vld1_lanev2sf (__a, __b, __c); ++ return (float32x2_t)__builtin_neon_vld1_lanev2sf ((const __builtin_neon_sf *) __a, __b, __c); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -8043,7 +8047,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c) + { +- return (float32x4_t)__builtin_neon_vld1_lanev4sf (__a, __b, __c); ++ return (float32x4_t)__builtin_neon_vld1_lanev4sf ((const __builtin_neon_sf *) __a, __b, __c); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -8109,7 +8113,7 @@ + __extension__ static __inline float32x2_t __attribute__ ((__always_inline__)) + vld1_dup_f32 (const float32_t * __a) + { +- return (float32x2_t)__builtin_neon_vld1_dupv2sf (__a); ++ return (float32x2_t)__builtin_neon_vld1_dupv2sf ((const __builtin_neon_sf *) __a); + } + + __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__)) +@@ -8175,7 +8179,7 @@ + __extension__ static __inline float32x4_t __attribute__ ((__always_inline__)) + vld1q_dup_f32 (const float32_t * __a) + { +- return (float32x4_t)__builtin_neon_vld1_dupv4sf (__a); ++ return (float32x4_t)__builtin_neon_vld1_dupv4sf ((const __builtin_neon_sf *) __a); + } + + __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__)) +@@ -8247,7 +8251,7 @@ + __extension__ static __inline void __attribute__ ((__always_inline__)) + vst1_f32 (float32_t * __a, float32x2_t __b) + { +- __builtin_neon_vst1v2sf (__a, __b); ++ __builtin_neon_vst1v2sf ((__builtin_neon_sf *) __a, __b); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -8313,7 +8317,7 @@ + __extension__ static __inline void __attribute__ ((__always_inline__)) + vst1q_f32 (float32_t * __a, float32x4_t __b) + { +- __builtin_neon_vst1v4sf (__a, __b); ++ __builtin_neon_vst1v4sf ((__builtin_neon_sf *) __a, __b); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -8373,7 +8377,7 @@ + __extension__ static __inline void __attribute__ ((__always_inline__)) + vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c) + { +- __builtin_neon_vst1_lanev2sf (__a, __b, __c); ++ __builtin_neon_vst1_lanev2sf ((__builtin_neon_sf *) __a, __b, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -8439,7 +8443,7 @@ + __extension__ static __inline void __attribute__ ((__always_inline__)) + vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c) + { +- __builtin_neon_vst1_lanev4sf (__a, __b, __c); ++ __builtin_neon_vst1_lanev4sf ((__builtin_neon_sf *) __a, __b, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -8512,7 +8516,7 @@ + vld2_f32 (const float32_t * __a) + { + union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv; +- __rv.__o = __builtin_neon_vld2v2sf (__a); ++ __rv.__o = __builtin_neon_vld2v2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -8600,7 +8604,7 @@ + vld2q_f32 (const float32_t * __a) + { + union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv; +- __rv.__o = __builtin_neon_vld2v4sf (__a); ++ __rv.__o = __builtin_neon_vld2v4sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -8676,7 +8680,7 @@ + { + union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b }; + union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv; +- __rv.__o = __builtin_neon_vld2_lanev2sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld2_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -8748,7 +8752,7 @@ + { + union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b }; + union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv; +- __rv.__o = __builtin_neon_vld2_lanev4sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld2_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -8807,7 +8811,7 @@ + vld2_dup_f32 (const float32_t * __a) + { + union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv; +- __rv.__o = __builtin_neon_vld2_dupv2sf (__a); ++ __rv.__o = __builtin_neon_vld2_dupv2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -8892,7 +8896,7 @@ + vst2_f32 (float32_t * __a, float32x2x2_t __b) + { + union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b }; +- __builtin_neon_vst2v2sf (__a, __bu.__o); ++ __builtin_neon_vst2v2sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -8969,7 +8973,7 @@ + vst2q_f32 (float32_t * __a, float32x4x2_t __b) + { + union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b }; +- __builtin_neon_vst2v4sf (__a, __bu.__o); ++ __builtin_neon_vst2v4sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9032,7 +9036,7 @@ + vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c) + { + union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b }; +- __builtin_neon_vst2_lanev2sf (__a, __bu.__o, __c); ++ __builtin_neon_vst2_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9088,7 +9092,7 @@ + vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c) + { + union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b }; +- __builtin_neon_vst2_lanev4sf (__a, __bu.__o, __c); ++ __builtin_neon_vst2_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9140,7 +9144,7 @@ + vld3_f32 (const float32_t * __a) + { + union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv; +- __rv.__o = __builtin_neon_vld3v2sf (__a); ++ __rv.__o = __builtin_neon_vld3v2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -9228,7 +9232,7 @@ + vld3q_f32 (const float32_t * __a) + { + union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv; +- __rv.__o = __builtin_neon_vld3v4sf (__a); ++ __rv.__o = __builtin_neon_vld3v4sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -9304,7 +9308,7 @@ + { + union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b }; + union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv; +- __rv.__o = __builtin_neon_vld3_lanev2sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld3_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -9376,7 +9380,7 @@ + { + union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b }; + union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv; +- __rv.__o = __builtin_neon_vld3_lanev4sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld3_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -9435,7 +9439,7 @@ + vld3_dup_f32 (const float32_t * __a) + { + union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv; +- __rv.__o = __builtin_neon_vld3_dupv2sf (__a); ++ __rv.__o = __builtin_neon_vld3_dupv2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -9520,7 +9524,7 @@ + vst3_f32 (float32_t * __a, float32x2x3_t __b) + { + union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b }; +- __builtin_neon_vst3v2sf (__a, __bu.__o); ++ __builtin_neon_vst3v2sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9597,7 +9601,7 @@ + vst3q_f32 (float32_t * __a, float32x4x3_t __b) + { + union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b }; +- __builtin_neon_vst3v4sf (__a, __bu.__o); ++ __builtin_neon_vst3v4sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9660,7 +9664,7 @@ + vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c) + { + union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b }; +- __builtin_neon_vst3_lanev2sf (__a, __bu.__o, __c); ++ __builtin_neon_vst3_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9716,7 +9720,7 @@ + vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c) + { + union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b }; +- __builtin_neon_vst3_lanev4sf (__a, __bu.__o, __c); ++ __builtin_neon_vst3_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -9768,7 +9772,7 @@ + vld4_f32 (const float32_t * __a) + { + union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv; +- __rv.__o = __builtin_neon_vld4v2sf (__a); ++ __rv.__o = __builtin_neon_vld4v2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -9856,7 +9860,7 @@ + vld4q_f32 (const float32_t * __a) + { + union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv; +- __rv.__o = __builtin_neon_vld4v4sf (__a); ++ __rv.__o = __builtin_neon_vld4v4sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -9932,7 +9936,7 @@ + { + union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b }; + union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv; +- __rv.__o = __builtin_neon_vld4_lanev2sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld4_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -10004,7 +10008,7 @@ + { + union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b }; + union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv; +- __rv.__o = __builtin_neon_vld4_lanev4sf (__a, __bu.__o, __c); ++ __rv.__o = __builtin_neon_vld4_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c); + return __rv.__i; + } + +@@ -10063,7 +10067,7 @@ + vld4_dup_f32 (const float32_t * __a) + { + union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv; +- __rv.__o = __builtin_neon_vld4_dupv2sf (__a); ++ __rv.__o = __builtin_neon_vld4_dupv2sf ((const __builtin_neon_sf *) __a); + return __rv.__i; + } + +@@ -10148,7 +10152,7 @@ + vst4_f32 (float32_t * __a, float32x2x4_t __b) + { + union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b }; +- __builtin_neon_vst4v2sf (__a, __bu.__o); ++ __builtin_neon_vst4v2sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -10225,7 +10229,7 @@ + vst4q_f32 (float32_t * __a, float32x4x4_t __b) + { + union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b }; +- __builtin_neon_vst4v4sf (__a, __bu.__o); ++ __builtin_neon_vst4v4sf ((__builtin_neon_sf *) __a, __bu.__o); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -10288,7 +10292,7 @@ + vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c) + { + union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b }; +- __builtin_neon_vst4_lanev2sf (__a, __bu.__o, __c); ++ __builtin_neon_vst4_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -10344,7 +10348,7 @@ + vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c) + { + union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b }; +- __builtin_neon_vst4_lanev4sf (__a, __bu.__o, __c); ++ __builtin_neon_vst4_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +--- a/src/gcc/config/arm/bpabi-v6m.S ++++ b/src/gcc/config/arm/bpabi-v6m.S +@@ -69,9 +69,52 @@ + + #endif /* L_aeabi_ulcmp */ + ++.macro test_div_by_zero signed ++ cmp yyh, #0 ++ bne 7f ++ cmp yyl, #0 ++ bne 7f ++ cmp xxh, #0 ++ bne 2f ++ cmp xxl, #0 ++2: ++ .ifc \signed, unsigned ++ beq 3f ++ mov xxh, #0 ++ mvn xxh, xxh @ 0xffffffff ++ mov xxl, xxh ++3: ++ .else ++ beq 5f ++ blt 6f ++ mov xxl, #0 ++ mvn xxl, xxl @ 0xffffffff ++ lsr xxh, xxl, #1 @ 0x7fffffff ++ b 5f ++6: mov xxh, #0x80 ++ lsl xxh, xxh, #24 @ 0x80000000 ++ mov xxl, #0 ++5: ++ .endif ++ @ tailcalls are tricky on v6-m. ++ push {r0, r1, r2} ++ ldr r0, 1f ++ adr r1, 1f ++ add r0, r1 ++ str r0, [sp, #8] ++ @ We know we are not on armv4t, so pop pc is safe. ++ pop {r0, r1, pc} ++ .align 2 ++1: ++ .word __aeabi_ldiv0 - 1b ++7: ++.endm ++ + #ifdef L_aeabi_ldivmod + + FUNC_START aeabi_ldivmod ++ test_div_by_zero signed ++ + push {r0, r1} + mov r0, sp + push {r0, lr} +@@ -89,6 +132,8 @@ + #ifdef L_aeabi_uldivmod + + FUNC_START aeabi_uldivmod ++ test_div_by_zero unsigned ++ + push {r0, r1} + mov r0, sp + push {r0, lr} +--- a/src/gcc/config/arm/bpabi.S ++++ b/src/gcc/config/arm/bpabi.S +@@ -64,20 +64,69 @@ + + #endif /* L_aeabi_ulcmp */ + ++.macro test_div_by_zero signed ++/* Tail-call to divide-by-zero handlers which may be overridden by the user, ++ so unwinding works properly. */ ++#if defined(__thumb2__) ++ cbnz yyh, 1f ++ cbnz yyl, 1f ++ cmp xxh, #0 ++ do_it eq ++ cmpeq xxl, #0 ++ .ifc \signed, unsigned ++ beq 2f ++ mov xxh, #0xffffffff ++ mov xxl, xxh ++2: ++ .else ++ do_it lt, t ++ movlt xxl, #0 ++ movlt xxh, #0x80000000 ++ do_it gt, t ++ movgt xxh, #0x7fffffff ++ movgt xxl, #0xffffffff ++ .endif ++ b SYM (__aeabi_ldiv0) __PLT__ ++1: ++#else ++ /* Note: Thumb-1 code calls via an ARM shim on processors which ++ support ARM mode. */ ++ cmp yyh, #0 ++ cmpeq yyl, #0 ++ bne 2f ++ cmp xxh, #0 ++ cmpeq xxl, #0 ++ .ifc \signed, unsigned ++ movne xxh, #0xffffffff ++ movne xxl, #0xffffffff ++ .else ++ movlt xxh, #0x80000000 ++ movlt xxl, #0 ++ movgt xxh, #0x7fffffff ++ movgt xxl, #0xffffffff ++ .endif ++ b SYM (__aeabi_ldiv0) __PLT__ ++2: ++#endif ++.endm ++ + #ifdef L_aeabi_ldivmod + + ARM_FUNC_START aeabi_ldivmod ++ test_div_by_zero signed ++ + sub sp, sp, #8 +-#if defined(__thumb2__) ++/* Low latency and Thumb-2 do_push implementations can't push sp directly. */ ++#if defined(__thumb2__) || defined(__irq_low_latency__) + mov ip, sp +- push {ip, lr} ++ do_push (ip, lr) + #else +- do_push {sp, lr} ++ stmfd sp!, {sp, lr} + #endif + bl SYM(__gnu_ldivmod_helper) __PLT__ + ldr lr, [sp, #4] + add sp, sp, #8 +- do_pop {r2, r3} ++ do_pop (r2, r3) + RET + + #endif /* L_aeabi_ldivmod */ +@@ -85,17 +134,20 @@ + #ifdef L_aeabi_uldivmod + + ARM_FUNC_START aeabi_uldivmod ++ test_div_by_zero unsigned ++ + sub sp, sp, #8 +-#if defined(__thumb2__) ++/* Low latency and Thumb-2 do_push implementations can't push sp directly. */ ++#if defined(__thumb2__) || defined(__irq_low_latency__) + mov ip, sp +- push {ip, lr} ++ do_push (ip, lr) + #else +- do_push {sp, lr} ++ stmfd sp!, {sp, lr} + #endif + bl SYM(__gnu_uldivmod_helper) __PLT__ + ldr lr, [sp, #4] + add sp, sp, #8 +- do_pop {r2, r3} ++ do_pop (r2, r3) + RET + + #endif /* L_aeabi_divmod */ +--- a/src/gcc/config/arm/bpabi.h ++++ b/src/gcc/config/arm/bpabi.h +@@ -26,11 +26,12 @@ + #define TARGET_BPABI (TARGET_AAPCS_BASED) + + /* BPABI targets use EABI frame unwinding tables. */ ++#define DWARF2_UNWIND_INFO 0 + #define TARGET_UNWIND_INFO 1 + + /* Section 4.1 of the AAPCS requires the use of VFP format. */ + #undef FPUTYPE_DEFAULT +-#define FPUTYPE_DEFAULT FPUTYPE_VFP ++#define FPUTYPE_DEFAULT "vfp" + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ +@@ -53,6 +54,8 @@ + + #define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}" + ++#define BE8_LINK_SPEC " %{mbig-endian:%{march=armv7-a|mcpu=cortex-a5|mcpu=cortex-a8|mcpu=cortex-a9:%{!r:--be8}}}" ++ + /* Tell the assembler to build BPABI binaries. */ + #undef SUBTARGET_EXTRA_ASM_SPEC + #define SUBTARGET_EXTRA_ASM_SPEC "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5}" TARGET_FIX_V4BX_SPEC +@@ -65,7 +68,7 @@ + #define BPABI_LINK_SPEC \ + "%{mbig-endian:-EB} %{mlittle-endian:-EL} " \ + "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} " \ +- "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC ++ "-X" SUBTARGET_EXTRA_LINK_SPEC TARGET_FIX_V4BX_SPEC BE8_LINK_SPEC + + #undef LINK_SPEC + #define LINK_SPEC BPABI_LINK_SPEC +@@ -90,16 +93,22 @@ + #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (muldi3, lmul) + #endif + #ifdef L_fixdfdi +-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz) ++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixdfdi, d2lz) \ ++ extern DWtype __fixdfdi (DFtype) __attribute__((pcs("aapcs"))); \ ++ extern UDWtype __fixunsdfdi (DFtype) __asm__("__aeabi_d2ulz") __attribute__((pcs("aapcs"))); + #endif + #ifdef L_fixunsdfdi +-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz) ++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunsdfdi, d2ulz) \ ++ extern UDWtype __fixunsdfdi (DFtype) __attribute__((pcs("aapcs"))); + #endif + #ifdef L_fixsfdi +-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz) ++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixsfdi, f2lz) \ ++ extern DWtype __fixsfdi (SFtype) __attribute__((pcs("aapcs"))); \ ++ extern UDWtype __fixunssfdi (SFtype) __asm__("__aeabi_f2ulz") __attribute__((pcs("aapcs"))); + #endif + #ifdef L_fixunssfdi +-#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz) ++#define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (fixunssfdi, f2ulz) \ ++ extern UDWtype __fixunssfdi (SFtype) __attribute__((pcs("aapcs"))); + #endif + #ifdef L_floatdidf + #define DECLARE_LIBRARY_RENAMES RENAME_LIBRARY (floatdidf, l2d) +--- a/src/gcc/config/arm/constraints.md ++++ b/src/gcc/config/arm/constraints.md +@@ -25,15 +25,17 @@ + ;; In ARM state, 'l' is an alias for 'r' + + ;; The following normal constraints have been used: +-;; in ARM/Thumb-2 state: G, H, I, J, K, L, M ++;; in ARM/Thumb-2 state: G, H, I, j, J, K, L, M + ;; in Thumb-1 state: I, J, K, L, M, N, O + + ;; The following multi-letter normal constraints have been used: +-;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv ++;; in ARM/Thumb-2 state: D0, Da, Db, Dc, Di, Dn, Dl, DL, Dv, Dy ++;; in Thumb-1 state: Pa, Pb ++;; in Thumb-2 state: Ps, Pt, Pu + ;; in Thumb-2 state: Ps, Pt + + ;; The following memory constraints have been used: +-;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Us ++;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Um, Us + ;; in ARM state: Uq + + +@@ -66,6 +68,13 @@ + (define_register_constraint "h" "TARGET_THUMB ? HI_REGS : NO_REGS" + "In Thumb state the core registers @code{r8}-@code{r15}.") + ++(define_constraint "j" ++ "A constant suitable for a MOVW instruction. (ARM/Thumb-2)" ++ (and (match_test "TARGET_32BIT && arm_arch_thumb2") ++ (ior (match_code "high") ++ (and (match_code "const_int") ++ (match_test "(ival & 0xffff0000) == 0"))))) ++ + (define_register_constraint "k" "STACK_REG" + "@internal The stack register.") + +@@ -117,11 +126,9 @@ + : ((ival >= 0 && ival <= 1020) && ((ival & 3) == 0))"))) + + (define_constraint "N" +- "In ARM/Thumb-2 state a constant suitable for a MOVW instruction. +- In Thumb-1 state a constant in the range 0-31." ++ "Thumb-1 state a constant in the range 0-31." + (and (match_code "const_int") +- (match_test "TARGET_32BIT ? arm_arch_thumb2 && ((ival & 0xffff0000) == 0) +- : (ival >= 0 && ival <= 31)"))) ++ (match_test "!TARGET_32BIT && (ival >= 0 && ival <= 31)"))) + + (define_constraint "O" + "In Thumb-1 state a constant that is a multiple of 4 in the range +@@ -130,6 +137,18 @@ + (match_test "TARGET_THUMB1 && ival >= -508 && ival <= 508 + && ((ival & 3) == 0)"))) + ++(define_constraint "Pa" ++ "@internal In Thumb-1 state a constant in the range -510 to +510" ++ (and (match_code "const_int") ++ (match_test "TARGET_THUMB1 && ival >= -510 && ival <= 510 ++ && (ival > 255 || ival < -255)"))) ++ ++(define_constraint "Pb" ++ "@internal In Thumb-1 state a constant in the range -262 to +262" ++ (and (match_code "const_int") ++ (match_test "TARGET_THUMB1 && ival >= -262 && ival <= 262 ++ && (ival > 255 || ival < -255)"))) ++ + (define_constraint "Ps" + "@internal In Thumb-2 state a constant in the range -255 to +255" + (and (match_code "const_int") +@@ -140,6 +159,11 @@ + (and (match_code "const_int") + (match_test "TARGET_THUMB2 && ival >= -7 && ival <= 7"))) + ++(define_constraint "Pu" ++ "@internal In Thumb-2 state a constant in the range -255 to 0" ++ (and (match_code "const_int") ++ (match_test "TARGET_THUMB2 && ival >= -255 && ival <= 0"))) ++ + (define_constraint "G" + "In ARM/Thumb-2 state a valid FPA immediate constant." + (and (match_code "const_double") +@@ -150,6 +174,13 @@ + (and (match_code "const_double") + (match_test "TARGET_32BIT && neg_const_double_rtx_ok_for_fpa (op)"))) + ++(define_constraint "D0" ++ "@internal ++ In ARM/Thumb-2 state a 0.0 floating point constant which can ++ be loaded with a Neon vmov immediate instruction." ++ (and (match_code "const_double") ++ (match_test "TARGET_NEON && op == CONST0_RTX (mode)"))) ++ + (define_constraint "Da" + "@internal + In ARM/Thumb-2 state a const_int, const_double or const_vector that can +@@ -173,6 +204,13 @@ + (match_test "TARGET_32BIT && arm_const_double_inline_cost (op) == 4 + && !(optimize_size || arm_ld_sched)"))) + ++(define_constraint "Di" ++ "@internal ++ In ARM/Thumb-2 state a const_int or const_double where both the high ++ and low SImode words can be generated as immediates in 32-bit instructions." ++ (and (match_code "const_double,const_int") ++ (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)"))) ++ + (define_constraint "Dn" + "@internal + In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov +@@ -200,10 +238,17 @@ + (define_constraint "Dv" + "@internal + In ARM/Thumb-2 state a const_double which can be used with a VFP fconsts +- or fconstd instruction." ++ instruction." + (and (match_code "const_double") + (match_test "TARGET_32BIT && vfp3_const_double_rtx (op)"))) + ++(define_constraint "Dy" ++ "@internal ++ In ARM/Thumb-2 state a const_double which can be used with a VFP fconstd ++ instruction." ++ (and (match_code "const_double") ++ (match_test "TARGET_32BIT && TARGET_VFP_DOUBLE && vfp3_const_double_rtx (op)"))) ++ + (define_memory_constraint "Ut" + "@internal + In ARM/Thumb-2 state an address valid for loading/storing opaque structure +@@ -225,17 +270,24 @@ + + (define_memory_constraint "Un" + "@internal ++ In ARM/Thumb-2 state a valid address for Neon doubleword vector ++ load/store instructions." ++ (and (match_code "mem") ++ (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 0)"))) ++ ++(define_memory_constraint "Um" ++ "@internal + In ARM/Thumb-2 state a valid address for Neon element and structure + load/store instructions." + (and (match_code "mem") +- (match_test "TARGET_32BIT && neon_vector_mem_operand (op, FALSE)"))) ++ (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2)"))) + + (define_memory_constraint "Us" + "@internal + In ARM/Thumb-2 state a valid address for non-offset loads/stores of + quad-word values in four ARM registers." + (and (match_code "mem") +- (match_test "TARGET_32BIT && neon_vector_mem_operand (op, TRUE)"))) ++ (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 1)"))) + + (define_memory_constraint "Uq" + "@internal +--- a/src/gcc/config/arm/cortex-a5.md ++++ b/src/gcc/config/arm/cortex-a5.md +@@ -0,0 +1,310 @@ ++;; ARM Cortex-A5 pipeline description ++;; Copyright (C) 2010 Free Software Foundation, Inc. ++;; Contributed by CodeSourcery. ++;; ++;; 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 ++;; . ++ ++(define_automaton "cortex_a5") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Functional units. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; The integer (ALU) pipeline. There are five DPU pipeline stages. However the ++;; decode/issue stages operate the same for all instructions, so do not model ++;; them. We only need to model the first execute stage because instructions ++;; always advance one stage per cycle in order. Only branch instructions may ++;; dual-issue, so a single unit covers all of the LS, ALU, MAC and FPU ++;; pipelines. ++ ++(define_cpu_unit "cortex_a5_ex1" "cortex_a5") ++ ++;; The branch pipeline. Branches can dual-issue with other instructions ++;; (except when those instructions take multiple cycles to issue). ++ ++(define_cpu_unit "cortex_a5_branch" "cortex_a5") ++ ++;; Pseudo-unit for blocking the multiply pipeline when a double-precision ++;; multiply is in progress. ++ ++(define_cpu_unit "cortex_a5_fpmul_pipe" "cortex_a5") ++ ++;; The floating-point add pipeline (ex1/f1 stage), used to model the usage ++;; of the add pipeline by fmac instructions, etc. ++ ++(define_cpu_unit "cortex_a5_fpadd_pipe" "cortex_a5") ++ ++;; Floating-point div/sqrt (long latency, out-of-order completion). ++ ++(define_cpu_unit "cortex_a5_fp_div_sqrt" "cortex_a5") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; ALU instructions. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++(define_insn_reservation "cortex_a5_alu" 2 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "alu")) ++ "cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_alu_shift" 2 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "alu_shift,alu_shift_reg")) ++ "cortex_a5_ex1") ++ ++;; Forwarding path for unshifted operands. ++ ++(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift" ++ "cortex_a5_alu") ++ ++(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift" ++ "cortex_a5_alu_shift" ++ "arm_no_early_alu_shift_dep") ++ ++;; The multiplier pipeline can forward results from wr stage only (so I don't ++;; think there's any need to specify bypasses). ++ ++(define_insn_reservation "cortex_a5_mul" 2 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "mult")) ++ "cortex_a5_ex1") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Load/store instructions. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; Address-generation happens in the issue stage, which is one stage behind ++;; the ex1 stage (the first stage we care about for scheduling purposes). The ++;; dc1 stage is parallel with ex1, dc2 with ex2 and rot with wr. ++ ++;; FIXME: These might not be entirely accurate for load2, load3, load4. I think ++;; they make sense since there's a 32-bit interface between the DPU and the DCU, ++;; so we can't load more than that per cycle. The store2, store3, store4 ++;; reservations are similarly guessed. ++ ++(define_insn_reservation "cortex_a5_load1" 2 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "load_byte,load1")) ++ "cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_store1" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "store1")) ++ "cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_load2" 3 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "load2")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_store2" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "store2")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_load3" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "load3")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ ++ cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_store3" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "store3")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ ++ cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_load4" 5 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "load3")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ ++ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_store4" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "store3")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\ ++ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Branches. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; Direct branches are the only instructions we can dual-issue (also IT and ++;; nop, but those aren't very interesting for scheduling). (The latency here ++;; is meant to represent when the branch actually takes place, but may not be ++;; entirely correct.) ++ ++(define_insn_reservation "cortex_a5_branch" 3 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "branch,call")) ++ "cortex_a5_branch") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Floating-point arithmetic. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++(define_insn_reservation "cortex_a5_fpalu" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys, fmuls, f_cvt,\ ++ fcmps, fcmpd")) ++ "cortex_a5_ex1+cortex_a5_fpadd_pipe") ++ ++;; For fconsts and fconstd, 8-bit immediate data is passed directly from ++;; f1 to f3 (which I think reduces the latency by one cycle). ++ ++(define_insn_reservation "cortex_a5_fconst" 3 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fconsts,fconstd")) ++ "cortex_a5_ex1+cortex_a5_fpadd_pipe") ++ ++;; We should try not to attempt to issue a single-precision multiplication in ++;; the middle of a double-precision multiplication operation (the usage of ++;; cortex_a5_fpmul_pipe). ++ ++(define_insn_reservation "cortex_a5_fpmuls" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fmuls")) ++ "cortex_a5_ex1+cortex_a5_fpmul_pipe") ++ ++;; For single-precision multiply-accumulate, the add (accumulate) is issued ++;; whilst the multiply is in F4. The multiply result can then be forwarded ++;; from F5 to F1. The issue unit is only used once (when we first start ++;; processing the instruction), but the usage of the FP add pipeline could ++;; block other instructions attempting to use it simultaneously. We try to ++;; avoid that using cortex_a5_fpadd_pipe. ++ ++(define_insn_reservation "cortex_a5_fpmacs" 8 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fmacs")) ++ "cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe") ++ ++;; Non-multiply instructions can issue in the middle two instructions of a ++;; double-precision multiply. Note that it isn't entirely clear when a branch ++;; can dual-issue when a multi-cycle multiplication is in progress; we ignore ++;; that for now though. ++ ++(define_insn_reservation "cortex_a5_fpmuld" 7 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fmuld")) ++ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\ ++ cortex_a5_ex1+cortex_a5_fpmul_pipe") ++ ++(define_insn_reservation "cortex_a5_fpmacd" 11 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fmacd")) ++ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\ ++ cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Floating-point divide/square root instructions. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; ??? Not sure if the 14 cycles taken for single-precision divide to complete ++;; includes the time taken for the special instruction used to collect the ++;; result to travel down the multiply pipeline, or not. Assuming so. (If ++;; that's wrong, the latency should be increased by a few cycles.) ++ ++;; fsqrt takes one cycle less, but that is not modelled, nor is the use of the ++;; multiply pipeline to collect the divide/square-root result. ++ ++(define_insn_reservation "cortex_a5_fdivs" 14 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fdivs")) ++ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 13") ++ ++;; ??? Similarly for fdivd. ++ ++(define_insn_reservation "cortex_a5_fdivd" 29 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "fdivd")) ++ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 28") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; VFP to/from core transfers. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; FP loads take data from wr/rot/f3. Might need to define bypasses to model ++;; this? ++ ++;; Core-to-VFP transfers use the multiply pipeline. ++;; Not sure about this at all... I think we need some bypasses too. ++ ++(define_insn_reservation "cortex_a5_r2f" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "r_2_f")) ++ "cortex_a5_ex1") ++ ++;; Not sure about this either. 6.8.7 says "Additionally, the store pipe used ++;; for store and FP->core register transfers can forward into the F2 and F3 ++;; stages." ++;; This doesn't correspond to what we have though. ++ ++(define_insn_reservation "cortex_a5_f2r" 2 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_2_r")) ++ "cortex_a5_ex1") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; VFP flag transfer. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; ??? The flag forwarding described in section 6.8.11 of the Cortex-A5 DPU ++;; specification (from fmstat to the ex2 stage of the second instruction) is ++;; not modeled at present. ++ ++(define_insn_reservation "cortex_a5_f_flags" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_flag")) ++ "cortex_a5_ex1") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; VFP load/store. ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++(define_insn_reservation "cortex_a5_f_loads" 4 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_loads")) ++ "cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_f_loadd" 5 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_load,f_loadd")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_f_stores" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_stores")) ++ "cortex_a5_ex1") ++ ++(define_insn_reservation "cortex_a5_f_stored" 0 ++ (and (eq_attr "tune" "cortexa5") ++ (eq_attr "type" "f_store,f_stored")) ++ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1") ++ ++;; Load-to-use for floating-point values has a penalty of one cycle, i.e. a ++;; latency of two (6.8.3). ++ ++(define_bypass 2 "cortex_a5_f_loads" ++ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\ ++ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\ ++ cortex_a5_f2r") ++ ++(define_bypass 3 "cortex_a5_f_loadd" ++ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\ ++ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\ ++ cortex_a5_f2r") +--- a/src/gcc/config/arm/cortex-a9.md ++++ b/src/gcc/config/arm/cortex-a9.md +@@ -1,6 +1,8 @@ +-;; ARM Cortex-A9 VFP pipeline description +-;; Copyright (C) 2008 Free Software Foundation, Inc. +-;; Written by CodeSourcery. ++;; ARM Cortex-A9 pipeline description ++;; Copyright (C) 2008, 2009 Free Software Foundation, Inc. ++;; Originally written by CodeSourcery for VFP. ++;; ++;; Integer core pipeline description contributed by ARM Ltd. + ;; + ;; This file is part of GCC. + ;; +@@ -20,9 +22,181 @@ + + (define_automaton "cortex_a9") + +-;; FIXME: We model a single pipeline for all instructions. +-;; Is dual-issue possible, and do we have other pipelines? +-(define_cpu_unit "cortex_a9_vfp" "cortex_a9") ++;; The Cortex-A9 integer core is modelled as a dual issue pipeline that has ++;; the following components. ++;; 1. 1 Load Store Pipeline. ++;; 2. P0 / main pipeline for data processing instructions. ++;; 3. P1 / Dual pipeline for Data processing instructions. ++;; 4. MAC pipeline for multiply as well as multiply ++;; and accumulate instructions. ++;; 5. 1 VFP / Neon pipeline. ++;; The Load/Store and VFP/Neon pipeline are multiplexed. ++;; The P0 / main pipeline and M1 stage of the MAC pipeline are ++;; multiplexed. ++;; The P1 / dual pipeline and M2 stage of the MAC pipeline are ++;; multiplexed. ++;; There are only 4 register read ports and hence at any point of ++;; time we can't have issues down the E1 and the E2 ports unless ++;; of course there are bypass paths that get exercised. ++;; Both P0 and P1 have 2 stages E1 and E2. ++;; Data processing instructions issue to E1 or E2 depending on ++;; whether they have an early shift or not. ++ ++ ++(define_cpu_unit "cortex_a9_vfp, cortex_a9_ls" "cortex_a9") ++(define_cpu_unit "cortex_a9_p0_e1, cortex_a9_p0_e2" "cortex_a9") ++(define_cpu_unit "cortex_a9_p1_e1, cortex_a9_p1_e2" "cortex_a9") ++(define_cpu_unit "cortex_a9_p0_wb, cortex_a9_p1_wb" "cortex_a9") ++(define_cpu_unit "cortex_a9_mac_m1, cortex_a9_mac_m2" "cortex_a9") ++(define_cpu_unit "cortex_a9_branch, cortex_a9_issue_branch" "cortex_a9") ++ ++(define_reservation "cortex_a9_p0_default" "cortex_a9_p0_e2, cortex_a9_p0_wb") ++(define_reservation "cortex_a9_p1_default" "cortex_a9_p1_e2, cortex_a9_p1_wb") ++(define_reservation "cortex_a9_p0_shift" "cortex_a9_p0_e1, cortex_a9_p0_default") ++(define_reservation "cortex_a9_p1_shift" "cortex_a9_p1_e1, cortex_a9_p1_default") ++ ++(define_reservation "cortex_a9_multcycle1" ++ "cortex_a9_p0_e2 + cortex_a9_mac_m1 + cortex_a9_mac_m2 + \ ++cortex_a9_p1_e2 + cortex_a9_p0_e1 + cortex_a9_p1_e1") ++ ++(define_reservation "cortex_a9_mult16" ++ "cortex_a9_mac_m1, cortex_a9_mac_m2, cortex_a9_p0_wb") ++(define_reservation "cortex_a9_mac16" ++ "cortex_a9_multcycle1, cortex_a9_mac_m2, cortex_a9_p0_wb") ++(define_reservation "cortex_a9_mult" ++ "cortex_a9_mac_m1*2, cortex_a9_mac_m2, cortex_a9_p0_wb") ++(define_reservation "cortex_a9_mac" ++ "cortex_a9_multcycle1*2 ,cortex_a9_mac_m2, cortex_a9_p0_wb") ++ ++ ++;; Issue at the same time along the load store pipeline and ++;; the VFP / Neon pipeline is not possible. ++;; FIXME:: At some point we need to model the issue ++;; of the load store and the vfp being shared rather than anything else. ++ ++(exclusion_set "cortex_a9_ls" "cortex_a9_vfp") ++ ++ ++;; Default data processing instruction without any shift ++;; The only exception to this is the mov instruction ++;; which can go down E2 without any problem. ++(define_insn_reservation "cortex_a9_dp" 2 ++ (and (eq_attr "tune" "cortexa9") ++ (ior (eq_attr "type" "alu") ++ (and (eq_attr "type" "alu_shift_reg, alu_shift") ++ (eq_attr "insn" "mov")))) ++ "cortex_a9_p0_default|cortex_a9_p1_default") ++ ++;; An instruction using the shifter will go down E1. ++(define_insn_reservation "cortex_a9_dp_shift" 3 ++ (and (eq_attr "tune" "cortexa9") ++ (and (eq_attr "type" "alu_shift_reg, alu_shift") ++ (not (eq_attr "insn" "mov")))) ++ "cortex_a9_p0_shift | cortex_a9_p1_shift") ++ ++;; Loads have a latency of 4 cycles. ++;; We don't model autoincrement instructions. These ++;; instructions use the load store pipeline and 1 of ++;; the E2 units to write back the result of the increment. ++ ++(define_insn_reservation "cortex_a9_load1_2" 4 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "load1, load2, load_byte")) ++ "cortex_a9_ls") ++ ++;; Loads multiples and store multiples can't be issued for 2 cycles in a ++;; row. The description below assumes that addresses are 64 bit aligned. ++;; If not, there is an extra cycle latency which is not modelled. ++ ++;; FIXME:: This bit might need to be reworked when we get to ++;; tuning for the VFP because strictly speaking the ldm ++;; is sent to the LSU unit as is and there is only an ++;; issue restriction between the LSU and the VFP/ Neon unit. ++ ++(define_insn_reservation "cortex_a9_load3_4" 5 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "load3, load4")) ++ "cortex_a9_ls, cortex_a9_ls") ++ ++(define_insn_reservation "cortex_a9_store1_2" 0 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "store1, store2")) ++ "cortex_a9_ls") ++ ++;; Almost all our store multiples use an auto-increment ++;; form. Don't issue back to back load and store multiples ++;; because the load store unit will stall. ++(define_insn_reservation "cortex_a9_store3_4" 0 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "store3, store4")) ++ "cortex_a9_ls+(cortex_a9_p0_default | cortex_a9_p1_default), cortex_a9_ls") ++ ++;; We get 16*16 multiply / mac results in 3 cycles. ++(define_insn_reservation "cortex_a9_mult16" 3 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "insn" "smulxy")) ++ "cortex_a9_mult16") ++ ++;; The 16*16 mac is slightly different that it ++;; reserves M1 and M2 in the same cycle. ++(define_insn_reservation "cortex_a9_mac16" 3 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "insn" "smlaxy")) ++ "cortex_a9_mac16") ++ ++ ++(define_insn_reservation "cortex_a9_multiply" 4 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "insn" "mul")) ++ "cortex_a9_mult") ++ ++(define_insn_reservation "cortex_a9_mac" 4 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "insn" "mla")) ++ "cortex_a9_mac") ++ ++;; An instruction with a result in E2 can be forwarded ++;; to E2 or E1 or M1 or the load store unit in the next cycle. ++ ++(define_bypass 1 "cortex_a9_dp" ++ "cortex_a9_dp_shift, cortex_a9_multiply, ++ cortex_a9_load1_2, cortex_a9_dp, cortex_a9_store1_2, ++ cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4") ++ ++(define_bypass 2 "cortex_a9_dp_shift" ++ "cortex_a9_dp_shift, cortex_a9_multiply, ++ cortex_a9_load1_2, cortex_a9_dp, cortex_a9_store1_2, ++ cortex_a9_mult16, cortex_a9_mac16, cortex_a9_mac, cortex_a9_store3_4, cortex_a9_load3_4") ++ ++;; An instruction in the load store pipeline can provide ++;; read access to a DP instruction in the P0 default pipeline ++;; before the writeback stage. ++ ++(define_bypass 3 "cortex_a9_load1_2" "cortex_a9_dp, cortex_a9_load1_2, ++cortex_a9_store3_4, cortex_a9_store1_2") ++ ++(define_bypass 4 "cortex_a9_load3_4" "cortex_a9_dp, cortex_a9_load1_2, ++cortex_a9_store3_4, cortex_a9_store1_2, cortex_a9_load3_4") ++ ++;; Calls and branches. ++ ++;; Branch instructions ++ ++(define_insn_reservation "cortex_a9_branch" 0 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "branch")) ++ "cortex_a9_branch") ++ ++;; Call latencies are essentially 0 but make sure ++;; dual issue doesn't happen i.e the next instruction ++;; starts at the next cycle. ++(define_insn_reservation "cortex_a9_call" 0 ++ (and (eq_attr "tune" "cortexa9") ++ (eq_attr "type" "call")) ++ "cortex_a9_issue_branch + cortex_a9_multcycle1 + cortex_a9_ls + cortex_a9_vfp") ++ ++ ++;; Pipelining for VFP instructions. + + (define_insn_reservation "cortex_a9_ffarith" 1 + (and (eq_attr "tune" "cortexa9") +--- a/src/gcc/config/arm/cygming.opt ++++ b/src/gcc/config/arm/cygming.opt +@@ -0,0 +1,36 @@ ++; Cygwin- and MinGW-specific options. ++ ++; Copyright (C) 2005 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 ++; . ++ ++mcygwin ++Target ++Use the Cygwin interface ++ ++; ### TODO make this work. ++; mnop-fun-dllimport ++; Target Report Var(TARGET_NOP_FUN_DLLIMPORT) ++; Ignore dllimport for functions ++ ++mthreads ++Target RejectNegative ++Use Mingw-specific thread support ++ ++mwin32 ++Target ++Set Windows defines +--- a/src/gcc/config/arm/eabi-memcpy.c ++++ b/src/gcc/config/arm/eabi-memcpy.c +@@ -0,0 +1,108 @@ ++/* Simple implementation of memcpy/memmove for targets that don't provide ++ their own. ++ ++ copyright (c) 2010 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 ++ . */ ++ ++ ++/* Define ALIASNAME as a strong alias for NAME. */ ++#define strong_alias(name, aliasname) \ ++ extern __typeof (name) aliasname __attribute__ ((alias (#name))); ++ ++/* Nonzero if either X or Y is not aligned on a "long" boundary. */ ++#define UNALIGNED(X, Y) \ ++ (((long)X & (sizeof (long) - 1)) | ((long)Y & (sizeof (long) - 1))) ++ ++/* How many bytes are copied each iteration of the 4X unrolled loop. */ ++#define BIGBLOCKSIZE (sizeof (long) << 2) ++ ++/* How many bytes are copied each iteration of the word copy loop. */ ++#define LITTLEBLOCKSIZE (sizeof (long)) ++ ++/* Threshhold for punting to the byte copier. */ ++#define TOO_SMALL(LEN) ((LEN) < BIGBLOCKSIZE) ++ ++void ++__aeabi_memcpy (void *dst0, const void *src0, unsigned long len) ++{ ++ char *dst = dst0; ++ const char *src = src0; ++ long *aligned_dst; ++ const long *aligned_src; ++ ++ /* If the size is small, or either SRC or DST is unaligned, ++ then punt into the byte copy loop. This should be rare. */ ++ if (!TOO_SMALL(len) && !UNALIGNED (src, dst)) ++ { ++ aligned_dst = (long *)dst; ++ aligned_src = (const long *)src; ++ ++ /* Copy 4X long words at a time if possible. */ ++ while (len >= BIGBLOCKSIZE) ++ { ++ *aligned_dst++ = *aligned_src++; ++ *aligned_dst++ = *aligned_src++; ++ *aligned_dst++ = *aligned_src++; ++ *aligned_dst++ = *aligned_src++; ++ len -= BIGBLOCKSIZE; ++ } ++ ++ /* Copy one long word at a time if possible. */ ++ while (len >= LITTLEBLOCKSIZE) ++ { ++ *aligned_dst++ = *aligned_src++; ++ len -= LITTLEBLOCKSIZE; ++ } ++ ++ /* Pick up any residual with a byte copier. */ ++ dst = (char *)aligned_dst; ++ src = (const char *)aligned_src; ++ } ++ ++ while (len--) ++ *dst++ = *src++; ++} ++ ++void ++__aeabi_memmove (void *dst_void, const void *src_void, unsigned long len) ++{ ++ char *dst = dst_void; ++ const char *src = src_void; ++ ++ if (src < dst && dst < src + len) ++ { ++ /* Destructive overlap...have to copy backwards */ ++ src += len; ++ dst += len; ++ while (len--) ++ { ++ *--dst = *--src; ++ } ++ } ++ else ++ __aeabi_memcpy (dst_void, src_void, len); ++} ++ ++strong_alias(__aeabi_memcpy, __aeabi_memcpy4) ++strong_alias(__aeabi_memcpy, __aeabi_memcpy8) ++strong_alias(__aeabi_memmove, __aeabi_memmove4) ++strong_alias(__aeabi_memmove, __aeabi_memmove8) +--- a/src/gcc/config/arm/eabi-memset.c ++++ b/src/gcc/config/arm/eabi-memset.c +@@ -0,0 +1,97 @@ ++/* Simple implementation of memset/memclr for targets that don't provide ++ their own. ++ ++ copyright (c) 2010 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 ++ . */ ++ ++ ++/* Define ALIASNAME as a strong alias for NAME. */ ++#define strong_alias(name, aliasname) \ ++ extern __typeof (name) aliasname __attribute__ ((alias (#name))); ++ ++#define LBLOCKSIZE (sizeof(long)) ++#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) ++#define TOO_SMALL(LEN) ((LEN) < LBLOCKSIZE) ++ ++void ++__aeabi_memset (void *m, unsigned long n, int c) ++{ ++ char *s = (char *)m; ++ int i; ++ unsigned long buffer; ++ unsigned long *aligned_addr; ++ unsigned int d = c & 0xff; /* To avoid sign extension, copy C to an ++ unsigned variable. */ ++ ++ while (UNALIGNED (s)) ++ { ++ if (n--) ++ *s++ = (char) c; ++ else ++ return; ++ } ++ ++ if (!TOO_SMALL (n)) ++ { ++ /* If we get this far, we know that n is large and s is word-aligned. */ ++ aligned_addr = (unsigned long *)s; ++ ++ /* Store D into each char sized location in BUFFER so that ++ we can set large blocks quickly. */ ++ buffer = (d << 8) | d; ++ buffer |= (buffer << 16); ++ for (i = 32; i < LBLOCKSIZE * 8; i <<= 1) ++ buffer = (buffer << i) | buffer; ++ ++ /* Unroll the loop. */ ++ while (n >= LBLOCKSIZE * 4) ++ { ++ *aligned_addr++ = buffer; ++ *aligned_addr++ = buffer; ++ *aligned_addr++ = buffer; ++ *aligned_addr++ = buffer; ++ n -= 4 * LBLOCKSIZE; ++ } ++ ++ while (n >= LBLOCKSIZE) ++ { ++ *aligned_addr++ = buffer; ++ n -= LBLOCKSIZE; ++ } ++ /* Pick up the remainder with a bytewise loop. */ ++ s = (char *)aligned_addr; ++ } ++ ++ while (n--) ++ *s++ = (char) c; ++} ++ ++void ++__aeabi_memclr (void *m, unsigned long n) ++{ ++ __aeabi_memset (m, n, 0); ++} ++ ++strong_alias(__aeabi_memset, __aeabi_memset4) ++strong_alias(__aeabi_memset, __aeabi_memset8) ++strong_alias(__aeabi_memclr, __aeabi_memclr4) ++strong_alias(__aeabi_memclr, __aeabi_memclr8) +--- a/src/gcc/config/arm/elf.h ++++ b/src/gcc/config/arm/elf.h +@@ -63,6 +63,7 @@ + %{mthumb-interwork:-mthumb-interwork} \ + %{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \ + %{mfloat-abi=*} %{mfpu=*} \ ++%{mthumb:%{!-mimplicit-it=*:-mimplicit-it=thumb}} \ + %(subtarget_extra_asm_spec)" + #endif + +--- a/src/gcc/config/arm/fp16.c ++++ b/src/gcc/config/arm/fp16.c +@@ -0,0 +1,152 @@ ++/* Half-float conversion routines. ++ ++ Copyright (C) 2008, 2009 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 ++ . */ ++ ++static inline unsigned int ++__gnu_f2h_internal(unsigned int a, int ieee) ++{ ++ unsigned int sign = (a >> 16) & 0x8000; ++ int aexp = (a >> 23) & 0xff; ++ unsigned int mantissa = a & 0x007fffff; ++ unsigned int mask; ++ unsigned int increment; ++ ++ if (aexp == 0xff) ++ { ++ if (!ieee) ++ return sign; ++ return sign | 0x7e00 | (mantissa >> 13); ++ } ++ ++ if (aexp == 0 && mantissa == 0) ++ return sign; ++ ++ aexp -= 127; ++ ++ /* Decimal point between bits 22 and 23. */ ++ mantissa |= 0x00800000; ++ if (aexp < -14) ++ { ++ mask = 0x007fffff; ++ if (aexp < -25) ++ aexp = -26; ++ else if (aexp != -25) ++ mask >>= 24 + aexp; ++ } ++ else ++ mask = 0x00001fff; ++ ++ /* Round. */ ++ if (mantissa & mask) ++ { ++ increment = (mask + 1) >> 1; ++ if ((mantissa & mask) == increment) ++ increment = mantissa & (increment << 1); ++ mantissa += increment; ++ if (mantissa >= 0x01000000) ++ { ++ mantissa >>= 1; ++ aexp++; ++ } ++ } ++ ++ if (ieee) ++ { ++ if (aexp > 15) ++ return sign | 0x7c00; ++ } ++ else ++ { ++ if (aexp > 16) ++ return sign | 0x7fff; ++ } ++ ++ if (aexp < -24) ++ return sign; ++ ++ if (aexp < -14) ++ { ++ mantissa >>= -14 - aexp; ++ aexp = -14; ++ } ++ ++ /* We leave the leading 1 in the mantissa, and subtract one ++ from the exponent bias to compensate. */ ++ return sign | (((aexp + 14) << 10) + (mantissa >> 13)); ++} ++ ++static inline unsigned int ++__gnu_h2f_internal(unsigned int a, int ieee) ++{ ++ unsigned int sign = (a & 0x00008000) << 16; ++ int aexp = (a >> 10) & 0x1f; ++ unsigned int mantissa = a & 0x3ff; ++ ++ if (aexp == 0x1f && ieee) ++ return sign | 0x7f800000 | (mantissa << 13); ++ ++ if (aexp == 0) ++ { ++ int shift; ++ ++ if (mantissa == 0) ++ return sign; ++ ++ shift = __builtin_clz(mantissa) - 21; ++ mantissa <<= shift; ++ aexp = -shift; ++ } ++ ++ return sign | (((aexp + 0x70) << 23) + (mantissa << 13)); ++} ++ ++#define ALIAS(src, dst) \ ++ typeof (src) dst __attribute__ ((alias (#src))); ++ ++unsigned int ++__gnu_f2h_ieee(unsigned int a) ++{ ++ return __gnu_f2h_internal(a, 1); ++} ++ALIAS (__gnu_f2h_ieee, __aeabi_f2h) ++ ++unsigned int ++__gnu_h2f_ieee(unsigned int a) ++{ ++ return __gnu_h2f_internal(a, 1); ++} ++ALIAS (__gnu_h2f_ieee, __aeabi_h2f) ++ ++unsigned int ++__gnu_f2h_alternative(unsigned int x) ++{ ++ return __gnu_f2h_internal(x, 0); ++} ++ALIAS (__gnu_f2h_alternative, __aeabi_f2h_alt) ++ ++unsigned int ++__gnu_h2f_alternative(unsigned int a) ++{ ++ return __gnu_h2f_internal(a, 0); ++} ++ALIAS (__gnu_h2f_alternative, __aeabi_h2f_alt) +--- a/src/gcc/config/arm/fpa.md ++++ b/src/gcc/config/arm/fpa.md +@@ -599,10 +599,10 @@ + { + default: + case 0: return \"mvf%?e\\t%0, %1\"; +- case 1: if (arm_fpu_arch == FPUTYPE_FPA_EMU2) ++ case 1: if (TARGET_FPA_EMU2) + return \"ldf%?e\\t%0, %1\"; + return \"lfm%?\\t%0, 1, %1\"; +- case 2: if (arm_fpu_arch == FPUTYPE_FPA_EMU2) ++ case 2: if (TARGET_FPA_EMU2) + return \"stf%?e\\t%1, %0\"; + return \"sfm%?\\t%1, 1, %0\"; + } +--- a/src/gcc/config/arm/hwdiv.md ++++ b/src/gcc/config/arm/hwdiv.md +@@ -0,0 +1,41 @@ ++;; ARM instruction patterns for hardware division ++;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. ++;; Written by CodeSourcery, LLC. ++;; ++;; 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 2, or (at your option) ++;; any later version. ++;; ++;; GCC is distributed in the hope that it will be useful, but ++;; WITHOUT ANY WARRANTY; without even the implied warranty of ++;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++;; General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING. If not, write to ++;; the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++;; Boston, MA 02110-1301, USA. ++ ++(define_insn "divsi3" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (div:SI (match_operand:SI 1 "s_register_operand" "r") ++ (match_operand:SI 2 "s_register_operand" "r")))] ++ "arm_arch_hwdiv" ++ "sdiv%?\t%0, %1, %2" ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "sdiv")] ++) ++ ++(define_insn "udivsi3" ++ [(set (match_operand:SI 0 "s_register_operand" "=r") ++ (udiv:SI (match_operand:SI 1 "s_register_operand" "r") ++ (match_operand:SI 2 "s_register_operand" "r")))] ++ "arm_arch_hwdiv" ++ "udiv%?\t%0, %1, %2" ++ [(set_attr "predicable" "yes") ++ (set_attr "insn" "udiv")] ++) ++ +--- a/src/gcc/config/arm/ieee754-df.S ++++ b/src/gcc/config/arm/ieee754-df.S +@@ -83,7 +83,7 @@ + ARM_FUNC_START adddf3 + ARM_FUNC_ALIAS aeabi_dadd adddf3 + +-1: do_push {r4, r5, lr} ++1: do_push (r4, r5, lr) + + @ Look for zeroes, equal values, INF, or NAN. + shift1 lsl, r4, xh, #1 +@@ -427,7 +427,7 @@ + do_it eq, t + moveq r1, #0 + RETc(eq) +- do_push {r4, r5, lr} ++ do_push (r4, r5, lr) + mov r4, #0x400 @ initial exponent + add r4, r4, #(52-1 - 1) + mov r5, #0 @ sign bit is 0 +@@ -447,7 +447,7 @@ + do_it eq, t + moveq r1, #0 + RETc(eq) +- do_push {r4, r5, lr} ++ do_push (r4, r5, lr) + mov r4, #0x400 @ initial exponent + add r4, r4, #(52-1 - 1) + ands r5, r0, #0x80000000 @ sign bit in r5 +@@ -481,7 +481,7 @@ + RETc(eq) @ we are done already. + + @ value was denormalized. We can normalize it now. +- do_push {r4, r5, lr} ++ do_push (r4, r5, lr) + mov r4, #0x380 @ setup corresponding exponent + and r5, xh, #0x80000000 @ move sign bit in r5 + bic xh, xh, #0x80000000 +@@ -508,9 +508,9 @@ + @ compatibility. + adr ip, LSYM(f0_ret) + @ Push pc as well so that RETLDM works correctly. +- do_push {r4, r5, ip, lr, pc} ++ do_push (r4, r5, ip, lr, pc) + #else +- do_push {r4, r5, lr} ++ do_push (r4, r5, lr) + #endif + + mov r5, #0 +@@ -534,9 +534,9 @@ + @ compatibility. + adr ip, LSYM(f0_ret) + @ Push pc as well so that RETLDM works correctly. +- do_push {r4, r5, ip, lr, pc} ++ do_push (r4, r5, ip, lr, pc) + #else +- do_push {r4, r5, lr} ++ do_push (r4, r5, lr) + #endif + + ands r5, ah, #0x80000000 @ sign bit in r5 +@@ -585,7 +585,7 @@ + @ Legacy code expects the result to be returned in f0. Copy it + @ there as well. + LSYM(f0_ret): +- do_push {r0, r1} ++ do_push (r0, r1) + ldfd f0, [sp], #8 + RETLDM + +@@ -602,7 +602,7 @@ + + ARM_FUNC_START muldf3 + ARM_FUNC_ALIAS aeabi_dmul muldf3 +- do_push {r4, r5, r6, lr} ++ do_push (r4, r5, r6, lr) + + @ Mask out exponents, trap any zero/denormal/INF/NAN. + mov ip, #0xff +@@ -910,7 +910,7 @@ + ARM_FUNC_START divdf3 + ARM_FUNC_ALIAS aeabi_ddiv divdf3 + +- do_push {r4, r5, r6, lr} ++ do_push (r4, r5, r6, lr) + + @ Mask out exponents, trap any zero/denormal/INF/NAN. + mov ip, #0xff +@@ -1195,7 +1195,7 @@ + + @ The status-returning routines are required to preserve all + @ registers except ip, lr, and cpsr. +-6: do_push {r0, lr} ++6: do_push (r0, lr) + ARM_CALL cmpdf2 + @ Set the Z flag correctly, and the C flag unconditionally. + cmp r0, #0 +--- a/src/gcc/config/arm/ieee754-sf.S ++++ b/src/gcc/config/arm/ieee754-sf.S +@@ -481,7 +481,7 @@ + and r3, ip, #0x80000000 + + @ Well, no way to make it shorter without the umull instruction. +- do_push {r3, r4, r5} ++ do_push (r3, r4, r5) + mov r4, r0, lsr #16 + mov r5, r1, lsr #16 + bic r0, r0, r4, lsl #16 +@@ -492,7 +492,7 @@ + mla r0, r4, r1, r0 + adds r3, r3, r0, lsl #16 + adc r1, ip, r0, lsr #16 +- do_pop {r0, r4, r5} ++ do_pop (r0, r4, r5) + + #else + +@@ -882,7 +882,7 @@ + + @ The status-returning routines are required to preserve all + @ registers except ip, lr, and cpsr. +-6: do_push {r0, r1, r2, r3, lr} ++6: do_push (r0, r1, r2, r3, lr) + ARM_CALL cmpsf2 + @ Set the Z flag correctly, and the C flag unconditionally. + cmp r0, #0 +--- a/src/gcc/config/arm/lib1funcs.asm ++++ b/src/gcc/config/arm/lib1funcs.asm +@@ -27,8 +27,17 @@ + #if defined(__ELF__) && defined(__linux__) + .section .note.GNU-stack,"",%progbits + .previous +-#endif ++#endif /* __ELF__ and __linux__ */ + ++#ifdef __ARM_EABI__ ++/* Some attributes that are common to all routines in this file. */ ++ /* Tag_ABI_align8_needed: This code does not require 8-byte ++ alignment from the caller. */ ++ /* .eabi_attribute 24, 0 -- default setting. */ ++ /* Tag_ABI_align8_preserved: This code preserves 8-byte ++ alignment in any callee. */ ++ .eabi_attribute 25, 1 ++#endif /* __ARM_EABI__ */ + /* ------------------------------------------------------------------------ */ + + /* We need to know what prefix to add to function names. */ +@@ -234,8 +243,8 @@ + .macro shift1 op, arg0, arg1, arg2 + \op \arg0, \arg1, \arg2 + .endm +-#define do_push push +-#define do_pop pop ++#define do_push(...) push {__VA_ARGS__} ++#define do_pop(...) pop {__VA_ARGS__} + #define COND(op1, op2, cond) op1 ## op2 ## cond + /* Perform an arithmetic operation with a variable shift operand. This + requires two instructions and a scratch register on Thumb-2. */ +@@ -249,24 +258,133 @@ + .macro shift1 op, arg0, arg1, arg2 + mov \arg0, \arg1, \op \arg2 + .endm +-#define do_push stmfd sp!, +-#define do_pop ldmfd sp!, ++#if defined(__low_irq_latency__) ++#define do_push(...) \ ++ _buildN1(do_push, _buildC1(__VA_ARGS__))( __VA_ARGS__) ++#define _buildN1(BASE, X) _buildN2(BASE, X) ++#define _buildN2(BASE, X) BASE##X ++#define _buildC1(...) _buildC2(__VA_ARGS__,9,8,7,6,5,4,3,2,1) ++#define _buildC2(a1,a2,a3,a4,a5,a6,a7,a8,a9,c,...) c ++ ++#define do_push1(r1) str r1, [sp, #-4]! ++#define do_push2(r1, r2) str r2, [sp, #-4]! ; str r1, [sp, #-4]! ++#define do_push3(r1, r2, r3) str r3, [sp, #-4]! ; str r2, [sp, #-4]!; str r1, [sp, #-4]! ++#define do_push4(r1, r2, r3, r4) \ ++ do_push3 (r2, r3, r4);\ ++ do_push1 (r1) ++#define do_push5(r1, r2, r3, r4, r5) \ ++ do_push4 (r2, r3, r4, r5);\ ++ do_push1 (r1) ++ ++#define do_pop(...) \ ++_buildN1(do_pop, _buildC1(__VA_ARGS__))( __VA_ARGS__) ++ ++#define do_pop1(r1) ldr r1, [sp], #4 ++#define do_pop2(r1, r2) ldr r1, [sp], #4 ; ldr r2, [sp], #4 ++#define do_pop3(r1, r2, r3) ldr r1, [sp], #4 ; str r2, [sp], #4; str r3, [sp], #4 ++#define do_pop4(r1, r2, r3, r4) \ ++ do_pop1 (r1);\ ++ do_pup3 (r2, r3, r4) ++#define do_pop5(r1, r2, r3, r4, r5) \ ++ do_pop1 (r1);\ ++ do_pop4 (r2, r3, r4, r5) ++#else ++#define do_push(...) stmfd sp!, { __VA_ARGS__} ++#define do_pop(...) ldmfd sp!, {__VA_ARGS__} ++#endif ++ ++ + #define COND(op1, op2, cond) op1 ## cond ## op2 + .macro shiftop name, dest, src1, src2, shiftop, shiftreg, tmp + \name \dest, \src1, \src2, \shiftop \shiftreg + .endm + #endif + +-.macro ARM_LDIV0 name ++#ifdef __ARM_EABI__ ++.macro ARM_LDIV0 name signed ++ cmp r0, #0 ++ .ifc \signed, unsigned ++ movne r0, #0xffffffff ++ .else ++ movgt r0, #0x7fffffff ++ movlt r0, #0x80000000 ++ .endif ++ b SYM (__aeabi_idiv0) __PLT__ ++.endm ++#else ++.macro ARM_LDIV0 name signed + str lr, [sp, #-8]! + 98: cfi_push 98b - __\name, 0xe, -0x8, 0x8 + bl SYM (__div0) __PLT__ + mov r0, #0 @ About as wrong as it could be. + RETLDM unwind=98b + .endm ++#endif + + +-.macro THUMB_LDIV0 name ++#ifdef __ARM_EABI__ ++.macro THUMB_LDIV0 name signed ++#if defined(__ARM_ARCH_6M__) ++ .ifc \signed, unsigned ++ cmp r0, #0 ++ beq 1f ++ mov r0, #0 ++ mvn r0, r0 @ 0xffffffff ++1: ++ .else ++ cmp r0, #0 ++ beq 2f ++ blt 3f ++ mov r0, #0 ++ mvn r0, r0 ++ lsr r0, r0, #1 @ 0x7fffffff ++ b 2f ++3: mov r0, #0x80 ++ lsl r0, r0, #24 @ 0x80000000 ++2: ++ .endif ++ push {r0, r1, r2} ++ ldr r0, 4f ++ adr r1, 4f ++ add r0, r1 ++ str r0, [sp, #8] ++ @ We know we are not on armv4t, so pop pc is safe. ++ pop {r0, r1, pc} ++ .align 2 ++4: ++ .word __aeabi_idiv0 - 4b ++#elif defined(__thumb2__) ++ .syntax unified ++ .ifc \signed, unsigned ++ cbz r0, 1f ++ mov r0, #0xffffffff ++1: ++ .else ++ cmp r0, #0 ++ do_it gt ++ movgt r0, #0x7fffffff ++ do_it lt ++ movlt r0, #0x80000000 ++ .endif ++ b.w SYM(__aeabi_idiv0) __PLT__ ++#else ++ .align 2 ++ bx pc ++ nop ++ .arm ++ cmp r0, #0 ++ .ifc \signed, unsigned ++ movne r0, #0xffffffff ++ .else ++ movgt r0, #0x7fffffff ++ movlt r0, #0x80000000 ++ .endif ++ b SYM(__aeabi_idiv0) __PLT__ ++ .thumb ++#endif ++.endm ++#else ++.macro THUMB_LDIV0 name signed + push { r1, lr } + 98: cfi_push 98b - __\name, 0xe, -0x4, 0x8 + bl SYM (__div0) +@@ -278,18 +396,19 @@ + pop { r1, pc } + #endif + .endm ++#endif + + .macro FUNC_END name + SIZE (__\name) + .endm + +-.macro DIV_FUNC_END name ++.macro DIV_FUNC_END name signed + cfi_start __\name, LSYM(Lend_div0) + LSYM(Ldiv0): + #ifdef __thumb__ +- THUMB_LDIV0 \name ++ THUMB_LDIV0 \name \signed + #else +- ARM_LDIV0 \name ++ ARM_LDIV0 \name \signed + #endif + cfi_end LSYM(Lend_div0) + FUNC_END \name +@@ -414,6 +533,12 @@ + #define yyl r2 + #endif + ++#ifdef __ARM_EABI__ ++.macro WEAK name ++ .weak SYM (__\name) ++.endm ++#endif ++ + #ifdef __thumb__ + /* Register aliases. */ + +@@ -438,6 +563,43 @@ + + #if __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__) + ++#if defined (__thumb2__) ++ clz \curbit, \dividend ++ clz \result, \divisor ++ sub \curbit, \result, \curbit ++ rsb \curbit, \curbit, #31 ++ adr \result, 1f ++ add \curbit, \result, \curbit, lsl #4 ++ mov \result, #0 ++ mov pc, \curbit ++.p2align 3 ++1: ++ .set shift, 32 ++ .rept 32 ++ .set shift, shift - 1 ++ cmp.w \dividend, \divisor, lsl #shift ++ nop.n ++ adc.w \result, \result, \result ++ it cs ++ subcs.w \dividend, \dividend, \divisor, lsl #shift ++ .endr ++#elif defined(__ARM_TUNE_MARVELL_F__) ++ clz \curbit, \dividend ++ clz \result, \divisor ++ sub \curbit, \result, \curbit ++ mov \divisor, \divisor, lsl \curbit ++ rsb \curbit, \curbit, #31 ++ mov \curbit, \curbit, lsl #2 ++ mov \result, #0 ++ add pc, pc, \curbit, lsl #2 ++ nop ++ .rept 32 ++ cmp \dividend, \divisor ++ subcs \dividend, \dividend, \divisor ++ mov \divisor, \divisor, lsr #1 ++ adc \result, \result, \result ++ .endr ++#else /* ! defined(__ARM_TUNE_MARVELL_F__) */ + clz \curbit, \dividend + clz \result, \divisor + sub \curbit, \result, \curbit +@@ -453,6 +615,7 @@ + adc \result, \result, \result + subcs \dividend, \dividend, \divisor, lsl #shift + .endr ++#endif /* defined(__ARM_TUNE_MARVELL_F__) */ + + #else /* __ARM_ARCH__ < 5 || defined (__OPTIMIZE_SIZE__) */ + #if __ARM_ARCH__ >= 5 +@@ -500,18 +663,23 @@ + + @ Division loop + 1: cmp \dividend, \divisor ++ do_it hs, t + subhs \dividend, \dividend, \divisor + orrhs \result, \result, \curbit + cmp \dividend, \divisor, lsr #1 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #1 + orrhs \result, \result, \curbit, lsr #1 + cmp \dividend, \divisor, lsr #2 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #2 + orrhs \result, \result, \curbit, lsr #2 + cmp \dividend, \divisor, lsr #3 ++ do_it hs, t + subhs \dividend, \dividend, \divisor, lsr #3 + orrhs \result, \result, \curbit, lsr #3 + cmp \dividend, #0 @ Early termination? ++ do_it ne, t + movnes \curbit, \curbit, lsr #4 @ No, any more bits to do? + movne \divisor, \divisor, lsr #4 + bne 1b +@@ -800,13 +968,14 @@ + /* ------------------------------------------------------------------------ */ + #ifdef L_udivsi3 + ++#if defined(__ARM_ARCH_6M__) ++ + FUNC_START udivsi3 + FUNC_ALIAS aeabi_uidiv udivsi3 + +-#ifdef __thumb__ +- + cmp divisor, #0 + beq LSYM(Ldiv0) ++LSYM(udivsi3_nodiv0): + mov curbit, #1 + mov result, #0 + +@@ -820,9 +989,16 @@ + pop { work } + RET + +-#else /* ARM version. */ ++#else /* ARM/Thumb-2 version. */ ++ ++ ARM_FUNC_START udivsi3 ++ ARM_FUNC_ALIAS aeabi_uidiv udivsi3 + ++ /* Note: if called via udivsi3_nodiv0, this will unnecessarily check ++ for division-by-zero a second time. */ ++LSYM(udivsi3_nodiv0): + subs r2, r1, #1 ++ do_it eq + RETc(eq) + bcc LSYM(Ldiv0) + cmp r0, r1 +@@ -835,7 +1011,8 @@ + mov r0, r2 + RET + +-11: moveq r0, #1 ++11: do_it eq, e ++ moveq r0, #1 + movne r0, #0 + RET + +@@ -846,19 +1023,24 @@ + + #endif /* ARM version */ + +- DIV_FUNC_END udivsi3 ++ DIV_FUNC_END udivsi3 unsigned + ++#if defined(__ARM_ARCH_6M__) + FUNC_START aeabi_uidivmod +-#ifdef __thumb__ ++ cmp r1, #0 ++ beq LSYM(Ldiv0) + push {r0, r1, lr} +- bl SYM(__udivsi3) ++ bl LSYM(udivsi3_nodiv0) + POP {r1, r2, r3} + mul r2, r0 + sub r1, r1, r2 + bx r3 + #else ++ARM_FUNC_START aeabi_uidivmod ++ cmp r1, #0 ++ beq LSYM(Ldiv0) + stmfd sp!, { r0, r1, lr } +- bl SYM(__udivsi3) ++ bl LSYM(udivsi3_nodiv0) + ldmfd sp!, { r1, r2, lr } + mul r3, r2, r0 + sub r1, r1, r3 +@@ -905,19 +1087,20 @@ + + #endif /* ARM version. */ + +- DIV_FUNC_END umodsi3 ++ DIV_FUNC_END umodsi3 unsigned + + #endif /* L_umodsi3 */ + /* ------------------------------------------------------------------------ */ + #ifdef L_divsi3 + ++#if defined(__ARM_ARCH_6M__) ++ + FUNC_START divsi3 + FUNC_ALIAS aeabi_idiv divsi3 + +-#ifdef __thumb__ + cmp divisor, #0 + beq LSYM(Ldiv0) +- ++LSYM(divsi3_nodiv0): + push { work } + mov work, dividend + eor work, divisor @ Save the sign of the result. +@@ -946,15 +1129,21 @@ + pop { work } + RET + +-#else /* ARM version. */ ++#else /* ARM/Thumb-2 version. */ + ++ ARM_FUNC_START divsi3 ++ ARM_FUNC_ALIAS aeabi_idiv divsi3 ++ + cmp r1, #0 +- eor ip, r0, r1 @ save the sign of the result. + beq LSYM(Ldiv0) ++LSYM(divsi3_nodiv0): ++ eor ip, r0, r1 @ save the sign of the result. ++ do_it mi + rsbmi r1, r1, #0 @ loops below use unsigned. + subs r2, r1, #1 @ division by 1 or -1 ? + beq 10f + movs r3, r0 ++ do_it mi + rsbmi r3, r0, #0 @ positive dividend value + cmp r3, r1 + bls 11f +@@ -964,14 +1153,18 @@ + ARM_DIV_BODY r3, r1, r0, r2 + + cmp ip, #0 ++ do_it mi + rsbmi r0, r0, #0 + RET + + 10: teq ip, r0 @ same sign ? ++ do_it mi + rsbmi r0, r0, #0 + RET + +-11: movlo r0, #0 ++11: do_it lo ++ movlo r0, #0 ++ do_it eq,t + moveq r0, ip, asr #31 + orreq r0, r0, #1 + RET +@@ -980,24 +1173,30 @@ + + cmp ip, #0 + mov r0, r3, lsr r2 ++ do_it mi + rsbmi r0, r0, #0 + RET + + #endif /* ARM version */ + +- DIV_FUNC_END divsi3 ++ DIV_FUNC_END divsi3 signed + ++#if defined(__ARM_ARCH_6M__) + FUNC_START aeabi_idivmod +-#ifdef __thumb__ ++ cmp r1, #0 ++ beq LSYM(Ldiv0) + push {r0, r1, lr} +- bl SYM(__divsi3) ++ bl LSYM(divsi3_nodiv0) + POP {r1, r2, r3} + mul r2, r0 + sub r1, r1, r2 + bx r3 + #else ++ARM_FUNC_START aeabi_idivmod ++ cmp r1, #0 ++ beq LSYM(Ldiv0) + stmfd sp!, { r0, r1, lr } +- bl SYM(__divsi3) ++ bl LSYM(divsi3_nodiv0) + ldmfd sp!, { r1, r2, lr } + mul r3, r2, r0 + sub r1, r1, r3 +@@ -1063,21 +1262,25 @@ + + #endif /* ARM version */ + +- DIV_FUNC_END modsi3 ++ DIV_FUNC_END modsi3 signed + + #endif /* L_modsi3 */ + /* ------------------------------------------------------------------------ */ + #ifdef L_dvmd_tls + +- FUNC_START div0 +- FUNC_ALIAS aeabi_idiv0 div0 +- FUNC_ALIAS aeabi_ldiv0 div0 +- ++#ifdef __ARM_EABI__ ++ WEAK aeabi_idiv0 ++ WEAK aeabi_ldiv0 ++ FUNC_START aeabi_idiv0 ++ FUNC_START aeabi_ldiv0 + RET +- + FUNC_END aeabi_ldiv0 + FUNC_END aeabi_idiv0 ++#else ++ FUNC_START div0 ++ RET + FUNC_END div0 ++#endif + + #endif /* L_divmodsi_tools */ + /* ------------------------------------------------------------------------ */ +@@ -1087,16 +1290,49 @@ + /* Constant taken from . */ + #define SIGFPE 8 + ++#ifdef __ARM_EABI__ ++ WEAK aeabi_idiv0 ++ WEAK aeabi_ldiv0 ++ ARM_FUNC_START aeabi_idiv0 ++ ARM_FUNC_START aeabi_ldiv0 ++#else + ARM_FUNC_START div0 ++#endif + +- do_push {r1, lr} ++ do_push (r1, lr) + mov r0, #SIGFPE + bl SYM(raise) __PLT__ + RETLDM r1 + ++#ifdef __ARM_EABI__ ++ FUNC_END aeabi_ldiv0 ++ FUNC_END aeabi_idiv0 ++#else + FUNC_END div0 ++#endif + + #endif /* L_dvmd_lnx */ ++#ifdef L_clear_cache ++#if defined __ARM_EABI__ && defined __linux__ ++@ EABI GNU/Linux call to cacheflush syscall. ++ ARM_FUNC_START clear_cache ++ do_push (r7) ++#if __ARM_ARCH__ >= 7 || defined(__ARM_ARCH_6T2__) ++ movw r7, #2 ++ movt r7, #0xf ++#else ++ mov r7, #0xf0000 ++ add r7, r7, #2 ++#endif ++ mov r2, #0 ++ swi 0 ++ do_pop (r7) ++ RET ++ FUNC_END clear_cache ++#else ++#error "This is only for ARM EABI GNU/Linux" ++#endif ++#endif /* L_clear_cache */ + /* ------------------------------------------------------------------------ */ + /* Dword shift operations. */ + /* All the following Dword shift variants rely on the fact that +@@ -1114,9 +1350,6 @@ + #define ah r1 + #endif + +-/* Prevent __aeabi double-word shifts from being produced on SymbianOS. */ +-#ifndef __symbian__ +- + #ifdef L_lshrdi3 + + FUNC_START lshrdi3 +@@ -1218,8 +1451,6 @@ + + #endif + +-#endif /* __symbian__ */ +- + #if ((__ARM_ARCH__ > 5) && !defined(__ARM_ARCH_6M__)) \ + || defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) \ + || defined(__ARM_ARCH_5TEJ__) +@@ -1293,7 +1524,7 @@ + push {r4, lr} + # else + ARM_FUNC_START clzdi2 +- do_push {r4, lr} ++ do_push (r4, lr) + # endif + cmp xxh, #0 + bne 1f +@@ -1515,7 +1746,6 @@ + #endif /* !__thumb2__ */ + #endif /* Arch supports thumb. */ + +-#ifndef __symbian__ + #ifndef __ARM_ARCH_6M__ + #include "ieee754-df.S" + #include "ieee754-sf.S" +@@ -1523,4 +1753,3 @@ + #else /* __ARM_ARCH_6M__ */ + #include "bpabi-v6m.S" + #endif /* __ARM_ARCH_6M__ */ +-#endif /* !__symbian__ */ +--- a/src/gcc/config/arm/libunwind.S ++++ b/src/gcc/config/arm/libunwind.S +@@ -27,8 +27,6 @@ + .previous + #endif + +-#ifndef __symbian__ +- + #include "lib1funcs.asm" + + .macro UNPREFIX name +@@ -348,5 +346,3 @@ + UNWIND_WRAPPER _Unwind_Resume_or_Rethrow 1 + UNWIND_WRAPPER _Unwind_ForcedUnwind 3 + UNWIND_WRAPPER _Unwind_Backtrace 2 +- +-#endif /* ndef __symbian__ */ +--- a/src/gcc/config/arm/linux-eabi.h ++++ b/src/gcc/config/arm/linux-eabi.h +@@ -66,22 +66,14 @@ + /* 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 +-#define LINK_SPEC LINUX_TARGET_LINK_SPEC ++#define LINK_SPEC LINUX_TARGET_LINK_SPEC BE8_LINK_SPEC + + /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we + do not use -lfloat. */ + #undef LIBGCC_SPEC + +-/* Clear the instruction cache from `beg' to `end'. This makes an +- inline system call to SYS_cacheflush. */ ++/* Clear the instruction cache from `beg' to `end'. This is ++ implemented in lib1funcs.asm, so ensure an error if this definition ++ is used. */ + #undef CLEAR_INSN_CACHE +-#define CLEAR_INSN_CACHE(BEG, END) \ +-{ \ +- register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ +- register unsigned long _end __asm ("a2") = (unsigned long) (END); \ +- register unsigned long _flg __asm ("a3") = 0; \ +- register unsigned long _scno __asm ("r7") = 0xf0002; \ +- __asm __volatile ("swi 0 @ sys_cacheflush" \ +- : "=r" (_beg) \ +- : "0" (_beg), "r" (_end), "r" (_flg), "r" (_scno)); \ +-} ++#define CLEAR_INSN_CACHE(BEG, END) not used +--- a/src/gcc/config/arm/linux-elf.h ++++ b/src/gcc/config/arm/linux-elf.h +@@ -98,7 +98,7 @@ + + /* NWFPE always understands FPA instructions. */ + #undef FPUTYPE_DEFAULT +-#define FPUTYPE_DEFAULT FPUTYPE_FPA_EMU3 ++#define FPUTYPE_DEFAULT "fpe3" + + /* Call the function profiler with a given profile label. */ + #undef ARM_FUNCTION_PROFILER +--- a/src/gcc/config/arm/marvell-f-vfp.md ++++ b/src/gcc/config/arm/marvell-f-vfp.md +@@ -0,0 +1,153 @@ ++;; Marvell 2850 VFP pipeline description ++;; Copyright (C) 2007 Free Software Foundation, Inc. ++;; Written by CodeSourcery, Inc. ++ ++;; This file is part of GCC. ++ ++;; GCC is distributed in the hope that it will be useful, but WITHOUT ++;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++;; License for more details. ++ ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING. If not, write to ++;; the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++;; Boston, MA 02110-1301, USA. ++ ++;; This automaton provides a pipeline description for the Marvell ++;; 2850 core. ++;; ++;; The model given here assumes that the condition for all conditional ++;; instructions is "true", i.e., that all of the instructions are ++;; actually executed. ++ ++(define_automaton "marvell_f_vfp") ++ ++;; This is a single-issue VFPv2 implementation with the following execution ++;; units: ++;; ++;; 1. Addition/subtraction unit; takes three cycles, pipelined. ++;; 2. Multiplication unit; takes four cycles, pipelined. ++;; 3. Add buffer, used for multiply-accumulate (see below). ++;; 4. Divide/square root unit, not pipelined. ++;; For single-precision: takes sixteen cycles, can accept another insn ++;; after fifteen cycles. ++;; For double-precision: takes thirty-one cycles, can accept another insn ++;; after thirty cycles. ++;; 5. Single-cycle unit, pipelined. ++;; This does absolute value/copy/negate/compare in one cycle and ++;; conversion in two cycles. ++;; ++;; When all three operands of a multiply-accumulate instruction are ready, ++;; one is issued to the add buffer (which can hold six operands in a FIFO) ++;; and the two to be multiplied are issued to the multiply unit. After ++;; four cycles in the multiply unit, one cycle is taken to issue the ++;; operand from the add buffer plus the multiplication result to the ++;; addition/subtraction unit. That issue takes priority over any add/sub ++;; instruction waiting at the normal issue stage, but may be performed in ++;; parallel with the issue of a non-add/sub instruction. The total time ++;; for a multiply-accumulate instruction to pass through the execution ++;; units is hence eight cycles. ++;; ++;; We do not need to explicitly model the add buffer because it can ++;; always issue the instruction at the head of its FIFO (due to the above ++;; priority rule) and there are more spaces in the add buffer (six) than ++;; there are stages (four) in the multiplication unit. ++;; ++;; Two instructions may be retired at once from the head of an 8-entry ++;; reorder buffer. Data from these first two instructions only may be ++;; forwarded to the inputs of the issue unit. We assume that the ++;; pressure on the reorder buffer will be sufficiently low that every ++;; instruction entering it will be eligible for data forwarding. Since ++;; data is forwarded to the issue unit and not the execution units (so ++;; for example single-cycle instructions cannot be issued back-to-back), ++;; the latencies given below are the cycle counts above plus one. ++ ++(define_cpu_unit "mf_vfp_issue" "marvell_f_vfp") ++(define_cpu_unit "mf_vfp_add" "marvell_f_vfp") ++(define_cpu_unit "mf_vfp_mul" "marvell_f_vfp") ++(define_cpu_unit "mf_vfp_div" "marvell_f_vfp") ++(define_cpu_unit "mf_vfp_single_cycle" "marvell_f_vfp") ++ ++;; An attribute to indicate whether our reservations are applicable. ++ ++(define_attr "marvell_f_vfp" "yes,no" ++ (const (if_then_else (and (eq_attr "tune" "marvell_f") ++ (eq_attr "fpu" "vfp")) ++ (const_string "yes") (const_string "no")))) ++ ++;; Reservations of functional units. The nothing*2 reservations at the ++;; start of many of the reservation strings correspond to the decode ++;; stages. We need to have these reservations so that we can correctly ++;; reserve parts of the core's A1 pipeline for loads and stores. For ++;; that case (since loads skip E1) the pipelines line up thus: ++;; A1 pipe: Issue E2 OF WR WB ... ++;; VFP pipe: Fetch Decode1 Decode2 Issue Execute1 ... ++;; For a load, we need to make a reservation of E2, and thus we must ++;; use Decode1 as the starting point for all VFP reservations here. ++;; ++;; For reservations of pipelined VFP execution units we only reserve ++;; the execution unit for the first execution cycle, omitting any trailing ++;; "nothing" reservations. ++ ++(define_insn_reservation "marvell_f_vfp_add" 4 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "farith")) ++ "nothing*2,mf_vfp_issue,mf_vfp_add") ++ ++(define_insn_reservation "marvell_f_vfp_mul" 5 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "fmuls,fmuld")) ++ "nothing*2,mf_vfp_issue,mf_vfp_mul") ++ ++(define_insn_reservation "marvell_f_vfp_divs" 17 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "fdivs")) ++ "nothing*2,mf_vfp_issue,mf_vfp_div*15") ++ ++(define_insn_reservation "marvell_f_vfp_divd" 32 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "fdivd")) ++ "nothing*2,mf_vfp_issue,mf_vfp_div*30") ++ ++;; The DFA lookahead is small enough that the "add" reservation here ++;; will always take priority over any addition/subtraction instruction ++;; issued five cycles after the multiply-accumulate instruction, as ++;; required. ++(define_insn_reservation "marvell_f_vfp_mac" 9 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "fmacs,fmacd")) ++ "nothing*2,mf_vfp_issue,mf_vfp_mul,nothing*4,mf_vfp_add") ++ ++(define_insn_reservation "marvell_f_vfp_single" 2 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "ffarith")) ++ "nothing*2,mf_vfp_issue,mf_vfp_single_cycle") ++ ++(define_insn_reservation "marvell_f_vfp_convert" 3 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "f_cvt")) ++ "nothing*2,mf_vfp_issue,mf_vfp_single_cycle") ++ ++(define_insn_reservation "marvell_f_vfp_load" 2 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "f_loads,f_loadd")) ++ "a1_e2+sram,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle") ++ ++(define_insn_reservation "marvell_f_vfp_from_core" 2 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "r_2_f")) ++ "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle") ++ ++;; The interaction between the core and VFP pipelines during VFP ++;; store operations and core <-> VFP moves is not clear, so we guess. ++(define_insn_reservation "marvell_f_vfp_store" 3 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "f_stores,f_stored")) ++ "a1_e2,a1_of,mf_vfp_issue,a1_wr+sram+mf_vfp_single_cycle") ++ ++(define_insn_reservation "marvell_f_vfp_to_core" 4 ++ (and (eq_attr "marvell_f_vfp" "yes") ++ (eq_attr "type" "f_2_r")) ++ "a1_e2,a1_of,a1_wr+mf_vfp_issue,a1_wb+mf_vfp_single_cycle") ++ +--- a/src/gcc/config/arm/marvell-f.md ++++ b/src/gcc/config/arm/marvell-f.md +@@ -0,0 +1,365 @@ ++;; Marvell 2850 pipeline description ++;; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. ++;; Written by Marvell and CodeSourcery, 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 2, or (at your ++;; option) any later version. ++ ++;; GCC is distributed in the hope that it will be useful, but WITHOUT ++;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++;; License for more details. ++ ++;; You should have received a copy of the GNU General Public License ++;; along with GCC; see the file COPYING. If not, write to ++;; the Free Software Foundation, 51 Franklin Street, Fifth Floor, ++;; Boston, MA 02110-1301, USA. ++ ++;; This automaton provides a pipeline description for the Marvell ++;; 2850 core. ++;; ++;; The model given here assumes that the condition for all conditional ++;; instructions is "true", i.e., that all of the instructions are ++;; actually executed. ++ ++(define_automaton "marvell_f") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Pipelines ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; This is a dual-issue processor with three pipelines: ++;; ++;; 1. Arithmetic and load/store pipeline A1. ++;; Issue | E1 | E2 | OF | WR | WB for load-store instructions ++;; Issue | E1 | E2 | WB for arithmetic instructions ++;; ++;; 2. Arithmetic pipeline A2. ++;; Issue | E1 | E2 | WB ++;; ++;; 3. Multiply and multiply-accumulate pipeline. ++;; Issue | MAC1 | MAC2 | MAC3 | WB ++;; ++;; There are various bypasses modelled to a greater or lesser extent. ++;; ++;; Latencies in this file correspond to the number of cycles after ++;; the issue stage that it takes for the result of the instruction to ++;; be computed, or for its side-effects to occur. ++ ++(define_cpu_unit "a1_e1,a1_e2,a1_of,a1_wr,a1_wb" "marvell_f") ; ALU 1 ++(define_cpu_unit "a2_e1,a2_e2,a2_wb" "marvell_f") ; ALU 2 ++(define_cpu_unit "m_1,m_2,m_3,m_wb" "marvell_f") ; MAC ++ ++;; We define an SRAM cpu unit to enable us to describe conflicts ++;; between loads at the E2 stage and stores at the WR stage. ++ ++(define_cpu_unit "sram" "marvell_f") ++ ++;; Handling of dual-issue constraints. ++;; ++;; Certain pairs of instructions can be issued in parallel, and certain ++;; pairs cannot. We divide a subset of the instructions into groups as ++;; follows. ++;; ++;; - data processing 1 (mov, mvn); ++;; - data processing 2 (adc, add, and, bic, cmn, cmp, eor, orr, rsb, ++;; rsc, sbc, sub, teq, tst); ++;; - load single (ldr, ldrb, ldrbt, ldrt, ldrh, ldrsb, ldrsh); ++;; - store single (str, strb, strbt, strt, strh); ++;; - swap (swp, swpb); ++;; - pld; ++;; - count leading zeros and DSP add/sub (clz, qadd, qdadd, qsub, qdsub); ++;; - multiply 2 (mul, muls, smull, umull, smulxy, smulls, umulls); ++;; - multiply 3 (mla, mlas, smlal, umlal, smlaxy, smlalxy, smlawx, ++;; smlawy, smlals, umlals); ++;; - branches (b, bl, blx, bx). ++;; ++;; Ignoring conditional execution, it is a good approximation to the core ++;; to model that two instructions may only be issued in parallel if the ++;; following conditions are met. ++;; I. The instructions both fall into one of the above groups and their ++;; corresponding groups have a entry in the matrix below that is not X. ++;; II. The second instruction does not read any register updated by the ++;; first instruction (already enforced by the GCC scheduler). ++;; III. The second instruction does not need the carry flag updated by the ++;; first instruction. Currently we do not model this. ++;; ++;; First Second instruction group ++;; insn ++;; DP1 DP2 L S SWP PLD CLZ M2 M3 B ++;; ++;; DP1 ok ok ok ok ok ok ok ok ok ok ++;; DP2(1) ok ok ok ok ok ok ok ok ok ok ++;; DP2(2) ok (2) ok (4) ok ok ok ok X ok ++;; L } ++;; SWP } ok ok X X X X ok ok ok ok ++;; PLD } ++;; S(3) ok ok X X X X ok ok ok ok ++;; S(4) ok (2) X X X X ok ok X ok ++;; CLZ ok ok ok ok ok ok ok ok ok ok ++;; M2 ok ok ok ok ok ok ok X X ok ++;; M3 ok (2) ok (4) ok ok ok X X ok ++;; B ok ok ok ok ok ok ok ok ok ok ++;; ++;; (1) without register shift ++;; (2) with register shift ++;; (3) with immediate offset ++;; (4) with register offset ++;; ++;; We define a fake cpu unit "reg_shift_lock" to enforce constraints ++;; between instructions in groups DP2(2) and M3. All other ++;; constraints are enforced automatically by virtue of the limited ++;; number of pipelines available for the various operations, with ++;; the exception of constraints involving S(4) that we do not model. ++ ++(define_cpu_unit "reg_shift_lock" "marvell_f") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; ALU instructions ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; 1. Certain logic operations can be retired after the E1 stage if ++;; the pipeline is not already retiring another instruction. In this ++;; model we assume this behaviour always holds for mov, mvn, and, orr, eor ++;; instructions. If a register shift is involved and the instruction is ++;; not mov or mvn, then a dual-issue constraint must be enforced. ++ ++;; The first two cases are separate so they can be identified for ++;; bypasses below. ++ ++(define_insn_reservation "marvell_f_alu_early_retire" 1 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu") ++ (eq_attr "insn" "mov,mvn,and,orr,eor"))) ++ "(a1_e1,a1_wb)|(a2_e1,a2_wb)") ++ ++(define_insn_reservation "marvell_f_alu_early_retire_shift" 1 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "insn" "mov,mvn,and,orr,eor"))) ++ "(a1_e1,a1_wb)|(a2_e1,a2_wb)") ++ ++(define_insn_reservation "marvell_f_alu_early_retire_reg_shift1" 1 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "insn" "mov,mvn"))) ++ "(a1_e1,a1_wb)|(a2_e1,a2_wb)") ++ ++(define_insn_reservation "marvell_f_alu_early_retire_reg_shift2" 1 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu_shift_reg") ++ (eq_attr "insn" "and,orr,eor"))) ++ "(reg_shift_lock+a1_e1,a1_wb)|(reg_shift_lock+a2_e1,a2_wb)") ++ ++;; 2. ALU operations with no shifted operand. These bypass the E1 stage if ++;; the E2 stage of the corresponding pipeline is clear; here, we always ++;; model this scenario [*]. We give the operation a latency of 1 yet reserve ++;; both E1 and E2 for it (thus preventing the GCC scheduler, in the case ++;; where both E1 and E2 of one pipeline are clear, from issuing one ++;; instruction to each). ++;; ++;; [*] The non-bypass case is a latency of two, reserving E1 on the first ++;; cycle and E2 on the next. Due to the way the scheduler works we ++;; have to choose between taking this as the default and taking the ++;; above case (with latency one) as the default; we choose the latter. ++ ++(define_insn_reservation "marvell_f_alu_op_bypass_e1" 1 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu") ++ (not (eq_attr "insn" "mov,mvn,and,orr,eor")))) ++ "(a1_e1+a1_e2,a1_wb)|(a2_e1+a2_e2,a2_wb)") ++ ++;; 3. ALU operations with a shift-by-constant operand. ++ ++(define_insn_reservation "marvell_f_alu_shift_op" 2 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu_shift") ++ (not (eq_attr "insn" "mov,mvn,and,orr,eor")))) ++ "(a1_e1,a1_e2,a1_wb)|(a2_e1,a2_e2,a2_wb)") ++ ++;; 4. ALU operations with a shift-by-register operand. Since the ++;; instruction is never mov or mvn, a dual-issue constraint must ++;; be enforced. ++ ++(define_insn_reservation "marvell_f_alu_shift_reg_op" 2 ++ (and (eq_attr "tune" "marvell_f") ++ (and (eq_attr "type" "alu_shift_reg") ++ (not (eq_attr "insn" "mov,mvn,and,orr,eor")))) ++ "(reg_shift_lock+a1_e1,a1_e2,a1_wb)|(reg_shift_lock+a2_e1,a2_e2,a2_wb)") ++ ++;; Given an ALU operation with shift (I1) followed by another ALU ++;; operation (I2), with I2 depending on the destination register Rd of I1 ++;; and with I2 not using that value as the amount or the starting value for ++;; a shift, then I1 and I2 may be issued to the same pipeline on ++;; consecutive cycles. In terms of this model that corresponds to I1 ++;; having a latency of one cycle. There are three cases for various ++;; I1 and I2 as follows. ++ ++;; (a) I1 has a constant or register shift and I2 doesn't have a shift at all. ++(define_bypass 1 "marvell_f_alu_shift_op,\ ++ marvell_f_alu_shift_reg_op" ++ "marvell_f_alu_op_bypass_e1,marvell_f_alu_early_retire") ++ ++;; (b) I1 has a constant or register shift and I2 has a constant shift. ++;; Rd must not provide the starting value for the shift. ++(define_bypass 1 "marvell_f_alu_shift_op,\ ++ marvell_f_alu_shift_reg_op" ++ "marvell_f_alu_shift_op,marvell_f_alu_early_retire_shift" ++ "arm_no_early_alu_shift_value_dep") ++ ++;; (c) I1 has a constant or register shift and I2 has a register shift. ++;; Rd must not provide the amount by which to shift. ++(define_bypass 1 "marvell_f_alu_shift_op,\ ++ marvell_f_alu_shift_reg_op" ++ "marvell_f_alu_shift_reg_op,\ ++ marvell_f_alu_early_retire_reg_shift1,\ ++ marvell_f_alu_early_retire_reg_shift2" ++ "arm_no_early_alu_shift_dep") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Multiplication instructions ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; Multiplication instructions in group "Multiply 2". ++ ++(define_insn_reservation "marvell_f_multiply_2" 3 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "insn" "mul,muls,smull,umull,smulxy,smulls,umulls")) ++ "m_1,m_2,m_3,m_wb") ++ ++;; Multiplication instructions in group "Multiply 3". There is a ++;; dual-issue constraint with non-multiplication ALU instructions ++;; to be respected here. ++ ++(define_insn_reservation "marvell_f_multiply_3" 3 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "insn" "mla,mlas,smlal,umlal,smlaxy,smlalxy,smlawx,\ ++ smlawy,smlals,umlals")) ++ "reg_shift_lock+m_1,m_2,m_3,m_wb") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Branch instructions ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; Conditional backward b instructions can have a zero-cycle penalty, and ++;; other conditional b and bl instructions have a one-cycle penalty if ++;; predicted correctly. Currently we model the zero-cycle case for all ++;; branches. ++ ++(define_insn_reservation "marvell_f_branches" 0 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "branch")) ++ "nothing") ++ ++;; Call latencies are not predictable; a semi-arbitrary very large ++;; number is used as "positive infinity" for such latencies. ++ ++(define_insn_reservation "marvell_f_call" 32 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "call")) ++ "nothing") ++ ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++;; Load/store instructions ++;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ++;; The models for load/store instructions do not accurately describe ++;; the difference between operations with a base register writeback. ++;; These models assume that all memory references hit in dcache. ++ ++;; 1. Load/store for single registers. ++ ++;; The worst case for a load is when the load result is needed in E1 ++;; (for example for a register shift), giving a latency of four. Loads ++;; skip E1 and access memory at the E2 stage. ++ ++(define_insn_reservation "marvell_f_load1" 4 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "load1,load_byte")) ++ "a1_e2+sram,a1_of,a1_wr,a1_wb") ++ ++;; The result for a load may be bypassed (to be available at the same ++;; time as the load arrives in the WR stage, so effectively at the OF ++;; stage) to the Rn operand at E2 with a latency of two. The result may ++;; be bypassed to a non-Rn operand at E2 with a latency of three. For ++;; instructions without shifts, detection of an Rn bypass situation is ++;; difficult (because some of the instruction patterns switch their ++;; operands), and so we do not model that here. For instructions with ++;; shifts, the operand used at E2 will always be Rn, and so we can ++;; model the latency-two bypass for these. ++ ++(define_bypass 2 "marvell_f_load1" ++ "marvell_f_alu_shift_op" ++ "arm_no_early_alu_shift_value_dep") ++ ++(define_bypass 2 "marvell_f_load1" ++ "marvell_f_alu_shift_reg_op" ++ "arm_no_early_alu_shift_dep") ++ ++;; Stores write at the WR stage and loads read at the E2 stage, giving ++;; a store latency of three. ++ ++(define_insn_reservation "marvell_f_store1" 3 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "store1")) ++ "a1_e2,a1_of,a1_wr+sram,a1_wb") ++ ++;; 2. Load/store for two consecutive registers. These may be dealt ++;; with in the same number of cycles as single loads and stores. ++ ++(define_insn_reservation "marvell_f_load2" 4 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "load2")) ++ "a1_e2+sram,a1_of,a1_wr,a1_wb") ++ ++(define_insn_reservation "marvell_f_store2" 3 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "store2")) ++ "a1_e2,a1_of,a1_wr+sram,a1_wb") ++ ++;; The first word of a doubleword load is eligible for the latency-two ++;; bypass described above for single loads, but this is not modelled here. ++;; We do however assume that either word may also be bypassed with ++;; latency three for ALU operations with shifts (where the shift value and ++;; amount do not depend on the loaded value) and latency four for ALU ++;; operations without shifts. The latency four case is of course the default. ++ ++(define_bypass 3 "marvell_f_load2" ++ "marvell_f_alu_shift_op" ++ "arm_no_early_alu_shift_value_dep") ++ ++(define_bypass 3 "marvell_f_load2" ++ "marvell_f_alu_shift_reg_op" ++ "arm_no_early_alu_shift_dep") ++ ++;; 3. Load/store for more than two registers. ++ ++;; These instructions stall for an extra cycle in the decode stage; ++;; individual load/store instructions for each register are then issued. ++;; The load/store multiple instruction itself is removed from the decode ++;; stage at the same time as the final load/store instruction is issued. ++;; To complicate matters, pairs of loads/stores referencing two ++;; consecutive registers will be issued together as doubleword operations. ++;; We model a 3-word load as an LDR plus an LDRD, and a 4-word load ++;; as two LDRDs; thus, these are allocated the same latencies (the ++;; latency for two consecutive loads plus one for the setup stall). ++;; The extra stall is modelled by reserving E1. ++ ++(define_insn_reservation "marvell_f_load3_4" 6 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "load3,load4")) ++ "a1_e1,a1_e1+a1_e2+sram,a1_e2+sram+a1_of,a1_of+a1_wr,a1_wr+a1_wb,a1_wb") ++ ++;; Bypasses are possible for ldm as for single loads, but we do not ++;; model them here since the order of the constituent loads is ++;; difficult to predict. ++ ++(define_insn_reservation "marvell_f_store3_4" 5 ++ (and (eq_attr "tune" "marvell_f") ++ (eq_attr "type" "store3,store4")) ++ "a1_e1,a1_e1+a1_e2,a1_e2+a1_of,a1_of+a1_wr+sram,a1_wr+sram+a1_wb,a1_wb") ++ +--- a/src/gcc/config/arm/mingw32.h ++++ b/src/gcc/config/arm/mingw32.h +@@ -0,0 +1,140 @@ ++/* Operating system specific defines to be used when targeting GCC for ++ hosting on Windows CE, using GNU tools and the Windows32 API Library. ++ Copyright (C) 2006 ++ 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 ++ . */ ++ ++#undef TARGET_VERSION ++#define TARGET_VERSION fprintf (stderr, " (arm MinGW)"); ++ ++#undef EXTRA_OS_CPP_BUILTINS ++#define EXTRA_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("_WIN32"); \ ++ builtin_define_std ("WIN32"); \ ++ builtin_define_std ("WINNT"); \ ++ } \ ++ while (0) ++ ++#undef STANDARD_INCLUDE_DIR ++#define STANDARD_INCLUDE_DIR "/mingw/include" ++ ++#undef CPP_SPEC ++#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} \ ++-D__COREDLL__ -D__MINGW32__ -D__MINGW32CE__ -D__CEGCC_VERSION__ \ ++%{!nostdinc: -idirafter ../include/w32api%s -idirafter ../../include/w32api%s }" ++ ++#undef LIB_SPEC ++#define LIB_SPEC "%{pg:-lgmon} -lcoredll" ++ ++/* Include in the mingw32 libraries with libgcc */ ++#undef LINK_SPEC ++#define LINK_SPEC "%{shared|mdll: --shared} \ ++ %{static:-Bstatic} %{!static:-Bdynamic} \ ++ %{shared|mdll: -e DllMainCRTStartup}" ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "%{shared|mdll:dllcrt3%O%s} \ ++ %{!shared:%{!mdll:crt3%O%s}} %{pg:gcrt3%O%s}" ++ ++/* Override startfile prefix defaults. */ ++#ifndef STANDARD_STARTFILE_PREFIX_1 ++#define STANDARD_STARTFILE_PREFIX_1 "/mingw/lib/" ++#endif ++#ifndef STANDARD_STARTFILE_PREFIX_2 ++#define STANDARD_STARTFILE_PREFIX_2 "" ++#endif ++ ++/* Output STRING, a string representing a filename, to FILE. ++ We canonicalize it to be in Unix format (backslashes are replaced ++ forward slashes. */ ++#undef OUTPUT_QUOTED_STRING ++#define OUTPUT_QUOTED_STRING(FILE, STRING) \ ++do { \ ++ char c; \ ++ \ ++ putc ('\"', asm_file); \ ++ \ ++ while ((c = *string++) != 0) \ ++ { \ ++ if (c == '\\') \ ++ c = '/'; \ ++ \ ++ if (ISPRINT (c)) \ ++ { \ ++ if (c == '\"') \ ++ putc ('\\', asm_file); \ ++ putc (c, asm_file); \ ++ } \ ++ else \ ++ fprintf (asm_file, "\\%03o", (unsigned char) c); \ ++ } \ ++ \ ++ putc ('\"', asm_file); \ ++} while (0) ++ ++/* ++ * See the message from Dave Korn dated 2009/06/01 15:44 on the cegcc mailing ++ * list, and the gcc ChangeLog entry dated 2009-01-21, also by Dave. ++ * ++ * Based on that, we're replacing LIBGCC_SPEC by SHARED_LIBGCC_SPEC and ++ * REAL_GCC_SPEC. This is based on cygwin's definition, which we extend ++ * with the other libraries we need. ++ * ++ * The old definition : ++ "%{mthreads:-lmingwthrd} -lmingw32 -lgcc -lceoldname -lmingwex -lcoredll" ++ * ++ */ ++#undef LIBGCC_SPEC ++ ++#undef SHARED_LIBGCC_SPEC ++#ifdef ENABLE_SHARED_LIBGCC ++#define SHARED_LIBGCC_SPEC " \ ++ %{mthreads:-lmingwthrd} -lmingw32 \ ++ %{static|static-libgcc:-lgcc -lgcc_eh} \ ++ %{!static: \ ++ %{!static-libgcc: \ ++ %{!shared: \ ++ %{!shared-libgcc:-lgcc -lgcc_eh} \ ++ %{shared-libgcc:-lgcc_s -lgcc} \ ++ } \ ++ %{shared:-lgcc_s -lgcc} \ ++ } \ ++ } \ ++ -lceoldname -lmingwex -lcoredll" ++#else ++#define SHARED_LIBGCC_SPEC \ ++ "%{mthreads:-lmingwthrd} -lmingw32 -lgcc -lceoldname -lmingwex -lcoredll" ++#endif ++ ++#undef REAL_LIBGCC_SPEC ++#define REAL_LIBGCC_SPEC SHARED_LIBGCC_SPEC ++ ++/* On mingw32ce, the reference chain goes like ++ WinMainCRTStartup(entry)->WinMain->main. So, ++ libgfortranbegin.a(fmain.o:main) must be seen after ++ libmingw.a(WinMain). */ ++#define FORTRAN_INIT "-Wl,-lmingw32,-lgfortranbegin" ++ ++/* Only include windows.h when needed, to avoid conflicts with ++ fp-bit.c in the definition of FLOAT. */ ++#if defined(IN_LIBGCC2) && (defined(L_trampoline)) ++# define WIN32_LEAN_AND_MEAN ++# include ++#endif +--- a/src/gcc/config/arm/montavista-linux.h ++++ b/src/gcc/config/arm/montavista-linux.h +@@ -0,0 +1,33 @@ ++/* MontaVista GNU/Linux Configuration. ++ Copyright (C) 2009 ++ 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 ++. */ ++ ++/* Add -tarmv6 and -tthumb2 options for convenience in generating multilibs. ++*/ ++#undef CC1_SPEC ++#define CC1_SPEC " \ ++ %{tarmv6: -march=armv6 -mfloat-abi=softfp ; \ ++ tthumb2: -mthumb -march=armv7-a -mfloat-abi=softfp ; \ ++ : -march=armv5t}" ++ ++/* The various C libraries each have their own subdirectory. */ ++#undef SYSROOT_SUFFIX_SPEC ++#define SYSROOT_SUFFIX_SPEC \ ++ "%{tarmv6:/armv6 ; \ ++ tthumb2:/thumb2}" +--- a/src/gcc/config/arm/msformat-c.c ++++ b/src/gcc/config/arm/msformat-c.c +@@ -0,0 +1,197 @@ ++/* Check calls to formatted I/O functions (-Wformat). ++ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, ++ 2001, 2002, 2003, 2004, 2005, 2007, 2008 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 ++. */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "tree.h" ++#include "flags.h" ++#include "c-common.h" ++#include "toplev.h" ++#include "intl.h" ++#include "diagnostic.h" ++#include "langhooks.h" ++#include "c-format.h" ++#include "alloc-pool.h" ++ ++/* Mingw specific format attributes ms_printf, ms_scanf, and ms_strftime. */ ++ ++static format_length_info ms_printf_length_specs[] = ++{ ++ { "h", FMT_LEN_h, STD_C89, NULL, 0, 0 }, ++ { "l", FMT_LEN_l, STD_C89, NULL, 0, 0 }, ++ { "I32", FMT_LEN_l, STD_EXT, NULL, 0, 0 }, ++ { "I64", FMT_LEN_ll, STD_EXT, NULL, 0, 0 }, ++ { "I", FMT_LEN_L, STD_EXT, NULL, 0, 0 }, ++ { NULL, 0, 0, NULL, 0, 0 } ++}; ++ ++static const format_flag_spec ms_printf_flag_specs[] = ++{ ++ { ' ', 0, 0, N_("' ' flag"), N_("the ' ' printf flag"), STD_C89 }, ++ { '+', 0, 0, N_("'+' flag"), N_("the '+' printf flag"), STD_C89 }, ++ { '#', 0, 0, N_("'#' flag"), N_("the '#' printf flag"), STD_C89 }, ++ { '0', 0, 0, N_("'0' flag"), N_("the '0' printf flag"), STD_C89 }, ++ { '-', 0, 0, N_("'-' flag"), N_("the '-' printf flag"), STD_C89 }, ++ { '\'', 0, 0, N_("''' flag"), N_("the ''' printf flag"), STD_EXT }, ++ { 'w', 0, 0, N_("field width"), N_("field width in printf format"), STD_C89 }, ++ { 'p', 0, 0, N_("precision"), N_("precision in printf format"), STD_C89 }, ++ { 'L', 0, 0, N_("length modifier"), N_("length modifier in printf format"), STD_C89 }, ++ { 0, 0, 0, NULL, NULL, 0 } ++}; ++ ++static const format_flag_pair ms_printf_flag_pairs[] = ++{ ++ { ' ', '+', 1, 0 }, ++ { '0', '-', 1, 0 }, { '0', 'p', 1, 'i' }, ++ { 0, 0, 0, 0 } ++}; ++ ++static const format_flag_spec ms_scanf_flag_specs[] = ++{ ++ { '*', 0, 0, N_("assignment suppression"), N_("the assignment suppression scanf feature"), STD_C89 }, ++ { 'a', 0, 0, N_("'a' flag"), N_("the 'a' scanf flag"), STD_EXT }, ++ { 'w', 0, 0, N_("field width"), N_("field width in scanf format"), STD_C89 }, ++ { 'L', 0, 0, N_("length modifier"), N_("length modifier in scanf format"), STD_C89 }, ++ { '\'', 0, 0, N_("''' flag"), N_("the ''' scanf flag"), STD_EXT }, ++ { 0, 0, 0, NULL, NULL, 0 } ++}; ++ ++static const format_flag_pair ms_scanf_flag_pairs[] = ++{ ++ { '*', 'L', 0, 0 }, ++ { 0, 0, 0, 0 } ++}; ++ ++static const format_flag_spec ms_strftime_flag_specs[] = ++{ ++ { '#', 0, 0, N_("'#' flag"), N_("the '#' strftime flag"), STD_EXT }, ++ { 0, 0, 0, NULL, NULL, 0 } ++}; ++ ++static const format_flag_pair ms_strftime_flag_pairs[] = ++{ ++ { 0, 0, 0, 0 } ++}; ++ ++static const format_char_info ms_print_char_table[] = ++{ ++ /* C89 conversion specifiers. */ ++ { "di", 0, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, T99_SST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +'", "i", NULL }, ++ { "oxX", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0#", "i", NULL }, ++ { "u", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0'", "i", NULL }, ++ { "fgG", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +#'", "", NULL }, ++ { "eE", 0, STD_C89, { T89_D, BADLEN, BADLEN, T99_D, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +#", "", NULL }, ++ { "c", 0, STD_C89, { T89_I, BADLEN, T89_S, T94_WI, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "", NULL }, ++ { "s", 1, STD_C89, { T89_C, BADLEN, T89_S, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "cR", NULL }, ++ { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "c", NULL }, ++ { "n", 1, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, BADLEN, BADLEN, BADLEN, T99_IM, BADLEN, BADLEN, BADLEN }, "", "W", NULL }, ++ /* X/Open conversion specifiers. */ ++ { "C", 0, STD_EXT, { TEX_WI, BADLEN, T89_S, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", "", NULL }, ++ { "S", 1, STD_EXT, { TEX_W, BADLEN, T89_S, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", "R", NULL }, ++ { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL } ++}; ++ ++static const format_char_info ms_scan_char_table[] = ++{ ++ /* C89 conversion specifiers. */ ++ { "di", 1, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, T99_SST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w'", "W", NULL }, ++ { "u", 1, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w'", "W", NULL }, ++ { "oxX", 1, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w", "W", NULL }, ++ { "efgEG", 1, STD_C89, { T89_F, BADLEN, BADLEN, T89_D, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w'", "W", NULL }, ++ { "c", 1, STD_C89, { T89_C, BADLEN, T89_S, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w", "cW", NULL }, ++ { "s", 1, STD_C89, { T89_C, BADLEN, T89_S, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*aw", "cW", NULL }, ++ { "[", 1, STD_C89, { T89_C, BADLEN, BADLEN, T94_W, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*aw", "cW[", NULL }, ++ { "p", 2, STD_C89, { T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w", "W", NULL }, ++ { "n", 1, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "", "W", NULL }, ++ /* X/Open conversion specifiers. */ ++ { "C", 1, STD_EXT, { TEX_W, BADLEN, T89_S, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*w", "W", NULL }, ++ { "S", 1, STD_EXT, { TEX_W, BADLEN, T89_S, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "*aw", "W", NULL }, ++ { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL } ++}; ++ ++static const format_char_info ms_time_char_table[] = ++{ ++ /* C89 conversion specifiers. */ ++ { "ABZab", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "cx", 0, STD_C89, NOLENGTHS, "#", "3", NULL }, ++ { "HIMSUWdmw", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "j", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "p", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "X", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "y", 0, STD_C89, NOLENGTHS, "#", "4", NULL }, ++ { "Y", 0, STD_C89, NOLENGTHS, "#", "", NULL }, ++ { "%", 0, STD_C89, NOLENGTHS, "", "", NULL }, ++ /* C99 conversion specifiers. */ ++ { "z", 0, STD_C99, NOLENGTHS, "#", "", NULL }, ++ { NULL, 0, 0, NOLENGTHS, NULL, NULL, NULL } ++}; ++ ++const format_kind_info mingw_format_attributes[3] = ++{ ++ { "ms_printf", ms_printf_length_specs, ms_print_char_table, " +#0-'", NULL, ++ ms_printf_flag_specs, ms_printf_flag_pairs, ++ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK, ++ 'w', 0, 'p', 0, 'L', 0, ++ &integer_type_node, &integer_type_node ++ }, ++ { "ms_scanf", ms_printf_length_specs, ms_scan_char_table, "*'", NULL, ++ ms_scanf_flag_specs, ms_scanf_flag_pairs, ++ FMT_FLAG_ARG_CONVERT|FMT_FLAG_SCANF_A_KLUDGE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_ZERO_WIDTH_BAD|FMT_FLAG_DOLLAR_GAP_POINTER_OK, ++ 'w', 0, 0, '*', 'L', 0, ++ NULL, NULL ++ }, ++ { "ms_strftime", NULL, ms_time_char_table, "", "#", ++ ms_strftime_flag_specs, ms_strftime_flag_pairs, ++ FMT_FLAG_FANCY_PERCENT_OK, 0, 0, 0, 0, 0, 0, ++ NULL, NULL ++ } ++}; ++ ++/* Default overrides for printf, scanf and strftime. */ ++const target_ovr_attr mingw_format_attribute_overrides[4] = ++{ ++ { "ms_printf", "printf" }, ++ { "ms_scanf", "scanf" }, ++ { "ms_strftime", "strftime" } ++}; ++ ++/* Setup for option Wpedantic-ms-format. */ ++ ++#ifdef TARGET_OVERRIDES_FORMAT_INIT ++ ++/* Make sure TARGET_OVERRIDES_FORMAT_INIT is prototyped. */ ++extern void TARGET_OVERRIDES_FORMAT_INIT (void); ++ ++/* Helper. */ ++#define C89_OR_EXT (warn_pedantic_ms_format ? STD_EXT : STD_C89) ++ ++void ++TARGET_OVERRIDES_FORMAT_INIT (void) ++{ ++ ms_printf_length_specs[2].std = C89_OR_EXT; /* I32 */ ++ ms_printf_length_specs[3].std = C89_OR_EXT; /* I64 */ ++ ms_printf_length_specs[4].std = C89_OR_EXT; /* I */ ++} ++ ++#undef C89_OR_EXT ++ ++#endif +--- a/src/gcc/config/arm/neon-docgen.ml ++++ b/src/gcc/config/arm/neon-docgen.ml +@@ -214,6 +214,7 @@ + | Element_of_dreg -> (analyze_shape_elt reg_no Dreg) ^ "[@var{0}]" + | Element_of_qreg -> (analyze_shape_elt reg_no Qreg) ^ "[@var{0}]" + | All_elements_of_dreg -> (analyze_shape_elt reg_no Dreg) ^ "[]" ++ | Alternatives alts -> (analyze_shape_elt reg_no (List.hd alts)) + in + match shape with + All (n, elt) -> commas (analyze_shape_elt 0) (n_things n elt) "" +--- a/src/gcc/config/arm/neon-gen.ml ++++ b/src/gcc/config/arm/neon-gen.ml +@@ -122,6 +122,7 @@ + | T_uint16 | T_int16 -> T_intHI + | T_uint32 | T_int32 -> T_intSI + | T_uint64 | T_int64 -> T_intDI ++ | T_float32 -> T_floatSF + | T_poly8 -> T_intQI + | T_poly16 -> T_intHI + | T_arrayof (n, elt) -> T_arrayof (n, signed_ctype elt) +@@ -320,7 +321,7 @@ + typeinfo; + Format.print_newline (); + (* Extra types not in . *) +- Format.printf "typedef __builtin_neon_sf float32_t;\n"; ++ Format.printf "typedef float float32_t;\n"; + Format.printf "typedef __builtin_neon_poly8 poly8_t;\n"; + Format.printf "typedef __builtin_neon_poly16 poly16_t;\n" + +@@ -399,7 +400,11 @@ + "extern \"C\" {"; + "#endif"; + ""; ++"#if defined (__vxworks) && defined (_WRS_KERNEL)"; ++"#include "; ++"#else"; + "#include "; ++"#endif"; + ""]; + deftypes (); + arrtypes (); +--- a/src/gcc/config/arm/neon-testgen.ml ++++ b/src/gcc/config/arm/neon-testgen.ml +@@ -51,8 +51,8 @@ + Printf.fprintf chan "/* This file was autogenerated by neon-testgen. */\n\n"; + Printf.fprintf chan "/* { dg-do assemble } */\n"; + Printf.fprintf chan "/* { dg-require-effective-target arm_neon_ok } */\n"; +- Printf.fprintf chan +- "/* { dg-options \"-save-temps -O0 -mfpu=neon -mfloat-abi=softfp\" } */\n"; ++ Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n"; ++ Printf.fprintf chan "/* { dg-add-options arm_neon } */\n"; + Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n"; + Printf.fprintf chan "void test_%s (void)\n{\n" test_name + +@@ -181,6 +181,7 @@ + | Element_of_dreg -> (analyze_shape_elt Dreg) ^ "\\\\\\[\\[0-9\\]+\\\\\\]" + | Element_of_qreg -> (analyze_shape_elt Qreg) ^ "\\\\\\[\\[0-9\\]+\\\\\\]" + | All_elements_of_dreg -> (analyze_shape_elt Dreg) ^ "\\\\\\[\\\\\\]" ++ | Alternatives (elts) -> "(" ^ (String.concat "|" (List.map analyze_shape_elt elts)) ^ ")" + in + match shape with + All (n, elt) -> commas analyze_shape_elt (n_things n elt) "" +--- a/src/gcc/config/arm/neon.md ++++ b/src/gcc/config/arm/neon.md +@@ -22,17 +22,11 @@ + (define_constants + [(UNSPEC_ASHIFT_SIGNED 65) + (UNSPEC_ASHIFT_UNSIGNED 66) +- (UNSPEC_VABA 67) +- (UNSPEC_VABAL 68) + (UNSPEC_VABD 69) + (UNSPEC_VABDL 70) +- (UNSPEC_VABS 71) +- (UNSPEC_VADD 72) + (UNSPEC_VADDHN 73) + (UNSPEC_VADDL 74) + (UNSPEC_VADDW 75) +- (UNSPEC_VAND 76) +- (UNSPEC_VBIC 77) + (UNSPEC_VBSL 78) + (UNSPEC_VCAGE 79) + (UNSPEC_VCAGT 80) +@@ -40,18 +34,9 @@ + (UNSPEC_VCGE 82) + (UNSPEC_VCGT 83) + (UNSPEC_VCLS 84) +- (UNSPEC_VCLZ 85) +- (UNSPEC_VCNT 86) +- (UNSPEC_VCOMBINE 87) + (UNSPEC_VCVT 88) + (UNSPEC_VCVT_N 89) +- (UNSPEC_VDUP_LANE 90) +- (UNSPEC_VDUP_N 91) +- (UNSPEC_VEOR 92) + (UNSPEC_VEXT 93) +- (UNSPEC_VGET_HIGH 94) +- (UNSPEC_VGET_LANE 95) +- (UNSPEC_VGET_LOW 96) + (UNSPEC_VHADD 97) + (UNSPEC_VHSUB 98) + (UNSPEC_VLD1 99) +@@ -72,11 +57,9 @@ + (UNSPEC_VLD4_LANE 114) + (UNSPEC_VMAX 115) + (UNSPEC_VMIN 116) +- (UNSPEC_VMLA 117) + (UNSPEC_VMLAL 118) + (UNSPEC_VMLA_LANE 119) + (UNSPEC_VMLAL_LANE 120) +- (UNSPEC_VMLS 121) + (UNSPEC_VMLSL 122) + (UNSPEC_VMLS_LANE 123) + (UNSPEC_VMLSL_LANE 124) +@@ -86,10 +69,6 @@ + (UNSPEC_VMULL 128) + (UNSPEC_VMUL_LANE 129) + (UNSPEC_VMULL_LANE 130) +- (UNSPEC_VMUL_N 131) +- (UNSPEC_VMVN 132) +- (UNSPEC_VORN 133) +- (UNSPEC_VORR 134) + (UNSPEC_VPADAL 135) + (UNSPEC_VPADD 136) + (UNSPEC_VPADDL 137) +@@ -125,7 +104,6 @@ + (UNSPEC_VREV64 167) + (UNSPEC_VRSQRTE 168) + (UNSPEC_VRSQRTS 169) +- (UNSPEC_VSET_LANE 170) + (UNSPEC_VSHL 171) + (UNSPEC_VSHLL_N 172) + (UNSPEC_VSHL_N 173) +@@ -147,7 +125,6 @@ + (UNSPEC_VST4B 189) + (UNSPEC_VST4_LANE 190) + (UNSPEC_VSTRUCTDUMMY 191) +- (UNSPEC_VSUB 192) + (UNSPEC_VSUBHN 193) + (UNSPEC_VSUBL 194) + (UNSPEC_VSUBW 195) +@@ -159,7 +136,8 @@ + (UNSPEC_VUZP1 201) + (UNSPEC_VUZP2 202) + (UNSPEC_VZIP1 203) +- (UNSPEC_VZIP2 204)]) ++ (UNSPEC_VZIP2 204) ++ (UNSPEC_MISALIGNED_ACCESS 205)]) + + ;; Double-width vector modes. + (define_mode_iterator VD [V8QI V4HI V2SI V2SF]) +@@ -185,9 +163,6 @@ + ;; Opaque structure types wider than TImode. + (define_mode_iterator VSTRUCT [EI OI CI XI]) + +-;; Number of instructions needed to load/store struct elements. FIXME! +-(define_mode_attr V_slen [(EI "2") (OI "2") (CI "3") (XI "4")]) +- + ;; Opaque structure types used in table lookups (except vtbl1/vtbx1). + (define_mode_iterator VTAB [TI EI OI]) + +@@ -335,6 +310,14 @@ + (V4HI "V2SI") (V8HI "V4SI") + (V2SI "DI") (V4SI "V2DI")]) + ++;; Double-sized modes with the same element size. ++;; Used for neon_vdup_lane, where the second operand is double-sized ++;; even when the first one is quad. ++(define_mode_attr V_double_vector_mode [(V16QI "V8QI") (V8HI "V4HI") ++ (V4SI "V2SI") (V4SF "V2SF") ++ (V8QI "V8QI") (V4HI "V4HI") ++ (V2SI "V2SI") (V2SF "V2SF")]) ++ + ;; Mode of result of comparison operations (and bit-select operand 1). + (define_mode_attr V_cmp_result [(V8QI "V8QI") (V16QI "V16QI") + (V4HI "V4HI") (V8HI "V8HI") +@@ -459,7 +442,9 @@ + "=w,Uv,w, w, ?r,?w,?r,?r, ?Us") + (match_operand:VD 1 "general_operand" + " w,w, Dn,Uvi, w, r, r, Usi,r"))] +- "TARGET_NEON" ++ "TARGET_NEON ++ && (register_operand (operands[0], mode) ++ || register_operand (operands[1], mode))" + { + if (which_alternative == 2) + { +@@ -481,7 +466,7 @@ + + /* FIXME: If the memory layout is changed in big-endian mode, output_move_vfp + below must be changed to output_move_neon (which will use the +- element/structure loads/stores), and the constraint changed to 'Un' instead ++ element/structure loads/stores), and the constraint changed to 'Um' instead + of 'Uv'. */ + + switch (which_alternative) +@@ -506,7 +491,9 @@ + "=w,Un,w, w, ?r,?w,?r,?r, ?Us") + (match_operand:VQXMOV 1 "general_operand" + " w,w, Dn,Uni, w, r, r, Usi, r"))] +- "TARGET_NEON" ++ "TARGET_NEON ++ && (register_operand (operands[0], mode) ++ || register_operand (operands[1], mode))" + { + if (which_alternative == 2) + { +@@ -549,6 +536,11 @@ + (match_operand:TI 1 "general_operand" ""))] + "TARGET_NEON" + { ++ if (can_create_pseudo_p ()) ++ { ++ if (GET_CODE (operands[0]) != REG) ++ operands[1] = force_reg (TImode, operands[1]); ++ } + }) + + (define_expand "mov" +@@ -556,12 +548,19 @@ + (match_operand:VSTRUCT 1 "general_operand" ""))] + "TARGET_NEON" + { ++ if (can_create_pseudo_p ()) ++ { ++ if (GET_CODE (operands[0]) != REG) ++ operands[1] = force_reg (mode, operands[1]); ++ } + }) + + (define_insn "*neon_mov" + [(set (match_operand:VSTRUCT 0 "nonimmediate_operand" "=w,Ut,w") + (match_operand:VSTRUCT 1 "general_operand" " w,w, Ut"))] +- "TARGET_NEON" ++ "TARGET_NEON ++ && (register_operand (operands[0], mode) ++ || register_operand (operands[1], mode))" + { + switch (which_alternative) + { +@@ -571,7 +570,7 @@ + } + } + [(set_attr "neon_type" "neon_int_1,neon_stm_2,neon_ldm_2") +- (set_attr "length" ",,")]) ++ (set (attr "length") (symbol_ref "arm_attr_length_move_neon (insn)"))]) + + (define_split + [(set (match_operand:EI 0 "s_register_operand" "") +@@ -658,6 +657,49 @@ + neon_disambiguate_copy (operands, dest, src, 4); + }) + ++(define_expand "movmisalign" ++ [(set (match_operand:VDQX 0 "nonimmediate_operand" "") ++ (unspec:VDQX [(match_operand:VDQX 1 "general_operand" "")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++{ ++ if (!s_register_operand (operands[0], mode) ++ && !s_register_operand (operands[1], mode)) ++ FAIL; ++}) ++ ++(define_insn "*movmisalign_neon_store" ++ [(set (match_operand:VDX 0 "memory_operand" "=Um") ++ (unspec:VDX [(match_operand:VDX 1 "s_register_operand" " w")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "vst1.\t{%P1}, %A0" ++ [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")]) ++ ++(define_insn "*movmisalign_neon_load" ++ [(set (match_operand:VDX 0 "s_register_operand" "=w") ++ (unspec:VDX [(match_operand:VDX 1 "memory_operand" " Um")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "vld1.\t{%P0}, %A1" ++ [(set_attr "neon_type" "neon_vld1_1_2_regs")]) ++ ++(define_insn "*movmisalign_neon_store" ++ [(set (match_operand:VQX 0 "memory_operand" "=Um") ++ (unspec:VQX [(match_operand:VQX 1 "s_register_operand" " w")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "vst1.\t{%q1}, %A0" ++ [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")]) ++ ++(define_insn "*movmisalign_neon_load" ++ [(set (match_operand:VQX 0 "s_register_operand" "=w") ++ (unspec:VQX [(match_operand:VQX 1 "memory_operand" " Um")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "vld1.\t{%q0}, %A1" ++ [(set_attr "neon_type" "neon_vld1_1_2_regs")]) ++ + (define_insn "vec_set_internal" + [(set (match_operand:VD 0 "s_register_operand" "=w") + (vec_merge:VD +@@ -672,7 +714,7 @@ + elt = GET_MODE_NUNITS (mode) - 1 - elt; + operands[2] = GEN_INT (elt); + +- return "vmov%?.\t%P0[%c2], %1"; ++ return "vmov%?.\t%P0[%c2], %1"; + } + [(set_attr "predicable" "yes") + (set_attr "neon_type" "neon_mcr")]) +@@ -698,7 +740,7 @@ + operands[0] = gen_rtx_REG (mode, regno + hi); + operands[2] = GEN_INT (elt); + +- return "vmov%?.\t%P0[%c2], %1"; ++ return "vmov%?.\t%P0[%c2], %1"; + } + [(set_attr "predicable" "yes") + (set_attr "neon_type" "neon_mcr")] +@@ -718,7 +760,7 @@ + + operands[0] = gen_rtx_REG (DImode, regno); + +- return "vmov%?.64\t%P0, %Q1, %R1"; ++ return "vmov%?\t%P0, %Q1, %R1"; + } + [(set_attr "predicable" "yes") + (set_attr "neon_type" "neon_mcr_2_mcrr")] +@@ -786,11 +828,11 @@ + (parallel [(match_operand:SI 2 "immediate_operand" "i")])))] + "TARGET_NEON" + { +- int regno = REGNO (operands[1]) + INTVAL (operands[2]); ++ int regno = REGNO (operands[1]) + 2 * INTVAL (operands[2]); + + operands[1] = gen_rtx_REG (DImode, regno); + +- return "vmov%?.64\t%Q0, %R0, %P1"; ++ return "vmov%?\t%Q0, %R0, %P1 @ v2di"; + } + [(set_attr "predicable" "yes") + (set_attr "neon_type" "neon_int_1")] +@@ -807,11 +849,8 @@ + + ;; Doubleword and quadword arithmetic. + +-;; NOTE: vadd/vsub and some other instructions also support 64-bit integer +-;; element size, which we could potentially use for "long long" operations. We +-;; don't want to do this at present though, because moving values from the +-;; vector unit to the ARM core is currently slow and 64-bit addition (etc.) is +-;; easy to do with ARM instructions anyway. ++;; NOTE: some other instructions also support 64-bit integer ++;; element size, which we could potentially use for "long long" operations. + + (define_insn "*add3_neon" + [(set (match_operand:VDQ 0 "s_register_operand" "=w") +@@ -827,6 +866,28 @@ + (const_string "neon_int_1")))] + ) + ++(define_insn "adddi3_neon" ++ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,&r,&r") ++ (plus:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0") ++ (match_operand:DI 2 "s_register_operand" "w,w,r,0"))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_NEON" ++{ ++ switch (which_alternative) ++ { ++ case 0: /* fall through */ ++ case 1: return "vadd.i64\t%P0, %P1, %P2"; ++ case 2: return "#"; ++ case 3: return "#"; ++ default: gcc_unreachable (); ++ } ++} ++ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*") ++ (set_attr "conds" "*,*,clob,clob") ++ (set_attr "length" "*,*,8,8") ++ (set_attr "alt_tune" "nota8,onlya8,*,*")] ++) ++ + (define_insn "*sub3_neon" + [(set (match_operand:VDQ 0 "s_register_operand" "=w") + (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w") +@@ -841,6 +902,29 @@ + (const_string "neon_int_2")))] + ) + ++(define_insn "subdi3_neon" ++ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,&r,&r,&r") ++ (minus:DI (match_operand:DI 1 "s_register_operand" "w,w,0,r,0") ++ (match_operand:DI 2 "s_register_operand" "w,w,r,0,0"))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_NEON" ++{ ++ switch (which_alternative) ++ { ++ case 0: /* fall through */ ++ case 1: return "vsub.i64\t%P0, %P1, %P2"; ++ case 2: /* fall through */ ++ case 3: /* fall through */ ++ case 4: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2"; ++ default: gcc_unreachable (); ++ } ++} ++ [(set_attr "neon_type" "neon_int_2,neon_int_2,*,*,*") ++ (set_attr "conds" "*,*,clob,clob,clob") ++ (set_attr "length" "*,*,8,8,8") ++ (set_attr "alt_tune" "nota8,onlya8,*,*,*")] ++) ++ + (define_insn "*mul3_neon" + [(set (match_operand:VDQ 0 "s_register_operand" "=w") + (mult:VDQ (match_operand:VDQ 1 "s_register_operand" "w") +@@ -862,6 +946,50 @@ + (const_string "neon_mul_qqq_8_16_32_ddd_32")))))] + ) + ++(define_insn "mul3add_neon" ++ [(set (match_operand:VDQ 0 "s_register_operand" "=w") ++ (plus:VDQ (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w") ++ (match_operand:VDQ 3 "s_register_operand" "w")) ++ (match_operand:VDQ 1 "s_register_operand" "0")))] ++ "TARGET_NEON" ++ "vmla.\t%0, %2, %3" ++ [(set (attr "neon_type") ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_fp_vmla_ddd") ++ (const_string "neon_fp_vmla_qqq")) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (if_then_else ++ (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long") ++ (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_mla_qqq_8_16") ++ (const_string "neon_mla_qqq_32_qqd_32_scalar")))))] ++) ++ ++(define_insn "mul3negadd_neon" ++ [(set (match_operand:VDQ 0 "s_register_operand" "=w") ++ (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "0") ++ (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w") ++ (match_operand:VDQ 3 "s_register_operand" "w"))))] ++ "TARGET_NEON" ++ "vmls.\t%0, %2, %3" ++ [(set (attr "neon_type") ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_fp_vmla_ddd") ++ (const_string "neon_fp_vmla_qqq")) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (if_then_else ++ (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long") ++ (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")) ++ (if_then_else (ne (symbol_ref "") (const_int 0)) ++ (const_string "neon_mla_qqq_8_16") ++ (const_string "neon_mla_qqq_32_qqd_32_scalar")))))] ++) ++ + (define_insn "ior3" + [(set (match_operand:VDQ 0 "s_register_operand" "=w,w") + (ior:VDQ (match_operand:VDQ 1 "s_register_operand" "w,0") +@@ -880,21 +1008,26 @@ + ) + + (define_insn "iordi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "=w,w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w,0") +- (match_operand:DI 2 "neon_logic_op2" "w,Dl")] +- UNSPEC_VORR))] ++ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,w,?w,&r,&r") ++ (ior:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0,0,r") ++ (match_operand:DI 2 "neon_logic_op2" "w,w,Dl,Dl,r,r")))] + "TARGET_NEON" + { + switch (which_alternative) + { +- case 0: return "vorr\t%P0, %P1, %P2"; +- case 1: return neon_output_logic_immediate ("vorr", &operands[2], ++ case 0: /* fall through */ ++ case 1: return "vorr\t%P0, %P1, %P2"; ++ case 2: /* fall through */ ++ case 3: return neon_output_logic_immediate ("vorr", &operands[2], + DImode, 0, VALID_NEON_QREG_MODE (DImode)); ++ case 4: return "#"; ++ case 5: return "#"; + default: gcc_unreachable (); + } + } +- [(set_attr "neon_type" "neon_int_1")] ++ [(set_attr "neon_type" "neon_int_1,neon_int_1,neon_int_1,neon_int_1,*,*") ++ (set_attr "length" "*,*,*,*,8,8") ++ (set_attr "alt_tune" "nota8,onlya8,nota8,onlya8,*,*")] + ) + + ;; The concrete forms of the Neon immediate-logic instructions are vbic and +@@ -920,21 +1053,26 @@ + ) + + (define_insn "anddi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "=w,w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w,0") +- (match_operand:DI 2 "neon_inv_logic_op2" "w,DL")] +- UNSPEC_VAND))] ++ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,w,?w,&r,&r") ++ (and:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0,0,r") ++ (match_operand:DI 2 "neon_inv_logic_op2" "w,w,DL,DL,r,r")))] + "TARGET_NEON" + { + switch (which_alternative) + { +- case 0: return "vand\t%P0, %P1, %P2"; +- case 1: return neon_output_logic_immediate ("vand", &operands[2], ++ case 0: /* fall through */ ++ case 1: return "vand\t%P0, %P1, %P2"; ++ case 2: /* fall through */ ++ case 3: return neon_output_logic_immediate ("vand", &operands[2], + DImode, 1, VALID_NEON_QREG_MODE (DImode)); ++ case 4: return "#"; ++ case 5: return "#"; + default: gcc_unreachable (); + } + } +- [(set_attr "neon_type" "neon_int_1")] ++ [(set_attr "neon_type" "neon_int_1,neon_int_1,neon_int_1,neon_int_1,*,*") ++ (set_attr "length" "*,*,*,*,8,8") ++ (set_attr "alt_tune" "nota8,onlya8,nota8,onlya8,*,*")] + ) + + (define_insn "orn3_neon" +@@ -948,9 +1086,8 @@ + + (define_insn "orndi3_neon" + [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:DI 2 "s_register_operand" "w")] +- UNSPEC_VORN))] ++ (ior:DI (match_operand:DI 1 "s_register_operand" "w") ++ (not:DI (match_operand:DI 2 "s_register_operand" "w"))))] + "TARGET_NEON" + "vorn\t%P0, %P1, %P2" + [(set_attr "neon_type" "neon_int_1")] +@@ -965,14 +1102,18 @@ + [(set_attr "neon_type" "neon_int_1")] + ) + ++;; Compare to *anddi_notdi_di. + (define_insn "bicdi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:DI 2 "s_register_operand" "w")] +- UNSPEC_VBIC))] +- "TARGET_NEON" +- "vbic\t%P0, %P1, %P2" +- [(set_attr "neon_type" "neon_int_1")] ++ [(set (match_operand:DI 0 "s_register_operand" "=w,=&r,&r") ++ (and:DI (not:DI (match_operand:DI 2 "s_register_operand" "w,r,0")) ++ (match_operand:DI 1 "s_register_operand" "w,0,r")))] ++ "TARGET_NEON" ++ "@ ++ vbic\t%P0, %P1, %P2 ++ # ++ #" ++ [(set_attr "neon_type" "neon_int_1,*,*") ++ (set_attr "length" "*,8,8")] + ) + + (define_insn "xor3" +@@ -985,13 +1126,18 @@ + ) + + (define_insn "xordi3_neon" +- [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:DI 2 "s_register_operand" "w")] +- UNSPEC_VEOR))] +- "TARGET_NEON" +- "veor\t%P0, %P1, %P2" +- [(set_attr "neon_type" "neon_int_1")] ++ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,&r,&r") ++ (xor:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,r") ++ (match_operand:DI 2 "s_register_operand" "w,w,r,r")))] ++ "TARGET_NEON" ++ "@ ++ veor\t%P0, %P1, %P2 ++ veor\t%P0, %P1, %P2 ++ # ++ #" ++ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*") ++ (set_attr "length" "*,*,8,8") ++ (set_attr "alt_tune" "nota8,onlya8,*,*")] + ) + + (define_insn "one_cmpl2" +@@ -1015,6 +1161,16 @@ + (const_string "neon_int_3")))] + ) + ++(define_expand "neon_vabs" ++ [(match_operand:VDQW 0 "s_register_operand" "") ++ (match_operand:VDQW 1 "s_register_operand" "") ++ (match_operand:SI 2 "immediate_operand" "")] ++ "TARGET_NEON" ++{ ++ emit_insn (gen_abs2 (operands[0], operands[1])); ++ DONE; ++}) ++ + (define_insn "neg2" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") + (neg:VDQW (match_operand:VDQW 1 "s_register_operand" "w")))] +@@ -1074,7 +1230,7 @@ + ; generic vectorizer code. It ends up creating a V2DI constructor with + ; SImode elements. + +-(define_insn "ashl3" ++(define_insn "vashl3" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") + (ashift:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w") + (match_operand:VDQIW 2 "s_register_operand" "w")))] +@@ -1120,7 +1276,7 @@ + (const_string "neon_shift_3")))] + ) + +-(define_expand "ashr3" ++(define_expand "vashr3" + [(set (match_operand:VDQIW 0 "s_register_operand" "") + (ashiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "") + (match_operand:VDQIW 2 "s_register_operand" "")))] +@@ -1134,7 +1290,7 @@ + DONE; + }) + +-(define_expand "lshr3" ++(define_expand "vlshr3" + [(set (match_operand:VDQIW 0 "s_register_operand" "") + (lshiftrt:VDQIW (match_operand:VDQIW 1 "s_register_operand" "") + (match_operand:VDQIW 2 "s_register_operand" "")))] +@@ -1651,21 +1807,17 @@ + + ; good for plain vadd, vaddq. + +-(define_insn "neon_vadd" +- [(set (match_operand:VDQX 0 "s_register_operand" "=w") +- (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VADD))] ++(define_expand "neon_vadd" ++ [(match_operand:VDQX 0 "s_register_operand" "=w") ++ (match_operand:VDQX 1 "s_register_operand" "w") ++ (match_operand:VDQX 2 "s_register_operand" "w") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" +- "vadd.\t%0, %1, %2" +- [(set (attr "neon_type") +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_fp_vadd_ddd_vabs_dd") +- (const_string "neon_fp_vadd_qqq_vabs_qq")) +- (const_string "neon_int_1")))] +-) ++{ ++ emit_insn (gen_add3 (operands[0], operands[1], operands[2])); ++ DONE; ++}) ++ + + ; operand 3 represents in bits: + ; bit 0: signed (vs unsigned). +@@ -1728,6 +1880,8 @@ + [(set_attr "neon_type" "neon_int_4")] + ) + ++;; We cannot replace this unspec with mul3 because of the odd ++;; polynomial multiplication case that can specified by operand 3. + (define_insn "neon_vmul" + [(set (match_operand:VDQW 0 "s_register_operand" "=w") + (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "w") +@@ -1751,29 +1905,18 @@ + (const_string "neon_mul_qqq_8_16_32_ddd_32")))))] + ) + +-(define_insn "neon_vmla" +- [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") +- (match_operand:VDQW 2 "s_register_operand" "w") +- (match_operand:VDQW 3 "s_register_operand" "w") +- (match_operand:SI 4 "immediate_operand" "i")] +- UNSPEC_VMLA))] ++(define_expand "neon_vmla" ++ [(match_operand:VDQW 0 "s_register_operand" "=w") ++ (match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w") ++ (match_operand:VDQW 3 "s_register_operand" "w") ++ (match_operand:SI 4 "immediate_operand" "i")] + "TARGET_NEON" +- "vmla.\t%0, %2, %3" +- [(set (attr "neon_type") +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_fp_vmla_ddd") +- (const_string "neon_fp_vmla_qqq")) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else +- (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long") +- (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_mla_qqq_8_16") +- (const_string "neon_mla_qqq_32_qqd_32_scalar")))))] +-) ++{ ++ emit_insn (gen_mul3add_neon (operands[0], operands[1], ++ operands[2], operands[3])); ++ DONE; ++}) + + (define_insn "neon_vmlal" + [(set (match_operand: 0 "s_register_operand" "=w") +@@ -1790,30 +1933,18 @@ + (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))] + ) + +-(define_insn "neon_vmls" +- [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0") +- (match_operand:VDQW 2 "s_register_operand" "w") +- (match_operand:VDQW 3 "s_register_operand" "w") +- (match_operand:SI 4 "immediate_operand" "i")] +- UNSPEC_VMLS))] ++(define_expand "neon_vmls" ++ [(match_operand:VDQW 0 "s_register_operand" "=w") ++ (match_operand:VDQW 1 "s_register_operand" "0") ++ (match_operand:VDQW 2 "s_register_operand" "w") ++ (match_operand:VDQW 3 "s_register_operand" "w") ++ (match_operand:SI 4 "immediate_operand" "i")] + "TARGET_NEON" +- "vmls.\t%0, %2, %3" +- [(set (attr "neon_type") +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_fp_vmla_ddd") +- (const_string "neon_fp_vmla_qqq")) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else +- (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long") +- (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")) +- (if_then_else +- (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_mla_qqq_8_16") +- (const_string "neon_mla_qqq_32_qqd_32_scalar")))))] +-) ++{ ++ emit_insn (gen_mul3negadd_neon (operands[0], operands[1], ++ operands[2], operands[3])); ++ DONE; ++}) + + (define_insn "neon_vmlsl" + [(set (match_operand: 0 "s_register_operand" "=w") +@@ -1906,21 +2037,16 @@ + (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))] + ) + +-(define_insn "neon_vsub" +- [(set (match_operand:VDQX 0 "s_register_operand" "=w") +- (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w") +- (match_operand:VDQX 2 "s_register_operand" "w") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VSUB))] ++(define_expand "neon_vsub" ++ [(match_operand:VDQX 0 "s_register_operand" "=w") ++ (match_operand:VDQX 1 "s_register_operand" "w") ++ (match_operand:VDQX 2 "s_register_operand" "w") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" +- "vsub.\t%0, %1, %2" +- [(set (attr "neon_type") +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (if_then_else (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_fp_vadd_ddd_vabs_dd") +- (const_string "neon_fp_vadd_qqq_vabs_qq")) +- (const_string "neon_int_2")))] +-) ++{ ++ emit_insn (gen_sub3 (operands[0], operands[1], operands[2])); ++ DONE; ++}) + + (define_insn "neon_vsubl" + [(set (match_operand: 0 "s_register_operand" "=w") +@@ -2093,11 +2219,11 @@ + + (define_insn "neon_vaba" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") +- (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "0") +- (match_operand:VDQIW 2 "s_register_operand" "w") +- (match_operand:VDQIW 3 "s_register_operand" "w") +- (match_operand:SI 4 "immediate_operand" "i")] +- UNSPEC_VABA))] ++ (plus:VDQIW (match_operand:VDQIW 1 "s_register_operand" "0") ++ (unspec:VDQIW [(match_operand:VDQIW 2 "s_register_operand" "w") ++ (match_operand:VDQIW 3 "s_register_operand" "w") ++ (match_operand:SI 4 "immediate_operand" "i")] ++ UNSPEC_VABD)))] + "TARGET_NEON" + "vaba.%T4%#\t%0, %2, %3" + [(set (attr "neon_type") +@@ -2107,11 +2233,11 @@ + + (define_insn "neon_vabal" + [(set (match_operand: 0 "s_register_operand" "=w") +- (unspec: [(match_operand: 1 "s_register_operand" "0") +- (match_operand:VW 2 "s_register_operand" "w") +- (match_operand:VW 3 "s_register_operand" "w") +- (match_operand:SI 4 "immediate_operand" "i")] +- UNSPEC_VABAL))] ++ (plus: (match_operand: 1 "s_register_operand" "0") ++ (unspec: [(match_operand:VW 2 "s_register_operand" "w") ++ (match_operand:VW 3 "s_register_operand" "w") ++ (match_operand:SI 4 "immediate_operand" "i")] ++ UNSPEC_VABDL)))] + "TARGET_NEON" + "vabal.%T4%#\t%q0, %P2, %P3" + [(set_attr "neon_type" "neon_vaba")] +@@ -2242,23 +2368,6 @@ + (const_string "neon_fp_vrecps_vrsqrts_qqq")))] + ) + +-(define_insn "neon_vabs" +- [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VABS))] +- "TARGET_NEON" +- "vabs.\t%0, %1" +- [(set (attr "neon_type") +- (if_then_else (ior (ne (symbol_ref "") (const_int 0)) +- (ne (symbol_ref "") (const_int 0))) +- (if_then_else +- (ne (symbol_ref "") (const_int 0)) +- (const_string "neon_fp_vadd_ddd_vabs_dd") +- (const_string "neon_fp_vadd_qqq_vabs_qq")) +- (const_string "neon_vqneg_vqabs")))] +-) +- + (define_insn "neon_vqabs" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") + (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w") +@@ -2299,26 +2408,42 @@ + [(set_attr "neon_type" "neon_int_1")] + ) + +-(define_insn "neon_vclz" ++(define_insn "clz2" + [(set (match_operand:VDQIW 0 "s_register_operand" "=w") +- (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VCLZ))] ++ (clz:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")))] + "TARGET_NEON" + "vclz.\t%0, %1" + [(set_attr "neon_type" "neon_int_1")] + ) + +-(define_insn "neon_vcnt" ++(define_expand "neon_vclz" ++ [(match_operand:VDQIW 0 "s_register_operand" "") ++ (match_operand:VDQIW 1 "s_register_operand" "") ++ (match_operand:SI 2 "immediate_operand" "")] ++ "TARGET_NEON" ++{ ++ emit_insn (gen_clz2 (operands[0], operands[1])); ++ DONE; ++}) ++ ++(define_insn "popcount2" + [(set (match_operand:VE 0 "s_register_operand" "=w") +- (unspec:VE [(match_operand:VE 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VCNT))] ++ (popcount:VE (match_operand:VE 1 "s_register_operand" "w")))] + "TARGET_NEON" + "vcnt.\t%0, %1" + [(set_attr "neon_type" "neon_int_1")] + ) + ++(define_expand "neon_vcnt" ++ [(match_operand:VE 0 "s_register_operand" "=w") ++ (match_operand:VE 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i")] ++ "TARGET_NEON" ++{ ++ emit_insn (gen_popcount2 (operands[0], operands[1])); ++ DONE; ++}) ++ + (define_insn "neon_vrecpe" + [(set (match_operand:V32 0 "s_register_operand" "=w") + (unspec:V32 [(match_operand:V32 1 "s_register_operand" "w") +@@ -2495,126 +2620,65 @@ + ; Operand 3 (info word) is ignored because it does nothing useful with 64-bit + ; elements. + +-(define_insn "neon_vget_lanedi" +- [(set (match_operand:DI 0 "s_register_operand" "=r") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VGET_LANE))] ++(define_expand "neon_vget_lanedi" ++ [(match_operand:DI 0 "s_register_operand" "=r") ++ (match_operand:DI 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { + neon_lane_bounds (operands[2], 0, 1); +- return "vmov%?\t%Q0, %R0, %P1 @ di"; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) ++ emit_move_insn (operands[0], operands[1]); ++ DONE; ++}) + +-(define_insn "neon_vget_lanev2di" +- [(set (match_operand:DI 0 "s_register_operand" "=r") +- (unspec:DI [(match_operand:V2DI 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VGET_LANE))] ++(define_expand "neon_vget_lanev2di" ++ [(match_operand:DI 0 "s_register_operand" "=r") ++ (match_operand:V2DI 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { +- rtx ops[2]; +- unsigned int regno = REGNO (operands[1]); +- unsigned int elt = INTVAL (operands[2]); +- + neon_lane_bounds (operands[2], 0, 2); ++ emit_insn (gen_vec_extractv2di (operands[0], operands[1], operands[2])); ++ DONE; ++}) + +- ops[0] = operands[0]; +- ops[1] = gen_rtx_REG (DImode, regno + 2 * elt); +- output_asm_insn ("vmov%?\t%Q0, %R0, %P1 @ v2di", ops); +- +- return ""; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) +- +-(define_insn "neon_vset_lane" +- [(set (match_operand:VD 0 "s_register_operand" "=w") +- (unspec:VD [(match_operand: 1 "s_register_operand" "r") +- (match_operand:VD 2 "s_register_operand" "0") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VSET_LANE))] +- "TARGET_NEON" +-{ +- neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); +- return "vmov%?.\t%P0[%c3], %1"; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) +- +-; See neon_vget_lanedi comment for reasons operands 2 & 3 are ignored. +- +-(define_insn "neon_vset_lanedi" +- [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "r") +- (match_operand:DI 2 "s_register_operand" "0") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VSET_LANE))] +- "TARGET_NEON" +-{ +- neon_lane_bounds (operands[3], 0, 1); +- return "vmov%?\t%P0, %Q1, %R1 @ di"; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) +- +-(define_insn "neon_vset_lane" +- [(set (match_operand:VQ 0 "s_register_operand" "=w") +- (unspec:VQ [(match_operand: 1 "s_register_operand" "r") +- (match_operand:VQ 2 "s_register_operand" "0") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VSET_LANE))] ++(define_expand "neon_vset_lane" ++ [(match_operand:VDQ 0 "s_register_operand" "=w") ++ (match_operand: 1 "s_register_operand" "r") ++ (match_operand:VDQ 2 "s_register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { +- rtx ops[4]; +- unsigned int regno = REGNO (operands[0]); +- unsigned int halfelts = GET_MODE_NUNITS (mode) / 2; + unsigned int elt = INTVAL (operands[3]); ++ neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (mode)); + +- neon_lane_bounds (operands[3], 0, halfelts * 2); ++ if (BYTES_BIG_ENDIAN) ++ { ++ unsigned int reg_nelts ++ = 64 / GET_MODE_BITSIZE (GET_MODE_INNER (mode)); ++ elt ^= reg_nelts - 1; ++ } + +- ops[0] = gen_rtx_REG (mode, regno + 2 * (elt / halfelts)); +- ops[1] = operands[1]; +- ops[2] = GEN_INT (elt % halfelts); +- output_asm_insn ("vmov%?.\t%P0[%c2], %1", ops); ++ emit_insn (gen_vec_set_internal (operands[0], operands[1], ++ GEN_INT (1 << elt), operands[2])); ++ DONE; ++}) + +- return ""; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) ++; See neon_vget_lanedi comment for reasons operands 2 & 3 are ignored. + +-(define_insn "neon_vset_lanev2di" +- [(set (match_operand:V2DI 0 "s_register_operand" "=w") +- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "r") +- (match_operand:V2DI 2 "s_register_operand" "0") +- (match_operand:SI 3 "immediate_operand" "i")] +- UNSPEC_VSET_LANE))] ++(define_expand "neon_vset_lanedi" ++ [(match_operand:DI 0 "s_register_operand" "=w") ++ (match_operand:DI 1 "s_register_operand" "r") ++ (match_operand:DI 2 "s_register_operand" "0") ++ (match_operand:SI 3 "immediate_operand" "i")] + "TARGET_NEON" + { +- rtx ops[2]; +- unsigned int regno = REGNO (operands[0]); +- unsigned int elt = INTVAL (operands[3]); +- +- neon_lane_bounds (operands[3], 0, 2); +- +- ops[0] = gen_rtx_REG (DImode, regno + 2 * elt); +- ops[1] = operands[1]; +- output_asm_insn ("vmov%?\t%P0, %Q1, %R1 @ v2di", ops); +- +- return ""; +-} +- [(set_attr "predicable" "yes") +- (set_attr "neon_type" "neon_bp_simple")] +-) ++ neon_lane_bounds (operands[3], 0, 1); ++ emit_move_insn (operands[0], operands[1]); ++ DONE; ++}) + + (define_expand "neon_vcreate" + [(match_operand:VDX 0 "s_register_operand" "") +@@ -2627,9 +2691,8 @@ + }) + + (define_insn "neon_vdup_n" +- [(set (match_operand:VDQW 0 "s_register_operand" "=w") +- (unspec:VDQW [(match_operand: 1 "s_register_operand" "r")] +- UNSPEC_VDUP_N))] ++ [(set (match_operand:VX 0 "s_register_operand" "=w") ++ (vec_duplicate:VX (match_operand: 1 "s_register_operand" "r")))] + "TARGET_NEON" + "vdup%?.\t%0, %1" + ;; Assume this schedules like vmov. +@@ -2637,61 +2700,88 @@ + (set_attr "neon_type" "neon_bp_simple")] + ) + +-(define_insn "neon_vdup_ndi" +- [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "r")] +- UNSPEC_VDUP_N))] ++(define_insn "neon_vdup_n" ++ [(set (match_operand:V32 0 "s_register_operand" "=w,w") ++ (vec_duplicate:V32 (match_operand: 1 "s_register_operand" "r,t")))] + "TARGET_NEON" +- "vmov%?\t%P0, %Q1, %R1" ++ "@ ++ vdup%?.\t%0, %1 ++ vdup%?.\t%0, %y1" ++ ;; Assume this schedules like vmov. + [(set_attr "predicable" "yes") + (set_attr "neon_type" "neon_bp_simple")] + ) + ++(define_expand "neon_vdup_ndi" ++ [(match_operand:DI 0 "s_register_operand" "=w") ++ (match_operand:DI 1 "s_register_operand" "r")] ++ "TARGET_NEON" ++{ ++ emit_move_insn (operands[0], operands[1]); ++ DONE; ++} ++) ++ + (define_insn "neon_vdup_nv2di" +- [(set (match_operand:V2DI 0 "s_register_operand" "=w") +- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "r")] +- UNSPEC_VDUP_N))] ++ [(set (match_operand:V2DI 0 "s_register_operand" "=w,w") ++ (vec_duplicate:V2DI (match_operand:DI 1 "s_register_operand" "r,w")))] + "TARGET_NEON" +- "vmov%?\t%e0, %Q1, %R1\;vmov%?\t%f0, %Q1, %R1" ++ "@ ++ vmov%?\t%e0, %Q1, %R1\;vmov%?\t%f0, %Q1, %R1 ++ vmov%?\t%e0, %P1\;vmov%?\t%f0, %P1" + [(set_attr "predicable" "yes") + (set_attr "length" "8") + (set_attr "neon_type" "neon_bp_simple")] + ) + +-(define_insn "neon_vdup_lane" +- [(set (match_operand:VD 0 "s_register_operand" "=w") +- (unspec:VD [(match_operand:VD 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VDUP_LANE))] ++(define_insn "neon_vdup_lane_internal" ++ [(set (match_operand:VDQW 0 "s_register_operand" "=w") ++ (vec_duplicate:VDQW ++ (vec_select: ++ (match_operand: 1 "s_register_operand" "w") ++ (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))] + "TARGET_NEON" + { +- neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (mode)); +- return "vdup.\t%P0, %P1[%c2]"; ++ if (BYTES_BIG_ENDIAN) ++ { ++ int elt = INTVAL (operands[2]); ++ elt = GET_MODE_NUNITS (mode) - 1 - elt; ++ operands[2] = GEN_INT (elt); ++ } ++ if () ++ return "vdup.\t%P0, %P1[%c2]"; ++ else ++ return "vdup.\t%q0, %P1[%c2]"; + } + ;; Assume this schedules like vmov. + [(set_attr "neon_type" "neon_bp_simple")] + ) + +-(define_insn "neon_vdup_lane" +- [(set (match_operand:VQ 0 "s_register_operand" "=w") +- (unspec:VQ [(match_operand: 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VDUP_LANE))] ++(define_expand "neon_vdup_lane" ++ [(match_operand:VDQW 0 "s_register_operand" "=w") ++ (match_operand: 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i")] + "TARGET_NEON" + { +- neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (mode)); +- return "vdup.\t%q0, %P1[%c2]"; +-} +- ;; Assume this schedules like vmov. +- [(set_attr "neon_type" "neon_bp_simple")] +-) ++ neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (mode)); ++ if (BYTES_BIG_ENDIAN) ++ { ++ unsigned int elt = INTVAL (operands[2]); ++ unsigned int reg_nelts ++ = 64 / GET_MODE_BITSIZE (GET_MODE_INNER (mode)); ++ elt ^= reg_nelts - 1; ++ operands[2] = GEN_INT (elt); ++ } ++ emit_insn (gen_neon_vdup_lane_internal (operands[0], operands[1], ++ operands[2])); ++ DONE; ++}) + + ; Scalar index is ignored, since only zero is valid here. + (define_expand "neon_vdup_lanedi" +- [(set (match_operand:DI 0 "s_register_operand" "=w") +- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VDUP_LANE))] ++ [(match_operand:DI 0 "s_register_operand" "=w") ++ (match_operand:DI 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i")] + "TARGET_NEON" + { + neon_lane_bounds (operands[2], 0, 1); +@@ -2699,20 +2789,17 @@ + DONE; + }) + +-; Likewise. +-(define_insn "neon_vdup_lanev2di" +- [(set (match_operand:V2DI 0 "s_register_operand" "=w") +- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "w") +- (match_operand:SI 2 "immediate_operand" "i")] +- UNSPEC_VDUP_LANE))] ++; Likewise for v2di, as the DImode second operand has only a single element. ++(define_expand "neon_vdup_lanev2di" ++ [(match_operand:V2DI 0 "s_register_operand" "=w") ++ (match_operand:DI 1 "s_register_operand" "w") ++ (match_operand:SI 2 "immediate_operand" "i")] + "TARGET_NEON" + { + neon_lane_bounds (operands[2], 0, 1); +- return "vmov\t%e0, %P1\;vmov\t%f0, %P1"; +-} +- [(set_attr "length" "8") +- (set_attr "neon_type" "neon_bp_simple")] +-) ++ emit_insn (gen_neon_vdup_nv2di (operands[0], operands[1])); ++ DONE; ++}) + + ;; In this insn, operand 1 should be low, and operand 2 the high part of the + ;; dest vector. +@@ -2723,9 +2810,8 @@ + + (define_insn "neon_vcombine" + [(set (match_operand: 0 "s_register_operand" "=w") +- (unspec: [(match_operand:VDX 1 "s_register_operand" "w") +- (match_operand:VDX 2 "s_register_operand" "w")] +- UNSPEC_VCOMBINE))] ++ (vec_concat: (match_operand:VDX 1 "s_register_operand" "w") ++ (match_operand:VDX 2 "s_register_operand" "w")))] + "TARGET_NEON" + { + int dest = REGNO (operands[0]); +@@ -2765,10 +2851,13 @@ + (set_attr "neon_type" "neon_bp_simple")] + ) + +-(define_insn "neon_vget_high" +- [(set (match_operand: 0 "s_register_operand" "=w") +- (unspec: [(match_operand:VQX 1 "s_register_operand" "w")] +- UNSPEC_VGET_HIGH))] ++(define_insn "neon_vget_highv16qi" ++ [(set (match_operand:V8QI 0 "s_register_operand" "=w") ++ (vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w") ++ (parallel [(const_int 8) (const_int 9) ++ (const_int 10) (const_int 11) ++ (const_int 12) (const_int 13) ++ (const_int 14) (const_int 15)])))] + "TARGET_NEON" + { + int dest = REGNO (operands[0]); +@@ -2782,10 +2871,151 @@ + [(set_attr "neon_type" "neon_bp_simple")] + ) + +-(define_insn "neon_vget_low" +- [(set (match_operand: 0 "s_register_operand" "=w") +- (unspec: [(match_operand:VQX 1 "s_register_operand" "w")] +- UNSPEC_VGET_LOW))] ++(define_insn "neon_vget_highv8hi" ++ [(set (match_operand:V4HI 0 "s_register_operand" "=w") ++ (vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w") ++ (parallel [(const_int 4) (const_int 5) ++ (const_int 6) (const_int 7)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src + 2) ++ return "vmov\t%P0, %f1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_highv4si" ++ [(set (match_operand:V2SI 0 "s_register_operand" "=w") ++ (vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w") ++ (parallel [(const_int 2) (const_int 3)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src + 2) ++ return "vmov\t%P0, %f1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_highv4sf" ++ [(set (match_operand:V2SF 0 "s_register_operand" "=w") ++ (vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w") ++ (parallel [(const_int 2) (const_int 3)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src + 2) ++ return "vmov\t%P0, %f1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_highv2di" ++ [(set (match_operand:DI 0 "s_register_operand" "=w") ++ (vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w") ++ (parallel [(const_int 1)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src + 2) ++ return "vmov\t%P0, %f1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_lowv16qi" ++ [(set (match_operand:V8QI 0 "s_register_operand" "=w") ++ (vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w") ++ (parallel [(const_int 0) (const_int 1) ++ (const_int 2) (const_int 3) ++ (const_int 4) (const_int 5) ++ (const_int 6) (const_int 7)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src) ++ return "vmov\t%P0, %e1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_lowv8hi" ++ [(set (match_operand:V4HI 0 "s_register_operand" "=w") ++ (vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w") ++ (parallel [(const_int 0) (const_int 1) ++ (const_int 2) (const_int 3)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src) ++ return "vmov\t%P0, %e1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_lowv4si" ++ [(set (match_operand:V2SI 0 "s_register_operand" "=w") ++ (vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w") ++ (parallel [(const_int 0) (const_int 1)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src) ++ return "vmov\t%P0, %e1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_lowv4sf" ++ [(set (match_operand:V2SF 0 "s_register_operand" "=w") ++ (vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w") ++ (parallel [(const_int 0) (const_int 1)])))] ++ "TARGET_NEON" ++{ ++ int dest = REGNO (operands[0]); ++ int src = REGNO (operands[1]); ++ ++ if (dest != src) ++ return "vmov\t%P0, %e1"; ++ else ++ return ""; ++} ++ [(set_attr "neon_type" "neon_bp_simple")] ++) ++ ++(define_insn "neon_vget_lowv2di" ++ [(set (match_operand:DI 0 "s_register_operand" "=w") ++ (vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w") ++ (parallel [(const_int 0)])))] + "TARGET_NEON" + { + int dest = REGNO (operands[0]); +--- a/src/gcc/config/arm/neon.ml ++++ b/src/gcc/config/arm/neon.ml +@@ -50,7 +50,7 @@ + | T_ptrto of vectype | T_const of vectype + | T_void | T_intQI + | T_intHI | T_intSI +- | T_intDI ++ | T_intDI | T_floatSF + + (* The meanings of the following are: + TImode : "Tetra", two registers (four words). +@@ -68,6 +68,7 @@ + | Element_of_dreg (* Used for "lane" variants. *) + | Element_of_qreg (* Likewise. *) + | All_elements_of_dreg (* Used for "dup" variants. *) ++ | Alternatives of shape_elt list (* Used for multiple valid operands *) + + type shape_form = All of int * shape_elt + | Long +@@ -708,7 +709,8 @@ + let ops = + [ + (* Addition. *) +- Vadd, [], All (3, Dreg), "vadd", sign_invar_2, F32 :: su_8_64; ++ Vadd, [], All (3, Dreg), "vadd", sign_invar_2, F32 :: su_8_32; ++ Vadd, [No_op], All (3, Dreg), "vadd", sign_invar_2, [S64; U64]; + Vadd, [], All (3, Qreg), "vaddQ", sign_invar_2, F32 :: su_8_64; + Vadd, [], Long, "vaddl", elts_same_2, su_8_32; + Vadd, [], Wide, "vaddw", elts_same_2, su_8_32; +@@ -757,7 +759,8 @@ + Vmls, [Saturating; Doubling], Long, "vqdmlsl", elts_same_io, [S16; S32]; + + (* Subtraction. *) +- Vsub, [], All (3, Dreg), "vsub", sign_invar_2, F32 :: su_8_64; ++ Vsub, [], All (3, Dreg), "vsub", sign_invar_2, F32 :: su_8_32; ++ Vsub, [No_op], All (3, Dreg), "vsub", sign_invar_2, [S64; U64]; + Vsub, [], All (3, Qreg), "vsubQ", sign_invar_2, F32 :: su_8_64; + Vsub, [], Long, "vsubl", elts_same_2, su_8_32; + Vsub, [], Wide, "vsubw", elts_same_2, su_8_32; +@@ -966,7 +969,8 @@ + Use_operands [| Corereg; Dreg; Immed |], + "vget_lane", get_lane, pf_su_8_32; + Vget_lane, +- [InfoWord; ++ [No_op; ++ InfoWord; + Disassembles_as [Use_operands [| Corereg; Corereg; Dreg |]]; + Instruction_name ["vmov"]; Const_valuator (fun _ -> 0)], + Use_operands [| Corereg; Dreg; Immed |], +@@ -988,7 +992,8 @@ + Instruction_name ["vmov"]], + Use_operands [| Dreg; Corereg; Dreg; Immed |], "vset_lane", + set_lane, pf_su_8_32; +- Vset_lane, [Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]; ++ Vset_lane, [No_op; ++ Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]; + Instruction_name ["vmov"]; Const_valuator (fun _ -> 0)], + Use_operands [| Dreg; Corereg; Dreg; Immed |], "vset_lane", + set_lane_notype, [S64; U64]; +@@ -1009,19 +1014,27 @@ + pf_su_8_64; + + (* Set all lanes to the same value. *) +- Vdup_n, [], ++ Vdup_n, ++ [Disassembles_as [Use_operands [| Dreg; ++ Alternatives [ Corereg; ++ Element_of_dreg ] |]]], + Use_operands [| Dreg; Corereg |], "vdup_n", bits_1, + pf_su_8_32; + Vdup_n, +- [Instruction_name ["vmov"]; ++ [No_op; ++ Instruction_name ["vmov"]; + Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], + Use_operands [| Dreg; Corereg |], "vdup_n", notype_1, + [S64; U64]; +- Vdup_n, [], ++ Vdup_n, ++ [Disassembles_as [Use_operands [| Qreg; ++ Alternatives [ Corereg; ++ Element_of_dreg ] |]]], + Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1, + pf_su_8_32; + Vdup_n, +- [Instruction_name ["vmov"]; ++ [No_op; ++ Instruction_name ["vmov"]; + Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]; + Use_operands [| Dreg; Corereg; Corereg |]]], + Use_operands [| Qreg; Corereg |], "vdupQ_n", notype_1, +@@ -1029,21 +1042,29 @@ + + (* These are just aliases for the above. *) + Vmov_n, +- [Builtin_name "vdup_n"], ++ [Builtin_name "vdup_n"; ++ Disassembles_as [Use_operands [| Dreg; ++ Alternatives [ Corereg; ++ Element_of_dreg ] |]]], + Use_operands [| Dreg; Corereg |], + "vmov_n", bits_1, pf_su_8_32; + Vmov_n, +- [Builtin_name "vdup_n"; ++ [No_op; ++ Builtin_name "vdup_n"; + Instruction_name ["vmov"]; + Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]], + Use_operands [| Dreg; Corereg |], + "vmov_n", notype_1, [S64; U64]; + Vmov_n, +- [Builtin_name "vdupQ_n"], ++ [Builtin_name "vdupQ_n"; ++ Disassembles_as [Use_operands [| Qreg; ++ Alternatives [ Corereg; ++ Element_of_dreg ] |]]], + Use_operands [| Qreg; Corereg |], + "vmovQ_n", bits_1, pf_su_8_32; + Vmov_n, +- [Builtin_name "vdupQ_n"; ++ [No_op; ++ Builtin_name "vdupQ_n"; + Instruction_name ["vmov"]; + Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]; + Use_operands [| Dreg; Corereg; Corereg |]]], +@@ -1600,23 +1621,28 @@ + store_3, [P16; F32; U16; U32; S16; S32]; + + (* Logical operations. And. *) +- Vand, [], All (3, Dreg), "vand", notype_2, su_8_64; ++ Vand, [], All (3, Dreg), "vand", notype_2, su_8_32; ++ Vand, [No_op], All (3, Dreg), "vand", notype_2, [S64; U64]; + Vand, [], All (3, Qreg), "vandQ", notype_2, su_8_64; + + (* Or. *) +- Vorr, [], All (3, Dreg), "vorr", notype_2, su_8_64; ++ Vorr, [], All (3, Dreg), "vorr", notype_2, su_8_32; ++ Vorr, [No_op], All (3, Dreg), "vorr", notype_2, [S64; U64]; + Vorr, [], All (3, Qreg), "vorrQ", notype_2, su_8_64; + + (* Eor. *) +- Veor, [], All (3, Dreg), "veor", notype_2, su_8_64; ++ Veor, [], All (3, Dreg), "veor", notype_2, su_8_32; ++ Veor, [No_op], All (3, Dreg), "veor", notype_2, [S64; U64]; + Veor, [], All (3, Qreg), "veorQ", notype_2, su_8_64; + + (* Bic (And-not). *) +- Vbic, [], All (3, Dreg), "vbic", notype_2, su_8_64; ++ Vbic, [], All (3, Dreg), "vbic", notype_2, su_8_32; ++ Vbic, [No_op], All (3, Dreg), "vbic", notype_2, [S64; U64]; + Vbic, [], All (3, Qreg), "vbicQ", notype_2, su_8_64; + + (* Or-not. *) +- Vorn, [], All (3, Dreg), "vorn", notype_2, su_8_64; ++ Vorn, [], All (3, Dreg), "vorn", notype_2, su_8_32; ++ Vorn, [No_op], All (3, Dreg), "vorn", notype_2, [S64; U64]; + Vorn, [], All (3, Qreg), "vornQ", notype_2, su_8_64; + ] + +@@ -1698,6 +1724,7 @@ + | T_intHI -> "__builtin_neon_hi" + | T_intSI -> "__builtin_neon_si" + | T_intDI -> "__builtin_neon_di" ++ | T_floatSF -> "__builtin_neon_sf" + | T_arrayof (num, base) -> + let basename = name (fun x -> x) base in + affix (Printf.sprintf "%sx%d" basename num) +--- a/src/gcc/config/arm/netbsd-elf.h ++++ b/src/gcc/config/arm/netbsd-elf.h +@@ -153,5 +153,5 @@ + while (0) + + #undef FPUTYPE_DEFAULT +-#define FPUTYPE_DEFAULT FPUTYPE_VFP ++#define FPUTYPE_DEFAULT "vfp" + +--- a/src/gcc/config/arm/nocrt0.h ++++ b/src/gcc/config/arm/nocrt0.h +@@ -0,0 +1,25 @@ ++/* Definitions for generic libgloss based cofigs where crt0 is supplied by ++ the linker script. ++ Copyright (C) 2006 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 ++ . */ ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC " crti%O%s crtbegin%O%s" ++ ++#undef LIB_SPEC ++#define LIB_SPEC "-lc" +--- a/src/gcc/config/arm/nucleus.h ++++ b/src/gcc/config/arm/nucleus.h +@@ -0,0 +1,60 @@ ++/* Configuration file for ARM nucleus targets. ++ Copyright (C) 2010 ++ Free Software Foundation, Inc. ++ Contributed by Nathan Sidwell (nathan@codesourcery.com) ++ ++ 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 ++ . */ ++ ++#if NUCLEUS_SHARED_EXEC ++/* Executables are really shared objects, so default to building a .so ++ */ ++#undef LINK_SPEC ++#define LINK_SPEC "%{!static:%{!shared:-shared -z defs}} " BPABI_LINK_SPEC ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "crti%O%s %{!static:crtbeginS%O%s;:crtbegin%O%s}" ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC "%{!static:crtendS%O%s;:crtend%O%s} crtn%O%s" ++#define NUCLEUS_SHARED_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define_std ("shared"); \ ++ } \ ++ while (0) ++#else ++#define NUCLEUS_SHARED_CPP_BUILTINS() do {} while (0) ++#endif ++/* On nucleaus EABI, we want both the BPABI builtins and a ++ nucleaus builtin. */ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ TARGET_BPABI_CPP_BUILTINS(); \ ++ builtin_define_std ("nucleus"); \ ++ NUCLEUS_SHARED_CPP_BUILTINS(); \ ++ } \ ++ while (0) ++ ++/* wide chars are 16 bit */ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "short int" ++#define WCHAR_TYPE_SIZE 16 ++ ++/* Use --as-needed -lgcc_s for eh support. */ ++#ifdef HAVE_LD_AS_NEEDED ++#define USE_LD_AS_NEEDED 1 ++#endif +--- a/src/gcc/config/arm/pe-cxx.c ++++ b/src/gcc/config/arm/pe-cxx.c +@@ -0,0 +1,167 @@ ++/* Target support for C++ classes on Windows. ++ Contributed by Danny Smith (dannysmith@users.sourceforge.net) ++ Copyright (C) 2005 ++ 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 ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "rtl.h" ++#include "regs.h" ++#include "hard-reg-set.h" ++#include "output.h" ++#include "tree.h" ++#include "cp/cp-tree.h" /* this is why we're a separate module */ ++#include "flags.h" ++#include "tm_p.h" ++#include "toplev.h" ++#include "hashtab.h" ++ ++bool ++arm_pe_type_dllimport_p (tree decl) ++{ ++ gcc_assert (TREE_CODE (decl) == VAR_DECL ++ || TREE_CODE (decl) == FUNCTION_DECL); ++ ++ if (TARGET_NOP_FUN_DLLIMPORT && TREE_CODE (decl) == FUNCTION_DECL) ++ return false; ++ ++ /* We ignore the dllimport attribute for inline member functions. ++ This differs from MSVC behavior which treats it like GNUC ++ 'extern inline' extension. Also ignore for template ++ instantiations with linkonce semantics and artificial methods. */ ++ if (TREE_CODE (decl) == FUNCTION_DECL ++ && (DECL_DECLARED_INLINE_P (decl) ++ || DECL_TEMPLATE_INSTANTIATION (decl) ++ || DECL_ARTIFICIAL (decl))) ++ return false; ++ ++ /* Since we can't treat a pointer to a dllimport'd symbol as a ++ constant address, we turn off the attribute on C++ virtual ++ methods to allow creation of vtables using thunks. */ ++ else if (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE ++ && DECL_VIRTUAL_P (decl)) ++ { ++ /* Even though we ignore the attribute from the start, warn if we later see ++ an out-of class definition, as we do for other member functions in ++ tree.c:merge_dllimport_decl_attributes. If this is the key method, the ++ definition may affect the import-export status of vtables, depending ++ on how we handle MULTIPLE_SYMBOL_SPACES in cp/decl2.c. */ ++ if (DECL_INITIAL (decl)) ++ { ++ warning (OPT_Wattributes, "%q+D redeclared without dllimport attribute: " ++ "previous dllimport ignored", decl); ++#ifdef PE_DLL_DEBUG ++ if (decl == CLASSTYPE_KEY_METHOD (DECL_CONTEXT (decl))) ++ warning (OPT_Wattributes, "key method %q+D of dllimport'd class defined" ++ decl); ++#endif ++ } ++ return false; ++ } ++ ++ /* Don't mark defined functions as dllimport. This code will only be ++ reached if we see a non-inline function defined out-of-class. */ ++ else if (TREE_CODE (decl) == FUNCTION_DECL ++ && (DECL_INITIAL (decl))) ++ return false; ++ ++ /* Don't allow definitions of static data members in dllimport class, ++ If vtable data is marked as DECL_EXTERNAL, import it; otherwise just ++ ignore the class attribute. */ ++ else if (TREE_CODE (decl) == VAR_DECL ++ && TREE_STATIC (decl) && TREE_PUBLIC (decl) ++ && !DECL_EXTERNAL (decl)) ++ { ++ if (!DECL_VIRTUAL_P (decl)) ++ error ("definition of static data member %q+D of " ++ "dllimport'd class", decl); ++ return false; ++ } ++ ++ return true; ++} ++ ++ ++bool ++arm_pe_type_dllexport_p (tree decl) ++{ ++ gcc_assert (TREE_CODE (decl) == VAR_DECL ++ || TREE_CODE (decl) == FUNCTION_DECL); ++ /* Avoid exporting compiler-generated default dtors and copy ctors. ++ The only artificial methods that need to be exported are virtual ++ and non-virtual thunks. */ ++ if (TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE ++ && DECL_ARTIFICIAL (decl) && !DECL_THUNK_P (decl)) ++ return false; ++ return true; ++} ++ ++static inline void maybe_add_dllimport (tree decl) ++/* void maybe_add_dllimport (tree decl) */ ++{ ++ if (arm_pe_type_dllimport_p (decl)) ++ DECL_DLLIMPORT_P (decl) = 1; ++} ++ ++void ++arm_pe_adjust_class_at_definition (tree t) ++{ ++ tree member; ++ ++ gcc_assert (CLASS_TYPE_P (t)); ++ ++ /* We only look at dllimport. The only thing that dllexport does is ++ add stuff to a '.drectiv' section at end-of-file, so no need to do ++ anything for dllexport'd classes until we generate RTL. */ ++ if (lookup_attribute ("dllimport", TYPE_ATTRIBUTES (t)) == NULL_TREE) ++ return; ++ ++ /* We don't actually add the attribute to the decl, just set the flag ++ that signals that the address of this symbol is not a compile-time ++ constant. Any subsequent out-of-class declaration of members wil ++ cause the DECL_DLLIMPORT_P flag to be unset. ++ (See tree.c: merge_dllimport_decl_attributes). ++ That is just right since out-of class declarations can only be a ++ definition. We recheck the class members at RTL generation to ++ emit warnings if this has happened. Definition of static data member ++ of dllimport'd class always causes an error (as per MS compiler). ++ */ ++ ++ /* Check static VAR_DECL's. */ ++ for (member = TYPE_FIELDS (t); member; member = TREE_CHAIN (member)) ++ if (TREE_CODE (member) == VAR_DECL) ++ maybe_add_dllimport (member); ++ ++ /* Check FUNCTION_DECL's. */ ++ for (member = TYPE_METHODS (t); member; member = TREE_CHAIN (member)) ++ if (TREE_CODE (member) == FUNCTION_DECL) ++ maybe_add_dllimport (member); ++ ++ /* Check vtables */ ++ for (member = CLASSTYPE_VTABLES (t); member; member = TREE_CHAIN (member)) ++ if (TREE_CODE (member) == VAR_DECL) ++ maybe_add_dllimport (member); ++ ++/* We leave typeinfo tables alone. We can't mark TI objects as ++ dllimport, since the address of a secondary VTT may be needed ++ for static initialization of a primary VTT. VTT's of ++ dllimport'd classes should always be link-once COMDAT. */ ++} +--- a/src/gcc/config/arm/pe-stubs.c ++++ b/src/gcc/config/arm/pe-stubs.c +@@ -0,0 +1,52 @@ ++/* Dummy subroutines for language-specific support on Windows. ++ Contributed by Danny Smith (dannysmith@users.sourceforge.net) ++ Copyright (C) 2005 ++ 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 ++ . */ ++ ++#include "config.h" ++#include "system.h" ++#include "coretypes.h" ++#include "tm.h" ++#include "rtl.h" ++#include "regs.h" ++#include "hard-reg-set.h" ++#include "output.h" ++#include "tree.h" ++#include "flags.h" ++#include "tm_p.h" ++#include "toplev.h" ++#include "hashtab.h" ++ ++bool ++arm_pe_type_dllimport_p (tree decl ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++ ++bool ++arm_pe_type_dllexport_p (tree decl ATTRIBUTE_UNUSED) ++{ ++ return false; ++} ++ ++ ++void ++arm_pe_adjust_class_at_definition (tree t ATTRIBUTE_UNUSED) ++{ } +--- a/src/gcc/config/arm/pe.opt ++++ b/src/gcc/config/arm/pe.opt +@@ -21,3 +21,7 @@ + mnop-fun-dllimport + Target Report Mask(NOP_FUN_DLLIMPORT) + Ignore dllimport attribute for functions ++ ++mms-bitfields ++Target Report Mask(MS_BITFIELD_LAYOUT) ++Use native (MS) bitfield layout +--- a/src/gcc/config/arm/predicates.md ++++ b/src/gcc/config/arm/predicates.md +@@ -73,6 +73,10 @@ + || REGNO_REG_CLASS (REGNO (op)) == FPA_REGS)); + }) + ++(define_special_predicate "subreg_lowpart_operator" ++ (and (match_code "subreg") ++ (match_test "subreg_lowpart_p (op)"))) ++ + ;; Reg, subreg(reg) or const_int. + (define_predicate "reg_or_int_operand" + (ior (match_code "const_int") +@@ -82,6 +86,12 @@ + (and (match_code "const_int") + (match_test "const_ok_for_arm (INTVAL (op))"))) + ++;; A constant value which fits into two instructions, each taking ++;; an arithmetic constant operand for one of the words. ++(define_predicate "arm_immediate_di_operand" ++ (and (match_code "const_int,const_double") ++ (match_test "arm_const_double_by_immediates (op)"))) ++ + (define_predicate "arm_neg_immediate_operand" + (and (match_code "const_int") + (match_test "const_ok_for_arm (-INTVAL (op))"))) +@@ -111,6 +121,10 @@ + (ior (match_operand 0 "arm_rhs_operand") + (match_operand 0 "arm_not_immediate_operand"))) + ++(define_predicate "arm_di_operand" ++ (ior (match_operand 0 "s_register_operand") ++ (match_operand 0 "arm_immediate_di_operand"))) ++ + ;; True if the operand is a memory reference which contains an + ;; offsettable address. + (define_predicate "offsettable_memory_operand" +@@ -168,6 +182,11 @@ + (and (match_code "plus,minus,ior,xor,and") + (match_test "mode == GET_MODE (op)"))) + ++;; True for plus/minus operators ++(define_special_predicate "plusminus_operator" ++ (and (match_code "plus,minus") ++ (match_test "mode == GET_MODE (op)"))) ++ + ;; True for logical binary operators. + (define_special_predicate "logical_binary_operator" + (and (match_code "ior,xor,and") +@@ -280,10 +299,9 @@ + (and (match_code "reg,subreg,mem") + (match_operand 0 "nonimmediate_soft_df_operand")))) + +-(define_predicate "const_shift_operand" ++(define_predicate "const_shift_count" + (and (match_code "const_int") +- (ior (match_operand 0 "power_of_two_operand") +- (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 32")))) ++ (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 32"))) + + + (define_special_predicate "load_multiple_operation" +@@ -295,6 +313,9 @@ + HOST_WIDE_INT i = 1, base = 0; + rtx elt; + ++ if (low_irq_latency) ++ return false; ++ + if (count <= 1 + || GET_CODE (XVECEXP (op, 0, 0)) != SET) + return false; +@@ -352,6 +373,9 @@ + HOST_WIDE_INT i = 1, base = 0; + rtx elt; + ++ if (low_irq_latency) ++ return false; ++ + if (count <= 1 + || GET_CODE (XVECEXP (op, 0, 0)) != SET) + return false; +@@ -491,13 +515,15 @@ + (define_predicate "imm_for_neon_logic_operand" + (match_code "const_vector") + { +- return neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL); ++ return (TARGET_NEON ++ && neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL)); + }) + + (define_predicate "imm_for_neon_inv_logic_operand" + (match_code "const_vector") + { +- return neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL); ++ return (TARGET_NEON ++ && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL)); + }) + + (define_predicate "neon_logic_op2" +@@ -513,3 +539,11 @@ + (and (match_code "const_int") + (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 7"))) + ++;; Predicates for named expanders that overlap multiple ISAs. ++ ++(define_predicate "cmpdi_operand" ++ (if_then_else (match_test "TARGET_HARD_FLOAT && TARGET_MAVERICK") ++ (and (match_test "TARGET_ARM") ++ (match_operand 0 "cirrus_fp_register")) ++ (and (match_test "TARGET_32BIT") ++ (match_operand 0 "arm_di_operand")))) +--- a/src/gcc/config/arm/sfp-machine.h ++++ b/src/gcc/config/arm/sfp-machine.h +@@ -14,9 +14,11 @@ + #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) + #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) + ++#define _FP_NANFRAC_H ((_FP_QNANBIT_H << 1) - 1) + #define _FP_NANFRAC_S ((_FP_QNANBIT_S << 1) - 1) + #define _FP_NANFRAC_D ((_FP_QNANBIT_D << 1) - 1), -1 + #define _FP_NANFRAC_Q ((_FP_QNANBIT_Q << 1) - 1), -1, -1, -1 ++#define _FP_NANSIGN_H 0 + #define _FP_NANSIGN_S 0 + #define _FP_NANSIGN_D 0 + #define _FP_NANSIGN_Q 0 +@@ -92,5 +94,7 @@ + #define __fixdfdi __aeabi_d2lz + #define __fixunsdfdi __aeabi_d2ulz + #define __floatdidf __aeabi_l2d ++#define __extendhfsf2 __aeabi_h2f ++#define __truncsfhf2 __aeabi_f2h + + #endif /* __ARM_EABI__ */ +--- a/src/gcc/config/arm/symbian.h ++++ b/src/gcc/config/arm/symbian.h +@@ -71,11 +71,6 @@ + #define SUBTARGET_ASM_FLOAT_SPEC \ + "%{!mfpu=*:-mfpu=vfp} %{!mcpu=*:%{!march=*:-march=armv5t}}" + +-/* SymbianOS provides the BPABI routines in a separate library. +- Therefore, we do not need to define any of them in libgcc. */ +-#undef RENAME_LIBRARY +-#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */ +- + /* Define the __symbian__ macro. */ + #undef TARGET_OS_CPP_BUILTINS + #define TARGET_OS_CPP_BUILTINS() \ +--- a/src/gcc/config/arm/t-arm ++++ b/src/gcc/config/arm/t-arm +@@ -13,7 +13,9 @@ + $(srcdir)/config/arm/iwmmxt.md \ + $(srcdir)/config/arm/vfp.md \ + $(srcdir)/config/arm/neon.md \ +- $(srcdir)/config/arm/thumb2.md ++ $(srcdir)/config/arm/thumb2.md \ ++ $(srcdir)/config/arm/marvell-f.md \ ++ $(srcdir)/config/arm/hwdiv.md + + s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \ + s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES) +--- a/src/gcc/config/arm/t-arm-elf ++++ b/src/gcc/config/arm/t-arm-elf +@@ -24,10 +24,18 @@ + #MULTILIB_MATCHES += march?armv7=march?armv7-a + #MULTILIB_MATCHES += march?armv7=march?armv7-r + #MULTILIB_MATCHES += march?armv7=march?armv7-m ++#MULTILIB_MATCHES += march?armv7=march?armv7e-m + #MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 + #MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 + #MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 + ++# Not quite true. We can support hard-vfp calling in Thumb2, but how do we ++# express that here? Also, we really need architecture v5e or later ++# (mcrr etc). ++MULTILIB_OPTIONS += mfloat-abi=hard ++MULTILIB_DIRNAMES += fpu ++MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* ++ + # MULTILIB_OPTIONS += mcpu=ep9312 + # MULTILIB_DIRNAMES += ep9312 + # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312* +--- a/src/gcc/config/arm/t-asa ++++ b/src/gcc/config/arm/t-asa +@@ -0,0 +1,45 @@ ++# Overrides for ASA ++ ++# Here is the expected output from xgcc -print-multi-lib. ++# ++# .;@fno-omit-frame-pointer@mapcs-frame ++# armv4t;@march=armv4t@fno-omit-frame-pointer@mapcs-frame ++# armv6;@march=armv6@fno-omit-frame-pointer@mapcs-frame ++# armv7a;@march=armv7-a@fno-omit-frame-pointer@mapcs-frame ++# armv6f;@march=armv6@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame ++# armv7af;@march=armv7-a@mfpu=neon@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame ++# thumb2;@mthumb@march=armv7-a@fno-omit-frame-pointer@mapcs-frame ++# thumb2f;@mthumb@march=armv7-a@mfpu=neon@mfloat-abi=softfp@fno-omit-frame-pointer@mapcs-frame ++ ++MULTILIB_OPTIONS = mthumb march=armv4t/march=armv6/march=armv7-a mfpu=neon mfloat-abi=softfp ++MULTILIB_DIRNAMES = thumb v4t v6 v7a neon softfp ++MULTILIB_MATCHES = ++ ++MULTILIB_EXTRA_OPTS = fno-omit-frame-pointer mapcs-frame ++ ++MULTILIB_EXCEPTIONS = mthumb ++MULTILIB_EXCEPTIONS += mfpu=neon* ++MULTILIB_EXCEPTIONS += mfloat-abi=softfp ++MULTILIB_EXCEPTIONS += *march=armv4t*/*mfpu=neon* ++MULTILIB_EXCEPTIONS += *march=armv4t*/*mfloat-abi=softfp* ++MULTILIB_EXCEPTIONS += march=armv6/*mfpu=neon* ++MULTILIB_EXCEPTIONS += mthumb/mfpu=neon ++MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=softfp ++MULTILIB_EXCEPTIONS += mthumb/mfpu=neon* ++MULTILIB_EXCEPTIONS += mthumb/march=armv6/mfpu=neon* ++ ++MULTILIB_OSDIRNAMES = march.armv4t=!armv4t ++MULTILIB_OSDIRNAMES += march.armv6=!armv6 ++MULTILIB_OSDIRNAMES += march.armv6/mfloat-abi.softfp=!armv6f ++MULTILIB_OSDIRNAMES += march.armv7-a=!armv7a ++MULTILIB_OSDIRNAMES += march.armv7-a/mfpu.neon/mfloat-abi.softfp=!armv7af ++MULTILIB_OSDIRNAMES += mthumb/march.armv7-a=!thumb2 ++MULTILIB_OSDIRNAMES += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=!thumb2f ++ ++MULTILIB_ALIASES = march?armv4t=mthumb/march?armv4t ++MULTILIB_ALIASES += march?armv6=mthumb/march?armv6 ++MULTILIB_ALIASES += march?armv6/mfloat-abi?softfp=mthumb/march?armv6/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv7-a/mfpu?neon/mfloat-abi?softfp=march?armv7-a/mfpu?neon ++MULTILIB_ALIASES += march?armv7-a/mfpu?neon/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp ++MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfpu?neon ++MULTILIB_ALIASES += mthumb/march?armv7-a/mfpu?neon/mfloat-abi?softfp=mthumb/march?armv7-a/mfloat-abi?softfp +--- a/src/gcc/config/arm/t-bpabi ++++ b/src/gcc/config/arm/t-bpabi +@@ -1,10 +1,13 @@ + # Add the bpabi.S functions. +-LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod ++LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod \ ++ _aeabi_idiv0 _aeabi_ldiv0 + + # Add the BPABI C functions. + LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \ + $(srcdir)/config/arm/unaligned-funcs.c + ++LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c ++ + UNWIND_H = $(srcdir)/config/arm/unwind-arm.h + LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \ + $(srcdir)/config/arm/libunwind.S \ +--- a/src/gcc/config/arm/t-cs-eabi ++++ b/src/gcc/config/arm/t-cs-eabi +@@ -0,0 +1,199 @@ ++# Multilibs for SourceryG++ arm-none-eabi ++ ++MULTILIB_OPTIONS = mthumb ++MULTILIB_DIRNAMES = t ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = ++MULTILIB_ALIASES = ++ ++MULTILIB_OPTIONS += march=armv7/march=armv7-a/march=armv5te/march=armv6-m ++MULTILIB_DIRNAMES += v7 v7a v5te v6m ++MULTILIB_MATCHES += march?armv7-a=march?armv7a ++MULTILIB_MATCHES += march?armv7=march?armv7r ++MULTILIB_MATCHES += march?armv7=march?armv7m ++MULTILIB_MATCHES += march?armv7=march?armv7-r ++MULTILIB_MATCHES += march?armv7=march?armv7-m ++MULTILIB_MATCHES += march?armv7=march?armv7e-m ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m1 ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m0 ++MULTILIB_MATCHES += march?armv5te=march?armv6 ++MULTILIB_MATCHES += march?armv5te=march?armv6j ++MULTILIB_MATCHES += march?armv5te=march?armv6k ++MULTILIB_MATCHES += march?armv5te=march?armv6z ++MULTILIB_MATCHES += march?armv5te=march?armv6zk ++MULTILIB_MATCHES += march?armv5te=march?armv6t2 ++MULTILIB_MATCHES += march?armv5te=march?iwmmxt ++MULTILIB_MATCHES += march?armv5te=march?iwmmxt2 ++MULTILIB_MATCHES += march?armv5te=mcpu?arm9e ++MULTILIB_MATCHES += march?armv5te=mcpu?arm946e-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm966e-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm968e-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm10e ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1020e ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1022e ++MULTILIB_MATCHES += march?armv5te=mcpu?xscale ++MULTILIB_MATCHES += march?armv5te=mcpu?iwmmxt ++MULTILIB_MATCHES += march?armv5te=mcpu?iwmmxt2 ++MULTILIB_MATCHES += march?armv5te=mcpu?marvell-f ++MULTILIB_MATCHES += march?armv5te=mcpu?arm926ej-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1026ej-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1136j-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1136jf-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1176jz-s ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1176jzf-s ++MULTILIB_MATCHES += march?armv5te=mcpu?mpcorenovfp ++MULTILIB_MATCHES += march?armv5te=mcpu?mpcore ++MULTILIB_MATCHES += march?armv5te=mcpu?arm1156t2-s ++ ++MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES += softfp hard ++MULTILIB_MATCHES += mfloat-abi?hard=mhard-float ++ ++MULTILIB_OPTIONS += mfpu=neon ++MULTILIB_DIRNAMES += neon ++MULTILIB_EXCEPTIONS += mfpu=neon ++MULTILIB_MATCHES += mfpu?neon=mfpu?neon-fp16 ++MULTILIB_MATCHES += mfpu?neon=mfpu?neon-vfpv4 ++ ++MULTILIB_ALIASES += mthumb=mthumb/mfpu?neon ++MULTILIB_ALIASES += mthumb=mthumb/march?armv5te/mfpu?neon ++MULTILIB_ALIASES += mbig-endian=mthumb/mfpu?neon/mbig-endian ++#MULTILIB_ALIASES += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon ++#MULTILIB_ALIASES += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon ++#MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian ++#MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += march?armv7-a/mfloat-abi?softfp/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon ++ ++MULTILIB_OPTIONS += mbig-endian ++MULTILIB_DIRNAMES += be ++MULTILIB_ALIASES += mbig-endian=mfpu?neon/mbig-endian ++ ++# ARMv6-M does not have ARM mode. ++MULTILIB_EXCEPTIONS += march=armv6-m ++ ++# Some ARMv7 variants have ARM mode. Use the ARM libraries. ++MULTILIB_EXCEPTIONS += march=armv7 march=armv7/* ++MULTILIB_ALIASES += mbig-endian=march?armv7/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=march?armv7/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mbig-endian=march?armv7/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mfpu?neon/mbig-endian ++ ++# ARMv7-A is specially useful used with VFPv3 (enabled by NEON). Rest of the cases behaves as ARMv7. ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a ++MULTILIB_ALIASES += mbig-endian=march?armv7-a/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfloat-abi?softfp ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv5te=march?armv7-a ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv5te=march?armv7-a/mfpu?neon ++MULTILIB_ALIASES += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian ++ ++# ARMv5T thumb uses the ARMv5T ARM libraries (with or without VFP). ++MULTILIB_ALIASES += mthumb=mthumb/march?armv5te ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=march?armv5te/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv5te=march?armv5te/mfpu?neon ++MULTILIB_ALIASES += mbig-endian=march?armv5te/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mthumb/march?armv5te/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mfpu?neon/mbig-endian ++ ++# ARMv6-M and VFP are incompatible. ++# FIXME: The compiler should probably error. ++MULTILIB_EXCEPTIONS += *march=armv6-m/mfloat-abi=softfp ++MULTILIB_ALIASES += mthumb/march?armv6-m=mthumb/march?armv6-m/mfpu?neon ++MULTILIB_EXCEPTIONS += march=armv6-m*mfpu=neon ++MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfloat-abi=softfp/mfpu=neon ++ ++# ARMv4t VFP isn't really supported, so use the soft-float libraries. ++MULTILIB_EXCEPTIONS += mfloat-abi?softfp ++MULTILIB_EXCEPTIONS += mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += mthumb=mthumb/mfloat-abi?softfp ++MULTILIB_ALIASES += mthumb=mthumb/mfloat-abi?softfp/mfpu?neon ++ ++MULTILIB_ALIASES += mbig-endian=mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian ++ ++# We don't have a big-endian ARMv6-M compatible multilibs. ++MULTILIB_EXCEPTIONS += *march=armv6-m*mbig-endian ++ ++# Use the generic libraries for big-endian ARMv5T ++MULTILIB_ALIASES += mbig-endian=march?armv5te/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mthumb/march?armv5te/mbig-endian ++MULTILIB_ALIASES += march?armv5te/mfloat-abi?softfp/mbig-endian=mthumb/march?armv5te/mfloat-abi?softfp/mbig-endian ++ ++# Use ARM libraries for big-endian Thumb. ++MULTILIB_ALIASES += mbig-endian=mthumb/mbig-endian ++ ++# Don't bother with big-endian Thumb-2 VFP. Use the soft-float libraries ++# for now. ++MULTILIB_ALIASES += mthumb/march?armv7/mbig-endian=mthumb/march?armv7/mfloat-abi?softfp/mbig-endian ++ ++# The only -mfloat-abi=hard libraries provided are for little-endian ++# v7-A NEON. ++MULTILIB_EXCEPTIONS += mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *march=armv5te*mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *march=armv7/*mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *march=armv6-m*mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *mfloat-abi=hard*mbig-endian ++MULTILIB_EXCEPTIONS += *mfloat-abi=hard ++ ++# FIXME: We need a sane way of doing this. ++# This isn't really a multilib, it's a hack to add an extra option ++# to the v7-m multilib. ++MULTILIB_OPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_DIRNAMES += broken_ldrd ++ ++MULTILIB_EXCEPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += mthumb/mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *march=armv6-m*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *march=armv7-a*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *mcpu=*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *mbig-endian*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *mfloat-abi=softfp*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *march=armv5te*mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *mfpu=neon*mfix-cortex-m3-ldrd ++ ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7 ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfix-cortex-m3-ldrd ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7/mfpu?neon/mfix-cortex-m3-ldrd ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7-a/mfpu?neon/mfix-cortex-m3-ldrd ++ ++# As of at least 4.2, gcc passes the wrong -L options if some multilibs are ++# omitted from MULTILIB_OSDIRNAMES ++MULTILIB_OSDIRNAMES = mthumb=!thumb ++MULTILIB_OSDIRNAMES += mbig-endian=!be ++MULTILIB_OSDIRNAMES += march.armv5te=!armv5te ++MULTILIB_OSDIRNAMES += march.armv5te/mfloat-abi.softfp=!vfp ++MULTILIB_OSDIRNAMES += march.armv5te/mfloat-abi.softfp/mbig-endian=!vfp-be ++MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2 ++MULTILIB_OSDIRNAMES += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon ++MULTILIB_OSDIRNAMES += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard ++MULTILIB_OSDIRNAMES += mthumb/march.armv7/mbig-endian=!thumb2-be ++MULTILIB_OSDIRNAMES += mthumb/march.armv6-m=!armv6-m +--- a/src/gcc/config/arm/t-cs-eabi-lite ++++ b/src/gcc/config/arm/t-cs-eabi-lite +@@ -0,0 +1,48 @@ ++# We build 4 multilibs: ++# ./ (default) ++# thumb/ -mthumb ++# thumb2/ -mthumb -march=armv7 ++# armv6-m/ -mthumb -march=armv6-m ++ ++MULTILIB_OPTIONS = mthumb ++MULTILIB_DIRNAMES = thumb ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = ++MULTILIB_ALIASES = ++ ++MULTILIB_OPTIONS += march=armv7/march=armv6-m ++MULTILIB_DIRNAMES += v7 v6-m ++MULTILIB_EXCEPTIONS += march=armv7* ++MULTILIB_MATCHES += march?armv7=march?armv7-a ++MULTILIB_MATCHES += march?armv7=march?armv7-r ++MULTILIB_MATCHES += march?armv7=march?armv7-m ++MULTILIB_MATCHES += march?armv7=march?armv7e-m ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++ ++MULTILIB_EXCEPTIONS += march=armv6-m ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m1 ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m0 ++ ++# FIXME: We need a sane way of doing this. ++# This isn't really a multilib, it's a hack to add an extra option ++# to the v7-m multilib. ++MULTILIB_OPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_DIRNAMES += broken_ldrd ++ ++MULTILIB_EXCEPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += mthumb/mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *march=armv6-m*mfix-cortex-m3-ldrd ++ ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7 ++ ++# As of at least 4.2, gcc passes the wrong -L options if some multilibs are ++# omitted from MULTILIB_OSDIRNAMES ++MULTILIB_OSDIRNAMES = mthumb=!thumb ++MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2 ++MULTILIB_OSDIRNAMES += mthumb/march.armv6-m=!armv6-m +--- a/src/gcc/config/arm/t-cs-linux ++++ b/src/gcc/config/arm/t-cs-linux +@@ -0,0 +1,112 @@ ++# Multilibs for SourceryG++ arm-none-linux-gnueabi ++ ++MULTILIB_OPTIONS = mthumb ++MULTILIB_DIRNAMES = t ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = ++MULTILIB_ALIASES = ++ ++MULTILIB_OPTIONS += march=armv4t/march=armv7-a ++MULTILIB_DIRNAMES += v4t v7a ++ ++MULTILIB_MATCHES += march?armv7-a=march?armv7a ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 ++MULTILIB_MATCHES += march?armv4t=march?ep9312 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm7tdmi ++MULTILIB_MATCHES += march?armv4t=mcpu?arm7tdmi-s ++MULTILIB_MATCHES += march?armv4t=mcpu?arm710t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm720t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm740t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm9 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm9tdmi ++MULTILIB_MATCHES += march?armv4t=mcpu?arm920 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm920t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm922t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm940t ++MULTILIB_MATCHES += march?armv4t=mcpu?ep9312 ++MULTILIB_MATCHES += march?armv4t=march?armv5 ++MULTILIB_MATCHES += march?armv4t=march?armv5t ++MULTILIB_MATCHES += march?armv4t=march?arm10tdmi ++MULTILIB_MATCHES += march?armv4t=march?arm1020t ++ ++MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard ++MULTILIB_DIRNAMES += softfp hard ++MULTILIB_MATCHES += mfloat-abi?hard=mhard-float ++ ++MULTILIB_OPTIONS += mfpu=neon ++MULTILIB_DIRNAMES += neon ++MULTILIB_EXCEPTIONS += mfpu=neon ++MULTILIB_MATCHES += mfpu?neon=mfpu?neon-fp16 ++MULTILIB_MATCHES += mfpu?neon=mfpu?neon-vfpv4 ++MULTILIB_ALIASES += mfloat-abi?softfp=mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += mfloat-abi?softfp=mthumb/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv7-a/mfloat-abi?hard/mfpu?neon=mthumb/march?armv7-a/mfloat-abi?hard/mfpu?neon ++ ++MULTILIB_OPTIONS += mbig-endian ++MULTILIB_DIRNAMES += be ++MULTILIB_ALIASES += mbig-endian=mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mbig-endian=mthumb/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mfpu?neon/mbig-endian ++ ++# Do not build Thumb libraries. ++MULTILIB_EXCEPTIONS += mthumb ++MULTILIB_EXCEPTIONS += mthumb/mfpu=neon ++ ++# Use ARM libraries for ARMv4t Thumb and VFP. ++MULTILIB_ALIASES += march?armv4t=mthumb/march?armv4t ++MULTILIB_ALIASES += march?armv4t=march?armv4t/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp ++MULTILIB_ALIASES += march?armv4t=march?armv4t/mfpu?neon ++MULTILIB_ALIASES += march?armv4t=march?armv4t/mfloat-abi?softfp/mfpu?neon ++MULTILIB_ALIASES += march?armv4t=mthumb/march?armv4t/mfpu?neon ++MULTILIB_ALIASES += march?armv4t=mthumb/march?armv4t/mfloat-abi?softfp/mfpu?neon ++ ++# We do not support ARMv4t big-endian. ++MULTILIB_EXCEPTIONS += *march=armv4t*mbig-endian ++ ++# Behave ARMv7-A as ARMv7 for some cases. ++MULTILIB_EXCEPTIONS += march=armv7-a ++MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon ++MULTILIB_ALIASES += mfloat-abi?softfp=march?armv7-a/mfloat-abi?softfp ++MULTILIB_ALIASES += mbig-endian=march?armv7-a/mbig-endian ++MULTILIB_ALIASES += mbig-endian=march?armv7-a/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mbig-endian ++MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7-a=mthumb/march?armv7-a/mfpu?neon ++MULTILIB_ALIASES += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mfpu?neon/mbig-endian ++MULTILIB_ALIASES += mthumb/march?armv7-a=mthumb/march?armv7-a/mfloat-abi?softfp ++ ++# Thumb-1 VFP isn't really a meaningful combination. Use the ARM VFP. ++MULTILIB_ALIASES += mfloat-abi?softfp=mthumb/mfloat-abi?softfp ++MULTILIB_ALIASES += mfloat-abi?softfp/mbig-endian=mthumb/mfloat-abi?softfp/mbig-endian ++ ++# Use ARM libraries for big-endian Thumb. ++MULTILIB_ALIASES += mbig-endian=mthumb/mbig-endian ++ ++# Don't bother with big-endian Thumb-2 VFP. Use the soft-float libraries ++# for now. ++MULTILIB_ALIASES += mthumb/march?armv7-a/mbig-endian=mthumb/march?armv7-a/mfloat-abi?softfp/mbig-endian ++ ++# The only -mfloat-abi=hard libraries provided are for little-endian ++# v7-A NEON. ++MULTILIB_EXCEPTIONS += mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *march=armv4t*mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=hard* ++MULTILIB_EXCEPTIONS += *mfloat-abi=hard*mbig-endian ++MULTILIB_EXCEPTIONS += *mfloat-abi=hard ++ ++# As of at least 4.2, gcc passes the wrong -L options if some multilibs are ++# omitted from MULTILIB_OSDIRNAMES ++MULTILIB_OSDIRNAMES = march.armv4t=!armv4t ++MULTILIB_OSDIRNAMES += mbig-endian=!be ++MULTILIB_OSDIRNAMES += mfloat-abi.softfp=!vfp ++MULTILIB_OSDIRNAMES += mfloat-abi.softfp/mbig-endian=!vfp-be ++MULTILIB_OSDIRNAMES += mthumb/march.armv7-a=!thumb2 ++MULTILIB_OSDIRNAMES += march.armv7-a/mfloat-abi.softfp/mfpu.neon=!armv7-a-neon ++MULTILIB_OSDIRNAMES += mthumb/march.armv7-a/mfloat-abi.softfp/mfpu.neon=!thumb2-neon ++MULTILIB_OSDIRNAMES += march.armv7-a/mfloat-abi.hard/mfpu.neon=!armv7-a-hard ++MULTILIB_OSDIRNAMES += mthumb/march.armv7-a/mbig-endian=!thumb2-be +--- a/src/gcc/config/arm/t-cs-linux-lite ++++ b/src/gcc/config/arm/t-cs-linux-lite +@@ -0,0 +1,48 @@ ++# We build 3 multilibs: ++# ./ (default) ++# armv4t/ -march=armv4t [-mthumb] ++# thumb2/ -mthumb -march=armv7 ++MULTILIB_OPTIONS = mthumb ++MULTILIB_DIRNAMES = thumb ++MULTILIB_OPTIONS += march=armv4t/march=armv7 ++MULTILIB_DIRNAMES += v4t v7 ++MULTILIB_EXCEPTIONS += march=armv7 ++MULTILIB_EXCEPTIONS += mthumb ++ ++MULTILIB_ALIASES = march?armv4t=mthumb/march?armv4t ++ ++# As of at least 4.2, gcc passes the wrong -L options if some multilibs are ++# omitted from MULTILIB_OSDIRNAMES ++MULTILIB_OSDIRNAMES = march.armv4t=!armv4t ++MULTILIB_OSDIRNAMES += mthumb/march.armv7=!thumb2 ++ ++MULTILIB_MATCHES += march?armv7=march?armv7a ++MULTILIB_MATCHES += march?armv7=march?armv7r ++MULTILIB_MATCHES += march?armv7=march?armv7m ++MULTILIB_MATCHES += march?armv7=march?armv7-a ++MULTILIB_MATCHES += march?armv7=march?armv7-r ++MULTILIB_MATCHES += march?armv7=march?armv7-m ++MULTILIB_MATCHES += march?armv7=march?armv7e-m ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++MULTILIB_MATCHES += march?armv4t=march?ep9312 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm7tdmi ++MULTILIB_MATCHES += march?armv4t=mcpu?arm7tdmi-s ++MULTILIB_MATCHES += march?armv4t=mcpu?arm710t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm720t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm740t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm9 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm9tdmi ++MULTILIB_MATCHES += march?armv4t=mcpu?arm920 ++MULTILIB_MATCHES += march?armv4t=mcpu?arm920t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm922t ++MULTILIB_MATCHES += march?armv4t=mcpu?arm940t ++MULTILIB_MATCHES += march?armv4t=mcpu?ep9312 ++MULTILIB_MATCHES += march?armv4t=march?armv5 ++MULTILIB_MATCHES += march?armv4t=march?armv5t ++MULTILIB_MATCHES += march?armv4t=march?arm10tdmi ++MULTILIB_MATCHES += march?armv4t=march?arm1020t +--- a/src/gcc/config/arm/t-cs-uclinux-eabi ++++ b/src/gcc/config/arm/t-cs-uclinux-eabi +@@ -0,0 +1,56 @@ ++# EABI uClinux multilib selection. Other setting are inherited from t-arm-elf ++ ++# We build 3 multilibs: ++# . (default) ++# thumb2/ -mthumb -march=armv7 -mfix-cortex-m3-ldrd ++# armv6-m/ -mthumb -march=armv6-m ++ ++MULTILIB_OPTIONS = mthumb ++MULTILIB_DIRNAMES = thumb ++MULTILIB_EXCEPTIONS = ++MULTILIB_MATCHES = ++ ++MULTILIB_OPTIONS += march=armv7/march=armv6-m ++MULTILIB_DIRNAMES += armv7 armv6-m ++ ++MULTILIB_EXCEPTIONS += mthumb ++ ++MULTILIB_EXCEPTIONS += march=armv7 ++MULTILIB_MATCHES += march?armv7=march?armv7a ++MULTILIB_MATCHES += march?armv7=march?armv7r ++MULTILIB_MATCHES += march?armv7=march?armv7m ++MULTILIB_MATCHES += march?armv7=march?armv7-a ++MULTILIB_MATCHES += march?armv7=march?armv7-r ++MULTILIB_MATCHES += march?armv7=march?armv7-m ++MULTILIB_MATCHES += march?armv7=march?armv7e-m ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++ ++MULTILIB_EXCEPTIONS += march=armv6-m ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m1 ++MULTILIB_MATCHES += march?armv6-m=mcpu?cortex-m0 ++ ++MULTILIB_ALIASES = ++ ++# FIXME: We need a sane way of doing this. ++# This isn't really a multilib, it's a hack to add an extra option ++# to the v7-m multilib. ++MULTILIB_OPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_DIRNAMES += broken_ldrd ++ ++MULTILIB_EXCEPTIONS += mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += mthumb/mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += march=armv7/mfix-cortex-m3-ldrd ++MULTILIB_EXCEPTIONS += *march=armv6-m*mfix-cortex-m3-ldrd ++ ++MULTILIB_ALIASES += mthumb/march?armv7/mfix-cortex-m3-ldrd=mthumb/march?armv7 ++ ++ ++MULTILIB_OSDIRNAMES = mthumb/march.armv7/mfix-cortex-m3-ldrd=!thumb2 ++MULTILIB_OSDIRNAMES += mthumb/march.armv6-m=!armv6-m ++ +--- a/src/gcc/config/arm/t-cygming ++++ b/src/gcc/config/arm/t-cygming +@@ -0,0 +1,10 @@ ++# cygwin and mingw always have a limits.h, but, depending upon how we are ++# doing the build, it may not be installed yet. ++LIMITS_H_TEST = true ++ ++# If we are building next to winsup, this will let us find the real ++# limits.h when building libgcc2. Otherwise, winsup must be installed ++# first. ++LIBGCC2_INCLUDES = -I$(srcdir)/../winsup/w32api/include ++ ++STMP_FIXINC=stmp-fixinc +--- a/src/gcc/config/arm/t-linux-eabi ++++ b/src/gcc/config/arm/t-linux-eabi +@@ -6,8 +6,8 @@ + MULTILIB_OPTIONS = + MULTILIB_DIRNAMES = + +-# Use a version of div0 which raises SIGFPE. +-LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx ++# Use a version of div0 which raises SIGFPE, and a special __clear_cache. ++LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache + + # Multilib the standard Linux files. Don't include crti.o or crtn.o, + # which are provided by glibc. +--- a/src/gcc/config/arm/t-mingw32 ++++ b/src/gcc/config/arm/t-mingw32 +@@ -0,0 +1,2 @@ ++# Match SYSTEM_INCLUDE_DIR ++NATIVE_SYSTEM_HEADER_DIR = /mingw/include +--- a/src/gcc/config/arm/t-montavista-linux ++++ b/src/gcc/config/arm/t-montavista-linux +@@ -0,0 +1,33 @@ ++# MontaVista GNU/Linux Configuration. ++# Copyright (C) 2009 ++# 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 ++# . ++ ++MULTILIB_OPTIONS = tarmv6/tthumb2 ++MULTILIB_DIRNAMES = armv6 thumb2 ++ ++MULTILIB_EXCEPTIONS = ++ ++MULTILIB_OSDIRNAMES = ++ ++MULTILIB_ALIASES = ++ ++MULTILIB_MATCHES = ++ ++# These files must be built for each multilib. ++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o +--- a/src/gcc/config/arm/t-nucleus ++++ b/src/gcc/config/arm/t-nucleus +@@ -0,0 +1,3 @@ ++ ++# Add shared object crtstuff ++EXTRA_MULTILIB_PARTS += crtbeginS.o crtendS.o +--- a/src/gcc/config/arm/t-symbian ++++ b/src/gcc/config/arm/t-symbian +@@ -1,22 +1,3 @@ +-LIB1ASMFUNCS = _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 +- +-# These functions have __aeabi equivalents and will never be called by GCC. +-# By putting them in LIB1ASMFUNCS, we avoid the standard libgcc2.c code being +-# used -- and we make sure that definitions are not available in lib1funcs.asm, +-# either, so they end up undefined. +-LIB1ASMFUNCS += \ +- _ashldi3 _ashrdi3 _divdi3 _floatdidf _udivmoddi4 _umoddi3 \ +- _udivdi3 _lshrdi3 _moddi3 _muldi3 _negdi2 _cmpdi2 \ +- _fixdfdi _fixsfdi _fixunsdfdi _fixunssfdi _floatdisf \ +- _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ +- _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ +- _fixsfsi _fixunssfsi +- +-# Include the gcc personality routine +-UNWIND_H = $(srcdir)/config/arm/unwind-arm.h +-LIB2ADDEH = $(srcdir)/unwind-c.c $(srcdir)/config/arm/pr-support.c +-LIB2ADDEHDEP = $(UNWIND_H) +- + # Create a multilib for processors with VFP floating-point, and a + # multilib for those without -- using the soft-float ABI in both + # cases. Symbian OS object should be compiled with interworking +@@ -24,6 +5,9 @@ + MULTILIB_OPTIONS = mfloat-abi=softfp + MULTILIB_DIRNAMES = softfp + ++LIB2FUNCS_EXTRA += $(srcdir)/config/arm/eabi-memcpy.c \ ++ $(srcdir)/config/arm/eabi-memset.c ++ + # There is no C library to link against on Symbian OS -- at least when + # building GCC. + SHLIB_LC = +--- a/src/gcc/config/arm/t-wince-pe ++++ b/src/gcc/config/arm/t-wince-pe +@@ -1,5 +1,50 @@ + LIB1ASMSRC = arm/lib1funcs.asm +-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 ++ ++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX \ ++ _bb_init_func _lshrdi3 _ashrdi3 _ashldi3 \ ++ _negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi \ ++ _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi _arm_floatdidf _arm_floatdisf \ ++ _clzsi2 _clzdi2 ++ ++# ++# Filter out functions from dp-bit.c that are already in lib1funcs.asm ++# ++DPBIT_FUNCS := $(filter-out _mul_df _div_df _addsub_df _compare_df \ ++ _eq_df _ne_df _gt_df _ge_df _lt_df _le_df \ ++ _negate_df _unord_df \ ++ _df_to_sf _si_to_df _df_to_si _usi_to_df, $(DPBIT_FUNCS)) ++FPBIT_FUNCS := $(filter-out _mul_sf _div_sf _addsub_sf _compare_sf \ ++ _eq_sf _ne_sf _gt_sf _ge_sf _lt_sf _le_sf \ ++ _negate_sf _unord_sf \ ++ _sf_to_df _si_to_sf _sf_to_si _usi_to_sf, $(FPBIT_FUNCS)) ++ ++LIB2FUNCS_EXCLUDE = _floatundisf _floatundidf _floatdidf _floatdisf \ ++ _fixunssfsi _fixunsdfsi ++ ++#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX \ ++# _bb_init_func _lshrdi3 _ashrdi3 _ashldi3 \ ++# _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++# _arm_fixdfsi _arm_fixunsdfsi \ ++# _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++# _arm_fixsfsi _arm_fixunssfsi _arm_floatdidf _arm_floatdisf \ ++# _arm_fixunsdfsi \ ++# _clzsi2 _clzdi2 ++ ++# For most CPUs we have an assembly soft-float implementations. ++# However this is not true for ARMv6M. Here we want to use the soft-fp C ++# implementation. The soft-fp code is only build for ARMv6M. This pulls ++# in the asm implementation for other CPUs. ++#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ ++# _call_via_rX _interwork_call_via_rX \ ++# _lshrdi3 _ashrdi3 _ashldi3 \ ++# _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++# _arm_fixdfsi _arm_fixunsdfsi \ ++# _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 \ ++# _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \ ++# _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \ ++# _clzsi2 _clzdi2 + + # We want fine grained libraries, so use the new code to build the + # floating point emulation libraries. +@@ -20,12 +65,34 @@ + echo '#endif' >> dp-bit.c + cat $(srcdir)/config/fp-bit.c >> dp-bit.c + +-pe.o: $(srcdir)/config/arm/pe.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ +- $(RTL_H) output.h flags.h $(TREE_H) expr.h toplev.h $(TM_P_H) +- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/arm/pe.c ++pe.o: $(srcdir)/config/arm/pe.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ++ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \ ++ $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H) ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ ++ $(srcdir)/config/arm/pe.c ++ ++pe-cxx.o: $(srcdir)/config/arm/pe-cxx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ++ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \ ++ $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H) ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ ++ $(srcdir)/config/arm/pe-cxx.c ++ ++pe-stubs.o: $(srcdir)/config/arm/pe-stubs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ++ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \ ++ $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H) ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ ++ $(srcdir)/config/arm/pe-stubs.c ++ ++#hack! using i386 file directly... ++msformat-c.o: $(srcdir)/config/i386/msformat-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ++ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \ ++ $(TM_P_H) toplev.h $(HASHTAB_H) $(GGC_H) ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ ++ $(srcdir)/config/i386/msformat-c.c ++ ++MULTILIB_OPTIONS = ++MULTILIB_DIRNAMES = + +-MULTILIB_OPTIONS = mhard-float +-MULTILIB_DIRNAMES = fpu + # Note - Thumb multilib omitted because Thumb support for + # arm-wince-pe target does not appear to be working in binutils + # yet... +@@ -34,4 +101,65 @@ + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +-TARGET_LIBGCC2_CFLAGS = ++# Currently there is a bug somewhere in GCC's alias analysis ++# or scheduling code that is breaking _fpmul_parts in fp-bit.c. ++# Disabling function inlining is a workaround for this problem. ++TARGET_LIBGCC2_CFLAGS = -fno-inline ++ ++STMP_FIXINC=stmp-fixinc ++ ++# Build a shared libgcc library for PECOFF with a DEF file ++# with the GNU linker. ++# ++# mkmap-flat.awk is used with the pe_dll option to produce a DEF instead ++# of an ELF map file. ++# ++# Warning: If SHLIB_SOVERSION or SHLIB_SONAME are updated, LIBGCC_SONAME ++# in mingw32.h and SHLIB_MKMAP_OPTS below must be updated also. ++ ++SHLIB_EXT = .dll ++SHLIB_IMPLIB = @shlib_base_name@.a ++SHLIB_SOVERSION = 1 ++SHLIB_SONAME = @shlib_base_name@_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT) ++SHLIB_MAP = @shlib_map_file@ ++SHLIB_OBJS = @shlib_objs@ ++SHLIB_DIR = @multilib_dir@/shlib ++SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ ++ ++# Version for mingw32ce ++SHLIB_LC = -lmingw32 -lmingwex -lceoldname -lcoredll ++# Version for cegcc ++#SHLIB_LC = -lc -lcoredll ++ ++# This should go somewhere else. ++# We are using SjLj EH. ++EH_MODEL = sjlj ++ ++SHLIB_LINK = $(LN_S) -f $(SHLIB_MAP) $(SHLIB_MAP).def && \ ++ if [ ! -d $(SHLIB_DIR) ]; then \ ++ mkdir $(SHLIB_DIR); \ ++ else true; fi && \ ++ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ ++ $(SHLIB_MAP).def \ ++ -Wl,--out-implib,$(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp \ ++ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ ++ $(SHLIB_OBJS) $(SHLIB_LC) && \ ++ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \ ++ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \ ++ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \ ++ else true; fi && \ ++ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \ ++ mv $(SHLIB_DIR)/$(SHLIB_IMPLIB).tmp $(SHLIB_DIR)/$(SHLIB_IMPLIB) ++# $(slibdir) double quoted to protect it from expansion while building ++# libgcc.mk. We want this delayed until actual install time. ++SHLIB_INSTALL = \ ++ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ ++ $(INSTALL_PROGRAM) $(SHLIB_DIR)/$(SHLIB_SONAME) \ ++ $$(DESTDIR)$$(bindir)/$(SHLIB_SONAME); \ ++ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_IMPLIB) \ ++ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_IMPLIB) ++SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk ++# We'd like to use SHLIB_SONAME here too, but shlib_base_name ++# does not get substituted before mkmap-flat.awk is run. ++SHLIB_MKMAP_OPTS = -v pe_dll=libgcc_s_$(EH_MODEL)-$(SHLIB_SOVERSION)$(SHLIB_EXT) ++SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +--- a/src/gcc/config/arm/t-wrs-linux ++++ b/src/gcc/config/arm/t-wrs-linux +@@ -0,0 +1,36 @@ ++# Wind River GNU/Linux Configuration. ++# Copyright (C) 2006, 2007, 2008 ++# 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 ++# . ++ ++MULTILIB_OPTIONS = muclibc ++MULTILIB_OPTIONS += tarm926ej-s/tthumb2-v7-a/tthumb2-v7-a-neon ++MULTILIB_OPTIONS += mfloat-abi=softfp ++MULTILIB_DIRNAMES = uclibc ++MULTILIB_DIRNAMES += tarm926ej-s thumb2-v7-a thumb2-v7-a-neon ++MULTILIB_DIRNAMES += softfp ++ ++MULTILIB_EXCEPTIONS += *thumb2*/*mfloat-abi=softfp* ++ ++MULTILIB_ALIASES = tthumb2-v7-a-neon=tthumb2-v7-a-neon/mfloat-abi?softfp ++MULTILIB_ALIASES += muclibc/tthumb2-v7-a-neon=muclibc/tthumb2-v7-a-neon/mfloat-abi?softfp ++MULTILIB_OSDIRNAMES = ++ ++# These files must be built for each multilib. ++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o ++ +--- a/src/gcc/config/arm/thumb2.md ++++ b/src/gcc/config/arm/thumb2.md +@@ -24,6 +24,8 @@ + ;; changes made in armv5t as "thumb2". These are considered part + ;; the 16-bit Thumb-1 instruction set. + ++(include "hwdiv.md") ++ + (define_insn "*thumb2_incscc" + [(set (match_operand:SI 0 "s_register_operand" "=r,r") + (plus:SI (match_operator:SI 2 "arm_comparison_operator" +@@ -55,7 +57,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=r") + (and:SI (not:SI (match_operator:SI 4 "shift_operator" + [(match_operand:SI 2 "s_register_operand" "r") +- (match_operand:SI 3 "const_int_operand" "M")])) ++ (match_operand:SI 3 "const_shift_count" "M")])) + (match_operand:SI 1 "s_register_operand" "r")))] + "TARGET_THUMB2" + "bic%?\\t%0, %1, %2%S4" +@@ -124,7 +126,7 @@ + [(set (match_operand:SI 0 "s_register_operand" "=r") + (not:SI (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")])))] ++ (match_operand:SI 2 "const_shift_count" "M")])))] + "TARGET_THUMB2" + "mvn%?\\t%0, %1%S3" + [(set_attr "predicable" "yes") +@@ -136,7 +138,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (not:SI (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")])) ++ (match_operand:SI 2 "const_shift_count" "M")])) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=r") + (not:SI (match_op_dup 3 [(match_dup 1) (match_dup 2)])))] +@@ -151,7 +153,7 @@ + [(set (reg:CC_NOOV CC_REGNUM) + (compare:CC_NOOV (not:SI (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")])) ++ (match_operand:SI 2 "const_shift_count" "M")])) + (const_int 0))) + (clobber (match_scratch:SI 0 "=r"))] + "TARGET_THUMB2" +@@ -172,34 +174,6 @@ + (set_attr "length" "8")] + ) + +-(define_insn "*thumb2_abssi2" +- [(set (match_operand:SI 0 "s_register_operand" "=r,&r") +- (abs:SI (match_operand:SI 1 "s_register_operand" "0,r"))) +- (clobber (reg:CC CC_REGNUM))] +- "TARGET_THUMB2" +- "@ +- cmp\\t%0, #0\;it\tlt\;rsblt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;sub%?\\t%0, %0, %1, asr #31" +- [(set_attr "conds" "clob,*") +- (set_attr "shift" "1") +- ;; predicable can't be set based on the variant, so left as no +- (set_attr "length" "10,8")] +-) +- +-(define_insn "*thumb2_neg_abssi2" +- [(set (match_operand:SI 0 "s_register_operand" "=r,&r") +- (neg:SI (abs:SI (match_operand:SI 1 "s_register_operand" "0,r")))) +- (clobber (reg:CC CC_REGNUM))] +- "TARGET_THUMB2" +- "@ +- cmp\\t%0, #0\;it\\tgt\;rsbgt\\t%0, %0, #0 +- eor%?\\t%0, %1, %1, asr #31\;rsb%?\\t%0, %0, %1, asr #31" +- [(set_attr "conds" "clob,*") +- (set_attr "shift" "1") +- ;; predicable can't be set based on the variant, so left as no +- (set_attr "length" "10,8")] +-) +- + (define_insn "*thumb2_movdi" + [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m") + (match_operand:DI 1 "di_operand" "rDa,Db,Dc,mi,r"))] +@@ -223,9 +197,14 @@ + (set_attr "neg_pool_range" "*,*,*,0,*")] + ) + ++;; We have two alternatives here for memory loads (and similarly for stores) ++;; to reflect the fact that the permissible constant pool ranges differ ++;; between ldr instructions taking low regs and ldr instructions taking high ++;; regs. The high register alternatives are not taken into account when ++;; choosing register preferences in order to reflect their expense. + (define_insn "*thumb2_movsi_insn" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m") +- (match_operand:SI 1 "general_operand" "rk ,I,K,N,mi,rk"))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l,*hk,m,*m") ++ (match_operand:SI 1 "general_operand" "rk ,I,K,j,mi,*mi,l,*hk"))] + "TARGET_THUMB2 && ! TARGET_IWMMXT + && !(TARGET_HARD_FLOAT && TARGET_VFP) + && ( register_operand (operands[0], SImode) +@@ -236,11 +215,13 @@ + mvn%?\\t%0, #%B1 + movw%?\\t%0, %1 + ldr%?\\t%0, %1 ++ ldr%?\\t%0, %1 ++ str%?\\t%1, %0 + str%?\\t%1, %0" +- [(set_attr "type" "*,*,*,*,load1,store1") ++ [(set_attr "type" "*,*,*,*,load1,load1,store1,store1") + (set_attr "predicable" "yes") +- (set_attr "pool_range" "*,*,*,*,4096,*") +- (set_attr "neg_pool_range" "*,*,*,*,0,*")] ++ (set_attr "pool_range" "*,*,*,*,1020,4096,*,*") ++ (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")] + ) + + ;; ??? We can probably do better with thumb2 +@@ -329,8 +310,8 @@ + " + [(set_attr "length" "8,12,16,8,8") + (set_attr "type" "*,*,*,load2,store2") +- (set_attr "pool_range" "1020") +- (set_attr "neg_pool_range" "0")] ++ (set_attr "pool_range" "*,*,*,4096,*") ++ (set_attr "neg_pool_range" "*,*,*,0,*")] + ) + + (define_insn "*thumb2_cmpsi_shiftsi" +@@ -338,7 +319,7 @@ + (compare:CC (match_operand:SI 0 "s_register_operand" "r") + (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")])))] ++ (match_operand:SI 2 "const_shift_count" "M")])))] + "TARGET_THUMB2" + "cmp%?\\t%0, %1%S3" + [(set_attr "conds" "set") +@@ -350,7 +331,7 @@ + [(set (reg:CC_SWP CC_REGNUM) + (compare:CC_SWP (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")]) ++ (match_operand:SI 2 "const_shift_count" "M")]) + (match_operand:SI 0 "s_register_operand" "r")))] + "TARGET_THUMB2" + "cmp%?\\t%0, %1%S3" +@@ -364,7 +345,7 @@ + (compare:CC (match_operand:SI 0 "s_register_operand" "r") + (neg:SI (match_operator:SI 3 "shift_operator" + [(match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "const_int_operand" "M")]))))] ++ (match_operand:SI 2 "const_shift_count" "M")]))))] + "TARGET_THUMB2" + "cmn%?\\t%0, %1%S3" + [(set_attr "conds" "set") +@@ -476,8 +457,8 @@ + (match_operator:SI 1 "shiftable_operator" + [(match_operator:SI 3 "shift_operator" + [(match_operand:SI 4 "s_register_operand" "r") +- (match_operand:SI 5 "const_int_operand" "M")]) +- (match_operand:SI 2 "s_register_operand" "r")]))] ++ (match_operand:SI 5 "const_shift_count" "M")]) ++ (match_operand:SI 2 "s_register_operand" "rk")]))] + "TARGET_THUMB2" + "%i1%?\\t%0, %2, %4%S3" + [(set_attr "predicable" "yes") +@@ -509,7 +490,7 @@ + (compare:CC_NOOV (match_operator:SI 1 "shiftable_operator" + [(match_operator:SI 3 "shift_operator" + [(match_operand:SI 4 "s_register_operand" "r") +- (match_operand:SI 5 "const_int_operand" "M")]) ++ (match_operand:SI 5 "const_shift_count" "M")]) + (match_operand:SI 2 "s_register_operand" "r")]) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=r") +@@ -527,7 +508,7 @@ + (compare:CC_NOOV (match_operator:SI 1 "shiftable_operator" + [(match_operator:SI 3 "shift_operator" + [(match_operand:SI 4 "s_register_operand" "r") +- (match_operand:SI 5 "const_int_operand" "M")]) ++ (match_operand:SI 5 "const_shift_count" "M")]) + (match_operand:SI 2 "s_register_operand" "r")]) + (const_int 0))) + (clobber (match_scratch:SI 0 "=r"))] +@@ -543,7 +524,7 @@ + (minus:SI (match_operand:SI 1 "s_register_operand" "r") + (match_operator:SI 2 "shift_operator" + [(match_operand:SI 3 "s_register_operand" "r") +- (match_operand:SI 4 "const_int_operand" "M")])))] ++ (match_operand:SI 4 "const_shift_count" "M")])))] + "TARGET_THUMB2" + "sub%?\\t%0, %1, %3%S2" + [(set_attr "predicable" "yes") +@@ -557,7 +538,7 @@ + (minus:SI (match_operand:SI 1 "s_register_operand" "r") + (match_operator:SI 2 "shift_operator" + [(match_operand:SI 3 "s_register_operand" "r") +- (match_operand:SI 4 "const_int_operand" "M")])) ++ (match_operand:SI 4 "const_shift_count" "M")])) + (const_int 0))) + (set (match_operand:SI 0 "s_register_operand" "=r") + (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3) +@@ -575,7 +556,7 @@ + (minus:SI (match_operand:SI 1 "s_register_operand" "r") + (match_operator:SI 2 "shift_operator" + [(match_operand:SI 3 "s_register_operand" "r") +- (match_operand:SI 4 "const_int_operand" "M")])) ++ (match_operand:SI 4 "const_shift_count" "M")])) + (const_int 0))) + (clobber (match_scratch:SI 0 "=r"))] + "TARGET_THUMB2" +@@ -1131,26 +1112,6 @@ + (set_attr "length" "2")] + ) + +-(define_insn "divsi3" +- [(set (match_operand:SI 0 "s_register_operand" "=r") +- (div:SI (match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "s_register_operand" "r")))] +- "TARGET_THUMB2 && arm_arch_hwdiv" +- "sdiv%?\t%0, %1, %2" +- [(set_attr "predicable" "yes") +- (set_attr "insn" "sdiv")] +-) +- +-(define_insn "udivsi3" +- [(set (match_operand:SI 0 "s_register_operand" "=r") +- (udiv:SI (match_operand:SI 1 "s_register_operand" "r") +- (match_operand:SI 2 "s_register_operand" "r")))] +- "TARGET_THUMB2 && arm_arch_hwdiv" +- "udiv%?\t%0, %1, %2" +- [(set_attr "predicable" "yes") +- (set_attr "insn" "udiv")] +-) +- + (define_insn "*thumb2_subsi_short" + [(set (match_operand:SI 0 "low_register_operand" "=l") + (minus:SI (match_operand:SI 1 "low_register_operand" "l") +@@ -1162,6 +1123,121 @@ + (set_attr "length" "2")] + ) + ++(define_insn "*thumb2_addsi3_compare0" ++ [(set (reg:CC_NOOV CC_REGNUM) ++ (compare:CC_NOOV ++ (plus:SI (match_operand:SI 1 "s_register_operand" "l, 0, r") ++ (match_operand:SI 2 "arm_add_operand" "lPt,Ps,rIL")) ++ (const_int 0))) ++ (set (match_operand:SI 0 "s_register_operand" "=l,l,r") ++ (plus:SI (match_dup 1) (match_dup 2)))] ++ "TARGET_THUMB2" ++ "* ++ HOST_WIDE_INT val; ++ ++ if (GET_CODE (operands[2]) == CONST_INT) ++ val = INTVAL (operands[2]); ++ else ++ val = 0; ++ ++ if (val < 0 && const_ok_for_arm (ARM_SIGN_EXTEND (-val))) ++ return \"subs\\t%0, %1, #%n2\"; ++ else ++ return \"adds\\t%0, %1, %2\"; ++ " ++ [(set_attr "conds" "set") ++ (set_attr "length" "2,2,4")] ++) ++ ++(define_insn "*thumb2_addsi3_compare0_scratch" ++ [(set (reg:CC_NOOV CC_REGNUM) ++ (compare:CC_NOOV ++ (plus:SI (match_operand:SI 0 "s_register_operand" "l, r") ++ (match_operand:SI 1 "arm_add_operand" "lPu,rIL")) ++ (const_int 0)))] ++ "TARGET_THUMB2" ++ "* ++ HOST_WIDE_INT val; ++ ++ if (GET_CODE (operands[1]) == CONST_INT) ++ val = INTVAL (operands[1]); ++ else ++ val = 0; ++ ++ if (val < 0 && const_ok_for_arm (ARM_SIGN_EXTEND (-val))) ++ return \"cmp\\t%0, #%n1\"; ++ else ++ return \"cmn\\t%0, %1\"; ++ " ++ [(set_attr "conds" "set") ++ (set_attr "length" "2,4")] ++) ++ ++;; 16-bit encodings of "muls" and "mul". We only use these when ++;; optimizing for size since "muls" is slow on all known ++;; implementations and since "mul" will be generated by ++;; "*arm_mulsi3_v6" anyhow. The assembler will use a 16-bit encoding ++;; for "mul" whenever possible anyhow. ++(define_peephole2 ++ [(set (match_operand:SI 0 "low_register_operand" "") ++ (mult:SI (match_operand:SI 1 "low_register_operand" "") ++ (match_dup 0)))] ++ "TARGET_THUMB2 && optimize_size && peep2_regno_dead_p (0, CC_REGNUM)" ++ [(parallel ++ [(set (match_dup 0) ++ (mult:SI (match_dup 0) (match_dup 1))) ++ (clobber (reg:CC CC_REGNUM))])] ++ "" ++) ++ ++(define_peephole2 ++ [(set (match_operand:SI 0 "low_register_operand" "") ++ (mult:SI (match_dup 0) ++ (match_operand:SI 1 "low_register_operand" "")))] ++ "TARGET_THUMB2 && optimize_size && peep2_regno_dead_p (0, CC_REGNUM)" ++ [(parallel ++ [(set (match_dup 0) ++ (mult:SI (match_dup 0) (match_dup 1))) ++ (clobber (reg:CC CC_REGNUM))])] ++ "" ++) ++ ++(define_insn "*thumb2_mulsi_short" ++ [(set (match_operand:SI 0 "low_register_operand" "=l") ++ (mult:SI (match_operand:SI 1 "low_register_operand" "%0") ++ (match_operand:SI 2 "low_register_operand" "l"))) ++ (clobber (reg:CC CC_REGNUM))] ++ "TARGET_THUMB2 && optimize_size && reload_completed" ++ "mul%!\\t%0, %2, %0" ++ [(set_attr "predicable" "yes") ++ (set_attr "length" "2") ++ (set_attr "insn" "muls")]) ++ ++(define_insn "*thumb2_mulsi_short_compare0" ++ [(set (reg:CC_NOOV CC_REGNUM) ++ (compare:CC_NOOV ++ (mult:SI (match_operand:SI 1 "register_operand" "%0") ++ (match_operand:SI 2 "register_operand" "l")) ++ (const_int 0))) ++ (set (match_operand:SI 0 "register_operand" "=l") ++ (mult:SI (match_dup 1) (match_dup 2)))] ++ "TARGET_THUMB2 && optimize_size" ++ "muls\\t%0, %2, %0" ++ [(set_attr "length" "2") ++ (set_attr "insn" "muls")]) ++ ++(define_insn "*thumb2_mulsi_short_compare0_scratch" ++ [(set (reg:CC_NOOV CC_REGNUM) ++ (compare:CC_NOOV ++ (mult:SI (match_operand:SI 1 "register_operand" "%0") ++ (match_operand:SI 2 "register_operand" "l")) ++ (const_int 0))) ++ (clobber (match_scratch:SI 0 "=l"))] ++ "TARGET_THUMB2 && optimize_size" ++ "muls\\t%0, %2, %0" ++ [(set_attr "length" "2") ++ (set_attr "insn" "muls")]) ++ + (define_insn "*thumb2_cbz" + [(set (pc) (if_then_else + (eq (match_operand:SI 0 "s_register_operand" "l,?r") +--- a/src/gcc/config/arm/uclinux-eabi.h ++++ b/src/gcc/config/arm/uclinux-eabi.h +@@ -50,6 +50,10 @@ + #undef ARM_DEFAULT_ABI + #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX + ++#undef LINK_GCC_C_SEQUENCE_SPEC ++#define LINK_GCC_C_SEQUENCE_SPEC \ ++ "--start-group %G %L --end-group" ++ + /* Clear the instruction cache from `beg' to `end'. This makes an + inline system call to SYS_cacheflush. */ + #undef CLEAR_INSN_CACHE +--- a/src/gcc/config/arm/unwind-arm.c ++++ b/src/gcc/config/arm/unwind-arm.c +@@ -1000,7 +1000,6 @@ + while (code != _URC_END_OF_STACK + && code != _URC_FAILURE); + +- finish: + restore_non_core_regs (&saved_vrs); + return code; + } +@@ -1168,6 +1167,9 @@ + { + matched = (void *)(ucbp + 1); + rtti = _Unwind_decode_target2 ((_uw) &data[i + 1]); ++ /* There is no way to encode an exception ++ specification for 'class X * &', so ++ always pass false for is_reference. */ + if (__cxa_type_match (ucbp, (type_info *) rtti, 0, + &matched)) + break; +@@ -1197,8 +1199,6 @@ + ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1]; + + if (data[0] & uint32_highbit) +- phase2_call_unexpected_after_unwind = 1; +- else + { + data += rtti_count + 1; + /* Setup for entry to the handler. */ +@@ -1208,6 +1208,8 @@ + _Unwind_SetGR (context, 0, (_uw) ucbp); + return _URC_INSTALL_CONTEXT; + } ++ else ++ phase2_call_unexpected_after_unwind = 1; + } + if (data[0] & uint32_highbit) + data++; +--- a/src/gcc/config/arm/unwind-arm.h ++++ b/src/gcc/config/arm/unwind-arm.h +@@ -228,10 +228,12 @@ + if (!tmp) + return 0; + +-#if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) +- /* Pc-relative indirect. */ ++#if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \ ++ || (defined (__nucleus__) && defined (__shared__)) ++ /* Pc-relative indirect. Propagate the bottom 2 bits, which can ++ contain referenceness information in gnu unwinding tables. */ + tmp += ptr; +- tmp = *(_Unwind_Word *) tmp; ++ tmp = *(_Unwind_Word *) (tmp & ~(_Unwind_Word)3) | (tmp & 3); + #elif defined(__symbian__) || defined(__uClinux__) + /* Absolute pointer. Nothing more to do. */ + #else +--- a/src/gcc/config/arm/vec-common.md ++++ b/src/gcc/config/arm/vec-common.md +@@ -38,6 +38,16 @@ + "TARGET_NEON + || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (mode))" + { ++ if (can_create_pseudo_p ()) ++ { ++ if (GET_CODE (operands[0]) != REG) ++ operands[1] = force_reg (mode, operands[1]); ++ else if (TARGET_NEON && CONSTANT_P (operands[1])) ++ { ++ operands[1] = neon_make_constant (operands[1]); ++ gcc_assert (operands[1] != NULL_RTX); ++ } ++ } + }) + + ;; Vector arithmetic. Expanders are blank, then unnamed insns implement +--- a/src/gcc/config/arm/vfp.md ++++ b/src/gcc/config/arm/vfp.md +@@ -51,7 +51,7 @@ + ;; problems because small constants get converted into adds. + (define_insn "*arm_movsi_vfp" + [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m ,*t,r,*t,*t, *Uv") +- (match_operand:SI 1 "general_operand" "rk, I,K,N,mi,rk,r,*t,*t,*Uvi,*t"))] ++ (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,rk,r,*t,*t,*Uvi,*t"))] + "TARGET_ARM && TARGET_VFP && TARGET_HARD_FLOAT + && ( s_register_operand (operands[0], SImode) + || s_register_operand (operands[1], SImode))" +@@ -82,13 +82,17 @@ + " + [(set_attr "predicable" "yes") + (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores") ++ (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*") ++ (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*") + (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") + (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")] + ) + ++;; See thumb2.md:thumb2_movsi_insn for an explanation of the split ++;; high/low register alternatives for loads and stores here. + (define_insn "*thumb2_movsi_vfp" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m,*t,r, *t,*t, *Uv") +- (match_operand:SI 1 "general_operand" "rk, I,K,N,mi,rk,r,*t,*t,*Uvi,*t"))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l,*hk,m,*m,*t,r, *t,*t, *Uv") ++ (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,*mi,l,*hk,r,*t,*t,*Uvi,*t"))] + "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT + && ( s_register_operand (operands[0], SImode) + || s_register_operand (operands[1], SImode))" +@@ -102,34 +106,38 @@ + case 3: + return \"movw%?\\t%0, %1\"; + case 4: +- return \"ldr%?\\t%0, %1\"; + case 5: +- return \"str%?\\t%1, %0\"; ++ return \"ldr%?\\t%0, %1\"; + case 6: +- return \"fmsr%?\\t%0, %1\\t%@ int\"; + case 7: +- return \"fmrs%?\\t%0, %1\\t%@ int\"; ++ return \"str%?\\t%1, %0\"; + case 8: ++ return \"fmsr%?\\t%0, %1\\t%@ int\"; ++ case 9: ++ return \"fmrs%?\\t%0, %1\\t%@ int\"; ++ case 10: + return \"fcpys%?\\t%0, %1\\t%@ int\"; +- case 9: case 10: ++ case 11: case 12: + return output_move_vfp (operands); + default: + gcc_unreachable (); + } + " + [(set_attr "predicable" "yes") +- (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_load,f_store") +- (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*") +- (set_attr "neg_pool_range" "*,*,*,*, 0,*,*,*,*,1008,*")] ++ (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_load,f_store") ++ (set_attr "neon_type" "*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*") ++ (set_attr "insn" "mov,mov,mvn,mov,*,*,*,*,*,*,*,*,*") ++ (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*") ++ (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")] + ) + + + ;; DImode moves + + (define_insn "*arm_movdi_vfp" +- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,r,w,w, Uv") ++ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, m,w,r,w,w, Uv") + (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))] +- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP ++ "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune != cortexa8 + && ( register_operand (operands[0], DImode) + || register_operand (operands[1], DImode))" + "* +@@ -145,7 +153,10 @@ + case 4: + return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\"; + case 5: +- return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; ++ if (TARGET_VFP_SINGLE) ++ return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\"; ++ else ++ return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; + case 6: case 7: + return output_move_vfp (operands); + default: +@@ -153,7 +164,56 @@ + } + " + [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored") +- (set_attr "length" "8,8,8,4,4,4,4,4") ++ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*") ++ (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8) ++ (eq_attr "alternative" "5") ++ (if_then_else ++ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1)) ++ (const_int 8) ++ (const_int 4))] ++ (const_int 4))) ++ (set_attr "pool_range" "*,1020,*,*,*,*,1020,*") ++ (set_attr "neg_pool_range" "*,1008,*,*,*,*,1008,*")] ++) ++ ++(define_insn "*arm_movdi_vfp_cortexa8" ++ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,!r,w,w, Uv") ++ (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))] ++ "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune == cortexa8 ++ && ( register_operand (operands[0], DImode) ++ || register_operand (operands[1], DImode))" ++ "* ++ switch (which_alternative) ++ { ++ case 0: ++ return \"#\"; ++ case 1: ++ case 2: ++ return output_move_double (operands); ++ case 3: ++ return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\"; ++ case 4: ++ return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\"; ++ case 5: ++ if (TARGET_VFP_SINGLE) ++ return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\"; ++ else ++ return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; ++ case 6: case 7: ++ return output_move_vfp (operands); ++ default: ++ gcc_unreachable (); ++ } ++ " ++ [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored") ++ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*") ++ (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8) ++ (eq_attr "alternative" "5") ++ (if_then_else ++ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1)) ++ (const_int 8) ++ (const_int 4))] ++ (const_int 4))) + (set_attr "pool_range" "*,1020,*,*,*,*,1020,*") + (set_attr "neg_pool_range" "*,1008,*,*,*,*,1008,*")] + ) +@@ -172,7 +232,10 @@ + case 4: + return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\"; + case 5: +- return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; ++ if (TARGET_VFP_SINGLE) ++ return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\"; ++ else ++ return \"fcpyd%?\\t%P0, %P1\\t%@ int\"; + case 6: case 7: + return output_move_vfp (operands); + default: +@@ -180,11 +243,123 @@ + } + " + [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_load,f_store") +- (set_attr "length" "8,8,8,4,4,4,4,4") ++ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*") ++ (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8) ++ (eq_attr "alternative" "5") ++ (if_then_else ++ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1)) ++ (const_int 8) ++ (const_int 4))] ++ (const_int 4))) + (set_attr "pool_range" "*,4096,*,*,*,*,1020,*") + (set_attr "neg_pool_range" "*, 0,*,*,*,*,1008,*")] + ) + ++;; HFmode moves ++(define_insn "*movhf_vfp_neon" ++ [(set (match_operand:HF 0 "nonimmediate_operand" "= t,Um,r,m,t,r,t,r,r") ++ (match_operand:HF 1 "general_operand" " Um, t,m,r,t,r,r,t,F"))] ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_NEON_FP16 ++ && ( s_register_operand (operands[0], HFmode) ++ || s_register_operand (operands[1], HFmode))" ++ "* ++ switch (which_alternative) ++ { ++ case 0: /* S register from memory */ ++ return \"vld1.16\\t{%z0}, %A1\"; ++ case 1: /* memory from S register */ ++ return \"vst1.16\\t{%z1}, %A0\"; ++ case 2: /* ARM register from memory */ ++ return \"ldrh\\t%0, %1\\t%@ __fp16\"; ++ case 3: /* memory from ARM register */ ++ return \"strh\\t%1, %0\\t%@ __fp16\"; ++ case 4: /* S register from S register */ ++ return \"fcpys\\t%0, %1\"; ++ case 5: /* ARM register from ARM register */ ++ return \"mov\\t%0, %1\\t%@ __fp16\"; ++ case 6: /* S register from ARM register */ ++ return \"fmsr\\t%0, %1\"; ++ case 7: /* ARM register from S register */ ++ return \"fmrs\\t%0, %1\"; ++ case 8: /* ARM register from constant */ ++ { ++ REAL_VALUE_TYPE r; ++ long bits; ++ rtx ops[4]; ++ ++ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); ++ bits = real_to_target (NULL, &r, HFmode); ++ ops[0] = operands[0]; ++ ops[1] = GEN_INT (bits); ++ ops[2] = GEN_INT (bits & 0xff00); ++ ops[3] = GEN_INT (bits & 0x00ff); ++ ++ if (arm_arch_thumb2) ++ output_asm_insn (\"movw\\t%0, %1\", ops); ++ else ++ output_asm_insn (\"mov\\t%0, %2\;orr\\t%0, %0, %3\", ops); ++ return \"\"; ++ } ++ default: ++ gcc_unreachable (); ++ } ++ " ++ [(set_attr "conds" "unconditional") ++ (set_attr "type" "*,*,load1,store1,fcpys,*,r_2_f,f_2_r,*") ++ (set_attr "neon_type" "neon_vld1_1_2_regs,neon_vst1_1_2_regs_vst2_2_regs,*,*,*,*,*,*,*") ++ (set_attr "length" "4,4,4,4,4,4,4,4,8")] ++) ++ ++;; FP16 without element load/store instructions. ++(define_insn "*movhf_vfp" ++ [(set (match_operand:HF 0 "nonimmediate_operand" "=r,m,t,r,t,r,r") ++ (match_operand:HF 1 "general_operand" " m,r,t,r,r,t,F"))] ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16 && !TARGET_NEON_FP16 ++ && ( s_register_operand (operands[0], HFmode) ++ || s_register_operand (operands[1], HFmode))" ++ "* ++ switch (which_alternative) ++ { ++ case 0: /* ARM register from memory */ ++ return \"ldrh\\t%0, %1\\t%@ __fp16\"; ++ case 1: /* memory from ARM register */ ++ return \"strh\\t%1, %0\\t%@ __fp16\"; ++ case 2: /* S register from S register */ ++ return \"fcpys\\t%0, %1\"; ++ case 3: /* ARM register from ARM register */ ++ return \"mov\\t%0, %1\\t%@ __fp16\"; ++ case 4: /* S register from ARM register */ ++ return \"fmsr\\t%0, %1\"; ++ case 5: /* ARM register from S register */ ++ return \"fmrs\\t%0, %1\"; ++ case 6: /* ARM register from constant */ ++ { ++ REAL_VALUE_TYPE r; ++ long bits; ++ rtx ops[4]; ++ ++ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]); ++ bits = real_to_target (NULL, &r, HFmode); ++ ops[0] = operands[0]; ++ ops[1] = GEN_INT (bits); ++ ops[2] = GEN_INT (bits & 0xff00); ++ ops[3] = GEN_INT (bits & 0x00ff); ++ ++ if (arm_arch_thumb2) ++ output_asm_insn (\"movw\\t%0, %1\", ops); ++ else ++ output_asm_insn (\"mov\\t%0, %2\;orr\\t%0, %0, %3\", ops); ++ return \"\"; ++ } ++ default: ++ gcc_unreachable (); ++ } ++ " ++ [(set_attr "conds" "unconditional") ++ (set_attr "type" "load1,store1,fcpys,*,r_2_f,f_2_r,*") ++ (set_attr "length" "4,4,4,4,4,4,8")] ++) ++ + + ;; SFmode moves + ;; Disparage the w<->r cases because reloading an invalid address is +@@ -222,6 +397,8 @@ + [(set_attr "predicable" "yes") + (set_attr "type" + "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*") ++ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*") ++ (set_attr "insn" "*,*,*,*,*,*,*,*,mov") + (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*") + (set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")] + ) +@@ -258,6 +435,8 @@ + [(set_attr "predicable" "yes") + (set_attr "type" + "r_2_f,f_2_r,fconsts,f_load,f_store,load1,store1,fcpys,*") ++ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*") ++ (set_attr "insn" "*,*,*,*,*,*,*,*,mov") + (set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*") + (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")] + ) +@@ -266,8 +445,8 @@ + ;; DFmode moves + + (define_insn "*movdf_vfp" +- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r") +- (match_operand:DF 1 "soft_df_operand" " ?r,w,Dv,mF,r,UvF,w, w,r"))] ++ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w, r, m,w ,Uv,w,r") ++ (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,D0,mF,r,UvF,w, w,r"))] + "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP + && ( register_operand (operands[0], DFmode) + || register_operand (operands[1], DFmode))" +@@ -280,14 +459,20 @@ + case 1: + return \"fmrrd%?\\t%Q0, %R0, %P1\"; + case 2: ++ gcc_assert (TARGET_VFP_DOUBLE); + return \"fconstd%?\\t%P0, #%G1\"; +- case 3: case 4: ++ case 3: ++ return \"vmov.i32\\t%P0, #0\"; ++ case 4: case 5: + return output_move_double (operands); +- case 5: case 6: ++ case 6: case 7: + return output_move_vfp (operands); +- case 7: +- return \"fcpyd%?\\t%P0, %P1\"; + case 8: ++ if (TARGET_VFP_SINGLE) ++ return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; ++ else ++ return \"fcpyd%?\\t%P0, %P1\"; ++ case 9: + return \"#\"; + default: + gcc_unreachable (); +@@ -295,16 +480,25 @@ + } + " + [(set_attr "type" +- "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*") +- (set_attr "length" "4,4,4,8,8,4,4,4,8") +- (set_attr "pool_range" "*,*,*,1020,*,1020,*,*,*") +- (set_attr "neg_pool_range" "*,*,*,1008,*,1008,*,*,*")] ++ "r_2_f,f_2_r,fconstd,*,f_loadd,f_stored,load2,store2,ffarithd,*") ++ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,neon_vmov,*,*,*,*,neon_vmov,*") ++ (set (attr "length") (cond [(eq_attr "alternative" "4,5,9") (const_int 8) ++ (eq_attr "alternative" "8") ++ (if_then_else ++ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1)) ++ (const_int 8) ++ (const_int 4))] ++ (const_int 4))) ++ (set_attr "pool_range" "*,*,*,*,1020,*,1020,*,*,*") ++ (set_attr "neg_pool_range" "*,*,*,*,1008,*,1008,*,*,*")] + ) + + (define_insn "*thumb2_movdf_vfp" +- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r") +- (match_operand:DF 1 "soft_df_operand" " ?r,w,Dv,mF,r,UvF,w, w,r"))] +- "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP" ++ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w, r, m,w ,Uv,w,r") ++ (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,D0,mF,r,UvF,w, w,r"))] ++ "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP ++ && ( register_operand (operands[0], DFmode) ++ || register_operand (operands[1], DFmode))" + "* + { + switch (which_alternative) +@@ -314,23 +508,36 @@ + case 1: + return \"fmrrd%?\\t%Q0, %R0, %P1\"; + case 2: ++ gcc_assert (TARGET_VFP_DOUBLE); + return \"fconstd%?\\t%P0, #%G1\"; +- case 3: case 4: case 8: ++ case 3: ++ return \"vmov.i32\\t%P0, #0\"; ++ case 4: case 5: case 9: + return output_move_double (operands); +- case 5: case 6: ++ case 6: case 7: + return output_move_vfp (operands); +- case 7: +- return \"fcpyd%?\\t%P0, %P1\"; ++ case 8: ++ if (TARGET_VFP_SINGLE) ++ return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\"; ++ else ++ return \"fcpyd%?\\t%P0, %P1\"; + default: + abort (); + } + } + " + [(set_attr "type" +- "r_2_f,f_2_r,fconstd,load2,store2,f_load,f_store,ffarithd,*") +- (set_attr "length" "4,4,4,8,8,4,4,4,8") +- (set_attr "pool_range" "*,*,*,4096,*,1020,*,*,*") +- (set_attr "neg_pool_range" "*,*,*,0,*,1008,*,*,*")] ++ "r_2_f,f_2_r,fconstd,*,load2,store2,f_load,f_store,ffarithd,*") ++ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,neon_vmov,*,*,*,*,neon_vmov,*") ++ (set (attr "length") (cond [(eq_attr "alternative" "4,5,9") (const_int 8) ++ (eq_attr "alternative" "8") ++ (if_then_else ++ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1)) ++ (const_int 8) ++ (const_int 4))] ++ (const_int 4))) ++ (set_attr "pool_range" "*,*,*,*,4096,*,1020,*,*,*") ++ (set_attr "neg_pool_range" "*,*,*,*,0,*,1008,*,*,*")] + ) + + +@@ -356,7 +563,8 @@ + fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1" + [(set_attr "conds" "use") + (set_attr "length" "4,4,8,4,4,8,4,4,8") +- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")] ++ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r") ++ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")] + ) + + (define_insn "*thumb2_movsfcc_vfp" +@@ -379,7 +587,8 @@ + ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1" + [(set_attr "conds" "use") + (set_attr "length" "6,6,10,6,6,10,6,6,10") +- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")] ++ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r") ++ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")] + ) + + (define_insn "*movdfcc_vfp" +@@ -389,7 +598,7 @@ + [(match_operand 4 "cc_register" "") (const_int 0)]) + (match_operand:DF 1 "s_register_operand" "0,w,w,0,?r,?r,0,w,w") + (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))] +- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ + fcpyd%D3\\t%P0, %P2 + fcpyd%d3\\t%P0, %P1 +@@ -402,7 +611,8 @@ + fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1" + [(set_attr "conds" "use") + (set_attr "length" "4,4,8,4,4,8,4,4,8") +- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")] ++ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r") ++ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")] + ) + + (define_insn "*thumb2_movdfcc_vfp" +@@ -412,7 +622,7 @@ + [(match_operand 4 "cc_register" "") (const_int 0)]) + (match_operand:DF 1 "s_register_operand" "0,w,w,0,?r,?r,0,w,w") + (match_operand:DF 2 "s_register_operand" "w,0,w,?r,0,?r,w,0,w")))] +- "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ + it\\t%D3\;fcpyd%D3\\t%P0, %P2 + it\\t%d3\;fcpyd%d3\\t%P0, %P1 +@@ -425,7 +635,8 @@ + ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1" + [(set_attr "conds" "use") + (set_attr "length" "6,6,10,6,6,10,6,6,10") +- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")] ++ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r") ++ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")] + ) + + +@@ -443,7 +654,7 @@ + (define_insn "*absdf2_vfp" + [(set (match_operand:DF 0 "s_register_operand" "=w") + (abs:DF (match_operand:DF 1 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fabsd%?\\t%P0, %P1" + [(set_attr "predicable" "yes") + (set_attr "type" "ffarithd")] +@@ -463,12 +674,12 @@ + (define_insn_and_split "*negdf2_vfp" + [(set (match_operand:DF 0 "s_register_operand" "=w,?r,?r") + (neg:DF (match_operand:DF 1 "s_register_operand" "w,0,r")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ + fnegd%?\\t%P0, %P1 + # + #" +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP && reload_completed ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE && reload_completed + && arm_general_register_operand (operands[0], DFmode)" + [(set (match_dup 0) (match_dup 1))] + " +@@ -523,7 +734,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (plus:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "faddd%?\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "type" "faddd")] +@@ -544,7 +755,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "=w") + (minus:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fsubd%?\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "type" "faddd")] +@@ -567,7 +778,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "+w") + (div:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fdivd%?\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "type" "fdivd")] +@@ -590,7 +801,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "+w") + (mult:DF (match_operand:DF 1 "s_register_operand" "w") + (match_operand:DF 2 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fmuld%?\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "type" "fmuld")] +@@ -611,7 +822,7 @@ + [(set (match_operand:DF 0 "s_register_operand" "+w") + (mult:DF (neg:DF (match_operand:DF 1 "s_register_operand" "w")) + (match_operand:DF 2 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fnmuld%?\\t%P0, %P1, %P2" + [(set_attr "predicable" "yes") + (set_attr "type" "fmuld")] +@@ -626,7 +837,8 @@ + (plus:SF (mult:SF (match_operand:SF 2 "s_register_operand" "t") + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP ++ && (!arm_tune_marvell_f || optimize_size)" + "fmacs%?\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacs")] +@@ -637,7 +849,8 @@ + (plus:DF (mult:DF (match_operand:DF 2 "s_register_operand" "w") + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE ++ && (!arm_tune_marvell_f || optimize_size)" + "fmacd%?\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacd")] +@@ -649,7 +862,8 @@ + (minus:SF (mult:SF (match_operand:SF 2 "s_register_operand" "t") + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP ++ && (!arm_tune_marvell_f || optimize_size)" + "fmscs%?\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacs")] +@@ -660,7 +874,8 @@ + (minus:DF (mult:DF (match_operand:DF 2 "s_register_operand" "w") + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE ++ && (!arm_tune_marvell_f || optimize_size)" + "fmscd%?\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacd")] +@@ -672,7 +887,8 @@ + (minus:SF (match_operand:SF 1 "s_register_operand" "0") + (mult:SF (match_operand:SF 2 "s_register_operand" "t") + (match_operand:SF 3 "s_register_operand" "t"))))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP ++ && (!arm_tune_marvell_f || optimize_size)" + "fnmacs%?\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacs")] +@@ -683,7 +899,8 @@ + (minus:DF (match_operand:DF 1 "s_register_operand" "0") + (mult:DF (match_operand:DF 2 "s_register_operand" "w") + (match_operand:DF 3 "s_register_operand" "w"))))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE ++ && (!arm_tune_marvell_f || optimize_size)" + "fnmacd%?\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacd")] +@@ -697,7 +914,8 @@ + (neg:SF (match_operand:SF 2 "s_register_operand" "t")) + (match_operand:SF 3 "s_register_operand" "t")) + (match_operand:SF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP ++ && (!arm_tune_marvell_f || optimize_size)" + "fnmscs%?\\t%0, %2, %3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacs")] +@@ -709,7 +927,8 @@ + (neg:DF (match_operand:DF 2 "s_register_operand" "w")) + (match_operand:DF 3 "s_register_operand" "w")) + (match_operand:DF 1 "s_register_operand" "0")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE ++ && (!arm_tune_marvell_f || optimize_size)" + "fnmscd%?\\t%P0, %P2, %P3" + [(set_attr "predicable" "yes") + (set_attr "type" "fmacd")] +@@ -721,7 +940,7 @@ + (define_insn "*extendsfdf2_vfp" + [(set (match_operand:DF 0 "s_register_operand" "=w") + (float_extend:DF (match_operand:SF 1 "s_register_operand" "t")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fcvtds%?\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] +@@ -730,12 +949,30 @@ + (define_insn "*truncdfsf2_vfp" + [(set (match_operand:SF 0 "s_register_operand" "=t") + (float_truncate:SF (match_operand:DF 1 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fcvtsd%?\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] + ) + ++(define_insn "extendhfsf2" ++ [(set (match_operand:SF 0 "s_register_operand" "=t") ++ (float_extend:SF (match_operand:HF 1 "s_register_operand" "t")))] ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16" ++ "vcvtb%?.f32.f16\\t%0, %1" ++ [(set_attr "predicable" "yes") ++ (set_attr "type" "f_cvt")] ++) ++ ++(define_insn "truncsfhf2" ++ [(set (match_operand:HF 0 "s_register_operand" "=t") ++ (float_truncate:HF (match_operand:SF 1 "s_register_operand" "t")))] ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FP16" ++ "vcvtb%?.f16.f32\\t%0, %1" ++ [(set_attr "predicable" "yes") ++ (set_attr "type" "f_cvt")] ++) ++ + (define_insn "*truncsisf2_vfp" + [(set (match_operand:SI 0 "s_register_operand" "=t") + (fix:SI (fix:SF (match_operand:SF 1 "s_register_operand" "t"))))] +@@ -748,7 +985,7 @@ + (define_insn "*truncsidf2_vfp" + [(set (match_operand:SI 0 "s_register_operand" "=t") + (fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "w"))))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "ftosizd%?\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] +@@ -767,7 +1004,7 @@ + (define_insn "fixuns_truncdfsi2" + [(set (match_operand:SI 0 "s_register_operand" "=t") + (unsigned_fix:SI (fix:DF (match_operand:DF 1 "s_register_operand" "t"))))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "ftouizd%?\\t%0, %P1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] +@@ -786,7 +1023,7 @@ + (define_insn "*floatsidf2_vfp" + [(set (match_operand:DF 0 "s_register_operand" "=w") + (float:DF (match_operand:SI 1 "s_register_operand" "t")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fsitod%?\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] +@@ -805,7 +1042,7 @@ + (define_insn "floatunssidf2" + [(set (match_operand:DF 0 "s_register_operand" "=w") + (unsigned_float:DF (match_operand:SI 1 "s_register_operand" "t")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fuitod%?\\t%P0, %1" + [(set_attr "predicable" "yes") + (set_attr "type" "f_cvt")] +@@ -826,7 +1063,7 @@ + (define_insn "*sqrtdf2_vfp" + [(set (match_operand:DF 0 "s_register_operand" "=w") + (sqrt:DF (match_operand:DF 1 "s_register_operand" "w")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "fsqrtd%?\\t%P0, %P1" + [(set_attr "predicable" "yes") + (set_attr "type" "fdivd")] +@@ -878,9 +1115,9 @@ + [(set (reg:CCFP CC_REGNUM) + (compare:CCFP (match_operand:DF 0 "s_register_operand" "w") + (match_operand:DF 1 "vfp_compare_operand" "wG")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "#" +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + [(set (reg:CCFP VFPCC_REGNUM) + (compare:CCFP (match_dup 0) + (match_dup 1))) +@@ -893,9 +1130,9 @@ + [(set (reg:CCFPE CC_REGNUM) + (compare:CCFPE (match_operand:DF 0 "s_register_operand" "w") + (match_operand:DF 1 "vfp_compare_operand" "wG")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "#" +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + [(set (reg:CCFPE VFPCC_REGNUM) + (compare:CCFPE (match_dup 0) + (match_dup 1))) +@@ -935,7 +1172,7 @@ + [(set (reg:CCFP VFPCC_REGNUM) + (compare:CCFP (match_operand:DF 0 "s_register_operand" "w,w") + (match_operand:DF 1 "vfp_compare_operand" "w,G")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ + fcmpd%?\\t%P0, %P1 + fcmpzd%?\\t%P0" +@@ -947,7 +1184,7 @@ + [(set (reg:CCFPE VFPCC_REGNUM) + (compare:CCFPE (match_operand:DF 0 "s_register_operand" "w,w") + (match_operand:DF 1 "vfp_compare_operand" "w,G")))] +- "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" ++ "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" + "@ + fcmped%?\\t%P0, %P1 + fcmpezd%?\\t%P0" +--- a/src/gcc/config/arm/vxworks.h ++++ b/src/gcc/config/arm/vxworks.h +@@ -97,7 +97,7 @@ + /* There is no default multilib. */ + #undef MULTILIB_DEFAULTS + +-#define FPUTYPE_DEFAULT FPUTYPE_VFP ++#define FPUTYPE_DEFAULT "vfp" + + #undef FUNCTION_PROFILER + #define FUNCTION_PROFILER VXWORKS_FUNCTION_PROFILER +@@ -117,3 +117,10 @@ + + #undef TARGET_DEFAULT_WORD_RELOCATIONS + #define TARGET_DEFAULT_WORD_RELOCATIONS 1 ++ ++/* VxWorks uses RELA relocations. It doesn't actually use movw/movt ++ relocations because the loader can't cope with them. See ++ TARGET_DEFAULT_WORD_RELOCATIONS above. In principle if it did ++ then they would accept arbitrary offsets. */ ++#undef TARGET_USE_RELA ++#define TARGET_USE_RELA 1 +--- a/src/gcc/config/arm/wince-pe.h ++++ b/src/gcc/config/arm/wince-pe.h +@@ -1,7 +1,11 @@ +-/* Definitions of target machine for GNU compiler, for ARM with WINCE-PE obj format. ++/* Definitions of target machine for GNU compiler, for ARM with ++ WINCE-PE obj format. ++ + Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc. + Contributed by Nick Clifton +- ++ ++ Further development by Pedro Alves ++ + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it +@@ -18,9 +22,243 @@ + along with GCC; see the file COPYING3. If not see + . */ + +-#undef TARGET_DEFAULT +-#define TARGET_DEFAULT (MASK_NOP_FUN_DLLIMPORT) ++/* Enable WinCE specific code. */ ++#define ARM_WINCE 1 ++ ++#undef MATH_LIBRARY ++#define MATH_LIBRARY "" ++ ++#define TARGET_EXECUTABLE_SUFFIX ".exe" ++ ++#undef TARGET_VERSION ++#define TARGET_VERSION fprintf (stderr, " (arm Windows CE/Native SDK)"); ++ ++#undef SUBTARGET_CONDITIONAL_REGISTER_USAGE ++#define SUBTARGET_CONDITIONAL_REGISTER_USAGE + + #undef MULTILIB_DEFAULTS + #define MULTILIB_DEFAULTS \ +- { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" } ++ { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" } ++ ++#undef SUBTARGET_CPU_DEFAULT ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm8 ++ ++/* We must store doubles in little endian order. Specifying the ++ default of VFP assures that. To guaranty VFP insns won't be ++ emitted by default, we default to float-abi=soft. */ ++#undef FPUTYPE_DEFAULT ++#define FPUTYPE_DEFAULT "vfp" ++ ++#undef CPP_SPEC ++#define CPP_SPEC "%(cpp_cpu) \ ++-DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__ \ ++%{!nostdinc: -idirafter ../include/w32api%s -idirafter ../../include/w32api%s } \ ++" ++ ++#ifndef ASM_SPEC ++#define ASM_SPEC "\ ++%{mbig-endian:-EB} \ ++%{mlittle-endian:-EL} \ ++%{mcpu=*:-mcpu=%*} \ ++%{march=*:-march=%*} \ ++%{mapcs-*:-mapcs-%*} \ ++%(subtarget_asm_float_spec) \ ++%{mthumb-interwork:-mthumb-interwork} \ ++%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \ ++%{mfloat-abi=*} %{mfpu=*} \ ++%(subtarget_extra_asm_spec)" ++#endif ++ ++#define EXTRA_OS_CPP_BUILTINS() ++ ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ /* We currently define UNDER_CE to a non-value, as it seems \ ++ MSVC2005 does the same. */ \ ++ builtin_define_std ("UNDER_CE"); \ ++ builtin_define ("_UNICODE"); \ ++ builtin_define_std ("UNICODE"); \ ++ /* Let's just ignore stdcall, and fastcall. */ \ ++ builtin_define ("__stdcall=__attribute__((__cdecl__))"); \ ++ builtin_define ("__fastcall=__attribute__((__cdecl__))"); \ ++ builtin_define ("__cdecl=__attribute__((__cdecl__))"); \ ++ if (!flag_iso) \ ++ { \ ++ builtin_define ("_stdcall=__attribute__((__cdecl__))"); \ ++ builtin_define ("_fastcall=__attribute__((__cdecl__))"); \ ++ builtin_define ("_cdecl=__attribute__((__cdecl__))"); \ ++ } \ ++ /* Even though linkonce works with static libs, this is needed \ ++ to compare typeinfo symbols across dll boundaries. */ \ ++ builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \ ++ builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0"); \ ++ EXTRA_OS_CPP_BUILTINS (); \ ++ { \ ++ /* Define these to be compatible MSFT's tools. */ \ ++ char buf[64]; \ ++ int arch = arm_major_arch (); \ ++ sprintf (buf, "_M_ARM=%d", arch); \ ++ builtin_define (buf); \ ++ if (arm_thumb_arch_p ()) \ ++ { \ ++ sprintf (buf, "_M_ARMT=%d", arch); \ ++ builtin_define (buf); \ ++ } \ ++ /* Always defined as empty. */ \ ++ builtin_define ("ARM="); \ ++ } \ ++ } \ ++ while (0) ++ ++/* Now we define the strings used to build the spec file. */ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "" ++ ++#undef LIBGCC_SPEC ++#define LIBGCC_SPEC "-lgcc" ++ ++/* Link with coredll, the main libc in the native SDK, and with ++ corelibc, a static lib that contains the start files, among other ++ basic crt stuff. */ ++ ++#undef LIB_SPEC ++#define LIB_SPEC "-lcoredll -lcorelibc" ++ ++#undef LINK_SPEC ++#define LINK_SPEC "\ ++ %{shared: %{mdll: %eshared and mdll are not compatible}} \ ++ %{shared: --shared} %{mdll:--dll} \ ++ %{static:-Bstatic} %{!static:-Bdynamic} \ ++ %{shared|mdll: -e DllMainCRTStartup} \ ++ " ++ ++ ++/* Don't assume anything about the header files. */ ++#define NO_IMPLICIT_EXTERN_C ++ ++ ++/* Define types for compatibility with MS runtime. */ ++ ++#undef DEFAULT_SIGNED_CHAR ++#define DEFAULT_SIGNED_CHAR 1 ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE "unsigned int" ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE "int" ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 16 ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "short unsigned int" ++ ++#undef WINT_TYPE ++#define WINT_TYPE "short unsigned int" ++ ++ ++#undef DWARF2_UNWIND_INFO ++#define DWARF2_UNWIND_INFO 0 ++ ++#define DWARF2_DEBUGGING_INFO 1 ++ ++#undef PREFERRED_DEBUGGING_TYPE ++#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG ++ ++#undef HAVE_AS_DWARF2_DEBUG_LINE ++#define HAVE_AS_DWARF2_DEBUG_LINE 1 ++ ++/* Use section relative relocations for debugging offsets. Unlike ++ other targets that fake this by putting the section VMA at 0, PE ++ won't allow it. */ ++#define ASM_OUTPUT_DWARF_OFFSET(FILE, SIZE, LABEL, SECTION) \ ++ do { \ ++ if (SIZE != 4) \ ++ abort (); \ ++ \ ++ fputs ("\t.secrel32\t", FILE); \ ++ assemble_name (FILE, LABEL); \ ++ } while (0) ++ ++/* Align output to a power of two. Note ".align 0" is redundant, ++ and also GAS will treat it as ".align 2" which we do not want. */ ++#undef ASM_OUTPUT_ALIGN ++#define ASM_OUTPUT_ALIGN(STREAM, POWER) \ ++ do \ ++ { \ ++ if ((POWER) > 0) \ ++ fprintf (STREAM, "\t.align\t%d\n", POWER); \ ++ } \ ++ while (0) ++ ++/* Prefix for internally generated assembler labels. If we aren't using ++ underscores, we are using prefix `.'s to identify labels that should ++ be ignored. */ ++/* If user-symbols don't have underscores, ++ then it must take more than `L' to identify ++ a label that should be ignored. */ ++ ++#undef LPREFIX ++#define LPREFIX ".L" ++ ++#undef LOCAL_LABEL_PREFIX ++#define LOCAL_LABEL_PREFIX "." ++ ++/* The prefix to add to user-visible assembler symbols. ++ Arm Windows CE is not underscored. */ ++ ++#undef USER_LABEL_PREFIX ++#define USER_LABEL_PREFIX "" ++ ++/* This is how to store into the string BUF ++ the symbol_ref name of an internal numbered label where ++ PREFIX is the class of label and NUM is the number within the class. ++ This is suitable for output with `assemble_name'. */ ++#undef ASM_GENERATE_INTERNAL_LABEL ++#define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ ++ sprintf ((BUF), ".%s%ld", (PREFIX), (long)(NUMBER)) ++ ++/* We have to re-define this to prevent any conflicts. */ ++#undef ARM_MCOUNT_NAME ++#define ARM_MCOUNT_NAME "_mcount" ++ ++ ++/* Emit code to check the stack when allocating more than 4000 ++ bytes in one go. */ ++/*#define CHECK_STACK_LIMIT 4000 */ ++ ++ ++ ++/* We do bitfields MSVC-compatibly by default. ++ We choose to be compatible with Microsoft's ARM and Thumb compilers, ++ which always return aggregates in memory. */ ++ ++/* TODO: Maybe add MASK_STACK_PROBE ? and enable CHECK_STACK_LIMIT? */ ++#undef TARGET_DEFAULT ++#define TARGET_DEFAULT (MASK_NOP_FUN_DLLIMPORT | \ ++ MASK_MS_BITFIELD_LAYOUT) ++ ++/* A bit-field declared as `int' forces `int' alignment for the struct. */ ++#undef PCC_BITFIELD_TYPE_MATTERS ++#define PCC_BITFIELD_TYPE_MATTERS 1 ++#define GROUP_BITFIELDS_BY_ALIGN TYPE_NATIVE(rec) ++ ++#undef DEFAULT_STRUCTURE_SIZE_BOUNDARY ++#define DEFAULT_STRUCTURE_SIZE_BOUNDARY 8 ++ ++#undef ARM_DOUBLEWORD_ALIGN ++#define ARM_DOUBLEWORD_ALIGN 0 ++ ++#undef BIGGEST_ALIGNMENT ++#define BIGGEST_ALIGNMENT 64 ++ ++/* defined in pe.h */ ++#undef SYSV_PRAGMA ++ ++#undef TREE ++ ++#ifndef BUFSIZ ++# undef FILE ++#endif +--- a/src/gcc/config/arm/wrs-linux.h ++++ b/src/gcc/config/arm/wrs-linux.h +@@ -0,0 +1,52 @@ ++/* Wind River GNU/Linux Configuration. ++ Copyright (C) 2006, 2007, 2008 ++ 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 ++. */ ++ ++/* Use the ARM926EJ-S by default. */ ++#undef SUBTARGET_CPU_DEFAULT ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm926ejs ++ ++/* Add a -tiwmmxt option for convenience in generating multilibs. ++ This option generates big-endian IWMMXT code. */ ++#undef CC1_SPEC ++#define CC1_SPEC " \ ++ %{tarm926ej-s: -mcpu=arm926ej-s ; \ ++ tthumb2-v7-a: %{!mcpu=*:%{!march=*:-mcpu=cortex-a8}} -mthumb ; \ ++ tthumb2-v7-a-neon: %{!mcpu=*:%{!march=*:-mcpu=cortex-a8}} \ ++ -mthumb -mfloat-abi=softfp -mfpu=neon } \ ++ %{profile:-p}" ++ ++/* Since the ARM926EJ-S is the default processor, we do not need to ++ provide an explicit multilib for that processor. */ ++#undef MULTILIB_DEFAULTS ++#define MULTILIB_DEFAULTS \ ++ { "tarm926ej-s" } ++ ++/* The GLIBC headers are in /usr/include, relative to the sysroot; the ++ uClibc headers are in /uclibc/usr/include. */ ++#undef SYSROOT_HEADERS_SUFFIX_SPEC ++#define SYSROOT_HEADERS_SUFFIX_SPEC \ ++ "%{muclibc:/uclibc}" ++ ++/* The various C libraries each have their own subdirectory. */ ++#undef SYSROOT_SUFFIX_SPEC ++#define SYSROOT_SUFFIX_SPEC \ ++ "%{muclibc:/uclibc}%{tthumb2-v7-a:/thumb2-v7-a ; \ ++ tthumb2-v7-a-neon:/thumb2-v7-a-neon}%{!tthumb2*:%{mfloat-abi=softfp:/softfp}}" ++ +--- a/src/gcc/config/i386/atom.md ++++ b/src/gcc/config/i386/atom.md +@@ -0,0 +1,795 @@ ++;; Atom Scheduling ++;; Copyright (C) 2009 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 ++;; . ++;; ++;; Atom is an in-order core with two integer pipelines. ++ ++ ++(define_attr "atom_unit" "sishuf,simul,jeu,complex,other" ++ (const_string "other")) ++ ++(define_attr "atom_sse_attr" "rcp,movdup,lfence,fence,prefetch,sqrt,mxcsr,other" ++ (const_string "other")) ++ ++(define_automaton "atom") ++ ++;; Atom has two ports: port 0 and port 1 connecting to all execution units ++(define_cpu_unit "atom-port-0,atom-port-1" "atom") ++ ++;; EU: Execution Unit ++;; Atom EUs are connected by port 0 or port 1. ++ ++(define_cpu_unit "atom-eu-0, atom-eu-1, ++ atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4" ++ "atom") ++ ++;; Some EUs have duplicated copied and can be accessed via either ++;; port 0 or port 1 ++;; (define_reservation "atom-port-either" "(atom-port-0 | atom-port-1)") ++ ++;;; Some instructions is dual-pipe execution, need both ports ++;;; Complex multi-op macro-instructoins need both ports and all EUs ++(define_reservation "atom-port-dual" "(atom-port-0 + atom-port-1)") ++(define_reservation "atom-all-eu" "(atom-eu-0 + atom-eu-1 + ++ atom-imul-1 + atom-imul-2 + atom-imul-3 + ++ atom-imul-4)") ++ ++;;; Most of simple instructions have 1 cycle latency. Some of them ++;;; issue in port 0, some in port 0 and some in either port. ++(define_reservation "atom-simple-0" "(atom-port-0 + atom-eu-0)") ++(define_reservation "atom-simple-1" "(atom-port-1 + atom-eu-1)") ++(define_reservation "atom-simple-either" "(atom-simple-0 | atom-simple-1)") ++ ++;;; Some insn issues in port 0 with 3 cycle latency and 1 cycle tput ++(define_reservation "atom-eu-0-3-1" "(atom-port-0 + atom-eu-0, nothing*2)") ++ ++;;; fmul insn can have 4 or 5 cycles latency ++(define_reservation "atom-fmul-5c" "(atom-port-0 + atom-eu-0), nothing*4") ++(define_reservation "atom-fmul-4c" "(atom-port-0 + atom-eu-0), nothing*3") ++ ++;;; fadd can has 5 cycles latency depends on instruction forms ++(define_reservation "atom-fadd-5c" "(atom-port-1 + atom-eu-1), nothing*5") ++ ++;;; imul insn has 5 cycles latency ++(define_reservation "atom-imul-32" ++ "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4, ++ atom-port-0") ++;;; imul instruction excludes other non-FP instructions. ++(exclusion_set "atom-eu-0, atom-eu-1" ++ "atom-imul-1, atom-imul-2, atom-imul-3, atom-imul-4") ++ ++;;; dual-execution instructions can have 1,2,4,5 cycles latency depends on ++;;; instruction forms ++(define_reservation "atom-dual-1c" "(atom-port-dual + atom-eu-0 + atom-eu-1)") ++(define_reservation "atom-dual-2c" ++ "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing)") ++(define_reservation "atom-dual-5c" ++ "(atom-port-dual + atom-eu-0 + atom-eu-1, nothing*4)") ++ ++;;; Complex macro-instruction has variants of latency, and uses both ports. ++(define_reservation "atom-complex" "(atom-port-dual + atom-all-eu)") ++ ++(define_insn_reservation "atom_other" 9 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "other") ++ (eq_attr "atom_unit" "!jeu"))) ++ "atom-complex, atom-all-eu*8") ++ ++;; return has type "other" with atom_unit "jeu" ++(define_insn_reservation "atom_other_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "other") ++ (eq_attr "atom_unit" "jeu"))) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_multi" 9 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "multi")) ++ "atom-complex, atom-all-eu*8") ++ ++;; Normal alu insns without carry ++(define_insn_reservation "atom_alu" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "none") ++ (eq_attr "use_carry" "0")))) ++ "atom-simple-either") ++ ++;; Normal alu insns without carry ++(define_insn_reservation "atom_alu_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "!none") ++ (eq_attr "use_carry" "0")))) ++ "atom-simple-either") ++ ++;; Alu insn consuming CF, such as add/sbb ++(define_insn_reservation "atom_alu_carry" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "none") ++ (eq_attr "use_carry" "1")))) ++ "atom-simple-either") ++ ++;; Alu insn consuming CF, such as add/sbb ++(define_insn_reservation "atom_alu_carry_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu") ++ (and (eq_attr "memory" "!none") ++ (eq_attr "use_carry" "1")))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_alu1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_alu1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "alu1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_negnot" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "negnot") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_negnot_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "negnot") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_imov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_imov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; 16<-16, 32<-32 ++(define_insn_reservation "atom_imovx" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "none") ++ (ior (and (match_operand:HI 0 "register_operand") ++ (match_operand:HI 1 "general_operand")) ++ (and (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "general_operand")))))) ++ "atom-simple-either") ++ ++;; 16<-16, 32<-32, mem ++(define_insn_reservation "atom_imovx_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "!none") ++ (ior (and (match_operand:HI 0 "register_operand") ++ (match_operand:HI 1 "general_operand")) ++ (and (match_operand:SI 0 "register_operand") ++ (match_operand:SI 1 "general_operand")))))) ++ "atom-simple-either") ++ ++;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8 ++(define_insn_reservation "atom_imovx_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "none") ++ (ior (match_operand:QI 0 "register_operand") ++ (ior (and (match_operand:SI 0 "register_operand") ++ (not (match_operand:SI 1 "general_operand"))) ++ (match_operand:DI 0 "register_operand")))))) ++ "atom-simple-0") ++ ++;; 32<-16, 32<-8, 64<-16, 64<-8, 64<-32, 8<-8, mem ++(define_insn_reservation "atom_imovx_2_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (eq_attr "memory" "!none") ++ (ior (match_operand:QI 0 "register_operand") ++ (ior (and (match_operand:SI 0 "register_operand") ++ (not (match_operand:SI 1 "general_operand"))) ++ (match_operand:DI 0 "register_operand")))))) ++ "atom-simple-0") ++ ++;; 16<-8 ++(define_insn_reservation "atom_imovx_3" 3 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imovx") ++ (and (match_operand:HI 0 "register_operand") ++ (match_operand:QI 1 "general_operand")))) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_lea" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "lea") ++ (eq_attr "mode" "!HI"))) ++ "atom-simple-either") ++ ++;; lea 16bit address is complex insn ++(define_insn_reservation "atom_lea_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "lea") ++ (eq_attr "mode" "HI"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_incdec" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "incdec") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_incdec_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "incdec") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; simple shift instruction use SHIFT eu, none memory ++(define_insn_reservation "atom_ishift" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (and (eq_attr "memory" "none") (eq_attr "prefix_0f" "0")))) ++ "atom-simple-0") ++ ++;; simple shift instruction use SHIFT eu, memory ++(define_insn_reservation "atom_ishift_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (and (eq_attr "memory" "!none") (eq_attr "prefix_0f" "0")))) ++ "atom-simple-0") ++ ++;; DF shift (prefixed with 0f) is complex insn with latency of 7 cycles ++(define_insn_reservation "atom_ishift_3" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift") ++ (eq_attr "prefix_0f" "1"))) ++ "atom-complex, atom-all-eu*6") ++ ++(define_insn_reservation "atom_ishift1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_ishift1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ishift1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_rotate1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "rotate1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_imul" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (and (eq_attr "memory" "none") (eq_attr "mode" "SI")))) ++ "atom-imul-32") ++ ++(define_insn_reservation "atom_imul_mem" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (and (eq_attr "memory" "!none") (eq_attr "mode" "SI")))) ++ "atom-imul-32") ++ ++;; latency set to 10 as common 64x64 imul ++(define_insn_reservation "atom_imul_3" 10 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "imul") ++ (eq_attr "mode" "!SI"))) ++ "atom-complex, atom-all-eu*9") ++ ++(define_insn_reservation "atom_idiv" 65 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "idiv")) ++ "atom-complex, atom-all-eu*32, nothing*32") ++ ++(define_insn_reservation "atom_icmp" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmp") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_icmp_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmp") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_test" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "test") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_test_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "test") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_ibr" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "!load"))) ++ "atom-simple-1") ++ ++;; complex if jump target is from address ++(define_insn_reservation "atom_ibr_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ibr") ++ (eq_attr "memory" "load"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_setcc" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "!store"))) ++ "atom-simple-either") ++ ++;; 2 cycles complex if target is in memory ++(define_insn_reservation "atom_setcc_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "setcc") ++ (eq_attr "memory" "store"))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_icmov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_icmov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "icmov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; UCODE if segreg, ignored ++(define_insn_reservation "atom_push" 2 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "push")) ++ "atom-dual-2c") ++ ++;; pop r64 is 1 cycle. UCODE if segreg, ignored ++(define_insn_reservation "atom_pop" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "pop") ++ (eq_attr "mode" "DI"))) ++ "atom-dual-1c") ++ ++;; pop non-r64 is 2 cycles. UCODE if segreg, ignored ++(define_insn_reservation "atom_pop_2" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "pop") ++ (eq_attr "mode" "!DI"))) ++ "atom-dual-2c") ++ ++;; UCODE if segreg, ignored ++(define_insn_reservation "atom_call" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "call")) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_callv" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "callv")) ++ "atom-dual-1c") ++ ++(define_insn_reservation "atom_leave" 3 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "leave")) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_str" 3 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "str")) ++ "atom-complex, atom-all-eu*2") ++ ++(define_insn_reservation "atom_sselog" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_sselog_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_sselog1" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog1") ++ (eq_attr "memory" "none"))) ++ "atom-simple-0") ++ ++(define_insn_reservation "atom_sselog1_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sselog1") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-0") ++ ++;; not pmad, not psad ++(define_insn_reservation "atom_sseiadd" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "!simul") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-simple-either") ++ ++;; pmad, psad and 64 ++(define_insn_reservation "atom_sseiadd_2" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "simul" ) ++ (eq_attr "mode" "DI"))))) ++ "atom-fmul-4c") ++ ++;; pmad, psad and 128 ++(define_insn_reservation "atom_sseiadd_3" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (and (not (match_operand:V2DI 0 "register_operand")) ++ (and (eq_attr "atom_unit" "simul" ) ++ (eq_attr "mode" "TI"))))) ++ "atom-fmul-5c") ++ ++;; if paddq(64 bit op), phadd/phsub ++(define_insn_reservation "atom_sseiadd_4" 6 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseiadd") ++ (ior (match_operand:V2DI 0 "register_operand") ++ (eq_attr "atom_unit" "complex")))) ++ "atom-complex, atom-all-eu*5") ++ ++;; if immediate op. ++(define_insn_reservation "atom_sseishft" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "atom_unit" "!sishuf") ++ (match_operand 2 "immediate_operand")))) ++ "atom-simple-either") ++ ++;; if palignr or psrldq ++(define_insn_reservation "atom_sseishft_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (and (eq_attr "atom_unit" "sishuf") ++ (match_operand 2 "immediate_operand")))) ++ "atom-simple-0") ++ ++;; if reg/mem op ++(define_insn_reservation "atom_sseishft_3" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseishft") ++ (not (match_operand 2 "immediate_operand")))) ++ "atom-complex, atom-all-eu") ++ ++(define_insn_reservation "atom_sseimul" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "sseimul")) ++ "atom-simple-0") ++ ++;; rcpss or rsqrtss ++(define_insn_reservation "atom_sse" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (and (eq_attr "atom_sse_attr" "rcp") (eq_attr "mode" "SF")))) ++ "atom-fmul-4c") ++ ++;; movshdup, movsldup. Suggest to type sseishft ++(define_insn_reservation "atom_sse_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (eq_attr "atom_sse_attr" "movdup"))) ++ "atom-simple-0") ++ ++;; lfence ++(define_insn_reservation "atom_sse_3" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (eq_attr "atom_sse_attr" "lfence"))) ++ "atom-simple-either") ++ ++;; sfence,clflush,mfence, prefetch ++(define_insn_reservation "atom_sse_4" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (ior (eq_attr "atom_sse_attr" "fence") ++ (eq_attr "atom_sse_attr" "prefetch")))) ++ "atom-simple-0") ++ ++;; rcpps, rsqrtss, sqrt, ldmxcsr ++(define_insn_reservation "atom_sse_5" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sse") ++ (ior (ior (eq_attr "atom_sse_attr" "sqrt") ++ (eq_attr "atom_sse_attr" "mxcsr")) ++ (and (eq_attr "atom_sse_attr" "rcp") ++ (eq_attr "mode" "V4SF"))))) ++ "atom-complex, atom-all-eu*6") ++ ++;; xmm->xmm ++(define_insn_reservation "atom_ssemov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "xy")))) ++ "atom-simple-either") ++ ++;; reg->xmm ++(define_insn_reservation "atom_ssemov_2" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "xy") (match_operand 1 "register_operand" "r")))) ++ "atom-simple-0") ++ ++;; xmm->reg ++(define_insn_reservation "atom_ssemov_3" 3 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (match_operand 0 "register_operand" "r") (match_operand 1 "register_operand" "xy")))) ++ "atom-eu-0-3-1") ++ ++;; mov mem ++(define_insn_reservation "atom_ssemov_4" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (and (eq_attr "movu" "0") (eq_attr "memory" "!none")))) ++ "atom-simple-0") ++ ++;; movu mem ++(define_insn_reservation "atom_ssemov_5" 2 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemov") ++ (ior (eq_attr "movu" "1") (eq_attr "memory" "!none")))) ++ "atom-complex, atom-all-eu") ++ ++;; no memory simple ++(define_insn_reservation "atom_sseadd" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "none") ++ (and (eq_attr "mode" "!V2DF") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-fadd-5c") ++ ++;; memory simple ++(define_insn_reservation "atom_sseadd_mem" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (and (eq_attr "memory" "!none") ++ (and (eq_attr "mode" "!V2DF") ++ (eq_attr "atom_unit" "!complex"))))) ++ "atom-dual-5c") ++ ++;; maxps, minps, *pd, hadd, hsub ++(define_insn_reservation "atom_sseadd_3" 8 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseadd") ++ (ior (eq_attr "mode" "V2DF") (eq_attr "atom_unit" "complex")))) ++ "atom-complex, atom-all-eu*7") ++ ++;; Except dppd/dpps ++(define_insn_reservation "atom_ssemul" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "mode" "!SF"))) ++ "atom-fmul-5c") ++ ++;; Except dppd/dpps, 4 cycle if mulss ++(define_insn_reservation "atom_ssemul_2" 4 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssemul") ++ (eq_attr "mode" "SF"))) ++ "atom-fmul-4c") ++ ++(define_insn_reservation "atom_ssecmp" 1 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssecmp")) ++ "atom-simple-either") ++ ++(define_insn_reservation "atom_ssecomi" 10 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssecomi")) ++ "atom-complex, atom-all-eu*9") ++ ++;; no memory and cvtpi2ps, cvtps2pi, cvttps2pi ++(define_insn_reservation "atom_ssecvt" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "register_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "register_operand"))))) ++ "atom-fadd-5c") ++ ++;; memory and cvtpi2ps, cvtps2pi, cvttps2pi ++(define_insn_reservation "atom_ssecvt_2" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "memory_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "memory_operand"))))) ++ "atom-dual-5c") ++ ++;; otherwise. 7 cycles average for cvtss2sd ++(define_insn_reservation "atom_ssecvt_3" 7 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "ssecvt") ++ (not (ior (and (match_operand:V2SI 0 "register_operand") ++ (match_operand:V4SF 1 "nonimmediate_operand")) ++ (and (match_operand:V4SF 0 "register_operand") ++ (match_operand:V2SI 1 "nonimmediate_operand")))))) ++ "atom-complex, atom-all-eu*6") ++ ++;; memory and cvtsi2sd ++(define_insn_reservation "atom_sseicvt" 5 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseicvt") ++ (and (match_operand:V2DF 0 "register_operand") ++ (match_operand:SI 1 "memory_operand")))) ++ "atom-dual-5c") ++ ++;; otherwise. 8 cycles average for cvtsd2si ++(define_insn_reservation "atom_sseicvt_2" 8 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "sseicvt") ++ (not (and (match_operand:V2DF 0 "register_operand") ++ (match_operand:SI 1 "memory_operand"))))) ++ "atom-complex, atom-all-eu*7") ++ ++(define_insn_reservation "atom_ssediv" 62 ++ (and (eq_attr "cpu" "atom") ++ (eq_attr "type" "ssediv")) ++ "atom-complex, atom-all-eu*12, nothing*49") ++ ++;; simple for fmov ++(define_insn_reservation "atom_fmov" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "none"))) ++ "atom-simple-either") ++ ++;; simple for fmov ++(define_insn_reservation "atom_fmov_mem" 1 ++ (and (eq_attr "cpu" "atom") ++ (and (eq_attr "type" "fmov") ++ (eq_attr "memory" "!none"))) ++ "atom-simple-either") ++ ++;; Define bypass here ++ ++;; There will be no stall from lea to non-mem EX insns ++(define_bypass 0 "atom_lea" ++ "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec, atom_setcc, atom_icmov, atom_pop") ++ ++(define_bypass 0 "atom_lea" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "!ix86_agi_dependent") ++ ++;; There will be 3 cycles stall from EX insns to AGAN insns LEA ++(define_bypass 4 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_lea") ++ ++;; There will be 3 cycles stall from EX insns to insns need addr calculation ++(define_bypass 4 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_negnot_mem, atom_imov_mem, atom_incdec_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imul_mem, atom_icmp_mem, ++ atom_test_mem, atom_icmov_mem, atom_sselog_mem, ++ atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_agi_dependent") ++ ++;; Stall from imul to lea is 8 cycles. ++(define_bypass 9 "atom_imul, atom_imul_mem" "atom_lea") ++ ++;; Stall from imul to memory address is 8 cycles. ++(define_bypass 9 "atom_imul, atom_imul_mem" ++ "atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_negnot_mem, atom_imov_mem, atom_incdec_mem, ++ atom_ishift_mem, atom_ishift1_mem, atom_rotate_mem, ++ atom_rotate1_mem, atom_imul_mem, atom_icmp_mem, ++ atom_test_mem, atom_icmov_mem, atom_sselog_mem, ++ atom_sselog1_mem, atom_fmov_mem, atom_sseadd_mem" ++ "ix86_agi_dependent") ++ ++;; There will be 0 cycle stall from cmp/test to jcc ++ ++;; There will be 1 cycle stall from flag producer to cmov and adc/sbb ++(define_bypass 2 "atom_icmp, atom_test, atom_alu, atom_alu_carry, ++ atom_alu1, atom_negnot, atom_incdec, atom_ishift, ++ atom_ishift1, atom_rotate, atom_rotate1" ++ "atom_icmov, atom_alu_carry") ++ ++;; lea to shift count stall is 2 cycles ++(define_bypass 3 "atom_lea" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_dep_by_shift_count") ++ ++;; lea to shift source stall is 1 cycle ++(define_bypass 2 "atom_lea" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1" ++ "!ix86_dep_by_shift_count") ++ ++;; non-lea to shift count stall is 1 cycle ++(define_bypass 2 "atom_alu_carry, ++ atom_alu,atom_alu1,atom_negnot,atom_imov,atom_imovx, ++ atom_incdec,atom_ishift,atom_ishift1,atom_rotate, ++ atom_rotate1, atom_setcc, atom_icmov, atom_pop, ++ atom_alu_mem, atom_alu_carry_mem, atom_alu1_mem, ++ atom_imovx_mem, atom_imovx_2_mem, ++ atom_imov_mem, atom_icmov_mem, atom_fmov_mem" ++ "atom_ishift, atom_ishift1, atom_rotate, atom_rotate1, ++ atom_ishift_mem, atom_ishift1_mem, ++ atom_rotate_mem, atom_rotate1_mem" ++ "ix86_dep_by_shift_count") +--- a/src/gcc/config/i386/cpuid.h ++++ b/src/gcc/config/i386/cpuid.h +@@ -29,6 +29,7 @@ + #define bit_CMPXCHG16B (1 << 13) + #define bit_SSE4_1 (1 << 19) + #define bit_SSE4_2 (1 << 20) ++#define bit_MOVBE (1 << 22) + #define bit_POPCNT (1 << 23) + #define bit_AES (1 << 25) + #define bit_XSAVE (1 << 26) +--- a/src/gcc/config/i386/cs-linux-lite.h ++++ b/src/gcc/config/i386/cs-linux-lite.h +@@ -0,0 +1,31 @@ ++/* Sourcery G++ Lite IA32 GNU/Linux Configuration. ++ Copyright (C) 2009 ++ 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 ++. */ ++ ++#undef SYSROOT_SUFFIX_SPEC ++#define SYSROOT_SUFFIX_SPEC \ ++ "%{march=atom:%{!m64:/atom} ; \ ++ march=core2:%{m64:/core2}}" ++ ++/* See mips/wrs-linux.h for details on this use of ++ STARTFILE_PREFIX_SPEC. */ ++#undef STARTFILE_PREFIX_SPEC ++#define STARTFILE_PREFIX_SPEC \ ++ "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/} \ ++ %{!m64: /usr/local/lib/ /lib/ /usr/lib/}" +--- a/src/gcc/config/i386/cs-linux.h ++++ b/src/gcc/config/i386/cs-linux.h +@@ -0,0 +1,41 @@ ++/* Sourcery G++ IA32 GNU/Linux Configuration. ++ Copyright (C) 2007 ++ 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 configuration may be used either with the system glibc (in ++ system32 and system64 subdirectories) or with the included glibc ++ (in the sgxx-glibc subdirectory). */ ++ ++#undef SYSROOT_SUFFIX_SPEC ++#define SYSROOT_SUFFIX_SPEC \ ++ "%{msgxx-glibc:/sgxx-glibc ; \ ++ m64:/system64 ; \ ++ mrhel3:/system64 ; \ ++ mrh73:/system32-old ; \ ++ :/system32}" ++ ++#undef SYSROOT_HEADERS_SUFFIX_SPEC ++#define SYSROOT_HEADERS_SUFFIX_SPEC SYSROOT_SUFFIX_SPEC ++ ++/* See mips/wrs-linux.h for details on this use of ++ STARTFILE_PREFIX_SPEC. */ ++#undef STARTFILE_PREFIX_SPEC ++#define STARTFILE_PREFIX_SPEC \ ++ "%{m64: /usr/local/lib64/ /lib64/ /usr/lib64/} \ ++ %{!m64: /usr/local/lib/ /lib/ /usr/lib/}" +--- a/src/gcc/config/i386/cs-linux.opt ++++ b/src/gcc/config/i386/cs-linux.opt +@@ -0,0 +1,11 @@ ++; Additional options for Sourcery G++. ++ ++mrh73 ++Target Undocumented ++ ++mrhel3 ++Target Undocumented ++ ++msgxx-glibc ++Target ++Use included version of GLIBC +--- a/src/gcc/config/i386/cygming.h ++++ b/src/gcc/config/i386/cygming.h +@@ -34,7 +34,7 @@ + #endif + + #undef TARGET_64BIT_MS_ABI +-#define TARGET_64BIT_MS_ABI (!cfun ? DEFAULT_ABI == MS_ABI : TARGET_64BIT && cfun->machine->call_abi == MS_ABI) ++#define TARGET_64BIT_MS_ABI (!cfun ? ix86_abi == MS_ABI : TARGET_64BIT && cfun->machine->call_abi == MS_ABI) + + #undef DEFAULT_ABI + #define DEFAULT_ABI (TARGET_64BIT ? MS_ABI : SYSV_ABI) +@@ -202,7 +202,7 @@ + #define CHECK_STACK_LIMIT 4000 + + #undef STACK_BOUNDARY +-#define STACK_BOUNDARY (DEFAULT_ABI == MS_ABI ? 128 : BITS_PER_WORD) ++#define STACK_BOUNDARY (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. +--- a/src/gcc/config/i386/cygming.opt ++++ b/src/gcc/config/i386/cygming.opt +@@ -45,3 +45,7 @@ + mwindows + Target + Create GUI application ++ ++mpe-aligned-commons ++Target Var(use_pe_aligned_common) Init(HAVE_GAS_ALIGNED_COMM) ++Use the GNU extension to the PE format for aligned common data +--- a/src/gcc/config/i386/driver-i386.c ++++ b/src/gcc/config/i386/driver-i386.c +@@ -378,7 +378,7 @@ + /* Extended features */ + unsigned int has_lahf_lm = 0, has_sse4a = 0; + unsigned int has_longmode = 0, has_3dnowp = 0, has_3dnow = 0; +- unsigned int has_sse4_1 = 0, has_sse4_2 = 0; ++ unsigned int has_movbe = 0, has_sse4_1 = 0, has_sse4_2 = 0; + unsigned int has_popcnt = 0, has_aes = 0, has_avx = 0; + unsigned int has_pclmul = 0; + +@@ -398,9 +398,22 @@ + + __cpuid (1, eax, ebx, ecx, edx); + +- /* We don't care for extended family. */ + model = (eax >> 4) & 0x0f; + family = (eax >> 8) & 0x0f; ++ if (vendor == SIG_INTEL) ++ { ++ unsigned int extended_model, extended_family; ++ ++ extended_model = (eax >> 12) & 0xf0; ++ extended_family = (eax >> 20) & 0xff; ++ if (family == 0x0f) ++ { ++ family += extended_family; ++ model += extended_model; ++ } ++ else if (family == 0x06) ++ model += extended_model; ++ } + + has_sse3 = ecx & bit_SSE3; + has_ssse3 = ecx & bit_SSSE3; +@@ -408,6 +421,7 @@ + has_sse4_2 = ecx & bit_SSE4_2; + has_avx = ecx & bit_AVX; + has_cmpxchg16b = ecx & bit_CMPXCHG16B; ++ has_movbe = ecx & bit_MOVBE; + has_popcnt = ecx & bit_POPCNT; + has_aes = ecx & bit_AES; + has_pclmul = ecx & bit_PCLMUL; +@@ -505,8 +519,8 @@ + break; + case PROCESSOR_PENTIUMPRO: + if (has_longmode) +- /* It is Core 2 Duo. */ +- cpu = "core2"; ++ /* It is Core 2 or Atom. */ ++ cpu = (model == 28) ? "atom" : "core2"; + else if (arch) + { + if (has_sse3) +@@ -597,6 +611,8 @@ + options = concat (options, "-mcx16 ", NULL); + if (has_lahf_lm) + options = concat (options, "-msahf ", NULL); ++ if (has_movbe) ++ options = concat (options, "-mmovbe ", NULL); + if (has_aes) + options = concat (options, "-maes ", NULL); + if (has_pclmul) +--- a/src/gcc/config/i386/gthr-win32.c ++++ b/src/gcc/config/i386/gthr-win32.c +@@ -32,7 +32,9 @@ + # define __GTHREAD_HIDE_WIN32API 1 + #endif + #undef __GTHREAD_I486_INLINE_LOCK_PRIMITIVES ++#ifdef __i386__ + #define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES ++#endif + #include + + /* Windows32 threads specific definitions. The windows32 threading model +@@ -70,7 +72,11 @@ + __gthr_win32_once (__gthread_once_t *once, void (*func) (void)) + { + if (once == NULL || func == NULL) ++#ifdef __MINGW32CE__ ++ return -1; ++#else + return EINVAL; ++#endif + + if (! once->done) + { +--- a/src/gcc/config/i386/i386-c.c ++++ b/src/gcc/config/i386/i386-c.c +@@ -119,6 +119,10 @@ + def_or_undef (parse_in, "__core2"); + def_or_undef (parse_in, "__core2__"); + break; ++ case PROCESSOR_ATOM: ++ def_or_undef (parse_in, "__atom"); ++ def_or_undef (parse_in, "__atom__"); ++ break; + /* use PROCESSOR_max to not set/unset the arch macro. */ + case PROCESSOR_max: + break; +@@ -187,6 +191,9 @@ + case PROCESSOR_CORE2: + def_or_undef (parse_in, "__tune_core2__"); + break; ++ case PROCESSOR_ATOM: ++ def_or_undef (parse_in, "__tune_atom__"); ++ break; + case PROCESSOR_GENERIC32: + case PROCESSOR_GENERIC64: + break; +--- a/src/gcc/config/i386/i386-protos.h ++++ b/src/gcc/config/i386/i386-protos.h +@@ -86,6 +86,9 @@ + extern void ix86_expand_binary_operator (enum rtx_code, + enum machine_mode, rtx[]); + extern int ix86_binary_operator_ok (enum rtx_code, enum machine_mode, rtx[]); ++extern bool ix86_lea_for_add_ok (enum rtx_code, rtx, rtx[]); ++extern bool ix86_dep_by_shift_count (const_rtx set_insn, const_rtx use_insn); ++extern bool ix86_agi_dependent (rtx set_insn, rtx use_insn); + extern void ix86_expand_unary_operator (enum rtx_code, enum machine_mode, + rtx[]); + extern rtx ix86_build_const_vector (enum machine_mode, bool, rtx); +@@ -140,9 +143,8 @@ + extern bool ix86_solaris_return_in_memory (const_tree, const_tree); + extern rtx ix86_force_to_memory (enum machine_mode, rtx); + extern void ix86_free_from_memory (enum machine_mode); +-extern int ix86_cfun_abi (void); +-extern int ix86_function_abi (const_tree); +-extern int ix86_function_type_abi (const_tree); ++extern enum calling_abi ix86_cfun_abi (void); ++extern enum calling_abi ix86_function_type_abi (const_tree); + extern void ix86_call_abi_override (const_tree); + extern tree ix86_fn_abi_va_list (tree); + extern tree ix86_canonical_va_list_type (tree); +--- a/src/gcc/config/i386/i386.c ++++ b/src/gcc/config/i386/i386.c +@@ -1036,6 +1036,79 @@ + 1, /* cond_not_taken_branch_cost. */ + }; + ++static const ++struct processor_costs atom_cost = { ++ COSTS_N_INSNS (1), /* cost of an add instruction */ ++ COSTS_N_INSNS (1) + 1, /* cost of a lea instruction */ ++ COSTS_N_INSNS (1), /* variable shift costs */ ++ COSTS_N_INSNS (1), /* constant shift costs */ ++ {COSTS_N_INSNS (3), /* cost of starting multiply for QI */ ++ COSTS_N_INSNS (4), /* HI */ ++ COSTS_N_INSNS (3), /* SI */ ++ COSTS_N_INSNS (4), /* DI */ ++ COSTS_N_INSNS (2)}, /* other */ ++ 0, /* cost of multiply per each bit set */ ++ {COSTS_N_INSNS (18), /* cost of a divide/mod for QI */ ++ COSTS_N_INSNS (26), /* HI */ ++ COSTS_N_INSNS (42), /* SI */ ++ COSTS_N_INSNS (74), /* DI */ ++ COSTS_N_INSNS (74)}, /* other */ ++ COSTS_N_INSNS (1), /* cost of movsx */ ++ COSTS_N_INSNS (1), /* cost of movzx */ ++ 8, /* "large" insn */ ++ 17, /* MOVE_RATIO */ ++ 2, /* cost for loading QImode using movzbl */ ++ {4, 4, 4}, /* cost of loading integer registers ++ in QImode, HImode and SImode. ++ Relative to reg-reg move (2). */ ++ {4, 4, 4}, /* cost of storing integer registers */ ++ 4, /* cost of reg,reg fld/fst */ ++ {12, 12, 12}, /* cost of loading fp registers ++ in SFmode, DFmode and XFmode */ ++ {6, 6, 8}, /* cost of storing fp registers ++ in SFmode, DFmode and XFmode */ ++ 2, /* cost of moving MMX register */ ++ {8, 8}, /* cost of loading MMX registers ++ in SImode and DImode */ ++ {8, 8}, /* cost of storing MMX registers ++ in SImode and DImode */ ++ 2, /* cost of moving SSE register */ ++ {8, 8, 8}, /* cost of loading SSE registers ++ in SImode, DImode and TImode */ ++ {8, 8, 8}, /* cost of storing SSE registers ++ in SImode, DImode and TImode */ ++ 5, /* MMX or SSE register to integer */ ++ 32, /* size of l1 cache. */ ++ 256, /* size of l2 cache. */ ++ 64, /* size of prefetch block */ ++ 6, /* number of parallel prefetches */ ++ 3, /* Branch cost */ ++ COSTS_N_INSNS (8), /* cost of FADD and FSUB insns. */ ++ COSTS_N_INSNS (8), /* cost of FMUL instruction. */ ++ COSTS_N_INSNS (20), /* cost of FDIV instruction. */ ++ COSTS_N_INSNS (8), /* cost of FABS instruction. */ ++ COSTS_N_INSNS (8), /* cost of FCHS instruction. */ ++ COSTS_N_INSNS (40), /* cost of FSQRT instruction. */ ++ {{libcall, {{11, loop}, {-1, rep_prefix_4_byte}}}, ++ {libcall, {{32, loop}, {64, rep_prefix_4_byte}, ++ {8192, rep_prefix_8_byte}, {-1, libcall}}}}, ++ {{libcall, {{8, loop}, {15, unrolled_loop}, ++ {2048, rep_prefix_4_byte}, {-1, libcall}}}, ++ {libcall, {{24, loop}, {32, unrolled_loop}, ++ {8192, rep_prefix_8_byte}, {-1, libcall}}}}, ++ 1, /* scalar_stmt_cost. */ ++ 1, /* scalar load_cost. */ ++ 1, /* scalar_store_cost. */ ++ 1, /* vec_stmt_cost. */ ++ 1, /* vec_to_scalar_cost. */ ++ 1, /* scalar_to_vec_cost. */ ++ 1, /* vec_align_load_cost. */ ++ 2, /* vec_unalign_load_cost. */ ++ 1, /* vec_store_cost. */ ++ 3, /* cond_taken_branch_cost. */ ++ 1, /* cond_not_taken_branch_cost. */ ++}; ++ + /* Generic64 should produce code tuned for Nocona and K8. */ + static const + struct processor_costs generic64_cost = { +@@ -1194,6 +1267,7 @@ + #define m_PENT4 (1<