--- gcc-4.4-4.4.5.orig/debian/rules.source +++ gcc-4.4-4.4.5/debian/rules.source @@ -0,0 +1,15 @@ +SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(SOURCE_DIR)/patches + +include $(SOURCE_DIR)/debian/rules.defs +include $(SOURCE_DIR)/debian/rules.patch +include $(SOURCE_DIR)/debian/rules.unpack + +patch-source: $(patch_stamp) + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gpc_srcdir) p $(gdc_srcdir) d + rm -rf bin + rm -rf $(srcdir) + --- gcc-4.4-4.4.5.orig/debian/README.libstdc++-baseline.in +++ gcc-4.4-4.4.5/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.5.orig/debian/FAQ.gcj +++ gcc-4.4-4.4.5/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.5.orig/debian/control.m4 +++ gcc-4.4-4.4.5/debian/control.m4 @@ -0,0 +1,1812 @@ +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 +', regexp(SRCNAME, `gdc'),0,`dnl +Uploaders: Iain Buclaw , Arthur Loiret +', regexp(SRCNAME, `gpc'),0,`dnl +Uploaders: Matthias Klose +', `dnl +Uploaders: Matthias Klose , Arthur Loiret +')dnl SRCNAME +Standards-Version: 3.9.1 +ifdef(`TARGET',`dnl cross +Build-Depends: dpkg-dev (>= 1.14.15), 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 libmpfr-dev (>= 2.3.0), 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-dev (>= 1.14.15), debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 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), libmpfr-dev (>= 2.3.0), 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 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} +Description: 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: 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: 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} +Description: 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 +'))`'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 +'))`'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') +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') +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 +')`'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: The 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: The 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}), libgmp3-dev, ${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: The 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: The 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: The GNU C compiler (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: The 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: The 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(`MULTIARCH', `Multi-Arch: same +')`'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(`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 +')`'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 +'))`'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: The 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: The 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: The 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: The 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 +'))`'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: The 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: The 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 +'))`'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 +')`'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) +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) +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) +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) +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) +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 +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 +'))`'dnl +Conflicts: scim (<< 1.4.2-1) +Description: The 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: The 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: The 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: The 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: The 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: The 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: The 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: The 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: The 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: The 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: The 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: The 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) +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: The 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 +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 +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}) +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 +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 +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}) +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 +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 +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: The 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 +Description: The D compiler + This is the D compiler, which compiles D on platforms supported by the gcc + compiler. It uses the GCC backend to generate optimised code. +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: The 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: The 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: The 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, automake1.9, 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.5.orig/debian/lib64stdc++6.symbols.i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/NEWS.gcc +++ gcc-4.4-4.4.5/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.5.orig/debian/g++-BV-spu.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/gnat-BV-doc.doc-base.style +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.16 +++ gcc-4.4-4.4.5/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.5.orig/debian/dummy-man.1 +++ gcc-4.4-4.4.5/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.5.orig/debian/README.cross +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-dummy.texi +++ gcc-4.4-4.4.5/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.5.orig/debian/gfortran-BV-doc.doc-base +++ gcc-4.4-4.4.5/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.5.orig/debian/rules.unpack +++ gcc-4.4-4.4.5/debian/rules.unpack @@ -0,0 +1,277 @@ +# -*- makefile -*- +# rules to unpack the source tarballs in $(srcdir); if the source dir already +# exists, the rule exits with an error to prevent deletion of modified +# source files. It has to be deleted manually. + +tarballs = $(gcc_tarball) # $(gcj_tarball) +ifeq ($(with_pascal),yes) + tarballs += $(gpc_tarball) +endif +ifeq ($(with_d),yes) + tarballs += $(gdc_tarball) +endif + +unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i)) + +unpack: stamp-dir $(unpack_stamp) debian-chmod +$(unpack_stamp): $(unpack_stamps) +$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p)) + echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \ + > pxxx + echo -e "Integrated upstream packages in this version:\n" >> pxxx + for i in $(tarballs); do echo " $$i" >> pxxx; done + mv -f pxxx $@ + +debian-chmod: + @chmod 755 debian/dh_* + +# --------------------------------------------------------------------------- + +gfdl_texinfo_files = \ + gcc/doc/arm-neon-intrinsics.texi \ + gcc/doc/bugreport.texi \ + gcc/doc/c-tree.texi \ + gcc/doc/cfg.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cpp.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcov.texi \ + gcc/doc/generic.texi \ + gcc/doc/gimple.texi \ + gcc/doc/gnu.texi \ + gcc/doc/gty.texi \ + gcc/doc/headerdirs.texi \ + gcc/doc/hostconfig.texi \ + gcc/doc/implement-c.texi \ + gcc/doc/install-old.texi \ + gcc/doc/install.texi \ + gcc/doc/interface.texi \ + gcc/doc/invoke.texi \ + gcc/doc/languages.texi \ + gcc/doc/libgcc.texi \ + gcc/doc/loop.texi \ + gcc/doc/makefile.texi \ + gcc/doc/md.texi \ + gcc/doc/objc.texi \ + gcc/doc/options.texi \ + gcc/doc/passes.texi \ + gcc/doc/plugins.texi \ + gcc/doc/portability.texi \ + gcc/doc/rtl.texi \ + gcc/doc/service.texi \ + gcc/doc/sourcebuild.texi \ + gcc/doc/standards.texi \ + gcc/doc/tm.texi \ + gcc/doc/tree-ssa.texi \ + gcc/doc/trouble.texi \ + gcc/doc/include/gcc-common.texi \ + gcc/doc/include/funding.texi \ + gcc/fortran/gfc-internals.texi \ + gcc/fortran/invoke.texi \ + gcc/fortran/intrinsic.texi \ + + +gfdl_toplevel_texinfo_files = \ + gcc/doc/gcc.texi \ + gcc/java/gcj.texi \ + gcc/ada/gnat-style.texi \ + gcc/ada/gnat_rm.texi \ + gcc/ada/gnat_ugn.texi \ + gcc/fortran/gfortran.texi \ + libgomp/libgomp.texi \ + +gfdl_manpages = \ + gcc/doc/cpp.1 \ + gcc/doc/g++.1 \ + gcc/doc/gc-analyze.1 \ + gcc/doc/gcc.1 \ + gcc/doc/gcj.1 \ + gcc/doc/gcj-dbtool.1 \ + gcc/doc/gcjh.1 \ + gcc/doc/gcov.1 \ + gcc/doc/gfortran.1 \ + gcc/doc/gij.1 \ + gcc/doc/grmic.1 \ + gcc/doc/grmiregistry.1 \ + gcc/doc/jcf-dump.1 \ + gcc/doc/jv-convert.1 \ + gcc/doc/fsf-funding.7 \ + +# --------------------------------------------------------------------------- +$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath) + : # unpack gcc tarball + -mkdir $(stampdir) + if [ -d $(srcdir) ]; then \ + echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \ + false; \ + fi + rm -rf $(gcc_srcdir) + case $(gcc_tarball) in \ + *.bz2) tar -x --bzip2 -f $(gcc_tarpath);; \ + *.gz) tar -x --gzip -f $(gcc_tarpath);; \ + *.lzma) lzcat $(gcc_tarpath) | tar -x -f -;; \ + *.xz) xzcat $(gcc_tarpath) | tar -x -f -;; \ + *) false; \ + esac + mv $(gcc_srcdir) $(srcdir) +ifneq (,$(wildcard java-class-files.tar.xz.uue)) +# work around #533356 +# uudecode -o - java-class-files.tar.xz.uue | tar -C src -xvz + uudecode java-class-files.tar.xz.uue + xzcat java-class-files.tar.xz | tar -C src -xv -f - + rm -f java-class-files.tar.xz +endif +#ifeq ($(with_java),yes) +# tar -x -C $(srcdir)/libjava/testsuite/libmauve.exp \ +# $(wildcard /usr/src/mauve*.tar.*) +#endif +ifeq (0,1) + cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ + $(gfdl_texinfo_files) \ + $(gfdl_toplevel_texinfo_files) \ + $(gfdl_manpages) +endif +ifeq ($(GFDL_INVARIANT_FREE),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + rm -f $(srcdir)/gcc/doc/*.1 + rm -f $(srcdir)/gcc/doc/fsf-funding.7 + rm -f $(srcdir)/gcc/doc/*.info + rm -f $(srcdir)/gcc/fortran/*.info + rm -f $(srcdir)/libgomp/*.info + rm -f $(srcdir)/gcc/java/*.1 + rm -f $(srcdir)/gcc/java/*.info + touch $(srcdir)/gcc/doc/plugins.texi + for i in $(gfdl_texinfo_files); do \ + if [ -f $(srcdir)/$$i ]; then \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_manpages); do \ + touch $(srcdir)/$$i; \ + done + rm -f $(srcdir)/INSTALL/*.html + endif +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +ifneq (,$(gcj_tarball)) +$(unpack_stamp)-$(gcj_tarball): $(gcj_tarpath) $(unpack_stamp)-$(gcc_tarball) + : # unpack gcj tarball + rm -rf $(srcdir)/gcc/java $(srcdir)/libjava + tar -x -C $(srcdir) -f $(gcj_tarpath) +ifeq ($(GFDL_INVARIANT_FREE),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + rm -f $(srcdir)/gcc/java/*.1 + rm -f $(srcdir)/gcc/java/*.info + for i in $(gfdl_texinfo_files); do \ + if [ -f $(srcdir)/$$i ]; then \ + cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + if [ -f $(srcdir)/$$i ]; then \ + sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ + > $(srcdir)/$$i; \ + else \ + echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ + fi; \ + done + endif +endif + echo "$(gcj_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(gpc_tarball)) +$(unpack_stamp)-$(gpc_tarball): $(gpc_tarpath) + : # unpack gpc tarball + -mkdir $(stampdir) + if [ -d $(srcdir)/gcc/p ]; then \ + echo >&2 "Source directory $(srcdir)/gcc/p exists. Delete by hand";\ + false; \ + fi + #rm -rf $(gpc_srcdir) + rm -rf p + case $(gpc_tarball) in \ + *.bz2) tar -x --bzip2 -f $(gpc_tarpath);; \ + *.gz) tar -x --gzip -f $(gpc_tarpath);; \ + *.lzma) lzcat $(gpc_tarpath) | tar -x -f -;; \ + *.xz) xzcat $(gpc_tarpath) | tar -x -f -;; \ + *) false; \ + esac + if [ -d p ]; then \ + mv p $(srcdir)/gcc/. ; \ + else \ + mv $(gpc_srcdir)/p $(srcdir)/gcc/. ; \ + rm -rf $(gpc_srcdir)/CVS; \ + rmdir $(gpc_srcdir); \ + fi + echo "$(gpc_tarball) unpacked." > $@ +endif + +# --------------------------------------------------------------------------- +ifneq (,$(gdc_tarball)) +$(unpack_stamp)-$(gdc_tarball): $(gdc_tarpath) + : # unpack gdc tarball + -mkdir $(stampdir) + if [ -d $(srcdir)/gcc/d ]; then \ + echo >&2 "Source directory $(srcdir)/gcc/d exists. Delete by hand";\ + false; \ + fi + #rm -rf $(gdc_srcdir) + rm -rf d + case $(gdc_tarball) in \ + *.bz2) tar -x --bzip2 -f $(gdc_tarpath);; \ + *.gz) tar -x --gzip -f $(gdc_tarpath);; \ + *.lzma) lzcat $(gdc_tarpath) | tar -x -f -;; \ + *.xz) xzcat $(gdc_tarpath) | tar -x -f -;; \ + *) false; \ + esac + if [ -d d ]; then \ + mv d $(srcdir)/gcc/. ; \ + else \ + mv $(gdc_srcdir)/d $(srcdir)/gcc/. ; \ + rm -rf $(gdc_srcdir)/CVS; \ + rmdir $(gdc_srcdir); \ + fi + [ -d $(srcdir)/libphobos ] && rm -rf $(srcdir)/libphobos || true +ifeq ($(with_libphobos),yes) + mkdir $(srcdir)/libphobos && \ + cd $(srcdir)/libphobos && \ + ../symlink-tree ../gcc/d/phobos$(libphobos_version) 2>&1 && \ + cd $(srcdir) +endif + [ -e $(srcdir)/gcc/d/d-make-include ] && rm -f $(srcdir)/gcc/d/d-make-include || true +ifeq ($(libphobos_version),2) + echo "D_LANGUAGE_VERSION=2" > $(srcdir)/gcc/d/d-make-include +else + echo "D_LANGUAGE_VERSION=1" > $(srcdir)/gcc/d/d-make-include +endif + echo "$(gdc_tarball) unpacked." > $@ +endif --- gcc-4.4-4.4.5.orig/debian/libgomp1.symbols.common +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gcc1.symbols.i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32gcc1.preinst +++ gcc-4.4-4.4.5/debian/lib32gcc1.preinst @@ -0,0 +1,8 @@ +#! /bin/sh -e + +if [ ! -h /usr/lib32 -a -d /usr/lib32 -a -d /emul/ia32-linux/usr/lib ]; then + rm -rf /usr/lib32 + ln -s /emul/ia32-linux/usr/lib /usr/lib32 +fi + +#DEBHELPER# --- gcc-4.4-4.4.5.orig/debian/libgnatprjBV.overrides +++ gcc-4.4-4.4.5/debian/libgnatprjBV.overrides @@ -0,0 +1 @@ +libgnatprj@BV@: missing-dependency-on-libc --- gcc-4.4-4.4.5.orig/debian/libgcj-common.preinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.hurd-i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-snapshot.prerm +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-BV-jdk.doc-base +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-spu.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/libobjc2.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/rules +++ gcc-4.4-4.4.5/debian/rules @@ -0,0 +1,107 @@ +#! /usr/bin/make -f +# -*- makefile -*- +# Build rules for gcc (>= 2.95) and gcc-snapshot +# Targets found in this makefile: +# - unpack tarballs +# - patch sources +# - (re)create the control file +# - create a debian/rules.parameters file, which is included +# by debian/rules2 +# All other targets are passed to the debian/rules2 file + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES + +default: build + +include debian/rules.defs +include debian/rules.unpack +include debian/rules.patch + +control: $(control_dependencies) + -mkdir -p $(stampdir) + $(MAKE) -f debian/rules.conf $@ + +configure: $(configure_dependencies) +$(configure_stamp): control $(unpack_stamp) $(patch_stamp) + $(MAKE) -f debian/rules2 $@ +$(configure_dummy_stamp): control + $(MAKE) -f debian/rules2 $@ +$(configure_hppa64_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ +$(configure_neon_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ +$(configure_spu_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +pre-build: +#ifneq (,$(filter $(DEB_TARGET_ARCH),ia64 powerpc sparc)) +# @echo explicitely fail the build for $(DEB_TARGET_ARCH) +# false +#endif + +build: pre-build $(build_dependencies) +$(build_stamp): $(unpack_stamp) $(patch_stamp) $(configure_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_dummy_stamp): $(configure_dummy_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_javadoc_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_hppa64_stamp): $(configure_hppa64_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_neon_stamp): $(configure_neon_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_spu_stamp): $(configure_spu_stamp) + $(MAKE) -f debian/rules2 $@ + +check: $(check_stamp) +$(check_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +clean: + rm -rf $(stampdir) +# remove temporary dirs used for unpacking + rm -rf $(gcc_srcdir) $(gpc_srcdir) p $(gdc_srcdir) d + -$(MAKE) -f debian/rules2 $@ + rm -rf $(srcdir)* $(builddir)* debian/tmp* html + rm -f bootstrap-* first-move-stamp + rm -f autotools_files + rm -f debian/*.tmp + rm -f debian/soname-cache + find debian -name '.#*' | xargs -r rm -f + rm -f $(series_file)* + dh_clean + +install: $(install_dependencies) +$(install_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ +$(install_snap_stamp): $(build_stamp) + $(MAKE) -f debian/rules2 $@ +$(install_dummy_stamp): $(build_dummy_stamp) + $(MAKE) -f debian/rules2 $@ +$(install_hppa64_stamp): $(build_hppa64_stamp) + $(MAKE) -f debian/rules2 $@ +$(install_neon_stamp): $(build_neon_stamp) + $(MAKE) -f debian/rules2 $@ +$(install_spu_stamp): $(build_spu_stamp) + $(MAKE) -f debian/rules2 $@ + +html-docs doxygen-docs update-doxygen-docs update-ada-files xxx: + $(MAKE) -f debian/rules2 $@ + +binary-indep binary-arch binary: install + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.PHONY: build clean binary-indep binary-arch binary release --- gcc-4.4-4.4.5.orig/debian/libgcjGCJ-dev.overrides +++ gcc-4.4-4.4.5/debian/libgcjGCJ-dev.overrides @@ -0,0 +1 @@ +libgcj@GCJ@-dev binary: library-not-linked-against-libc --- gcc-4.4-4.4.5.orig/debian/g++-BV-CRB.postinst.in +++ gcc-4.4-4.4.5/debian/g++-BV-CRB.postinst.in @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + update-alternatives --quiet \ + --install /usr/bin/@TARGET@-g++ @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ @gcc_priority@ \ + @GFDL@--slave /usr/share/man/man1/@TARGET@-g++.1.gz @TARGET@-g++.1.gz /usr/share/man/man1/@TARGET@-g++-@BV@.1.gz +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/lib32gcc1.symbols.amd64 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gfortran3.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-4.4-4.4.5/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.5.orig/debian/gpc-BV-doc.doc-base.gpcs +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.ia64 +++ gcc-4.4-4.4.5/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.5.orig/debian/rename-pkgs.sh +++ gcc-4.4-4.4.5/debian/rename-pkgs.sh @@ -0,0 +1,32 @@ +#! /bin/bash + +rename_pkg() +{ + src=$1 + dest=$2 + for ext in preinst postinst prerm postrm doc-base; do + if [ -f $src.$ext ]; then + if [ -f $dest.ext ]; then + echo already exists: $dest.$ext + else + echo "$src.$ext --> $dest.$ext" + svn rename $src.$ext $dest.$ext + #mv $src.$ext $dest.$ext + fi + fi + done +} + +v_new=3.4 +v_old=3.3 + +for p in chill cpp gcc g++ g77 gpc gij gcj gobjc protoize treelang; do + rename_pkg $p-$v_old $p-$v_new +done + +for p in cpp gcc g77 gnat; do + rename_pkg $p-$v_old-doc $p-$v_new-doc +done + +rename_pkg gcc-$v_old-base gcc-$v_new-base +rename_pkg gcc-$v_old-sparc64 gcc-$v_new-sparc64 --- gcc-4.4-4.4.5.orig/debian/jdb.sh +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-BV-jre-headless.postrm +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.ldbl.64bit +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.mipsel +++ gcc-4.4-4.4.5/debian/libgfortran3.symbols.mipsel @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.4-4.4.5.orig/debian/libgomp1.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/libmudflapMF.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/acats-killer.sh +++ gcc-4.4-4.4.5/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.5.orig/debian/libmudflap.copyright +++ gcc-4.4-4.4.5/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.5.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.amd64 +++ gcc-4.4-4.4.5/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.5.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32stdc++CXX.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/rules.defs +++ gcc-4.4-4.4.5/debian/rules.defs @@ -0,0 +1,1287 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +# common vars +SHELL = /bin/bash -e # brace expansion used in rules file +PWD := $(shell pwd) +srcdir = $(PWD)/src +builddir = $(PWD)/build +stampdir = stamps + +distribution := $(shell lsb_release -is) +distrelease := $(shell lsb_release -cs) + +# On non official archives, "lsb_release -cs" default to "n/a". Assume +# sid in that case +ifeq ($(distrelease),n/a) +distrelease := sid +endif + +# creates {srcdir,builddir}_{hppa64,ia6432,spu} +$(foreach x,srcdir builddir,$(foreach target,hppa64 ia6432 spu neon,$(eval \ + $(x)_$(target) := $($(x))-$(target)))) + +# for architecture dependent variables and changelog vars +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) +# for rules.sonames +vafilt_defined = 1 + +DPKG_VARS := $(shell dpkg-architecture) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ + sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') + +# the name of the source package +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +# those are required here too +SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) +DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ + sed -e 's/.*://' -e 's/ds[0-9]*//')) +# epoch used for gcc versions up to 3.3.x, now used for some remaining +# libraries: libgcc1, libobjc1 +EPOCH := 1 +DEB_EVERSION := $(EPOCH):$(DEB_VERSION) +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*-.*/\1/') + +ifneq (,$(findstring gdc,$(PKGSOURCE))) + BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/.*-\([1-9]\.[0-9]\).*-.*/\1/') +endif + +# push glibc stack traces into stderr +export LIBC_FATAL_STDERR_=1 + +# --------------------------------------------------------------------------- +# set target +# - GNU triplet via DEB_TARGET_GNU_TYPE +# - Debian arch in debian/target +# - Debian arch via DEB_GCC_TARGET or GCC_TARGET +# +# alias +ifdef GCC_TARGET + DEB_GCC_TARGET := $(GCC_TARGET) +endif +ifdef DEB_TARGET_GNU_TYPE + TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null) +else + # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested + # by toolchain-source maintainer + DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null))) + ifndef DEB_TARGET_ARCH + ifneq (,$(DEBIAN_TARGET_FILE)) + DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE) + else + ifdef DEB_GCC_TARGET + DEB_TARGET_ARCH := $(DEB_GCC_TARGET) + else + DEB_TARGET_ARCH := $(DEB_HOST_ARCH) + endif + endif + endif + TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null) +endif + +DEB_TARGET_ARCH ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH) +DEB_TARGET_ARCH_OS ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS) +DEB_TARGET_ARCH_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU) +DEB_TARGET_GNU_CPU ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU) +DEB_TARGET_GNU_TYPE ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE) +DEB_TARGET_GNU_SYSTEM ?= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM) + +ifeq ($(DEB_TARGET_ARCH),) + $(error Invalid architecure.) +endif + +ifeq ($(distribution)-$(DEB_TARGET_ARCH),Ubuntu-i386) + DEB_TARGET_GNU_CPU := i686 + DEB_TARGET_GNU_TYPE := i686-linux-gnu +endif +# including unversiond symlinks for binaries +#with_unversioned = yes + +# --------------------------------------------------------------------------- +# cross-compiler config +# - typical cross-compiler +# - reverse cross (built to run on the target) +# - full canadian +# - native +# +# build != host && host == target : reverse cross (REVERSE_CROSS == yes) +# build == host && host != target : typical cross (DEB_CROSS == yes) +# build != host && host != target : canadian (DEB_CROSS == yes) +# build == host && host == target : native +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + DEB_CROSS = yes + else + REVERSE_CROSS = yes + endif +else + ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + DEB_CROSS = yes + else + # first ones are squeeze+1 and maverick + ifeq (,$(filter $(distrelease),lenny etch squeeze sid dapper hardy jaunty karmic lucid)) + with_sysroot = / + endif + endif +endif + +# --------------------------------------------------------------------------- +# cross compiler support +ifeq ($(DEB_CROSS),yes) + # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name) + # TP: Target Prefix. Used primarily as a prefix for cross tool + # names (e.g. powerpc-linux-gcc). + # TS: Target Suffix. Used primarily at the end of cross compiler + # package names (e.g. gcc-powerpc). + # LS: Library Suffix. Used primarily at the end of cross compiler + # library package names (e.g. libgcc-powerpc-cross). + DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) + TARGET := $(DEB_TARGET_ARCH) + TP := $(subst _,-,$(DEB_TARGET_GNU_TYPE))- + TS := -$(subst _,-,$(DEB_TARGET_ALIAS)) + LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + + cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS)) + cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross + cmd_prefix := $(DEB_TARGET_GNU_TYPE)- + + TARGET_ALIAS := $(DEB_TARGET_ALIAS) + + lib_binaries := indep_binaries + cross_shlibdeps = $(SET_CROSS_LIB_PATH) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" +else + TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) + + ifeq ($(TARGET_ALIAS),i386-gnu) + TARGET_ALIAS := i586-gnu + endif + + cmd_prefix := + + #ifeq ($(TARGET_ALIAS),i486-linux-gnu) + # TARGET_ALIAS := i686-linux-gnu + #endif + + TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) + + # configure as linux-gnu, not linux + #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) + # TARGET_ALIAS := $(TARGET_ALIAS)-gnu + #endif + + # configure as linux, not linux-gnu + #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) + + lib_binaries := arch_binaries + cross_shlibdeps := +endif + +printarch: + @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) + @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) + @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) + @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) + @echo TARGET_ALIAS: $(TARGET_ALIAS) + @echo TP: $(TP) + @echo TS: $(TS) + +# ------------------------------------------------------------------- +# bootstrap options +ifdef WITH_BOOTSTRAP + # "yes" is the default and causes a 3-stage bootstrap. + # "no" means to just build the first stage, and not create the stage1 + # directory. + # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no + # longer needed. + with_bootstrap = $(WITH_BOOTSTRAP) +endif + +# ------------------------------------------------------------------- +# stage options +ifdef DEB_STAGE + with_cdev := yes + separate_lang := yes + # "stage1" is minimal compiler with static libgcc + # "stage2" is minimal compiler with shared libgcc + ifeq ($(DEB_STAGE),stage1) + with_shared_libgcc := no + endif + ifeq ($(DEB_STAGE),stage2) + with_libgcc := yes + with_shared_libgcc := yes + endif +endif + +# ------------------------------------------------------------------- +# sysroot options +ifdef WITH_SYSROOT + with_sysroot = $(WITH_SYSROOT) +endif +ifdef WITH_BUILD_SYSROOT + with_build_sysroot = $(WITH_BUILD_SYSROOT) +endif + +# ------------------------------------------------------------------- +# for components configuration + +COMMA = , +SPACE = $(EMPTY) $(EMPTY) + +# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG + +DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) +DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) +DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) +DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) +lfilt = $(strip $(if $(DEB_LANG), \ + $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) +nlfilt = $(strip $(if $(DEB_NOLANG), \ + $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) +wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ + disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) +envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) + +# ------------------------------------------------------------------- +# architecture specific config + +# FIXME: libjava is not ported for thumb, this hack only works for +# separate gcj builds +ifeq (,$(findstring gcj,$(PKGSOURCE))) + ifeq ($(distribution),Ubuntu) + with_arm_thumb := yes + endif +endif + +ifeq ($(distribution),Ubuntu) + ifeq (,$(findstring gnat, $(PKGSOURCE))) + ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 armel i386 powerpc)) + with_linaro_branch = yes + endif + endif +endif + +# ------------------------------------------------------------------- +# basic config + +# common things --------------- +# build common packages, where package names don't differ in different +# gcc versions (protoize, fixincludes, libgcj-common) ... +with_common_pkgs := yes +# ... and some libraries, which do not change (libgcc1, libmudflap, libssp0). +with_common_libs := yes +# XXX: should with_common_libs be "yes" only if this is the default compiler +# version on the targeted arch? +ifeq (,$(filter $(distrelease),lenny etch squeeze sid dapper hardy jaunty karmic lucid)) +#ifeq (,$(filter $(distrelease),lenny etch dapper hardy jaunty karmic lucid)) + with_common_pkgs := no + with_common_libs := no +endif +#ifneq (,$(filter $(distrelease),squeeze sid)) +# ifneq (,$(filter $(DEB_TARGET_ARCH),amd64 i386)) +# with_common_pkgs := no +# with_common_libs := no +# endif +# keep_in_control := yes +#endif + +ifneq ($(DEB_STAGE),stage1) + # build a -base package. + ifneq ($(DEB_CROSS),yes) + with_gccbase := yes + else + with_gccxbase := yes + endif +endif + +# build dev packages. +with_dev := yes + +with_cpp := yes + +# set lang when built from a different source package. +separate_lang := no + +ifneq ($(PKGSOURCE),gcc-snapshot) + # --program-suffix=-$(BASE_VERSION) + versioned_packages := yes + ifneq ($(DEB_CROSS),yes) + with_common_gcclibdir := yes + endif +else + # for control.in + gcc_snapshot := yes +endif + +#no_dummy_cpus := ia64 i386 hppa s390 sparc +#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) +# with_base_only := no +# with_common_libs := yes +# with_common_pkgs := yes +#else +# with_base_only := yes +# with_common_libs := no +# with_common_pkgs := no +# with_dev := no +#endif + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) + PV := $(pkg_ver) +endif + +# ------------------------------------------------------------------- +# configure languages + +# C --------------------------- +enabled_languages := c + +# Build all packages needed for C development +ifneq ($(with_base_only),yes) + ifeq ($(with_dev),yes) + with_cdev := yes + endif +endif + +ifndef DEB_STAGE +# Ada -------------------- +ada_no_cpus := m32r m68k sh3 sh3eb sh4 sh4eb +ada_no_systems := gnu knetbsd-gnu +ada_no_cross := yes +ada_no_snap := no + +ifeq ($(with_dev),yes) + ifneq ($(separate_lang),yes) + with_ada := yes + endif +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) + with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) + with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes) + with_ada := disabled for cross compiler package +endif +ifeq ($(ada_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_ada := disabled for snapshot build +endif +with_ada := $(call envfilt, ada, , , $(with_ada)) + +ifneq ($(PKGSOURCE),gcc-snapshot) + with_separate_gnat := yes +endif +ifeq ($(with_ada)-$(with_separate_gnat),yes-yes) + ifneq (,$(findstring gnat,$(PKGSOURCE))) + languages := c + separate_lang := yes + else + debian_extra_langs += ada + with_ada := built from separate source + with_libgnat := built from separate source + endif +endif + +ifeq ($(with_ada),yes) + enabled_languages += ada + with_libgnat := yes + # There are two exception handling mechanisms: ZCX (Zero-Cost + # eXceptions) and SJLJ (setjump/longjump), selected and supported by + # libgnat. Thus we build both versions of libgnat on architectures + # that support both (see ada-sjlj.diff). Most cpus support both + # mechanisms; here, we declare the few that support only one. + libgnat_zcx_only_cpus := + libgnat_sjlj_only_cpus := arm armel + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_sjlj_only_cpus))) + with_gnat_zcx := no + else + with_gnat_zcx := yes + endif + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgnat_zcx_only_cpus))) + with_gnat_sjlj := no + else + with_gnat_sjlj := yes + endif + ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),no-no) + # TODO: support cpus that do not support exceptions at all, + # perhaps by building a restricted runtime library? For now, flag + # this as a packaging error. + $(error this target supports neither ZCX nor SJLJ) + endif +endif + +# Pascal ---------------------- +pascal_no_cross := yes +pascal_no_snap := yes + +ifneq ($(separate_lang),yes) + with_pascal := yes +endif +ifeq ($(pascal_no_cross)-$(DEB_CROSS),yes-yes) + with_pascal := diasbled for cross compiler package +endif +ifeq ($(pascal_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_pascal := disabled for snapshot build +endif +with_pascal := not yet ported to GCC 4.4 +with_pascal := $(call envfilt, pascal, , , $(with_pascal)) + +ifneq ($(PKGSOURCE),gcc-snapshot) + with_separate_gpc := yes +endif +ifeq ($(with_pascal)-$(with_separate_gpc),yes-yes) + ifneq (,$(findstring gpc,$(PKGSOURCE))) + languages := c + separate_lang := yes + else + debian_extra_langs += pascal + with_pascal := built from separate source + endif +endif + +ifneq ($(with_dev),yes) + with_pascal := no +endif + +ifeq ($(with_pascal),yes) + with_gpidump := yes + gpidump_no_cpus := mips mipsel + ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(gpidump_no_cpus))) + with_gpidump := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + pascal_version := 20030830 + enabled_languages += pascal +endif + +# C++ ------------------------- +cxx_no_cpus := avr +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_cxx := yes + endif +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus))) + with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +with_cxx := $(call envfilt, c++, obj-c++ java, , $(with_cxx)) + +# Build all packages needed for C++ development +ifeq ($(with_cxx),yes) + ifeq ($(with_dev),yes) + with_cxxdev := yes + with_libcxxdbg := yes + endif + ifeq ($(with_common_pkgs),yes) + with_libcxx := yes + endif + + # debugging versions of libstdc++ + ifeq ($(with_cxxdev),yes) + with_debug := yes + debug_no_cpus := + ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(debug_no_cpus))) + with_debug := disabled for cpu $(DEB_TARGET_GNU_CPU) + endif + endif + with_debug := $(call envfilt, debug, , , $(with_debug)) + + enabled_languages += c++ +endif + +# Java -------------------- +# - To build a standalone gcj package (with no corresponding gcc +# package): with_separate_libgcj=yes, with_standalone_gcj=yes +# - To build the java packages from the gcc source package: +# with_separate_libgcj=no, with_standalone_gcj=no +# - To build gcc and java from separate sources: +# with_separate_libgcj=yes, with_standalone_gcj=no + +java_no_cpus := # mips mipsel +java_no_systems := knetbsd-gnu +java_no_cross := yes + +ifneq ($(PKGSOURCE),gcc-snapshot) + with_separate_libgcj := yes +endif +with_standalone_gcj := no + +ifneq ($(separate_lang),yes) + with_java := yes +endif + +# java converted for V3 C++ ABI for some archs +ifeq ($(with_base_only),yes) + with_java := no +endif +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(java_no_cpus))) + with_java := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(java_no_systems))) + with_java := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(java_no_cross)-$(DEB_CROSS),yes-yes) + with_java := diasbled for cross compiler package +endif +with_java := $(call envfilt, java, , c++, $(with_java)) + +ifeq ($(with_java)-$(with_separate_libgcj),yes-yes) + ifneq (,$(findstring gcj, $(PKGSOURCE))) + languages := c c++ + separate_lang := yes + else + debian_extra_langs += java + with_java := built from separate source + with_gcj := built from separate source + with_libgcj := buit from separate source + endif +endif + +with_java_plugin := no + +ifeq ($(with_java),yes) + # use the same names as OpenJDK + java_cpu_map = armel=arm hppa=parisc i686=i386 i586=i386 i486=i386 mipsel=mips powerpc=ppc sh4=sh + java_cpu = $(patsubst $(DEB_TARGET_ARCH_CPU)=%,%, \ + $(filter $(DEB_TARGET_ARCH_CPU)=%,$(java_cpu_map))) + ifeq (,$(java_cpu)) + java_cpu = $(DEB_TARGET_ARCH_CPU) + endif + java_priority = 10$(subst .,,$(BASE_VERSION)) + + with_libgcj := yes + with_libgcjbc := no + + ifneq (,$(findstring gcj-4,$(PKGSOURCE))) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm)) + with_gcj_base_only := yes + endif + endif + + #ifneq (,$(filter $(DEB_TARGET_ARCH),hppa)) + # with_native_ecj := yes + #endif + + with_java_maintainer_mode := no + + # used as well in debian/rules.conf to determine the build deps + java_awt_peers = gtk # qt # xlib + + ifeq ($(with_common_libs),yes) + with_libgcj_doc := yes + endif + + # Build all packages needed for Java development (gcj, libgcj-dev) + ifeq ($(with_dev),yes) + with_javadev := yes + with_gcj := yes + endif + + with_java_alsa := yes + ifeq (,$(filter $(DEB_TARGET_GNU_SYSTEM),linux-gnu)) + with_java_alsa := no + endif + + enabled_languages += java +endif + +# D --------------------------- +d_no_cross := yes +d_no_snap := yes + +ifneq ($(PKGSOURCE),gcc-snapshot) + with_separate_gdc := yes +endif + +ifneq ($(separate_lang),yes) + with_d := yes +endif +ifeq ($(d_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_d := disabled for snapshot build +endif + +ifeq ($(with_d)-$(with_separate_gdc),yes-yes) + ifneq (,$(findstring gdc,$(PKGSOURCE))) + languages := c c++ + separate_lang := yes + else + debian_extra_langs += d + with_d := built from separate source + endif +endif + +ifeq ($(with_base_only),yes) + with_d := no +endif + +ifeq ($(with_d),yes) + # no suffix for D 1.0 + libphobos_version := + # still experimental + #libphobos_version := 2 + + with_libphobos := yes + + libphobos_no_cpus := + libphobos_no_systems := gnu + ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus))) + with_libphobos := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libphobos_no_systems))) + with_libphobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + + enabled_languages += d +endif + +# Fortran 95 ------------------- +fortran_no_cross := yes +fortran_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_fortran := yes + endif +endif +ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes) + with_fortran := diasbled for cross compiler package +endif +with_fortran := $(call envfilt, fortran, , , $(with_fortran)) + +# Build all packages needed for Fortran development +ifeq ($(with_fortran),yes) + ifeq ($(with_dev),yes) + with_fdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libgfortran := yes + endif + enabled_languages += fortran +endif + +# ObjC ------------------------ +objc_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objc := yes + endif +endif +ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes) + with_objc := diasbled for cross compiler package +endif +with_objc := $(call envfilt, objc, obj-c++, , $(with_objc)) + +ifeq ($(with_objc),yes) + # the ObjC runtime with garbage collection enabled needs the Boehm GC + with_objc_gc := yes + + # disable ObjC garbage collection library (needs libgc) + libgc_no_cpus := avr mips mipsel # alpha amd64 arm armel hppa i386 ia64 m68k mips mipsel powerpc s390 sparc + libgc_no_systems := knetbsd-gnu + ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) + with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU) + endif + ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libgc_no_systems))) + with_objc_gc := disabled for system $(DEB_TARGET_GNU_SYSTEM) + endif + + # Build all packages needed for Objective-C development + ifeq ($(with_dev),yes) + with_objcdev := yes + endif + ifeq ($(with_common_libs),yes) + with_libobjc := yes + endif + + enabled_languages += objc +endif + +# ObjC++ ---------------------- +objcxx_no_cross := no + +ifneq ($(with_base_only),yes) + ifneq ($(separate_lang),yes) + with_objcxx := yes + endif +endif +ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes) + with_objcxx := diasbled for cross compiler package +endif +with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx)) + +ifeq ($(with_objcxx),yes) + enabled_languages += obj-c++ +endif + +# ------------------------------------------------------------------- +# other config + +# not built from the main source package +ifeq (,$(findstring gcc,$(PKGSOURCE))) + extra_package := yes +endif + +# Don't include docs with GFDL invariant sections +GFDL_INVARIANT_FREE := yes +ifeq ($(distribution),Ubuntu) + GFDL_INVARIANT_FREE := no +endif + +with_nls := yes +ifeq ($(PKGSOURCE),gcc-snapshot) + with_nls := no +endif +with_nls := $(call envfilt, nls, , , $(with_nls)) + +# powerpc nof libraries ----- +with_libnof := no + +ifneq (,$(findstring gcc-4,$(PKGSOURCE))) + with_source := yes +endif +with_source := $(call envfilt, source, , , $(with_source)) + +# ssp & libssp ------------------------- +with_ssp := yes +ssp_no_archs = alpha hppa ia64 m68k mips mipsel +ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%))) + with_ssp := not available on $(DEB_TARGET_ARCH) +endif +with_ssp := $(call envfilt, ssp, , , $(with_ssp)) + +ifeq ($(with_ssp),yes) + ifneq ($(distribution),Debian) + ifneq (,$(findstring gcc-4, $(PKGSOURCE))) + with_ssp_default := yes + endif + endif +endif + +# mudflap ------------------- +with_mudflap := yes +with_mudflap := $(call envfilt, mudflap, , , $(with_mudflap)) + +# gomp -------------------- +with_gomp := yes +with_gomp := $(call envfilt, gomp, , , $(with_gomp)) + +endif # ifndef DEB_STAGE + +# gold -------------------- +gold_archs = amd64 armel i386 lpia powerpc sparc +gold_archs = amd64 i386 lpia +ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) + ifneq (,$(findstring snapshot,$(PKGSOURCE))$(findstring 4.5,$(PKGSOURCE))) + with_gold := yes + endif +endif + +# plugins -------------------- +ifneq (,$(findstring snapshot,$(PKGSOURCE))$(findstring 4.5,$(PKGSOURCE))) + with_plugins := yes +endif +with_plugins := no + +# ------------------------------------------------------------------- +# non-extra config +ifeq ($(extra_package),yes) + ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no) + # build stuff + with_mudflap := + + # package stuff + with_gccbase := no + with_cdev := no + with_cxx := no + with_cxxdev := no + endif +else + # libssp ------------------ + ifeq ($(with_ssp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h), \ + $(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) + #endif + endif + + # libmudflap -------------- + ifeq ($(with_mudflap)-$(with_common_libs),yes-yes) + with_libmudflap := yes + endif + + # libgomp ----------------- + ifeq ($(with_gomp)-$(with_common_libs),yes-yes) + #ifneq ($(DEB_CROSS),yes) + with_libgomp := yes + #endif + endif + + # protoize, fixincludes ------- + ifneq ($(DEB_CROSS),yes) + with_proto := yes + ifeq ($(with_common_pkgs),yes) + with_fixincl := yes + endif + endif + + # Shared libgcc -------------------- + ifeq ($(with_common_libs),yes) + with_libgcc := yes + with_shared_libgcc := yes + endif + + # libgcc-math -------------------- + with_libgmath := no + ifneq (,$(findstring i486,$(DEB_TARGET_ARCH))) + #with_libgccmath := yes + #with_lib64gmath := yes + #with_libgmathdev := yes + endif + ifeq ($(DEB_TARGET_ARCH),amd64) + #with_libgccmath := yes + #with_lib32gmath := yes + #with_libgmathdev := yes + endif + + # hppa64 build ---------------- + hppa64_no_snap := no + ifeq ($(DEB_TARGET_ARCH),hppa) + with_hppa64 := yes + endif + ifeq ($(hppa64_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_hppa64 := disabled for snapshot build + endif + with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64)) + + # ia6432 build ---------------- + ia6432_no_snap := no + ifeq ($(DEB_TARGET_ARCH),ia64) + ifneq ($(DEB_CROSS),yes) + with_ia6432 := yes + endif + endif + ifeq ($(ia6432_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_ia6432 := disabled for snapshot build + endif + with_ia6432 := disabled + with_ia6432 := $(call envfilt, ia6432, , , $(with_ia6432)) + + # spu build ------------------- + spu_no_snap := no + ifneq (,$(findstring $(DEB_TARGET_ARCH),powerpc ppc64)) + ifneq ($(DEB_CROSS),yes) + with_spu := yes + endif + endif + ifeq ($(spu_no_snap)-$(PKGSOURCE),yes-gcc-snapshot) + with_spu := disabled for snapshot build + endif + with_spu := $(call envfilt, spu, , , $(with_spu)) + + ifeq ($(with_spu),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + with_spucache := yes + with_spumea64 := yes + endif + endif + + # neon build ------------------- + # FIXME: build as a cross compiler to build on armv4 as well + ifneq (,$(findstring gcc-4, $(PKGSOURCE))) + ifeq ($(distribution),Ubuntu) +# neon_archs = armel +# ifneq (, $(filter $(DEB_TARGET_ARCH),$(neon_archs))) +# with_neon = yes +# endif + endif + endif +endif + +# run testsuite --------------- +with_check := yes +# if you don't want to run the gcc testsuite, uncomment the next line +#with_check := disabled by hand +ifeq ($(with_base_only),yes) + with_check := no +endif +ifeq ($(DEB_CROSS),yes) + with_check := disabled for cross compiler package +endif +ifeq ($(REVERSE_CROSS),yes) + with_check := disabled for reverse cross build +endif +check_no_cpus := m68k +check_no_systems := gnu +ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) + with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU) +endif +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) + with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-hppa) + ifneq ($(PKGSOURCE),gcc-snapshot) + with_check := disabled, testsuite timeouts with expect + endif +endif +ifneq (,$(findstring gdc,$(PKGSOURCE))) + with_check := disabled for D +endif +with_check := $(call envfilt, check, , , $(with_check)) +ifdef WITHOUT_CHECK + with_check := disabled by environment +endif +ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),) + with_check := disabled by DEB_BUILD_OPTIONS +endif + +# not a dependency on all archs, but if available, use it for the testsuite +ifneq (,$(wildcard /usr/bin/localedef)) + locale_data = generate +endif + +all_enabled_languages := $(enabled_languages) +languages_without_lang_opt := c++ objc obj-c++ proto + +debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs)) +export debian_extra_langs + +# multilib +ifeq (,$(filter $(distrelease),lenny etch squeeze sid dapper hardy jaunty karmic lucid)) + biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \ + x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el +else + biarch_map := i486=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \ + x86_64=i486 powerpc64=powerpc mips=mips64 mipsel=mips64el +endif +biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \ + $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map)))) + +biarch64 := no +biarch32 := no +biarchn32 := no +flavours := +define gen_biarch + ifneq (yes,$$(call envfilt, biarch, , ,yes)) + biarch$1archs := + endif + ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs))) + biarch$1 := yes + flavours += $1 + #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM) + biarch$1subdir = $1 + ifeq ($$(with_libgcc),yes) + with_lib$1gcc := yes + endif + ifeq ($$(with_libcxx),yes) + with_lib$1cxx := yes + endif + ifeq ($$(with_libcxxdbg),yes) + with_lib$1cxxdbg := yes + endif + ifeq ($$(with_libobjc),yes) + with_lib$1objc := yes + endif + ifeq ($$(with_libgfortran),yes) + with_lib$1gfortran := yes + endif + ifeq ($$(with_libmudflap),yes) + with_lib$1mudflap := yes + endif + ifeq ($$(with_libssp),yes) + with_lib$1ssp := yes + endif + ifeq ($$(with_libgomp),yes) + with_lib$1gomp:= yes + endif + + biarch_multidir_names = libiberty libgcc + ifneq (,$$(findstring gcc-, $$(PKGSOURCE))) + biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \ + libgomp libmudflap zlib + ifeq ($$(with_objc_gc),yes) + biarch_multidir_names += boehm-gc + endif + endif + export biarch_multidir_names + ifneq (,$$(findstring 32,$1)) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + TARGET32_MACHINE := $$(TARGET_ALIAS) + else + TARGET64_MACHINE := $$(TARGET_ALIAS) + TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ + $$(TARGET_ALIAS))) + endif + export TARGET32_MACHINE + export TARGET64_MACHINE + endif +endef +biarch32archs := /amd64/ppc64/kfreebsd-amd64/ +biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/ +biarchn32archs := /mips/mipsel/ +$(foreach x,32 64 n32,$(eval $(call gen_biarch,$(x)))) + +ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32))) + multilib := yes +endif + +multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs))) + +biarchsubdirs := \ + $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \ + $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \ + $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) +biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))} + +#ifeq ($(DEB_TARGET_ARCH),ia64) +# biarch32 := yes +#endif + +ifeq ($(PKGSOURCE),gcc-snapshot) + no_biarch_libs := yes +endif +ifdef DEB_CROSS_NO_BIARCH + no_biarch_libs := yes +endif +ifeq ($(with_d)-$(with_separate_gdc),yes-yes) + no_biarch_libs := yes +endif + +ifeq ($(no_biarch_libs),yes) + with_lib64gcc := no + with_lib64cxx := no + with_lib64cxxdbg := no + with_lib64objc := no + with_lib64ffi := no + with_lib64gcj := no + with_lib64gfortran := no + with_lib64mudflap := no + with_lib64ssp := no + with_lib64gomp := no + + with_lib32gcc := no + with_lib32cxx := no + with_lib32cxxdbg := no + with_lib32objc := no + with_lib32ffi := no + with_lib32gcj := no + with_lib32gfortran := no + with_lib32mudflap := no + with_lib32ssp := no + with_lib32gomp := no + + with_libn32gcc := no + with_libn32cxx := no + with_libn32cxxdbg := no + with_libn32objc := no + with_libn32ffi := no + with_libn32gcj := no + with_libn32gfortran := no + with_libn32mudflap := no + with_libn32ssp := no + with_libn32gomp := no + + ifeq ($(PKGSOURCE),gcc-snapshot) + #biarch64 := disabled for snapshot build + #biarch32 := disabled for snapshot build + #biarchn32 := disabled for snapshot build + with_java_plugin := no + endif + + ifdef DEB_CROSS_NO_BIARCH + biarch64 := disabled by DEB_CROSS_NO_BIARCH + biarch32 := disabled by DEB_CROSS_NO_BIARCH + biarchn32 := disabled by DEB_CROSS_NO_BIARCH + endif + + ifeq ($(with_d)-$(with_separate_gdc),yes-yes) + biarch64 := disabled for D + biarch32 := disabled for D + biarchn32 := disabled for D + endif + +endif + +ifeq ($(biarch32),yes) + with_32bit_check := $(strip $(if $(wildcard build/runcheck.out), \ + $(shell cat build/runcheck.out), \ + $(shell CC="gcc -m32" bash debian/runcheck.sh))) +endif + +ifeq ($(biarch64),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel)) + with_64bit_check := $(strip $(if $(wildcard build/runcheck.out), \ + $(shell cat build/runcheck.out), \ + $(shell CC="gcc -mabi=64" bash debian/runcheck.sh))) + else + with_64bit_check := $(strip $(if $(wildcard build/runcheck.out), \ + $(shell cat build/runcheck.out), \ + $(shell CC="gcc -m64" bash debian/runcheck.sh))) + endif +endif + +ifeq ($(biarchn32),yes) + with_n32bit_check := $(strip $(if $(wildcard build/runcheck.out), \ + $(shell cat build/runcheck.out), \ + $(shell CC="gcc -mabi=n32" bash debian/runcheck.sh))) +endif + +# GNU locales +force_gnu_locales := yes +locale_no_cpus := m68k +locale_no_systems := knetbsd-gnu +ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) + force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM) +endif + +gcc_tarpath := $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gcc-*.tar.*)) +gcc_tarball := $(notdir $(gcc_tarpath)) +gcc_srcdir := $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=))))) + +ifeq ($(with_pascal),yes) + gpc_tarpath := $(firstword $(wildcard gpc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gpc-*.tar.*)) + gpc_tarball := $(notdir $(gpc_tarpath)) + gpc_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gpc_tarball:.tar.bz2=)))) +endif + +ifeq ($(with_d),yes) + gdc_tarpath := $(firstword $(wildcard gdc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gdc-*.tar.*)) + gdc_tarball := $(notdir $(gdc_tarpath)) + gdc_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gdc_tarball:.tar.bz2=)))) +endif + +unpack_stamp := $(stampdir)/01-unpack-stamp +pre_patch_stamp := $(stampdir)/02-pre-patch-stamp +patch_stamp := $(stampdir)/02-patch-stamp +src_spu_stamp := $(stampdir)/02-src-spu-stamp +control_stamp := $(stampdir)/03-control-stamp +configure_stamp := $(stampdir)/04-configure-stamp +build_stamp := $(stampdir)/05-build-stamp +build_html_stamp := $(stampdir)/05-build-html-stamp +build_locale_stamp := $(stampdir)/05-build-locale-stamp +build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp +build_javasrc_stamp := $(stampdir)/05-build-javasrc-stamp +build_javadoc_stamp := $(stampdir)/05-build-javadoc-stamp +check_stamp := $(stampdir)/06-check-stamp +check_inst_stamp := $(stampdir)/06-check-inst-stamp +install_stamp := $(stampdir)/07-install-stamp +install_snap_stamp := $(stampdir)/07-install-snap-stamp +binary_stamp := $(stampdir)/08-binary-stamp + +configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp +build_dummy_stamp := $(stampdir)/05-build-dummy-stamp +install_dummy_stamp := $(stampdir)/07-install-dummy-stamp + +configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp +build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp +install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp + +configure_neon_stamp := $(stampdir)/04-configure-neon-stamp +build_neon_stamp := $(stampdir)/05-build-neon-stamp +install_neon_stamp := $(stampdir)/07-install-neon-stamp + +configure_ia6432_stamp := $(stampdir)/04-configure-ia6432-stamp +build_ia6432_stamp := $(stampdir)/05-build-ia6432-stamp +install_ia6432_stamp := $(stampdir)/07-install-ia6432-stamp + +configure_ia6432_stamp := $(stampdir)/04-configure-ia6432-stamp +build_ia6432_stamp := $(stampdir)/05-build-ia6432-stamp +install_ia6432_stamp := $(stampdir)/07-install-ia6432-stamp + +configure_spu_stamp := $(stampdir)/04-configure-spu-stamp +build_spu_stamp := $(stampdir)/05-build-spu-stamp +install_spu_stamp := $(stampdir)/07-install-spu-stamp + +control_dependencies := $(patch_stamp) + +ifeq ($(PKGSOURCE),gcc-snapshot) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_snap_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif +else + ifeq ($(with_base_only),yes) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) + else + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + install_dependencies = $(install_stamp) + ifeq ($(with_check),yes) + check_dependencies += $(check_stamp) + endif + endif +endif + +ifneq (,$(findstring gcj-, $(PKGSOURCE))) + ifeq ($(with_gcj_base_only),yes) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) + endif +endif + +ifeq ($(with_neon),yes) + build_dependencies += $(build_neon_stamp) + install_dependencies += $(install_neon_stamp) +endif + +ifeq ($(with_hppa64),yes) + build_dependencies += $(build_hppa64_stamp) + ifneq ($(PKGSOURCE),gcc-snapshot) + install_dependencies += $(install_hppa64_stamp) + endif +endif + +ifeq ($(with_ia6432),yes) + build_dependencies += $(build_ia6432_stamp) + ifneq ($(PKGSOURCE),gcc-snapshot) + install_dependencies += $(install_ia6432_stamp) + endif +endif + +ifeq ($(with_spu),yes) + control_dependencies += $(src_spu_stamp) + build_dependencies += $(build_spu_stamp) + ifneq ($(PKGSOURCE),gcc-snapshot) + install_dependencies += $(install_spu_stamp) + endif +endif + +build_dependencies += $(check_dependencies) + +stamp-dir: + mkdir -p $(stampdir) + +ifeq ($(DEB_CROSS),yes) + define cross_mangle_shlibs + sed -i s/$(cross_lib_arch)//g debian/$(1)/DEBIAN/shlibs + endef + define cross_mangle_substvars + sed -i 's/lib[^ ,(]*/&$(cross_lib_arch)/g' debian/$(1).substvars + endef +else + define cross_mangle_shlibs + endef + define cross_mangle_substvars + endef +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel)) + define cross_mangle_control + $(if $(findstring 64,$(1)),sed -i -r '/^(Dep|Rec|Sug)/s/[a-z0-9-]+32[^$(COMMA)]+($(COMMA) *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *$(COMMA) *$$//' debian/$(1)/DEBIAN/control,@:) + $(if $(findstring n32,$(1)),sed -i -r '/^(Dep|Rec|Sug)/s/[a-z0-9-]+64[^$(COMMA)]+($(COMMA) *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *$(COMMA) *$$//' debian/$(1)/DEBIAN/control,@:) + endef +else + define cross_mangle_control + endef +endif --- gcc-4.4-4.4.5.orig/debian/locale-gen +++ gcc-4.4-4.4.5/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 <, 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.5.orig/debian/libstdc++6.symbols.32bit +++ gcc-4.4-4.4.5/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.5.orig/debian/README.gnat +++ gcc-4.4-4.4.5/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.5.orig/debian/gpc-BV-doc.doc-base.gpc +++ gcc-4.4-4.4.5/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.5.orig/debian/cpp-BV-CRB.prerm.in +++ gcc-4.4-4.4.5/debian/cpp-BV-CRB.prerm.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/lib64gfortran3.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-BV-jdk.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc4.symbols.hppa +++ gcc-4.4-4.4.5/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.5.orig/debian/README.source +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-source.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/fixincludes.in +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcjLGCJ.postrm +++ gcc-4.4-4.4.5/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>&1 || true + fi +esac + +#DEBHELPER# --- gcc-4.4-4.4.5.orig/debian/libgccLC.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcjLGCJ.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcj-doc.doc-base +++ gcc-4.4-4.4.5/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.5.orig/debian/watch +++ gcc-4.4-4.4.5/debian/watch @@ -0,0 +1,2 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(4\.4[\d\.]*) debian uupdate --- gcc-4.4-4.4.5.orig/debian/lib64gcc1.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.common +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++CXX-BV-doc.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gfortran3.symbols.mipsel +++ gcc-4.4-4.4.5/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.5.orig/debian/gcjh-wrapper-BV.1 +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-hppa64.prerm +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-CRB.postinst.in +++ gcc-4.4-4.4.5/debian/gcc-BV-CRB.postinst.in @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + update-alternatives --quiet \ + --install /usr/bin/@TARGET@-gcc @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ @gcc_priority@ \ + @GFDL@--slave /usr/share/man/man1/@TARGET@-gcc.1.gz @TARGET@-gcc.1.gz /usr/share/man/man1/@TARGET@-gcc-@BV@.1.gz + update-alternatives --quiet \ + --install /usr/bin/@TARGET@-gcov @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ @gcc_priority@ \ + @GFDL@--slave /usr/share/man/man1/@TARGET@-gcov.1.gz @TARGET@-gcov.1.gz /usr/share/man/man1/@TARGET@-gcov-@BV@.1.gz +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/lib64gcc1.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-wrapper-BV +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.16.powerpc64 +++ gcc-4.4-4.4.5/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.5.orig/debian/relink +++ gcc-4.4-4.4.5/debian/relink @@ -0,0 +1,74 @@ +#! /bin/sh +# +# Relink GNAT utilities using the shared library +# + +set -e + +pwd=`pwd` + +# why? +chmod a-w build/gcc/ada/rts/*.ali + +rm -rf tmp +ln -s $pwd/build/gcc/ada/rts/libgnat.so.1 tmp/libgnat.so + +LD_LIBRARY_PATH=$pwd/tmp +export LD_LIBRARY_PATH + +PATH=$pwd/debian:$pwd/tmp:$PATH +export PATH + +echo "#! /bin/sh" > tmp/dgcc +echo "$pwd/build/gcc/xgcc -B$pwd/build/gcc/ "'"$@"' >> tmp/dgcc +chmod 755 tmp/dgcc + +echo "#! /bin/sh" > tmp/dgnatlink +echo "$pwd/build/gcc/gnatlink --GCC=dgcc "'"$@"' >> tmp/dgnatlink +chmod 755 tmp/dgnatlink + +GMCMD="$pwd/build/gcc/gnatmake -I- -Irts -I. -a -m --GNATBIND=$pwd/build/gcc/gnatbind --GNATLINK=dgnatlink --GCC=dgcc" + +#cd $pwd/build/gcc/ada +#make CFLAGS="-O2" CC="../xgcc -B../" STAGE_PREFIX=../ a-link.o a-gmem.o +#cd $pwd + +[ -f build/gcc/gnatmake.old ] || cp -p build/gcc/gnatmake build/gcc/gnatmake.old +[ -f build/gcc/gnatlink.old ] || cp -p build/gcc/gnatlink build/gcc/gnatlink.old + +make -C build/gcc/ada \ + CFLAGS='-gnatp -gnata -O2 ' \ + ADA_INCLUDES="-I." \ + CC="../xgcc -B../" \ + STAGE_PREFIX=../ \ + ../gnatmake ../gnatlink + +mv gnatmake bgnatmake +mv gnatlink bgnatlink +exit 0 + +cd build/gcc/ada +for i in ../gnatchop ../gnatcmd \ + ../gnatkr ../gnatlbr \ + ../gnatls ../gnatmake \ + ../gnatprep ../gnatpsys \ + ../gnatxref ../gnatfind +do + rm -f $i + $GMCMD -O2 -gnatp -o $i `basename $i`.adb -largs -L.. +done + +rm -f ../gnatmem +$GMCMD -O2 -gnatp -o ../gnatmem gnatmem.adb -largs -L.. a-gmem.o +$GMCMD -O2 -gnatp -o ../gnatlink gnatlink -largs -L.. a-link.o +rm -f ../gnatpsta + +make CFLAGS="-O2" CC="../xgcc -B../" a-gettty.o a-deftar.o +$GMCMD -O2 -gnatp -o ../gnatpsta gnatpsta -largs -L.. a-gettty.o a-deftar.o +rm -f ../gnatbl + +make CFLAGS="-O2" CC="../xgcc -B../" gnatbl.o +../xgcc -B../ -o ../gnatbl gnatbl.o -L.. -lgnat +rm -f ../bgnatmake ../bgnatlink ../debian/dgcc ../debian/dgnatlink + +chmod +w rts/*.ali --- gcc-4.4-4.4.5.orig/debian/lib32gfortran3.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gccLC.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64objc2.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/gnat.1 +++ gcc-4.4-4.4.5/debian/gnat.1 @@ -0,0 +1,39 @@ +.\" Hey, Emacs! This is an -*- nroff -*- source file. +.\" +.\" Copyright (C) 1996 Erick Branderhorst +.\" +.\" 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 \- +GNAT toolbox +.SH DESCRIPTION +Those programs are part of GNU GNAT 4.1, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-4.1 +and +.B info gnat-rm-4.1 +for the sections related to the reference manual. If those sections cannot +be found, you will have to install the gnat-3.4-doc package as well. +.SH SEE ALSO +.BR gcc-4.1 (1) +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. --- gcc-4.4-4.4.5.orig/debian/lib32gomp1.symbols.ppc64 +++ gcc-4.4-4.4.5/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.5.orig/debian/rules.parameters +++ gcc-4.4-4.4.5/debian/rules.parameters @@ -0,0 +1,34 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 4.4.5 +NEXT_GCC_VERSION := 4.4.6 +BASE_VERSION := 4.4 +SOURCE_VERSION := 4.4.5-2ubuntu1 +DEB_VERSION := 4.4.5-2ubuntu1 +DEB_EVERSION := 1:4.4.5-2ubuntu1 +GPC_BASE_VERSION := +GDC_BASE_VERSION := +DEB_GPC_VERSION := +DEB_GDC_VERSION := +DEB_SOVERSION := 4.4 +DEB_SOEVERSION := 1:4.4 +DEB_LIBGCC_SOVERSION := 1:4.4 +DEB_LIBGCC_VERSION := 1:4.4.5-2ubuntu1 +DEB_STDCXX_SOVERSION := 4.4 +DEB_GCJ_SOVERSION := 4.4 +PKG_GCJ_EXT := 10 +PKG_LIBGCJ_EXT := 10 +DEB_GOMP_SOVERSION := 4.4 +DEB_GCCMATH_SOVERSION := 4.4 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 3 +OBJC_SONAME := 2 +GCJ_SONAME := 10 +GNAT_VERSION := 4.4 +GNAT_SONAME := 4.4 +FFI_SONAME := 4 +MUDFLAP_SONAME := 0 +SSP_SONAME := 0 +GOMP_SONAME := 1 +GCCMATH_SONAME := +LIBC_DEP := libc6 --- gcc-4.4-4.4.5.orig/debian/changelog-4.4 +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.mips +++ gcc-4.4-4.4.5/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.5.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gcc1.symbols.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/dummy.texi +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64stdc++6.symbols.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32gfortran3.symbols.ppc64 +++ gcc-4.4-4.4.5/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.5.orig/debian/rules.patch +++ gcc-4.4-4.4.5/debian/rules.patch @@ -0,0 +1,424 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir ?= debian/patches +series_file ?= $(patchdir)/series + +# which patches should be applied? + +debian_patches = \ + svn-updates \ + $(if $(with_linaro_branch),gcc-linaro) \ + +ifeq ($(with_java),yes) +# debian_patches += \ +# svn-class-updates +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + rename-info-files \ + pr25509-doc \ + $(if $(with_linaro_branch),gcc-linaro-doc) \ + +# $(if $(with_linaro_branch),,svn-doc-updates) \ + +endif + +# boehm-gc-nocheck: seems to work on the buildds \ + +debian_patches += \ + gcc-textdomain \ + gcc-driver-extra-langs + +ifeq ($(distribution),Ubuntu) + ifneq (,$(filter $(distrelease),dapper hardy intrepid jaunty karmic lucid)) + debian_patches += gcc-hash-style-both + else + debian_patches += gcc-hash-style-gnu + endif +else + debian_patches += gcc-hash-style-both +endif + +debian_patches += \ + $(if $(with_linaro_branch),,gcc-build-id) \ + libstdc++-pic \ + libstdc++-doclink \ + libstdc++-man-3cxx \ + libjava-stacktrace \ + libjava-subdir \ + libjava-jnipath \ + libjava-sjlj \ + libjava-disable-plugin \ + alpha-no-ev4-directive \ + boehm-gc-getnprocs \ + note-gnu-stack \ + pr25509 \ + pr38333 \ + gcc-cloog-dl \ + libgomp-omp_h-multilib \ + sparc-force-cpu \ + gcc-stack_chk_fail-check \ + sh4_atomic_update \ + libstdc++-arm-wno-abi \ + gold-and-ld \ + libstdc++-test-installed \ + pr40816 \ + gnat-snapshot-build-fix \ + gcc-java-align-data \ + linux-atomic-builtin-expect \ + mips-fix-loongson2f-nop$(if $(with_linaro_branch),-linaro) \ + gcc-system-root \ + gcc-no-add-needed \ + +ifneq ($(with_linaro_branch),yes) + debian_patches += \ + libjava-atomic-builtins-eabi \ + pr39429 \ + rev146451 \ + gcc-unwind-debug-hook \ + pr40521-revert-workaround \ + pr41848 \ + gcc-arm-thumb2-sched \ + arm-boehm-gc-locks \ + gcj-use-atomic-builtins \ + sh4-scheduling \ + pr42748 \ + pr43323 \ + pr42321 \ + libsupc++-vmi_class_type_info \ + gcc-m68k-support-for-tls-backport \ + pr44626 \ + arm-thumb2-speedup-division \ + gcc-arm-implicit-it \ + +else + debian_patches += \ + pr45112 +endif + +# TODO: update ... +# libjava-rpath \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + $(if $(with_linaro_branch),,gcj-use-atomic-builtins-doc) \ + gold-and-ld-doc +endif + +hardening_patches = +ifneq ($(distribution),Debian) + ifneq (,$(findstring gcc-4, $(PKGSOURCE))) + hardening_patches += gcc-default-format-security \ + gcc-default-fortify-source gcc-default-relro \ + testsuite-hardening-format \ + testsuite-hardening-fortify \ + testsuite-hardening-printf-types + endif +endif +ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) + hardening_patches += gcc-default-ssp +endif + +# FIXME 4.5: Drop and adjust symbols files +ifneq (,$(findstring 4.4, $(PKGSOURCE))) + debian_patches += pr39491 +endif + +ifeq ($(with_proto),yes) + debian_patches += deb-protoize +endif + +#ifeq ($(with_ada),yes) + debian_patches += \ + ada-driver-check \ + ada-gcc-name \ + ada-default-project-path \ + ada-symbolic-tracebacks \ + ada-library-project-files-soname \ + ada-polyorb-dsa \ + ada-bug589164 + + ifeq ($(biarch64),yes) + debian_patches += \ + ada-nobiarch-check + endif + +# ifeq ($(with_libgnat),yes) + debian_patches += \ + ada-gnatvsn \ + ada-link-lib \ + ada-libgnatvsn \ + ada-libgnatprj \ + ada-acats +# ifeq ($(with_gnat_zcx)-$(with_gnat_sjlj),yes-yes) + debian_patches += \ + ada-sjlj +# endif +# endif + + ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + debian_patches += ada-bug564232 + endif + +#endif + +# gcc-4.4 is not yet supported by gpc +ifeq ($(with_pascal),yes) +# +else +# debian_patches += gcc-pascal-lang +endif + +ifeq ($(with_d),yes) + debian_patches += \ + gdc-4.4 \ + gdc-hg-updates \ + gdc-hg-doc-updates \ + gdc-ice-valist \ + gdc-stubs \ + gdc-fix-build-kbsd \ + gdc-fix-build-arm \ + gdc-pr26885 \ + gdc-driver-zlib \ + gdc-libphobos-math \ + gdc-libphobos-std-format + ifeq ($(with_libphobos),yes) + debian_patches += gdc-libphobos-build + else + debian_patches += gdc-driver-nophobos + endif +else + debian_patches += gcc-d-lang +endif + +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes hurd-pthread +endif + +ifeq ($(DEB_TARGET_ARCH),alpha) + debian_patches += alpha-ieee mudflap-nocheck + ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += alpha-ieee-doc + endif +endif + +ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel)) + debian_patches += libjava-armel-unwind + debian_patches += $(if $(with_linaro_branch),,arm-gcc-gcse) +endif +ifeq ($(distribution),Ubuntu) + # times out on the buildd + debian_patches += libstdc++-arm-no-check +endif + +# FIXME: submitted for 4.3, no feedback on the upstream status +ifeq ($(DEB_TARGET_ARCH),armel) + debian_patches += armel-hilo-union-class +endif + +debian_patches += \ + $(if $(with_linaro_branch),,pr40133) \ + $(if $(with_linaro_branch),,pr40134) \ + +#ifeq ($(DEB_TARGET_ARCH),lpia) +# debian_patches += gcc-atom gcc-atom-doc +#endif + +ifeq ($(DEB_TARGET_ARCH),m68k) + debian_patches += +endif + +ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + debian_patches += kbsd-gnu + debian_patches += kbsd-gnu-ada +endif + +ifneq (,$(findstring sh4,$(DEB_TARGET_ARCH))) + debian_patches += sh4-mode-switching +endif + +ifeq ($(DEB_CROSS),yes) + debian_patches += cross-include cross-fixes +endif + +spu_patches = cell-branch$(if $(with_linaro_branch),-linaro) +ifneq ($(GFDL_INVARIANT_FREE),yes) + spu_patches += cell-branch-doc +endif + +#debian_patches += link-libs + +# all patches below this line are applied for gcc-snapshot builds as well + +ifeq ($(PKGSOURCE),gcc-snapshot) + spu_patches = + debian_patches = + debian_patches += pr40521-revert-workaround +endif + +debian_patches += gcc-ice-hack gcc-ice-apport +debian_patches += libjava-disable-static libjava-fixed-symlinks + +debian_patches += \ + $(if $(with_linaro_branch),,ada-arm-eabi) \ + ada-mips + +ifeq ($(distribution),Debian) + debian_patches += arm-unbreak-eabi-armv4t +endif + +ifeq ($(biarch_cpu),i686) + debian_patches += gcc-multiarch-i686$(if $(with_linaro_branch),-linaro) +else + debian_patches += gcc-multiarch$(if $(with_linaro_branch),-linaro) +endif + +ifeq ($(biarch64),yes) + ifeq (,$(findstring libjava, $(biarch_multidir_names))) + debian_patches += libjava-nobiarch-check + endif + debian_patches += config-ml + + ifeq ($(DEB_CROSS),yes) + debian_patches += cross-biarch + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + debian_patches += powerpc-biarch + endif + debian_patches += s390-biarch +endif + +ifeq ($(biarch32),yes) + ifeq (,$(findstring libjava, $(biarch_multidir_names))) + debian_patches += libjava-nobiarch-check + endif + debian_patches += config-ml gcc-multilib64dir +endif + +ifneq (,$(findstring sparc64,$(DEB_TARGET_ARCH))) + debian_patches += gcc-multilib64dir +endif + +ifeq ($(biarchn32)-$(biarch64),yes-yes) + ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel)) + debian_patches += mips-triarch + endif +endif + + +series_stamp = $(stampdir)/02-series-stamp +series: $(series_stamp) +$(series_stamp): + echo $(strip $(addsuffix .diff,$(debian_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) +ifneq (,$(strip $(hardening_patches))) + ifneq ($(DEB_CROSS),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + echo $(strip $(addsuffix .diff,$(hardening_patches))) \ + | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) + endif + endif +endif + sed -r 's/(.)$$/\1 -p1/' -i $(series_file) + touch $@ + +autotools_files := $(addprefix ./,$(foreach file,$(shell lsdiff --no-filename \ + $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ + | sed -r 's/[ab]\/src\//src\//' | sort | uniq),$(shell echo $(file) \ + | egrep 'configure\.(ac|in)|Makefile\.(am|in)|acinclude.m4'))) + +autoconf_version = 2.59 +ifeq ($(PKGSOURCE),gcc-snapshot) + # The actual version depends on the build-dependencies set by + # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the + # correct version is installed. + autoconf_version = +endif + +# FIXME: the auto* stuff is done every time for every subdir, which +# leads to build errors. Idea: record the auto* calls in the patch +# files (AUTO ) and run them separately, +# maybe only once per directory). +$(patch_stamp): $(unpack_stamp) $(series_stamp) + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null push -a || test $$? = 2 + +ifneq (,$(filter svn-updates, $(debian_patches))) + awk '/^EOF/ {exit} p==1 {print} /EOF$$/ {p=1}' \ + debian/patches/svn-updates.diff > src/LAST_UPDATED +endif + + if ! test -f ./autotools_files ; then touch ./autotools_files ; fi + + for f in $(autotools_files) ; \ + do case $$f in \ + */classpath/m4/acinclude.m4) \ + : ;; \ + */configure.*|*/acinclude.m4) \ + if grep ^"$$(md5sum $$f)"$$ ./autotools_files >/dev/null ; \ + then echo "Skipping already regenerated file $$f." ; \ + else \ + echo "Running autoconf$(autoconf_version) in $$(dirname $$f)..." ; \ + dir="$(CURDIR)"; cd $(CURDIR)/$$(dirname $$f) \ + && AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version) \ + && cd $$dir \ + && echo "$$(md5sum $$f)" >> ./autotools_files ; \ + fi ;; \ + */Makefile.*) ;; \ + *) echo "Unknown file: $$f"; false; \ + esac; \ + done + + for i in $(debian_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ + done +# -$(srcdir)/move-if-change pxxx $@ + mv pxxx $@ + +unpatch: + QUILT_PATCHES=$(patchdir) \ + quilt --quiltrc /dev/null pop -a -R || test $$? = 2 + rm -rf .pc + for f in $(autotools_files); do \ + rm -f $$(echo $$f | sed -r 's/\.(ac|am|in)$$//'); \ + done + +no_spu_patches = $(hardening_patches) + +$(src_spu_stamp): $(patch_stamp) + rm -rf src-spu +ifeq (,$(strip $(no_spu_patches))) + ln -s src src-spu +else + cp -a src src-spu + set -e; \ + for p in $(no_spu_patches); do \ + list="$$p $$list"; \ + done; \ + for p in $$list; do \ + echo "Revert for spu build: $$p"; \ + patch -d src-spu -p2 -R < debian/patches/$$p.diff; \ + done +endif + set -e; \ + for p in $(spu_patches); do \ + echo "Apply for spu build: $$p"; \ + patch -d src-spu -p2 < debian/patches/$$p.diff; \ + done +ifneq (,$(strip $(no_spu_patches))) + cd src-spu/libgfortran \ + && AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version) +endif + touch $@ + +patch: $(patch_stamp) +.PHONY: patch series quilt autotools --- gcc-4.4-4.4.5.orig/debian/cpp-BV-CRB.postinst.in +++ gcc-4.4-4.4.5/debian/cpp-BV-CRB.postinst.in @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + update-alternatives --quiet \ + --install /usr/bin/@TARGET@-cpp @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ @gcc_priority@ \ + @GFDL@--slave /usr/share/man/man1/@TARGET@-cpp.1.gz @TARGET@-cpp.1.gz /usr/share/man/man1/@TARGET@-cpp-@BV@.1.gz +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/libgcc1.symbols.aeabi +++ gcc-4.4-4.4.5/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.5.orig/debian/gcjh-wrapper-BV +++ gcc-4.4-4.4.5/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.5.orig/debian/README.C++ +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/reduce-test-diff.awk +++ gcc-4.4-4.4.5/debian/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} --- gcc-4.4-4.4.5.orig/debian/libstdc++CXX-BV-doc.doc-base +++ gcc-4.4-4.4.5/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.5.orig/debian/gfortran-BV-CRB.prerm.in +++ gcc-4.4-4.4.5/debian/gfortran-BV-CRB.prerm.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/libgnat-BV.overrides +++ gcc-4.4-4.4.5/debian/libgnat-BV.overrides @@ -0,0 +1 @@ +libgnat-@BV@: package-name-doesnt-match-sonames --- gcc-4.4-4.4.5.orig/debian/compat +++ gcc-4.4-4.4.5/debian/compat @@ -0,0 +1 @@ +5 --- gcc-4.4-4.4.5.orig/debian/gcj-BV-jdk.prerm +++ gcc-4.4-4.4.5/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.5.orig/debian/gij-wrapper-BV +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.ia64 +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.16.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/gij-hppa +++ gcc-4.4-4.4.5/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.5.orig/debian/gfortran-BV-spu.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64stdc++CXX.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.mips +++ gcc-4.4-4.4.5/debian/libgfortran3.symbols.mips @@ -0,0 +1,2 @@ +libgfortran.so.3 libgfortran3 #MINVER# +#include "libgfortran3.symbols.common" --- gcc-4.4-4.4.5.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-4.4-4.4.5/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.5.orig/debian/protoize.1 +++ gcc-4.4-4.4.5/debian/protoize.1 @@ -0,0 +1,42 @@ +.TH PROTOIZE 1 +.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection +.\" other parms are allowed: see man(7), man(1) +.SH NAME +protoize, unprotoize \- create/remove ANSI prototypes from C code +.SH SYNOPSIS +.B protoize +.I "[options] files ...." +.br +.B unprotoize +.I "[options] files ...." +.SH "DESCRIPTION" +This manual page documents briefly the +.BR protoize , +and +.B unprotoize +commands. +This manual page was written for the Debian GNU/Linux distribution +(but may be used by others), because the original program does not +have a manual page. +Instead, it has documentation in the GNU Info format; see below. +.PP +.B protoize +is an optional part of GNU C. You can use it 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. +.PP +When you run these programs, you must specify a set of source files +as command line arguments. +.SH OPTIONS +These programs are non-trivial to operate, and it is neither possible nor +desirable to properly summarize options in this man page. Read the info +documentation for more information. +.SH "SEE ALSO" +The programs are documented fully by +.IR "Gcc: The use and the internals of the GNU compiler", +available via the Info system. The documentation for protoize/unprotoize +can be found in the subsection "Invoking GCC", under "Running Protoize." +.SH AUTHOR +This manual page was written by Galen Hazelwood, +for the Debian GNU/Linux system. --- gcc-4.4-4.4.5.orig/debian/dh_rmemptydirs +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-snapshot.overrides +++ gcc-4.4-4.4.5/debian/gcc-snapshot.overrides @@ -0,0 +1 @@ + --- gcc-4.4-4.4.5.orig/debian/README +++ gcc-4.4-4.4.5/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.5.orig/debian/porting.html +++ gcc-4.4-4.4.5/debian/porting.html @@ -0,0 +1,30 @@ + + +Porting libstdc++-v3 + + + + + + + +

Porting libstdc++-v3

+
+


+Node: Top, +Next: , +Up: (dir) +
+
+ +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + + --- gcc-4.4-4.4.5.orig/debian/README.Bugs.m4 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32stdc++6.symbols.amd64 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32gccLC.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.armel +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.lpia +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.64bit +++ gcc-4.4-4.4.5/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.5.orig/debian/logwatch.sh +++ gcc-4.4-4.4.5/debian/logwatch.sh @@ -0,0 +1,104 @@ +#! /bin/sh + +# script to trick the build daemons and output something, if there is +# still test/build activity + +# $1: primary file to watch. if there is activity on this file, we do nothing +# $2+: files to watch to look for activity despite no output in $1 +# if the files are modified or are newly created, then the message +# is printed on stdout. +# if nothing is modified, don't output anything (so the buildd timeout +# hits). + +pidfile=logwatch.pid +timeout=3600 +message='\nlogwatch still running\n' + +usage() +{ + echo >&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.5.orig/debian/TODO +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.amd64 +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.ldbl.32bit +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gfortran3.symbols.mips +++ gcc-4.4-4.4.5/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.5.orig/debian/libobjc2.symbols.armel +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.lpia +++ gcc-4.4-4.4.5/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.5.orig/debian/changelog +++ gcc-4.4-4.4.5/debian/changelog @@ -0,0 +1,9601 @@ +gcc-4.4 (4.4.5-2ubuntu1) natty; urgency=low + + * Update to SVN 20100924 from the gcc-4_4-branch (r164607, 4.4.5 release + - 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. + * On linux targets 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 15:24:22 +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-14ubuntu5) maverick; urgency=low + + * Avoid include paths starting with a double slash. LP: #635840. + + -- Matthias Klose Mon, 27 Sep 2010 16:00:29 +0200 + +gcc-4.4 (4.4.4-14ubuntu4) maverick; urgency=low + + * Fix spu build failure on powerpc, introduced by changing the + order of applying the svn and linaro patches. + + -- Matthias Klose Wed, 15 Sep 2010 02:37:30 +0200 + +gcc-4.4 (4.4.4-14ubuntu3) maverick; urgency=low + + * Build from the Linaro 4.4-2010.09 release (no code changes compared + to 4.4.4-14ubuntu2). + + * The package version identifier specified with --with-pkg-version, e.g. + gcc-4.4 (Ubuntu/Linaro 4.4.4-14ubuntu3) 4.4.5 + changes with every upload of this package and should not be used + to define any ABI or API version in other package builds. + + [ Matthias Klose ] + * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. + * Don't provide c++abi2-dev for g++ cross builds. + + [ Iain Buclaw ] + * Add copyrights and licenses for the gdc and libphobos. + * Updates from the gdc branch up to 20100912. + + -- Matthias Klose Tue, 14 Sep 2010 15:49:17 +0200 + +gcc-4.4 (4.4.4-14ubuntu2) maverick; urgency=low + + [ Matthias Klose ] + * Build from the Linaro 4.4-2010.09-0 release tag. + * gcc-4.4: Include the Linaro changelog. + + [ Marcin Juszkiewicz ] + * Fix priorities and sections for some cross packages. + + [ Kees Cook ] + * Push glibc stack traces into stderr when building the package. + + -- Matthias Klose Fri, 10 Sep 2010 18:03:45 +0200 + +gcc-4.4 (4.4.4-14ubuntu1) maverick; urgency=medium + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + - Build from the Linaro 4.4-2010.08-0 release on amd64, armel, i386 + and powerpc. + + -- Matthias Klose Thu, 09 Sep 2010 22:38:47 +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-13ubuntu2) maverick; urgency=low + + * Revert the (temporary) build dependency on g++-4.5. + + -- Matthias Klose Sun, 05 Sep 2010 10:03:41 +0200 + +gcc-4.4 (4.4.4-13ubuntu1) maverick; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + - Include and build with the Linaro changes. + + -- Matthias Klose Sat, 04 Sep 2010 13:32:11 +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. + + -- Matthias Klose Sat, 04 Sep 2010 12:35:25 +0200 + +gcc-4.4 (4.4.4-12ubuntu1) maverick; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + - Include and build with the Linaro changes. + + -- Matthias Klose Fri, 03 Sep 2010 14:18:49 +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-9ubuntu2) maverick; urgency=low + + * 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. + + [ Matthias Klose ] + * Integrate and extend bi/tri-arch cross builds patches (Al Viro). + + -- Matthias Klose Thu, 26 Aug 2010 00:23:09 +0200 + +gcc-4.4 (4.4.4-9ubuntu1) maverick; urgency=low + + * Fix the version information (using the --with-pkgversion style). + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + + -- Matthias Klose Tue, 17 Aug 2010 10:01:27 +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-8ubuntu2) maverick; urgency=low + + * Update to the Linaro 4.4-2010.08-0 release on amd64, armel, i386 + and powerpc. + * Update to SVN 20100813 from the gcc-4_4-branch (r163226). + - Fix PR middle-end/45262, PR middle-end/41551, PR target/44805, + PR tree-optimization/45109, PR boehm-gc/34544, PR target/44942, + 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). + * 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. + + [ 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 Sat, 14 Aug 2010 18:07:52 +0200 + +gcc-4.4 (4.4.4-8ubuntu1) maverick; urgency=low + + * Merge with Debian. + * Apply proposed fix for PR c++/45112. LP: #604874. + + -- Matthias Klose Sat, 31 Jul 2010 18:17:57 +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-7ubuntu3) maverick; urgency=low + + * Build from the Linaro 4.4-2010.07-0 release on amd64, armel, i386. + * Update to SVN 20100723 from the gcc-4_4-branch (r162447). + - Fix PR target/44942, PR target/42869. + + [ Marcin Juszkiewicz ] + * Copy all debian/rules* files in the -source package. + + [ Matthias Klose ] + * Fix versioned build dependency on gcc-4.x-source package for cross builds. + LP: #609060. + + -- Matthias Klose Fri, 23 Jul 2010 10:27:51 +0200 + +gcc-4.4 (4.4.4-7ubuntu2) maverick; urgency=low + + * Don't explicitly fail the build on ia64 and sparc. + * Don't build Ada from the Linaro release. + + -- Matthias Klose Wed, 21 Jul 2010 01:00:32 +0200 + +gcc-4.4 (4.4.4-7ubuntu1) maverick; urgency=low + + * Update to SVN 20100720 from the gcc-4_4-branch (r162340). + * Build from the Linaro 4.4-2010.07-0 release on armel. + + [ Marcin Juszkiewicz ] + * Fix dependencies on cross library packages. + + [ Matthias Klose ] + * Add descriptions for patches, where missing. + * Rebuild to depend on libmpfr4. + + -- Matthias Klose Tue, 20 Jul 2010 16:58:49 +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-6ubuntu2) maverick; urgency=low + + [ 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. + + [ Matthias Klose ] + * Fix build failure on armel, updating libstdc++-arm-no-check.diff. + + -- Matthias Klose Sat, 26 Jun 2010 00:08:13 +0200 + +gcc-4.4 (4.4.4-6ubuntu1) maverick; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 25 Jun 2010 15:04:36 +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 + (not 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 13:28:34 +0200 + +gcc-4.4 (4.4.4-4ubuntu1) maverick; urgency=low + + * Merge with Debian. + + -- Matthias Klose Wed, 02 Jun 2010 23:48:47 +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-3ubuntu3) maverick; urgency=low + + * Fix build failure on armel running the libstdc++-v3 testsuite against + the installed lib. + + -- Matthias Klose Sat, 29 May 2010 02:40:14 +0200 + +gcc-4.4 (4.4.4-3ubuntu1) maverick; urgency=low + + * Merge with Debian. + * 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. + * Apply proposed powerpc backport for PR target/44169. + + -- Matthias Klose Thu, 27 May 2010 17:26:49 +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-2ubuntu2) maverick; urgency=low + + * Re-add the 4.4.3 symlink in gcc_lib_dir to build the gnat-4.4 package + on the buildd. + * Don't run the testsuite for this otherwise unchanged upload. + + -- Matthias Klose Wed, 19 May 2010 16:34:57 +0200 + +gcc-4.4 (4.4.4-2ubuntu1) maverick; urgency=low + + * Merge with Debian. + * On i386 set the target alias to i686-linux-gnu. + + -- Matthias Klose Tue, 18 May 2010 11:14:27 +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 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-1ubuntu2) maverick; urgency=low + + * Update to SVN 20100514 from the gcc-4_4-branch (r159388). + - 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. + * Configure --with-arch-32=i686 on i386. + * Pass --hash-style=gnu instead of --hash-style=both to the linker. + * Don't build packages built from the gcc-4.5 sources. + + -- Matthias Klose Fri, 14 May 2010 09:24:49 +0200 + +gcc-4.4 (4.4.4-1ubuntu1) maverick; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sat, 01 May 2010 14:20:09 +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-4ubuntu5) lucid; urgency=low + + * Revert the change for PR middle-end/42233 from the last upload, + import the the fix for PR c/43385 from the 4.4 branch. + * Import fix for PR libfortran/43517. + + -- Matthias Klose Fri, 26 Mar 2010 17:57:06 +0100 + +gcc-4.4 (4.4.3-4ubuntu4) lucid; urgency=low + + * Revert PR middle-end/42233 for arm, armel, ia64, sparc; causing + testsuite regressions in eglibc. + * Update to SVN 20100323 from the gcc-4_4-branch (r157680). + - 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. + * gcc-4.4-plugin-dev: Include missing header. + + -- Matthias Klose Wed, 24 Mar 2010 16:53:39 +0100 + +gcc-4.4 (4.4.3-4ubuntu2) lucid; urgency=low + + * 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 21:42:20 +0100 + +gcc-4.4 (4.4.3-4ubuntu1) lucid; urgency=low + + * Merge with Debian. + * Upstream changes compared to 4.4.3-3ubuntu3: + - Fix PR libfortran/43265, PR rtl-optimization/43360, PR target/43348, + PR middle-end/43323. + + -- Matthias Klose Sun, 21 Mar 2010 09:01:29 +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-3ubuntu3) lucid; urgency=low + + * Fix logic to build the gcc-4.4-plugin-dev package. + + -- Matthias Klose Thu, 11 Mar 2010 23:01:00 +0100 + +gcc-4.4 (4.4.3-3ubuntu2) lucid; urgency=low + + * Update to SVN 20100311 from the gcc-4_4-branch (r157382). + - Fix PR c/43248, PR middle-end/42233, PR bootstrap/43121, + PR tree-optimization/43220, PR ada/42253, PR fortran/43303, + PR fortran/43228. + * gcj-4.4-jre-headless: Stop providing java-virtual-machine. + * 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. + + -- Matthias Klose Thu, 11 Mar 2010 12:55:04 +0100 + +gcc-4.4 (4.4.3-3ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 26 Feb 2010 04:52:00 +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. LP: #522717. + * 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-2ubuntu2) lucid; urgency=low + + * Update to SVN 20100218 from the gcc-4_4-branch (r156863). + - 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. + - Backport ARM patches from the trunk. + * Don't call dh_makeshlibs with -V for shared libraries with + symbol files. + + -- Matthias Klose Thu, 18 Feb 2010 17:16:13 +0100 + +gcc-4.4 (4.4.3-2ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sun, 31 Jan 2010 22:30:43 +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-1ubuntu2) lucid; urgency=low + + * Update to SVN 20100127 from the gcc-4_4-branch (r156293). + - Fix PR fortran/42866, PR target/42841, PR target/38697, + PR bootstrap/42786. + * 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; revert the temporary workaround building with + -Wno-abi. + + -- Matthias Klose Wed, 27 Jan 2010 17:55:17 +0100 + +gcc-4.4 (4.4.3-1ubuntu1) lucid; urgency=low + + * GCC 4.4.3 release. + + -- Matthias Klose Thu, 21 Jan 2010 17:33:22 +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-9ubuntu4) lucid; urgency=low + + * Update to 4.4.3 rc1, SVN 20100116 from the gcc-4_4-branch (r155960). + - 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. + * 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 Sat, 16 Jan 2010 19:09:40 +0100 + +gcc-4.4 (4.4.2-9ubuntu3) lucid; urgency=low + + * Revert last patch. Instead unconditionally provide the long double + compat functions in libstdc++6. + + -- Matthias Klose Sat, 09 Jan 2010 15:52:05 +0100 + +gcc-4.4 (4.4.2-9ubuntu2) lucid; urgency=low + + * Fix build error on armel; the long double versions of the math + functions are now provided by libc6 2.11. + + -- Matthias Klose Sat, 09 Jan 2010 15:40:32 +0100 + +gcc-4.4 (4.4.2-9ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Fri, 08 Jan 2010 08:47:20 +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-8ubuntu2) lucid; urgency=low + + * Update to SVN 20100105 from the gcc-4_4-branch (r155642). + - 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). + * 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). + + -- Matthias Klose Tue, 05 Jan 2010 11:22:11 +0100 + +gcc-4.4 (4.4.2-8ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Tue, 29 Dec 2009 00:41:52 +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-6ubuntu1) lucid; urgency=low + + * Don't call install-info directly, depend on dpkg | install-info instead. + * On ARM, pass --hash-style=both to ld. + + -- Matthias Klose Mon, 21 Dec 2009 13:50:05 +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-5ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Sun, 13 Dec 2009 10:28:26 +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-4ubuntu2) lucid; urgency=low + + * Fix typo in PR libstdc++/40133 to do the link tests. + * Disable biarch testsuite runs for libffi (broken and unused). + + -- Matthias Klose Fri, 11 Dec 2009 05:51:10 +0100 + +gcc-4.4 (4.4.2-4ubuntu1) lucid; urgency=low + + * Merge with Debian. + + -- Matthias Klose Thu, 10 Dec 2009 19:06:10 +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-3ubuntu2) lucid; urgency=low + + * Update to SVN 20091203 from the gcc-4_4-branch (r154951), Fixes: + PR middle-end/42049, PR c++/42234, PR fortran/41278. + * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from + the trunk. LP: #491872 . + * Pass -mimplicit-it=thumb to as by default on ARM. LP: #488302. + + -- Matthias Klose Fri, 04 Dec 2009 10:06:17 +0100 + +gcc-4.4 (4.4.2-3ubuntu1) lucid; urgency=low + + * Update to SVN 20091128 from the gcc-4_4-branch (r154725). + Fix PR target/42165, PR target/42113, PR libgfortran/42090. + * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. + + -- Matthias Klose Sat, 28 Nov 2009 16:13:19 +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-2ubuntu1) lucid; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + - Don't build the GC enabled libobjc on armel (build failure with -mthumb). + - Build --with-arch=armv7-a --with-fpu=vfpv3-d16 on armel. + * Update to SVN 20091115 from the gcc-4_4-branch (r154188). + 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 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-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 Sun, 15 Nov 2009 17:04:41 +0100 + +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-1ubuntu4) lucid; urgency=low + + * Update to SVN 20091109 from the gcc-4_4-branch (r154036). + Fix PR middle-end/41963, PR tree-optimization/41643, + PR c++/36912, PR c++/9381, PR c++/41967, PR c++/35067i, PR fortran/41909. + + -- Matthias Klose Mon, 09 Nov 2009 15:31:34 +0100 + +gcc-4.4 (4.4.2-1ubuntu3) lucid; urgency=low + + * Don't build the GC enabled libobjc on armel (build failure with -mthumb). + + -- Matthias Klose Thu, 05 Nov 2009 12:13:23 +0100 + +gcc-4.4 (4.4.2-1ubuntu2) lucid; urgency=low + + * Update to SVN 20091104 from the gcc-4_4-branch (r153898). + Fix PR c++/36959, PR c++/41876, PR c++/39786, PR c++/37093, PR c++/41754, + PR fortran/41772, PR fortran/41850, PR target/41900, PR c++/38699, + PR rtl-optimization/41917. + * build --with-mode=thumb on armel. + * Configure with --disable-libstdcxx-pch on hppa. + + -- Matthias Klose Wed, 04 Nov 2009 16:04:17 +0100 + +gcc-4.4 (4.4.2-1ubuntu1) lucid; urgency=low + + * Update to SVN 20091027 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. + * 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). + * Build --with-arch=armv7-a --with-fpu=vfpv3-d16 on armel. + + -- Matthias Klose Fri, 30 Oct 2009 01:19:28 +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-4ubuntu8) karmic; urgency=low + + * Apply patch for proposed backport for PR debug/40521. + * Fix build failures building a host == build != target compiler. + + -- Matthias Klose Wed, 14 Oct 2009 10:56:54 +0200 + +gcc-4.4 (4.4.1-4ubuntu7) karmic; urgency=low + + * PR debug/40521: LP: #440172. + - Apply patch for PR debug/40521, taken from the trunk. + - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + - (Build-) depend on binutils (>= 2.19.91.20091005). + * In the test summary, add more information about package versions + used for the build. + + -- Matthias Klose Tue, 06 Oct 2009 23:18:42 +0200 + +gcc-4.4 (4.4.1-4ubuntu6) karmic; urgency=low + + * Rebuild against current glibc (needed for armel). + * Update to SVN 20091003 from the gcc-4_4-branch (r152174). + - Fixes PR debug/40521, PR fortran/41515. + - Remove the patch for PR debug/40521 from the trunk. + * 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. + Reduces the size of the CD images by 1.7MB (gzip2 compressed). + * 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 15:14:04 +0200 + +gcc-4.4 (4.4.1-4ubuntu5) karmic; urgency=low + + * Update to SVN 20091001 from the gcc-4_4-branch (r152174). + - PR target/22093, PR libffi/40242, PR libffi/41443. + * Apply patch for PR debug/40521, taken from the trunk (armel). + + -- Matthias Klose Thu, 01 Oct 2009 18:32:46 +0200 + +gcc-4.4 (4.4.1-4ubuntu4) karmic; urgency=low + + * Disable the build of neon optimized runtime libs on armel. + * libjava: Use atomic builtins For Linux ARM/EABI, backported from the + trunk. + * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. + * Update to SVN 20090925 from the gcc-4_4-branch (r152174). + - Fixes PR target/40473. + + -- Matthias Klose Thu, 24 Sep 2009 14:16:41 +0200 + +gcc-4.4 (4.4.1-4ubuntu3) karmic; urgency=low + + * Remove trailing whitespace in libstdc++ rules file.. + + -- Matthias Klose Wed, 23 Sep 2009 19:27:37 +0200 + +gcc-4.4 (4.4.1-4ubuntu2) karmic; urgency=low + + * Update to SVN 20090923 from the gcc-4_4-branch (r152070). + - Fixes PR tree-optimization/41101, PR c/41049, PR libgfortran/41328, + PR c/39779, PR debug/41065. + * Fix libffi build failure on armel with -mfloat-abi=softfp. + * Don't pessimize the code for newer armv6 and armv7 processors. + + -- Matthias Klose Wed, 23 Sep 2009 18:45:58 +0200 + +gcc-4.4 (4.4.1-4ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + + -- Matthias Klose Sat, 12 Sep 2009 03:24:16 +0200 + +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-3ubuntu3) karmic; urgency=low + + * Fix PR target/41184. + + -- Matthias Klose Sun, 30 Aug 2009 08:35:42 +0200 + +gcc-4.4 (4.4.1-3ubuntu2) karmic; urgency=low + + * On armel, configure --with-arch=armv6 --with-tune=cortex-a8 + --with-float=softfp --with-fpu=vfp. + * Update to SVN 20090828 from the gcc-4_4-branch (r151159). + - Fixes PR target/34412, PR middle-end/41094, PR target/40718, + PR fortran/41062, PR libstdc++/41005. + + -- Matthias Klose Fri, 28 Aug 2009 14:11:56 +0200 + +gcc-4.4 (4.4.1-3ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including GFDL documents. + + -- Matthias Klose Sun, 23 Aug 2009 12:55:18 +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-1ubuntu3) karmic; urgency=low + + * Fix build failure on armel, disabling profiled bootstrap build. + + -- Matthias Klose Thu, 06 Aug 2009 00:07:39 +0200 + +gcc-4.4 (4.4.1-1ubuntu2) karmic; urgency=low + + * Update to SVN 20090805 from the gcc-4_4-branch (r150484). + - Fixes 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. + * Build-depend on binutils 2.19.51.20090805, needed at least for armel. + * Merge enough of the gnat-4.4 changes back to allow a combined build + from the gcc-4.4 source. + * Build libgnatprj for armel. + + -- Matthias Klose Wed, 05 Aug 2009 16:52:49 +0200 + +gcc-4.4 (4.4.1-1ubuntu1) karmic; urgency=low + + * GCC-4.4.1 release. + * Update to SVN 20090723 from the gcc-4_4-branch (r149997). + - Fixes PR target/40832, PR rtl-optimization/40710, + PR tree-optimization/40321. + + -- Matthias Klose Thu, 23 Jul 2009 13:33:46 +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-11ubuntu2) karmic; urgency=low + + * Update to SVN 20090721 from the gcc-4_4-branch (r149854). + - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, + PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714. + * Apply proposed patch for PR tree-optimization/40813, causing OpenJDK + build failure on sparc. + * Apply proposed patch for PR target/39429, an ARM wrong-code error. + * Fix a typo in the arm back-end (proposed patch). + + -- Matthias Klose Tue, 21 Jul 2009 16:34:30 +0200 + +gcc-4.4 (4.4.0-11ubuntu1) karmic; urgency=low + + * Upload corresponding to the 4.4.1 release candidate. + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + + -- Matthias Klose Wed, 15 Jul 2009 11:49:07 -0400 + +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-8ubuntu2) karmic; urgency=low + + * Update to SVN 20090622 from the gcc-4_4-branch (r148821). + - Fix PR objc/28050 (LP: #362217). + * Enable SSP on arm and armel, run the testsuite with -fstack-protector. + LP: #375189. + + -- Matthias Klose Tue, 23 Jun 2009 00:57:50 +0200 + +gcc-4.4 (4.4.0-8ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + - Remove conflicts with libc6-i386 (<< 2.9-17). + + -- Matthias Klose Sat, 20 Jun 2009 19:31:00 +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-6ubuntu2) karmic; urgency=low + + * Fix build failure building the gcc-4.4-source package. + + -- Matthias Klose Fri, 12 Jun 2009 18:41:02 -0400 + +gcc-4.4 (4.4.0-6ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + + -- Matthias Klose Fri, 12 Jun 2009 15:45:50 -0400 + +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-5ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + * Update to SVN 20090529 from the gcc-4_4-branch (r147976). + - 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. + + -- Matthias Klose Fri, 29 May 2009 16:38:23 +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-3ubuntu5) karmic; urgency=low + + * Remove two more symbols from the libstdc++6 symbols file for armel, + gone with disabling of the exception propagation support. + + -- Matthias Klose Sat, 16 May 2009 02:51:36 +0200 + +gcc-4.4 (4.4.0-3ubuntu4) karmic; urgency=low + + * Update to SVN 20090514 from the gcc-4_4-branch (r147544). + - 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. + * 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 turned on. + * Revert doing link tests to check for the atomic builtins, disabling + exception propagation support in libstdc++ on armel. See PR40133, PR40134. + LP: #375334. + * Don't apply the patch for atom support from the intel/gcc-4_4-branch. + Configure --with-arch=pentium-m --with-tune=i586 on lpia. LP: #376499. + + -- Matthias Klose Fri, 15 May 2009 00:01:41 +0200 + +gcc-4.4 (4.4.0-3ubuntu3) karmic; urgency=medium + + * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. + + -- Matthias Klose Wed, 06 May 2009 15:03:06 +0200 + +gcc-4.4 (4.4.0-3ubuntu2) karmic; 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. + * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. + * Update libstdc++ symbol files for armel and hppa, adding symbols + for exception propagation support. + * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt + and patchutils. + * Add ARM EABI symbols to libstdc++ symbol files for armel. + * Add libobjc symbols file for armel. + + -- Matthias Klose Wed, 06 May 2009 11:53:00 +0200 + +gcc-4.4 (4.4.0-3ubuntu1) karmic; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + + -- Matthias Klose Mon, 04 May 2009 11:11:49 +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-0ubuntu6) karmic; urgency=low + + * On lpia configure --with-arch=atom instead of --with-cpu=atom. + + -- Matthias Klose Wed, 29 Apr 2009 23:03:37 +0200 + +gcc-4.4 (4.4.0-0ubuntu5) karmic; urgency=low + + * Update to SVN 20090425 from the gcc-4_4-branch. + * 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. + * Don't use profiled bootstrap when building the gcj source. + * Apply proposed patch for PR target/39856. + * Fix some lintian warnings. + + -- Matthias Klose Sun, 26 Apr 2009 14:58:39 +0200 + +gcc-4.4 (4.4.0-0ubuntu4) karmic; urgency=low + + * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. + * Configure again --with-arch-32=i486 on amd64, i386. + + -- Matthias Klose Fri, 24 Apr 2009 12:37:21 +0200 + +gcc-4.4 (4.4.0-0ubuntu3) jaunty; urgency=low + + * Update to SVN 20090423 from the gcc-4_4-branch. + * Fix powerpc build failure. + * 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. + + -- Matthias Klose Thu, 23 Apr 2009 17:05:39 +0200 + +gcc-4.4 (4.4.0-0ubuntu2) jaunty; urgency=low + + * 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. + * Build again libgfortran for the non-default multilib configuration. + * Restore missing chunks in note-gnu-stack.diff, lost during the conversion + to quilt. + * Revert on armel: --with-float=softfp --with-fpu=vfp. + + -- Matthias Klose Wed, 22 Apr 2009 13:41:21 +0200 + +gcc-4.4 (4.4.0-0ubuntu1) jaunty; urgency=low + + * Final GCC 4.4.0 release. + + * 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. + * Update the atom patch from the ix86/gcc-4_4-branch (20090421). + + -- Matthias Klose Tue, 21 Apr 2009 16:41:29 +0200 + +gcc-4.4 (4.4-20090418-1ubuntu2) jaunty; urgency=low + + * Don't build the Fortran SPU cross compiler, currently broken. + * Configure --with-arch-32=i586 on amd64, i386, and kfreebsd-{amd64,i386}, + --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. + * Configure --with-float=softfp --with-fpu=vfp on armel. + * 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. + + -- Matthias Klose Mon, 20 Apr 2009 16:20:12 +0200 + +gcc-4.4 (4.4-20090418-1ubuntu1) jaunty; urgency=low + + * Merge with Debian; remaining changes: + - Build from VCS, including FDL documents. + + -- Matthias Klose Mon, 20 Apr 2009 00:29:25 +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. + * debian/control.in: New. + * debian/control.m4: Remove. + * Regenerate control file. + + [ 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, 30 Mar 2009 01:53:04 +0200 + +gcc-4.4 (4.4-20090317-0ubuntu1) jaunty; urgency=low + + * Fix java build failures, fix java build dependencies. + + -- Matthias Klose Tue, 17 Mar 2009 15:08:43 +0100 + +gcc-4.4 (4.4-20090316-0ubuntu1) jaunty; urgency=low + + * Initial upload of GCC-4.4, based on trunk 20090315 (r144880). + + [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. + * Build java from the gcc-4.4 source for uploads to experimental. + + [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 Mon, 16 Mar 2009 13:28:58 +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.5.orig/debian/README.ssp +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.hurd-i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.32bit.hurd +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.amd64 +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.ia64 +++ gcc-4.4-4.4.5/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.5.orig/debian/libgfortran3.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/libobjc2.symbols.arm +++ gcc-4.4-4.4.5/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.5.orig/debian/libgnatvsnBV.overrides +++ gcc-4.4-4.4.5/debian/libgnatvsnBV.overrides @@ -0,0 +1 @@ +libgnatvsn@BV@: missing-dependency-on-libc --- gcc-4.4-4.4.5.orig/debian/libstdc++6.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.alpha +++ gcc-4.4-4.4.5/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.5.orig/debian/README.snapshot +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcj-common.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-BV-jdk.overrides +++ gcc-4.4-4.4.5/debian/gcj-BV-jdk.overrides @@ -0,0 +1 @@ +gcj-@BV@-jdk binary: wrong-name-for-upstream-changelog --- gcc-4.4-4.4.5.orig/debian/copyright.in +++ gcc-4.4-4.4.5/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.5.orig/debian/control +++ gcc-4.4-4.4.5/debian/control @@ -0,0 +1,348 @@ +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.1 +Build-Depends: dpkg-dev (>= 1.14.15), debhelper (>= 5.0.62), g++-multilib [amd64 i386 mips mipsel powerpc ppc64 s390 sparc kfreebsd-amd64], libc6.1-dev (>= 2.5) [alpha ia64] | libc0.3-dev (>= 2.5) [hurd-i386] | libc0.1-dev (>= 2.5) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.5), libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], 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], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], m4, libtool, autoconf2.59, automake1.9, 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), libmpfr-dev (>= 2.3.0), locales [!m68k !knetbsd-i386 !knetbsd-alpha], procps, sharutils, binutils-spu (>= 2.20.1-15~) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], libcloog-ppl-dev (>= 0.15.9-2~), 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 +Section: libs +Priority: required +Depends: ${misc:Depends} +Replaces: ${base:Replaces} +Description: 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: The 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 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: The 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: The 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: The 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: The GNU C compiler (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: The 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 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: The 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: libmudflap0-4.4-dev +Architecture: any +Section: libdevel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), libmudflap0 (>= ${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. + +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: gobjc++-4.4 +Architecture: any +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gobjc-4.4 (= ${gcc:Version}), g++-4.4 (= ${gcc:Version}), ${shlibs:Depends}, libobjc2 (>= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjcxx:multilib}, gcc-4.4-doc (>= ${gcc:SoftVersion}) +Provides: objc++-compiler +Description: The GNU Objective-C++ compiler + This is the GNU Objective-C++ compiler, which compiles + Objective-C++ on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc++-4.4-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 sparc +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gobjc++-4.4 (= ${gcc:Version}), g++-4.4-multilib (= ${gcc:Version}), gobjc-4.4-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: The 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). + +Package: gobjc-4.4 +Architecture: any +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gcc-4.4 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc2 (>= ${gcc:Version}), ${misc:Depends} +Suggests: ${gobjc:multilib}, gcc-4.4-doc (>= ${gcc:SoftVersion}), libobjc2-dbg +Provides: objc-compiler +Description: The GNU Objective-C compiler + This is the GNU Objective-C compiler, which compiles + Objective-C on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +Package: gobjc-4.4-multilib +Architecture: amd64 i386 kfreebsd-amd64 mips mipsel powerpc ppc64 s390 sparc +Section: devel +Priority: optional +Depends: gcc-4.4-base (= ${gcc:Version}), gobjc-4.4 (= ${gcc:Version}), gcc-4.4-multilib (= ${gcc:Version}), ${dep:libobjcbiarch}, ${shlibs:Depends}, ${misc:Depends} +Description: The 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). + +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: The 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 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: The 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: The 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: The 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: The 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 +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: The 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: The 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: The 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: The 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: The 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, automake1.9, 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.5.orig/debian/lib64stdc++6.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/source.lintian-overrides.in +++ gcc-4.4-4.4.5/debian/source.lintian-overrides.in @@ -0,0 +1,2 @@ +@SRC@: invalid-arch-string-in-source-relation +@SRC@: quilt-build-dep-but-no-series-file --- gcc-4.4-4.4.5.orig/debian/gcj-BV-jre-headless.overrides +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.mipsel +++ gcc-4.4-4.4.5/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.5.orig/debian/dh_doclink +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc2.symbols.m68k +++ gcc-4.4-4.4.5/debian/libgcc2.symbols.m68k @@ -0,0 +1,101 @@ +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@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 + __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 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 + __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 4.3.0 + __emutls_register_common@GCC_4.3.0 4.3.0 + __enable_execute_stack@GCC_3.4.2 4.2.1 + __ffsdi2@GCC_3.0 4.2.1 + __ffssi2@GCC_4.3.0 4.3.0 + __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.5.orig/debian/libgfortran3.symbols.hurd-i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/README.maintainers +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.excprop +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++CXX.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/g++-BV-CRB.prerm.in +++ gcc-4.4-4.4.5/debian/g++-BV-CRB.prerm.in @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/libgfortran3.symbols.alpha +++ gcc-4.4-4.4.5/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.5.orig/debian/gij-wrapper-BV.1 +++ gcc-4.4-4.4.5/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.5.orig/debian/rules2 +++ gcc-4.4-4.4.5/debian/rules2 @@ -0,0 +1,2132 @@ +#! /usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +.SUFFIXES: + +include debian/rules.defs +include debian/rules.parameters + +# some tools +SHELL = /bin/bash -e # brace expansion in rules file +IR = install -m 644 # Install regular file +IP = install -m 755 # Install program +IS = install -m 755 # Install script + +#number of jobs to run for build +ifeq ($(USE_NJOBS),no) + NJOBS := + USE_CPUS := 1 +else + ifeq ($(with_java),yes) + MEM_PER_CPU = 192 + else + MEM_PER_CPU = 128 + endif + NUM_CPUS := $(shell if echo $(USE_NJOBS) | grep -q -E '^[0-9]+$$'; \ + then echo $(USE_NJOBS); \ + else getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1; fi) + USE_CPUS := $(shell mt=`awk '/^MemTotal/ { print $$2 }' /proc/meminfo`; \ + awk -vn=$(NUM_CPUS) -vmt=$$mt -vm=$(MEM_PER_CPU) \ + 'END { mt/=1024; n2 = int(mt/m); print n==1 ? 1 : n2 in DEB_BUILD_OPTIONS (see #209008) +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS := -j $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +endif + +ifeq ($(with_pascal),yes) + NJOBS := +endif + +# kernel-specific ulimit hack +ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) + ULIMIT_M = if [ -e /proc/meminfo ]; then \ + m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ + /proc/meminfo`; \ + else \ + m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ + fi; \ + ulimit -m $$m; \ + echo "Limited memory for test runs to `ulimit -m`kB" +else + ULIMIT_M = true +endif + +ifeq ($(locale_data),generate) + SET_LOCPATH = LOCPATH=$(PWD)/locales +endif + +SET_PATH = PATH=$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH +ifeq ($(PKGSOURCE),gcc-snapshot) + ifneq (,$(findstring arm-linux-gnueabi,$(DEB_TARGET_GNU_TYPE))) + SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH + endif +endif + +# the recipient for the test summaries. Send with: debian/rules mail-summary +S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org + +# build not yet prepared to take variables from the environment +define unsetenv + unexport $(1) + $(1) = +endef +$(foreach v, CPPFLAGS CFLAGS CXXFLAGS FFLAGS LDFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) + +ifeq ($(REVERSE_CROSS),yes) + CC = +else + CC = $(if $(filter yes,$(with_ada)),gnatgcc,gcc) +endif + +ifneq ($(distribution),Ubuntu) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel)) + STAGE1_CFLAGS = -g -O2 + endif +endif + +ifeq ($(with_d),yes) + CFLAGS += -std=gnu99 + LDFLAGS += -lm +endif + +ifeq ($(with_ssp_default),yes) + STAGE1_CFLAGS = -g + BOOT_CFLAGS = -g -O2 + LIBCFLAGS = -g -O2 + LIBCXXFLAGS = -g -O2 -fno-implicit-templates + # Only use -fno-stack-protector when known to the stage1 compiler. + cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \ + -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ + then echo "-fno-stack-protector"; fi;) + $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \ + $(var) += $(cc-fno-stack-protector))) +endif + +ifeq ($(DEB_CROSS),yes) + CFLAGS = -g -O2 +endif + +ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS))) + LDFLAGS += -static +endif + +CFLAGS_TO_PASS = \ + $(if $(CFLAGS),CFLAGS="$(CFLAGS)") \ + $(if $(BOOT_CFLAGS),BOOT_CFLAGS="$(BOOT_CFLAGS)") \ + $(if $(LIBCFLAGS),LIBCFLAGS="$(LIBCFLAGS)") \ + $(if $(LIBCXXFLAGS),LIBCXXFLAGS="$(LIBCXXFLAGS)") +LDFLAGS_TO_PASS = \ + $(if $(LDFLAGS),LDFLAGS="$(LDFLAGS)") +STAGE1_CFLAGS_TO_PASS = \ + $(if $(STAGE1_CFLAGS),STAGE1_CFLAGS="$(STAGE1_CFLAGS)") + +docdir = usr/share/doc + +CONFARGS = -v \ + --with-pkgversion='$(distribution)$(if $(with_linaro_branch),/Linaro)___$(DEB_VERSION)' \ + --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' + +CONFARGS += \ + --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ + --prefix=/$(PF) + +ifeq ($(versioned_packages),yes) + CONFARGS += --program-suffix=-$(BASE_VERSION) +endif + +ifdef DEB_STAGE + CONFARGS += \ + --disable-libgomp \ + --disable-libmudflap \ + --disable-libssp \ + --disable-multiarch \ + --disable-multilib \ + --disable-threads \ + --libexecdir=/$(libexecdir) \ + --with-build-sysroot=$(with_build_sysroot) \ + --with-sysroot=$(with_sysroot) + + ifeq ($(DEB_STAGE),stage1) + CONFARGS += \ + --disable-shared \ + --with-newlib \ + --without-headers + else + # stage2 + CONFARGS += \ + --enable-shared + endif +else + CONFARGS += \ + --enable-shared \ + --enable-multiarch \ + --enable-linker-build-id \ + --with-system-zlib \ + +ifneq ($(PKGSOURCE),gcc-snapshot) + CONFARGS += \ + --libexecdir=/$(libexecdir) \ + --without-included-gettext \ + --enable-threads=posix \ + --with-gxx-include-dir=/$(cxx_inc_dir) \ + --libdir=/$(PF)/$(libdir) +endif + +ifneq ($(with_cpp),yes) + CONFARGS += --disable-cpp +endif + +ifeq ($(with_nls),yes) + CONFARGS += --enable-nls +else + CONFARGS += --disable-nls +endif + +ifneq ($(with_bootstrap),) + CONFARGS += --enable-bootstrap=$(with_bootstrap) +endif + +ifneq ($(with_sysroot),) + CONFARGS += --with-sysroot=$(with_sysroot) +endif +ifneq ($(with_build_sysroot),) + CONFARGS += --with-build-sysroot=$(with_build_sysroot) +endif + +ifeq ($(force_gnu_locales),yes) + CONFARGS += --enable-clocale=gnu +endif + +ifeq ($(with_cxx)-$(with_debug),yes-yes) + CONFARGS += --enable-libstdcxx-debug +endif + +ifneq ($(with_ssp),yes) + CONFARGS += --disable-libssp +endif + +ifneq ($(with_mudflap),yes) + CONFARGS += --disable-libmudflap +endif + +ifneq ($(with_gomp),yes) + CONFARGS += --disable-libgomp +endif + +ifeq ($(with_plugins),yes) + CONFARGS += --enable-plugin +endif + +ifeq ($(with_gold),yes) + CONFARGS += --enable-gold +endif + +jvm_name_short = java-1.5.0-gcj-$(BASE_VERSION)$(if $(findstring snap,$(PKGSOURCE)),-snap) +jvm_name_long = $(jvm_name_short)-1.5.0.0 + +ifeq ($(with_java),yes) + CONFARGS += --disable-browser-plugin + ifeq ($(with_java_maintainer_mode),yes) + CONFARGS += --enable-java-maintainer-mode + endif + ifeq ($(with_java_biarch_awt),yes) + CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p)-default)) + else + CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p))) + endif + ifneq (,$(findstring gtk,$(java_awt_peers))) + CONFARGS += --enable-gtk-cairo + endif + jvm_dir = /usr/lib/jvm/$(jvm_name_short) + CONFARGS += --with-java-home=/$(jvm_dir)/jre + CONFARGS += --enable-java-home \ + --with-jvm-root-dir=/$(jvm_dir) \ + --with-jvm-jar-dir=/usr/lib/jvm-exports/$(jvm_name_short) + CONFARGS += --with-arch-directory=$(java_cpu) + CONFARGS += --with-ecj-jar=/usr/share/java/eclipse-ecj.jar +endif + +ifeq ($(with_gcj),yes) + ifeq ($(DEB_HOST_GNU_CPU),m32r) + CONFARGS += --enable-libgcj + endif +endif + +ifeq ($(with_objc)-$(with_objc_gc),yes-yes) + CONFARGS += --enable-objc-gc +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu)) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu)) + ifneq ($(biarch32),yes) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe)) + CONFARGS += --enable-secureplt + ifeq ($(biarch64),yes) + CONFARGS += --disable-softfloat \ + --enable-targets=powerpc-linux,powerpc64-linux --with-cpu=default32 + else + CONFARGS += --disable-multilib + endif +endif + +ifeq ($(findstring powerpcspe,$(DEB_TARGET_ARCH)),powerpcspe) + CONFARGS += --with-cpu=8548 --enable-e500_double --with-long-double-128 +endif + +ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-float=soft +endif + +ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU))) + CONFARGS += --with-fpu=vfp +endif + +ifneq (,$(findstring arm-linux-gnueabi,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-sjlj-exceptions + # FIXME: libjava is not ported for thumb, this hack only works for + # separate gcj builds + ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring gcj,$(PKGSOURCE))) + CONFARGS += --with-arch=armv6 + else + CONFARGS += --with-arch=armv7-a + endif + CONFARGS += --with-float=softfp --with-fpu=vfpv3-d16 + endif + ifeq ($(with_arm_thumb),yes) + CONFARGS += --with-mode=thumb + endif +endif + +ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k)) + CONFARGS += --disable-werror +endif +# FIXME: correct fix-warnings.dpatch +ifeq ($(distribution),Ubuntu) + CONFARGS += --disable-werror +endif + +ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) + ifneq ($(biarch32),yes) + CONFARGS += --disable-multilib + endif +endif + +ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-system-libunwind +endif + +ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --with-multilib-list=m4,m4-nofpu --with-cpu=sh4 +endif + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 s390 s390x sparc sparc64)) + ifeq ($(DEB_TARGET_ARCH),alpha) + glibc_version := $(shell dpkg -s libc6.1 | awk '/^Version:/ {print $$2}') + else + glibc_version := $(shell dpkg -s libc6 | awk '/^Version:/ {print $$2}') + endif + with_ldbl128 := $(shell dpkg --compare-versions $(glibc_version) gt 2.3.99 && echo yes) + ifeq ($(with_ldbl128),yes) + CONFARGS += --with-long-double-128 + endif + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 kfreebsd-i386 kfreebsd-amd64)) + #CONFARGS += --with-arch-32=i486 + ifeq ($(distribution),Ubuntu) + CONFARGS += --with-arch-32=i686 + else + CONFARGS += --with-arch-32=i586 + endif +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386)) + CONFARGS += --with-arch=i586 +endif + +ifeq ($(DEB_TARGET_ARCH),lpia) + CONFARGS += --with-arch=pentium-m --with-tune=i586 +endif + +ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-i386 kfreebsd-i386 kfreebsd-amd64)) + CONFARGS += --with-tune=generic +endif + +ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarchn32)-$(biarch64),yes-yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE))) + ifeq ($(biarch64),yes) + CONFARGS += --enable-targets=all + endif +endif + +ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE))) + CONFARGS += --disable-libstdcxx-pch +endif + +ifeq ($(PKGSOURCE),gcc-snapshot) + ifeq ($(findstring --disable-werror, $(CONFARGS)),) + CONFARGS += --disable-werror + endif +else + CONFARGS += --enable-checking=release +endif + +ifeq ($(REVERSE_CROSS),yes) + # FIXME: requires ppl and cloog headers for the target + CONFARGS += --without-ppl + # FIXME: build currently fails build the precompiled headers + CONFARGS += --disable-libstdcxx-pch +endif +endif # !DEB_STAGE + +ifneq ($(DEB_CROSS),yes) + CONFARGS += \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(TARGET_ALIAS) +else + CONFARGS += \ + --program-prefix=$(TARGET_ALIAS)- \ + --includedir=/$(PF)/$(DEB_TARGET_GNU_TYPE)/include \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(TARGET_ALIAS) + ifndef DEB_STAGE + CONFARGS += \ + --with-headers=/$(PF)/$(DEB_TARGET_GNU_TYPE)/include \ + --with-libs=/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib + endif + SET_CROSS_LIB_PATH = LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib +endif + +ifeq ($(with_bootstrap),) + # no profiledbootstrap on the following architectures + # - m68k: we're happy that it builds at all + no_profiled_bs_archs := arm armel m68k + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),$(no_profiled_bs_archs))) + bootstrap_target = bootstrap-lean + else + bootstrap_target = profiledbootstrap + endif +endif +ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + bootstrap_target = bootstrap-lean +endif +ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + bootstrap_target = bootstrap-lean +endif +ifeq ($(PKGSOURCE),gcc-snapshot) + bootstrap_target = bootstrap-lean +endif + +# disable profiled bootstrap on slow archs, get to testing first ... +ifeq ($(distribution),Debian) + ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel hppa mips mipsel sparc)) + bootstrap_target = bootstrap-lean + endif +endif +ifeq ($(distribution),Ubuntu) + ifneq (,$(filter $(DEB_TARGET_ARCH), sparc)) + bootstrap_target = bootstrap-lean + endif +endif + bootstrap_target = bootstrap-lean + +DEJAGNU_TIMEOUT=300 +# Increase the timeout for one testrun on slow architectures +ifeq ($(distribution),Debian) + ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel hppa m68k sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + DEJAGNU_TIMEOUT=900 + endif +else ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(DEB_TARGET_ARCH),armel hppa ia64 sparc)) + DEJAGNU_TIMEOUT=600 + else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia)) + DEJAGNU_TIMEOUT=180 + endif +endif + +DEJAGNU_RUNS = +ifneq ($(PKGSOURCE),gcc-snapshot) +ifeq ($(with_ssp),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) + endif + # FIXME Ubuntu armel buildd hangs + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),armel)) + DEJAGNU_RUNS = + endif + ifeq ($(distribution),Ubuntu) + # the buildds are just slow ... don't check the non-default + ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),ia64 powerpc sparc)) + DEJAGNU_RUNS = + endif + endif +endif +endif +ifeq ($(with_32bit_check),yes) + DEJAGNU_RUNS += -m32 +endif +ifeq ($(with_64bit_check),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel)) + DEJAGNU_RUNS += -mabi=64 + else + DEJAGNU_RUNS += -m64 + endif +endif +ifeq ($(with_n32bit_check),yes) + DEJAGNU_RUNS += -mabi=n32 +endif + +# gdc is not multilib'd +ifneq (,$(findstring gdc, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +# neither is gnat +ifneq (,$(findstring gnat, $(PKGSOURCE))) + DEJAGNU_RUNS = +endif + +ifneq (,$(DEJAGNU_RUNS)) + RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" +endif + +# PF is the installation prefix for the package without the leading slash. +# It's "usr" for gcc releases. +ifneq (,$(PF)) + # use value set in the environment +else ifeq ($(PKGSOURCE),gcc-snapshot) + PF = usr/lib/gcc-snapshot +else + PF = usr +endif + +# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + PFL = $(PF) +endif + +# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds +ifeq ($(DEB_CROSS),yes) + RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) +else + RPF = +endif + +ifeq ($(with_multiarch_lib),yes) + libdir = lib/$(DEB_TARGET_GNU_TYPE) +else + libdir = lib +endif +# /usr/libexec doesn't follow the FHS +ifeq ($(PKGSOURCE),gcc-snapshot) + libexecdir = $(PF)/libexec + spulibexecdir = $(PF)/libexec +else + libexecdir = $(PF)/$(libdir) + spulibexecdir = $(PF)/$(libdir) +endif +buildlibdir = $(builddir)/$(TARGET_ALIAS) + +ifeq ($(with_common_gcclibdir),yes) + gcc_lib_dir = $(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION) + gcc_lexec_dir = $(libexecdir)/gcc/$(TARGET_ALIAS)/$(BASE_VERSION) + gcc_spu_lib_dir = $(PF)/spu/$(libdir)/gcc/spu/$(BASE_VERSION) + gcc_spu_lexec_dir = $(spulibexecdir)/gcc/spu/$(BASE_VERSION) +else + gcc_lib_dir = $(PF)/$(libdir)/gcc/$(TARGET_ALIAS)/$(GCC_VERSION) + gcc_lexec_dir = $(libexecdir)/gcc/$(TARGET_ALIAS)/$(GCC_VERSION) + gcc_spu_lib_dir = $(PF)/spu/$(libdir)/gcc/spu/$(GCC_VERSION) + gcc_spu_lexec_dir = $(spulibexecdir)/gcc/spu/$(GCC_VERSION) +endif + +lib32 = $(PF)/lib32 +lib64 = lib64 +libn32 = lib32 + +p_l= $(1)$(cross_lib_arch) +p_d= $(1)-dbg$(cross_lib_arch) +d_l= debian/$(p_l) +d_d= debian/$(p_d) + +usr_lib = $(PFL)/$(libdir) +usr_lib32 = $(PFL)/lib32 +usr_libn32 = $(PFL)/lib32 +usr_lib64 = $(PFL)/lib64 + +gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) +gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) +gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) + +libgcc_dir = $(RPF)/$(libdir) +# yes, really; lib32gcc_s ends up in usr +libgcc_dir32 = $(PFL)/lib32 +libgcc_dirn32 = $(RPF)/lib32 +libgcc_dir64 = $(RPF)/lib64 + +# install_gcc_lib(lib,soname,flavour,package) +define install_gcc_lib + mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ + rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} + dh_link -p$(4) \ + /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so + +endef + +checkdirs = $(builddir) +ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + ifneq ($(with_standalone_gcj),yes) + checkdirs = $(buildlibdir)/libffi $(buildlibdir)/libjava + endif + endif +endif +ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + checkdirs = $(builddir)/gcc + endif +endif + +ifneq ($(DEB_CROSS),yes) + ifneq ($(PKGSOURCE),gcc-snapshot) + cxx_inc_dir = $(PF)/include/c++/$(BASE_VERSION) + else + cxx_inc_dir = $(PF)/include/c++/$(GCC_VERSION) + endif +else + cxx_inc_dir = $(PF)/$(TARGET_ALIAS)/include/c++/$(GCC_VERSION) +endif + +default: build + +configure: $(configure_dependencies) + +$(configure_dummy_stamp): + touch $(configure_dummy_stamp) + +$(configure_stamp): + dh_testdir + : # give information about the build process + @echo "------------------------ Build process variables ------------------------" + @echo "Number of parallel processes used for the build: $(USE_CPUS)" + @echo "Package source: $(PKGSOURCE)" + @echo "GCC version: $(GCC_VERSION)" + @echo "Base Debian version: $(BASE_VERSION)" + @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" +ifeq ($(DEB_CROSS),yes) + @echo "Building cross compiler for $(DEB_TARGET_ARCH)" +endif + @echo "Using shell $(SHELL)" + @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" + @echo "CPPFLAGS: $(CPPFLAGS)" + @echo "CFLAGS: $(CFLAGS)" + @echo "LDFLAGS: $(LDFLAGS)" + @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" + @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" + @echo "Install prefix: /$(PF)" +ifeq ($(biarchn32)-$(biarch64),yes-yes) + @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" +else + ifeq ($(biarch64),yes) + @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" + else + ifeq ($(biarch32),yes) + @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" + else + @echo "Will not build the biarch compilers" + endif + endif +endif + +ifeq ($(with_cxx),yes) + @echo "Will build the C++ compiler" +else + @echo "Will not build the C++ compiler: $(with_cxx)" +endif +ifeq ($(with_objc),yes) + @echo "Will build the ObjC compiler." + ifeq ($(with_objc_gc),yes) + @echo "Will build the extra ObjC runtime for garbage collection." + else + @echo "Will not build the extra ObjC runtime for garbage collection." + endif +else + @echo "Will not build the ObjC compiler: $(with_objc)" +endif +ifeq ($(with_objcxx),yes) + @echo "Will build the Obj-C++ compiler" +else + @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" +endif +ifeq ($(with_fortran),yes) + @echo "Will build the Fortran 95 compiler." +else + @echo "Will not build the Fortran 95 compiler: $(with_fortran)" +endif +ifeq ($(with_java),yes) + @echo "Will build the Java compiler." +else + @echo "Will not build the Java compiler: $(with_java)" +endif +ifeq ($(with_pascal),yes) + @echo "Will build the Pascal compiler." +else + @echo "Will not build the Pascal compiler: $(with_pascal)" +endif +ifeq ($(with_ada),yes) + @echo "Will build the Ada compiler." + ifeq ($(with_libgnat),yes) + @echo "Will build the shared Ada libraries." + else + @echo "Will not build the shared Ada libraries." + endif +else + @echo "Will not build the Ada compiler: $(with_ada)" +endif +ifeq ($(with_d),yes) + @echo "Will build the D compiler" + ifeq ($(with_libphobos),yes) + @echo "Will build the phobos D runtime library." + else + @echo "Will not build the phobos D runtime library: $(with_libphobos)" + endif +else + @echo "Will not build the D compiler: $(with_d)" +endif +ifeq ($(with_ssp),yes) + @echo "Will build with SSP support." +else + @echo "Will build without SSP support: $(with_ssp)" +endif +ifeq ($(with_check),yes) + @echo "Will run the testsuite." + ifeq ($(biarch64),yes) + ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),mips mipsel)) + @echo 'Will run the testsuite with -mabi=64: $(with_64bit_check)' + else + @echo 'Will run the testsuite with -m64: $(with_64bit_check)' + endif + endif + ifeq ($(biarch32),yes) + @echo 'Will run the testsuite with -m32: $(with_32bit_check)' + endif + ifeq ($(biarchn32),yes) + @echo 'Will run the testsuite with -mabi=n32: $(with_n32bit_check)' + endif +else + @echo "Will not run the testsuite: $(with_check)" +endif +ifeq ($(with_nls),yes) + @echo "Will enable national language support." +else + @echo "Will disable national language support: $(with_nls)" +endif + @echo "-----------------------------------------------------------------------------" + @echo "" +ifeq ($(with_check),yes) + @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ + : ; \ + else \ + echo "expect is failing on your system with the above error, which means the GCC"; \ + echo "testsuite will fail. Please resolve the above issues and retry the build."; \ + echo "-----------------------------------------------------------------------------"; \ + exit 1; \ + fi +endif + rm -f $(configure_stamp) $(build_stamp) + : # generate debian/README.Debian + cat debian/README $(patch_stamp) > debian/README.Debian + + rm -rf $(builddir) + mkdir $(builddir) + + : # configure + cd $(builddir) \ + && $(SET_PATH) \ + CC="$(CC)" \ + $(SET_SHELL) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \ + ../src/configure $(subst ___, ,$(CONFARGS)) + + touch $(configure_stamp) + +build: $(build_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data)-$(with_cxx),generate-yes) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + - sh debian/locale-gen +endif + touch $(build_locale_stamp) + + +$(build_stamp): $(configure_stamp) $(build_locale_stamp) + dh_testdir + rm -f bootstrap-protocol +# DEB_CROSS is never set if REVERSE_CROSS is set and vice-versa. +# DEB_CROSS build +ifeq ($(DEB_CROSS),yes) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(NJOBS) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol + s=`cat status`; rm -f status; test $$s -eq 0 +else + # REVERSE_CROSS build + ifeq ($(REVERSE_CROSS),yes) + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(NJOBS) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol + s=`cat status`; rm -f status; test $$s -eq 0 +else + # Native build + ifeq ($(with_java),yes) + mkdir -p bin + ln -sf /usr/bin/fastjar bin/jar + ifeq ($(with_native_ecj),yes) + : # prepare the standalone ecj jar + cp /usr/share/java/ecj.jar $(srcdir)/ecj-standalone.jar + zip -d $(srcdir)/ecj-standalone.jar 'org/eclipse/jdt/core/JDTCompilerAdapter*' + endif + ifeq ($(with_java_maintainer_mode),yes) + ( \ + echo '#!/bin/sh'; \ + echo 'exec gij-4.3 -cp /usr/share/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "$$@"'; \ + ) > bin/ecj1 + chmod +x bin/ecj1 + : # If we don't have gjavah in PATH, try to build it with the old gij + mkdir -p bin + if [ -x /usr/bin/gjavah-4.3 ]; then \ + ln -sf /usr/bin/gjavah-4.3 bin/gjavah; \ + elif [ -x bin/gjavah ]; then \ + : ; \ + else \ + mkdir -p $(builddir)/java_hacks; \ + cd $(builddir)/java_hacks; \ + cp -a $(srcdir)/libjava/classpath/tools/external external; \ + mkdir -p gnu/classpath/tools; \ + cp -a $(srcdir)/libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} \ + gnu/classpath/tools/; \ + cp -a $(srcdir)/libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties \ + gnu/classpath/tools/common; \ + cd external/asm; \ + for i in `find . -name \*.java`; do gcj-4.3 --encoding ISO-8859-1 -C $$i -I.; done; \ + cd ../..; \ + for i in `find gnu -name \*.java`; do gcj-4.3 -C $$i -I. -Iexternal/asm/; done; \ + gcj-4.3 -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main \ + -I. -Iexternal/asm/ `find . -name \*.class` -o $(PWD)/bin/gjavah.real; \ + ( \ + echo '#!/bin/sh'; \ + echo 'export CLASSPATH='`pwd`'$${CLASSPATH:+:$$CLASSPATH}'; \ + echo 'exec $(PWD)/bin/gjavah.real "$$@"'; \ + ) > $(PWD)/bin/gjavah; \ + chmod +x $(PWD)/bin/gjavah; \ + fi + endif + endif + : # build native compiler + ( \ + set +e; \ + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(NJOBS) $(bootstrap_target) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(STAGE1_CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol + s=`cat status`; rm -f status; test $$s -eq 0 +endif +endif + -chmod 755 $(srcdir)/contrib/warn_summary + if [ -x $(srcdir)/contrib/warn_summary ]; then \ + rm -f bootstrap-summary; \ + $(srcdir)/contrib/warn_summary bootstrap-protocol \ + > bootstrap-summary; \ + fi + + touch $(build_stamp) + +ifeq ($(versioned_packages),yes) + hppa64_configure_flags += --program-suffix=-$(BASE_VERSION) +endif + +ifeq ($(DEB_CROSS),yes) + CC_for_hppa64_cross = $(CC) +else + CC_for_hppa64_cross = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ +endif + +$(configure_hppa64_stamp): $(build_stamp) + dh_testdir + rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp) + rm -rf $(builddir_hppa64) + mkdir $(builddir_hppa64) + : # configure + cd $(builddir_hppa64) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(CC_for_hppa64_cross)" \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --enable-multiarch \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --disable-libgomp \ + --disable-libmudflap \ + --disable-libssp \ + --with-as=/usr/bin/hppa64-linux-gnu-as \ + --with-ld=/usr/bin/hppa64-linux-gnu-ld \ + --includedir=/usr/hppa64-linux-gnu/include \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=hppa64-linux-gnu + touch $(configure_hppa64_stamp) + +$(build_hppa64_stamp): $(configure_hppa64_stamp) + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir_hppa64) $(NJOBS) \ + CC="$(CC_for_hppa64_cross)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) + touch $(build_hppa64_stamp) + +$(configure_neon_stamp): $(build_stamp) + dh_testdir + rm -f $(configure_neon_stamp) $(build_neon_stamp) + rm -rf $(builddir_neon) + mkdir $(builddir_neon) + : # configure + cd $(builddir_neon) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + ../src/configure \ + --disable-bootstrap \ + --enable-languages=c,c++,objc,fortran \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --program-suffix=-$(BASE_VERSION) \ + --enable-multiarch \ + --disable-nls \ + --disable-libmudflap \ + --with-arch=armv7-a --with-tune=cortex-a8 \ + --with-float=softfp --with-fpu=neon \ + --host=arm-linux-gnueabi \ + --build=arm-linux-gnueabi \ + --target=arm-linux-gnueabi + touch $(configure_neon_stamp) + +$(build_neon_stamp): $(configure_neon_stamp) + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir_neon) $(NJOBS) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) + touch $(build_neon_stamp) + +$(configure_ia6432_stamp): $(build_stamp) + dh_testdir + rm -f $(configure_ia6432_stamp) $(build_ia6432_stamp) + rm -rf $(builddir_ia6432) + mkdir $(builddir_ia6432) + : # configure + cd $(builddir_ia6432) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --enable-multiarch \ + --disable-nls \ + --disable-libmudflap \ + --program-suffix=-$(BASE_VERSION) \ + --host=ia64-linux-gnu \ + --build=ia64-linux-gnu \ + --target=i486-linux-gnu + touch $(configure_ia6432_stamp) + +$(build_ia6432_stamp): $(configure_ia6432_stamp) + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir_ia6432) $(NJOBS) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) + touch $(build_ia6432_stamp) + +spu_configure_args = \ + --enable-languages=c,c++,fortran \ + --prefix=/$(PF) \ + --libexecdir=/$(spulibexecdir) \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --enable-checking=release \ + --disable-libssp \ + --with-system-zlib \ + --with-newlib \ + --program-prefix=spu- \ + --with-as=/usr/bin/spu-as \ + --with-ar=/usr/bin/spu-ar \ + --with-ld=/usr/bin/spu-ld + +# FIXME: --with-sysroot=/usr/spu breaks libgfortran build +#ifeq ($(PKGSOURCE),gcc-snapshot) +# spu_configure_args += \ +# --with-sysroot=/usr/spu +#else + spu_configure_args += \ + --includedir=/usr/spu/include \ + --libdir=/usr/spu/lib +#endif + +spu_configure_args += \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --target=spu + +$(configure_spu_stamp): $(src_spu_stamp) $(build_stamp) + dh_testdir + rm -f $(configure_spu_stamp) $(build_spu_stamp) + rm -rf $(builddir_spu) + mkdir $(builddir_spu) + : # configure + cd $(builddir_spu) && \ + $(SET_PATH) \ + $(SET_SHELL) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + ../src-spu/configure $(spu_configure_args) + touch $(configure_spu_stamp) + +$(build_spu_stamp): $(configure_spu_stamp) + $(SET_PATH) \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir_spu) $(NJOBS) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) + touch $(build_spu_stamp) + + +MANUALS = \ + $(srcdir)/gcc/doc/cpp.texi \ + $(srcdir)/gcc/doc/cppinternals.texi \ + $(srcdir)/gcc/doc/gcc.texi \ + $(srcdir)/gcc/doc/gccint.texi +ifeq ($(with_fortran),yes) + MANUALS += $(srcdir)/gcc/fortran/gfortran.texi +endif +ifeq ($(with_java),yes) + MANUALS += $(srcdir)/gcc/java/gcj.texi +endif +ifeq ($(with_ada),yes) + MANUALS += \ + $(builddir)/gcc/doc/gnat_ugn.texi \ + $(srcdir)/gcc/ada/gnat_rm.texi \ + $(srcdir)/gcc/ada/gnat-style.texi +endif +ifeq ($(with_pascal),yes) + MANUALS += \ + $(srcdir)/gcc/p/doc/en/gpc.texi \ + $(srcdir)/gcc/p/doc/en/gpcs.texi +endif +ifeq ($(with_gomp),yes) + MANUALS += $(srcdir)/libgomp/libgomp.texi +endif + +html-docs: $(build_html_stamp) +#$(build_html_stamp): html-texi2html +#$(build_html_stamp): html-makeinfo +$(build_html_stamp): html-makeinfo-nosplit + +html-texi2html: + rm -rf html $(builddir)/gcc/html + mkdir $(builddir)/gcc/html + ln -s $(builddir)/gcc/html html + cd $(builddir)/gcc; \ + for manual in $(MANUALS); do \ + outname=`basename $${manual} .texi`; \ + echo "generating $$outname ..."; \ + texi2html -number -split chapter \ + -I $(srcdir)/gcc/doc/include \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I `dirname $${manual}` \ + -I $(builddir)/gcc \ + -subdir html \ + $${manual}; \ + done + +html-makeinfo: + rm -rf html + mkdir html + cd $(builddir)/gcc; \ + for manual in $(MANUALS); do \ + manual=`find $(srcdir) -name $${file}.texi`; \ + outname=`basename $${manual} .texi`; \ + echo "generating $$outname ..."; \ + if [ "$${manual}" ]; then \ + makeinfo --html --number-sections \ + -I $(srcdir)/gcc/doc/include -I `dirname $${manual}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -o $${outname} \ + $${manual}; \ + fi; \ + done + +html-makeinfo-nosplit: + rm -rf html + mkdir html + cd $(builddir)/gcc; \ + for manual in $(MANUALS); do \ + outname=`basename $${manual} .texi`.html; \ + echo "generating $$outname ..."; \ + makeinfo --html --number-sections --no-split \ + -I $(srcdir)/gcc/doc/include -I `dirname $${manual}` \ + -I $(srcdir)/gcc/p/doc \ + -I $(srcdir)/gcc/p/doc/generated \ + -I $(builddir)/gcc \ + -o $(PWD)/html/$${outname} \ + $${manual}; \ + done + +# start the script only on architectures known to have slow autobilders ... +logwatch_archs := alpha arm armel m68k mips mipsel sparc +ifeq ($(DEB_HOST_GNU_CPU), $(findstring $(DEB_HOST_GNU_CPU),$(logwatch_archs))) + start_logwatch = yes +endif +ifeq ($(DEB_HOST_GNU_SYSTEM),gnu) + start_logwatch = yes +endif + +stamps/mauve-build: stamps/build + rm -rf mauve + mkdir -p mauve +ifeq ($(with_mauve_check),yes) + tar xf $(wildcard /usr/src/mauve*.tar.*) + cd mauve \ + && aclocal \ + && automake \ + && autoconf2.59 \ + && PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) + PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH $(MAKE) -C mauve +endif + touch $@ + +stamps/mauve-check: stamps/build stamps/mauve-build +ifeq ($(with_mauve_check),yes) + -cd mauve && \ + JAVA_HOME=$(CURDIR)/$(sdkimg) \ + PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH \ + xvfb-run -s "-extension GLX" java Harness \ + -vm $(CURDIR)/$(sdkimg)/bin/java \ + -file $(CURDIR)/debian/mauve_tests \ + -timeout 30000 2>&1 \ + | tee mauve_output + @sleep 5 +else + echo "mauve testsuite not run for this build" > mauve/mauve_output +endif + touch $@ + +check: $(check_stamp) # $(if $(filter yes, $(with_java)),stamps/05-build-mauve-stamp) #$(check_inst_stamp) +$(check_stamp): $(build_stamp) $(build_locale_stamp) + rm -f test-protocol + + -chmod 755 $(srcdir)/contrib/test_summary +ifneq (,$(findstring gcc-4, $(PKGSOURCE))) +ifneq ($(with_common_libs),yes) + : # libstdc++6 built from newer gcc-4.x source, run testsuite against the installed lib + + sed 's/-L[^ ]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \ + > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed + -$(ULIMIT_M); \ + set +e; \ + for d in $(buildlibdir)/libstdc++-v3/testsuite; do \ + echo "Running testsuite in $$d ..."; \ + TEST_INSTALLED=1 \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + $(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol2 + + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > raw-test-summary + -( \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \ + ) > libstdc++-test-summary + echo 'BEGIN installed libstdc++-v3 test-summary' + cat libstdc++-test-summary + echo 'END installed libstdc++-v3 test-summary' + find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \ + | xargs -r rm -f +endif +endif + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \ + -m '\ntestsuite still running ...\n' \ + test-protocol \ + $(builddir)/gcc/testsuite/gcc/gcc.log \ + $(builddir)/gcc/testsuite/g++/g++.log \ + $(builddir)/gcc/testsuite/gfortran/gfortran.log \ + $(builddir)/gcc/testsuite/objc/objc.log \ + $(builddir)/gcc/testsuite/obj-c++/obj-c++.log \ + $(builddir)/gcc/testsuite/gnat/gnat.log \ + $(builddir)/gcc/testsuite/ada/acats/acats.log \ + $(builddir)/gcc/testsuite/gfortran/gfortran.log \ + $(builddir)/gcc/p/test/test_log \ + $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-v3.log \ + $(buildlibdir)/libjava/testsuite/libjava.log \ + $(buildlibdir)/libmudflap/testsuite/libmudflap.log \ + $(buildlibdir)/libgomp/testsuite/libgomp.log \ + $(buildlibdir)/libffi/testsuite/libffi.log \ + & +endif + +ifeq ($(with_ada),yes) + chmod +x debian/acats-killer.sh + -debian/acats-killer.sh -p $(builddir)/acats-killer.pid \ + $(builddir)/gcc/testsuite/ada/acats/acats.log \ + $(builddir)/gcc/testsuite/g++.log \ + & +endif + + -$(ULIMIT_M); \ + set +e; \ + for d in $(checkdirs); do \ + echo "Running testsuite in $$d ..."; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(SET_PATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + $(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \ + done 2>&1 | tee test-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + -if [ -f $(builddir)/logwatch.pid ]; then \ + kill -1 `cat $(builddir)/logwatch.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/logwatch.pid`; \ + rm -f $(builddir)/logwatch.pid; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + +ifeq ($(with_ada),yes) + -if [ -f $(builddir)/acats-killer.pid ]; then \ + kill -1 `cat $(builddir)/acats-killer.pid`; \ + sleep 1; \ + kill -9 `cat $(builddir)/acats-killer.pid`; \ + rm -f $(builddir)/acats-killer.pid; \ + fi +endif + + : # running the libjava testsuite alone is missing this information + $(builddir)/gcc/xgcc -B$(builddir)/gcc/ -v > $(builddir)/compiler_version.sum 2>&1 + + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-summary; \ + ( \ + cd $(builddir); \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + echo 'Bootstrap comparison failure:' >> ts-include; \ + cat $(builddir)/gcc/.bad_compare >> ts-include; \ + echo '' >> ts-include; \ + echo '' >> ts-include; \ + fi; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp3-dev libmpfr-dev libppl0.10-dev libcloog-ppl-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + cat ../$(patch_stamp) >> ts-include; \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-summary; \ + if [ -n "$(testsuite_tarball)" ]; then \ + echo "Test suite used: $(testsuite_srcdir)" > test-summary; \ + echo " Do not interpret the results on its own" >> test-summary; \ + echo " but compare them with the results from" >> test-summary; \ + echo " the gcc-snapshot package." >> test-summary; \ + fi; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \ + >> test-summary; \ + awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \ + if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \ + echo '' >> test-summary; \ + cat bootstrap-summary >> test-summary; \ + fi; \ + echo 'BEGIN test-summary'; \ + cat test-summary; \ + echo 'END test-summary'; \ + fi + + touch $(check_stamp) + +$(check_inst_stamp): $(check_stamp) + rm -f test-inst-protocol + +ifeq ($(start_logwatch),yes) + : # start logwatch script for regular output during test runs + chmod +x debian/logwatch.sh + -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \ + -m '\ntestsuite (3.3) still running ...\n' \ + test-inst-protocol \ + check-inst/{gcc,g++,g77,objc}.log \ + & +endif + + rm -rf check-inst + mkdir check-inst + + echo "Running testsuite ..." + -$(ULIMIT_M) ; \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + cd check-inst && $(srcdir)/contrib/test_installed \ + --with-gcc=gcc-3.3 --with-g++=g++-3.3 --with-g77=g77-3.3 \ + 2>&1 | tee test-inst-protocol + + -ps aux | fgrep logwatch | fgrep -v fgrep + if [ -f $(builddir)/logwatch-inst.pid ]; then \ + kill -1 `cat $(builddir)/logwatch-inst.pid`; \ + else \ + true; \ + fi + -ps aux | fgrep logwatch | fgrep -v fgrep + + -chmod 755 $(srcdir)/contrib/test_summary + if [ -x $(srcdir)/contrib/test_summary ]; then \ + rm -f test-inst-summary; \ + ( \ + cd check-inst; \ + echo '' > ts-include; \ + echo '' >> ts-include; \ + echo "Build Dependencies:" >> ts-include; \ + dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + libgmp3-dev libmpfr-dev libmpc-dev libppl0.10-dev libcloog-ppl-dev \ + | fgrep -v '' >> ts-include; \ + echo '' >> ts-include; \ + echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \ + $(srcdir)/contrib/test_summary \ + -i ts-include -m "$(S_EMAIL)" \ + ) > raw-test-inst-summary; \ + sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \ + >> test-inst-summary; \ + awk '/^cat/, /^EOF/' raw-test-inst-summary \ + | grep -v EOF >> test-inst-summary; \ + echo 'BEGIN test-installed-summary'; \ + cat test-inst-summary; \ + echo 'END test-installed-summary'; \ + fi + + chmod 755 debian/reduce-test-diff.awk + if diff -u test-inst-summary test-summary \ + | debian/reduce-test-diff.awk > diff-summary; \ + then \ + mv -f diff-summary testsuite-comparision; \ + else \ + ( \ + echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \ + echo ''; \ + cat diff-summary; \ + ) > testsuite-comparision; \ + rm -f diff-summary; \ + fi + touch $(check_inst_stamp) + +clean: debian/control + dh_testdir + rm -f pxxx status + rm -f *-summary *-protocol testsuite-comparision summary-diff +ifeq ($(with_pascal),yes) + -rm -f $(srcdir)/gcc/p/doc/*info + rm -f $(srcdir)/gcc/p/test/{fjf51,fjf141aa,fjf199aa,magic,?,knownbugs/a.out} +endif + if [ -f $(srcdir)/gcc/p/config-lang.in.debian ]; then \ + mv -f $(srcdir)/gcc/p/config-lang.in.debian $(srcdir)/gcc/p/config-lang.in; \ + else true; fi + rm -f $(srcdir)/gcc/po/*.gmo + rm -f debian/lib{gcc,gcj,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} + fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || continue; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/PV/$(GPC_BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/MF/$(MUDFLAP_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + rm -f $$f2; \ + done + rm -f debian/shlibs.local debian/substvars.local + rm -f debian/*.debhelper + -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean + rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian + rm -f debian/lib*gcj-bc.shlibs + rm -rf bin locales share + rm -rf check-inst + rm -rf .pc + dh_clean + +# ----------------------------------------------------------------------------- +# some abbrevations for the package names and directories; +# p_XXX is the package name, d_XXX is the package directory +# these macros are only used in the binary-* targets. + +ifeq ($(versioned_packages),yes) + pkg_ver := -$(BASE_VERSION) +endif + +ifneq ($(DEB_CROSS),yes) + p_base = gcc$(pkg_ver)-base + p_gcc = gcc$(pkg_ver) + p_cpp = cpp$(pkg_ver) + p_cppd = cpp$(pkg_ver)-doc + p_cxx = g++$(pkg_ver) + p_doc = gcc$(pkg_ver)-doc + p_lgcc = libgcc$(GCC_SONAME) +else + # only triggered if DEB_CROSS set + p_base = gcc$(pkg_ver)$(cross_bin_arch)-base + p_cpp = cpp$(pkg_ver)$(cross_bin_arch) + p_gcc = gcc$(pkg_ver)$(cross_bin_arch) + p_cxx = g++$(pkg_ver)$(cross_bin_arch) +endif +p_hppa64 = gcc$(pkg_ver)-hppa64 + +d = debian/tmp +d_base = debian/$(p_base) +d_gcc = debian/$(p_gcc) +d_cpp = debian/$(p_cpp) +d_cppd = debian/$(p_cppd) +d_cxx = debian/$(p_cxx) +d_doc = debian/$(p_doc) +d_lgcc = debian/$(p_lgcc) +d_hppa64= debian/$(p_hppa64) + +d_spu = debian/tmp-spu +d_neon = debian/tmp-neon + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +ifeq ($(DEB_CROSS),yes) + lib_binaries := indep_binaries +else + lib_binaries := arch_binaries +endif + +# --------------------------------------------------------------------------- + +ifeq ($(PKGSOURCE),gcc-snapshot) + include debian/rules.d/binary-snapshot.mk +else + +ifeq ($(with_gccxbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifneq ($(DEB_STAGE),stage1) + include debian/rules.d/binary-libgcc.mk +endif + +ifeq ($(with_libgmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifneq ($(DEB_CROSS),yes) +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +endif +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp.mk +endif + +ifeq ($(with_proto),yes) + include debian/rules.d/binary-proto.mk +endif + +ifeq ($(with_fixincl),yes) + include debian/rules.d/binary-fixincl.mk +endif + +ifeq ($(with_mudflap),yes) + include debian/rules.d/binary-libmudflap.mk +endif + +ifeq ($(with_libssp),yes) + include debian/rules.d/binary-libssp.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc.mk +endif +ifeq ($(with_libobjc),yes) + include debian/rules.d/binary-libobjc.mk +endif + +# include before cxx +ifeq ($(with_java),yes) + include debian/rules.d/binary-java.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx.mk +endif + +ifeq ($(with_f77),yes) + include debian/rules.d/binary-f77.mk +endif + +ifeq ($(with_fortran),yes) + include debian/rules.d/binary-fortran.mk +endif + +ifeq ($(with_ada),yes) + include debian/rules.d/binary-ada.mk +endif + +ifeq ($(with_pascal),yes) + include debian/rules.d/binary-pascal.mk +endif + +ifeq ($(with_d),yes) + include debian/rules.d/binary-d.mk +endif + +ifeq ($(with_libnof),yes) + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + include debian/rules.d/binary-nof.mk + endif +endif + +# gcc must be moved/built after g77 and g++ +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-gcc.mk +endif + +ifeq ($(with_hppa64),yes) + include debian/rules.d/binary-hppa64.mk +endif + +ifeq ($(with_neon),yes) + include debian/rules.d/binary-neon.mk +endif + +ifeq ($(with_spu),yes) + include debian/rules.d/binary-spu.mk +endif + +endif # ($(PKGSOURCE),gcc-snapshot) + +# ---------------------------------------------------------------------- +install: $(install_dependencies) + +$(install_dummy_stamp): $(build_dummy_stamp) + touch $(install_dummy_stamp) + +$(install_snap_stamp): $(build_dependencies) + dh_testdir + dh_testroot + dh_clean -k + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(PF) + +ifeq ($(with_hppa64),yes) + : # Install hppa64 + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d) \ + install + + ls -l $(d)/$(PF)/bin + if [ ! -x $(d)/$(PF)/bin/hppa64-linux-gnu-gcc ]; then \ + mv $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-4* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-4*; \ + fi + + : # remove files not needed from the hppa64 build + rm -rf $(d)/$(PF)/info + rm -rf $(d)/$(PF)/man + rm -f $(d)/$(PF)/lib/libiberty.a + rm -f $(d)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} + + rm -rf $(d)/$(PF)/hppa64-linux-gnu/include + rm -rf $(d)/$(PF)/hppa64-linux-gnu/lib + set -e; \ + cd $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(GCC_VERSION)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done +endif + +ifeq ($(with_spu),yes) + : # Install spu + $(SET_PATH) \ + $(MAKE) -C $(builddir_spu) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d) \ + install + + ls -l $(d)/$(PF)/bin + if [ ! -x $(d)/$(PF)/bin/spu-gcc ]; then \ + mv $(d)/$(PF)/bin/spu-gcc-4* $(d)/$(PF)/bin/spu-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/spu-gcc-4*; \ + fi + if [ ! -x $(d)/$(PF)/bin/spu-g++ ]; then \ + mv $(d)/$(PF)/bin/spu-g++-4* $(d)/$(PF)/bin/spu-g++; \ + else \ + rm -f $(d)/$(PF)/bin/spu-g++-4*; \ + fi +ifneq (,$(findstring fortran, $(spu_configure_args))) + if [ ! -x $(d)/$(PF)/bin/spu-gfortran ]; then \ + mv $(d)/$(PF)/bin/spu-gfortran-4* $(d)/$(PF)/bin/spu-gfortran; \ + else \ + rm -f $(d)/$(PF)/bin/spu-gfortran-4*; \ + fi +endif + rm -f $(d)/$(PF)/bin/spu-c++* + + : # remove files not needed from the spu build + rm -rf $(d)/$(PF)/info + rm -rf $(d)/$(PF)/man + rm -f $(d)/$(PF)/lib/libiberty.a + rm -f $(d)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} + + rm -rf $(d)/$(PF)/spu/include + rm -rf $(d)/$(PF)/spu/lib + set -e; \ + cd $(d)/$(PF)/$(libdir)/gcc/spu/$(GCC_VERSION)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done +endif + + : # Work around PR lto/41569 + ln -sf gcc $(builddir)/prev-gcc + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + + ls -l $(d)/$(PF)/bin + if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ + mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-4* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ + else \ + rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-4*; \ + fi + set -e; \ + cd $(d)/$(gcc_lib_dir)/include-fixed; \ + for i in *; do \ + case "$$i" in \ + README|features.h|syslimits.h|limits.h) ;; \ + linux|$(TARGET_ALIAS)) ;; \ + $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \ + *) echo "remove include-fixed/$$i"; rm -rf $$i; \ + esac; \ + done + +ifeq ($(biarch64)-$(with_cxx),yes-yes) + ifneq (,$(filter libstdc++-v3, $(biarch_multidir_names))) + : # fix biarch C++ header installation + ifeq ($(DEB_TARGET_ARCH),i386) + mv $(d)/$(cxx_inc_dir)/x86_64-linux-gnu/64 \ + $(d)/$(cxx_inc_dir)/i486-linux-gnu/ + rmdir $(d)/$(cxx_inc_dir)/x86_64-linux-gnu + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + mv $(d)/$(cxx_inc_dir)/powerpc64-linux-gnu/64 \ + $(d)/$(cxx_inc_dir)/powerpc-linux-gnu/ + rmdir $(d)/$(cxx_inc_dir)/powerpc64-linux-gnu + endif + ifeq ($(DEB_TARGET_ARCH),s390) + mv $(d)/$(cxx_inc_dir)/s390x-linux-gnu/64 \ + $(d)/$(cxx_inc_dir)/s390-linux-gnu/ + rmdir $(d)/$(cxx_inc_dir)/s390x-linux-gnu + endif + endif +endif + +# FIXME: libjava/classpath not correctly patched +ifeq ($(with_java),yes) + -if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \ + ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \ + mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \ + $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \ + rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \ + fi +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + +$(install_stamp): $(build_stamp) + dh_testdir + dh_testroot + dh_clean -k -N$(p_hppa64) + + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ + fi + if [ -f $(binary_stamp)-spu ]; then \ + mv $(binary_stamp)-spu saved-stamp-spu; \ + fi + rm -f $(binary_stamp)* + if [ -f saved-stamp-hppa64 ]; then \ + mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ + fi + if [ -f saved-stamp-spu ]; then \ + mv saved-stamp-spu $(binary_stamp)-spu; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/lib32/debug +endif +ifeq ($(biarch64),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif +ifeq ($(biarchn32),yes) + mkdir -p $(d)/$(PF)/$(libn32)/debug +endif + +ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64)) + : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 + : # (this works when CONFARGS contains '--disable-multilib') + ln -s $(libdir) $(d)/lib64 + mkdir -p $(d)/$(PF)/$(libdir) + ln -s $(libdir) $(d)/$(PF)/lib64 +endif + + : # Install everything + $(SET_PATH) \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + +ifeq ($(with_common_gcclibdir),yes) + mv $(d)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lib_dir)) \ + $(d)/$(gcc_lib_dir) + ifneq ($(gcc_lib_dir),$(gcc_lexec_dir)) + mv $(d)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lexec_dir)) \ + $(d)/$(gcc_lexec_dir) + endif + ifeq ($(with_d)-$(with_libphobos),yes-yes) + mv $(d)/$(PF)/include/d$(libphobos_version)/$(GCC_VERSION) \ + $(d)/$(PF)/include/d$(libphobos_version)/$(BASE_VERSION) + endif +endif + +ifeq ($(biarch64)-$(with_cxx),yes-yes) + ifneq (,$(filter libstdc++-v3, $(biarch_multidir_names))) + ifeq ($(DEB_TARGET_ARCH),i386) + : # fix biarch C++ header installation + mv $(d)/$(cxx_inc_dir)/x86_64-linux-gnu/64 \ + $(d)/$(cxx_inc_dir)/i486-linux-gnu/ + rmdir $(d)/$(cxx_inc_dir)/x86_64-linux-gnu + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + : # fix biarch C++ header installation + mv $(d)/$(cxx_inc_dir)/powerpc64-linux-gnu/64 \ + $(d)/$(cxx_inc_dir)/powerpc-linux-gnu/ + rmdir $(d)/$(cxx_inc_dir)/powerpc64-linux-gnu + endif + endif +endif + +# FIXME: libjava/classpath not correctly patched +ifeq ($(with_java),yes) + -if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \ + ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \ + mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \ + $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \ + rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \ + fi +endif + + : # remove rpath settings from binaries and shared libs + for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PF)/lib*/lib*.so.* \ + $(d)/$(PF)/lib*/gcj$(pkg_ver)*/lib*.so.* \ + 2>/dev/null | awk -F: '/RPATH=/ {print $$1}'); \ + do \ + case "$$i" in ecj1|*gij-*|*libjawt*|*libjvm*) continue; esac; \ + [ -h $$i ] && continue; \ + chrpath --delete $$i; \ + echo "removed RPATH: $$i"; \ + done + + : # remove '*.la' and '*.lai' files, not shipped in any package. + find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f + +ifneq ($(with_libgnat),yes) + rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in gcc gcov; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + + ifeq ($(with_fortran),yes) + for i in g77; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif + ifeq ($(with_java),yes) + for i in gcj gcjh gij jv-convert jv-scan jcf-dump grmic grmiregistry; \ + do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif +endif + +ifeq ($(with_pascal),yes) + : # gpc is already versioned with the gcc version. + mv $(d)/$(PF)/bin/gpc$(pkg_ver) $(d)/$(PF)/bin/gpc + mv $(d)/$(PF)/share/man/man1/gpc$(pkg_ver).1 \ + $(d)/$(PF)/share/man/man1/gpc.1 +endif +ifeq ($(versioned_packages),yes) + ifeq ($(with_pascal),yes) + ifeq ($(GFDL_INVARIANT_FREE),yes) + for i in binobj gpc gpc-run gpidump; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(pkg_ver)/g" \ + -e "s/@name@/$$i$(pkg_ver)/g" \ + debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ + done + endif + ifeq ($(with_gpidump),yes) + : # rename files (versioned gpc binaries) + for i in binobj gpc gpc-run gpidump; do \ + mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i$(pkg_ver); \ + done + : # rename files (versioned gpc man pages) + for i in binobj gpc gpc-run gpidump; do \ + mv $(d)/$(PF)/share/man/man1/$$i.1 \ + $(d)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \ + done + else + : # rename files (versioned gpc binaries) + for i in binobj gpc gpc-run; do \ + mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i$(pkg_ver); \ + done + : # rename files (versioned gpc man pages) + for i in binobj gpc gpc-run; do \ + mv $(d)/$(PF)/share/man/man1/$$i.1 \ + $(d)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \ + done + endif + endif +endif + +# ifeq ($(with_ada),yes) +# : # rename files (versioned ada binaries) +# for i in ; do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# mv $(d)/$(PF)/share/man/man1/$$i.1 \ +# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ +# done +# for i in $(GNAT_TOOLS); do \ +# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ +# done +# endif + +ifeq ($(DEB_CROSS),yes) + ifeq ($(DEB_TARGET_ARCH),s390) + : # s390 64bit stuff happens to be in s390x-linux-gnu/lib64/ + mkdir -p $(d)/$(PF)/s390-linux-gnu/lib64 + cp -a $(d)/$(PF)/s390x-linux-gnu/lib64/* $(d)/$(PF)/s390-linux-gnu/lib64/ + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + : # ppc 64bit build slaps libgcc and libstdc++ to powerpc64-linux-gnu + cp -a $(d)/$(PF)/powerpc64-linux-gnu/lib64/* $(d)/$(PF)/powerpc-linux-gnu/lib64/ + endif +endif + + chmod 755 debian/dh_* + +# tar cf tmp.tar debian/tmp + + touch $(install_stamp) + +$(install_hppa64_stamp): $(build_hppa64_stamp) + dh_testdir + dh_testroot + rm -rf $(d_hppa64) + mkdir -p $(d_hppa64)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_hppa64) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d_hppa64) \ + install + +ifeq ($(versioned_packages),yes) + mv $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-gcc-$(GCC_VERSION) \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-gcc$(pkg_ver) + mv $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-cpp \ + $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-cpp$(pkg_ver) +endif + +ifneq ($(PKGSOURCE),gcc-snapshot) + : # remove files not needed + rm -rf $(d_hppa64)/$(PF)/info + rm -rf $(d_hppa64)/$(PF)/man + rm -f $(d_hppa64)/$(PF)/$(libdir)/libiberty.a + rm -f $(d_hppa64)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} + + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu/include + rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu/lib + rm -rf $(d_hppa64)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(GCC_VERSION)/install-tools +endif + + touch $(install_hppa64_stamp) + +$(install_neon_stamp): $(build_neon_stamp) + dh_testdir + dh_testroot + rm -rf $(d_neon) + mkdir -p $(d_neon)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_neon) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d_neon) \ + install + touch $(install_neon_stamp) + +$(install_spu_stamp): $(build_spu_stamp) + dh_testdir + dh_testroot + rm -rf $(d_spu) + mkdir -p $(d_spu)/$(PF) + + $(SET_PATH) \ + $(MAKE) -C $(builddir_spu) \ + CC="$(CC)" \ + $(CFLAGS_TO_PASS) \ + $(LDFLAGS_TO_PASS) \ + DESTDIR=$(PWD)/$(d_spu) \ + install + +ifeq ($(with_common_gcclibdir),yes) + mv $(d_spu)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_spu_lib_dir)) \ + $(d_spu)/$(gcc_spu_lib_dir) + ifneq ($(gcc_spu_lib_dir),$(gcc_spu_lexec_dir)) + mv $(d_spu)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_spu_lexec_dir)) \ + $(d_spu)/$(gcc_spu_lexec_dir) + endif +endif + +ifeq ($(versioned_packages),yes) + mv $(d_spu)/$(PF)/bin/spu-cpp \ + $(d_spu)/$(PF)/bin/spu-cpp$(pkg_ver) + mv $(d_spu)/$(PF)/bin/spu-gcc-$(GCC_VERSION) \ + $(d_spu)/$(PF)/bin/spu-gcc$(pkg_ver) + mv $(d_spu)/$(PF)/bin/spu-g++ \ + $(d_spu)/$(PF)/bin/spu-g++$(pkg_ver) + ifneq (,$(findstring fortran, $(spu_configure_args))) + mv $(d_spu)/$(PF)/bin/spu-gfortran \ + $(d_spu)/$(PF)/bin/spu-gfortran$(pkg_ver) + endif + rm -f $(d_spu)/$(PF)/bin/spu-c++* + + ifneq ($(GFDL_INVARIANT_FREE),yes) + mkdir -p $(d_spu)/$(PF)/share + mv $(d_spu)/$(PF)/man $(d_spu)/$(PF)/share/ + for i in spu-cpp spu-gcc spu-g++ spu-gcov spu-gfortran; do \ + mv $(d_spu)/$(PF)/share/man/man1/$$i.1 $(d_spu)/$(PF)/share/man/man1/$$i-$(BASE_VERSION).1; \ + done + endif +endif + +ifneq ($(PKGSOURCE),gcc-snapshot) + : # remove files not needed + rm -rf $(d_spu)/$(PF)/info +# rm -rf $(d_spu)/$(PF)/man + rm -f $(d_spu)/$(PF)/lib/libiberty.a + rm -f $(d_spu)/$(PF)/bin/*{protoize,gcov,gccbug,gcc} + +# rm -rf $(d_spu)/$(PF)/spu/include +# rm -rf $(d_spu)/$(PF)/spu/lib +endif + + touch $(install_spu_stamp) + +# ---------------------------------------------------------------------- +# Build architecture-dependent files here. +#binary-arch: build install $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) +binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) +ifeq ($(with_check),yes) + @echo Done +# : # Send Email about sucessfull build. +# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" +endif + +# ---------------------------------------------------------------------- +# Build architecture-independent files here. +#binary-indep: build install $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) +binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary --- gcc-4.4-4.4.5.orig/debian/libgfortran3.symbols.powerpc +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.mipsel +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.ldbl.32bit.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.alpha +++ gcc-4.4-4.4.5/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.5.orig/debian/gfortran-BV-CRB.postinst.in +++ gcc-4.4-4.4.5/debian/gfortran-BV-CRB.postinst.in @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +if [ "$1" = "configure" ]; then + update-alternatives --quiet \ + --install /usr/bin/@TARGET@-gfortran @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ @gcc_priority@ \ + @GFDL@--slave /usr/share/man/man1/@TARGET@-gfortran.1.gz @TARGET@-gfortran.1.gz /usr/share/man/man1/@TARGET@-gfortran-@BV@.1.gz +fi + +#DEBHELPER# + +exit 0 --- gcc-4.4-4.4.5.orig/debian/libstdc++6.symbols.arm +++ gcc-4.4-4.4.5/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.5.orig/debian/gnatprj.gpr +++ gcc-4.4-4.4.5/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.5.orig/debian/libstdc++6.symbols.common +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.lpia +++ gcc-4.4-4.4.5/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.5.orig/debian/gcj-BV-jre-headless.prerm +++ gcc-4.4-4.4.5/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.5.orig/debian/gnatvsn.gpr +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gomp1.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-CRB.prerm.in +++ gcc-4.4-4.4.5/debian/gcc-BV-CRB.prerm.in @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; 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.5.orig/debian/libgfortran3.symbols.i386 +++ gcc-4.4-4.4.5/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.5.orig/debian/gcc-BV-hppa64.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64gfortran3.symbols.s390 +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32gomp1.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/rules.sonames +++ gcc-4.4-4.4.5/debian/rules.sonames @@ -0,0 +1,60 @@ +ifneq ($(vafilt_defined),1) + $(error rules.defs must be included before rules.sonames) +endif + +ifeq (,$(wildcard debian/soname-cache)) + SONAME_VARS := $(shell \ + cache=debian/soname-cache; \ + rm -f $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libstdc++-v3/configure.ac`; \ + echo CXX_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libobjc/configure.ac`; \ + echo OBJC_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \ + echo FORTRAN_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libmudflap/libtool-version | cut -d: -f1`; \ + echo MUDFLAP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \ + echo SSP_SONAME=$$v >> $$cache; \ + v=`tail -1 $(srcdir)/libjava/libtool-version | cut -d: -f1`; \ + echo GCJ_SONAME=$$v >> $$cache; \ + if [ "$$v" -ge 70 ]; then \ + echo GCJ_SONAME1=`echo $$v | sed 's/.$$//'` >> $$cache; \ + echo GCJ_SONAME2=`echo $$v | sed 's/.*\(.\)$$/\1/'` >> $$cache; \ + else \ + echo GCJ_SONAME1=$$v >> $$cache; \ + echo GCJ_SONAME2= >> $$cache; \ + fi; \ + v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \ + echo FFI_SONAME=$$v >> $$cache; \ + v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgomp/configure.ac`; \ + echo GOMP_SONAME=$$v >> $$cache; \ + if [ "$(with_libgmath)" = yes ]; then \ + v=`tail -1 $(srcdir)/libgcc-math/libtool-version | cut -d: -f1`; \ + echo GCCMATH_SONAME=$$v >> $$cache; \ + fi; \ + v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ + | sed -e 's/.*"\([^"]*\)".*/\1/'`; \ + echo GNAT_SONAME=$$v >> $$cache; \ + cat $$cache) +else + SONAME_VARS := $(shell cat debian/soname-cache) +endif +CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) +OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) +FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) +MUDFLAP_SONAME = $(call vafilt,$(SONAME_VARS),MUDFLAP_SONAME) +SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) +GCJ_SONAME = $(call vafilt,$(SONAME_VARS),GCJ_SONAME) +GCJ_SONAME1 = $(call vafilt,$(SONAME_VARS),GCJ_SONAME1) +GCJ_SONAME2 = $(call vafilt,$(SONAME_VARS),GCJ_SONAME2) +FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) +GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) +GCCMATH_SONAME = $(call vafilt,$(SONAME_VARS),GCCMATH_SONAME) +GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) + +# alias +GFORTRAN_SONAME = $(FORTRAN_SONAME) --- gcc-4.4-4.4.5.orig/debian/libstdc++6.symbols.m68k +++ gcc-4.4-4.4.5/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.5.orig/debian/lib64stdc++6.symbols.sparc +++ gcc-4.4-4.4.5/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.5.orig/debian/source.lintian-overrides +++ gcc-4.4-4.4.5/debian/source.lintian-overrides @@ -0,0 +1,2 @@ +gcc-4.4: invalid-arch-string-in-source-relation +gcc-4.4: quilt-build-dep-but-no-series-file --- gcc-4.4-4.4.5.orig/debian/rules.conf +++ gcc-4.4-4.4.5/debian/rules.conf @@ -0,0 +1,886 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs +include debian/rules.sonames + +# Helper to generate biarch/triarch dependencies. +# For example, $(eval $(call gen_multilib_deps,gomp)) will create the +# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} +# variables if biarch{32,64,n32} is set to yes. +define gen_multilib_deps + lib$1biarch64 := lib64$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version}) + lib$1biarch32 := lib32$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version}) + lib$1biarchn32 := libn32$1$$($(shell echo $1 | tr "a-z" "A-Z")_SONAME)$(LS) (>= $$$${gcc:Version}) + ifeq ($$(biarch64),yes) + lib$1biarch := $$(lib$1biarch64) + endif + ifeq ($$(biarch32),yes) + lib$1biarch := $$(lib$1biarch32) + endif + ifeq ($$(biarchn32),yes) + ifeq ($$(biarch64),yes) + lib$1biarch := $$(lib$1biarch64), $$(lib$1biarchn32) + else + lib$1biarch := $$(lib$1biarchn32) + endif + endif +endef +$(foreach x,gomp mudflap ssp gfortran objc,$(eval $(call gen_multilib_deps,$(x)))) + +# Helper to generate _no_archs variables. +# For example, $(eval $(call gen_no_archs,java)) will create the java_no_archs +# variable, using the java_no_cpu and java_no_systems variables. +define gen_no_archs + $1_no_archs := + ifneq (,$$($1_no_cpus)) + $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 alpha arm,$$($1_no_cpus)),!$$(cpu)) + ifneq (,$$(filter i386,$$($1_no_cpus))) + $1_no_archs += !i386 !hurd-i386 !kfreebsd-i386 !knetbsd-i386 + endif + ifneq (,$$(filter amd64,$$($1_no_cpus))) + $1_no_archs += !amd64 !kfreebsd-amd64 + endif + ifneq (,$$(filter alpha,$$($1_no_cpus))) + $1_no_archs += !alpha !hurd-alpha !knetbsd-alpha + endif + ifneq (,$$(filter arm,$$($1_no_cpus))) + $1_no_archs += !arm !armel + endif + ifneq (,$$(strip $3)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE)) + $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system)))) + endif + endif + ifneq (,$$($1_no_systems)) + $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE)) + $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system)))) + endif + $1_no_archs := $$(strip $$($1_no_archs)) +endef +base_deb_cpus := i386 alpha +base_deb_systems := +$(foreach x,ada java java_plugin pascal fortran libphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems)))) +linux_no_archs := !hurd-i386 !hurd-alpha !kfreebsd-i386 !kfreebsd-amd64 !knetbsd-i386 !knetbsd-alpha + +GCC_VERSION := $(strip $(shell cat $(srcdir)/gcc/BASE-VER)) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') +GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/') +GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/') +GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/') +NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) +NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1) +NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) + +ifeq ($(PKGSOURCE),gcc-snapshot) + BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*/\1/') +endif +ifneq (,$(findstring gpc,$(PKGSOURCE))) + GPC_BASE_VERSION := $(word 1, $(subst -, ,$(DEB_VERSION))) + DEB_VERSION := $(subst $(GPC_BASE_VERSION)-,,$(DEB_VERSION)) +endif +ifneq (,$(findstring gdc,$(PKGSOURCE))) + GDC_BASE_VERSION := $(word 1, $(subst -, ,$(DEB_VERSION))) + DEB_VERSION := $(subst $(GDC_BASE_VERSION)-,,$(DEB_VERSION)) +endif + +GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//') +NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') + +MAINTAINER = Debian GCC Maintainers +ifeq ($(distribution),Ubuntu) + ifneq (,$(findstring $(PKGSOURCE),gnat gpc gdc)) + MAINTAINER = Ubuntu MOTU Developers + else + MAINTAINER = Ubuntu Core developers + endif +endif + +UPLOADERS = Matthias Klose +ifneq (,$(findstring $(PKGSOURCE),gnat)) + UPLOADERS = Ludovic Brenta +endif +ifneq (,$(findstring $(PKGSOURCE),gdc)) + UPLOADERS = Arthur Loiret +endif + +DPKG_BUILD_DEP = dpkg-dev (>= 1.14.15) +ifeq ($(DEB_CROSS),yes) + DPKG_BUILD_DEP +=, dpkg-cross (>= 1.25.99) +endif + +# The binutils version needed. +# The oldest suitable versions for the various platforms can be found in +# INSTALL/specific.html ; we take a tighter dependency if possible to be on +# the safe side (something like newest( version in stable, versions for the +# various platforms in INSTALL/specific.html) ). +# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode. +# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html +BINUTILSV = 2.20.1-15~ +ifeq ($(DEB_CROSS),yes) + BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSV)) +else + BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSV)) | binutils-multiarch (>= $(BINUTILSV)) +endif +ifneq (,$(findstring snapshot,$(PKGSOURCE))$(findstring 4.5,$(PKGSOURCE))) + BINUTILS_BUILD_DEP += , binutils-gold (>= $(BINUTILSV)) [$(gold_archs)] +endif + +# libc-dev dependencies +libc_ver := 2.5 +ifneq (,$(findstring gnat,$(PKGSOURCE))) + libc_ver := 2.9-21 +endif +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64)) + LIBC_DEP = libc6.1 + else + LIBC_DEP = libc6 + endif +else + ifeq ($(DEB_TARGET_ARCH_OS),hurd) + LIBC_DEP = libc0.3 + endif + ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + LIBC_DEP = libc0.1 + endif + ifeq ($(DEB_TARGET_ARCH),uclibc) + LIBC_DEP ?= libuclibc + LIBC_DEV_DEP ?= libuclibc-dev + endif +endif +LIBC_DEV_DEP = $(LIBC_DEP)-dev +# for cross +ifeq ($(DEB_CROSS),yes) + LIBC_DEP ?= $(LIBC_DEP)$(LS) + LIBC_DEV_DEP ?= $(LIBC_DEV_DEP)$(LS) +endif + +# this is about Debian archs name, *NOT* GNU target triplet +biarch_deb_map := \ + i386=amd64 amd64=i386 \ + mips=mips64 mipsel=mips64 \ + powerpc=ppc64 ppc64=powerpc \ + sparc=sparc64 \ + s390=s390x \ + kfreebsd-amd64=i386 + +biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ + $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +LIBCXX_BIARCH_DEP := +LIBCXX_BIARCH_DBG_DEP := +ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32))) + LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS) (>= $(libc_ver)) + ifeq ($(biarch64),yes) + LIBCXX_BIARCH_DEP := lib64stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) + LIBCXX_BIARCH_DBG_DEP := lib64stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS) + endif + ifeq ($(biarch32),yes) + LIBCXX_BIARCH_DEP := lib32stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) + LIBCXX_BIARCH_DBG_DEP := lib32stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS) + endif + ifeq ($(biarchn32),yes) + ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel)) + triarch := + ifeq ($(biarch64),yes) + triarch := $(COMMA)$(SPACE) + endif + LIBC_BIARCH_DEV_DEP += $(triarch)libc6-dev-mipsn32$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEP += $(triarch)libc6-mipsn32$(LS) (>= $(libc_ver)) + LIBCXX_BIARCH_DEP += $(triarch)libn32stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) + LIBCXX_BIARCH_DBG_DEP += $(triarch)libn32stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg$(LS) + endif + endif +endif + +# Add suffix and required version +LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS) (>= $(libc_ver)) + +# TODO: make this automatic, there must be a better way to define LIBC_DEP. +ifneq ($(DEB_CROSS),yes) + LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_ver)), + LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], 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], lib64gcc1 [i386 powerpc sparc s390], libc6-dev-mips64 [mips mipsel], libc6-dev-mipsn32 [mips mipsel], +else + LIBC_BUILD_DEP = $(LIBC_DEV_DEP), + ifneq ($(LIBC_BIARCH_DEV_DEP),) + LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), + else + LIBC_BIARCH_BUILD_DEP = + endif +endif + +GCC_MULTILIB_BUILD_DEP = gcc-multilib [$(multilib_archs)], + +LIBUNWIND_DEV_DEP := libunwind7-dev$(LS) (>= 0.98.5-6) +LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], +LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], +ifneq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := # nothing +endif + +GMP_BUILD_DEP = libgmp3-dev, +MPFR_BUILD_DEP = libmpfr-dev, + +PPL_BUILD_DEP = libppl-dev (>= 0.10) | libppl0.10-dev (>= 0.10), +CLOOG_BUILD_DEP = libcloog-ppl-dev (>= 0.15.9-2~), +CLOOG_RUNTIME_DEP = libcloog-ppl0 (>= 0.15.9-2~), libppl-c2, libppl7 +# FIXME GCC-4.5 +ifneq (,$(findstring snapshot,$(PKGSOURCE))) + MPC_BUILD_DEP = libmpc-dev, + ELF_BUILD_DEP = libelfg0-dev (>= 0.8.12), +endif +ifneq (,$(findstring 4.5,$(PKGSOURCE))) + MPC_BUILD_DEP = libmpc-dev, + ELF_BUILD_DEP = libelfg0-dev (>= 0.8.12), +endif + +SOURCE_BUILD_DEP := +ifeq (,$(findstring gcc,$(PKGSOURCE))) + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), +endif + +CHECK_BUILD_DEP := dejagnu [$(check_no_archs)], +ifneq (,$(findstring gcc,$(PKGSOURCE))) + CHECK_BUILD_DEP += autogen, +endif + +AUTO_BUILD_DEP := m4, libtool, +ifneq (,$(findstring 4.4,$(PKGSOURCE))) + AUTO_BUILD_DEP += autoconf2.59, automake1.9, +else ifneq (,$(findstring 4.5,$(PKGSOURCE))) + AUTO_BUILD_DEP += autoconf (>= 2.64), autoconf (<< 2.65), automake (>= 1:1.11), automake (<< 1:1.12), +else ifeq ($(PKGSOURCE),gcc-snapshot) + AUTO_BUILD_DEP += autoconf (>= 2.64), autoconf (<< 2.65), automake (>= 1:1.11), automake (<< 1:1.12), +endif + +ifneq ($(DEB_CROSS),yes) +LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_ver)) +JAVA_BUILD_DEP := libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg, zlib1g-dev, libantlr-java, + +ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + bd_java_archs = +else ifeq ($(PKGSOURCE)-$(with_java),gcc-snapshot-yes) + bd_java_archs = +else + bd_java_archs = $(EMPTY) [$(java_no_archs)] +endif + +ifneq (,$(java_awt_peers)) + JAVA_BUILD_DEP += fastjar$(bd_java_archs), libmagic-dev$(bd_java_archs), + JAVA_BUILD_DEP += libecj-java (>= 3.3.0-2)$(bd_java_archs), zip$(bd_java_archs), + ifeq ($(with_java_maintainer_mode),yes) + # gcj-4.3 needed for gjavah-4.3. + JAVA_BUILD_DEP += gcj-4.4$(bd_java_archs), ecj (>= 3.3.0-2)$(bd_java_archs), + endif + JAVA_BUILD_DEP += libasound2-dev [$(java_no_archs) $(linux_no_archs)], + ifneq (,$(findstring gtk,$(java_awt_peers))) + JAVA_BUILD_DEP += libxtst-dev$(bd_java_archs), libxt-dev$(bd_java_archs), libgtk2.0-dev (>= 2.4.4-2)$(bd_java_archs), libart-2.0-dev$(bd_java_archs), libcairo2-dev$(bd_java_archs), + endif + ifneq (,$(findstring qt,$(java_awt_peers))) + JAVA_BUILD_DEP += libqt4-dev (>= 4.1.0)$(bd_java_archs), + endif + # gconf peer, disabled by default + #JAVA_BUILD_DEP += libgconf2-dev$(bd_java_archs), + # gstreamer peer + #JAVA_BUILD_DEP += libgstreamer-plugins-base0.10-dev$(bd_java_archs), + ifneq ($(PKGSOURCE),gcc-snapshot) + JAVA_BUILD_DEP += g++-4.4 [armel], + endif +endif +ifneq ($(with_standalone_gcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + JAVA_BUILD_DEP += $(SOURCE_BUILD_DEP) + endif +endif +#JAVA_BUILD_INDEP := gcj-$(BASE_VERSION)-jdk +ifeq ($(PKGSOURCE),gcc-snapshot) + LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.5.4), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base + JAVA_BUILD_INDEP := +endif +ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := + endif +endif + +ECJ_DEP = ecj, libecj-java (>= 3.3.0-2) +ECJ_DEP = ecj-gcj, libecj-java-gcj (>= 3.3.0-2) +ifneq (,$(filter $(DEB_HOST_ARCH),arm armel)) + ECJ_DEP +=, ecj1 +endif + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.4.2), graphviz (>= 2.2), gsfonts-x11, texlive-latex-base + JAVA_BUILD_INDEP :=, $(JAVA_BUILD_INDEP) +endif + +PASCAL_BUILD_DEP := libncurses5-dev [pascal_no_archs], texlive-latex-base [pascal_no_archs], libgmp3-dev [pascal_no_archs], help2man [pascal_no_archs], + +SPU_BUILD_DEP := binutils-spu (>= $(BINUTILSV)) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], gcc-$(BASE_VERSION)-base [powerpc ppc64], +SPU_BUILD_DEP := binutils-spu (>= $(BINUTILSV)) [powerpc ppc64], newlib-spu (>= 1.16.0) [powerpc ppc64], + +ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + ifneq ($(with_separate_gnat),yes) + # Build gnat as part of the combiled gcc-x.y source package. Do not fail + # if gnat is not present on unsupported architectures; the build scripts + # will not use gnat anyway. + GNAT_BUILD_DEP := gnat (>= 4.1) [$(ada_no_archs)], + endif + ifeq ($(with_separate_gpc),yes) + PASCAL_BUILD_DEP := + endif +else ifeq ($(PKGSOURCE),gcc-snapshot) + # Ditto, as part of the gcc-snapshot package. + # FIXME: ad hoc dependency, better fix setting of ada_no_archs + #GNAT_BUILD_DEP := gnat (>= 4.1) [$(ada_no_archs)], gcc-snapshot (>= 20090821-1) [armel], + GNAT_BUILD_DEP := gnat (>= 4.1) [!arm !armel !m68k !hurd-i386], gcc-snapshot (>= 20100116-1) [armel], + PASCAL_BUILD_DEP := +else ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + # Special source package just for gnat. Fail early if gnat is not present, + # rather than waste CPU cycles and fail later. + GNAT_BUILD_DEP := gnat (>= 4.1), + GNAT_BUILD_DEP += $(SOURCE_BUILD_DEP) + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := + GDC_BUILD_DEP := + PASCAL_BUILD_DEP := + # gnat on spu should work ... + SPU_BUILD_DEP := +else ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + # Special source package just for gcj. + GNAT_BUILD_DEP := + PASCAL_BUILD_DEP := + GDC_BUILD_DEP := + SPU_BUILD_DEP := +else ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION)) + # Special source package just for gdc. + GNAT_BUILD_DEP := + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := + PASCAL_BUILD_DEP := + GDC_BUILD_DEP := $(SOURCE_BUILD_DEP) + SPU_BUILD_DEP := +else ifeq ($(PKGSOURCE),gpc-$(BASE_VERSION)) + # Special source package just for gpc. + GNAT_BUILD_DEP := + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := + GDC_BUILD_DEP := + PASCAL_BUILD_DEP += $(SOURCE_BUILD_DEP) + SPU_BUILD_DEP := +endif + +else +# build cross compiler + CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch), zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch), + SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), + ifeq ($(with_java),yes) + JAVA_BUILD_DEP := zlib1g-dev, lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64], + endif + JAVA_BUILD_INDEP := + GNAT_BUILD_DEP := + ifeq (,$(findstring spu,$(DEB_TARGET_GNU_CPU))) + SPU_BUILD_DEP := + endif +endif # cross compiler + +# The numeric part of the gcc version number (x.yy.zz) +NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ + awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') +# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION +# or TARGET_ALIAS changes), or last version available for all architectures +DEB_GCC_SOFT_VERSION := 4.4.4-17 +DEB_GCJ_SOFT_VERSION := 4.4.4-17 +ifeq ($(with_pascal),yes) +GPC_DATE := $(shell sed -n 's/^.define GPC_VERSION_STRING "\(.*\)"/\1/p' $(srcdir)/gcc/p/version.h || true) +DEB_GPC_VERSION := $(shell echo $(DEB_VERSION) \ + | sed 's/.*:\(.*\)-\(.*\)/2:\1.$(GPC_DATE)-\2/') +endif + +ifeq ($(with_pascal),yes) + DEB_GPC_VERSION := $(GPC_BASE_VERSION)-$(DEB_VERSION) +endif + +ifeq ($(with_d),yes) + DEB_GDC_VERSION := $(GDC_BASE_VERSION)-$(DEB_VERSION) +endif + +# semiautomatic ... +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 4.4 +DEB_SOEVERSION := $(EPOCH):4.4 +DEB_STDCXX_SOVERSION := 4.4 +DEB_GCJ_SOVERSION := 4.4 +DEB_GOMP_SOVERSION := $(DEB_SOVERSION) +DEB_GCCMATH_SOVERSION := $(DEB_SOVERSION) + +DEB_GCC_VERSION := $(DEB_VERSION) +DEB_GCJ_VERSION := $(DEB_VERSION) +ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION) + endif +endif + +DEB_GNAT_VERSION := $(DEB_VERSION) +ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION) + endif +endif + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + ifeq ($(DEB_TARGET_ARCH),m68k) + GCC_SONAME := 2 + endif + ifeq ($(DEB_TARGET_ARCH),hppa) + GCC_SONAME := 4 + endif + DEB_LIBGCC_SOVERSION := $(DEB_SOVERSION) + DEB_LIBGCC_VERSION := $(DEB_VERSION) +else + GCC_SONAME := 1 + DEB_LIBGCC_SOVERSION := $(DEB_SOEVERSION) + DEB_LIBGCC_VERSION := $(DEB_EVERSION) +endif + +LIBGCC_DEP := libgcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) +LIBGCC_BIARCH_DEP := +ifeq ($(biarch64),yes) + LIBGCC_BIARCH_DEP := lib64gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) +endif +ifeq ($(biarch32),yes) + LIBGCC_BIARCH_DEP := lib32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) +endif +ifeq ($(biarchn32),yes) + ifeq ($(biarch64),yes) + LIBGCC_BIARCH_DEP := lib64gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)), libn32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) + else + LIBGCC_BIARCH_DEP := libn32gcc$(GCC_SONAME)$(LS) (>= $(DEB_LIBGCC_VERSION)) + endif +endif + +GNAT_VERSION := $(BASE_VERSION) + +LIBGNAT_DEP := +ifeq ($(with_libgnat),yes) + LIBGNAT_DEP := libgnat-$(GNAT_VERSION) (= $(DEB_VERSION)) +endif + +pkg_ver := -$(BASE_VERSION) + +PKG_GCJ_EXT = $(GCJ_SONAME1) +PKG_LIBGCJ_EXT = $(GCJ_SONAME1)$(if $(GCJ_SONAME2),-$(GCJ_SONAME2)) + +ctrl_flags = \ + -DBINUTILSV=$(BINUTILSV) \ + -DSRCNAME=$(PKGSOURCE) \ + -D__$(DEB_TARGET_GNU_CPU)__ \ + -DARCH=$(DEB_TARGET_ARCH) \ + -DDIST=$(distribution) + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ + -DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \ + -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ + -DJAVA_BUILD_DEP="$(JAVA_BUILD_DEP)" \ + -DJAVA_BUILD_INDEP="$(JAVA_BUILD_INDEP)" \ + -DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \ + -DPASCAL_BUILD_DEP="$(PASCAL_BUILD_DEP)" \ + -DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \ + -DSPU_BUILD_DEP="$(SPU_BUILD_DEP)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ + -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ + -DAUTOGEN_BUILD_DEP="$(AUTOGEN_BUILD_DEP)" \ + -DCLOOG_BUILD_DEP="$(CLOOG_BUILD_DEP)" \ + -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ + -DELF_BUILD_DEP="$(ELF_BUILD_DEP)" \ + -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ + -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ + -DMULTILIB_ARCHS="$(multilib_archs)" \ + -DNEON_ARCHS="$(neon_archs)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) + +ifeq ($(DEB_CROSS),yes) + ctrl_flags += \ + -DTARGET=$(DEB_TARGET_ARCH) \ + -DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \ + -DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)" +else + # add '-DPRI=optional' to ctrl_flags if this is not the default compiler + # ctrl_flags += \ + # -DPRI=optional +endif + +ifeq ($(with_base_only),yes) + ctrl_flags += \ + -DBASE_ONLY=yes +endif + +ifeq ($(with_multiarch_lib),yes) + ctrl_flags += \ + -DMULTIARCH=yes +endif + +control: control-file readme-bugs-file parameters-file copyright-file substvars-file versioned-files + +# stage1 and stage2 compilers are only C +ifdef DEB_STAGE + languages = c + addons = cdev + ifeq ($(DEB_STAGE),stage2) + addons += libgcc gccxbase + endif +else +languages = c c++ fortran objc objpp +ifeq ($(DEB_CROSS),yes) + addons = gccxbase +else + addons = gccbase +endif +addons += cdev c++dev fdev objcdev source objppdev multilib +ifneq (,$(filter yes,$(with_libgcc) $(keep_in_control))) + addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc +endif +ifneq (,$(filter yes,$(with_libcxx) $(keep_in_control))) + addons += libcxx lib32cxx lib64cxx libn32cxx +endif +ifeq ($(with_mudflap),yes) + addons += mudflap + ifneq (,$(filter yes,$(with_libmudflap) $(keep_in_control))) + addons += libmudf + endif +endif +ifneq (,$(filter yes,$(with_libgfortran) $(keep_in_control))) + addons += libgfortran lib32gfortran lib64gfortran libn32gfortran +endif +ifneq (,$(filter yes,$(with_libobjc) $(keep_in_control))) + addons += libobjc lib32objc lib64objc libn32objc +endif +ifneq (,$(filter yes,$(with_libgomp) $(keep_in_control))) + addons += libgomp lib32gomp lib64gomp libn32gomp +endif +ifeq ($(with_plugins),yes) + addons += plugindev +endif + +ifneq ($(DEB_CROSS),yes) + languages += ada java # pascal + addons += libgcj libgcjdev gcjdoc libgnat libs source # libgmath libnof lib64gnat ssp + + ifneq (,$(neon_archs)) + addons += libneongcc libneongomp libneonobjc libneongfortran libneoncxx + endif + ifneq (,$(filter yes,$(with_proto) $(keep_in_control))) + addons += proto + endif + ifneq (,$(filter yes,$(with_fixincl) $(keep_in_control))) + addons += fixincl + endif + ifeq ($(with_libgcj_doc),yes) + addons += gcjdoc + endif +# ifneq (,$(findstring gtk, $(java_awt_peers))) +# addons += gtkpeer +# endif +# ifneq (,$(findstring qt, $(java_awt_peers))) +# addons += qtpeer +# endif + ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out java,$(languages)) + addons := $(filter-out gcj libgcj libgcjdev gcjdoc gtkpeer qtpeer,$(addons)) + endif + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + languages = java + addons = gcj libgcj libgcjdev + ifeq ($(with_libgcj_doc),yes) + addons += gcjdoc + endif +# ifneq (,$(findstring gtk, $(java_awt_peers))) +# addons += gtkpeer +# endif +# ifneq (,$(findstring qt, $(java_awt_peers))) +# addons += qtpeer +# endif + ifeq ($(with_standalone_gcj),yes) + addons += libgcc lib4gcc lib64gcc lib32gcc libn32gcc + endif + endif + endif + ifeq ($(with_standalone_gcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + ctrl_flags += -DSTANDALONEJAVA + endif + endif + ifeq ($(with_separate_gnat),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out ada,$(languages)) + addons := $(filter-out libgnat,$(addons)) + endif + ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION)) + languages = ada + addons = libgnat + endif + endif + ifeq ($(with_separate_gpc),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out pascal,$(languages)) + endif + ifeq ($(PKGSOURCE),gpc-$(BASE_VERSION)) + languages = pascal + addons = + endif + endif + ifeq ($(with_separate_gdc),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + languages := $(filter-out d,$(languages)) + endif + ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION)) + languages = d + addons = + ifeq ($(with_libphobos),yes) + addons += libphobos + endif + endif + endif + ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc + endif +endif +endif # not stage + +control-file: + echo "addons: $(addons)"; \ + m4 $(ctrl_flags) \ + -DPV=$(pkg_ver) \ + -DCXX_SO=$(CXX_SONAME) \ + -DGCC_SO=$(GCC_SONAME) \ + -DOBJC_SO=$(OBJC_SONAME) \ + -DFORTRAN_SO=$(FORTRAN_SONAME) \ + -DGCJ_SO=$(PKG_GCJ_EXT) \ + -DLIBGCJ_EXT=$(PKG_LIBGCJ_EXT) \ + -DGNAT_SO=$(GNAT_SONAME) \ + -DGNAT_V=$(GNAT_VERSION) \ + -DPHOBOS_V=$(libphobos_version) \ + -DGOMP_SO=$(GOMP_SONAME) \ + -DGCCMATH_SO=$(GCCMATH_SONAME) \ + -DMF_SO=$(MUDFLAP_SONAME) \ + -DSSP_SO=$(SSP_SONAME) \ + -Denabled_languages="$(languages) $(addons)" \ + -Dada_no_archs="$(ada_no_archs)" \ + -Djava_no_archs="$(java_no_archs)" \ + -Dpascal_no_archs="$(pascal_no_archs)" \ + -Dfortran_no_archs="$(fortran_no_archs)" \ + -Dlibgc_no_archs="$(libgc_no_archs)" \ + -Dcheck_no_archs="$(check_no_archs)" \ + -Dlocale_no_archs="$(locale_no_archs)" \ + -Dlinux_gnu_archs="$(linux_gnu_archs)" \ + -Dlibphobos_no_archs="$(libphobos_no_archs)" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \ + -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 | sed '/^Build/s/ *, */, /g' \ + > debian/control.tmp + rm -f debian/control.tmp2 + [ -e debian/control ] \ + && cmp -s debian/control debian/control.tmp \ + && rm -f debian/control.tmp && exit 0; \ + mv debian/control.tmp debian/control; touch $(control_stamp) + +readme-bugs-file: + m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ + debian/README.Bugs.m4 > debian/README.Bugs + +copyright-file: + rm -f debian/copyright + if echo $(SOURCE_VERSION) | grep -E ^'[0-9]\.[0-9]-[0-9]{8}' ; \ + then SVN_BRANCH="trunk" ; \ + else \ + SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ + fi ; \ + sed debian/copyright.in \ + -e "s/@BV@/$(BASE_VERSION)/g" \ + -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ + > debian/copyright + +substvars-file: + rm -f debian/substvars.local.tmp + ( \ + echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ + echo 'gpc:Version=$(DEB_GPC_VERSION)'; \ + echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ + echo 'gcj:Version=$(DEB_GCJ_VERSION)'; \ + echo 'gcj:SoftVersion=$(DEB_GCJ_SOFT_VERSION)'; \ + echo 'gcj:BaseVersion=$(BASE_VERSION)'; \ + echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ + echo 'binutils:Version=$(BINUTILSV)'; \ + echo 'dep:libgcc=$(LIBGCC_DEP)'; \ + echo 'dep:libgccbiarch=$(LIBGCC_BIARCH_DEP)'; \ + echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ + echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ + echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ + echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ + echo 'dep:libcxxbiarch=$(LIBCXX_BIARCH_DEP)'; \ + echo 'dep:libcxxbiarchdbg=$(LIBCXX_BIARCH_DBG_DEP)'; \ + echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ + echo 'dep:ecj=$(ECJ_DEP)'; \ + echo 'dep:libcloog=$(CLOOG_RUNTIME_DEP)'; \ + ) > debian/substvars.local.tmp +ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) + ( \ + echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ + echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ + ) >> debian/substvars.local.tmp +endif +ifeq ($(with_gold),yes) + echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_gomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(multilib),yes) + echo 'dep:libgfortranbiarch=$(libgfortranbiarch)' \ + >> debian/substvars.local.tmp + echo 'dep:libobjcbiarch=$(libobjcbiarch)' \ + >> debian/substvars.local.tmp + ifeq ($(with_mudflap),yes) + echo 'dep:libmudflapbiarch=$(libmudflapbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_libssp),yes) + echo 'dep:libsspbiarch=$(libsspbiarch)' \ + >> debian/substvars.local.tmp + endif + ifeq ($(with_gomp),yes) + echo 'dep:libgompbiarch=$(libgompbiarch)' \ + >> debian/substvars.local.tmp + endif +endif +ifneq ($(with_standalone_gcj),yes) + ifeq ($(DEB_HOST_ARCH),armel) + echo 'dep:gcj=g++$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + else + echo 'dep:gcj=gcc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp + endif +endif +#ifneq (,$(findstring gtk, $(java_awt_peers))) +# echo 'pkg:gcjgtk=libgcj$(subst 0,,$(GCJ_SONAME))-awt-gtk (>= $(DEB_GCJ_VERSION))' \ +# >> debian/substvars.local.tmp +#endif +#ifneq (,$(findstring qt, $(java_awt_peers))) +# echo 'pkg:gcjqt=libgcj$(subst 0,,$(GCJ_SONAME))-awt-qt (>= $(DEB_GCJ_VERSION))' \ +# >> debian/substvars.local.tmp +#endif +ifeq ($(DEB_HOST_ARCH),hppa) + echo 'dep:prctl=prctl' >> debian/substvars.local.tmp +endif +ifneq (,$(filter $(DEB_TARGET_ARCH), powerpc ppc64)) + echo 'base:Replaces=gcc-$(BASE_VERSION)-spu (<< 4.4.0-1)' >> debian/substvars.local.tmp +endif +ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-amd64) + echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp +endif + [ -e debian/substvars.local ] \ + && cmp -s debian/substvars.local debian/substvars.local.tmp \ + && rm -f debian/substvars.local.tmp && exit 0; \ + mv debian/substvars.local.tmp debian/substvars.local; \ + touch $(control_stamp) + +parameters-file: + rm -f debian/rules.parameters.tmp + ( \ + echo '# configuration parameters taken from upstream source files'; \ + echo 'GCC_VERSION := $(GCC_VERSION)'; \ + echo 'NEXT_GCC_VERSION := $(NEXT_GCC_VERSION)'; \ + echo 'BASE_VERSION := $(BASE_VERSION)'; \ + echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ + echo 'DEB_VERSION := $(DEB_VERSION)'; \ + echo 'DEB_EVERSION := $(DEB_EVERSION)'; \ + echo 'GPC_BASE_VERSION := $(GPC_BASE_VERSION)'; \ + echo 'GDC_BASE_VERSION := $(GDC_BASE_VERSION)'; \ + echo 'DEB_GPC_VERSION := $(DEB_GPC_VERSION)'; \ + echo 'DEB_GDC_VERSION := $(DEB_GDC_VERSION)'; \ + echo 'DEB_SOVERSION := $(DEB_SOVERSION)'; \ + echo 'DEB_SOEVERSION := $(DEB_SOEVERSION)'; \ + echo 'DEB_LIBGCC_SOVERSION := $(DEB_LIBGCC_SOVERSION)'; \ + echo 'DEB_LIBGCC_VERSION := $(DEB_LIBGCC_VERSION)'; \ + echo 'DEB_STDCXX_SOVERSION := $(DEB_STDCXX_SOVERSION)'; \ + echo 'DEB_GCJ_SOVERSION := $(DEB_GCJ_SOVERSION)'; \ + echo 'PKG_GCJ_EXT := $(PKG_GCJ_EXT)'; \ + echo 'PKG_LIBGCJ_EXT := $(PKG_LIBGCJ_EXT)'; \ + echo 'DEB_GOMP_SOVERSION := $(DEB_GOMP_SOVERSION)'; \ + echo 'DEB_GCCMATH_SOVERSION := $(DEB_GCCMATH_SOVERSION)'; \ + echo 'GCC_SONAME := $(GCC_SONAME)'; \ + echo 'CXX_SONAME := $(CXX_SONAME)'; \ + echo 'FORTRAN_SONAME := $(FORTRAN_SONAME)'; \ + echo 'OBJC_SONAME := $(OBJC_SONAME)'; \ + echo 'GCJ_SONAME := $(GCJ_SONAME)'; \ + echo 'GNAT_VERSION := $(GNAT_VERSION)'; \ + echo 'GNAT_SONAME := $(GNAT_SONAME)'; \ + echo 'FFI_SONAME := $(FFI_SONAME)'; \ + echo 'MUDFLAP_SONAME := $(MUDFLAP_SONAME)'; \ + echo 'SSP_SONAME := $(SSP_SONAME)'; \ + echo 'GOMP_SONAME := $(GOMP_SONAME)'; \ + echo 'GCCMATH_SONAME := $(GCCMATH_SONAME)'; \ + echo 'LIBC_DEP := $(LIBC_DEP)'; \ + ) > debian/rules.parameters.tmp + [ -e debian/rules.parameters ] \ + && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ + && rm -f debian/rules.parameters.tmp && exit 0; \ + mv debian/rules.parameters.tmp debian/rules.parameters; \ + touch $(control_stamp) + +versioned-files: + fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ + for f in $$fs debian/source.lintian-overrides.in; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -f $$f ] || continue; \ + if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/PV/$(GPC_BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/MF/$(MUDFLAP_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@PV@/$(GPC_BASE_VERSION)/g' \ + -e 's/@CXX@/$(CXX_SONAME)/g' \ + -e 's/@LGCJ@/$(PKG_LIBGCJ_EXT)/g' \ + -e 's/@GCJ@/$(PKG_GCJ_EXT)/g' \ + -e 's/@GCJSO@/$(GCJ_SONAME)/g' \ + -e 's/@LC@/$(GCC_SONAME)/g' \ + -e 's/@MF@/$(MUDFLAP_SONAME)/g' \ + -e 's/@SRC@/$(PKGSOURCE)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + -e 's/@java_priority@/$(java_priority)/g' \ + -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ + -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done --- gcc-4.4-4.4.5.orig/debian/libgcc1.symbols.mips +++ gcc-4.4-4.4.5/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.5.orig/debian/gnat-BV.overrides +++ gcc-4.4-4.4.5/debian/gnat-BV.overrides @@ -0,0 +1 @@ +gnat-@BV@: quilt-build-dep-but-no-series-file --- gcc-4.4-4.4.5.orig/debian/gcj-BV-jre-headless.postinst +++ gcc-4.4-4.4.5/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.5.orig/debian/NEWS.html +++ gcc-4.4-4.4.5/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.5.orig/debian/lib32objc2.symbols +++ gcc-4.4-4.4.5/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.5.orig/debian/libgcc1.symbols.armel +++ gcc-4.4-4.4.5/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.5.orig/debian/runcheck.sh +++ gcc-4.4-4.4.5/debian/runcheck.sh @@ -0,0 +1,20 @@ +#! /bin/sh + +mkdir -p build + +cat >build/runcheck.c < +int main() +{ + return printf("yes\n") != 4; +} +EOF + +if m=$(${CC:-gcc} -o build/runcheck build/runcheck.c 2>&1); then + m=$(build/runcheck 2>&1) + echo ${m#* } > build/runcheck.out + echo ${m#* } +else + echo ${m##*:} > build/runcheck.out + echo ${m##*:} +fi --- gcc-4.4-4.4.5.orig/debian/libgfortran3.symbols.64 +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/s390-biarch.diff +++ gcc-4.4-4.4.5/debian/patches/s390-biarch.diff @@ -0,0 +1,24 @@ +# DP: Build a bi-arch compiler on s390-linux-gnu. +# DP: http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01044.html + +2009-03-23 Arthur Loiret + + * config.gcc (s390-*-linux*): If 'enabled_targets' is 'all', build + a bi-arch compiler defaulting to 31-bit. In this case: + (tmake_file): Add s390/t-linux64. +--- + gcc/config.gcc | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1966,6 +1966,9 @@ rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*) + s390-*-linux*) + tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" + tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux" ++ if test x$enable_targets = xall; then ++ tmake_file="${tmake_file} s390/t-linux64" ++ fi + ;; + s390x-*-linux*) + tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" --- gcc-4.4-4.4.5.orig/debian/patches/ignore-comp-fail.diff +++ gcc-4.4-4.4.5/debian/patches/ignore-comp-fail.diff @@ -0,0 +1,19 @@ +# DP: Ignore the bootstrap comparision failure + +--- + Makefile.in | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -53636,7 +53636,9 @@ compare: + if [ -f .bad_compare ]; then \ + echo "Bootstrap comparison failure!"; \ + cat .bad_compare; \ +- exit 1; \ ++ echo ""; \ ++ echo "Ignore the comparision failure!"; \ ++ true; \ + else \ + echo Comparison successful.; \ + fi ; \ --- gcc-4.4-4.4.5.orig/debian/patches/mips-fix-loongson2f-nop.diff +++ gcc-4.4-4.4.5/debian/patches/mips-fix-loongson2f-nop.diff @@ -0,0 +1,13 @@ +# DP: On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop +# DP: is not passed. + +--- a/src/gcc/config/mips/mips.h~ 2009-02-20 16:20:38.000000000 +0100 ++++ b/src/gcc/config/mips/mips.h 2010-04-17 19:59:38.033585306 +0200 +@@ -1152,6 +1152,7 @@ + %{mshared} %{mno-shared} \ + %{msym32} %{mno-sym32} \ + %{mtune=*} %{v} \ ++%{!mno-fix-loongson2f-nop:-mfix-loongson2f-nop} \ + %(subtarget_asm_spec)" + + /* Extra switches sometimes passed to the linker. */ --- gcc-4.4-4.4.5.orig/debian/patches/gdc-hg-doc-updates.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-hg-doc-updates.diff @@ -0,0 +1,997 @@ +# DP: HG documentation updates from the gdc branch up to 20100912. + +--- a/src/gcc/d/ChangeLog ++++ b/src/gcc/d/ChangeLog +@@ -1,3 +1,670 @@ ++2010-09-09 Iain Buclaw ++ ++ * d-codegen.cc: ++ Revert part of commit 210, and fix integer representations on gdc-4.4. ++ [844b25646834] ++ ++2010-09-07 michaelp ++ ++ * gcc-mars.cc: ++ Removed gcc-mars.cc from top level d/ folder. ++ [e4b1e3753bf5] ++ ++ * Make-lang.in: ++ Updated Make-lang.in for removal of gcc-mars.cc. ++ [db7d6aae8ceb] ++ ++ * GDC.html, History, INSTALL, INSTALL.html, README, dmd-script, ++ dmd-script.1, gdc.1: ++ Documentation updates. ++ [e651ed00a16e] ++ ++2010-09-03 Iain Buclaw ++ ++ * d-codegen.cc, d-glue.cc, d-objfile.cc: ++ Issue #59 and #60: ICE when goto undefined label and ICE in foreach over ++ member member array in static func ++ [955dc7d43780] ++ ++ * d-codegen.cc, d-glue.cc, d-irstate.cc, d-lang.h, dmd/func.c, ++ dmd/statement.c, dmd/statement.h: ++ Issue #54: 1.063 changes in phobos versioning + dmd backend. ++ [4c10fa4a539a] ++ ++2010-09-01 Iain Buclaw ++ ++ * dmd/cast.c, dmd/impcnvgen.c, dmd2/impcnvgen.c: ++ Bugzilla 1822 - String slicing in 64-bit gdc causes spurious ++ warnings ++ [5efc9014eef8] ++ ++ * patches/patch-gcc-4.0.x, patches/patch-gcc-4.1.x, d/patches ++ /patch-gcc-4.2.x, patches/patch-gcc-4.3.x, patches/patch- ++ gcc-4.4.x: ++ Issue #50 - thanks venix1: SjLj expections fail when thrown from catch ++ block ++ [d655a072bbb8] ++ ++ * d-builtins2.cc, d-lang.cc, d-spec.c: ++ Removed va_list hack, small change to D2 lang driver. ++ [7a67e4973ace] ++ ++2010-08-30 Iain Buclaw ++ ++ * d-codegen.cc: ++ Issue #14: STATIC_CHAIN_EXPR not caught in estimate_num_insns_1() ++ [63c14701ccde] ++ ++2010-08-29 Iain Buclaw ++ ++ * d-c-stubs.c, d-glue.cc, d-lang.cc: ++ Add stubs for C_TARGET_OBJS on non-x86 archs. ++ [b530fcd9baab] ++ ++ * d-glue.cc: ++ Bugzilla 1669 - this.outer in nested classes gives a bogus pointer ++ [ebce488abf89] ++ ++ * d-lang.cc, phobos2/Makefile.am, phobos2/acinclude.m4: ++ Add D_Version2 version predicate. ++ [9808b8987cce] ++ ++2010-08-28 Iain Buclaw ++ ++ * d-c-stubs.c, d-decls.cc, d-lang.cc, ++ druntime/compiler/gdc/aaA.d, druntime/compiler/gdc/util/cpuid.d, ++ druntime/gc/basic/gc_c.h, druntime/gc/basic/gc_dyld.c, ++ druntime/gc/basic/gc_freebsd.c, druntime/gc/basic/gcgccextern.d, ++ phobos/internal/gc/gcgccextern.d, phobos/std/loader.d, ++ phobos2/Makefile.am, phobos2/acinclude.m4, ++ phobos2/std/cpuid.d: ++ D2 updates. ++ [ebe4ca2bd83a] ++ ++2010-08-27 Iain Buclaw ++ ++ * d/Make-lang.in, d-spec.c, phobos2/Makefile.am: ++ Add druntime to the GDC driver. ++ [3dbc1c4cd214] ++ ++ * druntime/Makefile, druntime/compiler/gdc/dgccmain2.d, ++ druntime/compiler/gdc/lifetime.d, phobos2/gcc/deh.d, ++ phobos2/gcc/unwind_generic.d, phobos2/gcc/unwind_pe.d, ++ phobos2/std/stream.d: ++ Remove Makefile and fix module dependencies in Druntime ++ [6fea2af61a0c] ++ ++ * phobos2/Makefile.am, phobos2/acinclude.m4, phobos2/aclocal.m4, ++ phobos2/configure.in, d/setup-gcc.sh: ++ Reorganise D2 Makefile for Druntime ++ [f888b572d19a] ++ ++ * d/Make-lang.in: ++ Use BACKENDLIBS rather than GMPLIBS for gdc-4.4 ++ [bda0f5d37728] ++ ++ * d-glue.cc: ++ Fix ICE in D2 ForeachRange statements ++ [7d35bcb69e7e] ++ ++2010-08-26 Iain Buclaw ++ ++ * patches/patch-gcc-4.4.x: ++ Regenerate gcc-4.4.x patch ++ [4dfe5494460a] ++ ++2010-08-25 Iain Buclaw ++ ++ * d-codegen.h: ++ Fix codegen for addressOf array types, resolves broken va_lists on ++ gdc-4.4. ++ [9463381e1daa] ++ ++ * druntime/compiler/gdc/fpmath.d, druntime/compiler/gdc/gcc/*, ++ druntime/druntimelicense.txt, druntime/druntimereadme.txt, ++ druntime/hello.d, druntime/license.txt, druntime/readme.txt: ++ Re-add fpmath.d - previously from removed internal directory. ++ [bf3e292d1a4c] ++ ++ * d-builtins2.cc: ++ Slight alteration to va_list type generation on gdc-4.4 ++ [e005caeafced] ++ ++ * d-codegen.cc, d-glue.cc, d-irstate.cc, d-lang.h: ++ Use own language flag for labels marked 'used'. ++ [d7963235235c] ++ ++ * d-lang.cc: ++ Rework of previous commit for Issue #58. ++ [025031c2e274] ++ ++2010-08-24 Iain Buclaw ++ ++ * d-lang.cc: ++ Issue #58 - Fixed stack overflow in gdc-4.4 ++ [c02f5ac787a8] ++ ++2010-08-23 Iain Buclaw ++ ++ * d-codegen.cc: ++ Bugzilla 1813 - ICE on static function parametrized with alias. ++ [2e06ca97b873] ++ ++2010-08-22 michaelp ++ ++ * patches/patch-gcc-3.4.x, patches/patch-gcc-4.0.x, d/patches ++ /patch-gcc-4.1.x, patches/patch-gcc-4.2.x, patches/patch- ++ gcc-4.3.x, patches/patch-toplev-3.4.x, patches/patch- ++ toplev-4.0.x, patches/patch-toplev-4.1.x, patches/patch- ++ toplev-4.2.x, patches/patch-toplev-4.3.x: ++ Updated patches for D2/druntime ++ [dc882e7537c0] ++ ++2010-08-22 Iain Buclaw ++ ++ * d/Make-lang.in, d-bi-attrs-44.h, d-builtins.c, d-builtins2.cc, ++ d-codegen.cc, d-decls.cc, d-gcc-includes.h, d-lang.cc, ++ d-objfile.cc, patches/patch-gcc-4.4.x, patches/patch- ++ toplev-4.4.x, d/setup-gcc.sh: ++ Building on GCC-4.4 now supported. ++ [0616ebb4255b] ++ ++ * d-lang.cc: ++ Issue #51: 1.062 outstanding issues ++ [9663a271233b] ++ ++2010-08-20 michaelp ++ ++ * phobos2/*: ++ Updated phobos2 to 2.020 (not working) ++ [08d9a5b24ff4] ++ ++2010-08-20 Iain Buclaw ++ ++ * d-glue.cc: ++ Fix ICE on shorthand if statements. ++ [ef2959fa8184] ++ ++2010-08-20 michaelp ++ ++ * d-glue.cc: ++ Fixed problem with continue statements in D2 ++ [511f3176ec0d] ++ ++2010-08-20 Iain Buclaw ++ ++ * d-lang.cc, druntime/compiler/gdc/arraybyte.d, ++ druntime/compiler/gdc/arraydouble.d, ++ druntime/compiler/gdc/arrayfloat.d, ++ druntime/compiler/gdc/arrayint.d, ++ druntime/compiler/gdc/arrayshort.d, phobos/internal/arraybyte.d, ++ phobos/internal/arraydouble.d, phobos/internal/arrayfloat.d, ++ phobos/internal/arrayint.d, phobos/internal/arrayshort.d, ++ phobos2/internal/arraybyte.d, phobos2/internal/arraydouble.d, ++ phobos2/internal/arrayfloat.d, phobos2/internal/arrayint.d, ++ phobos2/internal/arrayshort.d: ++ Issue #30: D_InlineAsm updates ++ [ce1833f9106a] ++ ++2010-08-19 michaelp ++ ++ * d-lang.cc: ++ Fixed JSON option for D2 ++ [2118f4d1de83] ++ ++ * d/setup-gcc.sh: ++ Updated setup-gcc.sh for libdruntime building ++ [6e7640bc2b3c] ++ ++ * patches/patch-toplev-4.1.x, patches/patch-toplev-4.2.x, ++ patches/patch-toplev-4.3.x: ++ Updated toplevel 4.1, 4.2, and 4.3 patches for libdruntime ++ [1df5716f2b88] ++ ++ * patches/patch-toplev-3.4.x, patches/patch-toplev-4.0.x: ++ Updated 3.4 + 4.0 toplevel patches to include libdruntime ++ [a74ceca3c239] ++ ++ * dmd/func.c: ++ Issue #57: C-style variadic functions broken ++ [ae817bd07dbf] ++ ++2010-08-19 Iain Buclaw ++ ++ * phobos/*: ++ Updated Phobos to 1.063 - expanded tabs. ++ [bbe96bfd09dd] ++ ++2010-08-17 michaelp ++ ++ * d-glue.cc: ++ One of Issue #56. Cannot goto into finally block ++ [22792e6a6253] ++ ++2010-08-17 Iain Buclaw ++ ++ * d-codegen.cc, d-glue.cc, d-irstate.cc, d-irstate.h: ++ Bugzilla 1041 - incorrect code gen for scope(exit) inside switch ++ [d472abadf847] ++ ++2010-08-16 michaelp ++ ++ * d-glue.cc, dmd/func.c, dmd/statement.c, dmd/statement.h: ++ Temporarily reverted 1.063 change ++ [d89d1a46125d] ++ ++2010-08-16 Iain Buclaw ++ ++ * d/asmstmt.cc, d-apple-gcc.c, d-asm-i386.h, d-builtins.c, ++ d-builtins2.cc, d-c-stubs.c, d-codegen.cc, d-codegen.h, ++ d-convert.cc, d-cppmngl.cc, d-decls.cc, d-gcc-includes.h, ++ d-gcc-real.h, d-glue.cc, d-irstate.cc, d-lang.cc, ++ d-lang.h, d-objfile.cc, d-spec.c, d/dt.cc, d/dt.h, ++ d/gdc_alloca.h, d/symbol.cc: ++ Added GPL onto files missing it, attributed modifications. ++ [4d41771eba7c] ++ ++2010-08-15 Iain Buclaw ++ ++ * d-codegen.cc: ++ Some more type conversion updates in glue. ++ [4567e417c0b3] ++ ++2010-08-14 Iain Buclaw ++ ++ * d-apple-gcc.c, d-codegen.cc, d-convert.cc, d-glue.cc, ++ d-lang.cc: ++ Remove default_conversion, tighten up signed/unsigned conversions. ++ [c1ae96f4e1a6] ++ ++ * d-builtins2.cc, d-codegen.cc, d-glue.cc, d-lang.cc, ++ d-lang.h: ++ Removed references to TREE_UNSIGNED. ++ [4a59c1bbc04c] ++ ++ * d-gcc-includes.h: ++ Fixed previous glue commit. ++ [9cac96f771a1] ++ ++2010-08-14 michaelp ++ ++ * phobos/std/thread.d: ++ Updated thread_attach bug in Windows ++ [de30c34ef79d] ++ ++2010-08-14 Iain Buclaw ++ ++ * d/asmstmt.cc, d-builtins2.cc, d-codegen.cc, d-gcc-includes.h, ++ d-glue.cc, d-lang.cc, d-objfile.cc: ++ Glue touch-ups, now uses D_USE_MAPPED_LOCATION ++ [6122f6d23a71] ++ ++2010-08-13 michaelp ++ ++ * d-cppmngl.cc: ++ Uploaded missing fix from 1.063 merge ++ [fc7de0a268ab] ++ ++ * dmd/template.c: ++ Fixed implicit conversion of template parameters ++ [888e3cc8a31d] ++ ++ * d-glue.cc, dmd/async.c, dmd/declaration.c, ++ dmd/declaration.h, dmd/dsymbol.c, dmd/dsymbol.h, dmd/enum.c, ++ dmd/enum.h, dmd/expression.c, dmd/func.c, dmd/init.c, ++ dmd/interpret.c, dmd/mars.c, dmd/mars.h, dmd/module.c, ++ dmd/module.h, dmd/mtype.c, dmd/parse.c, dmd/parse.h, ++ dmd/root.c, dmd/statement.c, dmd/statement.h, dmd/todt.c, ++ phobos/internal/deh2.d, phobos/internal/object.d, ++ phobos/std/math.d: ++ Updated to 1.063 ++ [f1e726cbcc98] ++ ++2010-08-11 Iain Buclaw ++ ++ * d/Make-lang.in, d-bi-attrs-34.h, d-bi-attrs-341.h, d-bi- ++ attrs-40.h, d-bi-attrs-41.h, d-bi-attrs-42.h, d-bi-attrs-43.h, ++ d-builtins.c: ++ Cleanup d-bi-attrs. Make includes slightly smarter. ++ [349f85192e52] ++ ++ * d-codegen.cc: ++ Remove useless trial/error comments in function. ++ [89b4363653f8] ++ ++2010-08-10 michaelp ++ ++ * d-codegen.cc: ++ Issue 33 - Sefault with nested array allocation ++ [be805cb4fb58] ++ ++2010-08-09 Iain Buclaw ++ ++ * d/Make-lang.in, patches/patch-gcc-4.2.x, patches/patch- ++ toplev-4.2.x, d/setup-gcc.sh: ++ Building on GCC-4.2 now supported. ++ [c1b55292cd94] ++ ++ * d-codegen.cc, d-glue.cc, d-irstate.cc: ++ Apply adaptation of feep's autovec patch (one big thanks!) ++ [fbce9c0580d3] ++ ++ * d/asmstmt.cc, d-asm-i386.h: ++ Replace tabs for space in ASM outbuffer. ++ [659f6f38f6f4] ++ ++2010-08-09 michaelp ++ ++ * d/dmd-script: ++ Whitespace fix to previous commit. ++ [0fee937d84d4] ++ ++ * d-lang.cc, d/dmd-script, d/lang.opt: ++ Added JSON support - Issue 52 + gdmd usage change ++ [35f04cb2339c] ++ ++ * d/dmd-script: ++ Added -defaultlib= and -debuglib= into gdmd usage ++ [e34a68f9c427] ++ ++ * d/dmd-script: ++ Updated -defaultlib and -debuglib switches for gdmd - Issue 46 ++ [181e89b3d8d6] ++ ++2010-08-08 Iain Buclaw ++ ++ * d-builtins.c, d-c-stubs.c, d-codegen.cc, d-glue.cc, ++ d-lang.h: ++ Build with GCC-3.4 working again. ++ [58e9b23e110c] ++ ++ * d/Make-lang.in, dmd2/array.c, dmd2/mars.c, dmd2/root.c, ++ dmd2/total.h: ++ Updates of previous commit ++ [41657ecdc3fe] ++ ++ * d/Make-lang.in, d-decls.cc, dmd/expression.c, dmd2/arrayop.c, ++ dmd2/bit.c, dmd2/complex_t.h, dmd2/e2ir.c, dmd2/lib.h, ++ dmd2/libelf.c, dmd2/link.c, dmd2/man.c, dmd2/port.h, ++ dmd2/template.c, dmd2/tocsym.c, dmd2/toir.c, dmd2/toir.h, ++ dmd2/toobj.c, d/symbol.cc, d/symbol.h: ++ Issue 29 - Remove unused D2 files ++ [fdef7864146b] ++ ++ * d-decls.cc: ++ Bugzilla 1296 - ICE when object.d is missing things ++ [e9bfccc01834] ++ ++2010-08-06 michaelp ++ ++ * d/dmd-script: ++ More updates to gdmd ++ [d77ee89f6174] ++ ++2010-08-05 michaelp ++ ++ * d/dmd-script: ++ Small changes to gdmd; some fixes for Issue 46 ++ [9269acda0b86] ++ ++2010-08-05 Iain Buclaw ++ ++ * d-decls.cc, d-glue.cc: ++ Fix logic on array ops. Fixup comments for previous commits. ++ [5792cfbf3ae7] ++ ++ * d-glue.cc: ++ Issue 43: >>> and >>>= generate wrong code ++ [56caae262c41] ++ ++2010-08-02 Iain Buclaw ++ ++ * d-lang.cc: ++ Regression in D1 when building with --enable-checking ++ [6f2adfcabae6] ++ ++ * d-spec.c: ++ Check missing argument for -defaultlib ++ [8d59f275476b] ++ ++ * d-decls.cc: ++ Issue 47: GDC improperly handles extern(System) and extern(Windows) on ++ Windows ++ [e5b50cb17c57] ++ ++2010-07-31 Iain Buclaw ++ ++ * d-codegen.cc, dmd/todt.c: ++ Issue 51: 1.062 outstanding issues ++ [f41ce1e8e5b2] ++ ++ * dmd/aav.c, dmd/aav.h, dmd/arrayop.c, dmd/attrib.c, ++ dmd/cast.c, dmd/constfold.c, dmd/dsymbol.c, ++ dmd/expression.c, dmd/imphint.c, dmd/interpret.c, ++ dmd/lexer.c, dmd/mtype.c, dmd/parse.c, dmd/speller.h, ++ dmd/statement.c, dmd/toobj.c, dmd/unittests.c, dmd/utf.c: ++ Line endings, cleanups, and a missing ')' ++ [84378e5ef655] ++ ++ * d-codegen.cc, d-glue.cc: ++ Glue updates for previous merge. ++ [a48e13277e67] ++ ++2010-07-31 michaelp ++ ++ * d-glue.cc, dmd/*, phobos/std/date.d: ++ Updated to 1.062 ++ [9f7927e5f551] ++ ++2010-07-30 Iain Buclaw ++ ++ * d-spec.c: ++ Added -defaultlib and -debuglib to allow building with another ++ library other than libphobos. ++ [f7a52f778a09] ++ ++ * druntime/*: ++ Initial import of druntime into project. ++ [2f052aaedd25] ++ ++ * d-glue.cc: ++ Fix generation of D array concatenation calls. ++ [d70321dcd604] ++ ++ * phobos2/acinclude.m4, phobos2/configure, phobos2/configure.in, ++ phobos2/internal/arrayassign.d, phobos2/phobos-ver-syms.in: ++ D2 now defines Posix. ++ [575ed6d347e0] ++ ++ * dmd/parse.c, dmd/speller.c: ++ Include header needed for MinGW to build. ++ [5260cab6c448] ++ ++2010-07-29 michaelp ++ ++ * phobos2/std/c/stdio.d: ++ Fixed accidentally reapplied Windows patch ++ [d4356fb371ee] ++ ++ * d/Make-lang.in, dmd/aav.c, dmd/aav.h, dmd/class.c, ++ dmd/declaration.c, dmd/dsymbol.c, dmd/dsymbol.h, ++ dmd/expression.c, dmd/func.c, dmd/imphint.c, dmd/mars.c, ++ dmd/mars.h, dmd/optimize.c, dmd/scope.c, dmd/speller.c, ++ dmd/struct.c, dmd/template.c, phobos2/std/c/stdio.d: ++ Updated to 1.061 ++ [9038432ea1ff] ++ ++ * phobos/std/c/stdio.d, phobos2/std/c/stdio.d: ++ Remove stdio.d patches from Issue 21 patch ++ [a53c51fad1bd] ++ ++ * d-decls.cc, phobos/std/c/stdio.d, phobos2/std/c/stdio.d: ++ Issue 21 - _iob undefined reference under Windows ++ [ea913c7eec42] ++ ++ * d-glue.cc: ++ Fixed array ops bugs from 1.059 ++ [92c39c74433f] ++ ++ * d/Make-lang.in, dmd/cast.c, dmd/class.c, dmd/declaration.c, ++ dmd/declaration.h, dmd/dsymbol.c, dmd/expression.c, ++ dmd/expression.h, dmd/idgen.c, dmd/init.c, dmd/inline.c, ++ dmd/interpret.c, dmd/json.c, dmd/mars.c, dmd/mtype.c, ++ dmd/parse.c, dmd/speller.c, dmd/speller.h, dmd/statement.h, ++ dmd/unittests.c: ++ Updated to 1.060 ++ [1c1cc97db718] ++ ++2010-07-28 Iain Buclaw ++ ++ * d/dmd-script, d/lang-specs.h: ++ Issue 48: gdc/gdmd should be able to compile .di files ++ [976a611f59f3] ++ ++ * d-lang.cc, dmd/*, phobos/*: ++ Updated to 1.058 ++ [9ac6a02138c2] ++ ++ * d/Make-lang.in, dmd/machobj.c: ++ Remove machobj.c from D1 ++ [67d109f8fe79] ++ ++ * d-lang.cc, d/dmd-script, d/symbol.cc: ++ Issue 42: -Wall should not error out compiler ++ [7593822be7c0] ++ ++2010-07-27 michaelp ++ ++ * d/Make-lang.in, d-lang.cc, d/dmd-script, dmd/dsymbol.c, ++ dmd/dsymbol.h, dmd/expression.c, dmd/func.c, dmd/init.c, ++ dmd/inline.c, dmd/interpret.c, dmd/machobj.c, dmd/mars.c, ++ dmd/mars.h, dmd/module.c, dmd/module.h, dmd/mtype.c, ++ dmd/root.c, dmd/root.h, dmd/scope.c, dmd/scope.h, ++ dmd/speller.c, dmd/speller.h, dmd/statement.c, ++ dmd/template.c, d/lang.opt, phobos/internal/aaA.d: ++ Updated to 1.057 ++ [b4fb93e94c29] ++ ++2010-07-27 Iain Buclaw ++ ++ * d/Make-lang.in, dmd/array.c, dmd/bit.c, dmd/complex_t.h, ++ dmd/constfold.c, dmd/e2ir.c, dmd/elfobj.c, dmd/expression.c, ++ dmd/irstate.c, dmd/irstate.h, dmd/lib.h, dmd/libelf.c, ++ dmd/libmach.c, dmd/link.c, dmd/man.c, dmd/mars.c, ++ dmd/mem.c, dmd/mem.h, dmd/mtype.c, dmd/port.c, dmd/port.h, ++ dmd/root.c, dmd/tocsym.c, dmd/toir.c, dmd/toir.h: ++ Issue 29 - Remove unused D1 files ++ [d74291c4230b] ++ ++ * dmd/template.c, dmd2/template.c: ++ Issue 36: duplicate symbols created for negatively initialized template ++ arugments ++ [1bd9793d8fc6] ++ ++ * d-builtins.c: ++ Partial fix for Issue 28 ++ [7fb5519947d4] ++ ++ * d-lang.cc: ++ Issue 44: strange code in d-asm-1386.h ++ [73c379cc9714] ++ ++2010-07-26 Iain Buclaw ++ ++ * d-codegen.cc, d-glue.cc: ++ D2 postblit on struct literals finished! ++ [9ee37bd66bca] ++ ++2010-07-25 michaelp ++ ++ * d-lang.cc, d/dmd-script, dmd/*, ++ phobos/internal/arrayfloat.d: ++ Updated to 1.056 ++ [4ff162deda23] ++ ++2010-07-24 Iain Buclaw ++ ++ * d-glue.cc: ++ D2 postblit updates. ++ [d53a8be7c0ed] ++ ++2010-07-23 michaelp ++ ++ * dmd/class.c, dmd/enum.c, dmd/enum.h, dmd/mars.c, ++ dmd/struct.c: ++ Updated to 1.055 ++ [9c62fb9d0abf] ++ ++ * dmd/expression.c: ++ Fixed spot with wrong patch in it ++ [172855a888e9] ++ ++ * dmd/*, phobos/internal/gc/gcx.d: ++ Updated to 1.054 ++ [64df5a74b2c4] ++ ++2010-07-21 Iain Buclaw ++ ++ * d-lang.cc: ++ Fixed warnings in d-lang.cc (thanks Trass3r) ++ [7a3c1ae0b625] ++ ++ * d-asm-i386.h: ++ Fix cast warnings in d-asm-i386.h ++ [fa9b66399a13] ++ ++ * dmd/lexer.c, dmd2/lexer.c: ++ Fix buffer overflow in certain error messages ++ [b91574453f5e] ++ ++ * d-asm-i386.h: ++ Correctly check align value in asm. ++ [d5a0f3619810] ++ ++2010-07-20 Iain Buclaw ++ ++ * d-glue.cc, dmd/root.c, dmd/statement.c, dmd/template.c, ++ dmd/template.h, phobos/std/c/stddef.d: ++ Quick updates to D1 and postblit code. ++ [214fbfbf5f3f] ++ ++ * d-builtins2.cc, d-codegen.cc, d-codegen.h, d-glue.cc, ++ dmd/expression.c, dmd/func.c, dmd/machobj.c, dmd/mtype.c, ++ dmd/parse.c, dmd/statement.c, dmd/statement.h, dmd/toobj.c, ++ phobos/internal/gc/gc.d: ++ Some whitespace corrections. ++ [c9c54a275526] ++ ++2010-07-20 michaelp ++ ++ * d-builtins2.cc, d-codegen.cc, d-codegen.h, d-glue.cc, ++ dmd/*, phobos/*: ++ Updated to 1.053 ++ [f02a96cfc1de] ++ ++2010-07-20 Iain Buclaw ++ ++ * d-glue.cc: ++ Quick revision updates ++ [c79811b4f1fc] ++ ++2010-07-19 Iain Buclaw ++ ++ * d-glue.cc, dmd2/attrib.c, dmd2/cast.c, dmd2/cond.c, ++ dmd2/constfold.c, dmd2/declaration.c, dmd2/declaration.h, ++ dmd2/e2ir.c, dmd2/expression.c, dmd2/func.c, ++ dmd2/impcnvgen.c, dmd2/lexer.c, dmd2/lexer.h, dmd2/link.c, ++ dmd2/mars.c, dmd2/mtype.c, dmd2/mtype.h, dmd2/parse.c, ++ dmd2/parse.h, dmd2/statement.c, dmd2/toir.c: ++ Updated to 2.020 - Frontend Only ++ [676f0aa79458] ++ ++2010-07-17 Iain Buclaw ++ ++ * phobos2/Makefile.in: ++ libgphobos2 Makefile fixes. ++ [c4acdacfddd2] ++ + 2010-07-16 Iain Buclaw + + Merge with DMD 2.019 +--- a/src/gcc/d/dmd-script.1 ++++ b/src/gcc/d/dmd-script.1 +@@ -1,8 +1,8 @@ +-.TH dmd 1 ++.TH gdmd 1 + .SH NAME +-dmd - wrapper script for gdc that emulates the dmd command ++gdmd - wrapper script for gdc that emulates the dmd command + .SH SYNOPSIS +-.B dmd ++.B gdmd + files.d + ... + .I { -switch } +@@ -11,56 +11,98 @@ + .IP files.htm + .IP files.html + D source files ++.IP files.di ++D interface files + .IP files.o + Object files to link in + .IP files.a + Library files to link in +-.IP -vdmd +-Print commands executed by this wrapper script +-.IP -q[,,,...] +-Pass the comma-separated arguments to gdc ++.IP -arch ... ++pass -arch option to gdc + .IP -c + compile only, do not link +-.IP -d ++.IP -cov ++do code coverage analysis ++.IP -d + allow deprecated features +-.IP -g ++.IP -debug ++compile in debug code ++.IP -debug=level ++compile in debug code <= level ++.IP -debug=ident ++compile in debug code identified by ident ++.IP -deps=filename ++write module dependencies to filename ++.IP -g + add symbolic debug info +-.IP -gt ++.IP -gt + add trace profiling hooks (not supported under linux) +-.IP -v +-verbose +-.IP -O ++.IP -H ++generate 'header' file ++.IP -Hdhdrdir ++write 'header' file to hdrdir directory ++.IP -Hffilename ++write 'header' file to filename ++.IP -inline ++do function inlining ++.IP -Llinkerflag ++pass linkerflag to linker ++.IP -lib ++generate library ++.IP -O + optimize +-.IP -odobjdir ++.IP -o- ++do not write object file ++.IP -odobjdir + write object files to directory objdir +-.IP -offilename ++.IP -offilename + name output file to filename +-.IP -op ++.IP -op + do not strip paths from source file +-.IP -Ipath ++.IP -Ipath + where to look for imports + + .I path + is a ; separated list of paths. Multiple -I's can be used, and the paths are searched in the same order. +-.IP -Llinkerflag +-pass linkerflag to linker +-.IP -debug +-compile in debug code +-.IP -debug=level +-compile in debug code <= level +-.IP -debug=ident +-compile in debug code identified by ident +-.IP -inline +-do function inlining +-.IP -release ++.IP -pipe ++use pipes instead of intermediate files ++.IP -profile ++profile runtime performance ++.IP -quiet ++suppress unnecessary error messages ++.IP -q[,,,...] ++Pass the comma-separated arguments to gdc ++.IP -release + compile release version +-.IP -unittest ++.IP -run ++run resulting program, passing args ++.IP -unittest + compile in unit tests +-.IP -version=level ++.IP -v ++verbose ++.IP -vdmd ++Print commands executed by this wrapper script ++.IP -version=level + compile in version code >= level +-.IP -version=ident ++.IP version=ident + compile in version code identified by ident ++.IP -X ++generate JSON file ++.IP -Xffilename ++write JSON to filename ++ + .SH SEE ALSO + .BR gdc(1) ++ + .SH AUTHOR +-Copyright (C) 2004 David Friedman ++Copyright ++ ++(C) 2004 David Friedman ++ ++Modified by ++ ++(C) 2010 Iain Buclaw ++ ++(C) 2010 Michael Parrott ++ ++(C) 2010 Vincenzo Ampolo +--- a/src/gcc/d/gdc.1 ++++ b/src/gcc/d/gdc.1 +@@ -14,18 +14,22 @@ + .IP files.htm + .IP files.html + D source files ++.IP files.di ++D interface files + .IP files.o + Object files to link in + .IP files.a + Library files to link in +-.IP -frelease +-compile release version +-.IP -funittest +-compile in unit tests ++.IP -fall-sources ++For each source file on the command line, semantically process each file ++preceding it. Use this if compilation errors occur due to complicated ++.IP -f[no-]bounds-check ++Controls array bounds checking ++circular module references. This will slow compilation noticeably. + .IP -fdeprecated + allow deprecated features +-.IP -fversion=ident +-compile in version code identified by ident ++.IP -fdeps= ++output module dependencies to + .IP -femit-templates[=full|private|none|auto] + Controls whether or not template code is emitted. + +@@ -41,13 +45,34 @@ + For targets that support templates, the "full" mode is used. + Otherwise, the "private" mode is used. + .RE +-.IP -f[no-]bounds-check +-Controls array bounds checking +-.IP -fall-sources +-For each source file on the command line, semantically process each file +-preceding it. Use this if compilation errors occur due to complicated +-circular module references. This will slow compilation noticeably. ++ ++.IP -fintfc ++generate D interface files ++.IP -fintfc-dir= ++write D interface files to directory ++.IP -fintfc-file= ++wite D interface file to ++.IP -frelease ++compile release version ++.IP -funittest ++compile in unit tests ++.IP -fversion=ident ++compile in version code identified by ident ++.IP -fXf= ++output JSON to ++ + .SH SEE ALSO + .BR gcc(1) ++ + .SH AUTHOR +-Copyright (C) 2004 David Friedman ++Copyright ++ ++(C) 2004 David Friedman ++ ++Modified by ++ ++(C) 2010 Iain Buclaw ++ ++(C) 2010 Michael Parrott ++ ++(C) 2010 Vincenzo Ampolo +--- a/src/gcc/d/GDC.html ++++ b/src/gcc/d/GDC.html +@@ -10,7 +10,7 @@ + Last update: August 22, 2007
+

Supported Systems

+
    +-
  • GCC 3.4.x, 4.0.x, 4.1.x
    ++
  • GCC 3.4.x, 4.0.x, 4.1.x, 4.2.x, 4.3.x, 4.4.x
    +
  • +
  • Linux (tested on Fedora Core 5 x86, x86_64, and PowerPC)
    +
  • +@@ -46,13 +46,13 @@ + + + +-
  • Main ++
  • Main + package
  • + + + + +-
  • Build Instructions
  • ++
  • Build Instructions
  • + + + +@@ -72,7 +72,7 @@ + + + +-
  • GDC: D ++
  • GDC: D + Compiler for GCC
    + + +@@ -147,11 +147,11 @@ + + + David Friedman
    +- +- +- +- + e-mail: dvdfrdmn <at> users.sf.net
    ++Iain Buclaw
    ++e-mail: ibuclaw <at> ubuntu.com
    ++Michael Parrott
    ++e-mail: baseball.mjp <at> gmail.com
    + + + +--- a/src/gcc/d/History ++++ b/src/gcc/d/History +@@ -1,4 +1,10 @@ +-0.25: ++0.25: (Future release) ++ * Support for GCC, 4.2.x, 4.3.x, and 4.4.x added ++ * Updated D1 to 1.063 ++ * Updated D2 to 2.020 ++ * Added druntime support ++ * Fixed Bugzilla ... ++ * Fixed Bitbucket issues ... + + 0.24: + * Removed support for GCC 3.3.x +--- a/src/gcc/d/README ++++ b/src/gcc/d/README +@@ -12,7 +12,7 @@ + + Supported Systems + +- * GCC 3.4.x, 4.0.x, 4.1.x ++ * GCC 3.4.x, 4.0.x, 4.1.x, 4.2.x, 4.3.x, 4.4.x + * Linux (tested on Fedora Core 5 x86, x86_64, and PowerPC) + * Mac OS X 10.3.9 and 10.4.x + * FreeBSD 6.x +@@ -35,14 +35,15 @@ + Downloads + + * Main package +- http://sourceforge.net/projects/dgcc ++ http://bitbucket.org/goshawk/gdc/wiki/Home + * Build Instructions +- http://dgcc.sourceforge.net/gdc/install.html ++ http://bitbucket.org/goshawk/gdc/wiki/Home#installation + (or see INSTALL included in the main package) + + Links + +- * This Project -- http://dgcc.sourceforge.net/ ++ * This Project -- http://bitbucket.org/goshawk/gdc/wiki/Home ++ * Previous home -- http://dgcc.sourceforge.net/ + * The D Programming Language -- http://www.digitalmars.com/d/ + * D Links Page -- http://digitalmars.com/d/dlinks.html + * The D.gnu newsgroup -- news://news.digitalmars.com/D.gnu +@@ -54,6 +55,10 @@ + Contact + David Friedman + e-mail: dvdfrdmn@users.sf.net ++Iain Buclaw ++e-mail: ibuclaw@ubuntu.com ++Michael Parrott ++e-mail: baseball.mjp@gmail.com + + Status + --- gcc-4.4-4.4.5.orig/debian/patches/gcc-cloog-dl.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-cloog-dl.diff @@ -0,0 +1,176 @@ +# 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. + +--- a/src/gcc/Makefile.in.jj 2009-01-26 20:50:38.000000000 +0100 ++++ b/src/gcc/Makefile.in 2009-01-27 14:18:10.000000000 +0100 +@@ -915,7 +915,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) + # 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@ + +@@ -3076,6 +3076,9 @@ $(out_object_file): $(out_file) $(CONFIG + $(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) +--- a/src/gcc/graphite.c.jj 2009-01-24 19:59:02.000000000 +0100 ++++ b/src/gcc/graphite.c 2009-01-27 14:52:08.000000000 +0100 +@@ -59,6 +59,110 @@ along with GCC; see the file COPYING3. + #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-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. */ +@@ -4019,10 +4151,10 @@ clast_get_body_of_loop (struct clast_stm + 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); + +@@ -6061,6 +6193,12 @@ graphite_transform_loops (void) + if (number_of_loops () <= 1) + return; + ++ if (!init_cloog_pointers ()) ++ { ++ sorry ("Graphite loop optimizations can only be used if the libcloog-ppl0 package is installed"); ++ return; ++ } ++ + current_scops = VEC_alloc (scop_p, heap, 3); + recompute_all_dominators (); + --- gcc-4.4-4.4.5.orig/debian/patches/gcc-build-id.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/libjava-fixed-symlinks.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-fixed-symlinks.diff @@ -0,0 +1,24 @@ +# DP: Remove unneed '..' elements from symlinks in JAVA_HOME + +--- a/src/libjava/Makefile.am.orig 2009-04-28 12:24:21.000000000 +0200 ++++ b/src/libjava/Makefile.am 2009-05-16 12:32:53.000000000 +0200 +@@ -580,7 +580,7 @@ + $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS) + relative() { \ + $(PERL) -e 'use File::Spec; \ +- print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \ ++ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \ + }; \ + RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \ + ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ +--- a/src/libjava/Makefile.in.orig 2009-05-12 10:51:35.000000000 +0200 ++++ b/src/libjava/Makefile.in 2009-05-16 12:34:13.000000000 +0200 +@@ -12433,7 +12433,7 @@ + @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS) + @CREATE_JAVA_HOME_TRUE@ relative() { \ + @CREATE_JAVA_HOME_TRUE@ $(PERL) -e 'use File::Spec; \ +-@CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \ ++@CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \ + @CREATE_JAVA_HOME_TRUE@ }; \ + @CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \ + @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \ --- gcc-4.4-4.4.5.orig/debian/patches/boehm-gc-nocheck.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/ada-polyorb-dsa.diff +++ gcc-4.4-4.4.5/debian/patches/ada-polyorb-dsa.diff @@ -0,0 +1,228 @@ +# DP: - backport support for PolyORB_DSA version 3 from the trunk. + +Index: b/src/gcc/ada/rtsfind.adb +=================================================================== +--- a/src/gcc/ada/rtsfind.adb ++++ b/src/gcc/ada/rtsfind.adb +@@ -298,6 +298,9 @@ + elsif U_Id in Ada_Streams_Child then + Name_Buffer (12) := '.'; + ++ elsif U_Id in Ada_Strings_Child then ++ Name_Buffer (12) := '.'; ++ + elsif U_Id in Ada_Text_IO_Child then + Name_Buffer (12) := '.'; + +Index: b/src/gcc/ada/rtsfind.ads +=================================================================== +--- a/src/gcc/ada/rtsfind.ads ++++ b/src/gcc/ada/rtsfind.ads +@@ -62,6 +62,9 @@ + -- Names of the form Ada_Streams_xxx are second level children + -- of Ada.Streams. + ++ -- Names of the form Ada_Strings_xxx are second level children ++ -- of Ada.Strings. ++ + -- Names of the form Ada_Text_IO_xxx are second level children + -- of Ada.Text_IO. + +@@ -121,6 +124,7 @@ + Ada_Interrupts, + Ada_Real_Time, + Ada_Streams, ++ Ada_Strings, + Ada_Tags, + Ada_Task_Identification, + Ada_Task_Termination, +@@ -150,6 +154,10 @@ + + Ada_Streams_Stream_IO, + ++ -- Children of Ada.Strings ++ ++ Ada_Strings_Unbounded, ++ + -- Children of Ada.Text_IO (for Text_IO_Kludge) + + Ada_Text_IO_Decimal_IO, +@@ -401,6 +409,11 @@ + + subtype Ada_Streams_Child is Ada_Child + range Ada_Streams_Stream_IO .. Ada_Streams_Stream_IO; ++ -- Range of values for children of Ada.Streams ++ ++ subtype Ada_Strings_Child is Ada_Child ++ range Ada_Strings_Unbounded .. Ada_Strings_Unbounded; ++ -- Range of values for children of Ada.Strings + + subtype Ada_Text_IO_Child is Ada_Child + range Ada_Text_IO_Decimal_IO .. Ada_Text_IO_Modular_IO; +@@ -526,6 +539,8 @@ + + RE_Stream_Access, -- 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 +@@ -1203,6 +1218,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 +@@ -1680,6 +1696,8 @@ + + RE_Stream_Access => 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.5.orig/debian/patches/gnat-snapshot-build-fix.diff +++ gcc-4.4-4.4.5/debian/patches/gnat-snapshot-build-fix.diff @@ -0,0 +1,19 @@ +# DP: Let gnat-4.4 build with gnat snapshots from the trunk (20100803) + +2010-06-22 Ed Schonberg + + * uintp.adb: Fix scope error in operator call. + +Index: gcc/ada/uintp.adb +=================================================================== +--- a/src/gcc/ada/uintp.adb (revision 161146) ++++ b/src/gcc/ada/uintp.adb (revision 161147) +@@ -239,7 +239,7 @@ + + function Hash_Num (F : Int) return Hnum is + begin +- return Standard."mod" (F, Hnum'Range_Length); ++ return Types."mod" (F, Hnum'Range_Length); + end Hash_Num; + + --------------- --- gcc-4.4-4.4.5.orig/debian/patches/gcc-multiarch-i686.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-multiarch-i686.diff @@ -0,0 +1,356 @@ +# DP: Add multiarch support to GCC. +# DP: +# DP: Convert the multilib option to a target triplet, +# DP: add multiarch include directories and libraries path: +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: /usr/lib/-linux-gnu +# DP: to the system paths. + +2009-03-24 Arthur Loiret + + * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. + * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. + * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. + * gcc.c: include multiarch.h. + (set_multiarch_dir): New function. Adds the multiarch directories to + the library path. + [ENABLE_MULTIARCH]: Use it. + * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include + directory for multiarch directories. + * incpath.c: include multiarch.h + [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. + * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. + * multiarch.h: New file. +--- + gcc/Makefile.in | 7 ++-- + gcc/config.gcc | 9 +++++ + gcc/config.in | 4 ++ + gcc/configure.ac | 13 ++++++++ + gcc/cppdefault.c | 6 +++ + gcc/gcc.c | 41 ++++++++++++++++++++++++ + gcc/incpath.c | 28 ++++++++++++++++ + gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 196 insertions(+), 3 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -806,6 +806,7 @@ + endif + + # Shorthand variables for dependency lists. ++MULTIARCH_H = multiarch.h + TOPLEV_H = toplev.h input.h + TARGET_H = $(TM_H) target.h insn-modes.h + MACHMODE_H = machmode.h mode-classes.def insn-modes.h +@@ -1818,7 +1819,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) $(MULTIARCH_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 \ +@@ -1959,7 +1960,7 @@ + + 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) \ +- configargs.h $(OBSTACK_H) opts.h ++ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) + (SHLIB_LINK='$(SHLIB_LINK)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(DRIVER_DEFINES) \ + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3173,3 +3173,12 @@ then + target_cpu_default=$target_cpu_default2 + fi + fi ++ ++if test x${enable_multiarch} = xyes; then ++ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` ++ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" ++ if test x${with_multiarch_defaults} != x; then ++ multiarch_defaults=${with_multiarch_defaults} ++ fi ++ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" ++fi +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -155,6 +155,10 @@ + #undef ENABLE_WIN32_REGISTRY + #endif + ++/* Define if you want to use multiarch. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_MULTIARCH ++#endif + + /* Define to the name of a file containing a list of extra machine modes for + this architecture. */ +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -585,6 +585,19 @@ AC_ARG_ENABLE(multilib, + [], [enable_multilib=yes]) + AC_SUBST(enable_multilib) + ++# Determine whether or not multiarch is enabled. ++AC_ARG_ENABLE(multiarch, ++[ --enable-multiarch enable multiarch support], ++[ ++ enable_multiarch=yes ++ AC_DEFINE(ENABLE_MULTIARCH, 1, ++ [Define if you want to use multiarch.]) ++],[]) ++AC_SUBST(enable_multiarch) ++ ++AC_ARG_WITH(multiarch-defaults, ++[ --with-multiarch-defaults set the default multiarch directory.],) ++ + # Enable __cxa_atexit for C++. + AC_ARG_ENABLE(__cxa_atexit, + [ --enable-__cxa_atexit enable __cxa_atexit for C++], +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -60,6 +60,9 @@ const struct default_include cpp_include_defaults[] + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++# ifdef ENABLE_MULTIARCH ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++# endif + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -95,6 +98,9 @@ const struct default_include cpp_include_defaults[] + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++# ifdef ENABLE_MULTIARCH ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, ++# endif + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -71,6 +71,7 @@ compilation is specified by a string called a "spec". */ + #include "system.h" + #include "coretypes.h" + #include "multilib.h" /* before tm.h */ ++#include "multiarch.h" + #include "tm.h" + #include + #if ! defined( SIGCHLD ) && defined( SIGCLD ) +@@ -345,6 +346,9 @@ static void give_switch (int, int); + static int used_arg (const char *, int); + static int default_arg (const char *, int); + static void set_multilib_dir (void); ++#ifdef ENABLE_MULTIARCH ++static void set_multiarch_dir (void); ++#endif + static void print_multilib_info (void); + static void perror_with_name (const char *); + static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; +@@ -6504,6 +6508,11 @@ main (int argc, char **argv) + the subdirectory based on the options. */ + set_multilib_dir (); + ++#ifdef ENABLE_MULTIARCH ++ /* Add the multiarch directories to libraries path. */ ++ set_multiarch_dir (); ++#endif ++ + /* Warn about any switches that no pass was interested in. */ + + for (i = 0; (int) i < n_switches; i++) +@@ -7576,6 +7585,27 @@ set_multilib_dir (void) + multilib_os_dir = multilib_dir; + } + ++#ifdef ENABLE_MULTIARCH ++/* Add the multiarch directories to libraries path. This uses the converted ++ multiarch triplet from the multilib value. ++ For example, if the target supports -m32/-m64 as multilib option and ++ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library ++ path if either -m64 or no multilib option at all is set. And it will ++ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in ++ multiarch.def. */ ++ ++static void ++set_multiarch_dir (void) ++{ ++ const char *path; ++ ++ path = concat (STANDARD_STARTFILE_PREFIX_2, MULTIARCH_DEFAULTS, ++ dir_separator_str, NULL); ++ add_prefix (&startfile_prefixes, path, NULL, ++ PREFIX_PRIORITY_LAST, 0, 1); ++} ++#endif ++ + /* Print out the multiple library subdirectory selection + information. This prints out a series of lines. Each line looks + like SUBDIRECTORY;@OPTION@OPTION, with as many options as is +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -30,6 +30,7 @@ + #include "intl.h" + #include "incpath.h" + #include "cppdefault.h" ++#include "multiarch.h" + + /* Microsoft Windows does not natively support inodes. + VMS has non-numeric inodes. */ +@@ -132,6 +133,9 @@ add_standard_paths (const char *sysroot, const char *iprefix, + const struct default_include *p; + int relocated = cpp_relocated(); + size_t len; ++#ifdef ENABLE_MULTIARCH ++ const char *multiarch; ++#endif + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -150,8 +154,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -195,8 +211,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, + else + str = update_path (p->fname, p->component); + ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + + add_path (str, SYSTEM, p->cxx_aware, false); + } +--- /dev/null ++++ b/src/gcc/multiarch.h +@@ -0,0 +1,95 @@ ++/* Header for multiarch handling (include directories, libraries path). ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Arthur Loiret ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#ifndef GCC_MULTIARCH_H ++#define GCC_MULTIARCH_H ++ ++#include "tm.h" ++ ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] = { ++#ifdef ENABLE_MULTIARCH ++ { "", MULTIARCH_DEFAULTS }, ++# if defined(__x86_64_linux_gnu__) ++ { "32", "i686-linux-gnu" }, ++# endif ++# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) ++ { "64", "x86_64-linux-gnu" }, ++# endif ++# if defined(__powerpc64_linux_gnu__) ++ { "32", "powerpc-linux-gnu" }, ++# endif ++# if defined(__powerpc_linux_gnu__) ++ { "64", "powerpc64-linux-gnu" }, ++# endif ++# if defined(__sparc64_linux_gnu__) ++ { "32", "sparc-linux-gnu" }, ++# endif ++# if defined(__sparc_linux_gnu__) ++ { "64", "sparc64-linux-gnu" }, ++# endif ++# if defined(__s390x_linux_gnu__) ++ { "31", "s390-linux-gnu" }, ++# endif ++# if defined(__s390_linux_gnu__) ++ { "64", "s390x-linux-gnu" }, ++# endif ++# if defined(__mips_linux_gnu__) ++ { "n32", "mips64-linux-gnuabin32" }, ++ { "64", "mips64-linux-gnuabi64" }, ++# endif ++# if defined(__mipsel_linux_gnu__) ++ { "n32", "mips64el-linux-gnuabin32" }, ++ { "64", "mips64el-linux-gnuabi64" }, ++# endif ++# if defined(__x86_64_kfreebsd_gnu__) ++ { "32", "i486-kfreebsd-gnu" }, ++# endif ++# if defined(__sh4_linux_gnu__) ++ { "m4", "sh4-linux-gnu" }, ++ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, ++# endif ++#endif /* ENABLE_MULTIARCH */ ++ { 0, 0 } ++}; ++ ++/* Convert the multilib option to the corresponding target triplet. ++ See multiarch.def and config.gcc for multilib/multiarch pairs. ++ When the default multilib is used, the corresponding multilib/multiarch ++ pair is { "", $target_tripplet }. */ ++static inline const char* ++multilib_to_multiarch (const char *imultilib) ++{ ++ const struct multiarch_mapping *p; ++ ++ for (p = multiarch_mappings; p->multiarch; p++) ++ { ++ if (!strcmp(p->multilib, imultilib ? imultilib : "")) ++ return p->multiarch; ++ } ++ return NULL; ++} ++ ++#endif /* GCC_MULTIARCH_H */ --- gcc-4.4-4.4.5.orig/debian/patches/hurd-pthread.diff +++ gcc-4.4-4.4.5/debian/patches/hurd-pthread.diff @@ -0,0 +1,170 @@ +# Fix pthread support in a/src/boehm-gc + +--- a/src/boehm-gc/pthread_support.c.orig 2009-02-07 22:27:11.828527000 +0000 ++++ b/src/boehm-gc/pthread_support.c 2009-02-07 22:27:18.279505000 +0000 +@@ -885,7 +885,7 @@ + GC_nprocs = pthread_num_processors_np(); + # endif + # if defined(GC_OSF1_THREADS) || defined(GC_AIX_THREADS) \ +- || defined(GC_SOLARIS_PTHREADS) ++ || defined(GC_SOLARIS_PTHREADS) || defined(GC_GNU_THREADS) + GC_nprocs = sysconf(_SC_NPROCESSORS_ONLN); + if (GC_nprocs <= 0) GC_nprocs = 1; + # endif +--- a/src/boehm-gc/include/gc_config_macros.h.orig 2009-02-07 22:25:08.240177000 +0000 ++++ b/src/boehm-gc/include/gc_config_macros.h 2009-02-07 22:28:40.648347000 +0000 +@@ -6,7 +6,8 @@ + || defined(GC_SOLARIS_PTHREADS) \ + || defined(GC_HPUX_THREADS) \ + || defined(GC_AIX_THREADS) \ +- || defined(GC_LINUX_THREADS)) ++ || defined(GC_LINUX_THREADS) \ ++ || defined(GC_GNU_THREADS)) + # define _REENTRANT + /* Better late than never. This fails if system headers that */ + /* depend on this were previously included. */ +@@ -21,7 +22,8 @@ + defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \ + defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \ + defined(GC_AIX_THREADS) || \ +- (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) ++ (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) || \ ++ defined(GC_GNU_THREADS) + # define GC_PTHREADS + # endif + +--- a/src/boehm-gc/threadlibs.c.orig 2009-02-07 22:34:42.429201000 +0000 ++++ b/src/boehm-gc/threadlibs.c 2009-02-07 22:34:49.530544000 +0000 +@@ -12,7 +12,8 @@ + # endif + # if defined(GC_LINUX_THREADS) || defined(GC_IRIX_THREADS) \ + || defined(GC_SOLARIS_PTHREADS) \ +- || defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) ++ || defined(GC_DARWIN_THREADS) || defined(GC_AIX_THREADS) \ ++ || defined(GC_GNU_THREADS) + printf("-lpthread\n"); + # endif + # if defined(GC_FREEBSD_THREADS) +--- a/src/boehm-gc/configure.ac.orig 2009-02-07 22:30:12.000000000 +0000 ++++ b/src/boehm-gc/configure.ac 2009-02-07 22:35:31.717091000 +0000 +@@ -172,6 +172,11 @@ + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS=-pthread + ;; ++ *-*-gnu*) ++ AC_DEFINE(GC_GNU_THREADS,1,[support GNU threads]) ++ AC_DEFINE(_REENTRANT) ++ AC_DEFINE(THREAD_LOCAL_ALLOC) ++ ;; + *-*-solaris*) + AC_DEFINE(GC_SOLARIS_PTHREADS,1,[support for Solaris pthreads]) + # Need to use alternate thread library, otherwise gctest hangs +--- a/src/boehm-gc/configure.orig 2009-02-07 22:32:34.000000000 +0000 ++++ b/src/boehm-gc/configure 2009-02-07 22:35:28.065650000 +0000 +@@ -5489,6 +5489,20 @@ + AM_CPPFLAGS="$AM_CPPFLAGS -pthread" + THREADLIBS=-pthread + ;; ++ *-*-gnu*) ++cat >>confdefs.h <<\_ACEOF ++#define GC_GNU_THREADS 1 ++_ACEOF ++ ++ cat >>confdefs.h <<\_ACEOF ++#define _REENTRANT 1 ++_ACEOF ++ ++cat >>confdefs.h <<\_ACEOF ++#define THREAD_LOCAL_ALLOC 1 ++_ACEOF ++ ++ ;; + *-*-solaris*) + + cat >>confdefs.h <<\_ACEOF +--- a/src/boehm-gc/os_dep.c.orig 2009-02-07 22:37:20.000000000 +0000 ++++ b/src/boehm-gc/os_dep.c 2009-02-07 22:37:40.000000000 +0000 +@@ -312,7 +312,7 @@ + /* for recent Linux versions. This seems to be the easiest way to */ + /* cover all versions. */ + +-# ifdef LINUX ++# if defined(LINUX) || defined(HURD) + /* Some Linux distributions arrange to define __data_start. Some */ + /* define data_start as a weak symbol. The latter is technically */ + /* broken, since the user program may define data_start, in which */ +@@ -331,7 +331,7 @@ + { + extern ptr_t GC_find_limit(); + +-# ifdef LINUX ++# if defined(LINUX) || defined(HURD) + /* Try the easy approaches first: */ + if ((ptr_t)__data_start != 0) { + GC_data_start = (ptr_t)(__data_start); +--- a/src/boehm-gc/include/private/gcconfig.h.orig 2009-02-07 22:29:18.000000000 +0000 ++++ b/src/boehm-gc/include/private/gcconfig.h 2009-02-07 22:41:24.598684000 +0000 +@@ -1316,8 +1316,9 @@ + # define OS_TYPE "HURD" + # define STACK_GROWS_DOWN + # define HEURISTIC2 +- extern int __data_start[]; +-# define DATASTART ( (ptr_t) (__data_start)) ++# define SIG_SUSPEND SIGUSR1 ++# define SIG_THR_RESTART SIGUSR2 ++# define SEARCH_FOR_DATA_START + extern int _end[]; + # define DATAEND ( (ptr_t) (_end)) + /* # define MPROTECT_VDB Not quite working yet? */ +@@ -2153,7 +2154,8 @@ + # if defined(SVR4) || defined(LINUX) || defined(IRIX5) || defined(HPUX) \ + || defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \ + || defined(DGUX) || defined(BSD) || defined(SUNOS4) \ +- || defined(_AIX) || defined(DARWIN) || defined(OSF1) ++ || defined(_AIX) || defined(DARWIN) || defined(OSF1) \ ++ || defined(HURD) + # define UNIX_LIKE /* Basic Unix-like system calls work. */ + # endif + +@@ -2209,7 +2211,7 @@ + # define CACHE_LINE_SIZE 32 /* Wild guess */ + # endif + +-# if defined(LINUX) || defined(__GLIBC__) ++# if defined(LINUX) || defined(HURD) || defined(__GLIBC__) + # define REGISTER_LIBRARIES_EARLY + /* We sometimes use dl_iterate_phdr, which may acquire an internal */ + /* lock. This isn't safe after the world has stopped. So we must */ +@@ -2244,6 +2246,9 @@ + # if defined(GC_AIX_THREADS) && !defined(_AIX) + --> inconsistent configuration + # endif ++# if defined(GC_GNU_THREADS) && !defined(HURD) ++ --> inconsistent configuration ++# endif + # if defined(GC_WIN32_THREADS) && !defined(MSWIN32) && !defined(CYGWIN32) + --> inconsistent configuration + # endif +--- a/src/boehm-gc/include/gc_config.h.in.orig 2009-02-08 01:51:09.707191000 +0000 ++++ b/src/boehm-gc/include/gc_config.h.in 2009-02-08 01:54:06.298757000 +0000 +@@ -33,6 +33,9 @@ + /* include support for gcj */ + #undef GC_GCJ_SUPPORT + ++/* support GNU/Hurd threads */ ++#undef GC_GNU_THREADS ++ + /* enables support for HP/UX 11 pthreads */ + #undef GC_HPUX_THREADS + +--- a/src/boehm-gc/specific.c.orig 2009-02-08 03:44:40.833287000 +0000 ++++ b/src/boehm-gc/specific.c 2009-02-08 03:44:50.865199000 +0000 +@@ -13,7 +13,7 @@ + + #include "private/gc_priv.h" /* For GC_compare_and_exchange, GC_memory_barrier */ + +-#if defined(GC_LINUX_THREADS) ++#if defined(GC_LINUX_THREADS) || defined(GC_GNU_THREADS) + + #include "private/specific.h" + --- gcc-4.4-4.4.5.orig/debian/patches/pr39491.diff +++ gcc-4.4-4.4.5/debian/patches/pr39491.diff @@ -0,0 +1,132 @@ +# DP: Proposed patch for PR libstdc++/39491. + +2009-04-16 Benjamin Kosnik + + * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. + +Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc +=================================================================== +--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) ++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) +@@ -213,4 +221,111 @@ + return tanh((double) x); + } + #endif ++ ++ // From libmath/signbitl.c ++ // XXX ABI mistakenly exported ++#if defined (__hppa__) && defined (__linux__) ++# include ++# include ++ ++typedef unsigned int U_int32_t __attribute ((mode (SI))); ++typedef int Int32_t __attribute ((mode (SI))); ++typedef unsigned int U_int64_t __attribute ((mode (DI))); ++typedef int Int64_t __attribute ((mode (DI))); ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ U_int32_t msw; ++ U_int32_t lsw; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int32_t lsw; ++ U_int32_t msw; ++ unsigned int sign_exponent:16; ++ unsigned int empty:16; ++ } parts; ++} ieee_long_double_shape_type; ++#endif ++ ++/* Get int from the exponent of a long double. */ ++#define GET_LDOUBLE_EXP(exp,d) \ ++do { \ ++ ieee_long_double_shape_type ge_u; \ ++ ge_u.value = (d); \ ++ (exp) = ge_u.parts.sign_exponent; \ ++} while (0) ++ ++#if BYTE_ORDER == BIG_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t msw; ++ U_int64_t lsw; ++ } parts64; ++ struct ++ { ++ U_int32_t w0, w1, w2, w3; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++#if BYTE_ORDER == LITTLE_ENDIAN ++typedef union ++{ ++ long double value; ++ struct ++ { ++ U_int64_t lsw; ++ U_int64_t msw; ++ } parts64; ++ struct ++ { ++ U_int32_t w3, w2, w1, w0; ++ } parts32; ++} ieee_quad_double_shape_type; ++#endif ++ ++/* Get most significant 64 bit int from a quad long double. */ ++#define GET_LDOUBLE_MSW64(msw,d) \ ++do { \ ++ ieee_quad_double_shape_type qw_u; \ ++ qw_u.value = (d); \ ++ (msw) = qw_u.parts64.msw; \ ++} while (0) ++ ++int ++__signbitl (long double x) ++{ ++#if LDBL_MANT_DIG == 113 ++ Int64_t msw; ++ ++ GET_LDOUBLE_MSW64 (msw, x); ++ return msw < 0; ++#else ++ Int32_t e; ++ ++ GET_LDOUBLE_EXP (e, x); ++ return e & 0x8000; ++#endif ++} ++#endif ++ ++#ifndef _GLIBCXX_HAVE___SIGNBITL ++ ++#endif + } // extern "C" +--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 ++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 +@@ -635,6 +635,7 @@ + sqrtf; + sqrtl; + copysignf; ++ __signbitl; + + # GLIBCXX_ABI compatibility only. + # std::string --- gcc-4.4-4.4.5.orig/debian/patches/ada-default-project-path.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/rev146451.diff +++ gcc-4.4-4.4.5/debian/patches/rev146451.diff @@ -0,0 +1,23 @@ +# DP: Fix a typo in the arm back-end. + +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. + +--- a/src/gcc/config/arm/arm.c 2009-06-02 09:18:16.000000000 +0200 ++++ b/src/gcc/config/arm/arm.c 2009-07-18 21:26:09.000000000 +0200 +@@ -5458,7 +5458,7 @@ arm_rtx_costs_1 (rtx x, enum rtx_code ou + 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)) + { --- gcc-4.4-4.4.5.orig/debian/patches/gdc-stubs.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-stubs.diff @@ -0,0 +1,118 @@ +# DP: Added stubs for various functions referenced by $(C_TARGET_OBJS) + +--- a/src/gcc/d/d-builtins.c 2010-08-19 12:30:20.000000000 +0100 ++++ b/src/gcc/d/d-builtins.c 2010-09-12 10:05:46.654888000 +0100 +@@ -76,7 +76,12 @@ + #error "Version of GCC is not supported." + #endif + +-#if D_GCC_VER >= 41 ++ ++/* Nonzero if an ISO standard was selected. It rejects macros in the ++ user's namespace. */ ++ ++/*extern*/ int flag_iso; ++ + /* Nonzero means enable C89 Amendment 1 features. */ + + /*extern*/ int flag_isoc94; +@@ -84,7 +89,7 @@ + /* Nonzero means use the ISO C99 dialect of C. */ + + /*extern*/ int flag_isoc99; +-#endif ++ + + /* Used to help initialize the builtin-types.def table. When a type of + the correct size doesn't exist, use error_mark_node instead of NULL. +--- a/src/gcc/d/d-c-stubs.c 2010-08-19 12:30:20.000000000 +0100 ++++ b/src/gcc/d/d-c-stubs.c 2010-08-29 11:41:16.020473123 +0100 +@@ -31,6 +31,7 @@ + link against function in the C front end. These definitions + satisfy the link requirements, but should never be executed. */ + ++void + add_cpp_dir_path (cpp_dir *p, int chain) + { + /* nothing */ +@@ -48,6 +49,41 @@ + /* nothing */ + } + ++tree ++default_conversion (tree exp) ++{ ++ return exp; ++} ++ ++tree ++build_binary_op (location_t location, enum tree_code code, ++ tree orig_op0, tree orig_op1, int convert_p) ++{ ++#if D_GCC_VER >= 40 ++ gcc_assert(0); ++#endif ++ return NULL_TREE; ++} ++ ++tree ++build_unary_op (location_t location, ++ enum tree_code code, tree xarg, int flag) ++{ ++#if D_GCC_VER >= 40 ++ gcc_assert(0); ++#endif ++ return NULL_TREE; ++} ++ ++tree ++build_indirect_ref (location_t loc, tree ptr, const char *errorstring) ++{ ++#if D_GCC_VER >= 40 ++ gcc_assert(0); ++#endif ++ return NULL_TREE; ++} ++ + enum { unused } c_language; + + enum cpp_ttype +--- a/src/gcc/d/d-gcc-includes.h 2010-08-29 21:11:57.875486089 +0100 ++++ b/src/gcc/d/d-gcc-includes.h 2010-08-29 21:10:24.335459843 +0100 +@@ -44,6 +44,23 @@ + #include "config.h" + #include "system.h" + ++/* Those are used in TARGET_OS_CPP_BUILTINS in some gcc/config//.c ++ (alpha, mips, arm and a few others) for some builtin_defines such ++ __LANGUAGE_C_PLUS_PLUS but are defined in c-common.h. */ ++#ifndef c_dialect_cxx ++# define c_dialect_cxx() 0 ++#endif ++#ifndef c_dialect_objc ++# define c_dialect_objc() 0 ++#endif ++ ++/* Even if they are defined in d-apple-gcc.c and d-c-stubs.c, they are also ++ used in config/mips (as in config/darwin), so as we don't /need/ them, ++ better to define an empty macro here. */ ++#ifndef builtin_define_with_value ++# define builtin_define_with_value(macro, expansion, is_str) ++#endif ++ + /* Before gcc 4.0, was included before defining bool. In 4.0, + it is always defined as "unsigned char" unless __cplusplus. Have to make + sure the "bool" under c++ is the same so that structs are laid out +--- a/src/gcc/d/d-lang.cc 2010-08-29 21:10:24.343463863 +0100 ++++ b/src/gcc/d/d-lang.cc 2010-08-29 21:11:02.459458778 +0100 +@@ -442,8 +442,9 @@ + { + line_maps lm; + cpp_reader * pfile; // Target macros below expect this identifier. +- int flag_iso = 0; // ditto ++ extern int flag_iso;// ditto + ++ flag_iso = 0; + linemap_init(& lm); + #if D_GCC_VER >= 43 + lm.reallocator = NULL; --- gcc-4.4-4.4.5.orig/debian/patches/gcc-default-relro.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-atom.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/pr25509.diff +++ gcc-4.4-4.4.5/debian/patches/pr25509.diff @@ -0,0 +1,68 @@ +# DP: Backport of PR c/25509, new option -Wno-unused-result + +gcc/ + +2009-07-10 Manuel López-Ibáñez + + PR 25509 + PR 40614 + * c.opt (Wunused-result): New. + * doc/invoke.texi: Document it. + * c-common.c (c_warn_unused_result): Use it. + +gcc/testsuite/ + +2009-07-10 Manuel López-Ibáñez + + PR 25509 + PR 40614 + * g++.dg/warn/unused-result1-Werror.c: New. + +Index: gcc/testsuite/g++.dg/warn/unused-result1-Werror.c +=================================================================== +--- a/src/gcc/testsuite/g++.dg/warn/unused-result1-Werror.c (revision 0) ++++ b/src/gcc/testsuite/g++.dg/warn/unused-result1-Werror.c (revision 0) +@@ -0,0 +1,10 @@ ++// PR 40614 ++// { dg-options "-Werror=unused-result" } ++class QByteArray { ++public: ++ QByteArray(const QByteArray &); ++}; ++class QString { ++ QByteArray toLocal8Bit() const __attribute__ ((warn_unused_result)); ++ void fooWarnHere() const { toLocal8Bit(); } // { dg-error "ignoring" } ++}; +Index: gcc/c.opt +=================================================================== +--- a/src/gcc/c.opt (revision 149591) ++++ b/src/gcc/c.opt (working copy) +@@ -476,6 +476,10 @@ + C ObjC C++ ObjC++ Warning + Warn about macros defined in the main file that are not used + ++Wunused-result ++C ObjC C++ ObjC++ Var(warn_unused_result) Init(1) Warning ++Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value ++ + Wvariadic-macros + C ObjC C++ ObjC++ Warning + Do not warn about using variadic macros when -pedantic +Index: gcc/c-common.c +=================================================================== +--- a/src/gcc/c-common.c (revision 149591) ++++ b/src/gcc/c-common.c (working copy) +@@ -7567,11 +7567,11 @@ + location_t loc = gimple_location (g); + + if (fdecl) +- warning (0, "%Hignoring return value of %qD, " ++ warning (OPT_Wunused_result, "%Hignoring return value of %qD, " + "declared with attribute warn_unused_result", + &loc, fdecl); + else +- warning (0, "%Hignoring return value of function " ++ warning (OPT_Wunused_result, "%Hignoring return value of function " + "declared with attribute warn_unused_result", + &loc); + } --- gcc-4.4-4.4.5.orig/debian/patches/gcc-arm-implicit-it.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/mips-fix-loongson2f-nop-linaro.diff +++ gcc-4.4-4.4.5/debian/patches/mips-fix-loongson2f-nop-linaro.diff @@ -0,0 +1,13 @@ +# DP: On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop +# DP: is not passed. + +--- a/src/gcc/config/mips/mips.h~ 2010-06-12 14:03:03.000000000 +0200 ++++ b/src/gcc/config/mips/mips.h 2010-06-12 14:11:42.892328066 +0200 +@@ -1178,6 +1178,7 @@ + %{msym32} %{mno-sym32} \ + %{mtune=*} %{v} \ + %{mocteon-useun} %{mno-octeon-useun} \ ++%{!mno-fix-loongson2f-nop:-mfix-loongson2f-nop} \ + %(subtarget_asm_spec)" + + /* Extra switches sometimes passed to the linker. */ --- gcc-4.4-4.4.5.orig/debian/patches/note-gnu-stack.diff +++ gcc-4.4-4.4.5/debian/patches/note-gnu-stack.diff @@ -0,0 +1,200 @@ +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +gcc/ + +2004-09-20 Jakub Jelinek + + * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also + on ppc64-linux. + + * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on + ia64-linux. + * config/ia64/crtbegin.asm: Likewise. + * config/ia64/crtend.asm: Likewise. + * config/ia64/crti.asm: Likewise. + * config/ia64/crtn.asm: Likewise. + +2004-05-14 Jakub Jelinek + + * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. + +boehm-gc/ + +2005-02-08 Jakub Jelinek + + * ia64_save_regs_in_stack.s: Moved to... + * ia64_save_regs_in_stack.S: ... this. Add .note.GNU-stack + on Linux. + +libffi/ + +2007-05-11 Daniel Jacobowitz + + * src/arm/sysv.S: Fix ARM comment marker. + +2005-02-08 Jakub Jelinek + + * src/alpha/osf.S: Add .note.GNU-stack on Linux. + * src/s390/sysv.S: Likewise. + * src/powerpc/linux64.S: Likewise. + * src/powerpc/linux64_closure.S: Likewise. + * src/powerpc/ppc_closure.S: Likewise. + * src/powerpc/sysv.S: Likewise. + * src/x86/unix64.S: Likewise. + * src/x86/sysv.S: Likewise. + * src/sparc/v8.S: Likewise. + * src/sparc/v9.S: Likewise. + * src/m68k/sysv.S: Likewise. + * src/ia64/unix.S: Likewise. + * src/arm/sysv.S: Likewise. + +--- + boehm-gc/ia64_save_regs_in_stack.s | 12 ------------ + gcc/config/ia64/crtbegin.asm | 4 ++++ + gcc/config/ia64/crtend.asm | 4 ++++ + gcc/config/ia64/crti.asm | 4 ++++ + gcc/config/ia64/crtn.asm | 4 ++++ + gcc/config/ia64/lib1funcs.asm | 4 ++++ + gcc/config/ia64/linux.h | 2 ++ + gcc/config/rs6000/ppc-asm.h | 2 +- + libffi/src/ia64/unix.S | 4 ++++ + libffi/src/powerpc/linux64.S | 4 ++++ + libffi/src/powerpc/linux64_closure.S | 4 ++++ + 11 files changed, 35 insertions(+), 13 deletions(-) + +--- a/src/boehm-gc/ia64_save_regs_in_stack.s ++++ b/src/boehm-gc/ia64_save_regs_in_stack.s +@@ -1,12 +0,0 @@ +- .text +- .align 16 +- .global GC_save_regs_in_stack +- .proc GC_save_regs_in_stack +-GC_save_regs_in_stack: +- .body +- flushrs +- ;; +- mov r8=ar.bsp +- br.ret.sptk.few rp +- .endp GC_save_regs_in_stack +- +--- a/src/boehm-gc/ia64_save_regs_in_stack.S ++++ b/src/boehm-gc/ia64_save_regs_in_stack.S +@@ -0,0 +1,15 @@ ++ .text ++ .align 16 ++ .global GC_save_regs_in_stack ++ .proc GC_save_regs_in_stack ++GC_save_regs_in_stack: ++ .body ++ flushrs ++ ;; ++ mov r8=ar.bsp ++ br.ret.sptk.few rp ++ .endp GC_save_regs_in_stack ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- a/src/gcc/config/ia64/crtbegin.asm ++++ b/src/gcc/config/ia64/crtbegin.asm +@@ -255,3 +255,7 @@ __do_jv_register_classes: + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/crtend.asm ++++ b/src/gcc/config/ia64/crtend.asm +@@ -122,3 +122,7 @@ __do_global_ctors_aux: + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/crti.asm ++++ b/src/gcc/config/ia64/crti.asm +@@ -62,3 +62,7 @@ _fini: + .body + + # end of crti.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/crtn.asm ++++ b/src/gcc/config/ia64/crtn.asm +@@ -52,3 +52,7 @@ + br.ret.sptk.many b0 + + # end of crtn.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/lib1funcs.asm ++++ b/src/gcc/config/ia64/lib1funcs.asm +@@ -796,3 +796,7 @@ __floattitf: + .endp __floattitf + #endif + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- a/src/gcc/config/ia64/linux.h ++++ b/src/gcc/config/ia64/linux.h +@@ -5,6 +5,8 @@ + + #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux"); + ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ + /* This is for -profile to use -lc_p instead of -lc. */ + #undef CC1_SPEC + #define CC1_SPEC "%{profile:-p} %{G*}" +--- a/src/gcc/config/rs6000/ppc-asm.h ++++ b/src/gcc/config/rs6000/ppc-asm.h +@@ -172,7 +172,7 @@ GLUE(.L,name): \ + .size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name) + #endif + +-#if defined __linux__ && !defined __powerpc64__ ++#if defined __linux__ + .section .note.GNU-stack + .previous + #endif +--- a/src/libffi/src/ia64/unix.S ++++ b/src/libffi/src/ia64/unix.S +@@ -553,3 +553,7 @@ ffi_closure_unix: + data8 @pcrel(.Lld_hfa_float) // FFI_IA64_TYPE_HFA_FLOAT + data8 @pcrel(.Lld_hfa_double) // FFI_IA64_TYPE_HFA_DOUBLE + data8 @pcrel(.Lld_hfa_ldouble) // FFI_IA64_TYPE_HFA_LDOUBLE ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- a/src/libffi/src/powerpc/linux64.S ++++ b/src/libffi/src/powerpc/linux64.S +@@ -179,3 +179,7 @@ ffi_call_LINUX64: + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- a/src/libffi/src/powerpc/linux64_closure.S ++++ b/src/libffi/src/powerpc/linux64_closure.S +@@ -204,3 +204,7 @@ ffi_closure_LINUX64: + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif --- gcc-4.4-4.4.5.orig/debian/patches/gcc-multiarch.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-multiarch.diff @@ -0,0 +1,356 @@ +# DP: Add multiarch support to GCC. +# DP: +# DP: Convert the multilib option to a target triplet, +# DP: add multiarch include directories and libraries path: +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: /usr/lib/-linux-gnu +# DP: to the system paths. + +2009-03-24 Arthur Loiret + + * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. + * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. + * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. + * gcc.c: include multiarch.h. + (set_multiarch_dir): New function. Adds the multiarch directories to + the library path. + [ENABLE_MULTIARCH]: Use it. + * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include + directory for multiarch directories. + * incpath.c: include multiarch.h + [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. + * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. + * multiarch.h: New file. +--- + gcc/Makefile.in | 7 ++-- + gcc/config.gcc | 9 +++++ + gcc/config.in | 4 ++ + gcc/configure.ac | 13 ++++++++ + gcc/cppdefault.c | 6 +++ + gcc/gcc.c | 41 ++++++++++++++++++++++++ + gcc/incpath.c | 28 ++++++++++++++++ + gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 196 insertions(+), 3 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -806,6 +806,7 @@ + endif + + # Shorthand variables for dependency lists. ++MULTIARCH_H = multiarch.h + TOPLEV_H = toplev.h input.h + TARGET_H = $(TM_H) target.h insn-modes.h + MACHMODE_H = machmode.h mode-classes.def insn-modes.h +@@ -1818,7 +1819,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) $(MULTIARCH_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 \ +@@ -1959,7 +1960,7 @@ + + 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) \ +- configargs.h $(OBSTACK_H) opts.h ++ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) + (SHLIB_LINK='$(SHLIB_LINK)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(DRIVER_DEFINES) \ + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -3173,3 +3173,12 @@ then + target_cpu_default=$target_cpu_default2 + fi + fi ++ ++if test x${enable_multiarch} = xyes; then ++ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` ++ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" ++ if test x${with_multiarch_defaults} != x; then ++ multiarch_defaults=${with_multiarch_defaults} ++ fi ++ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" ++fi +--- a/src/gcc/config.in ++++ b/src/gcc/config.in +@@ -155,6 +155,10 @@ + #undef ENABLE_WIN32_REGISTRY + #endif + ++/* Define if you want to use multiarch. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_MULTIARCH ++#endif + + /* Define to the name of a file containing a list of extra machine modes for + this architecture. */ +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -585,6 +585,19 @@ AC_ARG_ENABLE(multilib, + [], [enable_multilib=yes]) + AC_SUBST(enable_multilib) + ++# Determine whether or not multiarch is enabled. ++AC_ARG_ENABLE(multiarch, ++[ --enable-multiarch enable multiarch support], ++[ ++ enable_multiarch=yes ++ AC_DEFINE(ENABLE_MULTIARCH, 1, ++ [Define if you want to use multiarch.]) ++],[]) ++AC_SUBST(enable_multiarch) ++ ++AC_ARG_WITH(multiarch-defaults, ++[ --with-multiarch-defaults set the default multiarch directory.],) ++ + # Enable __cxa_atexit for C++. + AC_ARG_ENABLE(__cxa_atexit, + [ --enable-__cxa_atexit enable __cxa_atexit for C++], +--- a/src/gcc/cppdefault.c ++++ b/src/gcc/cppdefault.c +@@ -60,6 +60,9 @@ const struct default_include cpp_include_defaults[] + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++# ifdef ENABLE_MULTIARCH ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++# endif + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -95,6 +98,9 @@ const struct default_include cpp_include_defaults[] + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++# ifdef ENABLE_MULTIARCH ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, ++# endif + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +--- a/src/gcc/gcc.c ++++ b/src/gcc/gcc.c +@@ -71,6 +71,7 @@ compilation is specified by a string called a "spec". */ + #include "system.h" + #include "coretypes.h" + #include "multilib.h" /* before tm.h */ ++#include "multiarch.h" + #include "tm.h" + #include + #if ! defined( SIGCHLD ) && defined( SIGCLD ) +@@ -345,6 +346,9 @@ static void give_switch (int, int); + static int used_arg (const char *, int); + static int default_arg (const char *, int); + static void set_multilib_dir (void); ++#ifdef ENABLE_MULTIARCH ++static void set_multiarch_dir (void); ++#endif + static void print_multilib_info (void); + static void perror_with_name (const char *); + static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; +@@ -6504,6 +6508,11 @@ main (int argc, char **argv) + the subdirectory based on the options. */ + set_multilib_dir (); + ++#ifdef ENABLE_MULTIARCH ++ /* Add the multiarch directories to libraries path. */ ++ set_multiarch_dir (); ++#endif ++ + /* Warn about any switches that no pass was interested in. */ + + for (i = 0; (int) i < n_switches; i++) +@@ -7576,6 +7585,27 @@ set_multilib_dir (void) + multilib_os_dir = multilib_dir; + } + ++#ifdef ENABLE_MULTIARCH ++/* Add the multiarch directories to libraries path. This uses the converted ++ multiarch triplet from the multilib value. ++ For example, if the target supports -m32/-m64 as multilib option and ++ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library ++ path if either -m64 or no multilib option at all is set. And it will ++ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in ++ multiarch.def. */ ++ ++static void ++set_multiarch_dir (void) ++{ ++ const char *path; ++ ++ path = concat (STANDARD_STARTFILE_PREFIX_2, MULTIARCH_DEFAULTS, ++ dir_separator_str, NULL); ++ add_prefix (&startfile_prefixes, path, NULL, ++ PREFIX_PRIORITY_LAST, 0, 1); ++} ++#endif ++ + /* Print out the multiple library subdirectory selection + information. This prints out a series of lines. Each line looks + like SUBDIRECTORY;@OPTION@OPTION, with as many options as is +--- a/src/gcc/incpath.c ++++ b/src/gcc/incpath.c +@@ -30,6 +30,7 @@ + #include "intl.h" + #include "incpath.h" + #include "cppdefault.h" ++#include "multiarch.h" + + /* Microsoft Windows does not natively support inodes. + VMS has non-numeric inodes. */ +@@ -132,6 +133,9 @@ add_standard_paths (const char *sysroot, const char *iprefix, + const struct default_include *p; + int relocated = cpp_relocated(); + size_t len; ++#ifdef ENABLE_MULTIARCH ++ const char *multiarch; ++#endif + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -150,8 +154,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -195,8 +211,20 @@ add_standard_paths (const char *sysroot, const char *iprefix, + else + str = update_path (p->fname, p->component); + ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + + add_path (str, SYSTEM, p->cxx_aware, false); + } +--- /dev/null ++++ b/src/gcc/multiarch.h +@@ -0,0 +1,95 @@ ++/* Header for multiarch handling (include directories, libraries path). ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Arthur Loiret ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#ifndef GCC_MULTIARCH_H ++#define GCC_MULTIARCH_H ++ ++#include "tm.h" ++ ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] = { ++#ifdef ENABLE_MULTIARCH ++ { "", MULTIARCH_DEFAULTS }, ++# if defined(__x86_64_linux_gnu__) ++ { "32", "i486-linux-gnu" }, ++# endif ++# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) ++ { "64", "x86_64-linux-gnu" }, ++# endif ++# if defined(__powerpc64_linux_gnu__) ++ { "32", "powerpc-linux-gnu" }, ++# endif ++# if defined(__powerpc_linux_gnu__) ++ { "64", "powerpc64-linux-gnu" }, ++# endif ++# if defined(__sparc64_linux_gnu__) ++ { "32", "sparc-linux-gnu" }, ++# endif ++# if defined(__sparc_linux_gnu__) ++ { "64", "sparc64-linux-gnu" }, ++# endif ++# if defined(__s390x_linux_gnu__) ++ { "31", "s390-linux-gnu" }, ++# endif ++# if defined(__s390_linux_gnu__) ++ { "64", "s390x-linux-gnu" }, ++# endif ++# if defined(__mips_linux_gnu__) ++ { "n32", "mips64-linux-gnuabin32" }, ++ { "64", "mips64-linux-gnuabi64" }, ++# endif ++# if defined(__mipsel_linux_gnu__) ++ { "n32", "mips64el-linux-gnuabin32" }, ++ { "64", "mips64el-linux-gnuabi64" }, ++# endif ++# if defined(__x86_64_kfreebsd_gnu__) ++ { "32", "i486-kfreebsd-gnu" }, ++# endif ++# if defined(__sh4_linux_gnu__) ++ { "m4", "sh4-linux-gnu" }, ++ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, ++# endif ++#endif /* ENABLE_MULTIARCH */ ++ { 0, 0 } ++}; ++ ++/* Convert the multilib option to the corresponding target triplet. ++ See multiarch.def and config.gcc for multilib/multiarch pairs. ++ When the default multilib is used, the corresponding multilib/multiarch ++ pair is { "", $target_tripplet }. */ ++static inline const char* ++multilib_to_multiarch (const char *imultilib) ++{ ++ const struct multiarch_mapping *p; ++ ++ for (p = multiarch_mappings; p->multiarch; p++) ++ { ++ if (!strcmp(p->multilib, imultilib ? imultilib : "")) ++ return p->multiarch; ++ } ++ return NULL; ++} ++ ++#endif /* GCC_MULTIARCH_H */ --- gcc-4.4-4.4.5.orig/debian/patches/pr40133.diff +++ gcc-4.4-4.4.5/debian/patches/pr40133.diff @@ -0,0 +1,231 @@ +# DP: Do link tests to check for the atomic builtins + +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. + +Index: libstdc++-v3/acinclude.m4 +=================================================================== +--- a/src/libstdc++-v3/acinclude.m4 (revision 155104) ++++ b/src/libstdc++-v3/acinclude.m4 (working copy) +@@ -2438,8 +2438,7 @@ + dnl that are used should be checked. + dnl + dnl Note: +-dnl libgomp and libgfortran do this with a link test, instead of an asm test. +-dnl see: CHECK_SYNC_FETCH_AND_ADD ++dnl libgomp and libgfortran use a link test, see CHECK_SYNC_FETCH_AND_ADD. + dnl + dnl Defines: + dnl _GLIBCXX_ATOMIC_BUILTINS_1 +@@ -2451,12 +2450,120 @@ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + old_CXXFLAGS="$CXXFLAGS" +- ++ ++ # Do link tests if possible, instead asm tests, limited to some platforms ++ atomic_builtins_link_tests=no ++ if test x$gcc_no_link != xyes; then ++ # Can do link tests. Limit to some tested platforms ++ case "$host" in ++ *-*-linux* | *-*-kfreebsd*-gnu | *-*-gnu*) ++ atomic_builtins_link_tests=yes ++ ;; ++ esac ++ fi ++ ++ if test x$atomic_builtins_link_tests = xyes; then ++ ++ # Do link tests. ++ ++ CXXFLAGS="$CXXFLAGS -fno-exceptions" ++ ++ AC_MSG_CHECKING([for atomic builtins for bool]) ++ AC_CACHE_VAL(glibcxx_cv_atomic_bool, [ ++ AC_TRY_LINK( ++ [ ], ++ [typedef bool atomic_type; ++ atomic_type c1; ++ atomic_type c2; ++ const atomic_type c3(0); ++ __sync_fetch_and_add(&c1, c2); ++ __sync_val_compare_and_swap(&c1, c3, c2); ++ __sync_lock_test_and_set(&c1, c3); ++ __sync_lock_release(&c1); ++ __sync_synchronize();], ++ [glibcxx_cv_atomic_bool=yes], ++ [glibcxx_cv_atomic_bool=no]) ++ ]) ++ if test $glibcxx_cv_atomic_bool = yes; then ++ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1, ++ [Define if builtin atomic operations for bool are supported on this host.]) ++ fi ++ AC_MSG_RESULT($glibcxx_cv_atomic_bool) ++ ++ AC_MSG_CHECKING([for atomic builtins for short]) ++ AC_CACHE_VAL(glibcxx_cv_atomic_short, [ ++ AC_TRY_LINK( ++ [ ], ++ [typedef short atomic_type; ++ atomic_type c1; ++ atomic_type c2; ++ const atomic_type c3(0); ++ __sync_fetch_and_add(&c1, c2); ++ __sync_val_compare_and_swap(&c1, c3, c2); ++ __sync_lock_test_and_set(&c1, c3); ++ __sync_lock_release(&c1); ++ __sync_synchronize();], ++ [glibcxx_cv_atomic_short=yes], ++ [glibcxx_cv_atomic_short=no]) ++ ]) ++ if test $glibcxx_cv_atomic_short = yes; then ++ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1, ++ [Define if builtin atomic operations for short are supported on this host.]) ++ fi ++ AC_MSG_RESULT($glibcxx_cv_atomic_short) ++ ++ AC_MSG_CHECKING([for atomic builtins for int]) ++ AC_CACHE_VAL(glibcxx_cv_atomic_int, [ ++ AC_TRY_LINK( ++ [ ], ++ [typedef int atomic_type; ++ atomic_type c1; ++ atomic_type c2; ++ const atomic_type c3(0); ++ __sync_fetch_and_add(&c1, c2); ++ __sync_val_compare_and_swap(&c1, c3, c2); ++ __sync_lock_test_and_set(&c1, c3); ++ __sync_lock_release(&c1); ++ __sync_synchronize();], ++ [glibcxx_cv_atomic_int=yes], ++ [glibcxx_cv_atomic_int=no]) ++ ]) ++ if test $glibcxx_cv_atomic_int = yes; then ++ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1, ++ [Define if builtin atomic operations for int are supported on this host.]) ++ fi ++ AC_MSG_RESULT($glibcxx_cv_atomic_int) ++ ++ AC_MSG_CHECKING([for atomic builtins for long long]) ++ AC_CACHE_VAL(glibcxx_cv_atomic_long_long, [ ++ AC_TRY_LINK( ++ [ ], ++ [typedef long long atomic_type; ++ atomic_type c1; ++ atomic_type c2; ++ const atomic_type c3(0); ++ __sync_fetch_and_add(&c1, c2); ++ __sync_val_compare_and_swap(&c1, c3, c2); ++ __sync_lock_test_and_set(&c1, c3); ++ __sync_lock_release(&c1); ++ __sync_synchronize();], ++ [glibcxx_cv_atomic_long_long=yes], ++ [glibcxx_cv_atomic_long_long=no]) ++ ]) ++ if test $glibcxx_cv_atomic_long_long = yes; then ++ AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1, ++ [Define if builtin atomic operations for long long are supported on this host.]) ++ fi ++ AC_MSG_RESULT($glibcxx_cv_atomic_long_long) ++ ++ else ++ ++ # Do asm tests. ++ + # Compile unoptimized. + CXXFLAGS='-O0 -S' + +- # Fake what AC_TRY_COMPILE does, without linking as this is +- # unnecessary for a builtins test. ++ # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF + [#]line __oline__ "configure" +@@ -2478,14 +2585,14 @@ + AC_MSG_CHECKING([for atomic builtins for bool]) + if AC_TRY_EVAL(ac_compile); then + if grep __sync_ conftest.s >/dev/null 2>&1 ; then +- enable_atomic_builtinsb=no ++ glibcxx_cv_atomic_bool=no + else + AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_1, 1, + [Define if builtin atomic operations for bool are supported on this host.]) +- enable_atomic_builtinsb=yes ++ glibcxx_cv_atomic_bool=yes + fi + fi +- AC_MSG_RESULT($enable_atomic_builtinsb) ++ AC_MSG_RESULT($glibcxx_cv_atomic_bool) + rm -f conftest* + + cat > conftest.$ac_ext << EOF +@@ -2508,14 +2615,14 @@ + AC_MSG_CHECKING([for atomic builtins for short]) + if AC_TRY_EVAL(ac_compile); then + if grep __sync_ conftest.s >/dev/null 2>&1 ; then +- enable_atomic_builtinss=no ++ glibcxx_cv_atomic_short=no + else + AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_2, 1, + [Define if builtin atomic operations for short are supported on this host.]) +- enable_atomic_builtinss=yes ++ glibcxx_cv_atomic_short=yes + fi + fi +- AC_MSG_RESULT($enable_atomic_builtinss) ++ AC_MSG_RESULT($glibcxx_cv_atomic_short) + rm -f conftest* + + cat > conftest.$ac_ext << EOF +@@ -2539,14 +2646,14 @@ + AC_MSG_CHECKING([for atomic builtins for int]) + if AC_TRY_EVAL(ac_compile); then + if grep __sync_ conftest.s >/dev/null 2>&1 ; then +- enable_atomic_builtinsi=no ++ glibcxx_cv_atomic_int=no + else + AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_4, 1, + [Define if builtin atomic operations for int are supported on this host.]) +- enable_atomic_builtinsi=yes ++ glibcxx_cv_atomic_int=yes + fi + fi +- AC_MSG_RESULT($enable_atomic_builtinsi) ++ AC_MSG_RESULT($glibcxx_cv_atomic_int) + rm -f conftest* + + cat > conftest.$ac_ext << EOF +@@ -2569,22 +2676,23 @@ + AC_MSG_CHECKING([for atomic builtins for long long]) + if AC_TRY_EVAL(ac_compile); then + if grep __sync_ conftest.s >/dev/null 2>&1 ; then +- enable_atomic_builtinsll=no ++ glibcxx_cv_atomic_long_long=no + else + AC_DEFINE(_GLIBCXX_ATOMIC_BUILTINS_8, 1, + [Define if builtin atomic operations for long long are supported on this host.]) +- enable_atomic_builtinsll=yes ++ glibcxx_cv_atomic_long_long=yes + fi + fi +- AC_MSG_RESULT($enable_atomic_builtinsll) ++ AC_MSG_RESULT($glibcxx_cv_atomic_long_long) + rm -f conftest* + ++ fi + + CXXFLAGS="$old_CXXFLAGS" + AC_LANG_RESTORE + + # Set atomicity_dir to builtins if either of above tests pass. +- if test $enable_atomic_builtinsi = yes || test $enable_atomic_builtinsb = yes ; then ++ if test $glibcxx_cv_atomic_int = yes || test $glibcxx_cv_atomic_bool = yes ; then + atomicity_dir=cpu/generic/atomicity_builtins + fi + --- gcc-4.4-4.4.5.orig/debian/patches/libsupc++-vmi_class_type_info.diff +++ gcc-4.4-4.4.5/debian/patches/libsupc++-vmi_class_type_info.diff @@ -0,0 +1,222 @@ +# DP: Update libsupc++/vmi_class_type_info.cc from the 4.5 branch. + +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. + +Index: gcc/testsuite/g++.dg/rtti/dyncast3.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/rtti/dyncast3.C (revision ++++ b/src/gcc/testsuite/g++.dg/rtti/dyncast3.C (revision +@@ -0,0 +1,81 @@ ++// This testcase used to crash while looking in A for my_module. I'm still ++// not sure it's well-formed, but it works now because of the optimization ++// to look at the expected address first. ++ ++// { dg-do run } ++ ++extern "C" int puts (const char *); ++extern "C" void abort (); ++ ++struct my_object ++{ ++ my_object() { puts ("in my_object ctor");} ++ virtual ~my_object() { puts ("in my_object dtor"); } ++}; ++ ++my_object* my_module_ptr = 0; ++ ++struct my_module : my_object ++{ ++ my_module() ++ { ++ puts ("in my_module ctor, setting up ptr"); ++ my_module_ptr = this; ++ } ++ ~my_module() { puts ("in my_module dtor");} ++}; ++ ++struct D ++{ ++ D() { puts ("in D ctor"); } ++ virtual ~D(); ++}; ++ ++D::~D() ++{ ++ puts ("in D dtor"); ++ puts ("before DCASTing to my_module*"); ++ my_module* m = dynamic_cast(my_module_ptr); ++ if (m != my_module_ptr) ++ abort (); ++ puts ("after DCASTing to my_module*"); ++} ++ ++struct my_interface ++{ ++ my_interface() { puts ("in my_interface ctor");} ++ ~my_interface() { puts ("in my_interface dtor");} ++}; ++ ++struct myif : virtual my_interface ++{ ++ myif() { puts ("in myif ctor");} ++ ~myif() { puts ("in myif dtor");} ++}; ++ ++struct A: virtual myif ++{ ++ A() { puts ("in A ctor"); } ++ ~A() { puts ("in A dtor"); } ++ ++ D d; ++}; ++ ++struct B: virtual myif ++{ ++ B() { puts ("in B ctor"); } ++ ~B() { puts ("in B dtor"); } ++ ++ D d; ++}; ++ ++struct C : my_module, A, B ++{ ++ C() { puts ("in C ctor");} ++ ~C() { puts ("in C dtor"); } ++}; ++ ++int main(int, char**) ++{ ++ C t; ++} +Index: gcc/testsuite/g++.dg/rtti/dyncast4.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/rtti/dyncast4.C (revision ++++ b/src/gcc/testsuite/g++.dg/rtti/dyncast4.C (revision +@@ -0,0 +1,26 @@ ++// Test to make sure that we keep searching if we don't find the type we ++// want at the expected address. ++ ++// { dg-do run } ++ ++struct A ++{ ++ virtual void f() {}; ++}; ++ ++struct B: A { }; ++ ++struct C: A { }; ++ ++struct D: B, C { }; ++ ++int main() ++{ ++ D d; ++ A* ap = static_cast(&d); ++ C* cp = dynamic_cast(ap); ++ if (cp == 0) ++ return 1; ++ else ++ return 0; ++} +Index: libstdc++-v3/libsupc++/vmi_class_type_info.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/vmi_class_type_info.cc (revision ++++ b/src/libstdc++-v3/libsupc++/vmi_class_type_info.cc (revision +@@ -108,7 +108,17 @@ + return false; + } + ++ // If src_type is a unique non-virtual base of dst_type, we have a good ++ // guess at the address we want, so in the first pass try skipping any ++ // bases which don't contain that address. ++ const void *dst_cand = NULL; ++ if (src2dst >= 0) ++ dst_cand = adjust_pointer(src_ptr, -src2dst); ++ bool first_pass = true; ++ bool skipped = false; ++ + bool result_ambig = false; ++ again: + for (std::size_t i = __base_count; i--;) + { + __dyncast_result result2 (result.whole_details); +@@ -121,6 +131,20 @@ + base_access = __sub_kind (base_access | __contained_virtual_mask); + base = convert_to_base (base, is_virtual, offset); + ++ if (dst_cand) ++ { ++ bool skip_on_first_pass = base > dst_cand; ++ if (skip_on_first_pass == first_pass) ++ { ++ // We aren't interested in this base on this pass: either ++ // we're on the first pass and this base doesn't contain the ++ // likely address, or we're on the second pass and we checked ++ // this base on the first pass. ++ skipped = true; ++ continue; ++ } ++ } ++ + if (!__base_info[i].__is_public_p ()) + { + if (src2dst == -2 && +@@ -267,6 +291,14 @@ + return result_ambig; + } + ++ if (skipped && first_pass) ++ { ++ // We didn't find dst where we expected it, so let's go back and try ++ // the bases we skipped (if any). ++ first_pass = false; ++ goto again; ++ } ++ + return result_ambig; + } + +Index: libstdc++-v3/libsupc++/dyncast.cc +=================================================================== +--- a/src/libstdc++-v3/libsupc++/dyncast.cc (revision ++++ b/src/libstdc++-v3/libsupc++/dyncast.cc (revision +@@ -28,12 +28,26 @@ + + + // this is the external interface to the dynamic cast machinery ++/* sub: source address to be adjusted; nonnull, and since the ++ * source object is polymorphic, *(void**)sub is a virtual pointer. ++ * src: static type of the source object. ++ * dst: destination type (the "T" in "dynamic_cast(v)"). ++ * src2dst_offset: a static hint about the location of the ++ * source subobject with respect to the complete object; ++ * special negative values are: ++ * -1: no hint ++ * -2: src is not a public base of dst ++ * -3: src is a multiple public base type but never a ++ * virtual base type ++ * otherwise, the src type is a unique public nonvirtual ++ * base type of dst at offset src2dst_offset from the ++ * origin of dst. */ + extern "C" void * + __dynamic_cast (const void *src_ptr, // object started from + const __class_type_info *src_type, // type of the starting object + const __class_type_info *dst_type, // desired target type + ptrdiff_t src2dst) // how src and dst are related +-{ ++ { + const void *vtable = *static_cast (src_ptr); + const vtable_prefix *prefix = + adjust_pointer (vtable, --- gcc-4.4-4.4.5.orig/debian/patches/gcc-default-fortify-source.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gold-and-ld-doc.diff +++ gcc-4.4-4.4.5/debian/patches/gold-and-ld-doc.diff @@ -0,0 +1,35 @@ +# DP: Enable both gold and ld in a single toolchain (documentation). +# DP: New option -fuse-ld=ld.bfd, -fuse-ld=gold. + +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (revision ++++ b/src/gcc/doc/invoke.texi (working +@@ -376,7 +376,7 @@ + -funit-at-a-time -funroll-all-loops -funroll-loops @gol + -funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops @gol + -fvariable-expansion-in-unroller -fvect-cost-model -fvpt -fweb @gol +--fwhole-program @gol ++-fwhole-program -fuse-ld @gol + --param @var{name}=@var{value} + -O -O0 -O1 -O2 -O3 -Os} + +@@ -6734,6 +6734,18 @@ + + This option is not supported for Fortran programs. + ++@item -fuse-ld=gold ++Use the @command{gold} linker instead of the default linker. ++This option is only necessary if GCC has been configured with ++@option{--enable-gold=both} or @option{--enable-gold=both/ld}. ++Note: Backported for Debian/Ubuntu from GCC 4.5. ++ ++@item -fuse-ld=bfd ++Use the @command{ld.bfd} linker instead of the default linker. ++This option is only necessary if GCC has been configured with ++@option{--enable-gold=both/gold}. ++Note: Backported for Debian/Ubuntu from GCC 4.5. ++ + @item -fcprop-registers + @opindex fcprop-registers + After register allocation and post-register allocation instruction splitting, --- gcc-4.4-4.4.5.orig/debian/patches/gcc-multiarch-i686-linaro.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-multiarch-i686-linaro.diff @@ -0,0 +1,375 @@ +# DP: Add multiarch support to GCC. +# DP: +# DP: Convert the multilib option to a target triplet, +# DP: add multiarch include directories and libraries path: +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: /usr/lib/-linux-gnu +# DP: to the system paths. + +2009-03-24 Arthur Loiret + + * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. + * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. + * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. + * gcc.c: include multiarch.h. + (set_multiarch_dir): New function. Adds the multiarch directories to + the library path. + [ENABLE_MULTIARCH]: Use it. + * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include + directory for multiarch directories. + * incpath.c: include multiarch.h + [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. + * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. + * multiarch.h: New file. +--- + gcc/Makefile.in | 7 ++-- + gcc/config.gcc | 9 +++++ + gcc/config.in | 4 ++ + gcc/configure.ac | 13 ++++++++ + gcc/cppdefault.c | 6 +++ + gcc/gcc.c | 41 ++++++++++++++++++++++++ + gcc/incpath.c | 28 ++++++++++++++++ + gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 196 insertions(+), 3 deletions(-) + +diff -urN gcc.orig/Makefile.in gcc/Makefile.in +--- a/src/gcc.orig/Makefile.in 2010-06-12 ++++ b/src/gcc/Makefile.in 2010-06-12 +@@ -815,6 +815,7 @@ + endif + + # Shorthand variables for dependency lists. ++MULTIARCH_H = multiarch.h + TOPLEV_H = toplev.h input.h + TARGET_H = $(TM_H) target.h insn-modes.h + MACHMODE_H = machmode.h mode-classes.def insn-modes.h +@@ -1843,7 +1844,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) $(FLAGS_H) toplev.h ++ $(MACHMODE_H) $(FLAGS_H) toplev.h $(MULTIARCH_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 \ +@@ -1985,7 +1986,7 @@ + + 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) \ +- configargs.h $(OBSTACK_H) opts.h ++ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) + (SHLIB_LINK='$(SHLIB_LINK)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(DRIVER_DEFINES) \ +diff -urN gcc.orig/config.gcc gcc/config.gcc +--- a/src/gcc.orig/config.gcc 2010-06-12 ++++ b/src/gcc/config.gcc 2010-06-12 +@@ -3422,3 +3422,12 @@ + target_cpu_default=$target_cpu_default2 + fi + fi ++ ++if test x${enable_multiarch} = xyes; then ++ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` ++ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" ++ if test x${with_multiarch_defaults} != x; then ++ multiarch_defaults=${with_multiarch_defaults} ++ fi ++ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" ++fi +diff -urN gcc.orig/config.in gcc/config.in +--- a/src/gcc.orig/config.in 2010-06-12 ++++ b/src/gcc/config.in 2010-06-12 +@@ -179,6 +179,10 @@ + #undef ENABLE_WIN32_REGISTRY + #endif + ++/* Define if you want to use multiarch. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_MULTIARCH ++#endif + + /* Define to the name of a file containing a list of extra machine modes for + this architecture. */ +diff -urN gcc.orig/configure.ac gcc/configure.ac +--- a/src/gcc.orig/configure.ac 2010-06-12 ++++ b/src/gcc/configure.ac 2010-06-12 +@@ -589,6 +589,19 @@ + [], [enable_multilib=yes]) + AC_SUBST(enable_multilib) + ++# Determine whether or not multiarch is enabled. ++AC_ARG_ENABLE(multiarch, ++[ --enable-multiarch enable multiarch support], ++[ ++ enable_multiarch=yes ++ AC_DEFINE(ENABLE_MULTIARCH, 1, ++ [Define if you want to use multiarch.]) ++],[]) ++AC_SUBST(enable_multiarch) ++ ++AC_ARG_WITH(multiarch-defaults, ++[ --with-multiarch-defaults set the default multiarch directory.],) ++ + # Enable __cxa_atexit for C++. + AC_ARG_ENABLE(__cxa_atexit, + [ --enable-__cxa_atexit enable __cxa_atexit for C++], +diff -urN gcc.orig/cppdefault.c gcc/cppdefault.c +--- a/src/gcc.orig/cppdefault.c 2007-07-26 ++++ b/src/gcc/cppdefault.c 2010-06-12 +@@ -60,6 +60,9 @@ + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++# ifdef ENABLE_MULTIARCH ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++# endif + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -95,6 +98,9 @@ + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++# ifdef ENABLE_MULTIARCH ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, ++# endif + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +diff -urN gcc.orig/gcc.c gcc/gcc.c +--- a/src/gcc.orig/gcc.c 2010-06-12 ++++ b/src/gcc/gcc.c 2010-06-12 +@@ -71,6 +71,7 @@ + #include "system.h" + #include "coretypes.h" + #include "multilib.h" /* before tm.h */ ++#include "multiarch.h" + #include "tm.h" + #include + #if ! defined( SIGCHLD ) && defined( SIGCLD ) +@@ -383,6 +384,9 @@ + static int used_arg (const char *, int); + static int default_arg (const char *, int); + static void set_multilib_dir (void); ++#ifdef ENABLE_MULTIARCH ++static void set_multiarch_dir (void); ++#endif + static void print_multilib_info (void); + static void perror_with_name (const char *); + static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; +@@ -6924,6 +6928,11 @@ + the subdirectory based on the options. */ + set_multilib_dir (); + ++#ifdef ENABLE_MULTIARCH ++ /* Add the multiarch directories to libraries path. */ ++ set_multiarch_dir (); ++#endif ++ + /* Warn about any switches that no pass was interested in. */ + + for (i = 0; (int) i < n_switches; i++) +@@ -8078,6 +8087,39 @@ + multilib_os_dir = multilib_dir; + } + ++#ifdef ENABLE_MULTIARCH ++/* Add the multiarch directories to libraries path. This uses the converted ++ multiarch triplet from the multilib value. ++ For example, if the target supports -m32/-m64 as multilib option and ++ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library ++ path if either -m64 or no multilib option at all is set. And it will ++ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in ++ multiarch.def. */ ++ ++static void ++set_multiarch_dir (void) ++{ ++ const char *multiarch, *path; ++ ++ multiarch = multilib_to_multiarch (multilib_dir); ++ if (multiarch == NULL) ++ { ++ fatal_ice ("\ ++Internal error: no multiarch mapping for multilib (%s)\n\ ++Please submit a full bug report.\n\ ++See %s for instructions.", ++ multilib_dir ? multilib_dir : multilib_defaults, bug_report_url); ++ } ++ else if (multiarch) ++ { ++ path = concat (STANDARD_STARTFILE_PREFIX_2, multiarch, ++ dir_separator_str, NULL); ++ add_prefix (&startfile_prefixes, path, NULL, ++ PREFIX_PRIORITY_LAST, 0, 1); ++ } ++} ++#endif ++ + /* Print out the multiple library subdirectory selection + information. This prints out a series of lines. Each line looks + like SUBDIRECTORY;@OPTION@OPTION, with as many options as is +diff -urN gcc.orig/incpath.c gcc/incpath.c +--- a/src/gcc.orig/incpath.c 2010-06-12 ++++ b/src/gcc/incpath.c 2010-06-12 +@@ -32,6 +32,7 @@ + #include "cppdefault.h" + #include "flags.h" + #include "toplev.h" ++#include "multiarch.h" + + /* Microsoft Windows does not natively support inodes. + VMS has non-numeric inodes. */ +@@ -134,6 +135,9 @@ + const struct default_include *p; + int relocated = cpp_relocated(); + size_t len; ++#ifdef ENABLE_MULTIARCH ++ const char *multiarch; ++#endif + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -152,8 +156,20 @@ + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -197,8 +213,20 @@ + else + str = update_path (p->fname, p->component); + ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + + add_path (str, SYSTEM, p->cxx_aware, false); + } +diff -urN gcc.orig/multiarch.h gcc/multiarch.h +--- a/src/gcc.orig/multiarch.h 1970-01-01 ++++ b/src/gcc/multiarch.h 2010-06-12 +@@ -0,0 +1,95 @@ ++/* Header for multiarch handling (include directories, libraries path). ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Arthur Loiret ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#ifndef GCC_MULTIARCH_H ++#define GCC_MULTIARCH_H ++ ++#include "tm.h" ++ ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] = { ++#ifdef ENABLE_MULTIARCH ++ { "", MULTIARCH_DEFAULTS }, ++# if defined(__x86_64_linux_gnu__) ++ { "32", "i686-linux-gnu" }, ++# endif ++# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) ++ { "64", "x86_64-linux-gnu" }, ++# endif ++# if defined(__powerpc64_linux_gnu__) ++ { "32", "powerpc-linux-gnu" }, ++# endif ++# if defined(__powerpc_linux_gnu__) ++ { "64", "powerpc64-linux-gnu" }, ++# endif ++# if defined(__sparc64_linux_gnu__) ++ { "32", "sparc-linux-gnu" }, ++# endif ++# if defined(__sparc_linux_gnu__) ++ { "64", "sparc64-linux-gnu" }, ++# endif ++# if defined(__s390x_linux_gnu__) ++ { "31", "s390-linux-gnu" }, ++# endif ++# if defined(__s390_linux_gnu__) ++ { "64", "s390x-linux-gnu" }, ++# endif ++# if defined(__mips_linux_gnu__) ++ { "n32", "mips64-linux-gnuabin32" }, ++ { "64", "mips64-linux-gnuabi64" }, ++# endif ++# if defined(__mipsel_linux_gnu__) ++ { "n32", "mips64el-linux-gnuabin32" }, ++ { "64", "mips64el-linux-gnuabi64" }, ++# endif ++# if defined(__x86_64_kfreebsd_gnu__) ++ { "32", "i486-kfreebsd-gnu" }, ++# endif ++# if defined(__sh4_linux_gnu__) ++ { "m4", "sh4-linux-gnu" }, ++ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, ++# endif ++#endif /* ENABLE_MULTIARCH */ ++ { 0, 0 } ++}; ++ ++/* Convert the multilib option to the corresponding target triplet. ++ See multiarch.def and config.gcc for multilib/multiarch pairs. ++ When the default multilib is used, the corresponding multilib/multiarch ++ pair is { "", $target_tripplet }. */ ++static inline const char* ++multilib_to_multiarch (const char *imultilib) ++{ ++ const struct multiarch_mapping *p; ++ ++ for (p = multiarch_mappings; p->multiarch; p++) ++ { ++ if (!strcmp(p->multilib, imultilib ? imultilib : "")) ++ return p->multiarch; ++ } ++ return NULL; ++} ++ ++#endif /* GCC_MULTIARCH_H */ --- gcc-4.4-4.4.5.orig/debian/patches/cell-branch-doc.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/link-libs.diff +++ gcc-4.4-4.4.5/debian/patches/link-libs.diff @@ -0,0 +1,170 @@ +#DP: Link libraries with -01. + +--- + gcc/config/t-slibgcc-elf-ver | 1 + + libffi/Makefile.am | 2 +- + libffi/Makefile.in | 2 +- + libgfortran/Makefile.am | 2 +- + libgfortran/Makefile.in | 2 +- + libjava/Makefile.am | 2 +- + libjava/Makefile.in | 2 +- + libmudflap/Makefile.am | 4 ++-- + libmudflap/Makefile.in | 4 ++-- + libobjc/Makefile.in | 2 ++ + libstdc++-v3/src/Makefile.am | 1 + + libstdc++-v3/src/Makefile.in | 1 + + 12 files changed, 15 insertions(+), 10 deletions(-) + +--- a/src/gcc/config/t-slibgcc-elf-ver ++++ b/src/gcc/config/t-slibgcc-elf-ver +@@ -14,6 +14,7 @@ SHLIB_LC = -lc + SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,--soname=$(SHLIB_SONAME) \ + -Wl,--version-script=$(SHLIB_MAP) \ ++ -Wl,-O1 \ + -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \ + $(SHLIB_OBJS) $(SHLIB_LC) && \ + rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ +--- a/src/libffi/Makefile.am ++++ b/src/libffi/Makefile.am +@@ -158,7 +158,7 @@ AM_CFLAGS = -Wall -g -fexceptions + + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1 + + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) +--- a/src/libffi/Makefile.in ++++ b/src/libffi/Makefile.in +@@ -455,7 +455,7 @@ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) + nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + AM_CFLAGS = -Wall -g -fexceptions + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1 + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) + all: fficonfig.h +--- a/src/libgfortran/Makefile.am ++++ b/src/libgfortran/Makefile.am +@@ -17,7 +17,7 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + + toolexeclib_LTLIBRARIES = libgfortran.la + libgfortran_la_LINK = $(LINK) +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1 + + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +--- a/src/libgfortran/Makefile.in ++++ b/src/libgfortran/Makefile.in +@@ -953,7 +953,7 @@ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + toolexeclib_LTLIBRARIES = libgfortran.la + libgfortran_la_LINK = $(LINK) +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1 + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libgfortranbegin_la_SOURCES = fmain.c +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -134,7 +134,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ + GCJ_FOR_ECJX = @GCJ_FOR_ECJX@ + GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@ + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@ ++ $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@ + CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@ + +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -938,7 +938,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ + + GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@ + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@ ++ $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@ + + CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@ +--- a/src/libmudflap/Makefile.am ++++ b/src/libmudflap/Makefile.am +@@ -34,7 +34,7 @@ libmudflap_la_SOURCES = \ + mf-hooks2.c + libmudflap_la_LIBADD = + libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) +-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + + libmudflapth_la_SOURCES = \ +@@ -46,7 +46,7 @@ libmudflapth_la_SOURCES = \ + libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH + libmudflapth_la_LIBADD = + libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD) +-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + + # XXX hack alert +--- a/src/libmudflap/Makefile.in ++++ b/src/libmudflap/Makefile.in +@@ -269,7 +269,7 @@ libmudflap_la_SOURCES = \ + + libmudflap_la_LIBADD = + libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD) +-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + libmudflapth_la_SOURCES = \ + mf-runtime.c \ + mf-heuristics.c \ +@@ -280,7 +280,7 @@ libmudflapth_la_SOURCES = \ + libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH + libmudflapth_la_LIBADD = + libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD) +-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + # XXX hack alert + # From libffi/Makefile.am +--- a/src/libobjc/Makefile.in ++++ b/src/libobjc/Makefile.in +@@ -283,12 +283,14 @@ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) + libobjc$(libsuffix).la: $(OBJS) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) \ + $(LTLDFLAGS) + + libobjc_gc$(libsuffix).la: $(OBJS_GC) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) $(OBJC_BOEHM_GC_LIBS) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) \ + $(LTLDFLAGS) + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -207,6 +207,7 @@ libstdc___la_DEPENDENCIES = \ + $(top_builddir)/libsupc++/libsupc++convenience.la + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + # Use special rules for the deprecated source files so that they find +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -454,6 +454,7 @@ libstdc___la_DEPENDENCIES = \ + $(top_builddir)/libsupc++/libsupc++convenience.la + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + --- gcc-4.4-4.4.5.orig/debian/patches/cross-fixes.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-pascal-lang.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-pascal-lang.diff @@ -0,0 +1,711 @@ +# DP: Add pascal options and specs for the gcc driver. + +--- + gcc/p/lang-specs.h | 46 ++++ + gcc/p/lang.opt | 635 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gcc/p/p-version.h | 7 + + 3 files changed, 688 insertions(+), 0 deletions(-) + create mode 100644 gcc/p/lang-specs.h + create mode 100644 gcc/p/lang.opt + create mode 100644 gcc/p/p-version.h + +new file mode 100644 +--- /dev/null ++++ b/src/gcc/p/lang-specs.h +@@ -0,0 +1,46 @@ ++/*Definitions for specs for Pascal. ++ ++ Copyright (C) 1997-2006 Free Software Foundation, Inc. ++ ++ Authors: Peter Gerwinski ++ Frank Heckenbach ++ ++ This file is part of GNU Pascal. ++ ++ GNU Pascal is free software; you can 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. ++ ++ GNU Pascal is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU Pascal; see the file COPYING. If not, write to the ++ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include "p/p-version.h" ++ ++/* This is the contribution to the `default_compilers' array for Pascal. */ ++ {".pas", "@Pascal", 0}, ++ {".p", "@Pascal", 0}, ++ {".pp", "@Pascal", 0}, ++ {".dpr", "@Pascal", 0}, ++ {"@Pascal", ++ "gpc1 %{E:-E %{!M:%(cpp_unique_options) %1 %{m*} %{f*&W*&pedantic*} %{w} " ++ "%(cpp_debug_options) %{O*}}}" ++ "%{M:%(cpp_unique_options) %1 %{m*} %{f*&W*&pedantic*} %{w}" ++ "%(cpp_debug_options) %{O*}}" ++ "%{!E:%{!M:%{save-temps:-E %(cpp_unique_options) %1 %{m*} " ++ "%{f*&W*&pedantic*} %{w} %{O*} -o %b.i \n\ ++ gpc1 -fpreprocessed %b.i} %{!save-temps:%(cpp_unique_options)} \ ++ %(cc1_options)\ ++ %{!famtmpfile*:%eInternal GPC problem: internal option `--amtmpfile' not given}\ ++ %{!fsyntax-only:%(invoke_as)}}}", 0}, ++ {"@Preprocessed-Pascal", ++ "%{!M:%{!MM:%{!E:gpc1 -fpreprocessed %i %(cc1_options)\ ++ %{!famtmpfile*:%eInternal GPC problem: internal option `--amtmpfile' not given}\ ++ %{!fsyntax-only:%(invoke_as)} }}}", 0}, +new file mode 100644 +--- /dev/null ++++ b/src/gcc/p/lang.opt +@@ -0,0 +1,635 @@ ++; This file was generated automatically by mk-lang_opt. ++; DO NOT CHANGE THIS FILE MANUALLY! ++; ++; Options for the Pascal front end. ++; Copyright (C) 2004-2006 Free Software Foundation, Inc. ++; ++; This file is part of GNU Pascal. ++; ++; GNU Pascal is free software; you can 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. ++; ++; GNU Pascal is distributed in the hope that it will be useful, ++; but WITHOUT ANY WARRANTY; without even the implied warranty of ++; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++; GNU General Public License for more details. ++; ++; You should have received a copy of the GNU General Public License ++; along with GNU Pascal; see the file COPYING. If not, write to the ++; Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++; 02111-1307, USA. ++ ++; See c.opt for a description of this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++Language ++Pascal ++ ++A ++Pascal ++Ignored ++ ++D ++Pascal Joined Separate ++-D[=] Define a with as its value. If just is given, is taken to be 1 ++ ++E ++Pascal ++Preprocess only ++ ++H ++Pascal ++Print the name of include files as they are used ++ ++I ++Pascal Joined Separate ++-I Add to the end of the main include path. ++ ++M ++Pascal ++Generate make dependencies ++ ++MM ++Pascal ++Like -M but ignore system header files ++ ++P ++Pascal ++Do not generate #line directives ++ ++U ++Pascal Joined Separate ++-U Undefine ++ ++Wabsolute ++Pascal ++Warn about variables at absolute adresses and `absolute' variable with non-constant addresses (default) ++ ++Wall ++Pascal ++ ++ ++Wcomment ++Pascal ++ ++ ++Wdynamic-arrays ++Pascal ++Warn about arrays whose size is determined at run time (including array slices) ++ ++Werror ++Pascal ++ ++ ++Wfloat-equal ++Pascal ++Warn about `=' and `<>' comparisons of real numbers ++ ++Widentifier-case ++Pascal ++Warn about an identifier written with varying case ++ ++Widentifier-case-local ++Pascal ++Warn about an identifier written with varying case within one program/module/unit ++ ++Wimplicit-abstract ++Pascal ++Warn when an object type not declared `abstract' contains an abstract method (default) ++ ++Wimplicit-io ++Pascal ++Warn when `Input' or `Output' are used implicitly ++ ++Winherited-abstract ++Pascal ++Warn when an abstract object type inherits from a non-abstract one (default) ++ ++Winterface-file-name ++Pascal ++Warn when a unit/module interface differs from the file name ++ ++Wlocal-external ++Pascal ++Warn about local `external' declarations ++ ++Wmissing-declarations ++Pascal ++ ++ ++Wmissing-prototypes ++Pascal ++ ++ ++Wmixed-comments ++Pascal ++Warn about mixed comments like `{ ... *)' ++ ++Wnear-far ++Pascal ++Warn about use of useless `near' or `far' directives (default) ++ ++Wnested-comments ++Pascal ++Warn about nested comments like `{ { } }' ++ ++Wobject-assignment ++Pascal ++Warn when when assigning objects or declaring them as value parameters or function results (default) ++ ++Wpointer-arith ++Pascal ++ ++ ++Wsemicolon ++Pascal ++Warn about a semicolon after `then', `else' or `do' (default) ++ ++Wtyped-const ++Pascal ++Warn about misuse of typed constants as initialized variables (default) ++ ++Wundef ++Pascal ++ ++ ++Wunderscore ++Pascal ++Warn about double/leading/trailing underscores in identifiers ++ ++Wwarnings ++Pascal ++Enable warnings (same as `{$W+}') ++ ++Wwrite-strings ++Pascal ++ ++ ++famtmpfile= ++Pascal Joined RejectNegative ++(Internal switch used for automake) ++ ++fassertions ++Pascal ++Enable assertion checking (default) ++ ++fautobuild ++Pascal ++Automatically compile all units/modules/`{$L ...}' files and link the object files provided ++ ++fautolink ++Pascal ++Automatically link object files provided by units/modules or `{$L ...}' (default) ++ ++fautomake ++Pascal ++Automatically compile changed units/modules/`{$L ...}' files and link the object files provided ++ ++fautomake-g++= ++Pascal Joined RejectNegative ++Set the C++ compiler invoked by automake ++ ++fautomake-gcc= ++Pascal Joined RejectNegative ++Set the C compiler invoked by automake ++ ++fautomake-gpc= ++Pascal Joined RejectNegative ++Set the Pascal compiler invoked by automake ++ ++fbig-endian ++Pascal RejectNegative ++Tell GPC that the system is big-endian (for those targets where it can vary) ++ ++fborland-objects ++Pascal RejectNegative ++Choose Borland object model ++ ++fborland-pascal ++Pascal RejectNegative ++Try to emulate Borland Pascal, version 7.0 ++ ++fcase-value-checking ++Pascal ++Cause a runtime error if a `case' matches no branch (default in ISO Pascal modes) ++ ++fcidefine= ++Pascal Joined RejectNegative ++Define a case-insensitive macro ++ ++fclassic-pascal ++Pascal RejectNegative ++Reject anything besides ISO 7185 Pascal ++ ++fclassic-pascal-level-0 ++Pascal RejectNegative ++Reject conformant arrays and anything besides ISO 7185 Pascal ++ ++fcsdefine= ++Pascal Joined RejectNegative ++Define a case-sensitive macro ++ ++fcstrings-as-strings ++Pascal ++Treat CStrings as strings ++ ++fdebug-automake ++Pascal RejectNegative ++(For GPC developers.) Give additional information about the actions of automake ++ ++fdebug-gpi ++Pascal RejectNegative ++(For GPC developers.) Show what is written to and read from GPI files (huge output!) ++ ++fdebug-source ++Pascal ++Output the source while it is processed to standard error ++ ++fdebug-tree= ++Pascal Joined RejectNegative ++(For GPC developers.) Show the internal representation of a given tree node (name or address) ++ ++fdelphi ++Pascal RejectNegative ++Try to emulate Borland Pascal, version 7.0, with some Delphi extensions ++ ++fdelphi-comments ++Pascal ++Allow Delphi style `//' comments (default) ++ ++fdelphi-method-shadowing ++Pascal ++Redefining methods silently shadows old definition (default in `--delphi') ++ ++fdisable-debug-info ++Pascal RejectNegative ++Inhibit `-g' options (temporary work-around, this option may disappear in the future) ++ ++fdisable-default-paths ++Pascal RejectNegative ++Do not add a default path to the unit and object path ++ ++fdisable-keyword= ++Pascal Joined RejectNegative ++Disable a keyword, independently of dialect defaults ++ ++fdisable-predefined-identifier= ++Pascal Joined RejectNegative ++Disable a predefined identifier, independently of dialect defaults ++ ++fdouble-quoted-strings ++Pascal ++Allow strings enclosed in \"\" (default) ++ ++fenable-keyword= ++Pascal Joined RejectNegative ++Enable a keyword, independently of dialect defaults ++ ++fenable-predefined-identifier= ++Pascal Joined RejectNegative ++Enable a predefined identifier, independently of dialect defaults ++ ++fexact-compare-strings ++Pascal ++Do not blank-pad strings for comparisons ++ ++fexecutable-file-name ++Pascal RejectNegative ++Derive output file name from main source file name ++ ++fexecutable-file-name= ++Pascal Joined RejectNegative ++Specify the name of the output file ++ ++fexecutable-path ++Pascal ++`--no-executable-path': Create the executable file in the directory where the main source is (default) ++ ++fexecutable-path= ++Pascal Joined RejectNegative ++Path where to create the executable file ++ ++fextended-pascal ++Pascal RejectNegative ++Reject anything besides ISO 10206 Extended Pascal ++ ++fextended-syntax ++Pascal ++same as `--ignore-function-results --pointer-arithmetic --cstrings-as-strings -Wno-absolute' (same as `{$X+}') ++ ++ffield-widths ++Pascal ++Use default field widths in write statements ++ ++ffield-widths= ++Pascal Joined RejectNegative ++Specify as a colon-separated list the default field widths in write statements for Integer, Real, Boolean, LongInt, LongReal ++ ++fgnu-objects ++Pascal RejectNegative ++Reset object model to default state ++ ++fgnu-pascal ++Pascal RejectNegative ++Undo the effect of previous dialect options, allow all features again ++ ++fgpc-main= ++Pascal Joined RejectNegative ++External name for the program's entry point (default: `main') ++ ++fgpi-destination-path= ++Pascal Joined RejectNegative ++(Internal switch used for automake) ++ ++fignore-function-results ++Pascal ++Do not complain when a function is called like a procedure ++ ++fignore-garbage-after-dot ++Pascal ++Ignore anything after the terminating `.' (default in `--borland-pascal') ++ ++fignore-packed ++Pascal ++Ignore `packed' in the source code (default in `--borland-pascal') ++ ++fimplementation-only ++Pascal RejectNegative ++Do not produce a GPI file; only compile the implementation part ++ ++fimplicit-result ++Pascal ++Enable implicit `Result' for functions (default only in `--delphi') ++ ++finit-modules= ++Pascal Joined RejectNegative ++Initialize the named modules in addition to those imported regularly; kind of a kludge ++ ++finterface-only ++Pascal RejectNegative ++Compile only the interface part of a unit/module and exit (creates `.gpi' file, no `.o' file) ++ ++fio-checking ++Pascal ++Check I/O operations automatically (same as `{$I+}') (default) ++ ++fiso-goto-restrictions ++Pascal ++Do not allow jumps into structured instructions (default) ++ ++flittle-endian ++Pascal RejectNegative ++Tell GPC that the system is little-endian (for those targets where it can vary) ++ ++flongjmp-all-nonlocal-labels ++Pascal ++Use `longjmp' for all nonlocal labels (default for Darwin/PPC) ++ ++fmac-objects ++Pascal RejectNegative ++Choose Mac object model ++ ++fmac-pascal ++Pascal RejectNegative ++Support (some features of) traditional Macintosh Pascal compilers ++ ++fmacros ++Pascal ++Expand macros (default except with `--ucsd-pascal', `--borland-pascal' or `--delphi') ++ ++fmaximum-field-alignment= ++Pascal Joined RejectNegative ++Set the maximum field alignment in bits if `pack-struct' is in effect ++ ++fmethods-always-virtual ++Pascal ++Make all methods virtual (default in `--mac-pascal') ++ ++fmixed-comments ++Pascal ++Allow comments like `{ ... *)' as required in ISO Pascal (default in ISO 7185/10206 Pascal mode) ++ ++fnested-comments ++Pascal ++Allow nested comments like `{ { } }' and `(* (* *) *)' ++ ++fnonlocal-exit ++Pascal ++Allow non-local `Exit' statements (default in `--ucsd-pascal' and `--mac-pascal') ++ ++fobject-checking ++Pascal ++Check for valid objects on virtual method calls (default) ++ ++fobject-destination-path ++Pascal ++`--no-object-destination-path': Create additional object files (e.g. of C files, not Pascal units) in the current directory (default) ++ ++fobject-destination-path= ++Pascal Joined RejectNegative ++Path where to create additional object files (e.g. of C files, not Pascal units) ++ ++fobject-pascal ++Pascal RejectNegative ++Reject anything besides (the implemented parts of) ANSI draft Object Pascal ++ ++fobject-path ++Pascal ++`--no-object-path': Forget about directories where to look for additional object (and source) files ++ ++fobject-path= ++Pascal Joined RejectNegative ++Directories where to look for additional object (and source) files ++ ++fobjects-are-references ++Pascal ++Turn objects into references (default in `--mac-pascal') ++ ++fobjects-require-override ++Pascal ++Require override directive for objects (default in `--mac-pascal') ++ ++fooe-objects ++Pascal RejectNegative ++Choose OOE object model ++ ++fpascal-sc ++Pascal RejectNegative ++Be strict about the implemented Pascal-SC extensions ++ ++fpedantic ++Pascal ++Reject everything not allowed in some dialect, e.g. redefinition of its keywords ++ ++fpointer-arithmetic ++Pascal ++Enable pointer arithmetic ++ ++fpointer-checking ++Pascal ++Validate pointers before dereferencing ++ ++fpointer-checking-user-defined ++Pascal ++Use user-defined procedure for validating pointers ++ ++fpreprocessed ++Pascal RejectNegative ++Treat the input file as already preprocessed ++ ++fprint-needed-options ++Pascal RejectNegative ++Print the needed options ++ ++fprogress-bar ++Pascal ++Output number of processed lines while compiling ++ ++fprogress-messages ++Pascal ++Output source file names and line numbers while compiling ++ ++fpropagate-units ++Pascal ++Automalically export all imported identifiers from a unit ++ ++frange-and-object-checking ++Pascal ++Same as `--range-checking --object-checking', same as `{$R+}' ++ ++frange-checking ++Pascal ++Do automatic range checks (default) ++ ++fread-base-specifier ++Pascal ++In read statements, allow input base specifier `n#' (default) ++ ++fread-hex ++Pascal ++In read statements, allow hexadecimal input with `$' (default) ++ ++fread-white-space ++Pascal ++In read statements, require whitespace after numbers ++ ++fsetlimit= ++Pascal Joined RejectNegative ++Define the range for `set of Integer' etc. ++ ++fshort-circuit ++Pascal ++Guarantee short-circuit Boolean evaluation (default; same as `{$B-}') ++ ++fstack-checking ++Pascal ++Enable stack checking (same as `{$S+}') ++ ++fstandard-pascal ++Pascal RejectNegative ++Synonym for `--classic-pascal' ++ ++fstandard-pascal-level-0 ++Pascal RejectNegative ++Synonym for `--classic-pascal-level-0' ++ ++fsun-pascal ++Pascal RejectNegative ++Support (a few features of) Sun Pascal ++ ++ftransparent-file-names ++Pascal ++Derive external file names from variable names ++ ++ftruncate-strings ++Pascal ++Truncate strings being assigned to other strings of too short capacity ++ ++ftyped-address ++Pascal ++Make the result of the address operator typed (same as `{$T+}', default) ++ ++fucsd-pascal ++Pascal RejectNegative ++Try to emulate UCSD Pascal ++ ++funit-destination-path ++Pascal ++`--no-unit-destination-path': Create object and GPI files of Pascal units in the current directory (default) ++ ++funit-destination-path= ++Pascal Joined RejectNegative ++Path where to create object and GPI files of Pascal units ++ ++funit-path ++Pascal ++`--no-unit-path': Forget about directories where to look for unit/module sources ++ ++funit-path= ++Pascal Joined RejectNegative ++Directories where to look for unit/module sources ++ ++fuses= ++Pascal Joined RejectNegative ++Add an implicit `uses' clause ++ ++fvax-pascal ++Pascal RejectNegative ++Support (a few features of) VAX Pascal ++ ++fwrite-capital-exponent ++Pascal ++Write real exponents with a capital `E' ++ ++fwrite-clip-strings ++Pascal ++In write statements, truncate strings exceeding their field width (`Write (SomeLongString : 3)') ++ ++fwrite-real-blank ++Pascal ++Output a blank in front of positive reals in exponential form (default) ++ ++idirafter ++Pascal Joined Separate ++`-idirafter ' Add to the end of the system include path ++ ++imacros ++Pascal Joined Separate ++-imacros Accept definition of macros in ++ ++include ++Pascal Joined Separate ++-include Include the contents of before other files ++ ++iprefix ++Pascal Joined Separate ++-iprefix Specify as a prefix for next two options ++ ++isystem ++Pascal Joined Separate ++-isystem Add to the start of the system include path ++ ++iwithprefix ++Pascal Joined Separate ++-iwithprefix Add to the end of the system include path ++ ++iwithprefixbefore ++Pascal Joined Separate ++-iwithprefixbefore Add to the end of the main include path ++ ++nostdinc ++Pascal ++Do not search standard system include directories (those specified with -isystem will still be used) ++ ++remap ++Pascal ++Remap file names when including files ++ ++v ++Pascal ++Enable verbose output ++ ++; This comment is to ensure we retain the blank line above. +new file mode 100644 +--- /dev/null ++++ b/src/gcc/p/p-version.h +@@ -0,0 +1,7 @@ ++/* Generated automatically by the Makefile. ++ DO NOT CHANGE THIS FILE MANUALLY! */ ++ ++#define GPC_MAJOR "2" ++#define GPC_MINOR "1" ++#define GPC_VERSION_STRING "20060325" ++#define GPC_RELEASE_STRING GPC_VERSION_STRING --- gcc-4.4-4.4.5.orig/debian/patches/config-ml.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/pr39429.diff +++ gcc-4.4-4.4.5/debian/patches/pr39429.diff @@ -0,0 +1,59 @@ +# DP: Proposed patch for PR target/39429, an ARM wrong-code error. + +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. + +--- a/src/gcc/config/arm/arm.c 2009-06-02 09:18:16.000000000 +0200 ++++ b/src/gcc/config/arm/arm.c 2009-07-18 20:14:45.000000000 +0200 +@@ -7401,7 +7401,7 @@ adjacent_mem_locations (rtx a, rtx b) + /* 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 +--- a/src/gcc/testsuite/gcc.target/arm/pr39429.c 1970-01-01 01:00:00.000000000 +0100 ++++ b/src/gcc/testsuite/gcc.target/arm/pr39429.c 2009-07-14 01:21:46.000000000 +0200 +@@ -0,0 +1,28 @@ ++/* PR target/39429 */ ++/* { dg-do run } */ ++/* { dg-options "-O2 -mtune=arm740t" } */ ++ ++struct obj { ++ unsigned int _filler[270]; ++ unsigned int mapsize; ++ unsigned int size; ++}; ++ ++int __attribute__((noinline)) useOffScreen(struct obj *obj) ++{ ++ unsigned int size = obj->size; ++ unsigned int mapsize = obj->mapsize; ++ ++ return (mapsize - size) < 16*1024 ? 0 : 1; ++} ++ ++int main(void) ++{ ++ struct obj obj; ++ ++ obj.mapsize = 0; ++ obj.size = 0; ++ if (useOffScreen(&obj) != 0) ++ __builtin_abort(); ++ return 0; ++} --- gcc-4.4-4.4.5.orig/debian/patches/pr45112.diff +++ gcc-4.4-4.4.5/debian/patches/pr45112.diff @@ -0,0 +1,50 @@ +# DP: Proposed fix for PR c++/45112 + +ChangeLog: + +gcc/ + PR c++/45112 + * cp/decl.c (duplicate_decls): Merge DECL_USER_ALIGN and DECL_PACKED. + +gcc/testsuite/ + PR c++/45112 + * testsuite/g++.dg/pr45112.C: New test. + + +Index: gcc/cp/decl.c +=================================================================== +*** a/src/gcc/cp/decl.c (revision 162649) +--- b/src/gcc/cp/decl.c (working copy) +*************** duplicate_decls (tree newdecl, tree oldd +*** 2113,2118 **** +--- 2113,2122 ---- + SET_DECL_INIT_PRIORITY (olddecl, DECL_INIT_PRIORITY (newdecl)); + DECL_HAS_INIT_PRIORITY_P (olddecl) = 1; + } ++ /* Likewise for DECL_USER_ALIGN and DECL_PACKED. */ ++ DECL_USER_ALIGN (olddecl) = DECL_USER_ALIGN (newdecl); ++ if (TREE_CODE (newdecl) == FIELD_DECL) ++ DECL_PACKED (olddecl) = DECL_PACKED (newdecl); + + /* The DECL_LANG_SPECIFIC information in OLDDECL will be replaced + with that from NEWDECL below. */ +Index: gcc/testsuite/g++.dg/pr45112.C +=================================================================== +*** a/src/gcc/testsuite/g++.dg/pr45112.C (revision 0) +--- b/src/gcc/testsuite/g++.dg/pr45112.C (revision 0) +*************** +*** 0 **** +--- 1,12 ---- ++ /* { dg-do compile } */ ++ ++ struct JSString ++ { ++ unsigned char mLength; ++ static JSString unitStringTable[]; ++ }; ++ ++ JSString JSString::unitStringTable[] __attribute__ ((aligned (8))) = { 1 }; ++ ++ int bug [__alignof__ (JSString::unitStringTable) >= 8 ? 1 : -1]; ++ + --- gcc-4.4-4.4.5.orig/debian/patches/hurd-changes.diff +++ gcc-4.4-4.4.5/debian/patches/hurd-changes.diff @@ -0,0 +1,77 @@ +# DP: Traditional GNU systems don't have a /usr directory. However, Debian +# DP: systems do, and we support both having a /usr -> . symlink, and having a +# DP: /usr directory like the other ports. So this patch should NOT go +# DP: upstream. +# DP: +# DP: Define MAXPATHLEN and PATH_MAX. + +--- + boehm-gc/dyn_load.c | 2 +- + gcc/config/gnu.h | 3 ++- + gcc/config/t-gnu | 2 +- + gcc/tlink.c | 4 ++++ + 4 files changed, 8 insertions(+), 3 deletions(-) + +--- a/src/boehm-gc/dyn_load.c ++++ b/src/boehm-gc/dyn_load.c +@@ -26,7 +26,7 @@ + * None of this is safe with dlclose and incremental collection. + * But then not much of anything is safe in the presence of dlclose. + */ +-#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE) ++#if (defined(__linux__) || defined(__GLIBC__) || defined(__GNU__)) && !defined(_GNU_SOURCE) + /* Can't test LINUX, since this must be define before other includes */ + # define _GNU_SOURCE + #endif +--- a/src/gcc/config.gcc 2009-04-26 21:36:36.000000000 +0200 ++++ b/src/gcc/config.gcc 2009-04-26 21:36:53.000000000 +0200 +@@ -3057,7 +3057,7 @@ + i[34567]86-*-darwin* | x86_64-*-darwin*) + tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp" + ;; +- i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) ++ i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | i[34567]86-*-gnu*) + tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux" + ;; + ia64*-*-linux*) +--- a/src/libgcc/config.host 2009-04-27 02:04:10.000000000 +0200 ++++ b/src/libgcc/config.host 2009-04-27 02:04:23.000000000 +0200 +@@ -591,6 +591,7 @@ + case ${host} in + i[34567]86-*-darwin* | x86_64-*-darwin* | \ + i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \ ++ i[34567]86-*-gnu* | \ + i[34567]86-*-linux* | x86_64-*-linux*) + if test "${host_address}" = 32; then + tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp" +--- a/src/gcc/config/gnu.h ++++ b/src/gcc/config/gnu.h +@@ -30,7 +30,8 @@ along with GCC. If not, see . + + /* Standard include directory. In GNU, "/usr" is a four-letter word. */ + #undef STANDARD_INCLUDE_DIR +-#define STANDARD_INCLUDE_DIR "/include" ++/* Overriden for Debian GNU/Hurd. */ ++#define STANDARD_INCLUDE_DIR "/usr/include" + + #undef LINUX_TARGET_OS_CPP_BUILTINS + #define LINUX_TARGET_OS_CPP_BUILTINS() \ +--- a/src/gcc/config/t-gnu ++++ b/src/gcc/config/t-gnu +@@ -1,2 +1,2 @@ + # In GNU, "/usr" is a four-letter word. +-NATIVE_SYSTEM_HEADER_DIR = /include ++NATIVE_SYSTEM_HEADER_DIR = /usr/include +--- a/src/gcc/tlink.c ++++ b/src/gcc/tlink.c +@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3. If not see + + #define MAX_ITERATIONS 17 + ++#ifndef MAXPATHLEN ++#define MAXPATHLEN 4096 ++#endif ++ + /* Defined in the automatically-generated underscore.c. */ + extern int prepends_underscore; + --- gcc-4.4-4.4.5.orig/debian/patches/sh4_atomic_update.diff +++ gcc-4.4-4.4.5/debian/patches/sh4_atomic_update.diff @@ -0,0 +1,122 @@ +# DP: Update atomic builtins for sh4 + +--- a/src/gcc/config/sh/linux-atomic.asm 2009-04-10 08:23:07.000000000 +0900 ++++ b/src/gcc/config/sh/linux-atomic.asm 2009-12-18 11:58:50.000000000 +0900 +@@ -54,10 +54,10 @@ + ATOMIC_TEST_AND_SET (4,l,mov) + + #define ATOMIC_COMPARE_AND_SWAP(N,T,EXTS,EXT) \ +- .global __sync_compare_and_swap_##N; \ +- HIDDEN_FUNC(__sync_compare_and_swap_##N); \ ++ .global __sync_val_compare_and_swap_##N; \ ++ HIDDEN_FUNC(__sync_val_compare_and_swap_##N); \ + .align 2; \ +-__sync_compare_and_swap_##N:; \ ++__sync_val_compare_and_swap_##N:; \ + mova 1f, r0; \ + EXTS r5, r5; \ + mov r15, r1; \ +@@ -69,12 +69,34 @@ + 1: mov r1, r15; \ + rts; \ + EXT r2, r0; \ +- ENDFUNC(__sync_compare_and_swap_##N) ++ ENDFUNC(__sync_val_compare_and_swap_##N) + + ATOMIC_COMPARE_AND_SWAP (1,b,exts.b,extu.b) + ATOMIC_COMPARE_AND_SWAP (2,w,exts.w,extu.w) + ATOMIC_COMPARE_AND_SWAP (4,l,mov,mov) + ++#define ATOMIC_BOOL_COMPARE_AND_SWAP(N,T,EXTS) \ ++ .global __sync_bool_compare_and_swap_##N; \ ++ HIDDEN_FUNC(__sync_bool_compare_and_swap_##N); \ ++ .align 2; \ ++__sync_bool_compare_and_swap_##N:; \ ++ mova 1f, r0; \ ++ EXTS r5, r5; \ ++ mov r15, r1; \ ++ mov #(0f-1f), r15; \ ++0: mov.##T @r4, r2; \ ++ cmp/eq r2, r5; \ ++ bf 1f; \ ++ mov.##T r6, @r4; \ ++1: mov r1, r15; \ ++ rts; \ ++ movt r0; \ ++ ENDFUNC(__sync_bool_compare_and_swap_##N) ++ ++ATOMIC_BOOL_COMPARE_AND_SWAP (1,b,exts.b) ++ATOMIC_BOOL_COMPARE_AND_SWAP (2,w,exts.w) ++ATOMIC_BOOL_COMPARE_AND_SWAP (4,l,mov) ++ + #define ATOMIC_FETCH_AND_OP(OP,N,T,EXT) \ + .global __sync_fetch_and_##OP##_##N; \ + HIDDEN_FUNC(__sync_fetch_and_##OP##_##N); \ +@@ -135,4 +157,67 @@ + ATOMIC_FETCH_AND_COMBOP(nand,and,not,2,w,extu.w) + ATOMIC_FETCH_AND_COMBOP(nand,and,not,4,l,mov) + ++#define ATOMIC_OP_AND_FETCH(OP,N,T,EXT) \ ++ .global __sync_##OP##_and_fetch_##N; \ ++ HIDDEN_FUNC(__sync_##OP##_and_fetch_##N); \ ++ .align 2; \ ++__sync_##OP##_and_fetch_##N:; \ ++ mova 1f, r0; \ ++ nop; \ ++ mov r15, r1; \ ++ mov #(0f-1f), r15; \ ++0: mov.##T @r4, r2; \ ++ mov r5, r3; \ ++ OP r2, r3; \ ++ mov.##T r3, @r4; \ ++1: mov r1, r15; \ ++ rts; \ ++ EXT r3, r0; \ ++ ENDFUNC(__sync_##OP##_and_fetch_##N) ++ ++ATOMIC_OP_AND_FETCH(add,1,b,extu.b) ++ATOMIC_OP_AND_FETCH(add,2,w,extu.w) ++ATOMIC_OP_AND_FETCH(add,4,l,mov) ++ ++ATOMIC_OP_AND_FETCH(or,1,b,extu.b) ++ATOMIC_OP_AND_FETCH(or,2,w,extu.w) ++ATOMIC_OP_AND_FETCH(or,4,l,mov) ++ ++ATOMIC_OP_AND_FETCH(and,1,b,extu.b) ++ATOMIC_OP_AND_FETCH(and,2,w,extu.w) ++ATOMIC_OP_AND_FETCH(and,4,l,mov) ++ ++ATOMIC_OP_AND_FETCH(xor,1,b,extu.b) ++ATOMIC_OP_AND_FETCH(xor,2,w,extu.w) ++ATOMIC_OP_AND_FETCH(xor,4,l,mov) ++ ++#define ATOMIC_COMBOP_AND_FETCH(OP,OP0,OP1,N,T,EXT) \ ++ .global __sync_##OP##_and_fetch_##N; \ ++ HIDDEN_FUNC(__sync_##OP##_and_fetch_##N); \ ++ .align 2; \ ++__sync_##OP##_and_fetch_##N:; \ ++ mova 1f, r0; \ ++ mov r15, r1; \ ++ mov #(0f-1f), r15; \ ++0: mov.##T @r4, r2; \ ++ mov r5, r3; \ ++ OP0 r2, r3; \ ++ OP1 r3, r3; \ ++ mov.##T r3, @r4; \ ++1: mov r1, r15; \ ++ rts; \ ++ EXT r3, r0; \ ++ ENDFUNC(__sync_##OP##_and_fetch_##N) ++ ++ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,1,b,extu.b) ++ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,2,w,extu.w) ++ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,4,l,mov) ++ ++ATOMIC_COMBOP_AND_FETCH(nand,and,not,1,b,extu.b) ++ATOMIC_COMBOP_AND_FETCH(nand,and,not,2,w,extu.w) ++ATOMIC_COMBOP_AND_FETCH(nand,and,not,4,l,mov) ++ ++.section .note.GNU-stack,"",%progbits ++.previous ++ + #endif /* ! __SH5__ */ --- gcc-4.4-4.4.5.orig/debian/patches/pr25509-doc.diff +++ gcc-4.4-4.4.5/debian/patches/pr25509-doc.diff @@ -0,0 +1,47 @@ +# DP: Backport of PR c/25509, new option -Wno-unused-result (documentation) + +gcc/ + +2009-07-10 Manuel López-Ibáñez + + PR 25509 + PR 40614 + * c.opt (Wunused-result): New. + * doc/invoke.texi: Document it. + * c-common.c (c_warn_unused_result): Use it. + +gcc/testsuite/ + +2009-07-10 Manuel López-Ibáñez + + PR 25509 + PR 40614 + * g++.dg/warn/unused-result1-Werror.c: New. + +Index: gcc/doc/invoke.texi +=================================================================== +--- a/src/gcc/doc/invoke.texi (revision 149591) ++++ b/src/gcc/doc/invoke.texi (working copy) +@@ -260,7 +260,7 @@ + -Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol + -Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol + -Wunused -Wunused-function -Wunused-label -Wunused-parameter @gol +--Wunused-value -Wunused-variable @gol ++-Wno-unused-result -Wunused-value -Wunused-variable @gol + -Wvariadic-macros -Wvla @gol + -Wvolatile-register-var -Wwrite-strings} + +@@ -3193,6 +3193,13 @@ + To suppress this warning use the @samp{unused} attribute + (@pxref{Variable Attributes}). + ++@item -Wno-unused-result ++@opindex Wunused-result ++@opindex Wno-unused-result ++Do not warn if a caller of a function marked with attribute ++@code{warn_unused_result} (@pxref{Variable Attributes}) does not use ++its return value. The default is @option{-Wunused-result}. ++ + @item -Wunused-variable + @opindex Wunused-variable + @opindex Wno-unused-variable --- gcc-4.4-4.4.5.orig/debian/patches/svn-updates-linaro.diff +++ gcc-4.4-4.4.5/debian/patches/svn-updates-linaro.diff @@ -0,0 +1,14 @@ +# DP: updates from the 4.4 branch upto 2010xxxx (r164607). + +last_updated() +{ + cat > ${dir}LAST_UPDATED < + + PR target/44626 + + Backport from mainline: + 2009-06-22 Nathan Sidwell + + * 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. + +--- a/src/gcc/config/arm/arm.c.~1~ 2010-02-18 14:13:03.000000000 +0100 ++++ b/src/gcc/config/arm/arm.c 2010-06-22 19:56:24.000000000 +0200 +@@ -13863,6 +13863,12 @@ arm_print_operand (FILE *stream, rtx x, + 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; + } +--- a/src/gcc/config/arm/arm.md.~1~ 2010-02-18 14:13:03.000000000 +0100 ++++ b/src/gcc/config/arm/arm.md 2010-06-22 19:56:24.000000000 +0200 +@@ -4984,18 +4984,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) +--- a/src/gcc/config/arm/constraints.md.~1~ 2010-02-17 17:16:16.000000000 +0100 ++++ b/src/gcc/config/arm/constraints.md 2010-06-22 19:56:24.000000000 +0200 +@@ -25,7 +25,7 @@ + ;; 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: +@@ -66,6 +66,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 +124,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 +--- a/src/gcc/config/arm/thumb2.md.~1~ 2010-02-24 15:50:43.000000000 +0100 ++++ b/src/gcc/config/arm/thumb2.md 2010-06-22 19:56:24.000000000 +0200 +@@ -225,7 +225,7 @@ + + (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"))] ++ (match_operand:SI 1 "general_operand" "rk ,I,K,j,mi,rk"))] + "TARGET_THUMB2 && ! TARGET_IWMMXT + && !(TARGET_HARD_FLOAT && TARGET_VFP) + && ( register_operand (operands[0], SImode) +--- a/src/gcc/config/arm/vfp.md.~1~ 2008-09-01 15:40:49.000000000 +0200 ++++ b/src/gcc/config/arm/vfp.md 2010-06-22 19:56:24.000000000 +0200 +@@ -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))" +@@ -88,7 +88,7 @@ + + (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"))] ++ (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,rk,r,*t,*t,*Uvi,*t"))] + "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT + && ( s_register_operand (operands[0], SImode) + || s_register_operand (operands[1], SImode))" --- gcc-4.4-4.4.5.orig/debian/patches/libjava-disable-plugin.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-disable-plugin.diff @@ -0,0 +1,13 @@ +# DP: Don't build the gcjwebplugin, even when configured with --enable-plugin + +--- a/src/libjava/configure.ac~ 2009-10-01 15:27:21.000000000 +0200 ++++ b/src/libjava/configure.ac 2009-10-19 00:10:43.000000000 +0200 +@@ -65,6 +65,8 @@ + esac], + [plugin_enabled=no] + ) ++# FIXME: don't build the plugin, this option collides with GCC plugin support ++plugin_enabled=no + + AC_ARG_ENABLE(gconf-peer, + AS_HELP_STRING([--enable-gconf-peer], --- gcc-4.4-4.4.5.orig/debian/patches/ada-nobiarch-check.diff +++ gcc-4.4-4.4.5/debian/patches/ada-nobiarch-check.diff @@ -0,0 +1,20 @@ +# DP: For biarch builds, disable the gnat testsuite for the non-default +# architecture (no biarch support in gnat yet). + +Index: b/src/gcc/Makefile.in +=================================================================== +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4510,7 +4510,11 @@ + if [ -f $${rootme}/../expect/expect ] ; then \ + TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ + export TCL_LIBRARY ; fi ; \ +- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) ++ if [ "$*" = gnat ]; then \ ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//;s/,-mabi=n32//'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ ++ fi; \ ++ $(RUNTEST) --tool $* $$runtestflags) + + $(patsubst %,%-subtargets,$(filter-out $(lang_checks_parallelized),$(lang_checks))): check-%-subtargets: + @echo check-$* --- gcc-4.4-4.4.5.orig/debian/patches/ada-link-lib.diff +++ gcc-4.4-4.4.5/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 + + * 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.5.orig/debian/patches/gcc-hash-style-both.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-d-lang.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-ice-hack.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcj-use-atomic-builtins-doc.diff +++ gcc-4.4-4.4.5/debian/patches/gcj-use-atomic-builtins-doc.diff @@ -0,0 +1,33 @@ +# DP: gcj: add option -fuse-atomic-builtins (documentation) + +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. + +Index: gcc/java/gcj.texi +=================================================================== +--- a/src/gcc/java/gcj.texi (revision 155104) ++++ b/src/gcc/java/gcj.texi (working copy) +@@ -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 --- gcc-4.4-4.4.5.orig/debian/patches/gcc-m68k-support-for-tls-backport.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-m68k-support-for-tls-backport.diff @@ -0,0 +1,1393 @@ +# DP: M68K TLS support, backport from the 4.5 branch. + +This is not the original patch from the repo -- it has been backported to gcc-4.4 and the ChangeLog updates commented out. Compare with: +http://git.infradead.org/gcc.git/commitdiff_plain/888c30d77dc1f47cea8339119f7322832fe7575a + +See also: +http://gcc.gnu.org/viewcvs?view=revision&revision=147654 + +The calls.c changes in Maxim's submission to the gcc-patches mailing list have not yet been committed. + +From: mkuvyrkov +Date: Mon, 18 May 2009 07:54:44 +0000 (+0000) +Subject: M68K TLS support. +X-Git-Url: http://git.infradead.org/gcc.git/commitdiff_plain/888c30d77dc1f47cea8339119f7322832fe7575a + + M68K TLS support. + * 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.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. + + +git-svn-id: svn://gcc.gnu.org/svn/gcc/trunk@147654 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +#diff --git a/gcc/ChangeLog b/gcc/ChangeLog +#index 1aa8d01..372df6b 100644 +#--- a/gcc/ChangeLog +#+++ b/gcc/ChangeLog +#@@ -1,3 +1,56 @@ +#+2009-05-18 Maxim Kuvyrkov +#+ +#+ M68K TLS support. +#+ * 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. +#+ +# 2009-05-18 Martin Jambor +# +# * ipa-prop.c (ipa_check_stmt_modifications): Removed. +diff --git a/gcc/config/m68k/constraints.md b/gcc/config/m68k/constraints.md +index 8be4237..a4885cd 100644 +--- a/src/gcc/config/m68k/constraints.md ++++ b/src/gcc/config/m68k/constraints.md +@@ -129,6 +129,11 @@ + (and (match_code "const_int") + (match_test "ival < -0x8000 || ival > 0x7FFF"))) + ++(define_constraint "Cu" ++ "16-bit offset for wrapped symbols" ++ (and (match_code "const") ++ (match_test "m68k_unwrap_symbol (op, false) != op"))) ++ + (define_constraint "CQ" + "Integers valid for mvq." + (and (match_code "const_int") +diff --git a/gcc/config/m68k/m68k-protos.h b/gcc/config/m68k/m68k-protos.h +index 1b91709..08f8a91 100644 +--- a/src/gcc/config/m68k/m68k-protos.h ++++ b/src/gcc/config/m68k/m68k-protos.h +@@ -59,13 +59,20 @@ extern bool m68k_illegitimate_symbolic_constant_p (rtx); + extern bool m68k_matches_q_p (rtx); + extern bool m68k_matches_u_p (rtx); + extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx); ++extern rtx m68k_legitimize_tls_address (rtx); ++extern bool m68k_tls_reference_p (rtx, bool); + extern int valid_dbcc_comparison_p_2 (rtx, enum machine_mode); + extern rtx m68k_libcall_value (enum machine_mode); + extern rtx m68k_function_value (const_tree, const_tree); + extern int emit_move_sequence (rtx *, enum machine_mode, rtx); + extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool); + extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool); ++extern void m68k_final_prescan_insn (rtx, rtx *, int); + ++/* Functions from m68k.c used in constraints.md. */ ++extern rtx m68k_unwrap_symbol (rtx, bool); ++ ++/* Functions from m68k.c used in genattrtab. */ + #ifdef HAVE_ATTR_cpu + extern enum attr_cpu m68k_sched_cpu; + extern enum attr_mac m68k_sched_mac; +diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c +index 3e46302..c5a668a 100644 +--- a/src/gcc/config/m68k/m68k.c ++++ b/src/gcc/config/m68k/m68k.c +@@ -46,6 +46,7 @@ along with GCC; see the file COPYING3. If not see + /* ??? Need to add a dependency between m68k.o and sched-int.h. */ + #include "sched-int.h" + #include "insn-codes.h" ++#include "ggc.h" + + enum reg_class regno_reg_class[] = + { +@@ -144,6 +145,7 @@ static tree m68k_handle_fndecl_attribute (tree *node, tree name, + #if M68K_HONOR_TARGET_STRICT_ALIGNMENT + static bool m68k_return_in_memory (const_tree, const_tree); + #endif ++static void m68k_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED; + + + /* Specify the identification number of the library being built */ +@@ -249,5 +252,13 @@ const char *m68k_library_id_string = "_current_shared_library_a5_offset_"; + #define TARGET_RETURN_IN_MEMORY m68k_return_in_memory + #endif ++ ++#ifdef HAVE_AS_TLS ++#undef TARGET_HAVE_TLS ++#define TARGET_HAVE_TLS (true) ++ ++#undef TARGET_ASM_OUTPUT_DWARF_DTPREL ++#define TARGET_ASM_OUTPUT_DWARF_DTPREL m68k_output_dwarf_dtprel ++#endif + + static const struct attribute_spec m68k_attribute_table[] = + { +@@ -1149,8 +1160,7 @@ m68k_expand_prologue (void) + current_frame.reg_mask, true, true)); + } + +- if (flag_pic +- && !TARGET_SEP_DATA ++ if (!TARGET_SEP_DATA + && crtl->uses_pic_offset_table) + insn = emit_insn (gen_load_got (pic_offset_table_rtx)); + } +@@ -1853,7 +1866,7 @@ m68k_illegitimate_symbolic_constant_p (rtx x) + && !offset_within_block_p (base, INTVAL (offset))) + return true; + } +- return false; ++ return m68k_tls_reference_p (x, false); + } + + /* Return true if X is a legitimate constant address that can reach +@@ -1881,7 +1894,7 @@ m68k_legitimate_constant_address_p (rtx x, unsigned int reach, bool strict_p) + return false; + } + +- return true; ++ return !m68k_tls_reference_p (x, false); + } + + /* Return true if X is a LABEL_REF for a jump table. Assume that unplaced +@@ -1948,15 +1961,17 @@ m68k_decompose_address (enum machine_mode mode, rtx x, + /* Check for GOT loads. These are (bd,An,Xn) addresses if + TARGET_68020 && flag_pic == 2, otherwise they are (d16,An) + addresses. */ +- if (flag_pic +- && GET_CODE (x) == PLUS +- && XEXP (x, 0) == pic_offset_table_rtx +- && (GET_CODE (XEXP (x, 1)) == SYMBOL_REF +- || GET_CODE (XEXP (x, 1)) == LABEL_REF)) ++ if (GET_CODE (x) == PLUS ++ && XEXP (x, 0) == pic_offset_table_rtx) + { +- address->base = XEXP (x, 0); +- address->offset = XEXP (x, 1); +- return true; ++ /* As we are processing a PLUS, do not unwrap RELOC32 symbols -- ++ they are invalid in this context. */ ++ if (m68k_unwrap_symbol (XEXP (x, 1), false) != XEXP (x, 1)) ++ { ++ address->base = XEXP (x, 0); ++ address->offset = XEXP (x, 1); ++ return true; ++ } + } + + /* The ColdFire FPU only accepts addressing modes 2-5. */ +@@ -2101,6 +2116,243 @@ m68k_matches_u_p (rtx x) + && !address.index); + } + ++/* Return GOT pointer. */ ++ ++static rtx ++m68k_get_gp (void) ++{ ++ if (pic_offset_table_rtx == NULL_RTX) ++ pic_offset_table_rtx = gen_rtx_REG (Pmode, PIC_REG); ++ ++ crtl->uses_pic_offset_table = 1; ++ ++ return pic_offset_table_rtx; ++} ++ ++/* M68K relocations, used to distinguish GOT and TLS relocations in UNSPEC ++ wrappers. */ ++enum m68k_reloc { RELOC_GOT, RELOC_TLSGD, RELOC_TLSLDM, RELOC_TLSLDO, ++ RELOC_TLSIE, RELOC_TLSLE }; ++ ++#define TLS_RELOC_P(RELOC) ((RELOC) != RELOC_GOT) ++ ++/* Wrap symbol X into unspec representing relocation RELOC. ++ BASE_REG - register that should be added to the result. ++ TEMP_REG - if non-null, temporary register. */ ++ ++static rtx ++m68k_wrap_symbol (rtx x, enum m68k_reloc reloc, rtx base_reg, rtx temp_reg) ++{ ++ bool use_x_p; ++ ++ use_x_p = (base_reg == pic_offset_table_rtx) ? TARGET_XGOT : TARGET_XTLS; ++ ++ if (TARGET_COLDFIRE && use_x_p) ++ /* When compiling with -mx{got, tls} switch the code will look like this: ++ ++ move.l @, ++ add.l , */ ++ { ++ /* Wrap X in UNSPEC_??? to tip m68k_output_addr_const_extra ++ to put @RELOC after reference. */ ++ x = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, x, GEN_INT (reloc)), ++ UNSPEC_RELOC32); ++ x = gen_rtx_CONST (Pmode, x); ++ ++ if (temp_reg == NULL) ++ { ++ gcc_assert (can_create_pseudo_p ()); ++ temp_reg = gen_reg_rtx (Pmode); ++ } ++ ++ emit_move_insn (temp_reg, x); ++ emit_insn (gen_addsi3 (temp_reg, temp_reg, base_reg)); ++ x = temp_reg; ++ } ++ else ++ { ++ x = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, x, GEN_INT (reloc)), ++ UNSPEC_RELOC16); ++ x = gen_rtx_CONST (Pmode, x); ++ ++ x = gen_rtx_PLUS (Pmode, base_reg, x); ++ } ++ ++ return x; ++} ++ ++/* Helper for m68k_unwrap_symbol. ++ Also, if unwrapping was successful (that is if (ORIG != )), ++ sets *RELOC_PTR to relocation type for the symbol. */ ++ ++static rtx ++m68k_unwrap_symbol_1 (rtx orig, bool unwrap_reloc32_p, ++ enum m68k_reloc *reloc_ptr) ++{ ++ if (GET_CODE (orig) == CONST) ++ { ++ rtx x; ++ enum m68k_reloc dummy; ++ ++ x = XEXP (orig, 0); ++ ++ if (reloc_ptr == NULL) ++ reloc_ptr = &dummy; ++ ++ /* Handle an addend. */ ++ if ((GET_CODE (x) == PLUS || GET_CODE (x) == MINUS) ++ && CONST_INT_P (XEXP (x, 1))) ++ x = XEXP (x, 0); ++ ++ if (GET_CODE (x) == UNSPEC) ++ { ++ switch (XINT (x, 1)) ++ { ++ case UNSPEC_RELOC16: ++ orig = XVECEXP (x, 0, 0); ++ *reloc_ptr = (enum m68k_reloc) INTVAL (XVECEXP (x, 0, 1)); ++ break; ++ ++ case UNSPEC_RELOC32: ++ if (unwrap_reloc32_p) ++ { ++ orig = XVECEXP (x, 0, 0); ++ *reloc_ptr = (enum m68k_reloc) INTVAL (XVECEXP (x, 0, 1)); ++ } ++ break; ++ ++ default: ++ break; ++ } ++ } ++ } ++ ++ return orig; ++} ++ ++/* Unwrap symbol from UNSPEC_RELOC16 and, if unwrap_reloc32_p, ++ UNSPEC_RELOC32 wrappers. */ ++ ++rtx ++m68k_unwrap_symbol (rtx orig, bool unwrap_reloc32_p) ++{ ++ return m68k_unwrap_symbol_1 (orig, unwrap_reloc32_p, NULL); ++} ++ ++/* Helper for m68k_final_prescan_insn. */ ++ ++static int ++m68k_final_prescan_insn_1 (rtx *x_ptr, void *data ATTRIBUTE_UNUSED) ++{ ++ rtx x = *x_ptr; ++ ++ if (m68k_unwrap_symbol (x, true) != x) ++ /* For rationale of the below, see comment in m68k_final_prescan_insn. */ ++ { ++ rtx plus; ++ ++ gcc_assert (GET_CODE (x) == CONST); ++ plus = XEXP (x, 0); ++ ++ if (GET_CODE (plus) == PLUS || GET_CODE (plus) == MINUS) ++ { ++ rtx unspec; ++ rtx addend; ++ ++ unspec = XEXP (plus, 0); ++ gcc_assert (GET_CODE (unspec) == UNSPEC); ++ addend = XEXP (plus, 1); ++ gcc_assert (CONST_INT_P (addend)); ++ ++ /* We now have all the pieces, rearrange them. */ ++ ++ /* Move symbol to plus. */ ++ XEXP (plus, 0) = XVECEXP (unspec, 0, 0); ++ ++ /* Move plus inside unspec. */ ++ XVECEXP (unspec, 0, 0) = plus; ++ ++ /* Move unspec to top level of const. */ ++ XEXP (x, 0) = unspec; ++ } ++ ++ return -1; ++ } ++ ++ return 0; ++} ++ ++/* Prescan insn before outputing assembler for it. */ ++ ++void ++m68k_final_prescan_insn (rtx insn ATTRIBUTE_UNUSED, ++ rtx *operands, int n_operands) ++{ ++ int i; ++ ++ /* Combine and, possibly, other optimizations may do good job ++ converting ++ (const (unspec [(symbol)])) ++ into ++ (const (plus (unspec [(symbol)]) ++ (const_int N))). ++ The problem with this is emitting @TLS or @GOT decorations. ++ The decoration is emitted when processing (unspec), so the ++ result would be "#symbol@TLSLE+N" instead of "#symbol+N@TLSLE". ++ ++ It seems that the easiest solution to this is to convert such ++ operands to ++ (const (unspec [(plus (symbol) ++ (const_int N))])). ++ Note, that the top level of operand remains intact, so we don't have ++ to patch up anything outside of the operand. */ ++ ++ for (i = 0; i < n_operands; ++i) ++ { ++ rtx op; ++ ++ op = operands[i]; ++ ++ for_each_rtx (&op, m68k_final_prescan_insn_1, NULL); ++ } ++} ++ ++/* Move X to a register and add REG_EQUAL note pointing to ORIG. ++ If REG is non-null, use it; generate new pseudo otherwise. */ ++ ++static rtx ++m68k_move_to_reg (rtx x, rtx orig, rtx reg) ++{ ++ rtx insn; ++ ++ if (reg == NULL_RTX) ++ { ++ gcc_assert (can_create_pseudo_p ()); ++ reg = gen_reg_rtx (Pmode); ++ } ++ ++ insn = emit_move_insn (reg, x); ++ /* Put a REG_EQUAL note on this insn, so that it can be optimized ++ by loop. */ ++ set_unique_reg_note (insn, REG_EQUAL, orig); ++ ++ return reg; ++} ++ ++/* Does the same as m68k_wrap_symbol, but returns a memory reference to ++ GOT slot. */ ++ ++static rtx ++m68k_wrap_symbol_into_got_ref (rtx x, enum m68k_reloc reloc, rtx temp_reg) ++{ ++ x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), temp_reg); ++ ++ x = gen_rtx_MEM (Pmode, x); ++ MEM_READONLY_P (x) = 1; ++ ++ return x; ++} ++ + /* Legitimize PIC addresses. If the address is already + position-independent, we return ORIG. Newly generated + position-independent addresses go to REG. If we need more +@@ -2152,42 +2404,15 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED, + { + gcc_assert (reg); + +- if (TARGET_COLDFIRE && TARGET_XGOT) +- /* When compiling with -mxgot switch the code for the above +- example will look like this: +- +- movel a5, a0 +- addl _foo@GOT, a0 +- movel a0@, a0 +- movel #12345, a0@ */ +- { +- rtx pic_offset; +- +- /* Wrap ORIG in UNSPEC_GOTOFF to tip m68k_output_addr_const_extra +- to put @GOT after reference. */ +- pic_offset = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, orig), +- UNSPEC_GOTOFF); +- pic_offset = gen_rtx_CONST (Pmode, pic_offset); +- emit_move_insn (reg, pic_offset); +- emit_insn (gen_addsi3 (reg, reg, pic_offset_table_rtx)); +- pic_ref = gen_rtx_MEM (Pmode, reg); +- } +- else +- pic_ref = gen_rtx_MEM (Pmode, +- gen_rtx_PLUS (Pmode, +- pic_offset_table_rtx, orig)); +- crtl->uses_pic_offset_table = 1; +- MEM_READONLY_P (pic_ref) = 1; +- emit_move_insn (reg, pic_ref); +- return reg; ++ pic_ref = m68k_wrap_symbol_into_got_ref (orig, RELOC_GOT, reg); ++ pic_ref = m68k_move_to_reg (pic_ref, orig, reg); + } + else if (GET_CODE (orig) == CONST) + { + rtx base; + + /* Make sure this has not already been legitimized. */ +- if (GET_CODE (XEXP (orig, 0)) == PLUS +- && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx) ++ if (m68k_unwrap_symbol (orig, true) != orig) + return orig; + + gcc_assert (reg); +@@ -2200,13 +2425,244 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED, + base == reg ? 0 : reg); + + if (GET_CODE (orig) == CONST_INT) +- return plus_constant (base, INTVAL (orig)); +- pic_ref = gen_rtx_PLUS (Pmode, base, orig); +- /* Likewise, should we set special REG_NOTEs here? */ ++ pic_ref = plus_constant (base, INTVAL (orig)); ++ else ++ pic_ref = gen_rtx_PLUS (Pmode, base, orig); + } ++ + return pic_ref; + } + ++/* The __tls_get_addr symbol. */ ++static GTY(()) rtx m68k_tls_get_addr; ++ ++/* Return SYMBOL_REF for __tls_get_addr. */ ++ ++static rtx ++m68k_get_tls_get_addr (void) ++{ ++ if (m68k_tls_get_addr == NULL_RTX) ++ m68k_tls_get_addr = init_one_libfunc ("__tls_get_addr"); ++ ++ return m68k_tls_get_addr; ++} ++ ++/* Return libcall result in A0 instead of usual D0. */ ++static bool m68k_libcall_value_in_a0_p = false; ++ ++/* Emit instruction sequence that calls __tls_get_addr. X is ++ the TLS symbol we are referencing and RELOC is the symbol type to use ++ (either TLSGD or TLSLDM). EQV is the REG_EQUAL note for the sequence ++ emitted. A pseudo register with result of __tls_get_addr call is ++ returned. */ ++ ++static rtx ++m68k_call_tls_get_addr (rtx x, rtx eqv, enum m68k_reloc reloc) ++{ ++ rtx a0; ++ rtx insns; ++ rtx dest; ++ ++ /* Emit the call sequence. */ ++ start_sequence (); ++ ++ /* FIXME: Unfortunately, emit_library_call_value does not ++ consider (plus (%a5) (const (unspec))) to be a good enough ++ operand for push, so it forces it into a register. The bad ++ thing about this is that combiner, due to copy propagation and other ++ optimizations, sometimes can not later fix this. As a consequence, ++ additional register may be allocated resulting in a spill. ++ For reference, see args processing loops in ++ calls.c:emit_library_call_value_1. ++ For testcase, see gcc.target/m68k/tls-{gd, ld}.c */ ++ x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), NULL_RTX); ++ ++ /* __tls_get_addr() is not a libcall, but emitting a libcall_value ++ is the simpliest way of generating a call. The difference between ++ __tls_get_addr() and libcall is that the result is returned in D0 ++ instead of A0. To workaround this, we use m68k_libcall_value_in_a0_p ++ which temporarily switches returning the result to A0. */ ++ ++ m68k_libcall_value_in_a0_p = true; ++ a0 = emit_library_call_value (m68k_get_tls_get_addr (), NULL_RTX, LCT_PURE, ++ Pmode, 1, x, Pmode); ++ m68k_libcall_value_in_a0_p = false; ++ ++ insns = get_insns (); ++ end_sequence (); ++ ++ gcc_assert (can_create_pseudo_p ()); ++ dest = gen_reg_rtx (Pmode); ++ emit_libcall_block (insns, dest, a0, eqv); ++ ++ return dest; ++} ++ ++/* The __tls_get_addr symbol. */ ++static GTY(()) rtx m68k_read_tp; ++ ++/* Return SYMBOL_REF for __m68k_read_tp. */ ++ ++static rtx ++m68k_get_m68k_read_tp (void) ++{ ++ if (m68k_read_tp == NULL_RTX) ++ m68k_read_tp = init_one_libfunc ("__m68k_read_tp"); ++ ++ return m68k_read_tp; ++} ++ ++/* Emit instruction sequence that calls __m68k_read_tp. ++ A pseudo register with result of __m68k_read_tp call is returned. */ ++ ++static rtx ++m68k_call_m68k_read_tp (void) ++{ ++ rtx a0; ++ rtx eqv; ++ rtx insns; ++ rtx dest; ++ ++ start_sequence (); ++ ++ /* __m68k_read_tp() is not a libcall, but emitting a libcall_value ++ is the simpliest way of generating a call. The difference between ++ __m68k_read_tp() and libcall is that the result is returned in D0 ++ instead of A0. To workaround this, we use m68k_libcall_value_in_a0_p ++ which temporarily switches returning the result to A0. */ ++ ++ /* Emit the call sequence. */ ++ m68k_libcall_value_in_a0_p = true; ++ a0 = emit_library_call_value (m68k_get_m68k_read_tp (), NULL_RTX, LCT_PURE, ++ Pmode, 0); ++ m68k_libcall_value_in_a0_p = false; ++ insns = get_insns (); ++ end_sequence (); ++ ++ /* Attach a unique REG_EQUIV, to allow the RTL optimizers to ++ share the m68k_read_tp result with other IE/LE model accesses. */ ++ eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const1_rtx), UNSPEC_RELOC32); ++ ++ gcc_assert (can_create_pseudo_p ()); ++ dest = gen_reg_rtx (Pmode); ++ emit_libcall_block (insns, dest, a0, eqv); ++ ++ return dest; ++} ++ ++/* Return a legitimized address for accessing TLS SYMBOL_REF X. ++ For explanations on instructions sequences see TLS/NPTL ABI for m68k and ++ ColdFire. */ ++ ++rtx ++m68k_legitimize_tls_address (rtx orig) ++{ ++ switch (SYMBOL_REF_TLS_MODEL (orig)) ++ { ++ case TLS_MODEL_GLOBAL_DYNAMIC: ++ orig = m68k_call_tls_get_addr (orig, orig, RELOC_TLSGD); ++ break; ++ ++ case TLS_MODEL_LOCAL_DYNAMIC: ++ { ++ rtx eqv; ++ rtx a0; ++ rtx x; ++ ++ /* Attach a unique REG_EQUIV, to allow the RTL optimizers to ++ share the LDM result with other LD model accesses. */ ++ eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx), ++ UNSPEC_RELOC32); ++ ++ a0 = m68k_call_tls_get_addr (orig, eqv, RELOC_TLSLDM); ++ ++ x = m68k_wrap_symbol (orig, RELOC_TLSLDO, a0, NULL_RTX); ++ ++ if (can_create_pseudo_p ()) ++ x = m68k_move_to_reg (x, orig, NULL_RTX); ++ ++ orig = x; ++ break; ++ } ++ ++ case TLS_MODEL_INITIAL_EXEC: ++ { ++ rtx a0; ++ rtx x; ++ ++ a0 = m68k_call_m68k_read_tp (); ++ ++ x = m68k_wrap_symbol_into_got_ref (orig, RELOC_TLSIE, NULL_RTX); ++ x = gen_rtx_PLUS (Pmode, x, a0); ++ ++ if (can_create_pseudo_p ()) ++ x = m68k_move_to_reg (x, orig, NULL_RTX); ++ ++ orig = x; ++ break; ++ } ++ ++ case TLS_MODEL_LOCAL_EXEC: ++ { ++ rtx a0; ++ rtx x; ++ ++ a0 = m68k_call_m68k_read_tp (); ++ ++ x = m68k_wrap_symbol (orig, RELOC_TLSLE, a0, NULL_RTX); ++ ++ if (can_create_pseudo_p ()) ++ x = m68k_move_to_reg (x, orig, NULL_RTX); ++ ++ orig = x; ++ break; ++ } ++ ++ default: ++ gcc_unreachable (); ++ } ++ ++ return orig; ++} ++ ++ ++/* Helper for m68k_tls_referenced_p. */ ++ ++static int ++m68k_tls_reference_p_1 (rtx *x_ptr, void *data ATTRIBUTE_UNUSED) ++{ ++ /* Note: this is not the same as m68k_tls_symbol_p. */ ++ if (GET_CODE (*x_ptr) == SYMBOL_REF) ++ return SYMBOL_REF_TLS_MODEL (*x_ptr) != 0 ? 1 : 0; ++ ++ /* Don't recurse into legitimate TLS references. */ ++ if (m68k_tls_reference_p (*x_ptr, true)) ++ return -1; ++ ++ return 0; ++} ++ ++/* If !LEGITIMATE_P, return true if X is a TLS symbol reference, ++ though illegitimate one. ++ If LEGITIMATE_P, return true if X is a legitimate TLS symbol reference. */ ++ ++bool ++m68k_tls_reference_p (rtx x, bool legitimate_p) ++{ ++ if (!TARGET_HAVE_TLS) ++ return false; ++ ++ if (!legitimate_p) ++ return for_each_rtx (&x, m68k_tls_reference_p_1, NULL) == 1 ? true : false; ++ else ++ { ++ enum m68k_reloc reloc = RELOC_GOT; ++ ++ return (m68k_unwrap_symbol_1 (x, true, &reloc) != x ++ && TLS_RELOC_P (reloc)); ++ } ++} ++ + + + #define USE_MOVQ(i) ((unsigned) ((i) + 128) <= 255) +@@ -3999,18 +4468,92 @@ print_operand (FILE *file, rtx op, int letter) + } + } + ++/* Return string for TLS relocation RELOC. */ ++ ++static const char * ++m68k_get_reloc_decoration (enum m68k_reloc reloc) ++{ ++ /* To my knowledge, !MOTOROLA assemblers don't support TLS. */ ++ gcc_assert (MOTOROLA || reloc == RELOC_GOT); ++ ++ switch (reloc) ++ { ++ case RELOC_GOT: ++ if (MOTOROLA) ++ { ++ if (flag_pic == 1 && TARGET_68020) ++ return "@GOT.w"; ++ else ++ return "@GOT"; ++ } ++ else ++ { ++ if (TARGET_68020) ++ { ++ switch (flag_pic) ++ { ++ case 1: ++ return ":w"; ++ case 2: ++ return ":l"; ++ default: ++ return ""; ++ } ++ } ++ } ++ ++ case RELOC_TLSGD: ++ return "@TLSGD"; ++ ++ case RELOC_TLSLDM: ++ return "@TLSLDM"; ++ ++ case RELOC_TLSLDO: ++ return "@TLSLDO"; ++ ++ case RELOC_TLSIE: ++ return "@TLSIE"; ++ ++ case RELOC_TLSLE: ++ return "@TLSLE"; ++ ++ default: ++ gcc_unreachable (); ++ } ++} ++ + /* m68k implementation of OUTPUT_ADDR_CONST_EXTRA. */ + + bool + m68k_output_addr_const_extra (FILE *file, rtx x) + { +- if (GET_CODE (x) != UNSPEC || XINT (x, 1) != UNSPEC_GOTOFF) +- return false; ++ if (GET_CODE (x) == UNSPEC) ++ { ++ switch (XINT (x, 1)) ++ { ++ case UNSPEC_RELOC16: ++ case UNSPEC_RELOC32: ++ output_addr_const (file, XVECEXP (x, 0, 0)); ++ fputs (m68k_get_reloc_decoration (INTVAL (XVECEXP (x, 0, 1))), file); ++ return true; + +- output_addr_const (file, XVECEXP (x, 0, 0)); +- /* ??? What is the non-MOTOROLA syntax? */ +- fputs ("@GOT", file); +- return true; ++ default: ++ break; ++ } ++ } ++ ++ return false; ++} ++ ++/* M68K implementation of TARGET_ASM_OUTPUT_DWARF_DTPREL. */ ++ ++static void ++m68k_output_dwarf_dtprel (FILE *file, int size, rtx x) ++{ ++ gcc_assert (size == 4); ++ fputs ("\t.long\t", file); ++ output_addr_const (file, x); ++ fputs ("@TLSLDO+0x8000", file); + } + + +@@ -4100,15 +4643,8 @@ print_operand_address (FILE *file, rtx addr) + else + { + if (address.offset) +- { +- output_addr_const (file, address.offset); +- if (flag_pic && address.base == pic_offset_table_rtx) +- { +- fprintf (file, "@GOT"); +- if (flag_pic == 1 && TARGET_68020) +- fprintf (file, ".w"); +- } +- } ++ output_addr_const (file, address.offset); ++ + putc ('(', file); + if (address.base) + fputs (M68K_REGNAME (REGNO (address.base)), file); +@@ -4141,19 +4677,7 @@ print_operand_address (FILE *file, rtx addr) + fputs (M68K_REGNAME (REGNO (address.base)), file); + fprintf (file, "@("); + if (address.offset) +- { +- output_addr_const (file, address.offset); +- if (address.base == pic_offset_table_rtx && TARGET_68020) +- switch (flag_pic) +- { +- case 1: +- fprintf (file, ":w"); break; +- case 2: +- fprintf (file, ":l"); break; +- default: +- break; +- } +- } ++ output_addr_const (file, address.offset); + } + /* Print the ",index" component, if any. */ + if (address.index) +@@ -4641,7 +5165,8 @@ m68k_libcall_value (enum machine_mode mode) + default: + break; + } +- return gen_rtx_REG (mode, D0_REG); ++ ++ return gen_rtx_REG (mode, m68k_libcall_value_in_a0_p ? A0_REG : D0_REG); + } + + rtx +@@ -4907,9 +5432,8 @@ sched_attr_op_type (rtx insn, bool opx_p, bool address_p) + return OP_TYPE_IMM_L; + + default: +- if (GET_CODE (op) == SYMBOL_REF) +- /* ??? Just a guess. Probably we can guess better using length +- attribute of the instructions. */ ++ if (symbolic_operand (m68k_unwrap_symbol (op, false), VOIDmode)) ++ /* Just a guess. */ + return OP_TYPE_IMM_W; + + return OP_TYPE_IMM_L; +@@ -5854,3 +6378,5 @@ m68k_sched_indexed_address_bypass_p (rtx pro, rtx con) + return 0; + } + } ++ ++#include "gt-m68k.h" +diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h +index e91ab00..2d3b592 100644 +--- a/src/gcc/config/m68k/m68k.h ++++ b/src/gcc/config/m68k/m68k.h +@@ -750,7 +750,8 @@ __transfer_from_trampoline () \ + + #define LEGITIMATE_PIC_OPERAND_P(X) \ + (!symbolic_operand (X, VOIDmode) \ +- || (TARGET_PCREL && REG_STRICT_P)) ++ || (TARGET_PCREL && REG_STRICT_P) \ ++ || m68k_tls_reference_p (X, true)) + + #define REG_OK_FOR_BASE_P(X) \ + m68k_legitimate_base_reg_p (X, REG_STRICT_P) +@@ -967,6 +968,9 @@ do { if (cc_prev_status.flags & CC_IN_68881) \ + assemble_name ((FILE), (NAME)), \ + fprintf ((FILE), ",%u\n", (int)(ROUNDED))) + ++#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \ ++ m68k_final_prescan_insn (INSN, OPVEC, NOPERANDS) ++ + /* On the 68000, we use several CODE characters: + '.' for dot needed in Motorola-style opcode names. + '-' for an operand pushing on the stack: +diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md +index 33058fa..037bb37 100644 +--- a/src/gcc/config/m68k/m68k.md ++++ b/src/gcc/config/m68k/m68k.md +@@ -116,7 +116,8 @@ + (UNSPEC_GOT 3) + (UNSPEC_IB 4) + (UNSPEC_TIE 5) +- (UNSPEC_GOTOFF 6) ++ (UNSPEC_RELOC16 6) ++ (UNSPEC_RELOC32 7) + ]) + + ;; UNSPEC_VOLATILE usage: +@@ -869,7 +870,41 @@ + { + rtx tmp, base, offset; + +- if (flag_pic && !TARGET_PCREL && symbolic_operand (operands[1], SImode)) ++ /* Recognize the case where operand[1] is a reference to thread-local ++ data and load its address to a register. */ ++ if (!TARGET_PCREL && m68k_tls_reference_p (operands[1], false)) ++ { ++ rtx tmp = operands[1]; ++ rtx addend = NULL; ++ ++ if (GET_CODE (tmp) == CONST && GET_CODE (XEXP (tmp, 0)) == PLUS) ++ { ++ addend = XEXP (XEXP (tmp, 0), 1); ++ tmp = XEXP (XEXP (tmp, 0), 0); ++ } ++ ++ gcc_assert (GET_CODE (tmp) == SYMBOL_REF); ++ gcc_assert (SYMBOL_REF_TLS_MODEL (tmp) != 0); ++ ++ tmp = m68k_legitimize_tls_address (tmp); ++ ++ if (addend) ++ { ++ if (!REG_P (tmp)) ++ { ++ rtx reg; ++ ++ reg = gen_reg_rtx (Pmode); ++ emit_move_insn (reg, tmp); ++ tmp = reg; ++ } ++ ++ tmp = gen_rtx_PLUS (SImode, tmp, addend); ++ } ++ ++ operands[1] = tmp; ++ } ++ else if (flag_pic && !TARGET_PCREL && symbolic_operand (operands[1], SImode)) + { + /* The source is an address which requires PIC relocation. + Call legitimize_pic_address with the source, mode, and a relocation +@@ -2428,9 +2463,9 @@ + "* return output_addsi3 (operands);") + + (define_insn_and_split "*addsi3_5200" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=mr,mr,a,m,r, ?a, ?a,?a,?a") +- (plus:SI (match_operand:SI 1 "general_operand" "%0, 0, 0,0,0, a, a, r, a") +- (match_operand:SI 2 "general_src_operand" " I, L, J,d,mrKi,Cj, r, a, J")))] ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=mr,mr,a, m,r, ?a, ?a,?a,?a") ++ (plus:SI (match_operand:SI 1 "general_operand" "%0, 0, 0, 0,0, a, a, r, a") ++ (match_operand:SI 2 "general_src_operand" " I, L, JCu,d,mrKi,Cj, r, a, JCu")))] + "TARGET_COLDFIRE" + { + switch (which_alternative) +@@ -2472,9 +2507,9 @@ + (plus:SI (match_dup 0) + (match_dup 1)))] + "" +- [(set_attr "type" "aluq_l,aluq_l,lea,alu_l,alu_l,*,lea,lea,lea") +- (set_attr "opy" "2,2,*,2,2,*,*,*,*") +- (set_attr "opy_type" "*,*,mem5,*,*,*,mem6,mem6,mem5")]) ++ [(set_attr "type" "aluq_l,aluq_l,lea, alu_l,alu_l,*,lea, lea, lea") ++ (set_attr "opy" "2, 2, *, 2, 2, *,*, *, *") ++ (set_attr "opy_type" "*, *, mem5,*, *, *,mem6,mem6,mem5")]) + + (define_insn "" + [(set (match_operand:SI 0 "nonimmediate_operand" "=a") +diff --git a/gcc/config/m68k/m68k.opt b/gcc/config/m68k/m68k.opt +index b0d3b3c..d5aa9fa 100644 +--- a/src/gcc/config/m68k/m68k.opt ++++ b/src/gcc/config/m68k/m68k.opt +@@ -182,3 +182,7 @@ Tune for the specified target CPU or architecture + mxgot + Target Report Mask(XGOT) + Support more than 8192 GOT entries on ColdFire ++ ++mxtls ++Target Report Mask(XTLS) ++Support TLS segment larger than 64K +diff --git a/gcc/config/m68k/predicates.md b/gcc/config/m68k/predicates.md +index 417989f..6ca261f 100644 +--- a/src/gcc/config/m68k/predicates.md ++++ b/src/gcc/config/m68k/predicates.md +@@ -135,7 +135,9 @@ + (match_code "sign_extend,zero_extend")) + + ;; Returns true if OP is either a symbol reference or a sum of a +-;; symbol reference and a constant. ++;; symbol reference and a constant. This predicate is for "raw" ++;; symbol references not yet processed by legitimize*_address, ++;; hence we do not handle UNSPEC_{XGOT, TLS, XTLS} here. + + (define_predicate "symbolic_operand" + (match_code "symbol_ref,label_ref,const") +diff --git a/gcc/configure b/gcc/configure +index 6033f33..4bab41d 100755 +--- a/src/gcc/configure ++++ b/src/gcc/configure +@@ -21984,6 +21984,22 @@ x: + tls_first_minor=16 + tls_as_opt='-32 --fatal-warnings' + ;; ++ m68k-*-*) ++ conftest_s=' ++ .section .tdata,"awT",@progbits ++x: ++ .word 2 ++ .text ++foo: ++ move.l x@TLSGD(%a5),%a0 ++ move.l x@TLSLDM(%a5),%a0 ++ move.l x@TLSLDO(%a5),%a0 ++ move.l x@TLSIE(%a5),%a0 ++ move.l x@TLSLE(%a5),%a0' ++ tls_first_major=2 ++ tls_first_minor=19 ++ tls_as_opt='--fatal-warnings' ++ ;; + powerpc-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +diff --git a/gcc/configure.ac b/gcc/configure.ac +index 5f9276c..80f9422 100644 +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -2570,6 +2570,22 @@ x: + tls_first_minor=16 + tls_as_opt='-32 --fatal-warnings' + ;; ++ m68k-*-*) ++ conftest_s=' ++ .section .tdata,"awT",@progbits ++x: ++ .word 2 ++ .text ++foo: ++ move.l x@TLSGD(%a5),%a0 ++ move.l x@TLSLDM(%a5),%a0 ++ move.l x@TLSLDO(%a5),%a0 ++ move.l x@TLSIE(%a5),%a0 ++ move.l x@TLSLE(%a5),%a0' ++ tls_first_major=2 ++ tls_first_minor=19 ++ tls_as_opt='--fatal-warnings' ++ ;; + powerpc-*-*) + conftest_s=' + .section ".tdata","awT",@progbits +#diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog +#index 545fb82..994360b 100644 +#--- a/gcc/testsuite/ChangeLog +#+++ b/gcc/testsuite/ChangeLog +#@@ -1,3 +1,16 @@ +#+2009-05-18 Maxim Kuvyrkov +#+ +#+ * 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. +#+ +# 2009-05-18 Martin Jambor +# +# * gcc.dg/ipa/modif-1.c: Do not check for unmodified int parameter. +diff --git a/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c +new file mode 100644 +index 0000000..2a4900b +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic -mxgot" } */ ++/* { dg-final { scan-assembler "#foo@TLSGD,\%\[ad\]\[0-7\]" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++ ++extern int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-gd.c b/gcc/testsuite/gcc.target/m68k/tls-gd.c +new file mode 100644 +index 0000000..2b69fbd +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-gd.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic" } */ ++/* { dg-final { scan-assembler "foo@TLSGD\\(\%a5\\)" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++ ++extern int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c +new file mode 100644 +index 0000000..d3fbfda +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -mxgot" } */ ++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */ ++/* { dg-final { scan-assembler "#foo@TLSIE,\%\[ad\]\[0-7\]" } } */ ++ ++extern int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ie.c b/gcc/testsuite/gcc.target/m68k/tls-ie.c +new file mode 100644 +index 0000000..2661f9f +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ie.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2" } */ ++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */ ++/* { dg-final { scan-assembler "foo@TLSIE\\(\%a5\\)" } } */ ++ ++extern int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c +new file mode 100644 +index 0000000..4817de0 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic -mxgot -mxtls" } */ ++/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c +new file mode 100644 +index 0000000..f95f719 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic -mxgot" } */ ++/* { dg-final { scan-assembler "#foo@TLSLDM,\%\[ad\]\[0-7\]" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c +new file mode 100644 +index 0000000..1bc3eaf +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic -mxtls" } */ ++/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++/* { dg-final { scan-assembler "#foo@TLSLDO,\%\[ad\]\[0-7\]" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-ld.c b/gcc/testsuite/gcc.target/m68k/tls-ld.c +new file mode 100644 +index 0000000..556a117 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-ld.c +@@ -0,0 +1,14 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -fpic" } */ ++/* { dg-final { scan-assembler "foo@TLSLDM\\(\%a5\\)" } } */ ++/* { dg-final { scan-assembler "bsr.l __tls_get_addr@PLTPC" } } */ ++/* { dg-final { scan-assembler "lea \\(foo@TLSLDO,\%a0\\)" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c b/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c +new file mode 100644 +index 0000000..9006115 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-le-xtls.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2 -mxtls" } */ ++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */ ++/* { dg-final { scan-assembler "#foo@TLSLE,\%\[ad\]\[0-7\]" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff --git a/gcc/testsuite/gcc.target/m68k/tls-le.c b/gcc/testsuite/gcc.target/m68k/tls-le.c +new file mode 100644 +index 0000000..1c0eab2 +--- /dev/null ++++ b/src/gcc/testsuite/gcc.target/m68k/tls-le.c +@@ -0,0 +1,13 @@ ++/* { dg-do compile } */ ++/* { dg-skip-if "" { ! *-linux-* } { "*" } { "" } } */ ++/* { dg-options "-O2" } */ ++/* { dg-final { scan-assembler "jsr __m68k_read_tp" } } */ ++/* { dg-final { scan-assembler "lea \\(foo@TLSLE,\%a0\\)" } } */ ++ ++static int __thread foo; ++ ++int * ++bar (void) ++{ ++ return &foo; ++} +diff -pruN gcc-4.4.4/gcc/config/m68k/m68k.h gcc-4.4.4-ft/gcc/config/m68k/m68k.h +--- a/src/gcc/config/m68k/m68k.h 2010-06-16 12:44:04.855797367 +1000 ++++ b/src/gcc/config/m68k/m68k.h 2010-06-16 12:30:52.000000000 +1000 +@@ -778,7 +778,10 @@ __transfer_from_trampoline () \ + #define COPY_ONCE(Y) if (!copied) { Y = copy_rtx (Y); copied = ch = 1; } + #define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) \ + { register int ch = (X) != (OLDX); \ +- if (GET_CODE (X) == PLUS) \ ++ if (HAVE_AS_TLS && (GET_CODE (X) == SYMBOL_REF) && \ ++ (SYMBOL_REF_TLS_MODEL (X) != 0)) \ ++ m68k_legitimize_tls_address (X); \ ++ else if (GET_CODE (X) == PLUS) \ + { int copied = 0; \ + if (GET_CODE (XEXP (X, 0)) == MULT) \ + { COPY_ONCE (X); XEXP (X, 0) = force_operand (XEXP (X, 0), 0);} \ --- gcc-4.4-4.4.5.orig/debian/patches/boehm-gc-getnprocs.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-hash-style-gnu.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/svn-class-updates.diff +++ gcc-4.4-4.4.5/debian/patches/svn-class-updates.diff @@ -0,0 +1,26 @@ +# DP: updated class files from the 4.4 branch upto yyyymmdd. + +dir=gcc-4_4-branch +tag=gcc_4_4_4_release +branch=gcc-4_4-branch + +tmplist=files$$ + +svn diff --summarize \ + svn://gcc.gnu.org/svn/gcc/tags/$tag \ + svn://gcc.gnu.org/svn/gcc/branches/$branch \ + | grep '\.class$' > $tmplist + +sed -n '/^[AM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > neworchanged.list +sed -n '/^[D].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > removed.list +sed -n '/^[^ADM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \ + > unknown.list + +echo "new or changed: $(wc -l neworchanged.list | cut '-d ' -f1), removed $(wc -l removed.list | cut '-d ' -f1): , unknown: $(wc -l unknown.list | cut '-d ' -f1)" +tar -c -J -f java-class-files.tar.xz -C $dir -T neworchanged.list +uuencode java-class-files.tar.xz java-class-files.tar.xz > java-class-files.tar.xz.uue + +rm -f $tmplist neworchanged.list removed.list unknown.list + --- gcc-4.4-4.4.5.orig/debian/patches/svn-updates.diff +++ gcc-4.4-4.4.5/debian/patches/svn-updates.diff @@ -0,0 +1,679 @@ +# DP: updates from the 4.4 branch upto 20101011 (r165300). + +last_updated() +{ + cat > ${dir}LAST_UPDATED < ++ ++ PR target/45820 ++ * config/pa/pa.c (pa_secondary_reload): Handle symbolic operands ++ earlier. ++ ++2010-10-01 Jakub Jelinek ++ ++ Backport from mainline ++ 2010-09-30 Jakub Jelinek ++ ++ PR target/45843 ++ * config/i386/i386.c (ix86_gimplify_va_arg): Use ++ INTVAL (XEXP (slot, 1)) as prev_size. ++ ++ 2010-06-21 Jakub Jelinek ++ ++ PR target/44575 ++ * config/i386/i386.c (ix86_gimplify_va_arg): When copying ++ va_arg from a set of register save slots into a temporary, ++ if the container is bigger than type size, do the copying ++ using smaller mode or using memcpy. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: gcc/testsuite/gcc.c-torture/execute/pr44575.c +=================================================================== +--- a/src/gcc/testsuite/gcc.c-torture/execute/pr44575.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr44575.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,49 @@ ++/* PR target/44575 */ ++ ++#include ++ ++int fails = 0; ++struct S { float a[3]; }; ++struct S a[5]; ++ ++void ++check (int z, ...) ++{ ++ struct S arg, *p; ++ va_list ap; ++ int j = 0, k = 0; ++ int i; ++ va_start (ap, z); ++ for (i = 2; i < 4; ++i) ++ { ++ p = 0; ++ j++; ++ k += 2; ++ switch ((z << 4) | i) ++ { ++ case 0x12: ++ case 0x13: ++ p = &a[2]; ++ arg = va_arg (ap, struct S); ++ break; ++ default: ++ ++fails; ++ break; ++ } ++ if (p && p->a[2] != arg.a[2]) ++ ++fails; ++ if (fails) ++ break; ++ } ++ va_end (ap); ++} ++ ++int ++main () ++{ ++ a[2].a[2] = -49026; ++ check (1, a[2], a[2]); ++ if (fails) ++ abort (); ++ return 0; ++} +Index: gcc/testsuite/gcc.dg/torture/pr41555.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr41555.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr41555.c (.../branches/gcc-4_4-branch) +@@ -1,5 +1,6 @@ + /* { dg-do run } */ + /* { dg-options "-std=c99" } */ ++/* { dg-require-effective-target stdint_types } */ + + #include + #include +Index: gcc/testsuite/gcc.dg/torture/pr45678-1.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr45678-1.c (.../branches/gcc-4_4-branch) +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */ + + typedef float V __attribute__ ((vector_size (16))); + V g; +Index: gcc/testsuite/gcc.dg/torture/pr45678-2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gcc.dg/torture/pr45678-2.c (.../branches/gcc-4_4-branch) +@@ -1,4 +1,5 @@ + /* { dg-do run } */ ++/* { dg-options "-fno-common" { target { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } } } */ + + typedef float V __attribute__ ((vector_size (16))); + V g; +Index: gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c +=================================================================== +--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c (.../branches/gcc-4_4-branch) +@@ -21,27 +21,27 @@ + - One for each subroutine inlined into main, that's 3. + - One for earch subroutine inline into the out of line instances + of third, second and first. */ +-/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_inlined_subroutine" 6 } } */ ++/* { dg-final { scan-assembler-times "\\(DIE \\(\[^\n\]*\\) DW_TAG_inlined_subroutine" 6 } } */ + + /* Likewise we should have 6 DW_TAG_lexical_block DIEs: + - One for each subroutine inlined into main, so that's 3. + - One for each subroutine inlined in the out of line instances + of third, second and first, that's 3. + */ +-/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_lexical_block" 6 } } */ ++/* { dg-final { scan-assembler-times "\\(DIE \\(\[^\n\]*\\) DW_TAG_lexical_block" 6 } } */ + + + /* There are 3 DW_AT_inline attributes: one per abstract inline instance. + The value of the attribute must be 0x3, meaning the function was + actually inlined. */ +-/* { dg-final { scan-assembler-times "byte.*?0x3.*? DW_AT_inline" 3 } } */ ++/* { dg-final { scan-assembler-times "(?:byte|data1)\[^\n\]*0x3\[^\n\]* DW_AT_inline" 3 } } */ + ++volatile int *a; + + inline void + third (int arg3) + { + int var3 = arg3; +- int* a = 0; + a[0] = var3; + } + +Index: gcc/testsuite/ChangeLog +=================================================================== +--- a/src/gcc/testsuite/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,47 @@ ++2010-10-10 John David Anglin ++ ++ Backport from mainline ++ 2010-09-04 Andreas Schwab ++ ++ * gcc.dg/debug/dwarf2/inline2.c: Replace ".*" by "\[^\n\]*". ++ ++ 2010-03-24 Jakub Jelinek ++ ++ * gcc.dg/debug/dwarf2/inline2.c (third): Make a a global var ++ and add volatile keyword. ++ ++ 2009-11-23 Steve Ellcey ++ ++ * gcc.dg/debug/dwarf2/inline2.c: Modify scan. ++ ++2010-10-10 John David Anglin ++ ++ * gcc.dg/torture/pr41555.c: Require stdint types. ++ ++2010-10-06 Jerry DeLisle ++ ++ Backport from mainline ++ PR libfortran/45710 ++ * gfortran.dg/namelist_65.f90: New test. ++ ++2010-10-04 John David Anglin ++ ++ * gcc.dg/torture/pr45678-1.c: Add -fno-common to options on 32-bit ++ hppa*-*-hpux*. ++ * gcc.dg/torture/pr45678-2.c: Likewise. ++ ++2010-10-01 Jakub Jelinek ++ ++ Backport from mainline ++ 2010-09-30 Jakub Jelinek ++ ++ * g++.dg/torture/pr45843.C: New test. ++ ++ 2010-06-21 Jakub Jelinek ++ ++ PR target/44575 ++ * gcc.c-torture/execute/pr44575.c: New test. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: gcc/testsuite/g++.dg/torture/pr45843.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/torture/pr45843.C (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/g++.dg/torture/pr45843.C (.../branches/gcc-4_4-branch) +@@ -0,0 +1,28 @@ ++// PR target/45843 ++// { dg-do run } ++ ++#include ++ ++extern "C" void abort (); ++struct S { struct T { } a[14]; char b; }; ++struct S arg, s; ++ ++void ++foo (int z, ...) ++{ ++ char c; ++ va_list ap; ++ va_start (ap, z); ++ c = 'a'; ++ arg = va_arg (ap, struct S); ++ if (c != 'a') ++ abort (); ++ va_end (ap); ++} ++ ++int ++main () ++{ ++ foo (1, s); ++ return 0; ++} +Index: gcc/testsuite/gfortran.dg/namelist_65.f90 +=================================================================== +--- a/src/gcc/testsuite/gfortran.dg/namelist_65.f90 (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/testsuite/gfortran.dg/namelist_65.f90 (.../branches/gcc-4_4-branch) +@@ -0,0 +1,22 @@ ++! { dg-do run } ++! { dg-options "-std=gnu" } ++! PR45710 Adjust format/padding for WRITE of NAMELIST group to internal file ++program oneline ++real :: a=1,b=2,c=3,d=4 ++namelist /nl1/ a,b,c ++parameter(ilines=5) ++character(len=80) :: out(ilines) ++ ++! fill array out with @ ++do i=1,len(out) ++ out(:)(i:i)='@' ++enddo ++ ++write(out,nl1) ++if (out(1).ne."&NL1") call abort ++if (out(2).ne." A= 1.0000000 ,") call abort ++if (out(3).ne." B= 2.0000000 ,") call abort ++if (out(4).ne." C= 3.0000000 ,") call abort ++if (out(5).ne." /") call abort ++ ++end program oneline +Index: gcc/config/i386/i386.c +=================================================================== +--- a/src/gcc/config/i386/i386.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/config/i386/i386.c (.../branches/gcc-4_4-branch) +@@ -6956,7 +6956,7 @@ + } + if (need_temp) + { +- int i; ++ int i, prev_size = 0; + tree temp = create_tmp_var (type, "va_arg_tmp"); + + /* addr = &temp; */ +@@ -6968,14 +6968,32 @@ + rtx slot = XVECEXP (container, 0, i); + rtx reg = XEXP (slot, 0); + enum machine_mode mode = GET_MODE (reg); +- tree piece_type = lang_hooks.types.type_for_mode (mode, 1); +- tree addr_type = build_pointer_type (piece_type); +- tree daddr_type = build_pointer_type_for_mode (piece_type, +- ptr_mode, true); ++ tree piece_type; ++ tree addr_type; ++ tree daddr_type; + tree src_addr, src; + int src_offset; + tree dest_addr, dest; ++ int cur_size = GET_MODE_SIZE (mode); + ++ gcc_assert (prev_size <= INTVAL (XEXP (slot, 1))); ++ prev_size = INTVAL (XEXP (slot, 1)); ++ if (prev_size + cur_size > size) ++ { ++ cur_size = size - prev_size; ++ mode = mode_for_size (cur_size * BITS_PER_UNIT, MODE_INT, 1); ++ if (mode == BLKmode) ++ mode = QImode; ++ } ++ piece_type = lang_hooks.types.type_for_mode (mode, 1); ++ if (mode == GET_MODE (reg)) ++ addr_type = build_pointer_type (piece_type); ++ else ++ addr_type = build_pointer_type_for_mode (piece_type, ptr_mode, ++ true); ++ daddr_type = build_pointer_type_for_mode (piece_type, ptr_mode, ++ true); ++ + if (SSE_REGNO_P (REGNO (reg))) + { + src_addr = sse_addr; +@@ -6989,14 +7007,26 @@ + src_addr = fold_convert (addr_type, src_addr); + src_addr = fold_build2 (POINTER_PLUS_EXPR, addr_type, src_addr, + size_int (src_offset)); +- src = build_va_arg_indirect_ref (src_addr); + + dest_addr = fold_convert (daddr_type, addr); + dest_addr = fold_build2 (POINTER_PLUS_EXPR, daddr_type, dest_addr, +- size_int (INTVAL (XEXP (slot, 1)))); +- dest = build_va_arg_indirect_ref (dest_addr); ++ size_int (prev_size)); ++ if (cur_size == GET_MODE_SIZE (mode)) ++ { ++ src = build_va_arg_indirect_ref (src_addr); ++ dest = build_va_arg_indirect_ref (dest_addr); + +- gimplify_assign (dest, src, pre_p); ++ gimplify_assign (dest, src, pre_p); ++ } ++ else ++ { ++ tree copy ++ = build_call_expr (implicit_built_in_decls[BUILT_IN_MEMCPY], ++ 3, dest_addr, src_addr, ++ size_int (cur_size)); ++ gimplify_and_add (copy, pre_p); ++ } ++ prev_size += cur_size; + } + } + +Index: gcc/config/pa/pa.c +=================================================================== +--- a/src/gcc/config/pa/pa.c (.../tags/gcc_4_4_5_release) ++++ b/src/gcc/config/pa/pa.c (.../branches/gcc-4_4-branch) +@@ -5699,7 +5699,7 @@ + pa_secondary_reload (bool in_p, rtx x, enum reg_class rclass, + enum machine_mode mode, secondary_reload_info *sri) + { +- int is_symbolic, regno; ++ int regno; + + /* Handle the easy stuff first. */ + if (rclass == R1_REGS) +@@ -5732,6 +5732,23 @@ + return NO_REGS; + } + ++ /* Secondary reloads of symbolic operands require %r1 as a scratch ++ register when we're generating PIC code and when the operand isn't ++ readonly. */ ++ if (symbolic_expression_p (x)) ++ { ++ if (GET_CODE (x) == HIGH) ++ x = XEXP (x, 0); ++ ++ if (flag_pic || !read_only_operand (x, VOIDmode)) ++ { ++ gcc_assert (mode == SImode || mode == DImode); ++ sri->icode = (mode == SImode ? CODE_FOR_reload_insi_r1 ++ : CODE_FOR_reload_indi_r1); ++ return NO_REGS; ++ } ++ } ++ + /* Profiling showed the PA port spends about 1.3% of its compilation + time in true_regnum from calls inside pa_secondary_reload_class. */ + if (regno >= FIRST_PSEUDO_REGISTER || GET_CODE (x) == SUBREG) +@@ -5790,49 +5807,8 @@ + if (regno >= 0 && regno < FIRST_PSEUDO_REGISTER + && (REGNO_REG_CLASS (regno) == SHIFT_REGS + && FP_REG_CLASS_P (rclass))) +- { +- sri->icode = in_p ? reload_in_optab[mode] : reload_out_optab[mode]; +- return NO_REGS; +- } ++ sri->icode = in_p ? reload_in_optab[mode] : reload_out_optab[mode]; + +- /* Secondary reloads of symbolic operands require %r1 as a scratch +- register when we're generating PIC code and when the operand isn't +- readonly. */ +- if (GET_CODE (x) == HIGH) +- x = XEXP (x, 0); +- +- /* Profiling has showed GCC spends about 2.6% of its compilation +- time in symbolic_operand from calls inside pa_secondary_reload_class. +- So, we use an inline copy to avoid useless work. */ +- switch (GET_CODE (x)) +- { +- rtx op; +- +- case SYMBOL_REF: +- is_symbolic = !SYMBOL_REF_TLS_MODEL (x); +- break; +- case LABEL_REF: +- is_symbolic = 1; +- break; +- case CONST: +- op = XEXP (x, 0); +- is_symbolic = (((GET_CODE (XEXP (op, 0)) == SYMBOL_REF +- && !SYMBOL_REF_TLS_MODEL (XEXP (op, 0))) +- || GET_CODE (XEXP (op, 0)) == LABEL_REF) +- && GET_CODE (XEXP (op, 1)) == CONST_INT); +- break; +- default: +- is_symbolic = 0; +- break; +- } +- +- if (is_symbolic && (flag_pic || !read_only_operand (x, VOIDmode))) +- { +- gcc_assert (mode == SImode || mode == DImode); +- sri->icode = (mode == SImode ? CODE_FOR_reload_insi_r1 +- : CODE_FOR_reload_indi_r1); +- } +- + return NO_REGS; + } + +Index: configure.ac +=================================================================== +--- a/src/configure.ac (.../tags/gcc_4_4_5_release) ++++ b/src/configure.ac (.../branches/gcc-4_4-branch) +@@ -319,7 +319,7 @@ + # Check for target supported by gold. + case "${target}" in + i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-*) +- configdirs="`echo " ${configdirs} " | sed -e 's/ ld / gold /'`" ++ configdirs=`echo " ${configdirs} " | sed -e 's/ ld / gold /'` + ;; + esac + fi +Index: intl/configure +=================================================================== +--- a/src/intl/configure (.../tags/gcc_4_4_5_release) ++++ b/src/intl/configure (.../branches/gcc-4_4-branch) +@@ -8560,7 +8560,7 @@ + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` +- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. +Index: intl/ChangeLog +=================================================================== +--- a/src/intl/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/intl/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,8 @@ ++2010-10-02 Ralf Wildenhues ++ ++ PR bootstrap/44621 ++ * configure: Regenerate. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: libgfortran/ChangeLog +=================================================================== +--- a/src/libgfortran/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/libgfortran/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,10 @@ ++2010-10-06 Jerry DeLisle ++ ++ Backport from mainline: ++ PR libfortran/45710 ++ * io/write.c (namelist_write_newline): Pad character array internal ++ unit records with spaces. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: libgfortran/io/write.c +=================================================================== +--- a/src/libgfortran/io/write.c (.../tags/gcc_4_4_5_release) ++++ b/src/libgfortran/io/write.c (.../branches/gcc-4_4-branch) +@@ -1194,10 +1194,15 @@ + if (is_array_io (dtp)) + { + gfc_offset record; +- int finished, length; ++ int finished; ++ char *p; ++ int length = dtp->u.p.current_unit->bytes_left; + +- length = (int) dtp->u.p.current_unit->bytes_left; +- ++ p = write_block (dtp, length); ++ if (p == NULL) ++ return; ++ memset (p, ' ', length); ++ + /* Now that the current record has been padded out, + determine where the next record in the array is. */ + record = next_array_record (dtp, dtp->u.p.current_unit->ls, +Index: ChangeLog +=================================================================== +--- a/src/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,9 @@ ++2010-10-02 Ralf Wildenhues ++ ++ PR bootstrap/44621 ++ * configure.ac: Fix unportable shell quoting. ++ * configure: Regenerate. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: libffi/ChangeLog +=================================================================== +--- a/src/libffi/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/libffi/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,12 @@ ++2010-10-01 Jakub Jelinek ++ ++ * testsuite/libffi.call/many2.c: Don't use uint8_t. ++ ++ PR libffi/45677 ++ * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is ++ a multiple of 8. ++ * testsuite/libffi.call/many2.c: New test. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: libffi/src/x86/ffi64.c +=================================================================== +--- a/src/libffi/src/x86/ffi64.c (.../tags/gcc_4_4_5_release) ++++ b/src/libffi/src/x86/ffi64.c (.../branches/gcc-4_4-branch) +@@ -321,7 +321,7 @@ + if (align < 8) + align = 8; + +- bytes = ALIGN(bytes, align); ++ bytes = ALIGN (bytes, align); + bytes += cif->arg_types[i]->size; + } + else +@@ -333,7 +333,7 @@ + if (ssecount) + flags |= 1 << 11; + cif->flags = flags; +- cif->bytes = bytes; ++ cif->bytes = ALIGN (bytes, 8); + + return FFI_OK; + } +Index: libffi/testsuite/libffi.call/many2.c +=================================================================== +--- a/src/libffi/testsuite/libffi.call/many2.c (.../tags/gcc_4_4_5_release) ++++ b/src/libffi/testsuite/libffi.call/many2.c (.../branches/gcc-4_4-branch) +@@ -0,0 +1,52 @@ ++/* Area: ffi_call ++ Purpose: Check unsigned char arguments. ++ Limitations: none. ++ PR: PR45677. ++ Originator: Dan Witte 20100916 */ ++ ++/* { dg-do run } */ ++ ++#include "ffitest.h" ++ ++#define NARGS 7 ++ ++typedef unsigned char u8; ++ ++__attribute__((noinline)) u8 ++foo (u8 a, u8 b, u8 c, u8 d, u8 e, u8 f, u8 g) ++{ ++ return a + b + c + d + e + f + g; ++} ++ ++u8 ++bar (u8 a, u8 b, u8 c, u8 d, u8 e, u8 f, u8 g) ++{ ++ return foo (a, b, c, d, e, f, g); ++} ++ ++int ++main (void) ++{ ++ ffi_type *ffitypes[NARGS]; ++ int i; ++ ffi_cif cif; ++ ffi_arg result = 0; ++ u8 args[NARGS]; ++ void *argptrs[NARGS]; ++ ++ for (i = 0; i < NARGS; ++i) ++ ffitypes[i] = &ffi_type_uchar; ++ ++ CHECK (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, NARGS, ++ &ffi_type_uint8, ffitypes) == FFI_OK); ++ ++ for (i = 0; i < NARGS; ++i) ++ { ++ args[i] = i; ++ argptrs[i] = &args[i]; ++ } ++ ffi_call (&cif, FFI_FN (bar), &result, argptrs); ++ ++ CHECK (result == 21); ++ return 0; ++} +Index: config/ChangeLog +=================================================================== +--- a/src/config/ChangeLog (.../tags/gcc_4_4_5_release) ++++ b/src/config/ChangeLog (.../branches/gcc-4_4-branch) +@@ -1,3 +1,7 @@ ++2010-10-02 Ralf Wildenhues ++ ++ * po.m4 (AM_PO_SUBDIRS): Fix unportable shell quoting. ++ + 2010-10-01 Release Manager + + * GCC 4.4.5 released. +Index: config/po.m4 +=================================================================== +--- a/src/config/po.m4 (.../tags/gcc_4_4_5_release) ++++ b/src/config/po.m4 (.../branches/gcc-4_4-branch) +@@ -96,7 +96,7 @@ + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` +- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ++ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. --- gcc-4.4-4.4.5.orig/debian/patches/libgomp-omp_h-multilib.diff +++ gcc-4.4-4.4.5/debian/patches/libgomp-omp_h-multilib.diff @@ -0,0 +1,19 @@ +# DP: Fix up omp.h for multilibs. + +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +--- a/src/libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200 ++++ b/src/libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200 +@@ -42,8 +42,8 @@ typedef struct + + typedef struct + { +- unsigned char _x[@OMP_NEST_LOCK_SIZE@] +- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); + } omp_nest_lock_t; + #endif + --- gcc-4.4-4.4.5.orig/debian/patches/deb-protoize.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/kbsd-gnu.diff +++ gcc-4.4-4.4.5/debian/patches/kbsd-gnu.diff @@ -0,0 +1,77 @@ +# DP: GNU/k*BSD support +# Author: Robert Millan +# Status: Not yet submitted + +--- + gcc/config.gcc | 2 +- + gcc/config/i386/kfreebsd-gnu.h | 22 ++++++++++++++++++++++ + gcc/config/i386/linux64.h | 5 ++++- + 3 files changed, 27 insertions(+), 2 deletions(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1115,7 +1115,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ + i386/x86-64.h i386/linux64.h" + case ${target} in +- x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; ++ x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; + x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; + esac + tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules" +--- a/src/gcc/config/i386/kfreebsd-gnu.h ++++ b/src/gcc/config/i386/kfreebsd-gnu.h +@@ -19,7 +19,29 @@ You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + . */ + ++#ifdef GLIBC_DYNAMIC_LINKER32 ++#undef GLIBC_DYNAMIC_LINKER32 ++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" ++#endif ++ ++#ifdef GLIBC_DYNAMIC_LINKER64 ++#undef GLIBC_DYNAMIC_LINKER64 ++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1" ++#endif ++ + #undef LINK_EMULATION + #define LINK_EMULATION "elf_i386_fbsd" ++ ++#ifdef LINK_EMULATION32 ++#undef LINK_EMULATION32 ++#define LINK_EMULATION32 LINK_EMULATION ++#endif ++ ++#ifdef LINK_EMULATION64 ++#undef LINK_EMULATION64 ++#define LINK_EMULATION64 "elf_x86_64_fbsd" ++#endif ++ + #undef REG_NAME + #define REG_NAME(reg) sc_ ## reg ++ +--- a/src/gcc/config/i386/linux64.h ++++ b/src/gcc/config/i386/linux64.h +@@ -53,8 +53,11 @@ along with GCC; see the file COPYING3. If not see + When the -shared link option is used a final link is not being + done. */ + ++/* These macros may be overridden in k*bsd-gnu.h and i386/k*bsd-gnu.h. */ + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" ++#define LINK_EMULATION32 "elf_i386" ++#define LINK_EMULATION64 "elf_x86_64" + + #undef ASM_SPEC + #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \ +@@ -70,7 +73,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} --hash-style=both \ ++#define LINK_SPEC "%{" SPEC_64 ":-m " LINK_EMULATION64 "} %{" SPEC_32 ":-m " LINK_EMULATION32 "} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ + --- gcc-4.4-4.4.5.orig/debian/patches/gdc-ice-valist.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-ice-valist.diff @@ -0,0 +1,70 @@ +# DP: Correctly handle va_list types on 64bit systems in gdc + +--- a/src/gcc/d/d-builtins2.cc 2010-08-24 21:59:38.307687102 +0000 ++++ b/src/gcc/d/d-builtins2.cc 2010-08-25 14:25:00.954899222 +0000 +@@ -49,15 +49,6 @@ + } + // generate ctype if it doesn't already exist + d_gcc_builtin_va_list_d_type->toCtype(); +- +-#if D_GCC_VER >= 44 +- /* GCC-4.4 checks that this field actually points at the same tree +- as va_list_type_node. the ctype may well have equivalent values +- but that does not work with gcc/builtins.c +- */ +- tree type = d_gcc_builtin_va_list_d_type->toCtype(); +- TYPE_MAIN_VARIANT(type) = TYPE_MAIN_VARIANT(va_list_type_node); +-#endif + } + + /* +@@ -80,7 +71,11 @@ + // for built-in functions, so this is all that needs to be done for + // chars/string. + if (TYPE_MAIN_VARIANT(TREE_TYPE(t)) == char_type_node) +- return Type::tchar->pointerTo(); ++ { ++ d = Type::tchar; ++ d->ctype = TREE_TYPE(t); ++ return d->pointerTo(); ++ } + d = gcc_type_to_d_type(TREE_TYPE(t)); + if (d) + { +--- a/src/gcc/d/d-codegen.h 2010-08-19 11:30:20.000000000 +0000 ++++ b/src/gcc/d/d-codegen.h 2010-08-25 15:38:18.364898368 +0000 +@@ -294,6 +294,11 @@ + t = nop(TREE_OPERAND(exp, 0), build_pointer_type(TREE_TYPE(exp))); + else + #endif ++ /* Just convert arrays (struct[]) to pointers (struct *), rather than ++ creating a new pointer to the array (struct[] *) */ ++ if (TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE) ++ t = build1(ADDR_EXPR, build_pointer_type(TREE_TYPE(TREE_TYPE(exp))), exp); ++ else + t = build1(ADDR_EXPR, build_pointer_type(TREE_TYPE(exp)), exp); + #if D_NO_TRAMPOLINES + if (TREE_CODE( exp ) == FUNCTION_DECL) +--- a/src/gcc/d/d-lang.cc 2010-08-24 11:44:21.000000000 +0000 ++++ b/src/gcc/d/d-lang.cc 2010-08-25 14:25:00.964901334 +0000 +@@ -1917,16 +1917,11 @@ + /* Is compatible if aggregates are same type or share the same + attributes. The frontend should have already ensured that types + aren't wildly different anyway... */ +- if (AGGREGATE_TYPE_P (t1) && AGGREGATE_TYPE_P (t2) && +- TREE_CODE (t1) == TREE_CODE (t2)) ++ if (AGGREGATE_TYPE_P (t1) && AGGREGATE_TYPE_P (t2) ++ && TREE_CODE (t1) == TREE_CODE (t2)) + { +- tree type1 = TREE_TYPE (t1); +- tree type2 = TREE_TYPE (t2); +- +- if (TREE_CODE (t1) == ARRAY_TYPE +- || TREE_CODE (t2) == ARRAY_TYPE) { +- return (TREE_CODE (type1) == TREE_CODE (type2)); +- } ++ if (TREE_CODE (t1) == ARRAY_TYPE) ++ return (TREE_TYPE (t1) == TREE_TYPE (t2)); + + return (TYPE_ATTRIBUTES (t1) == TYPE_ATTRIBUTES (t2)); + } --- gcc-4.4-4.4.5.orig/debian/patches/pr38333.diff +++ gcc-4.4-4.4.5/debian/patches/pr38333.diff @@ -0,0 +1,65 @@ +# DP: Backported patch for PR ada/38333 + +B.1(22) says that an Import pragma must be the completion of a +declaration, and 6.1(20) says that a completion is not allowed for an +abstract subprogram declaration. + +With the following patch, the attached example gives + + 5. pragma Import (Ada, p1); + | + >>> cannot import abstract subprogram "p1" declared at line 4 + +whereas without it the no error is reported and the compilation is +succesful. + +Bootstrapped and regtested on x86_64-linux. Ok for trunk? + + gcc/ada/ + PR ada/38333 + * sem_prag.adb (Process_Import_Or_Interface): Forbid an abstract + subprogram to be completed with a "pragma Import". + + gcc/testsuite/ + PR ada/38333 + * gnat.dg/specs/import_abstract.ads: New. +--- + gcc/ada/sem_prag.adb | 9 +++++++++ + gcc/testsuite/gnat.dg/specs/import_abstract.ads | 6 ++++++ + 2 files changed, 15 insertions(+), 0 deletions(-) + create mode 100644 gcc/testsuite/gnat.dg/specs/import_abstract.ads + +diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb +index 065cb97..4e43b66 100644 +--- a/src/gcc/ada/sem_prag.adb ++++ b/src/gcc/ada/sem_prag.adb +@@ -3455,6 +3455,15 @@ package body Sem_Prag is + else + Set_Imported (Def_Id); + ++ if Is_Subprogram (Def_Id) ++ and then Is_Abstract_Subprogram (Def_Id) ++ then ++ Error_Msg_Sloc := Sloc (Def_Id); ++ Error_Msg_NE ++ ("cannot import abstract subprogram& declared#", ++ Arg2, Def_Id); ++ end if; ++ + -- Special processing for Convention_Intrinsic + + if C = Convention_Intrinsic then +diff --git a/gcc/testsuite/gnat.dg/specs/import_abstract.ads b/gcc/testsuite/gnat.dg/specs/import_abstract.ads +new file mode 100644 +index 0000000..9d05f0c +--- /dev/null ++++ b/src/gcc/testsuite/gnat.dg/specs/import_abstract.ads +@@ -0,0 +1,6 @@ ++-- { dg-do compile } ++package Import_Abstract is ++ type T1 is abstract tagged null record; ++ procedure p1(X : T1) is abstract; ++ pragma Import (Ada, p1); -- { dg-error "cannot import abstract subprogram" } ++end Import_Abstract; +-- +1.6.0.4.880.g80093 --- gcc-4.4-4.4.5.orig/debian/patches/gcc-ice-apport.diff +++ gcc-4.4-4.4.5/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 = xmalloc (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.5.orig/debian/patches/pr42748.diff +++ gcc-4.4-4.4.5/debian/patches/pr42748.diff @@ -0,0 +1,54 @@ +# DP: Fix PR c++/42748, do not warn about changes to mangling of va_list +# DP: in system headers. + +gcc/ + +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. + + +gcc/testsuite/ + +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. + +Index: gcc/testsuite/g++.dg/abi/arm_va_list2.C +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/arm_va_list2.C (revision 0) ++++ b/src/gcc/testsuite/g++.dg/abi/arm_va_list2.C (revision 156202) +@@ -0,0 +1,7 @@ ++// { dg-do compile } ++// { dg-options "-Wpsabi" } ++// { dg-require-effective-target arm_eabi } ++ ++#include ++#include "arm_va_list2.h" ++ +Index: gcc/testsuite/g++.dg/abi/arm_va_list2.h +=================================================================== +--- a/src/gcc/testsuite/g++.dg/abi/arm_va_list2.h (revision 0) ++++ b/src/gcc/testsuite/g++.dg/abi/arm_va_list2.h (revision 156202) +@@ -0,0 +1,4 @@ ++// The mangling of va_list changed in GCC 4.4. We want to warn about ++// that -- but not in a system header. ++#pragma GCC system_header ++void f(va_list) {} +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (revision 156201) ++++ b/src/gcc/config/arm/arm.c (revision 156202) +@@ -21372,7 +21372,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, --- gcc-4.4-4.4.5.orig/debian/patches/gcc-arm-thumb2-sched.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/mips-triarch.diff +++ gcc-4.4-4.4.5/debian/patches/mips-triarch.diff @@ -0,0 +1,61 @@ +# DP: Build a tri-arch compiler on mips-linux-gnu. +# DP: http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01047.html + +2009-23-03 Arthur Loiret + + * config.gcc (mips*-*-linux*): If 'enabled_targets' is 'all', build + a tri-arch compiler defaulting to 32-bit (ABI o32). In this case: + (tm_file): Add mips/linux64.h. + (tmake_file): Add mips/t-linux64. + (tm_defines): Add MIPS_ABI_DEFAULT=ABI_32. + * config/mips/linux64.h (DRIVER_SELF_SPECS): Use MULTILIB_ABI_DEFAULT + instead of hardcoded mabi=n32. + * config/mips/t-linux64 (MULTILIB_DIRNAMES): Set to 'n32 . 64' if + tm_defines contains MIPS_ABI_DEFAULT ABI_32, to follow the glibc + convention. +--- + gcc/config.gcc | 7 ++++++- + gcc/config/mips/linux64.h | 2 +- + gcc/config/mips/t-linux64 | 4 ++++ + 3 files changed, 11 insertions(+), 2 deletions(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -1571,8 +1571,13 @@ mips64*-*-linux* | mipsisa64*-*-linux*) + test x$with_llsc != x || with_llsc=yes + ;; + mips*-*-linux*) # Linux MIPS, either endian. +- tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" ++ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" + tmake_file="${tmake_file} mips/t-libgcc-mips16" ++ if test x$enable_targets = xall; then ++ tm_file="${tm_file} mips/linux64.h" ++ tmake_file="${tmake_file} mips/t-linux64" ++ tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32" ++ fi + case ${target} in + mipsisa32r2*) + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33" +--- a/src/gcc/config/mips/linux64.h ++++ b/src/gcc/config/mips/linux64.h +@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see + BASE_DRIVER_SELF_SPECS, \ + LINUX_DRIVER_SELF_SPECS \ + " %{!EB:%{!EL:%(endian_spec)}}" \ +- " %{!mabi=*: -mabi=n32}" ++ " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}" + + #undef LIB_SPEC + #define LIB_SPEC "\ +--- a/src/gcc/config/mips/t-linux64 ++++ b/src/gcc/config/mips/t-linux64 +@@ -1,5 +1,9 @@ + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 ++ifneq ($(filter MIPS_ABI_DEFAULT=ABI_32,$(tm_defines)),) ++MULTILIB_DIRNAMES = n32 . 64 ++else + MULTILIB_DIRNAMES = n32 32 64 ++endif + MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64 + + EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o --- gcc-4.4-4.4.5.orig/debian/patches/gdc-libphobos-math.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-libphobos-math.diff @@ -0,0 +1,28 @@ +# DP: Define fpclassify and signbit for systems that need it. + +--- a/src/gcc/d/phobos/gcc/cbridge_math.c 2010-04-21 13:08:40.000000000 +0100 ++++ b/src/gcc/d/phobos/gcc/cbridge_math.c 2010-08-23 11:01:05.022792451 +0100 +@@ -21,6 +21,23 @@ + #include + #include "config.h" + ++/* If undefined, define fpclassify and signbit here */ ++#ifndef fpclassify ++# define fpclassify(x) \ ++ (sizeof (x) == sizeof (float) \ ++ ? __fpclassifyf (x) \ ++ : sizeof (x) == sizeof (double) \ ++ ? __fpclassify (x) : __fpclassifyl (x)) ++#endif ++ ++#ifndef signbit ++# define signbit(x) \ ++ (sizeof (x) == sizeof (float) \ ++ ? __signbitf (x) \ ++ : sizeof (x) == sizeof (double) \ ++ ? __signbit (x) : __signbitl (x)) ++#endif ++ + /* + #if HAVE_DISTINCT_LONG_DOUBLE + typedef long double my_long_double; --- gcc-4.4-4.4.5.orig/debian/patches/gcc-no-add-needed.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-no-add-needed.diff @@ -0,0 +1,54 @@ +# DP: On linux targets pass --no-add-needed to the linker. + +2010-02-08 Roland McGrath + + * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the + linker. + * config/linux.h (LINK_EH_SPEC): Likewise. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- ./src/gcc/config/rs6000/sysv4.h~ 2009-11-30 16:45:56.000000000 +0100 ++++ ./src/gcc/config/rs6000/sysv4.h 2010-04-06 02:32:08.172356816 +0200 +@@ -916,7 +916,7 @@ + %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}" + + #if defined(HAVE_LD_EH_FRAME_HDR) +-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif + + #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \ +--- ./src/gcc/config/alpha/elf.h~ 2009-04-28 12:24:19.000000000 +0200 ++++ ./src/gcc/config/alpha/elf.h 2010-04-06 02:31:02.014836042 +0200 +@@ -423,7 +423,7 @@ + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif + + /* A C statement (sans semicolon) to output to the stdio stream STREAM +--- ./src/gcc/config/ia64/linux.h~ 2009-04-22 10:23:06.000000000 +0200 ++++ ./src/gcc/config/ia64/linux.h 2010-04-06 02:33:05.044835760 +0200 +@@ -80,7 +80,7 @@ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "" ++#define LINK_EH_SPEC "--no-add-needed" + + #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h" + +--- ./src/gcc/config/linux.h~ 2009-04-12 01:39:59.000000000 +0200 ++++ ./src/gcc/config/linux.h 2010-04-06 02:32:19.391087422 +0200 +@@ -89,7 +89,7 @@ + } while (0) + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} " + #endif + + /* Define this so we can compile MS code for use with WINE. */ --- gcc-4.4-4.4.5.orig/debian/patches/gcc-java-align-data.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/libjava-stacktrace.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-stacktrace.diff @@ -0,0 +1,50 @@ +# DP: libgcj: Lookup source file name and line number in separated +# DP: debug files found in /usr/lib/debug + +--- + libjava/stacktrace.cc | 27 +++++++++++++++++++++++++++ + 1 files changed, 27 insertions(+), 0 deletions(-) + +--- a/src/libjava/stacktrace.cc ++++ b/src/libjava/stacktrace.cc +@@ -17,6 +17,11 @@ details. */ + #include + + #include ++#include ++#include ++#ifdef HAVE_UNISTD_H ++#include ++#endif + + #include + #include +@@ -260,6 +265,28 @@ _Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder, + finder->lookup (binaryName, (jlong) offset); + *sourceFileName = finder->getSourceFile(); + *lineNum = finder->getLineNum(); ++ if (*lineNum == -1 && info.file_name[0] == '/') ++ { ++ const char *debugPrefix = "/usr/lib/debug"; ++ char *debugPath = (char *) malloc (strlen(debugPrefix) ++ + strlen(info.file_name) ++ + 2); ++ ++ if (debugPath) ++ { ++ strcpy (debugPath, debugPrefix); ++ strcat (debugPath, info.file_name); ++ //printf ("%s: 0x%x\n", debugPath, offset); ++ if (!access (debugPath, R_OK)) ++ { ++ binaryName = JvNewStringUTF (debugPath); ++ finder->lookup (binaryName, (jlong) offset); ++ *sourceFileName = finder->getSourceFile(); ++ *lineNum = finder->getLineNum(); ++ } ++ free (debugPath); ++ } ++ } + if (*lineNum == -1 && NameFinder::showRaw()) + { + gnu::gcj::runtime::StringBuffer *t = --- gcc-4.4-4.4.5.orig/debian/patches/gdc-pr26885.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-pr26885.diff @@ -0,0 +1,35 @@ +# DP: Update Make-lang.in for pr26885: use $(GCC_OBJS) instead of gcc.o. + +--- a/src/gcc/d/Make-lang.in 2010-08-22 22:21:10.000000000 +0100 ++++ b/src/gcc/d/Make-lang.in 2010-08-23 10:49:36.782814757 +0100 +@@ -48,7 +48,7 @@ + # into the C++ rule, but that needs a little bit of work + # to do the right thing within all.cross. + D_DRIVER_NAME = gdc +-D_DRIVER_OBJS = d/d-spec.o d/d-gcc.o version.o prefix.o intl.o ++D_DRIVER_OBJS = d/d-spec.o version.o prefix.o intl.o + D_COMPILER_NAME = cc1d + + D_INSTALL_NAME = $(shell echo $(D_DRIVER_NAME)|sed '$(program_transform_name)') +@@ -176,9 +176,9 @@ + ALL_DMD_COMPILER_FLAGS = $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Id -I$(srcdir)/$(D_dmd_srcdir) -I$(srcdir)/d $(D_EXTRA_DEFINES) $(D_CC_FLAGS) + + # Create the compiler driver for D. +-$(D_DRIVER_NAME)$(exeext): $(D_DRIVER_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS) ++$(D_DRIVER_NAME)$(exeext): $(GCC_OBJS) $(D_DRIVER_OBJS) $(EXTRA_GCC_OBJS) $(LIBDEPS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ \ +- $(D_DRIVER_OBJS) $(EXTRA_GCC_OBJS) $(LIBS) ++ $(GCC_OBJS) $(D_DRIVER_OBJS) $(EXTRA_GCC_OBJS) $(LIBS) + + # Create a version of the g++ driver which calls the cross-compiler. + $(D_DRIVER_NAME)-cross$(exeext): $(D_DRIVER_NAME)$(exeext) +@@ -262,8 +262,7 @@ + D_GLUE_OBJS += d/d-c-stubs.cglue.o + D_BORROWED_C_OBJS += stub-objc.o prefix.o $(C_TARGET_OBJS) + D_BORROWED_C_OBJS += gimplify.o tree-iterator.o +- D_EXTRA_LIBS += $(GMPLIBS) +- D_DRIVER_OBJS += opts-common.o gcc-options.o ++ D_EXTRA_LIBS += $(BACKENDLIBS) + endif + endif + --- gcc-4.4-4.4.5.orig/debian/patches/gdc-driver-nophobos.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-driver-nophobos.diff @@ -0,0 +1,49 @@ +# DP: Modify gdc driver to have no libphobos by default. + +--- a/src/gcc/d/d-lang.cc 2010-08-22 22:21:10.000000000 +0100 ++++ b/src/gcc/d/d-lang.cc 2010-08-23 11:45:29.213787124 +0100 +@@ -185,7 +185,7 @@ + global.params.fileImppath = new Array(); + + // GCC options +- flag_exceptions = 1; ++ flag_exceptions = 0; + + // extra D-specific options + gen.splitDynArrayVarArgs = true; +--- a/src/gcc/d/dmain.d 1970-01-01 01:00:00.000000000 +0100 ++++ b/src/gcc/d/dmain.d 2010-08-23 11:46:32.289790644 +0100 +@@ -0,0 +1,22 @@ ++extern (C) size_t strlen(const char* s); ++extern (C) void* malloc(size_t s); ++ ++int main(char[][] args); // U _Dmain ++ ++extern (C) int main(int argc, char** argv) { ++ char[][] args; ++ char[] *am; ++ int i; ++ ++ am = cast(char[] *) malloc(argc * (char[]).sizeof); ++ ++ for(i = 0; i < argc; i++) { ++ am[i] = argv[i][0 .. strlen(argv[i])]; ++ } ++ ++ args = am[0 .. argc]; ++ ++ return main(args); ++} ++ ++ +--- a/src/gcc/d/d-spec.c 2010-08-19 12:30:20.000000000 +0100 ++++ b/src/gcc/d/d-spec.c 2010-08-23 11:47:15.237799676 +0100 +@@ -88,7 +88,7 @@ + + /* If nonzero, use the standard D runtime library when linking with + standard libraries. */ +- int phobos = 1; ++ int phobos = 0; + + /* The number of arguments being added to what's in argv, other than + libraries. We use this to track the number of times we've inserted --- gcc-4.4-4.4.5.orig/debian/patches/gcc-multilib64dir.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-multilib64dir.diff @@ -0,0 +1,50 @@ +# DP: Use lib instead of lib64 as multilibdir on amd64, sparc64 and ppc64. + +--- + gcc/config/i386/t-linux64 | 2 +- + gcc/config/rs6000/t-linux64 | 12 ++++++------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +--- a/src/gcc/config/i386/t-linux64 ++++ b/src/gcc/config/i386/t-linux64 +@@ -7,7 +7,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +--- a/src/gcc/config/rs6000/t-linux64 ++++ b/src/gcc/config/rs6000/t-linux64 +@@ -14,13 +14,13 @@ TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc + # it doesn't tell anything about the 32bit libraries on those systems. Set + # MULTILIB_OSDIRNAMES according to what is found on the target. + +-MULTILIB_OPTIONS = m64/m32 msoft-float +-MULTILIB_DIRNAMES = 64 32 nof ++MULTILIB_OPTIONS = m64/m32 ++MULTILIB_DIRNAMES = 64 32 + MULTILIB_EXTRA_OPTS = fPIC mstrict-align +-MULTILIB_EXCEPTIONS = m64/msoft-float +-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float +-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) nof +-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) ++MULTILIB_EXCEPTIONS = ++MULTILIB_EXCLUSIONS = ++MULTILIB_OSDIRNAMES = ../lib $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ++MULTILIB_MATCHES = + + softfp_wrap_start := '\#ifndef __powerpc64__' + softfp_wrap_end := '\#endif' +--- a/src/gcc/config/sparc/t-linux64 ++++ b/src/gcc/config/sparc/t-linux64 +@@ -1,6 +1,6 @@ + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib --- gcc-4.4-4.4.5.orig/debian/patches/gcc-driver-extra-langs.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/sh4-scheduling.diff +++ gcc-4.4-4.4.5/debian/patches/sh4-scheduling.diff @@ -0,0 +1,31 @@ +# DP: sh4 scheduling fix + +2009-05-12 Kaz Kojima + + * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns + unless -fschedule-insns is specified. + +--- a/src/gcc/config/sh/sh.h 2009-05-12 22:06:55.000000000 +0900 ++++ b/src/gcc/config/sh/sh.h 2009-05-12 22:07:10.000000000 +0900 +@@ -709,8 +709,9 @@ do { \ + /* Never run scheduling before reload, since that can \ + break global alloc, and generates slower code anyway due \ + to the pressure on R0. */ \ +- /* Enable sched1 for SH4; ready queue will be reordered by \ +- the target hooks when pressure is high. We can not do this for \ ++ /* Enable sched1 for SH4 if the user explicitly requests. \ ++ When sched1 is enabled, the ready queue will be reordered by \ ++ the target hooks if pressure is high. We can not do this for \ + PIC, SH3 and lower as they give spill failures for R0. */ \ + if (!TARGET_HARD_SH4 || flag_pic) \ + flag_schedule_insns = 0; \ +@@ -725,6 +726,8 @@ do { \ + warning (0, "ignoring -fschedule-insns because of exception handling bug"); \ + flag_schedule_insns = 0; \ + } \ ++ else if (flag_schedule_insns == 2) \ ++ flag_schedule_insns = 0; \ + } \ + \ + if (align_loops == 0) \ + --- gcc-4.4-4.4.5.orig/debian/patches/cell-branch-linaro.diff +++ gcc-4.4-4.4.5/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 (Pmode, data->size); +- 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 (Pmode, -data->size); +- 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.5.orig/debian/patches/libstdc++-doclink.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-doclink.diff @@ -0,0 +1,127 @@ +# DP: adjust hrefs to point to the local documentation + +--- + libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +--- a/src/libstdc++-v3/doc/doxygen/mainpage.html ++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html +@@ -29,8 +29,8 @@ +

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

    + +

    The other type is the source documentation, of which this is the first page. +@@ -81,9 +81,9 @@ + This style guide can also be viewed on the web. + +

    License, Copyright, and Other Lawyerly Verbosity

    +-

    The libstdc++ documentation is released under +- +- these terms. ++

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

    +

    Part of the generated documentation involved comments and notes from + SGI, who says we gotta say this: +--- a/src/libstdc++-v3/doc/xml/api.xml~ 2009-04-16 05:33:20.000000000 +0200 ++++ b/src/libstdc++-v3/doc/xml/api.xml 2009-04-27 12:38:45.000000000 +0200 +@@ -38,6 +38,11 @@ + + + ++ The source-level documentation for this release can be viewed offline. ++ ++ ++ ++ + The source-level documentation for the most recent releases can be + viewed online: + +@@ -45,37 +50,37 @@ + + + +- for the 3.4 release ++ for the 3.4 release + + + + + +- for the 4.1 release ++ for the 4.1 release + + + + + +- for the 4.2 release ++ for the 4.2 release + + + + + +- for the 4.3 release ++ for the 4.3 release + + + + + +- for the 4.4 release ++ for the 4.4 release + + + + + +- "the latest collection" ++ "the latest collection" + + (For the main development tree; see the date on the first page.) + +--- a/src/libstdc++-v3/doc/html/api.html~ 2009-04-16 05:33:20.000000000 +0200 ++++ b/src/libstdc++-v3/doc/html/api.html 2009-04-27 12:42:10.000000000 +0200 +@@ -17,25 +17,28 @@ + the library classes, finding out what is in a particular include + file, looking at inheritance diagrams, etc. +

    ++ ++

    + The source-level documentation for the most recent releases can be + viewed online: +

    --- gcc-4.4-4.4.5.orig/debian/patches/libjava-subdir.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-subdir.diff @@ -0,0 +1,221 @@ +# DP: - Set the libjava sublibdir to /usr/lib/gcj-4.4 +# DP: - Set the default libgcj database dir to /var/lib/gcj-4.4 + +--- + gcc/java/Make-lang.in | 5 +++-- + libjava/Makefile.am | 9 +++++---- + libjava/Makefile.in | 9 +++++---- + libjava/classpath/configure.ac | 2 +- + libjava/configure.ac | 7 ++++++- + libjava/testsuite/Makefile.am | 7 ++++--- + libjava/testsuite/Makefile.in | 7 ++++--- + libjava/testsuite/lib/libjava.exp | 1 + + 8 files changed, 29 insertions(+), 18 deletions(-) + +--- a/src/gcc/java/Make-lang.in ++++ b/src/gcc/java/Make-lang.in +@@ -320,12 +320,13 @@ java/jcf-io.o: java/jcf-io.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ZLIBINC) \ + $(srcdir)/java/jcf-io.c $(OUTPUT_OPTION) + ++short_version := $(shell echo $(version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/') + # jcf-path.o needs a -D. + java/jcf-path.o: java/jcf-path.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ + java/jcf.h + $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ +- -DLIBGCJ_ZIP_FILE='"$(datadir)/java/libgcj-$(version).jar"' \ +- -DDEFAULT_TARGET_VERSION=\"$(version)\" \ ++ -DLIBGCJ_ZIP_FILE='"$(datadir)/java/libgcj-$(short_version).jar"' \ ++ -DDEFAULT_TARGET_VERSION=\"$(short_version)\" \ + $(srcdir)/java/jcf-path.c $(OUTPUT_OPTION) + + TEXI_JAVA_FILES = java/gcj.texi $(gcc_docdir)/include/fdl.texi \ +--- a/src/libjava/Makefile.am ++++ b/src/libjava/Makefile.am +@@ -5,7 +5,8 @@ AUTOMAKE_OPTIONS = foreign subdir-objects + ACLOCAL_AMFLAGS = -I . -I .. -I ../config -I libltdl + + # May be used by various substitution variables. +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_full_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + SUBDIRS = $(DIRLTDL) gcj include classpath + if TESTSUBDIR +@@ -34,9 +35,9 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \ + target_noncanonical = @target_noncanonical@ + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + + ## + ## What gets installed, and where. +@@ -166,7 +167,7 @@ AM_CXXFLAGS = \ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/gcj-4.4/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- a/src/libjava/Makefile.in ++++ b/src/libjava/Makefile.in +@@ -887,7 +887,8 @@ AUTOMAKE_OPTIONS = foreign subdir-objects + ACLOCAL_AMFLAGS = -I . -I .. -I ../config -I libltdl + + # May be used by various substitution variables. +-gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_full_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + SUBDIRS = $(DIRLTDL) gcj include classpath $(am__append_1) + + # write_entries_to_file - writes each entry in a list +@@ -908,8 +909,8 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \ + + + # This is required by TL_AC_GXX_INCLUDE_DIR. +-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) ++libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_full_version) ++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_full_version) + toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \ + $(am__append_2) $(am__append_3) + toolexecmainlib_DATA = libgcj.spec +@@ -963,7 +964,7 @@ AM_CXXFLAGS = \ + -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ + -DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/gcj-4.4/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- a/src/libjava/classpath/configure.ac ++++ b/src/libjava/classpath/configure.ac +@@ -328,7 +328,7 @@ AC_ARG_WITH([native-libdir], + nativeexeclibdir=${withval} + ], + [ +- nativeexeclibdir='${toolexeclibdir}/gcj-'`cat ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[[^#]].*:/ { print $1 }' ${srcdir}/../libtool-version` ++ nativeexeclibdir='${toolexeclibdir}/gcj-'`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' ${srcdir}/../../gcc/BASE-VER`-`awk -F: '/^[[^#]].*:/ { print $1 }' ${srcdir}/../libtool-version` + ]) + + AC_SUBST(nativeexeclibdir) +--- a/src/libjava/configure.ac ++++ b/src/libjava/configure.ac +@@ -572,6 +572,9 @@ AC_ARG_WITH(java-home, + AS_HELP_STRING([--with-java-home=DIRECTORY], + [value of java.home system property]), + [JAVA_HOME="${withval}"], [JAVA_HOME=""]) ++if test -n "$with_multisubdir"; then ++ JAVA_HOME=`echo $JAVA_HOME | sed "s,/usr/lib/,/usr/lib$with_multisubdir/,"` ++fi + AM_CONDITIONAL(JAVA_HOME_SET, test ! -z "$JAVA_HOME") + AC_SUBST(JAVA_HOME) + +@@ -1467,6 +1470,7 @@ case ${version_specific_libs} in + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /. ++ ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;; + *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;; + esac + ;; +@@ -1477,6 +1481,7 @@ AC_SUBST(toolexeclibdir) + + # Determine gcj and libgcj version number. + gcjversion=`cat "$srcdir/../gcc/BASE-VER"` ++short_version=`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' $srcdir/../gcc/BASE-VER` + libgcj_soversion=`awk -F: '/^[[^#]].*:/ { print $1 }' $srcdir/libtool-version` + GCJVERSION=$gcjversion + AC_SUBST(GCJVERSION) +@@ -1484,7 +1489,7 @@ AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERSION", [Short GCJ version ID]) + + # Determine where the standard .db file and GNU Classpath JNI + # libraries are found. +-gcjsubdir=gcj-$gcjversion-$libgcj_soversion ++gcjsubdir=gcj-$short_version-$libgcj_soversion + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) +--- a/src/libjava/testsuite/Makefile.am ++++ b/src/libjava/testsuite/Makefile.am +@@ -4,6 +4,7 @@ AUTOMAKE_OPTIONS = foreign dejagnu + + # May be used by various substitution variables. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_short_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + # autoconf2.13's target_alias + target_noncanonical = @target_noncanonical@ +@@ -59,11 +60,11 @@ if JAVA_MAINTAINER_MODE + rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \ + if test -n "$$testdep"; then \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +- $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \ ++ $(top_builddir)/libgcj-$(gcc_short_version).jar::$$testtmpdir \ + -d $$testtmpdir $(srcdir)/$$testdep || exit; \ + fi; \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +- $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \ ++ $(top_builddir)/libgcj-$(gcc_short_version).jar:$$testtmpdir \ + -d $$testtmpdir $(srcdir)/$$test || exit; \ + case "$$test" in \ + libjava.loader/dummy.java) \ +@@ -75,7 +76,7 @@ if JAVA_MAINTAINER_MODE + esac; \ + if test -n "$$genheader"; then \ + $(MYGCJH) $$genheader $$testtmpdir/*.class \ +- -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \ ++ -bootclasspath $(top_builddir)/libgcj-$(gcc_short_version).jar \ + -d $$testtmpdir/ || exit; \ + mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + fi; \ +--- a/src/libjava/testsuite/Makefile.in ++++ b/src/libjava/testsuite/Makefile.in +@@ -373,6 +373,7 @@ AUTOMAKE_OPTIONS = foreign dejagnu + + # May be used by various substitution variables. + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) ++gcc_short_version := $(shell sed -r 's/([0-9]+\.[0-9]+).*/\1/' $(top_srcdir)/../gcc/BASE-VER) + + # Setup the testing framework, if you have one + EXPECT = `if [ -f $(top_builddir)/../expect/expect ] ; then \ +@@ -620,11 +621,11 @@ compile-tests: + @JAVA_MAINTAINER_MODE_TRUE@ rm -rf $$testtmpdir; $(mkdir_p) $$testtmpdir; \ + @JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$testdep"; then \ + @JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +-@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar::$$testtmpdir \ ++@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_short_version).jar::$$testtmpdir \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$testdep || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ fi; \ + @JAVA_MAINTAINER_MODE_TRUE@ $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ +-@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_version).jar:$$testtmpdir \ ++@JAVA_MAINTAINER_MODE_TRUE@ $(top_builddir)/libgcj-$(gcc_short_version).jar:$$testtmpdir \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$test || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ case "$$test" in \ + @JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/dummy.java) \ +@@ -636,7 +637,7 @@ compile-tests: + @JAVA_MAINTAINER_MODE_TRUE@ esac; \ + @JAVA_MAINTAINER_MODE_TRUE@ if test -n "$$genheader"; then \ + @JAVA_MAINTAINER_MODE_TRUE@ $(MYGCJH) $$genheader $$testtmpdir/*.class \ +-@JAVA_MAINTAINER_MODE_TRUE@ -bootclasspath $(top_builddir)/libgcj-$(gcc_version).jar \ ++@JAVA_MAINTAINER_MODE_TRUE@ -bootclasspath $(top_builddir)/libgcj-$(gcc_short_version).jar \ + @JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir/ || exit; \ + @JAVA_MAINTAINER_MODE_TRUE@ mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + @JAVA_MAINTAINER_MODE_TRUE@ fi; \ +--- a/src/libjava/testsuite/lib/libjava.exp ++++ b/src/libjava/testsuite/lib/libjava.exp +@@ -169,6 +169,7 @@ proc libjava_init { args } { + set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"] + regexp " version \[^\n\r\]*" $text version + set libjava_version [lindex $version 1] ++ set libjava_version "4.4" + + verbose "version: $libjava_version" + --- gcc-4.4-4.4.5.orig/debian/patches/gdc-hg-updates.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-hg-updates.diff @@ -0,0 +1,609 @@ +# DP: HG updates from the gdc branch up to 20100912. + +--- a/src/gcc/d/d-codegen.cc ++++ b/src/gcc/d/d-codegen.cc +@@ -696,7 +696,10 @@ + build2/*_binary_op*/ (MULT_EXPR, TREE_TYPE(size_exp), intop, // the type here may be wrong %% + convert (TREE_TYPE (intop), size_exp))); + intop = fold(intop); +- } ++ } ++ ++ if (result_type_node == error_mark_node) ++ return result_type_node; // else we'll ICE. + + if ( integer_zerop(intop) ) + return ptr_node; +@@ -1673,6 +1676,9 @@ + tree + IRState::darrayPtrRef(tree exp) + { ++ if (exp == error_mark_node) ++ return exp; // else we'll ICE. ++ + // Get the backend type for the array and pick out the array data + // pointer field (assumed to be the second field.) + tree ptr_field = TREE_CHAIN( TYPE_FIELDS( TREE_TYPE( exp ))); +@@ -1683,6 +1689,9 @@ + tree + IRState::darrayLenRef(tree exp) + { ++ if (exp == error_mark_node) ++ return exp; // else we'll ICE. ++ + // Get the backend type for the array and pick out the array length + // field (assumed to be the first field.) + tree len_field = TYPE_FIELDS( TREE_TYPE( exp )); +@@ -2462,7 +2471,8 @@ + } + #else + # if HOST_BITS_PER_WIDE_INT == 32 +- tree tree_value = build_int_cst_type(type, value & 0xffffffff); ++ tree tree_value = build_int_cst_wide_type(type, value & 0xffffffff, ++ (value >> 32) & 0xffffffff); + # elif HOST_BITS_PER_WIDE_INT == 64 + tree tree_value = build_int_cst_type(type, value); + # else +@@ -2541,11 +2551,32 @@ + + if (func != outer_func) + { ++ Dsymbol * this_func = func; ++ Dsymbol * parent_sym = nested_sym->toParent2(); + if (!func->vthis) // if no frame pointer for this function + { + nested_func->error("is a nested function and cannot be accessed from %s", func->toChars()); + return d_null_pointer; + } ++ /* Search for frame pointer, make sure we can reach it, ++ else we'll ICE later in tree-ssa. */ ++ while (nested_func != this_func) ++ { ++ FuncDeclaration * fndecl; ++ if ( (fndecl = this_func->isFuncDeclaration()) ) ++ { ++ if (parent_sym == fndecl->toParent2()) ++ break; ++ assert(fndecl->isNested() || fndecl->vthis); ++ } ++ else ++ { ++ func->error("cannot get frame pointer to %s", nested_sym->toChars()); ++ return d_null_pointer; ++ } ++ this_func = this_func->toParent2(); ++ assert(this_func); ++ } + } + } + else +@@ -3140,6 +3171,7 @@ + { + Flow * f = beginFlow(stmt); + f->condition = t_cond; ++ f->kind = level_switch; + } + + void +@@ -3188,12 +3220,14 @@ + IRState::startTry(Statement * stmt) + { + beginFlow(stmt); ++ currentFlow()->kind = level_try; + } + + void + IRState::startCatches() + { + currentFlow()->tryBody = popStatementList(); ++ currentFlow()->kind = level_catch; + pushStatementList(); + } + +@@ -3229,6 +3263,7 @@ + IRState::startFinally() + { + currentFlow()->tryBody = popStatementList(); ++ currentFlow()->kind = level_finally; + pushStatementList(); + } + +@@ -3252,9 +3287,9 @@ + IRState::doJump(Statement * stmt, tree t_label) + { + if (stmt) +- g.ofile->doLineNote( stmt->loc ); ++ g.ofile->doLineNote(stmt->loc); + addExp(build1(GOTO_EXPR, void_type_node, t_label)); +- TREE_USED(t_label) = 1; ++ D_LABEL_IS_USED(t_label) = 1; + } + + tree +@@ -3285,6 +3320,104 @@ + #endif + } + ++ ++void ++IRState::checkSwitchCase(Statement * stmt, int default_flag) ++{ ++ Flow * flow = currentFlow(); ++ ++ assert(flow); ++ if (flow->kind != level_switch && flow->kind != level_block) ++ { ++ stmt->error("%s cannot be in different try block level from switch", ++ default_flag ? "default" : "case"); ++ } ++} ++ ++void ++IRState::checkGoto(Statement * stmt, LabelDsymbol * label) ++{ ++ Statement * curBlock = NULL; ++ unsigned curLevel = loops.dim; ++ int found = 0; ++ ++ if (curLevel) ++ curBlock = currentFlow()->statement; ++ ++ for (unsigned i = 0; i < Labels.dim; i++) ++ { ++ Label * linfo = (Label *)Labels.data[i]; ++ assert(linfo); ++ ++ if (label == linfo->label) ++ { ++ // No need checking for finally, should have already been handled. ++ if (linfo->kind == level_try && ++ curLevel <= linfo->level && curBlock != linfo->block) ++ { ++ stmt->error("cannot goto into try block"); ++ } ++ // %% doc: It is illegal for goto to be used to skip initializations, ++ // %% so this should include all gotos into catches... ++ if (linfo->kind == level_catch && curBlock != linfo->block) ++ stmt->error("cannot goto into catch block"); ++ ++ found = 1; ++ break; ++ } ++ } ++#if V1 ++ // Push forward referenced gotos. ++ if (! found) ++ { ++ if (! label->statement->fwdrefs) ++ label->statement->fwdrefs = new Array(); ++ label->statement->fwdrefs->push(getLabelBlock(label, stmt)); ++ } ++#endif ++} ++ ++void ++IRState::checkPreviousGoto(Array * refs) ++{ ++ Statement * stmt; ++ ++ for (unsigned i = 0; i < refs->dim; i++) ++ { ++ Label * ref = (Label *)refs->data[i]; ++ int found = 0; ++ ++ assert(ref && ref->from); ++ stmt = ref->from; ++ ++ for (unsigned i = 0; i < Labels.dim; i++) ++ { ++ Label * linfo = (Label *)Labels.data[i]; ++ assert(linfo); ++ ++ if (ref->label == linfo->label) ++ { ++ // No need checking for finally, should have already been handled. ++ if (linfo->kind == level_try && ++ ref->level <= linfo->level && ref->block != linfo->block) ++ { ++ stmt->error("cannot goto into try block"); ++ } ++ // %% doc: It is illegal for goto to be used to skip initializations, ++ // %% so this should include all gotos into catches... ++ if (linfo->kind == level_catch && ++ (ref->block != linfo->block || ref->kind != linfo->kind)) ++ stmt->error("cannot goto into catch block"); ++ ++ found = 1; ++ break; ++ } ++ } ++ assert(found); ++ } ++} ++ ++ + WrappedExp::WrappedExp(Loc loc, enum TOK op, tree exp_node, Type * type) + : Expression(loc, op, sizeof(WrappedExp)) + { +--- a/src/gcc/d/d-codegen.h ++++ b/src/gcc/d/d-codegen.h +@@ -527,6 +527,13 @@ + void doExp(Expression * e) { doExp(e->toElem(this)); } // %% should handle volatile...? + void doAsm(tree insn_tmpl, tree outputs, tree inputs, tree clobbers); + ++ // ** Goto/Label statement evaluation ++ ++ void pushLabel(LabelDsymbol * l) { Labels.push(getLabelBlock(l)); } ++ void checkSwitchCase(Statement * stmt, int default_flag = 0); ++ void checkGoto(Statement * stmt, LabelDsymbol * label); ++ void checkPreviousGoto(Array * refs); ++ + // ** Callback statement evalutation + + static Array stmtExprList; +--- a/src/gcc/d/d-glue.cc ++++ b/src/gcc/d/d-glue.cc +@@ -1557,7 +1557,7 @@ + return irs->var(var_decl); + } + } else { +- // error below ++ error("%s is not a field, but a %s", var->toChars(), var->kind()); + } + break; + default: +@@ -1960,17 +1960,20 @@ + STATIC_CHAIN_EXPR created here will never be + translated. Use a null pointer for the link in + this case. */ +- if ( ++ if (fd_outer->vthis) { + #if V2 +- fd_outer->closureVars.dim || +- irs->getFrameInfo(fd_outer)->creates_closure ++ if (fd_outer->closureVars.dim || ++ irs->getFrameInfo(fd_outer)->creates_closure) + #else +- fd_outer->nestedFrameRef ++ if(fd_outer->nestedFrameRef) + #endif +- ) +- vthis_value = irs->getFrameForNestedClass(class_decl); // %% V2: rec_type->class_type +- else ++ vthis_value = irs->getFrameForNestedClass(class_decl); // %% V2: rec_type->class_type ++ else ++ vthis_value = irs->var(fd_outer->vthis); ++ } ++ else { + vthis_value = d_null_pointer; ++ } + } else { + assert(0); + } +@@ -3681,27 +3684,28 @@ + LabelStatement::toIR(IRState* irs) + { + FuncDeclaration * func = irs->func; +-#if 0 +- LabelDsymbol * label = fwdrefs ? func->returnLabel : func->searchLabel(ident); +-#else +- LabelDsymbol * label = isReturnLabel ? func->returnLabel : func->searchLabel(ident); +-#endif +- tree t = irs->getLabelTree( label ); ++ LabelDsymbol * label = irs->isReturnLabel(ident) ? func->returnLabel : func->searchLabel(ident); ++ tree t_label; + +- if (t) { +- TREE_USED(t) = 1; +- irs->doLabel(t); ++ if ( (t_label = irs->getLabelTree(label)) ) ++ { ++ irs->pushLabel(label); ++ irs->doLabel(t_label); + if (label->asmLabelNum) + d_expand_priv_asm_label(irs, label->asmLabelNum); + +-#if 0 +- if (fwdrefs && func->fensure) +-#else +- if (isReturnLabel && func->fensure) +-#endif ++ if (irs->isReturnLabel(ident) && func->fensure) + func->fensure->toIR(irs); + else if (statement) + statement->toIR(irs); ++#if V1 ++ if (fwdrefs) ++ { ++ irs->checkPreviousGoto(fwdrefs); ++ delete fwdrefs; ++ fwdrefs = NULL; ++ } ++#endif + } + // else, there was an error + } +@@ -3709,15 +3713,19 @@ + void + GotoStatement::toIR(IRState* irs) + { ++ tree t_label; ++ + g.ofile->setLoc(loc); /* This makes the 'undefined label' error show up on the correct line... + The extra doLineNote in doJump shouldn't cause a problem. */ +- +- if (tf != label->statement->tf) ++ if (!label->statement) ++ error("label %s is undefined", label->toChars()); ++ else if (tf != label->statement->tf) + error("cannot goto forward out of or into finally block"); ++ else ++ irs->checkGoto(this, label); + +- tree t = irs->getLabelTree( label ); +- if (t) +- irs->doJump(this, t); ++ if ( (t_label = irs->getLabelTree(label)) ) ++ irs->doJump(this, t_label); + // else, there was an error + } + +@@ -3989,9 +3997,7 @@ + void + DefaultStatement::toIR(IRState * irs) + { +- if(! irs->currentFlow()->condition ) +- error("default cannot be in different try block level from switch"); +- ++ irs->checkSwitchCase(this, 1); + irs->doCase(NULL_TREE, cblock); + if (statement) + statement->toIR( irs ); +@@ -4001,13 +4007,13 @@ + CaseStatement::toIR(IRState * irs) + { + tree case_value; +- if(! irs->currentFlow()->condition ) +- error("case cannot be in different try block level from switch"); + + if ( exp->type->isscalar() ) + case_value = exp->toElem(irs); + else + case_value = irs->integerConstant(index, Type::tint32); ++ ++ irs->checkSwitchCase(this); + irs->doCase(case_value, cblock); + if (statement) + statement->toIR( irs ); +--- a/src/gcc/d/d-irstate.cc ++++ b/src/gcc/d/d-irstate.cc +@@ -204,17 +204,17 @@ + tree + IRBase::getLabelTree(LabelDsymbol * label) + { +- if (! label->statement) { +- error("undefined label %s", label->ident->string); // %% ident okay? ++ if (! label->statement) + return NULL_TREE; +- } +- +- if (! label->statement->lblock) { ++ ++ if (! label->statement->lblock) ++ { + tree label_decl = build_decl (LABEL_DECL, get_identifier(label->ident->string), void_type_node); + +- assert(func != 0); ++ assert(func != 0); + DECL_CONTEXT( label_decl ) = getLocalContext(); + DECL_MODE( label_decl ) = VOIDmode; // Not sure why or if this is needed ++ D_LABEL_IS_USED( label_decl ) = 1; + // Not setting this doesn't seem to cause problems (unlike VAR_DECLs) + if (label->statement->loc.filename) + g.ofile->setDeclLoc( label_decl, label->statement->loc ); // %% label->loc okay? +@@ -223,6 +223,36 @@ + return label->statement->lblock; + } + ++IRBase::Label * ++IRBase::getLabelBlock(LabelDsymbol * label, Statement * from) ++{ ++ Label * l = new Label; ++ l->block = NULL; ++ l->from = NULL; ++ l->kind = level_block; ++ l->level = 0; ++ ++ for (int i = loops.dim - 1; i >= 0; i--) ++ { ++ Flow * flow = (Flow *)loops.data[i]; ++ ++ if (flow->kind != level_block && ++ flow->kind != level_switch) ++ { ++ l->block = flow->statement; ++ l->kind = flow->kind; ++ l->level = i + 1; ++ break; ++ } ++ } ++ if (from) ++ l->from = from; ++ ++ l->label = label; ++ return l; ++} ++ ++ + IRBase::Flow * + IRBase::getLoopForLabel(Identifier * ident, bool want_continue) + { +@@ -266,6 +296,7 @@ + + flow->statement = stmt; + flow->loop = loop; ++ flow->kind = level_block; + flow->exitLabel = NULL; + flow->overrideContinueLabel = NULL; + +@@ -301,6 +332,7 @@ + Flow * flow = new Flow; + + flow->statement = stmt; ++ flow->kind = level_block; + flow->exitLabel = NULL_TREE; + flow->condition = NULL_TREE; + flow->trueBranch = NULL_TREE; +@@ -332,9 +364,8 @@ + This makes auto-vectorization possible in conditional loops. + The only excemption to this is in LabelStatement::toIR, in which + all computed labels are marked regardless. */ +- if(TREE_USED(t_label)) { ++ if(D_LABEL_IS_USED(t_label)) + addExp(build1(LABEL_EXPR, void_type_node, t_label)); +- } + } + + #endif +--- a/src/gcc/d/d-irstate.h ++++ b/src/gcc/d/d-irstate.h +@@ -71,37 +71,55 @@ + tree popStatementList(); + #endif + ++ // ** Scope kinds. ++ ++ /* The kinds of levels we recognize. */ ++ typedef enum LevelKind { ++ level_block = 0, /* An ordinary block scope. */ ++ level_switch, /* A switch-block */ ++ level_try, /* A try-block. */ ++ level_catch, /* A catch-block. */ ++ level_finally, /* A finally-block. */ ++ } LevelKind; ++ + // ** Labels + ++ typedef struct ++ { ++ LabelDsymbol * label; ++ Statement * block; ++ Statement * from; ++ LevelKind kind; ++ unsigned level; ++ } Label; ++ ++ Array Labels; // of Label. ++ + // It is only valid to call this while the function in which the label is defined + // is being compiled. +- tree getLabelTree(LabelDsymbol * label); +- ++ tree getLabelTree(LabelDsymbol * label); ++ Label * getLabelBlock(LabelDsymbol * label, Statement * from = NULL); ++ bool isReturnLabel(Identifier * ident) { ++ return func->returnLabel ? ident == func->returnLabel->ident : 0; ++ } + + // ** Loops (and case statements) + #if D_GCC_VER < 40 + typedef struct + { + Statement * statement; ++ LevelKind kind; + // expand_start_case doesn't return a nesting structure, so + // we have to generate our own label for 'break' + nesting * loop; + tree exitLabel; + tree overrideContinueLabel; +- // Copied for information purposes. Not actually used. +- union { +- struct { +- tree continueLabel; +- }; +- struct { +- tree condition; +- }; +- }; + } Flow; + #else + typedef struct + { + Statement * statement; ++ LevelKind kind; + tree exitLabel; + union { + struct { +--- a/src/gcc/d/d-lang.h ++++ b/src/gcc/d/d-lang.h +@@ -91,6 +91,9 @@ + /* True if the function has been marked "naked". */ + #define D_DECL_NO_FRAME_POINTER(NODE) (DECL_LANG_FLAG_2(NODE)) + ++/* True if the label has been computed, or used by the frontend. */ ++#define D_LABEL_IS_USED(NODE) (DECL_LANG_FLAG_3(NODE)) ++ + /* The D front-end does not use the 'binding level' system for a symbol table, + It is only needed to get debugging information for local variables and + otherwise support the backend. */ +--- a/src/gcc/d/dmd/func.c ++++ b/src/gcc/d/dmd/func.c +@@ -1047,7 +1047,6 @@ + if (fensure) + { returnLabel = new LabelDsymbol(Id::returnLabel); + LabelStatement *ls = new LabelStatement(0, Id::returnLabel, fensure); +- ls->isReturnLabel = 1; //Temporary, see Issue #54 + returnLabel->statement = ls; + } + sc2 = sc2->pop(); +--- a/src/gcc/d/dmd/impcnvgen.c ++++ b/src/gcc/d/dmd/impcnvgen.c +@@ -388,8 +388,8 @@ + Y(Tint64, Tdchar) + Y(Tuns64, Tdchar) + +- Y(Tint64, Tuns64) +- Y(Tuns64, Tint64) ++// Y(Tint64, Tuns64) ++// Y(Tuns64, Tint64) + + for (i = 0; i < TMAX; i++) + for (j = 0; j < TMAX; j++) +--- a/src/gcc/d/dmd/statement.c ++++ b/src/gcc/d/dmd/statement.c +@@ -3912,11 +3912,12 @@ + error("catch at %s hides catch at %s", sj, si); + } + } +- ++#ifndef IN_GCC + if (!body || body->isEmpty()) + { + return NULL; + } ++#endif + return this; + } + +@@ -4352,8 +4353,7 @@ + this->statement = statement; + this->tf = NULL; + this->lblock = NULL; +- //this->fwdrefs = NULL; //See Issue #54 +- this->isReturnLabel = 0; ++ this->fwdrefs = NULL; + } + + Statement *LabelStatement::syntaxCopy() +--- a/src/gcc/d/dmd/statement.h ++++ b/src/gcc/d/dmd/statement.h +@@ -792,8 +792,7 @@ + TryFinallyStatement *tf; + block *lblock; // back end + +- //Array *fwdrefs; // forward references to this LabelStatement //See Issue #54 +- int isReturnLabel; ++ Array *fwdrefs; // forward references to this LabelStatement + + LabelStatement(Loc loc, Identifier *ident, Statement *statement); + Statement *syntaxCopy(); --- gcc-4.4-4.4.5.orig/debian/patches/ada-acats.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-textdomain.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-textdomain.diff @@ -0,0 +1,90 @@ +# DP: Set gettext's domain and textdomain to the versioned package name. + +--- + gcc/Makefile.in | 4 ++-- + gcc/intl.c | 4 ++-- + libcpp/Makefile.in | 8 +++++--- + libcpp/init.c | 2 +- + libcpp/system.h | 2 +- + 5 files changed, 11 insertions(+), 9 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -4792,8 +4792,8 @@ install-po: + dir=$(localedir)/$$lang/LC_MESSAGES; \ + echo $(mkinstalldirs) $(DESTDIR)$$dir; \ + $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.4.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.4.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- a/src/gcc/intl.c ++++ b/src/gcc/intl.c +@@ -51,8 +51,8 @@ gcc_init_libintl (void) + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-4.4", LOCALEDIR); ++ (void) textdomain ("gcc-4.4"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- a/src/libcpp/Makefile.in ++++ b/src/libcpp/Makefile.in +@@ -47,6 +47,7 @@ LDFLAGS = @LDFLAGS@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -4.4 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -67,8 +68,9 @@ depcomp = $(SHELL) $(srcdir)/../depcomp + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + +-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) ++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(DEBCPPFLAGS) + + libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \ + expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \ +@@ -158,8 +160,8 @@ install-strip install: all installdirs + else continue; \ + fi; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ +- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ + done + + mostlyclean: +--- a/src/libcpp/init.c ++++ b/src/libcpp/init.c +@@ -132,7 +132,7 @@ init_library (void) + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } +--- a/src/libcpp/system.h ++++ b/src/libcpp/system.h +@@ -260,7 +260,7 @@ extern int errno; + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ --- gcc-4.4-4.4.5.orig/debian/patches/pr40521-revert-workaround.diff +++ gcc-4.4-4.4.5/debian/patches/pr40521-revert-workaround.diff @@ -0,0 +1,27 @@ +# DP: Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. + +Revert: + +2009-10-05 Ramana Radhakrishnan + + * config/arm/arm.c (arm_override_options): Really initialize + flag_dwarf2_cfi_asm to 0. + +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (revision 152450) ++++ b/src/gcc/config/arm/arm.c (working copy) +@@ -1651,13 +1651,6 @@ + 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 (); + } --- gcc-4.4-4.4.5.orig/debian/patches/gdc-fix-build-arm.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-fix-build-arm.diff @@ -0,0 +1,38 @@ +# DP: Fix build on arm/armel. + +--- a/src/gcc/config/arm/arm-c.c 2007-11-05 17:13:46.000000000 +0000 ++++ b/src/gcc/config/arm/arm-c.c 2010-08-29 11:42:36.503460693 +0100 +@@ -15,7 +15,7 @@ + { + /* Tag_ABI_PCS_wchar_t. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 18, %d\n", +- (int)(TYPE_PRECISION (wchar_type_node) / BITS_PER_UNIT)); ++ (int)(WCHAR_TYPE_SIZE / BITS_PER_UNIT)); + } + + +--- a/src/gcc/d/d-gcc-includes.h 2010-08-19 12:30:20.000000000 +0100 ++++ b/src/gcc/d/d-gcc-includes.h 2010-08-23 10:44:15.709788361 +0100 +@@ -32,7 +32,11 @@ + + // hack needed to prevent inclusion of the generated insn-flags.h + // which defines some inline functions that use C prototypes.... ++// because some archs depend on this header for EH routines, ++// only do this if EH_RETURN_HANDLER_RTX is already defined. ++#ifdef EH_RETURN_HANDLER_RTX + #define GCC_INSN_FLAGS_H ++#endif + + // Conflicting definitions between stdio.h and libiberty.h over the throw() + #define HAVE_DECL_ASPRINTF 1 +--- a/src/gcc/d/phobos/gcc/deh.d 2010-08-19 13:59:09.000000000 +0100 ++++ b/src/gcc/d/phobos/gcc/deh.d 2010-08-23 10:42:05.882821950 +0100 +@@ -254,7 +254,7 @@ + ubyte *p; + ubyte *action_record; + //int handler_switch_value; +- _Unwind_Ptr /*landing_pad, */ip; ++ _Unwind_Ptr landing_pad, ip; + Phase1Info phase1; + + static if (Use_ARM_EABI_Unwinder) --- gcc-4.4-4.4.5.orig/debian/patches/sparc-force-cpu.diff +++ gcc-4.4-4.4.5/debian/patches/sparc-force-cpu.diff @@ -0,0 +1,18 @@ +# DP: On sparc default to v9a (ultrasparc) in 32bit mode + +--- a/src/gcc/config.gcc~ 2009-10-18 03:09:56.000000000 +0200 ++++ b/src/gcc/config.gcc 2009-10-21 14:44:57.000000000 +0200 +@@ -3156,6 +3156,13 @@ + ;; + esac + ++ # setting this directly fails to build a biarch defaulting to 32bit ++ case "$target" in sparc*-*-linux*) ++ if test "$option" = cpu; then ++ val=ultrasparc ++ fi ++ esac ++ + if test "x$t" = x + then + t="{ \"$option\", \"$val\" }" --- gcc-4.4-4.4.5.orig/debian/patches/arm-unbreak-eabi-armv4t.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-atom-doc.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/pr42321.diff +++ gcc-4.4-4.4.5/debian/patches/pr42321.diff @@ -0,0 +1,53 @@ +# DP: PR target/42321, backport from the trunk + +2010-03-21 Richard Earnshaw + + PR target/42321 + * arm.c (arm_output_epilogue): Correctly match VFP pop instructions + with their corresponding prologue pushes. + +Index: gcc/config/arm/arm.c +=================================================================== +--- a/src/gcc/config/arm/arm.c (revision 157608) ++++ b/src/gcc/config/arm/arm.c (revision 157609) +@@ -13731,24 +13731,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]) --- gcc-4.4-4.4.5.orig/debian/patches/libjava-nobiarch-check.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-nobiarch-check.diff @@ -0,0 +1,43 @@ +# DP: For biarch builds, disable the testsuite for the non-default architecture +# DP: for runtime libraries, which are not built by default (libjava). + +--- + libjava/testsuite/Makefile.in | 4 +++- + 2 files changed, 25 insertions(+), 1 deletions(-) + +--- a/src/libjava/testsuite/Makefile.in ++++ b/src/libjava/testsuite/Makefile.in +@@ -435,12 +435,14 @@ CTAGS: + + + check-DEJAGNU: site.exp ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//;s/,-mabi=n32//;s/,-mabi=64//'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + l='$(DEJATOOL)'; for tool in $$l; do \ +- $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \ + done; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi +--- a/src/libffi/testsuite/Makefile.in ++++ b/src/libffi/testsuite/Makefile.in +@@ -435,12 +435,14 @@ CTAGS: + + + check-DEJAGNU: site.exp ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//;s/,-mabi=n32//;s/,-mabi=64//'`"; \ ++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ + if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ + l='$(DEJATOOL)'; for tool in $$l; do \ +- $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \ + done; \ + else echo "WARNING: could not find \`runtest'" 1>&2; :;\ + fi --- gcc-4.4-4.4.5.orig/debian/patches/libstdc++-pic.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-pic.diff @@ -0,0 +1,53 @@ +# DP: Build and install libstdc++_pic.a library. + +--- + libstdc++-v3/src/Makefile.am | 4 ++++ + libstdc++-v3/src/Makefile.in | 8 +++++++- + 2 files changed, 11 insertions(+), 1 deletions(-) + +--- a/src/libstdc++-v3/src/Makefile.am ++++ b/src/libstdc++-v3/src/Makefile.am +@@ -352,6 +352,11 @@ CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@ + + ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a ++ $(mkdir_p) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Added bits to build debug library. + if GLIBCXX_BUILD_DEBUG + all-local: build_debug +--- a/src/libstdc++-v3/src/Makefile.in ++++ b/src/libstdc++-v3/src/Makefile.in +@@ -726,7 +726,7 @@ info-am: + + install-data-am: install-data-local + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local + + install-info: install-info-am + +@@ -759,6 +759,7 @@ uninstall-am: uninstall-info-am uninstall-toolexeclibLTLIBRARIES + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-local install-exec \ ++ install-exec-local \ + install-exec-am install-info install-info-am install-man \ + install-strip install-toolexeclibLTLIBRARIES installcheck \ + installcheck-am installdirs maintainer-clean \ +@@ -942,6 +943,12 @@ build_debug: stamp-debug + install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ++ ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a ++ $(mkdir_p) $(DESTDIR)$(toolexeclibdir) ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: --- gcc-4.4-4.4.5.orig/debian/patches/testsuite-hardening-printf-types.diff +++ gcc-4.4-4.4.5/debian/patches/testsuite-hardening-printf-types.diff @@ -0,0 +1,662 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -uNrp a/src/gcc/testsuite/g++.dg/ext/align1.C b/src/gcc/testsuite/g++.dg/ext/align1.C +--- a/src/gcc/testsuite/g++.dg/ext/align1.C 2002-02-06 08:18:33.000000000 -0800 ++++ b/src/gcc/testsuite/g++.dg/ext/align1.C 2009-03-17 13:40:03.000000000 -0700 +@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); + int + main (void) + { +- printf ("%d %d\n", __alignof (a1), __alignof (f1)); ++ // "%td" is not allowed by ISO C++, so use %p with a void * cast ++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); + return (__alignof (a1) < __alignof (f1)); + } +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C 2009-03-17 13:40:03.000000000 -0700 +@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, + { + void *p; + +- printf("%d %d %d\n", sz, count, type); ++ // ISO C++ does not support format size modifier "z", so use a cast ++ printf("%u %d %d\n", (unsigned int)sz, count, type); + + p = new char[sz * count]; + ((new_test *)p)->type = type; +diff -uNrp a/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c b/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c +--- a/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c 2007-05-28 04:27:34.000000000 -0700 ++++ b/src/gcc/testsuite/gcc.dg/matrix/matrix-2.c 2009-03-17 17:10:34.000000000 -0700 +@@ -42,7 +42,7 @@ main (int argc, char **argv) + } + for (i = 0; i < ARCHnodes; i++) + for (j = 0; j < 3; j++) +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*if (i!=1 || j!=1)*/ + /*if (i==1 && j==1) + continue; +@@ -83,14 +83,14 @@ mem_init (void) + for (j = 0; j < 3; j++) + { + vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); +- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); ++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); + } + } + for (i = 0; i < ARCHnodes; i++) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + } + } + +@@ -99,7 +99,7 @@ mem_init (void) + { + for (j = 0; j < 3; j++) + { +- printf ("%x\n",vel[i][j]); ++ printf ("%p\n",vel[i][j]); + /*for (k = 0; k < ARCHnodes1; k++) + { + vel[i][j][k] = d; +diff -uNrp a/src/gcc/testsuite/gcc.dg/packed-vla.c b/src/gcc/testsuite/gcc.dg/packed-vla.c +--- a/src/gcc/testsuite/gcc.dg/packed-vla.c 2007-09-11 08:08:57.000000000 -0700 ++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c 2009-03-17 17:00:46.000000000 -0700 +@@ -17,8 +17,8 @@ int func(int levels) + int b[4]; + } __attribute__ ((__packed__)) foo; + +- printf("foo %d\n", sizeof(foo)); +- printf("bar %d\n", sizeof(bar)); ++ printf("foo %d\n", (int)sizeof(foo)); ++ printf("bar %d\n", (int)sizeof(bar)); + + if (sizeof (foo) != sizeof (bar)) + abort (); +diff -uNrp a/src/gcc/testsuite/g++.dg/opt/alias2.C b/src/gcc/testsuite/g++.dg/opt/alias2.C +--- a/src/gcc/testsuite/g++.dg/opt/alias2.C 2005-04-25 11:28:55.000000000 -0700 ++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C 2009-03-17 13:40:03.000000000 -0700 +@@ -30,14 +30,14 @@ public: + + + _Deque_base::~_Deque_base() { +- printf ("bb %x %x\n", this, *_M_start._M_node); ++ printf ("bb %p %x\n", this, *_M_start._M_node); + } + + void + _Deque_base::_M_initialize_map() + { + yy = 0x123; +- printf ("aa %x %x\n", this, yy); ++ printf ("aa %p %x\n", this, yy); + + _M_start._M_node = &yy; + _M_start._M_cur = yy; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C 2003-07-01 05:01:44.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C 2009-03-17 13:40:03.000000000 -0700 +@@ -33,7 +33,7 @@ struct VBase + void Offset () const + { + printf ("VBase\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); + } + }; + +@@ -55,8 +55,8 @@ struct VDerived : virtual VBase + void Offset () const + { + printf ("VDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); + } + }; + struct B : virtual VBase +@@ -65,8 +65,8 @@ struct B : virtual VBase + void Offset () const + { + printf ("B\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); + } + }; + struct MostDerived : B, virtual VDerived +@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived + void Offset () const + { + printf ("MostDerived\n"); +- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +- printf (" B::member %d\n", &this->B::member - (int *)this); +- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); ++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); + } + }; + +@@ -95,10 +95,10 @@ int main () + if (ctorVDerived != &dum.VDerived::member) + return 24; + +- printf (" VBase::member %d\n", &dum.VBase::member - this_); +- printf (" B::member %d\n", &dum.B::member - this_); +- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); +- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); ++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); ++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); ++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); ++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); + dum.MostDerived::Offset (); + dum.B::Offset (); + dum.VDerived::Offset (); +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C 2009-03-17 13:40:03.000000000 -0700 +@@ -15,6 +15,6 @@ int main(){ + + Double_alignt<20000> heap; + +- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); ++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); + + } +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C 2007-03-22 12:44:09.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C 2009-03-17 16:08:59.000000000 -0700 +@@ -16,7 +16,7 @@ int main() + } + + catch (E *&e) { +- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); ++ printf ("address of e is %p\n", (void *)e); + return !((__SIZE_TYPE__)e != 5 && e->x == 5); + } + return 2; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C 2009-03-17 13:40:03.000000000 -0700 +@@ -42,19 +42,19 @@ public: + void DoSomething() { + PUB_A = 0; + Foo::A = 0; +- printf("%x\n",pX); ++ printf("%p\n",pX); + Foo::PUB.A = 0; +- printf("%x\n",PUB.pX); ++ printf("%p\n",PUB.pX); + B = 0; +- printf("%x\n",Foo::pY); ++ printf("%p\n",Foo::pY); + PRT_A = 0; + PRT.B = 0; +- printf("%x\n",Foo::PRT.pY); ++ printf("%p\n",Foo::PRT.pY); + PRV_A = 0; // { dg-error "" } + Foo::C = 0; // { dg-error "" } +- printf("%x\n",pZ); // { dg-error "" } ++ printf("%p\n",pZ); // { dg-error "" } + Foo::PRV.C = 0; // { dg-error "" } +- printf("%x\n",PRV.pZ); // { dg-error "" } ++ printf("%p\n",PRV.pZ); // { dg-error "" } + } + }; + +@@ -64,17 +64,17 @@ int main() + + a.PUB_A = 0; + a.A = 0; +- printf("%x\n",a.pX); ++ printf("%p\n",a.pX); + a.PRT_A = 0; // { dg-error "" } + a.B = 0; // { dg-error "" } +- printf("%x\n",a.pY); // { dg-error "" } ++ printf("%p\n",a.pY); // { dg-error "" } + a.PRV_A = 0; // { dg-error "" } + a.C = 0; // { dg-error "" } +- printf("%x\n",a.pZ); // { dg-error "" } ++ printf("%p\n",a.pZ); // { dg-error "" } + a.PUB.A = 0; +- printf("%x\n",a.PUB.pX); ++ printf("%p\n",a.PUB.pX); + a.PRT.B = 0; // { dg-error "" } +- printf("%x\n",a.PRT.pY); // { dg-error "" } ++ printf("%p\n",a.PRT.pY); // { dg-error "" } + a.PRV.C = 0; // { dg-error "" } +- printf("%x\n",a.PRV.pZ); // { dg-error "" } ++ printf("%p\n",a.PRV.pZ); // { dg-error "" } + } +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C 2009-03-17 13:40:03.000000000 -0700 +@@ -20,12 +20,12 @@ struct B { + B::operator const A&() const { + static A a; + a.i = i; +- printf("convert B to A at %x\n", &a); ++ printf("convert B to A at %p\n", (void*)&a); + return a; + } + + void f(A &a) { // { dg-error "" } in passing argument +- printf("A at %x is %d\n", &a, a.i); ++ printf("A at %p is %d\n", (void*)&a, a.i); + } + + int main() { +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C 2009-03-17 13:40:03.000000000 -0700 +@@ -17,10 +17,10 @@ public: + + int main() { + C c; +- printf("&c.x = %x\n", &c.x); +- printf("&c.B1::x = %x\n", &c.B1::x); +- printf("&c.B2::x = %x\n", &c.B2::x); +- printf("&c.A::x = %x\n", &c.A::x); ++ printf("&c.x = %p\n", (void*)&c.x); ++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); ++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); ++ printf("&c.A::x = %p\n", (void*)&c.A::x); + if (&c.x != &c.B1::x + || &c.x != &c.B2::x + || &c.x != &c.A::x) +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C 2009-03-17 13:40:03.000000000 -0700 +@@ -6,7 +6,7 @@ int fail = 0; + class Foo { + public: + virtual void setName() { +- printf("Foo at %x\n", this); ++ printf("Foo at %p\n", (void*)this); + if (vp != (void*)this) + fail = 1; + } +@@ -15,7 +15,7 @@ public: + class Bar : public Foo { + public: + virtual void init(int argc, char **argv) { +- printf("Bar's Foo at %x\n", (Foo*)this); ++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); + vp = (void*)(Foo*)this; + setName(); + } +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C 2009-03-17 13:40:03.000000000 -0700 +@@ -18,7 +18,7 @@ public: + if (ptr2 != &(*this).slist) + fail = 6; + +- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); + } + }; + +@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () + void Sim_Event_Manager::post_event () { + ptr1 = (RWSlistIterator*)&last_posted_event_position_; + ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; +- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 1; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) + fail = 2; +- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, +- &((RWSlistIterator&)last_posted_event_position_).slist); ++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, ++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); + if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) + fail = 3; + if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C 2009-03-17 13:40:03.000000000 -0700 +@@ -7,26 +7,26 @@ int num_x; + + class Y { + public: +- Y () { printf("Y() this: %x\n", this); } +- ~Y () { printf("~Y() this: %x\n", this); } ++ Y () { printf("Y() this: %p\n", (void*)this); } ++ ~Y () { printf("~Y() this: %p\n", (void*)this); } + }; + + class X { + public: + X () { + ++num_x; +- printf("X() this: %x\n", this); ++ printf("X() this: %p\n", (void*)this); + Y y; + *this = (X) y; + } + +- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } ++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } + X & operator = (const X & xx) { +- printf("X.op=(X&) this: %x\n", this); ++ printf("X.op=(X&) this: %p\n", (void*)this); + return *this; + } + +- ~X () { printf("~X() this: %x\n", this); --num_x; } ++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } + }; + + int main (int, char **) { +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C 2009-03-17 13:40:03.000000000 -0700 +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C 2009-03-17 13:40:03.000000000 -0700 +@@ -48,7 +48,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) { +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + exit(1); + } + printf ("D is destructed.\n"); +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C 2009-03-17 13:40:03.000000000 -0700 +@@ -38,7 +38,7 @@ public: + virtual void xx(int doit) { + --num; + if (ptr != this) +- printf("FAIL\n%x != %x\n", ptr, this); ++ printf("FAIL\n%p != %p\n", ptr, (void*)this); + printf ("C is destructed.\n"); + B::xx (0); + if (doit) A::xx (1); +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C 2006-02-05 01:21:29.000000000 -0800 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C 2009-03-17 13:40:03.000000000 -0700 +@@ -35,20 +35,20 @@ int foo::si = 0; + foo::foo () + { + si++; +- printf ("new foo @ 0x%x; now %d foos\n", this, si); ++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); + } + + foo::foo (const foo &other) + { + si++; +- printf ("another foo @ 0x%x; now %d foos\n", this, si); ++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); + *this = other; + } + + foo::~foo () + { + si--; +- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); ++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); + } + + int +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C 2009-03-17 13:40:03.000000000 -0700 +@@ -30,7 +30,7 @@ class B + virtual ~B() {} + void operator delete(void*,size_t s) + { +- printf("B::delete() %d\n",s); ++ printf("B::delete() %u\n",(unsigned int)s); + } + void operator delete(void*){} + }; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C 2009-03-17 13:40:03.000000000 -0700 +@@ -13,10 +13,10 @@ struct foo + int x; + foo () { + x = count++; +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + } + virtual ~foo () { +- printf("this %d = %x\n", x, (void *)this); ++ printf("this %d = %p\n", x, (void *)this); + --count; + } + }; +@@ -31,7 +31,7 @@ int main () + { + for (int j = 0; j < 3; j++) + { +- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); ++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); + } + } + // The count should be nine, if not, fail the test. +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C 2009-03-17 13:40:03.000000000 -0700 +@@ -42,7 +42,7 @@ B_table b; + bar jar; + + int main() { +- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); ++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); + B_table::B_ti_fn z = &B_table::func1; + int j = 1; + jar.call_fn_fn1(j,(void *)&z); +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C 2009-03-17 13:40:03.000000000 -0700 +@@ -7,11 +7,11 @@ class T { + public: + T() { + i = 1; +- printf("T() at %x\n", this); ++ printf("T() at %p\n", (void*)this); + } + T(const T& o) { + i = o.i; +- printf("T(const T&) at %x <-- %x\n", this, &o); ++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); + } + T operator +(const T& o) { + T r; +@@ -21,7 +21,7 @@ public: + operator int () { + return i; + } +- ~T() { printf("~T() at %x\n", this); } ++ ~T() { printf("~T() at %p\n", (void*)this); } + } s, b; + + int foo() { return getenv("TEST") == 0; } +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C 2009-03-17 16:09:42.000000000 -0700 +@@ -5,16 +5,16 @@ int c, d; + class Foo + { + public: +- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } +- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } ++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } ++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } ++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } + }; + + // Bar creates constructs a temporary Foo() as a default + class Bar + { + public: +- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } + }; + + void fakeRef(Bar *) +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C 2009-03-17 13:40:03.000000000 -0700 +@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) + struct A + { + virtual void f () { +- printf ("%x\n", this); ++ printf ("%p\n", (void*)this); + } + }; + +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C 2009-03-17 13:40:03.000000000 -0700 +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C 2009-03-17 13:40:03.000000000 -0700 +@@ -13,7 +13,7 @@ struct S + + template + void f(U u) +- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } ++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } + + int c[16]; + }; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C 2009-03-17 13:40:03.000000000 -0700 +@@ -6,7 +6,7 @@ template + struct S + { + template +- void f(U u) { printf ("%d\n", sizeof (U)); } ++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } + + int i[4]; + }; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C 2009-03-17 13:40:03.000000000 -0700 +@@ -16,7 +16,7 @@ template + template + void S::f(U u) + { +- printf ("%d\n", sizeof (U)); ++ printf ("%d\n", (int)sizeof (U)); + } + + +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C 2006-02-05 01:21:29.000000000 -0800 ++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C 2009-03-17 13:40:03.000000000 -0700 +@@ -10,9 +10,9 @@ struct frob { + + template + void frob::print () { +- printf ("this = %08x\n", this); +- printf (" ptr = %08x\n", ptr); +- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); ++ printf ("this = %p\n", (void*)this); ++ printf (" ptr = %p\n", (void*)ptr); ++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); + } + + static int x[10]; +diff -uNrp a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C 2003-04-30 19:02:59.000000000 -0700 ++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C 2009-03-17 13:40:03.000000000 -0700 +@@ -44,15 +44,15 @@ int main() + A * a = new B; + B * b = dynamic_cast(a); + +- printf("%p\n",b); // (*2*) ++ printf("%p\n",(void*)b); // (*2*) + b->print(); + + a = b; +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); + + a = a->clone(); +- printf("%p\n",a); ++ printf("%p\n",(void*)a); + a->print(); // (*1*) + + return 0; +diff -uNrp a/src/gcc/testsuite/gcc.dg/pch/inline-4.c b/src/gcc/testsuite/gcc.dg/pch/inline-4.c +--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c 2009-03-20 09:08:02.000000000 -0700 ++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c 2009-03-20 13:43:53.000000000 -0700 +@@ -1,6 +1,6 @@ + #include "inline-4.h" + extern int printf (const char *, ...); + int main(void) { +- printf (getstring()); ++ printf ("%s", getstring()); + return 0; + } --- gcc-4.4-4.4.5.orig/debian/patches/libjava-armel-unwind.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-armel-unwind.diff @@ -0,0 +1,19 @@ +# DP: On armel, apply kludge to fix unwinder infinitely looping 'til it runs out +# DP: of memory (http://gcc.gnu.org/ml/java/2008-06/msg00010.html). + +--- + libjava/stacktrace.cc | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +--- a/src/libjava/stacktrace.cc ++++ b/src/libjava/stacktrace.cc +@@ -115,6 +115,9 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr) + // Check if the trace buffer needs to be extended. + if (pos == state->length) + { ++ // http://gcc.gnu.org/ml/java/2008-06/msg00010.html ++ return _URC_END_OF_STACK; ++ + int newLength = state->length * 2; + void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame)); + memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame)); --- gcc-4.4-4.4.5.orig/debian/patches/gdc-libphobos-std-format.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-libphobos-std-format.diff @@ -0,0 +1,19 @@ +# DP: Replace assert by FormatError on untested archs. + +--- a/src/gcc/d/phobos/std/format.d 2010-08-19 13:59:09.000000000 +0100 ++++ b/src/gcc/d/phobos/std/format.d 2010-08-23 11:04:26.685788730 +0100 +@@ -963,13 +963,9 @@ + // Structs are pass-by-reference in V4 ABI + s = tis.xtoString(va_arg!(void*)(argptr)); + } +- else version(X86_64) +- { +- throw new FormatError("cannot portably format a struct on this target"); +- } + else + { +- static assert(0, "unimplemented"); ++ throw new FormatError("cannot portably format a struct on this target"); + } + } + else --- gcc-4.4-4.4.5.orig/debian/patches/ada-libgnatprj.diff +++ gcc-4.4-4.4.5/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 + ++#ifdef SJLJ_EXCEPTIONS ++ ++#undef _Unwind_GetIPInfo ++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \ ++ (abort (), (void) (ctx), *ip_before_insn = 1, 0) ++ ++#undef _Unwind_GetRegionStart ++#define _Unwind_GetRegionStart(ctx) \ ++ (abort (), (void) (ctx), 0) ++ ++#undef _Unwind_Backtrace ++#define _Unwind_Backtrace(trace_fn,state_ptr) \ ++ (fallback_backtrace (trace_fn, state_ptr)) ++ + /* Unwind through the call stack calling TRACE_FN with STATE for every stack + frame. Returns the reason why the unwinding was stopped. */ + _Unwind_Reason_Code +@@ -20,4 +34,7 @@ fallback_backtrace (_Unwind_Trace_Fn, _Jv_UnwindState *) + { + return _URC_NO_REASON; + } ++ ++#endif /* SJLJ_EXCEPTIONS */ ++ + #endif --- gcc-4.4-4.4.5.orig/debian/patches/gcc-system-root.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-system-root.diff @@ -0,0 +1,17 @@ +# DP: Avoid include paths starting with a double slash + +--- a/src/gcc/configure.ac ++++ b/src/gcc/configure.ac +@@ -751,8 +751,10 @@ + yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;; + *) TARGET_SYSTEM_ROOT=$with_sysroot ;; + esac +- +- TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' ++ ++ if test "x$TARGET_SYSTEM_ROOT" != x/; then ++ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"' ++ fi + CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' + + if test "x$prefix" = xNONE; then --- gcc-4.4-4.4.5.orig/debian/patches/fix-warnings.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-default-format-security.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/cell-branch.diff +++ gcc-4.4-4.4.5/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 (Pmode, data->size); +- 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 (Pmode, -data->size); +- 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.5.orig/debian/patches/ada-driver-check.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/svn-doc-updates.diff +++ gcc-4.4-4.4.5/debian/patches/svn-doc-updates.diff @@ -0,0 +1,6 @@ +# DP: updates from the 4.4 branch upto 2010xxxx (documentation). + +svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_4_5_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch \ + | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \ + | awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0' + --- gcc-4.4-4.4.5.orig/debian/patches/pr41848.diff +++ gcc-4.4-4.4.5/debian/patches/pr41848.diff @@ -0,0 +1,54 @@ +# DP: Fix PR objc/41848 - workaround ObjC and -fsection-anchors. + +--- a/src/gcc/objc/lang-specs.h (revision 153702) ++++ b/src/gcc/objc/lang-specs.h (working copy) +@@ -26,29 +26,33 @@ along with GCC; see the file COPYING3. + {"@objective-c", + "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ + %(cpp_options) %(cpp_debug_options)}\ ++ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \ + %{!E:%{!M:%{!MM:\ + %{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 %{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) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{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 -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ +- %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, ++ "%{!M:%{!MM:%{!E:cc1obj -fno-section-anchors -fpreprocessed %i %(cc1_options) %{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", + "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ + %(cpp_options) %(cpp_debug_options)}\ ++ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \ + %{!E:%{!M:%{!MM:\ + %{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) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj -fpreprocessed %b.mi %(cc1_options) -fno-section-anchors %{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) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{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/testsuite/objc/execute/forward-1.x (revision 153702) ++++ b/src/gcc/testsuite/objc/execute/forward-1.x (working copy) +@@ -6,6 +6,7 @@ load_lib target-supports.exp + + if { ([istarget x86_64-*-linux*] && [check_effective_target_lp64] ) + || [istarget powerpc*-*-linux*] ++ || [istarget arm*] + || [istarget powerpc*-*-aix*] + || [istarget s390*-*-*-linux*] + || [istarget sh4-*-linux*] --- gcc-4.4-4.4.5.orig/debian/patches/armel-hilo-union-class.diff +++ gcc-4.4-4.4.5/debian/patches/armel-hilo-union-class.diff @@ -0,0 +1,103 @@ +# DP: ARM EABI (armel) gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload ICE + +This patch fixes a reload ICE in the Fortran vector_subscript_1.f90 +test case (as part of the work Andrew Jenner and I have been doing at +CodeSourcery to fix ObjC and Fortran for Debian). It's been submitted +for comments to gcc-patches@ also: + + http://gcc.gnu.org/ml/gcc-patches/2008-04/msg02033.html + +So, an alternative patch may appear in due course, although this one +works fine for the test case in question. + +Cheers, + +Julian + +ChangeLog + + gcc/ + * config/arm/arm.h (reg_class): Add HILO_REGS class as union of + HI_REGS and LO_REGS. + (REG_CLASS_NAMES): Likewise. + (REG_CLASS_CONTENTS): Likewise. + (PREFERRED_RELOAD_CLASS): Prefer LO_REGS for HILO_REGS reloads. + * config/arm/arm.md (*thumb1_movsi_insn): Only use + for !optimize_size. + (*thumb1_movsi_insn_osize): New. Use for optimize_size Thumb-1 + +--- + gcc/config/arm/arm.h | 6 +++++- + gcc/config/arm/arm.md | 25 ++++++++++++++++++++++++- + 2 files changed, 29 insertions(+), 2 deletions(-) + +--- a/src/gcc/config/arm/arm.h ++++ b/src/gcc/config/arm/arm.h +@@ -1138,6 +1138,7 @@ enum reg_class + STACK_REG, + BASE_REGS, + HI_REGS, ++ HILO_REGS, + CC_REG, + VFPCC_REG, + GENERAL_REGS, +@@ -1164,6 +1165,7 @@ enum reg_class + "STACK_REG", \ + "BASE_REGS", \ + "HI_REGS", \ ++ "HILO_REGS", \ + "CC_REG", \ + "VFPCC_REG", \ + "GENERAL_REGS", \ +@@ -1189,6 +1191,7 @@ enum reg_class + { 0x00002000, 0x00000000, 0x00000000, 0x00000000 }, /* STACK_REG */ \ + { 0x000020FF, 0x00000000, 0x00000000, 0x00000000 }, /* BASE_REGS */ \ + { 0x0000DF00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */ \ ++ { 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* HILO_REGS */ \ + { 0x01000000, 0x00000000, 0x00000000, 0x00000000 }, /* CC_REG */ \ + { 0x00000000, 0x00000000, 0x00000000, 0x80000000 }, /* VFPCC_REG */ \ + { 0x0200DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \ +@@ -1265,7 +1268,8 @@ enum reg_class + #define PREFERRED_RELOAD_CLASS(X, CLASS) \ + (TARGET_ARM ? (CLASS) : \ + ((CLASS) == GENERAL_REGS || (CLASS) == HI_REGS \ +- || (CLASS) == NO_REGS || (CLASS) == STACK_REG \ ++ || (CLASS) == HILO_REGS || (CLASS) == NO_REGS \ ++ || (CLASS) == STACK_REG \ + ? LO_REGS : (CLASS))) + + /* Must leave BASE_REGS reloads alone */ +--- a/src/gcc/config/arm/arm.md ++++ b/src/gcc/config/arm/arm.md +@@ -5032,7 +5032,30 @@ + (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*lhk"))] + "TARGET_THUMB1 + && ( register_operand (operands[0], SImode) +- || register_operand (operands[1], SImode))" ++ || register_operand (operands[1], SImode)) ++ && !optimize_size" ++ "@ ++ mov %0, %1 ++ mov %0, %1 ++ # ++ # ++ ldmia\\t%1, {%0} ++ stmia\\t%0, {%1} ++ ldr\\t%0, %1 ++ str\\t%1, %0 ++ mov\\t%0, %1" ++ [(set_attr "length" "2,2,4,4,2,2,2,2,2") ++ (set_attr "type" "*,*,*,*,load1,store1,load1,store1,*") ++ (set_attr "pool_range" "*,*,*,*,*,*,1020,*,*")] ++) ++ ++(define_insn "*thumb1_movsi_insn_osize" ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*l*h") ++ (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*l*h"))] ++ "TARGET_THUMB1 ++ && ( register_operand (operands[0], SImode) ++ || register_operand (operands[1], SImode)) ++ && optimize_size" + "@ + mov %0, %1 + mov %0, %1 --- gcc-4.4-4.4.5.orig/debian/patches/gcc-unwind-debug-hook.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-unwind-debug-hook.diff @@ -0,0 +1,55 @@ +# DP: Install a hook _Unwind_DebugHook, called during unwinding. Intended as +# DP: a hook for a debugger to intercept exceptions. CFA is the CFA of the +# DP: target frame. HANDLER is the PC to which control will be transferred. + +2010-04-27 Jakub Jelinek + + * unwind-dw2.c (_Unwind_DebugHook): Add used attribute. + +2009-05-27 Tom Tromey + + * unwind-dw2.c (_Unwind_DebugHook): New function. + (uw_install_context): Call _Unwind_DebugHook. + +--- a/src/gcc/unwind-dw2.c (revision 147933) ++++ b/src/gcc/unwind-dw2.c (revision 147934) +@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex + context->ra = __builtin_extract_return_addr (outer_ra); + } + ++static void _Unwind_DebugHook (void *, void *) ++ __attribute__ ((__noinline__, __used__)); ++ ++/* This function is called during unwinding. It is 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. */ ++static void ++_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)), ++ void *handler __attribute__ ((__unused__))) ++{ ++ asm (""); ++} + + /* Install TARGET into CURRENT so that we can return to it. This is a + macro because __builtin_eh_return must be invoked in the context of + our caller. */ + +-#define uw_install_context(CURRENT, TARGET) \ +- do \ +- { \ +- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ +- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ +- __builtin_eh_return (offset, handler); \ +- } \ ++#define uw_install_context(CURRENT, TARGET) \ ++ do \ ++ { \ ++ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \ ++ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \ ++ _Unwind_DebugHook ((TARGET)->cfa, handler); \ ++ __builtin_eh_return (offset, handler); \ ++ } \ + while (0) + + static long --- gcc-4.4-4.4.5.orig/debian/patches/arm-boehm-gc-locks.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-default-ssp.diff +++ gcc-4.4-4.4.5/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:%{!nostdlib:-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.5.orig/debian/patches/gcc-multiarch-linaro.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-multiarch-linaro.diff @@ -0,0 +1,375 @@ +# DP: Add multiarch support to GCC. +# DP: +# DP: Convert the multilib option to a target triplet, +# DP: add multiarch include directories and libraries path: +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: /usr/lib/-linux-gnu +# DP: to the system paths. + +2009-03-24 Arthur Loiret + + * configure.ac: Handle --enable-multiarch and --with-multiarch-defaults. + * config.gcc: Define MULTIARCH_DEFAULTS if multiarch is enabled. + * config.in [!USED_FOR_TARGET]: Undef ENABLE_MULTIARCH. + * gcc.c: include multiarch.h. + (set_multiarch_dir): New function. Adds the multiarch directories to + the library path. + [ENABLE_MULTIARCH]: Use it. + * cppdefault.c [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an include + directory for multiarch directories. + * incpath.c: include multiarch.h + [ENABLE_MULTIARCH]: Add the multiarch directory to include directories. + * Makefile.in (MULTIARCH_H): New. Use it for incpath.o and gcc.o. + * multiarch.h: New file. +--- + gcc/Makefile.in | 7 ++-- + gcc/config.gcc | 9 +++++ + gcc/config.in | 4 ++ + gcc/configure.ac | 13 ++++++++ + gcc/cppdefault.c | 6 +++ + gcc/gcc.c | 41 ++++++++++++++++++++++++ + gcc/incpath.c | 28 ++++++++++++++++ + gcc/multiarch.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 8 files changed, 196 insertions(+), 3 deletions(-) + +diff -urN gcc.orig/Makefile.in gcc/Makefile.in +--- a/src/gcc.orig/Makefile.in 2010-06-12 ++++ b/src/gcc/Makefile.in 2010-06-12 +@@ -815,6 +815,7 @@ + endif + + # Shorthand variables for dependency lists. ++MULTIARCH_H = multiarch.h + TOPLEV_H = toplev.h input.h + TARGET_H = $(TM_H) target.h insn-modes.h + MACHMODE_H = machmode.h mode-classes.def insn-modes.h +@@ -1843,7 +1844,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) $(FLAGS_H) toplev.h ++ $(MACHMODE_H) $(FLAGS_H) toplev.h $(MULTIARCH_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 \ +@@ -1985,7 +1986,7 @@ + + 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) \ +- configargs.h $(OBSTACK_H) opts.h ++ configargs.h $(OBSTACK_H) opts.h $(MULTIARCH_H) + (SHLIB_LINK='$(SHLIB_LINK)'; \ + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + $(DRIVER_DEFINES) \ +diff -urN gcc.orig/config.gcc gcc/config.gcc +--- a/src/gcc.orig/config.gcc 2010-06-12 ++++ b/src/gcc/config.gcc 2010-06-12 +@@ -3422,3 +3422,12 @@ + target_cpu_default=$target_cpu_default2 + fi + fi ++ ++if test x${enable_multiarch} = xyes; then ++ multiarch_defaults=`echo ${target_noncanonical} | sed -e 's/unknown-//'` ++ multiarch_define="__`echo ${multiarch_defaults} | tr '-' '_'`__" ++ if test x${with_multiarch_defaults} != x; then ++ multiarch_defaults=${with_multiarch_defaults} ++ fi ++ tm_defines="${tm_defines} ${multiarch_define}=1 MULTIARCH_DEFAULTS=\\\"${multiarch_defaults}\\\"" ++fi +diff -urN gcc.orig/config.in gcc/config.in +--- a/src/gcc.orig/config.in 2010-06-12 ++++ b/src/gcc/config.in 2010-06-12 +@@ -179,6 +179,10 @@ + #undef ENABLE_WIN32_REGISTRY + #endif + ++/* Define if you want to use multiarch. */ ++#ifndef USED_FOR_TARGET ++#undef ENABLE_MULTIARCH ++#endif + + /* Define to the name of a file containing a list of extra machine modes for + this architecture. */ +diff -urN gcc.orig/configure.ac gcc/configure.ac +--- a/src/gcc.orig/configure.ac 2010-06-12 ++++ b/src/gcc/configure.ac 2010-06-12 +@@ -589,6 +589,19 @@ + [], [enable_multilib=yes]) + AC_SUBST(enable_multilib) + ++# Determine whether or not multiarch is enabled. ++AC_ARG_ENABLE(multiarch, ++[ --enable-multiarch enable multiarch support], ++[ ++ enable_multiarch=yes ++ AC_DEFINE(ENABLE_MULTIARCH, 1, ++ [Define if you want to use multiarch.]) ++],[]) ++AC_SUBST(enable_multiarch) ++ ++AC_ARG_WITH(multiarch-defaults, ++[ --with-multiarch-defaults set the default multiarch directory.],) ++ + # Enable __cxa_atexit for C++. + AC_ARG_ENABLE(__cxa_atexit, + [ --enable-__cxa_atexit enable __cxa_atexit for C++], +diff -urN gcc.orig/cppdefault.c gcc/cppdefault.c +--- a/src/gcc.orig/cppdefault.c 2007-07-26 ++++ b/src/gcc/cppdefault.c 2010-06-12 +@@ -60,6 +60,9 @@ + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++# ifdef ENABLE_MULTIARCH ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, ++# endif + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -95,6 +98,9 @@ + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++# ifdef ENABLE_MULTIARCH ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, ++# endif + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +diff -urN gcc.orig/gcc.c gcc/gcc.c +--- a/src/gcc.orig/gcc.c 2010-06-12 ++++ b/src/gcc/gcc.c 2010-06-12 +@@ -71,6 +71,7 @@ + #include "system.h" + #include "coretypes.h" + #include "multilib.h" /* before tm.h */ ++#include "multiarch.h" + #include "tm.h" + #include + #if ! defined( SIGCHLD ) && defined( SIGCLD ) +@@ -383,6 +384,9 @@ + static int used_arg (const char *, int); + static int default_arg (const char *, int); + static void set_multilib_dir (void); ++#ifdef ENABLE_MULTIARCH ++static void set_multiarch_dir (void); ++#endif + static void print_multilib_info (void); + static void perror_with_name (const char *); + static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; +@@ -6924,6 +6928,11 @@ + the subdirectory based on the options. */ + set_multilib_dir (); + ++#ifdef ENABLE_MULTIARCH ++ /* Add the multiarch directories to libraries path. */ ++ set_multiarch_dir (); ++#endif ++ + /* Warn about any switches that no pass was interested in. */ + + for (i = 0; (int) i < n_switches; i++) +@@ -8078,6 +8087,39 @@ + multilib_os_dir = multilib_dir; + } + ++#ifdef ENABLE_MULTIARCH ++/* Add the multiarch directories to libraries path. This uses the converted ++ multiarch triplet from the multilib value. ++ For example, if the target supports -m32/-m64 as multilib option and ++ defaults to 64, it will add /usr/lib/$triplet_target64/lib to library ++ path if either -m64 or no multilib option at all is set. And it will ++ add /usr/lib/$triplet_target32 if -m32 is set. Triplets are defined in ++ multiarch.def. */ ++ ++static void ++set_multiarch_dir (void) ++{ ++ const char *multiarch, *path; ++ ++ multiarch = multilib_to_multiarch (multilib_dir); ++ if (multiarch == NULL) ++ { ++ fatal_ice ("\ ++Internal error: no multiarch mapping for multilib (%s)\n\ ++Please submit a full bug report.\n\ ++See %s for instructions.", ++ multilib_dir ? multilib_dir : multilib_defaults, bug_report_url); ++ } ++ else if (multiarch) ++ { ++ path = concat (STANDARD_STARTFILE_PREFIX_2, multiarch, ++ dir_separator_str, NULL); ++ add_prefix (&startfile_prefixes, path, NULL, ++ PREFIX_PRIORITY_LAST, 0, 1); ++ } ++} ++#endif ++ + /* Print out the multiple library subdirectory selection + information. This prints out a series of lines. Each line looks + like SUBDIRECTORY;@OPTION@OPTION, with as many options as is +diff -urN gcc.orig/incpath.c gcc/incpath.c +--- a/src/gcc.orig/incpath.c 2010-06-12 ++++ b/src/gcc/incpath.c 2010-06-12 +@@ -32,6 +32,7 @@ + #include "cppdefault.h" + #include "flags.h" + #include "toplev.h" ++#include "multiarch.h" + + /* Microsoft Windows does not natively support inodes. + VMS has non-numeric inodes. */ +@@ -134,6 +135,9 @@ + const struct default_include *p; + int relocated = cpp_relocated(); + size_t len; ++#ifdef ENABLE_MULTIARCH ++ const char *multiarch; ++#endif + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -152,8 +156,20 @@ + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -197,8 +213,20 @@ + else + str = update_path (p->fname, p->component); + ++#ifdef ENABLE_MULTIARCH ++ if (p->multilib == 1 && imultilib) ++ str = concat (str, dir_separator_str, imultilib, NULL); ++ else if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++#else + if (p->multilib && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++#endif + + add_path (str, SYSTEM, p->cxx_aware, false); + } +diff -urN gcc.orig/multiarch.h gcc/multiarch.h +--- a/src/gcc.orig/multiarch.h 1970-01-01 ++++ b/src/gcc/multiarch.h 2010-06-12 +@@ -0,0 +1,95 @@ ++/* Header for multiarch handling (include directories, libraries path). ++ Copyright (C) 2009 Free Software Foundation, Inc. ++ Contributed by Arthur Loiret ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING3. If not see ++. */ ++ ++#ifndef GCC_MULTIARCH_H ++#define GCC_MULTIARCH_H ++ ++#include "tm.h" ++ ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] = { ++#ifdef ENABLE_MULTIARCH ++ { "", MULTIARCH_DEFAULTS }, ++# if defined(__x86_64_linux_gnu__) ++ { "32", "i486-linux-gnu" }, ++# endif ++# if defined(__i486_linux_gnu__) || defined(__i686_linux_gnu__) ++ { "64", "x86_64-linux-gnu" }, ++# endif ++# if defined(__powerpc64_linux_gnu__) ++ { "32", "powerpc-linux-gnu" }, ++# endif ++# if defined(__powerpc_linux_gnu__) ++ { "64", "powerpc64-linux-gnu" }, ++# endif ++# if defined(__sparc64_linux_gnu__) ++ { "32", "sparc-linux-gnu" }, ++# endif ++# if defined(__sparc_linux_gnu__) ++ { "64", "sparc64-linux-gnu" }, ++# endif ++# if defined(__s390x_linux_gnu__) ++ { "31", "s390-linux-gnu" }, ++# endif ++# if defined(__s390_linux_gnu__) ++ { "64", "s390x-linux-gnu" }, ++# endif ++# if defined(__mips_linux_gnu__) ++ { "n32", "mips64-linux-gnuabin32" }, ++ { "64", "mips64-linux-gnuabi64" }, ++# endif ++# if defined(__mipsel_linux_gnu__) ++ { "n32", "mips64el-linux-gnuabin32" }, ++ { "64", "mips64el-linux-gnuabi64" }, ++# endif ++# if defined(__x86_64_kfreebsd_gnu__) ++ { "32", "i486-kfreebsd-gnu" }, ++# endif ++# if defined(__sh4_linux_gnu__) ++ { "m4", "sh4-linux-gnu" }, ++ { "m4-nofpu", "sh4_nofpu-linux-gnu" }, ++# endif ++#endif /* ENABLE_MULTIARCH */ ++ { 0, 0 } ++}; ++ ++/* Convert the multilib option to the corresponding target triplet. ++ See multiarch.def and config.gcc for multilib/multiarch pairs. ++ When the default multilib is used, the corresponding multilib/multiarch ++ pair is { "", $target_tripplet }. */ ++static inline const char* ++multilib_to_multiarch (const char *imultilib) ++{ ++ const struct multiarch_mapping *p; ++ ++ for (p = multiarch_mappings; p->multiarch; p++) ++ { ++ if (!strcmp(p->multilib, imultilib ? imultilib : "")) ++ return p->multiarch; ++ } ++ return NULL; ++} ++ ++#endif /* GCC_MULTIARCH_H */ --- gcc-4.4-4.4.5.orig/debian/patches/gdc-driver-zlib.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-driver-zlib.diff @@ -0,0 +1,58 @@ +# DP: Update the gdc driver to use the up-to-date system zlib. + +--- a/src/gcc/d/d-spec.c 2010-08-19 12:30:20.000000000 +0100 ++++ b/src/gcc/d/d-spec.c 2010-08-23 10:54:52.673819751 +0100 +@@ -93,7 +93,7 @@ + /* The number of arguments being added to what's in argv, other than + libraries. We use this to track the number of times we've inserted + -xc++/-xnone. */ +- int added = 0; ++ int added = 1; /* -lz */ + + /* Used to track options that take arguments, so we don't go wrapping + those with -xc++/-xnone. */ +@@ -414,6 +414,9 @@ + arglist[j++] = saw_profile_flag ? LIBPHOBOS_PROFILE : LIBPHOBOS; + added_libraries++; + need_pthreads = 1; ++ /* Use the up-to-date system zlib with libphobos */ ++ arglist[j++] = "-lz"; ++ added_libraries++; + } + else if (saw_debug_flag && debuglib) + { +--- a/src/gcc/d/phobos/etc/c/zlib.d 2010-08-19 13:59:09.000000000 +0100 ++++ b/src/gcc/d/phobos/etc/c/zlib.d 2010-08-23 10:55:23.717806839 +0100 +@@ -42,8 +42,8 @@ + + extern (C): + +-char[] ZLIB_VERSION = "1.2.3"; +-const ZLIB_VERNUM = 0x1230; ++char[] ZLIB_VERSION = "1.2.3.4"; ++const ZLIB_VERNUM = 0x1234; + + /* + The 'zlib' compression library provides in-memory compression and +--- a/src/gcc/d/phobos/Makefile.am 2010-08-01 14:45:55.000000000 +0100 ++++ b/src/gcc/d/phobos/Makefile.am 2010-08-23 10:56:04.798797585 +0100 +@@ -179,7 +179,7 @@ + std/stream.t.o: std/stream.d $(D_PREREQ_SRCS) + $(GDC) -o $@ $(ALL_DFLAGS) -fdeprecated -I $(srcdir) -I $(srcdir)/internal/gc -I ./$(host_alias) -c $< + +-ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) ++ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(GC_OBJS) $(WEAK_OBJS) + + libgphobos.a : $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) + $(AR) -r $@ $(ALL_PHOBOS_OBJS) $(CMAIN_OBJS) +--- a/src/gcc/d/phobos/Makefile.in 2010-08-01 14:45:55.000000000 +0100 ++++ b/src/gcc/d/phobos/Makefile.in 2010-08-23 10:56:11.565788770 +0100 +@@ -281,7 +281,7 @@ + std/windows/iunknown.o std/windows/registry.o std/windows/syserror.o \ + std/windows/charset.o std/thread_helper.o + +-ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(ZLIB_OBJS) $(GC_OBJS) $(WEAK_OBJS) ++ALL_PHOBOS_OBJS = $(D_EXTRA_OBJS) $(GCC_OBJS) $(MAIN_OBJS) $(GC_OBJS) $(WEAK_OBJS) + + # Work around what appears to be a GNU make bug handling MAKEFLAGS + # values defined in terms of make variables, as is the case for CC and --- gcc-4.4-4.4.5.orig/debian/patches/rename-info-files.diff +++ gcc-4.4-4.4.5/debian/patches/rename-info-files.diff @@ -0,0 +1,570 @@ +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + + +2004-02-17 Matthias Klose + +gcc/ChangeLog: + * Makefile.in: Allow transformations on info file names. + Define MAKEINFODEFS, macros to pass transformated info file + names to makeinfo. + * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. + * doc/cppinternals.texi: Likewise. + * doc/extend.texi: Likewise. + * doc/gcc.texi: Likewise. + * doc/gccint.texi: Likewise. + * doc/invoke.texi: Likewise. + * doc/libgcc.texi: Likewise. + * doc/makefile.texi: Likewise. + * doc/passes.texi: Likewise. + * doc/sourcebuild.texi: Likewise. + * doc/standards.texi: Likewise. + * doc/trouble.texi: Likewise. + +gcc/fortran/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * gfortran.texi: Use macros defined in MAKEINFODEFS for references. + +gcc/java/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + +--- + gcc/Makefile.in | 74 +++++++++++++++++++++++++++++++++++---------- + gcc/ada/gnat-style.texi | 2 +- + gcc/ada/gnat_rm.texi | 2 +- + gcc/doc/cpp.texi | 2 +- + gcc/doc/cppinternals.texi | 2 +- + gcc/doc/extend.texi | 2 +- + gcc/doc/gcc.texi | 6 ++-- + gcc/doc/gccint.texi | 4 +- + gcc/doc/install.texi | 2 +- + gcc/doc/invoke.texi | 8 ++-- + gcc/doc/libgcc.texi | 2 +- + gcc/doc/makefile.texi | 2 +- + gcc/doc/passes.texi | 2 +- + gcc/doc/standards.texi | 4 +- + gcc/fortran/Make-lang.in | 11 ++++--- + gcc/fortran/gfortran.texi | 2 +- + gcc/java/Make-lang.in | 18 +++++++++-- + gcc/java/gcj.texi | 20 ++++++------ + libgomp/Makefile.am | 13 +++++--- + libgomp/Makefile.in | 14 +++++---- + libgomp/libgomp.texi | 2 +- + 21 files changed, 127 insertions(+), 67 deletions(-) + +--- a/src/gcc/Makefile.in ++++ b/src/gcc/Makefile.in +@@ -3809,8 +3809,27 @@ stmp-install-fixproto: fixproto + + doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug + +-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ +- doc/gccinstall.info doc/cppinternals.info ++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') ++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') ++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') ++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') ++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') ++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') ++ ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)') ++ ++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ ++ doc/$(INFO_GCCINT_NAME).info \ ++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info ++ ++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' -D 'fngcc $(INFO_GCC_NAME)' \ ++ -D 'fngxx $(INFO_GXX_NAME)' \ ++ -D 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ ++ -D 'fngcj $(INFO_GCJ_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3860,21 +3879,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) + # patterns. To use them, put each of the specific targets with its + # specific dependencies but no build commands. + +-doc/cpp.info: $(TEXI_CPP_FILES) +-doc/gcc.info: $(TEXI_GCC_FILES) +-doc/gccint.info: $(TEXI_GCCINT_FILES) +-doc/cppinternals.info: $(TEXI_CPPINT_FILES) +- ++# Generic entry to handle info files, which are not renamed (currently Ada) + doc/%.info: %.texi + if [ x$(BUILD_INFO) = xinfo ]; then \ + $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ + # Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ + -I $(gcc_docdir)/include -o $@ $<; \ + fi + +@@ -4185,11 +4224,11 @@ install-driver: installdirs xgcc$(exeext) + # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir + # to do the install. + install-info:: doc installdirs \ +- $(DESTDIR)$(infodir)/cpp.info \ +- $(DESTDIR)$(infodir)/gcc.info \ +- $(DESTDIR)$(infodir)/cppinternals.info \ +- $(DESTDIR)$(infodir)/gccinstall.info \ +- $(DESTDIR)$(infodir)/gccint.info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ ++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ + lang.install-info + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs +@@ -4390,8 +4429,11 @@ uninstall: lang.uninstall + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext) +- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* +- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* + # + # These targets are for the dejagnu testsuites. The file site.exp + # contains global variables that all the testsuites will use. +--- a/src/gcc/ada/gnat-style.texi ++++ b/src/gcc/ada/gnat-style.texi +@@ -31,7 +31,7 @@ Texts. A copy of the license is included in the section entitled + + @dircategory Software development + @direntry +-* gnat-style: (gnat-style). GNAT Coding Style ++* gnat-style: (gnat-style-4.3). GNAT Coding Style + @end direntry + + @macro syntax{element} +--- a/src/gcc/ada/gnat_rm.texi ++++ b/src/gcc/ada/gnat_rm.texi +@@ -38,7 +38,7 @@ included in the section entitled ``GNU Free Documentation License''. + + @dircategory GNU Ada tools + @direntry +-* GNAT Reference Manual: (gnat_rm). Reference Manual for GNU Ada tools. ++* GNAT Reference Manual: (gnat_rm-4.3). Reference Manual for GNU Ada tools. + @end direntry + + @titlepage +--- a/src/gcc/doc/cpp.texi ++++ b/src/gcc/doc/cpp.texi +@@ -52,7 +52,7 @@ This manual contains no Invariant Sections. The Front-Cover Texts are + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +--- a/src/gcc/doc/cppinternals.texi ++++ b/src/gcc/doc/cppinternals.texi +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +--- a/src/gcc/doc/extend.texi ++++ b/src/gcc/doc/extend.texi +@@ -12339,7 +12339,7 @@ want to write code that checks whether these features are available, you can + test for the GNU compiler the same way as for C programs: check for a + predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to + test specifically for GNU C++ (@pxref{Common Predefined Macros,, +-Predefined Macros,cpp,The GNU C Preprocessor}). ++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). + + @menu + * Volatiles:: What constitutes an access to a volatile object. +--- a/src/gcc/doc/gcc.texi ++++ b/src/gcc/doc/gcc.texi +@@ -65,8 +65,8 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b) + @ifnottex + @dircategory Software development + @direntry +-* gcc: (gcc). The GNU Compiler Collection. +-* g++: (gcc). The GNU C++ compiler. ++* @value{fngcc}: (@value{fngcc}). The GNU Compiler Collection. ++* @value{fngxx}: (@value{fngcc}). The GNU C++ compiler. + @end direntry + This file documents the use of the GNU compilers. + @sp 1 +@@ -126,7 +126,7 @@ version @value{version-GCC}. + The internals of the GNU compilers, including how to port them to new + targets and some information about how to write front ends for new + languages, are documented in a separate manual. @xref{Top,, +-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. ++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @menu + * G++ and GCC:: You can compile C or C++ programs. +--- a/src/gcc/doc/gccint.texi ++++ b/src/gcc/doc/gccint.texi +@@ -51,7 +51,7 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b) + @ifnottex + @dircategory Software development + @direntry +-* gccint: (gccint). Internals of the GNU Compiler Collection. ++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. + @end direntry + This file documents the internals of the GNU compilers. + @sp 1 +@@ -83,7 +83,7 @@ write front ends for new languages. It corresponds to the compilers + @value{VERSION_PACKAGE} + @end ifset + version @value{version-GCC}. The use of the GNU compilers is documented in a +-separate manual. @xref{Top,, Introduction, gcc, Using the GNU ++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU + Compiler Collection (GCC)}. + + This manual is mainly a reference manual rather than a tutorial. It +--- a/src/gcc/doc/install.texi ++++ b/src/gcc/doc/install.texi +@@ -97,7 +97,7 @@ Free Documentation License}''. + @end ifinfo + @dircategory Software development + @direntry +-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. ++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. + @end direntry + + @c Part 3 Titlepage and Copyright +--- a/src/gcc/doc/invoke.texi ++++ b/src/gcc/doc/invoke.texi +@@ -7939,7 +7939,7 @@ One of the standard libraries bypassed by @option{-nostdlib} and + @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines + that GCC uses to overcome shortcomings of particular machines, or special + needs for some languages. +-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler ++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler + Collection (GCC) Internals}, + for more discussion of @file{libgcc.a}.) + In most cases, you need @file{libgcc.a} even when you want to avoid +@@ -7947,7 +7947,7 @@ other standard libraries. In other words, when you specify @option{-nostdlib} + or @option{-nodefaultlibs} you should usually specify @option{-lgcc} as well. + This ensures that you have no unresolved references to internal GCC + library subroutines. (For example, @samp{__main}, used to ensure C++ +-constructors will be called; @pxref{Collect2,,@code{collect2}, gccint, ++constructors will be called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}.) + + @item -pie +@@ -16121,7 +16121,7 @@ Note that you can also specify places to search using options such as + @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These + take precedence over places specified using environment variables, which + in turn take precedence over those specified by the configuration of GCC@. +-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, ++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, + GNU Compiler Collection (GCC) Internals}. + + @table @env +@@ -16276,7 +16276,7 @@ the headers it contains change. + + A precompiled header file will be searched for when @code{#include} is + seen in the compilation. As it searches for the included file +-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the ++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the + compiler looks for a precompiled header in each directory just before it + looks for the include file in that directory. The name searched for is + the name specified in the @code{#include} with @samp{.gch} appended. If +--- a/src/gcc/doc/libgcc.texi ++++ b/src/gcc/doc/libgcc.texi +@@ -24,7 +24,7 @@ that needs them. + GCC will also generate calls to C library routines, such as + @code{memcpy} and @code{memset}, in some cases. The set of routines + that GCC may possibly use is documented in @ref{Other +-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. ++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. + + These routines take arguments and return values of a specific machine + mode, not a specific C type. @xref{Machine Modes}, for an explanation +--- a/src/gcc/doc/makefile.texi ++++ b/src/gcc/doc/makefile.texi +@@ -140,7 +140,7 @@ regardless of how it itself was compiled. + @item profiledbootstrap + Builds a compiler with profiling feedback information. For more + information, see +-@ref{Building,,Building with profile feedback,gccinstall,Installing GCC}. ++@ref{Building,,Building with profile feedback,@value{fngccinstall},Installing GCC}. + + @item restrap + Restart a bootstrap, so that everything that was not built with +--- a/src/gcc/doc/passes.texi ++++ b/src/gcc/doc/passes.texi +@@ -196,7 +196,7 @@ rid of it. This pass is located in @file{tree-cfg.c} and described by + @item Mudflap declaration registration + + If mudflap (@pxref{Optimize Options,,-fmudflap -fmudflapth +--fmudflapir,gcc,Using the GNU Compiler Collection (GCC)}) is ++-fmudflapir,@value{fngcc},Using the GNU Compiler Collection (GCC)}) is + enabled, we generate code to register some variable declarations with + the mudflap runtime. Specifically, the runtime tracks the lifetimes of + those variable declarations that have their addresses taken, or whose +--- a/src/gcc/doc/standards.texi ++++ b/src/gcc/doc/standards.texi +@@ -223,8 +223,8 @@ have additional useful information. + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details ++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details + of standards supported by GNU Fortran. + +-@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj}, ++@xref{Compatibility,,Compatibility with the Java Platform, @value{fngcj}, GNU gcj}, + for details of compatibility between @command{gcj} and the Java Platform. +--- a/src/gcc/fortran/Make-lang.in ++++ b/src/gcc/fortran/Make-lang.in +@@ -116,7 +116,8 @@ fortran.tags: force + cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info doc/gfc-internals.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info + fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi + fortran.html: $(build_htmldir)/gfortran/index.html + +@@ -165,10 +166,10 @@ GFORTRAN_TEXI = \ + $(srcdir)/doc/include/gcc-common.texi \ + gcc-vers.texi + +-doc/gfortran.info: $(GFORTRAN_TEXI) ++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) + if [ x$(BUILD_INFO) = xinfo ]; then \ + rm -f doc/gfortran.info-*; \ +- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ + -o $@ $<; \ + else true; fi + +@@ -234,7 +235,7 @@ fortran.install-common: install-finclude-dir installdirs + fi ; \ + fi + +-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info ++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info + + fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) + +@@ -252,7 +253,7 @@ fortran.uninstall: + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ + rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ +- rm -rf $(DESTDIR)$(infodir)/gfortran.info* ++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* + + # + # Clean hooks: +--- a/src/gcc/fortran/gfortran.texi ++++ b/src/gcc/fortran/gfortran.texi +@@ -101,7 +101,7 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b) + @ifinfo + @dircategory Software development + @direntry +-* gfortran: (gfortran). The GNU Fortran Compiler. ++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. + @end direntry + This file documents the use and the internals of + the GNU Fortran compiler, (@command{gfortran}). +--- a/src/gcc/java/Make-lang.in ++++ b/src/gcc/java/Make-lang.in +@@ -126,11 +126,23 @@ java.tags: force + etags --include TAGS.sub --include ../TAGS.sub + + +-java.info: doc/gcj.info ++TEXI_GCJ_FILES = java/gcj.texi \ ++ $(gcc_docdir)/include/gpl.texi $(gcc_docdir)/include/funding.texi \ ++ $(gcc_docdir)/include/fdl.texi $(gcc_docdir)/include/gcc-common.texi gcc-vers.texi ++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)') + +-java.srcinfo: doc/gcj.info ++java.info: doc/$(INFO_GCJ_NAME).info ++ ++java.srcinfo: doc/$(INFO_GCJ_NAME).info + -cp -p $^ $(srcdir)/doc + ++doc/$(INFO_GCJ_NAME).info: $(TEXI_GCJ_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++ rm -f $(@)*; \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) \ ++ -I$(gcc_docdir)/include -I$(srcdir)/f -o$@ $<; \ ++ fi ++ + java.dvi: doc/gcj.dvi + + JAVA_PDFFILES = doc/gcj.pdf +@@ -191,7 +203,7 @@ java.uninstall: + -rm -rf $(DESTDIR)$(man1dir)/aot-compile$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/rebuild-gcj-db$(man1ext) + +-java.install-info: $(DESTDIR)$(infodir)/gcj.info ++java.install-info: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info + + java.install-pdf: $(JAVA_PDFFILES) + @$(NORMAL_INSTALL) +--- a/src/gcc/java/gcj.texi ++++ b/src/gcc/java/gcj.texi +@@ -55,25 +55,25 @@ man page gfdl(7). + @format + @dircategory Software development + @direntry +-* Gcj: (gcj). Ahead-of-time compiler for the Java language ++* @value{fngcj}: (@value{fngcj}). Ahead-of-time compiler for the Java language + @end direntry + + @dircategory Individual utilities + @direntry +-* jcf-dump: (gcj)Invoking jcf-dump. ++* jcf-dump: (@value{fngcj}) Invoking jcf-dump. + Print information about Java class files +-* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode +-* gcj-dbtool: (gcj)Invoking gcj-dbtool. ++* gij: (@value{fngcj}) Invoking gij. GNU interpreter for Java bytecode ++* gcj-dbtool: (@value{fngcj}) Invoking gcj-dbtool. + Tool for manipulating class file databases. +-* jv-convert: (gcj)Invoking jv-convert. ++* jv-convert: (@value{fngcj}) Invoking jv-convert. + Convert file from one encoding to another +-* grmic: (gcj)Invoking grmic. ++* grmic: (@value{fngcj}) Invoking grmic. + Generate stubs for Remote Method Invocation. +-* gc-analyze: (gcj)Invoking gc-analyze. ++* gc-analyze: (@value{fngcj}) Invoking gc-analyze. + Analyze Garbage Collector (GC) memory dumps. +-* aot-compile: (gcj)Invoking aot-compile. ++* aot-compile: (@value{fngcj})Invoking aot-compile. + Compile bytecode to native and generate databases. +-* rebuild-gcj-db: (gcj)Invoking rebuild-gcj-db. ++* rebuild-gcj-db: (@value{fngcj})Invoking rebuild-gcj-db. + Merge the per-solib databases made by aot-compile + into one system-wide database. + @end direntry +@@ -159,7 +159,7 @@ and the Info entries for @file{gcj} and @file{gcc}. + + As @command{gcj} is just another front end to @command{gcc}, it supports many + of the same options as gcc. @xref{Option Summary, , Option Summary, +-gcc, Using the GNU Compiler Collection (GCC)}. This manual only documents the ++@value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual only documents the + options specific to @command{gcj}. + + @c man end +--- a/src/libgomp/Makefile.am ++++ b/src/libgomp/Makefile.am +@@ -93,16 +93,19 @@ endif + + all-local: $(STAMP_GENINSRC) + +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + + +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info +--- a/src/libgomp/Makefile.in ++++ b/src/libgomp/Makefile.in +@@ -336,7 +336,8 @@ info_TEXINFOS = libgomp.texi + + # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) + @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info +-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info ++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') ++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info + MAINTAINERCLEANFILES = $(srcdir)/libgomp.info + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive +@@ -1100,15 +1101,16 @@ install-pdf: $(PDFS) + done + + all-local: $(STAMP_GENINSRC) +- +-stamp-geninsrc: libgomp.info +- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info ++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info ++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info + @touch $@ + +-libgomp.info: $(STAMP_BUILD_INFO) ++libgomp.info: $(INFO_LIBGOMP_NAME).info ++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info ++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) + + stamp-build-info: libgomp.texi +- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi ++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi + @touch $@ + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. +--- a/src/libgomp/libgomp.texi ++++ b/src/libgomp/libgomp.texi +@@ -31,7 +31,7 @@ texts being (a) (see below), and with the Back-Cover Texts being (b) + @ifinfo + @dircategory GNU Libraries + @direntry +-* libgomp: (libgomp). GNU OpenMP runtime library ++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU OpenMP runtime library + @end direntry + + This manual documents the GNU implementation of the OpenMP API for --- gcc-4.4-4.4.5.orig/debian/patches/gdc-4.4.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-4.4.diff @@ -0,0 +1,782 @@ +# DP: Patches the GCC Directory for D. + +--- a/src/gcc/cgraph.c 2008-11-16 22:31:58.000000000 +0000 ++++ b/src/gcc/cgraph.c 2010-08-26 17:13:05.507131097 +0100 +@@ -451,6 +451,7 @@ + cgraph_node (tree decl) + { + struct cgraph_node key, *node, **slot; ++ tree context; + + gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); + +@@ -472,12 +473,16 @@ + node = cgraph_create_node (); + node->decl = decl; + *slot = node; +- if (DECL_CONTEXT (decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL) ++ if (!DECL_NO_STATIC_CHAIN (decl)) + { +- node->origin = cgraph_node (DECL_CONTEXT (decl)); +- node->next_nested = node->origin->nested; +- node->origin->nested = node; +- node->master_clone = node; ++ context = decl_function_context (decl); ++ if (context) ++ { ++ node->origin = cgraph_node (context); ++ node->next_nested = node->origin->nested; ++ node->origin->nested = node; ++ node->master_clone = node; ++ } + } + if (assembler_name_hash) + { +--- a/src/gcc/cgraphunit.c 2010-03-31 14:23:17.000000000 +0100 ++++ b/src/gcc/cgraphunit.c 2010-08-26 17:13:05.511130348 +0100 +@@ -1032,6 +1032,10 @@ + static void + cgraph_expand_function (struct cgraph_node *node) + { ++ int save_flag_omit_frame_pointer = flag_omit_frame_pointer; ++ static int inited = 0; ++ static int orig_omit_frame_pointer; ++ + tree decl = node->decl; + + /* We ought to not compile any inline clones. */ +@@ -1041,11 +1045,21 @@ + + gcc_assert (node->lowered); + ++ if (!inited) ++ { ++ inited = 1; ++ orig_omit_frame_pointer = flag_omit_frame_pointer; ++ } ++ flag_omit_frame_pointer = orig_omit_frame_pointer || ++ DECL_STRUCT_FUNCTION (decl)->naked; ++ + /* Generate RTL for the body of DECL. */ + if (lang_hooks.callgraph.emit_associated_thunks) + lang_hooks.callgraph.emit_associated_thunks (decl); + tree_rest_of_compilation (decl); + ++ flag_omit_frame_pointer = save_flag_omit_frame_pointer; ++ + /* Make sure that BE didn't give up on compiling. */ + gcc_assert (TREE_ASM_WRITTEN (decl)); + current_function_decl = NULL; +--- a/src/gcc/config/i386/i386.c 2010-04-08 16:09:17.000000000 +0100 ++++ b/src/gcc/config/i386/i386.c 2010-08-26 17:13:05.590134523 +0100 +@@ -7876,6 +7876,11 @@ + frame->red_zone_size = 0; + frame->to_allocate -= frame->red_zone_size; + frame->stack_pointer_offset -= frame->red_zone_size; ++ ++ if (cfun->naked) ++ /* As above, skip return address */ ++ frame->stack_pointer_offset = UNITS_PER_WORD; ++ + #if 0 + fprintf (stderr, "\n"); + fprintf (stderr, "size: %ld\n", (long)size); +@@ -26792,7 +26797,7 @@ + output_set_got (tmp, NULL_RTX); + + xops[1] = tmp; +- output_asm_insn ("mov{l}\t{%0@GOT(%1), %1|%1, %0@GOT[%1]}", xops); ++ output_asm_insn ("mov{l}\t{%a0@GOT(%1), %1|%1, %a0@GOT[%1]}", xops); + output_asm_insn ("jmp\t{*}%1", xops); + } + } +--- a/src/gcc/config/rs6000/rs6000.c 2010-03-27 18:56:08.000000000 +0000 ++++ b/src/gcc/config/rs6000/rs6000.c 2010-08-26 17:13:05.622134818 +0100 +@@ -17630,7 +17630,8 @@ + C is 0. Fortran is 1. Pascal is 2. Ada is 3. C++ is 9. + Java is 13. Objective-C is 14. Objective-C++ isn't assigned + a number, so for now use 9. */ +- if (! strcmp (language_string, "GNU C")) ++ if (! strcmp (language_string, "GNU C") ++ || ! strcmp (language_string, "GNU D")) + i = 0; + else if (! strcmp (language_string, "GNU F77") + || ! strcmp (language_string, "GNU Fortran")) +--- a/src/gcc/dwarf2out.c 2010-02-10 15:09:06.000000000 +0000 ++++ b/src/gcc/dwarf2out.c 2010-08-26 17:13:05.654133370 +0100 +@@ -6398,7 +6398,8 @@ + + return (lang == DW_LANG_C || lang == DW_LANG_C89 || lang == DW_LANG_ObjC + || lang == DW_LANG_C99 +- || lang == DW_LANG_C_plus_plus || lang == DW_LANG_ObjC_plus_plus); ++ || lang == DW_LANG_C_plus_plus || lang == DW_LANG_ObjC_plus_plus ++ || lang == DW_LANG_D); + } + + /* Return TRUE if the language is C++. */ +@@ -14506,6 +14507,8 @@ + language = DW_LANG_ObjC; + else if (strcmp (language_string, "GNU Objective-C++") == 0) + language = DW_LANG_ObjC_plus_plus; ++ else if (strcmp (language_string, "GNU D") == 0) ++ language = DW_LANG_D; + else + language = DW_LANG_C89; + +@@ -15688,7 +15691,7 @@ + + /* For local statics lookup proper context die. */ + if (TREE_STATIC (decl) && decl_function_context (decl)) +- context_die = lookup_decl_die (DECL_CONTEXT (decl)); ++ context_die = lookup_decl_die (decl_function_context (decl)); + + /* If we are in terse mode, don't generate any DIEs to represent any + variable declarations or definitions. */ +--- a/src/gcc/except.c 2010-03-08 11:46:28.000000000 +0000 ++++ b/src/gcc/except.c 2010-08-26 17:13:05.662141930 +0100 +@@ -200,7 +200,7 @@ + + typedef struct eh_region *eh_region; + +-struct call_site_record GTY(()) ++struct call_site_record_d GTY(()) + { + rtx landing_pad; + int action; +@@ -3198,7 +3198,7 @@ + { + call_site_record record; + +- record = GGC_NEW (struct call_site_record); ++ record = GGC_NEW (struct call_site_record_d); + record->landing_pad = landing_pad; + record->action = action; + +@@ -3399,7 +3399,7 @@ + + for (i = 0; i < n; ++i) + { +- struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); ++ struct call_site_record_d *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + size += size_of_uleb128 (cs->action); + } + +@@ -3415,7 +3415,7 @@ + + for (i = 0; i < n; ++i) + { +- struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); ++ struct call_site_record_d *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + size += size_of_uleb128 (INTVAL (cs->landing_pad)); + size += size_of_uleb128 (cs->action); + } +@@ -3432,7 +3432,7 @@ + + for (i = 0; i < n; ++i) + { +- struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); ++ struct call_site_record_d *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + char reg_start_lab[32]; + char reg_end_lab[32]; + char landing_pad_lab[32]; +@@ -3486,7 +3486,7 @@ + + for (i = 0; i < n; ++i) + { +- struct call_site_record *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); ++ struct call_site_record_d *cs = VEC_index (call_site_record, crtl->eh.call_site_record, i); + + dw2_asm_output_data_uleb128 (INTVAL (cs->landing_pad), + "region %d landing pad", i); +--- a/src/gcc/expr.c 2010-03-08 11:46:28.000000000 +0000 ++++ b/src/gcc/expr.c 2010-08-26 17:13:05.678130275 +0100 +@@ -9321,6 +9321,11 @@ + represent. */ + return const0_rtx; + ++ case STATIC_CHAIN_EXPR: ++ case STATIC_CHAIN_DECL: ++ /* Lowered by tree-nested.c */ ++ gcc_unreachable (); ++ + case EXC_PTR_EXPR: + return get_exception_pointer (); + +--- a/src/gcc/function.c 2009-11-13 19:57:51.000000000 +0000 ++++ b/src/gcc/function.c 2010-08-26 17:13:05.690132989 +0100 +@@ -3184,7 +3184,8 @@ + FUNCTION_ARG_ADVANCE (all.args_so_far, data.promoted_mode, + data.passed_type, data.named_arg); + +- assign_parm_adjust_stack_rtl (&data); ++ if (!cfun->naked) ++ assign_parm_adjust_stack_rtl (&data); + + if (assign_parm_setup_block_p (&data)) + assign_parm_setup_block (&all, parm, &data); +@@ -3199,7 +3200,8 @@ + + /* Output all parameter conversion instructions (possibly including calls) + now that all parameters have been copied out of hard registers. */ +- emit_insn (all.first_conversion_insn); ++ if (!cfun->naked) ++ emit_insn (all.first_conversion_insn); + + /* Estimate reload stack alignment from scalar return mode. */ + if (SUPPORTS_STACK_ALIGNMENT) +@@ -3351,6 +3353,9 @@ + tree fnargs, parm; + gimple_seq stmts = NULL; + ++ if (cfun->naked) ++ return NULL; ++ + assign_parms_initialize_all (&all); + fnargs = assign_parms_augmented_arg_list (&all); + +@@ -4456,11 +4461,15 @@ + tree parm = cfun->static_chain_decl; + rtx local = gen_reg_rtx (Pmode); + +- set_decl_incoming_rtl (parm, static_chain_incoming_rtx, false); + SET_DECL_RTL (parm, local); + mark_reg_pointer (local, TYPE_ALIGN (TREE_TYPE (TREE_TYPE (parm)))); + +- emit_move_insn (local, static_chain_incoming_rtx); ++ if (!cfun->custom_static_chain) ++ { ++ set_decl_incoming_rtl (parm, static_chain_incoming_rtx, false); ++ emit_move_insn (local, static_chain_incoming_rtx); ++ } ++ /* else, the static chain will be set in the main body */ + } + + /* If the function receives a non-local goto, then store the +@@ -4981,6 +4990,9 @@ + #endif + edge_iterator ei; + ++ if (cfun->naked) ++ return; ++ + rtl_profile_for_bb (ENTRY_BLOCK_PTR); + #ifdef HAVE_prologue + if (HAVE_prologue) +--- a/src/gcc/function.h 2009-09-23 15:58:58.000000000 +0100 ++++ b/src/gcc/function.h 2010-08-26 17:13:05.694133708 +0100 +@@ -137,7 +137,7 @@ + rtx x_forced_labels; + }; + +-typedef struct call_site_record *call_site_record; ++typedef struct call_site_record_d *call_site_record; + DEF_VEC_P(call_site_record); + DEF_VEC_ALLOC_P(call_site_record, gc); + +@@ -175,12 +175,12 @@ + struct gimple_df; + struct temp_slot; + typedef struct temp_slot *temp_slot_p; +-struct call_site_record; ++struct call_site_record_d; + + DEF_VEC_P(temp_slot_p); + DEF_VEC_ALLOC_P(temp_slot_p,gc); +-struct ipa_opt_pass; +-typedef struct ipa_opt_pass *ipa_opt_pass; ++struct ipa_opt_pass_d; ++typedef struct ipa_opt_pass_d *ipa_opt_pass; + + DEF_VEC_P(ipa_opt_pass); + DEF_VEC_ALLOC_P(ipa_opt_pass,heap); +@@ -600,6 +600,14 @@ + adjusts one of its arguments and forwards to another + function. */ + unsigned int is_thunk : 1; ++ ++ /* Nonzero if static chain is initialized by something other than ++ static_chain_incoming_rtx. */ ++ unsigned int custom_static_chain : 1; ++ ++ /* Nonzero if no code should be generated for prologues, copying ++ parameters, etc. */ ++ unsigned int naked : 1; + }; + + /* If va_list_[gf]pr_size is set to this, it means we don't know how +--- a/src/gcc/gcc.c 2010-01-09 00:05:06.000000000 +0000 ++++ b/src/gcc/gcc.c 2010-08-26 17:13:39.034133274 +0100 +@@ -126,6 +126,9 @@ + /* Flag set to nonzero if an @file argument has been supplied to gcc. */ + static bool at_file_supplied; + ++/* Flag set by drivers needing Pthreads. */ ++int need_pthreads; ++ + /* Flag saying to pass the greatest exit code returned by a sub-process + to the calling program. */ + static int pass_exit_codes; +@@ -373,6 +376,9 @@ + static const char *version_compare_spec_function (int, const char **); + static const char *include_spec_function (int, const char **); + static const char *print_asm_header_spec_function (int, const char **); ++ ++extern const char *d_all_sources_spec_function (int, const char **); ++extern const char *d_output_prefix_spec_function (int, const char **); + + /* The Specs Language + +@@ -480,6 +486,7 @@ + assembler has done its job. + %D Dump out a -L option for each directory in startfile_prefixes. + If multilib_dir is set, extra entries are generated with it affixed. ++ %N Output the currently selected multilib directory name + %l process LINK_SPEC as a spec. + %L process LIB_SPEC as a spec. + %G process LIBGCC_SPEC as a spec. +@@ -925,6 +932,8 @@ + #endif + #endif + ++#define GCC_SPEC_FORMAT_4 1 ++ + /* Record the mapping from file suffixes for compilation specs. */ + + struct compiler +@@ -1647,6 +1656,10 @@ + { "version-compare", version_compare_spec_function }, + { "include", include_spec_function }, + { "print-asm-header", print_asm_header_spec_function }, ++#ifdef D_USE_EXTRA_SPEC_FUNCTIONS ++ { "d-all-sources", d_all_sources_spec_function }, ++ { "d-output-prefix", d_output_prefix_spec_function }, ++#endif + #ifdef EXTRA_SPEC_FUNCTIONS + EXTRA_SPEC_FUNCTIONS + #endif +@@ -4022,6 +4035,9 @@ + } + } + ++ if (need_pthreads) ++ n_switches++; ++ + if (save_temps_flag && use_pipes) + { + /* -save-temps overrides -pipe, so that temp files are produced */ +@@ -4332,6 +4348,18 @@ + infiles[0].name = "help-dummy"; + } + ++ if (need_pthreads) ++ { ++ switches[n_switches].part1 = "pthread"; ++ switches[n_switches].args = 0; ++ switches[n_switches].live_cond = 0; ++ /* Do not print an error if there is not expansion for -pthread. */ ++ switches[n_switches].validated = 1; ++ switches[n_switches].ordering = 0; ++ ++ n_switches++; ++ } ++ + switches[n_switches].part1 = 0; + infiles[n_infiles].name = 0; + } +@@ -5337,6 +5365,17 @@ + return value; + break; + ++ case 'N': ++ if (multilib_dir) ++ { ++ arg_going = 1; ++ obstack_grow (&obstack, "-fmultilib-dir=", ++ strlen ("-fmultilib-dir=")); ++ obstack_grow (&obstack, multilib_dir, ++ strlen (multilib_dir)); ++ } ++ break; ++ + /* Here we define characters other than letters and digits. */ + + case '{': +--- a/src/gcc/gimple.c 2008-12-07 23:27:14.000000000 +0000 ++++ b/src/gcc/gimple.c 2010-08-26 17:13:05.714129477 +0100 +@@ -2535,6 +2535,9 @@ + || (SYM) == POLYNOMIAL_CHREC \ + || (SYM) == DOT_PROD_EXPR \ + || (SYM) == VEC_COND_EXPR \ ++ || (SYM) == STATIC_CHAIN_DECL \ ++ || (SYM) == STATIC_CHAIN_EXPR /* not sure if this is right...*/ \ ++ || (SYM) == VEC_COND_EXPR \ + || (SYM) == REALIGN_LOAD_EXPR) ? GIMPLE_SINGLE_RHS \ + : GIMPLE_INVALID_RHS), + #define END_OF_BASE_TREE_CODES (unsigned char) GIMPLE_INVALID_RHS, +@@ -2615,7 +2618,10 @@ + || TREE_CODE (t) == WITH_SIZE_EXPR + /* These are complex lvalues, but don't have addresses, so they + go here. */ +- || TREE_CODE (t) == BIT_FIELD_REF); ++ || TREE_CODE (t) == BIT_FIELD_REF ++ /* This is an lvalue because it will be replaced with the real ++ static chain decl. */ ++ || TREE_CODE (t) == STATIC_CHAIN_DECL); + } + + /* Return true if T is a GIMPLE condition. */ +@@ -2851,6 +2857,7 @@ + return (TREE_CODE (t) == VAR_DECL + || TREE_CODE (t) == PARM_DECL + || TREE_CODE (t) == RESULT_DECL ++ || TREE_CODE (t) == STATIC_CHAIN_DECL + || TREE_CODE (t) == SSA_NAME); + } + +--- a/src/gcc/gimple.h 2009-05-18 11:13:43.000000000 +0100 ++++ b/src/gcc/gimple.h 2010-08-26 17:13:05.722133148 +0100 +@@ -65,7 +65,7 @@ + const_gimple __gs = (GS); \ + if (gimple_code (__gs) != (CODE)) \ + gimple_check_failed (__gs, __FILE__, __LINE__, __FUNCTION__, \ +- (CODE), 0); \ ++ (CODE), ERROR_MARK); \ + } while (0) + #else /* not ENABLE_GIMPLE_CHECKING */ + #define GIMPLE_CHECK(GS, CODE) (void)0 +@@ -2216,7 +2216,7 @@ + gimple_cond_code (const_gimple gs) + { + GIMPLE_CHECK (gs, GIMPLE_COND); +- return gs->gsbase.subcode; ++ return (enum tree_code) gs->gsbase.subcode; + } + + +--- a/src/gcc/gimplify.c 2010-04-08 12:47:13.000000000 +0100 ++++ b/src/gcc/gimplify.c 2010-08-26 17:13:05.734134534 +0100 +@@ -6447,6 +6447,12 @@ + } + break; + ++ case STATIC_CHAIN_EXPR: ++ /* The argument is used as information only. No need to gimplify */ ++ case STATIC_CHAIN_DECL: ++ ret = GS_ALL_DONE; ++ break; ++ + case TREE_LIST: + gcc_unreachable (); + +--- a/src/gcc/ipa-cp.c 2009-12-27 22:39:58.000000000 +0000 ++++ b/src/gcc/ipa-cp.c 2010-08-26 17:13:05.738152434 +0100 +@@ -1393,7 +1393,7 @@ + return flag_ipa_cp; + } + +-struct ipa_opt_pass pass_ipa_cp = ++struct ipa_opt_pass_d pass_ipa_cp = + { + { + IPA_PASS, +--- a/src/gcc/ipa-inline.c 2010-02-08 14:10:15.000000000 +0000 ++++ b/src/gcc/ipa-inline.c 2010-08-26 17:13:05.742147425 +0100 +@@ -1753,7 +1753,7 @@ + return todo | execute_fixup_cfg (); + } + +-struct ipa_opt_pass pass_ipa_inline = ++struct ipa_opt_pass_d pass_ipa_inline = + { + { + IPA_PASS, +--- a/src/gcc/ipa-pure-const.c 2008-09-18 18:28:40.000000000 +0100 ++++ b/src/gcc/ipa-pure-const.c 2010-08-26 17:13:05.746146816 +0100 +@@ -910,7 +910,7 @@ + && !(errorcount || sorrycount)); + } + +-struct ipa_opt_pass pass_ipa_pure_const = ++struct ipa_opt_pass_d pass_ipa_pure_const = + { + { + IPA_PASS, +--- a/src/gcc/ipa-reference.c 2008-09-18 18:28:40.000000000 +0100 ++++ b/src/gcc/ipa-reference.c 2010-08-26 17:13:05.746146816 +0100 +@@ -1257,7 +1257,7 @@ + && !(errorcount || sorrycount)); + } + +-struct ipa_opt_pass pass_ipa_reference = ++struct ipa_opt_pass_d pass_ipa_reference = + { + { + IPA_PASS, +--- a/src/gcc/passes.c 2009-02-20 15:20:38.000000000 +0000 ++++ b/src/gcc/passes.c 2010-08-26 17:13:05.750140201 +0100 +@@ -1146,14 +1146,14 @@ + static void + add_ipa_transform_pass (void *data) + { +- struct ipa_opt_pass *ipa_pass = (struct ipa_opt_pass *) data; ++ struct ipa_opt_pass_d *ipa_pass = (struct ipa_opt_pass_d *) data; + VEC_safe_push (ipa_opt_pass, heap, cfun->ipa_transforms_to_apply, ipa_pass); + } + + /* Execute summary generation for all of the passes in IPA_PASS. */ + + static void +-execute_ipa_summary_passes (struct ipa_opt_pass *ipa_pass) ++execute_ipa_summary_passes (struct ipa_opt_pass_d *ipa_pass) + { + while (ipa_pass) + { +@@ -1167,7 +1167,7 @@ + ipa_pass->generate_summary (); + pass_fini_dump_file (pass); + } +- ipa_pass = (struct ipa_opt_pass *)ipa_pass->pass.next; ++ ipa_pass = (struct ipa_opt_pass_d *)ipa_pass->pass.next; + } + } + +@@ -1175,7 +1175,7 @@ + + static void + execute_one_ipa_transform_pass (struct cgraph_node *node, +- struct ipa_opt_pass *ipa_pass) ++ struct ipa_opt_pass_d *ipa_pass) + { + struct opt_pass *pass = &ipa_pass->pass; + unsigned int todo_after = 0; +@@ -1347,7 +1347,7 @@ + { + if (!quiet_flag && !cfun) + fprintf (stderr, "

    "); +- execute_ipa_summary_passes ((struct ipa_opt_pass *) pass); ++ execute_ipa_summary_passes ((struct ipa_opt_pass_d *) pass); + } + summaries_generated = true; + } +--- a/src/gcc/system.h 2008-07-28 15:33:56.000000000 +0100 ++++ b/src/gcc/system.h 2010-08-26 17:13:05.754132398 +0100 +@@ -786,6 +786,9 @@ + change after the fact). Beyond these uses, most other cases of + using this macro should be viewed with extreme caution. */ + ++#ifdef __cplusplus ++#define CONST_CAST2(TOTYPE,FROMTYPE,X) (const_cast (X)) ++#else + #if defined(__GNUC__) && GCC_VERSION > 4000 + /* GCC 4.0.x has a bug where it may ICE on this expression, + so does GCC 3.4.x (PR17436). */ +@@ -793,6 +796,7 @@ + #else + #define CONST_CAST2(TOTYPE,FROMTYPE,X) ((TOTYPE)(FROMTYPE)(X)) + #endif ++#endif + #define CONST_CAST(TYPE,X) CONST_CAST2(TYPE, const TYPE, (X)) + #define CONST_CAST_TREE(X) CONST_CAST(union tree_node *, (X)) + #define CONST_CAST_RTX(X) CONST_CAST(struct rtx_def *, (X)) +--- a/src/gcc/tree.def 2009-02-20 15:20:38.000000000 +0000 ++++ b/src/gcc/tree.def 2010-08-26 17:13:05.758136609 +0100 +@@ -554,6 +554,13 @@ + arguments to the call. */ + DEFTREECODE (CALL_EXPR, "call_expr", tcc_vl_exp, 3) + ++/* Operand 0 is the FUNC_DECL of the outer function for ++ which the static chain is to be computed. */ ++DEFTREECODE (STATIC_CHAIN_EXPR, "static_chain_expr", tcc_expression, 1) ++ ++/* Represents a function's static chain. It can be used as an lvalue. */ ++DEFTREECODE (STATIC_CHAIN_DECL, "static_chain_decl", tcc_expression, 0) ++ + /* Specify a value to compute along with its corresponding cleanup. + Operand 0 is the cleanup expression. + The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR, +--- a/src/gcc/tree-dump.c 2008-08-06 16:57:09.000000000 +0100 ++++ b/src/gcc/tree-dump.c 2010-08-26 17:13:05.770134642 +0100 +@@ -639,6 +639,10 @@ + } + break; + ++ case STATIC_CHAIN_EXPR: ++ dump_child ("func", TREE_OPERAND (t, 0)); ++ break; ++ + case CONSTRUCTOR: + { + unsigned HOST_WIDE_INT cnt; +--- a/src/gcc/tree-nested.c 2010-04-20 09:37:12.000000000 +0100 ++++ b/src/gcc/tree-nested.c 2010-08-26 17:13:05.774146186 +0100 +@@ -714,6 +714,8 @@ + + if (info->context == target_context) + { ++ /* might be doing something wrong to need the following line.. */ ++ get_frame_type (info); + x = build_addr (info->frame_decl, target_context); + } + else +@@ -1761,6 +1763,10 @@ + if (DECL_NO_STATIC_CHAIN (decl)) + break; + ++ /* Don't use a trampoline for a static reference. */ ++ if (TREE_STATIC (t)) ++ break; ++ + /* If we don't want a trampoline, then don't build one. */ + if (TREE_NO_TRAMPOLINE (t)) + break; +@@ -1908,6 +1914,25 @@ + walk_body (convert_gimple_call, NULL, info, gimple_omp_body (stmt)); + break; + ++ case GIMPLE_ASSIGN: ++ /* Deal with static_chain_decl */ ++ decl = gimple_op(stmt, 0); ++ if (TREE_CODE (decl) == STATIC_CHAIN_DECL) ++ { ++ tree chain = get_chain_decl (info); ++ gimple_assign_set_lhs (stmt, chain); ++ break; ++ } ++ /* Deal with static_chain_expr */ ++ decl = gimple_op(stmt, 1); ++ if (TREE_CODE (decl) == STATIC_CHAIN_EXPR) ++ { ++ tree chain = get_static_chain (info, TREE_OPERAND (decl, 0), &wi->gsi); ++ gimple_assign_set_rhs1 (stmt, chain); ++ break; ++ } ++ /* FALLTHRU */ ++ + default: + /* Keep looking for other operands. */ + *handled_ops_p = false; +@@ -2054,8 +2079,38 @@ + gimple bind; + annotate_all_with_location (stmt_list, DECL_SOURCE_LOCATION (context)); + bind = gimple_seq_first_stmt (gimple_body (context)); +- gimple_seq_add_seq (&stmt_list, gimple_bind_body (bind)); +- gimple_bind_set_body (bind, stmt_list); ++ ++ if (DECL_STRUCT_FUNCTION (root->context)->custom_static_chain) ++ { ++ /* This chicanery is needed to make sure the GIMPLE initialization ++ statements are in the right order ++ ++ CHAIN.3 = D.1614; ++ FRAME.0.__chain = CHAIN.3; ++ FRAME.0.m = m; ++ */ ++ gimple_stmt_iterator gsi = ++ gsi_start (gimple_bind_body (bind)); ++ int found = 0; ++ while (!gsi_end_p (gsi)) ++ { ++ gimple g = gsi_stmt (gsi); ++ if (gimple_code (g) == GIMPLE_ASSIGN && ++ gimple_op (g, 0) == root->chain_decl) ++ { ++ gsi_insert_seq_after (& gsi, stmt_list, GSI_SAME_STMT); ++ found = 1; ++ break; ++ } ++ gsi_next (& gsi); ++ } ++ gcc_assert (found); ++ } ++ else ++ { ++ gimple_seq_add_seq (&stmt_list, gimple_bind_body (bind)); ++ gimple_bind_set_body (bind, stmt_list); ++ } + } + + /* If a chain_decl was created, then it needs to be registered with +--- a/src/gcc/tree-pass.h 2009-02-20 15:20:38.000000000 +0000 ++++ b/src/gcc/tree-pass.h 2010-08-26 17:13:05.774146186 +0100 +@@ -157,7 +157,7 @@ + + /* Description of IPA pass with generate summary, write, execute, read and + transform stages. */ +-struct ipa_opt_pass ++struct ipa_opt_pass_d + { + struct opt_pass pass; + +@@ -390,10 +390,10 @@ + extern struct gimple_opt_pass pass_reset_cc_flags; + + /* IPA Passes */ +-extern struct ipa_opt_pass pass_ipa_inline; +-extern struct ipa_opt_pass pass_ipa_cp; +-extern struct ipa_opt_pass pass_ipa_reference; +-extern struct ipa_opt_pass pass_ipa_pure_const; ++extern struct ipa_opt_pass_d pass_ipa_inline; ++extern struct ipa_opt_pass_d pass_ipa_cp; ++extern struct ipa_opt_pass_d pass_ipa_reference; ++extern struct ipa_opt_pass_d pass_ipa_pure_const; + + extern struct simple_ipa_opt_pass pass_ipa_matrix_reorg; + extern struct simple_ipa_opt_pass pass_ipa_early_inline; +--- a/src/gcc/tree-pretty-print.c 2009-02-18 21:03:05.000000000 +0000 ++++ b/src/gcc/tree-pretty-print.c 2010-08-26 17:13:05.778131469 +0100 +@@ -1216,6 +1216,16 @@ + pp_string (buffer, " [tail call]"); + break; + ++ case STATIC_CHAIN_EXPR: ++ pp_string (buffer, "<>"); ++ break; ++ ++ case STATIC_CHAIN_DECL: ++ pp_string (buffer, "<>"); ++ break; ++ + case WITH_CLEANUP_EXPR: + NIY; + break; +--- a/src/gcc/tree-sra.c 2010-04-18 16:56:32.000000000 +0100 ++++ b/src/gcc/tree-sra.c 2010-08-26 17:13:05.786133185 +0100 +@@ -263,6 +263,8 @@ + case RECORD_TYPE: + { + bool saw_one_field = false; ++ tree last_offset = size_zero_node; ++ tree cmp; + + for (t = TYPE_FIELDS (type); t ; t = TREE_CHAIN (t)) + if (TREE_CODE (t) == FIELD_DECL) +@@ -274,6 +276,12 @@ + != TYPE_PRECISION (TREE_TYPE (t)))) + goto fail; + ++ /* Reject aliased fields created by GDC for anonymous unions. */ ++ cmp = fold_binary_to_constant (LE_EXPR, boolean_type_node, ++ DECL_FIELD_OFFSET (t), last_offset); ++ if (cmp == NULL_TREE || tree_expr_nonzero_p (cmp)) ++ goto fail; ++ + saw_one_field = true; + } + +--- a/src/gcc/tree-ssa.c 2009-08-03 20:27:32.000000000 +0100 ++++ b/src/gcc/tree-ssa.c 2010-08-26 17:13:05.790130062 +0100 +@@ -1094,8 +1094,10 @@ + && TYPE_CANONICAL (inner_type) == TYPE_CANONICAL (outer_type)) + return true; + +- /* Changes in machine mode are never useless conversions. */ +- if (TYPE_MODE (inner_type) != TYPE_MODE (outer_type)) ++ /* Changes in machine mode are never useless conversions unless we ++ deal with aggregate types in which case we defer to later checks. */ ++ if (TYPE_MODE (inner_type) != TYPE_MODE (outer_type) ++ && !AGGREGATE_TYPE_P (inner_type)) + return false; + + /* If both the inner and outer types are integral types, then the --- gcc-4.4-4.4.5.orig/debian/patches/libstdc++-arm-wno-abi.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-arm-wno-abi.diff @@ -0,0 +1,18 @@ +# DP: Temporary work around: +# DP: On arm-linux-gnueabi run the libstdc++v3 testsuite with -Wno-abi + +Index: libstdc++-v3/testsuite/lib/libstdc++.exp +=================================================================== +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp (revision 155960) ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp (working copy) +@@ -265,6 +265,10 @@ + } + append cxxflags " " + append cxxflags [getenv CXXFLAGS] ++ # ARM C++ emits an ABI warning for varargs. ++ if [istarget "arm*"] { ++ append cxxflags " -Wno-abi" ++ } + v3track cxxflags 2 + + # Always use MO files built by this test harness. --- gcc-4.4-4.4.5.orig/debian/patches/sh4-mode-switching.diff +++ gcc-4.4-4.4.5/debian/patches/sh4-mode-switching.diff @@ -0,0 +1,20 @@ +# DP: Fix PR target/41993, [sh] ICE in create_pre_exit, at mode-switching.c + +--- a/arc/gcc/mode-switching.c 2009-11-24 09:50:59.000000000 +0900 ++++ b/src/gcc/mode-switching.c 2009-11-24 09:51:02.000000000 +0900 +@@ -325,7 +325,14 @@ + else + break; + if (copy_start >= FIRST_PSEUDO_REGISTER) +- break; ++ { ++ if (!optimize) ++ { ++ last_insn = return_copy; ++ continue; ++ } ++ break; ++ } + copy_num + = hard_regno_nregs[copy_start][GET_MODE (copy_reg)]; + --- gcc-4.4-4.4.5.orig/debian/patches/cross-biarch.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/libjava-atomic-builtins-eabi.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-atomic-builtins-eabi.diff @@ -0,0 +1,139 @@ +# DP: libjava: Use atomic builtins For Linux ARM/EABI. + +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. + + +Index: libjava/configure.host +=================================================================== +--- a/src/libjava/configure.host (revision 150701) ++++ b/src/libjava/configure.host (revision 150702) +@@ -69,6 +69,7 @@ + EXCEPTIONSPEC=-fnon-call-exceptions + CHECKREFSPEC= + BACKTRACESPEC= ++ATOMICSPEC= + + # This case statement supports per-CPU defaults. + case "${host}" in +@@ -87,6 +88,7 @@ + sysdeps_dir=arm + fallback_backtrace_h=sysdep/arm/backtrace.h + libgcj_cxxflags=-Wno-abi ++ ATOMICSPEC=-fuse-atomic-builtins + ;; + mips-tx39-*|mipstx39-unknown-*) + libgcj_flags="${libgcj_flags} -G 0" +Index: libjava/configure.ac +=================================================================== +--- a/src/libjava/configure.ac (revision 150701) ++++ b/src/libjava/configure.ac (revision 150702) +@@ -1447,6 +1447,7 @@ + AC_SUBST(EXCEPTIONSPEC) + AC_SUBST(BACKTRACESPEC) + AC_SUBST(IEEESPEC) ++AC_SUBST(ATOMICSPEC) + + AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes) + AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = yes) +Index: libjava/sysdep/arm/locks.h +=================================================================== +--- a/src/libjava/sysdep/arm/locks.h (revision 150701) ++++ b/src/libjava/sysdep/arm/locks.h (revision 150702) +@@ -13,7 +13,60 @@ + + typedef size_t obj_addr_t; /* Integer type big enough for object */ + /* address. */ ++#if (__ARM_EABI__ && __linux) + ++// Atomically replace *addr by new_val if it was initially equal to old. ++// Return true if the comparison succeeded. ++// Assumed to have acquire semantics, i.e. later memory operations ++// cannot execute before the compare_and_swap finishes. ++inline static bool ++compare_and_swap(volatile obj_addr_t *addr, ++ obj_addr_t old, ++ obj_addr_t new_val) ++{ ++ return __sync_bool_compare_and_swap(addr, old, new_val); ++} ++ ++// Set *addr to new_val with release semantics, i.e. making sure ++// that prior loads and stores complete before this ++// assignment. ++inline static void ++release_set(volatile obj_addr_t *addr, obj_addr_t new_val) ++{ ++ __sync_synchronize(); ++ *(addr) = new_val; ++} ++ ++// Compare_and_swap with release semantics instead of acquire semantics. ++// On many architecture, the operation makes both guarantees, so the ++// implementation can be the same. ++inline static bool ++compare_and_swap_release(volatile obj_addr_t *addr, ++ obj_addr_t old, ++ obj_addr_t new_val) ++{ ++ return __sync_bool_compare_and_swap(addr, old, new_val); ++} ++ ++// Ensure that subsequent instructions do not execute on stale ++// data that was loaded from memory before the barrier. ++// On X86, the hardware ensures that reads are properly ordered. ++inline static void ++read_barrier() ++{ ++ __sync_synchronize(); ++} ++ ++// Ensure that prior stores to memory are completed with respect to other ++// processors. ++inline static void ++write_barrier() ++{ ++ __sync_synchronize(); ++} ++ ++#else ++ + /* Atomic compare and exchange. These sequences are not actually + atomic; there is a race if *ADDR != OLD_VAL and we are preempted + between the two swaps. However, they are very close to atomic, and +@@ -54,8 +107,8 @@ + + inline static bool + compare_and_swap_release(volatile obj_addr_t *addr, +- obj_addr_t old, +- obj_addr_t new_val) ++ obj_addr_t old, ++ obj_addr_t new_val) + { + return compare_and_swap(addr, old, new_val); + } +@@ -77,3 +130,4 @@ + } + + #endif ++#endif +Index: libjava/libgcj.spec.in +=================================================================== +--- a/src/libjava/libgcj.spec.in (revision 150701) ++++ b/src/libjava/libgcj.spec.in (revision 150702) +@@ -9,4 +9,4 @@ + %rename lib liborig + *lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig) + +-*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ -fkeep-inline-functions ++*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ -fkeep-inline-functions --- gcc-4.4-4.4.5.orig/debian/patches/ada-library-project-files-soname.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/alpha-ieee.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/ada-gnatvsn.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/testsuite-hardening-format.diff +++ gcc-4.4-4.4.5/debian/patches/testsuite-hardening-format.diff @@ -0,0 +1,95 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. +# DP: Author: Kees Cook +# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 + +dir= +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + dir="$3/" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p1 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -uNrp a/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x +--- a/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x 1969-12-31 16:00:00.000000000 -0800 ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x 2009-03-17 16:57:17.000000000 -0700 +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +diff -uNrp a/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x +--- a/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x 1969-12-31 16:00:00.000000000 -0800 ++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x 2009-03-20 00:25:19.000000000 -0700 +@@ -0,0 +1,5 @@ ++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to ++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 ++ ++set additional_flags "-U_FORTIFY_SOURCE" ++return 0 +diff -uNrp a/src/gcc/testsuite/gcc.dg/charset/builtin2.c b/src/gcc/testsuite/gcc.dg/charset/builtin2.c +--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c 2005-11-28 21:17:20.000000000 -0800 ++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c 2009-03-17 16:59:25.000000000 -0700 +@@ -3,7 +3,7 @@ + + /* { dg-do compile } */ + /* { dg-require-iconv "IBM1047" } */ +-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ ++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ + /* { dg-final { scan-assembler-not "printf" } } */ + /* { dg-final { scan-assembler-not "fprintf" } } */ + /* { dg-final { scan-assembler-not "sprintf" } } */ +diff -uNrp a/src/gcc/testsuite/gcc.dg/format/format.exp b/src/gcc/testsuite/gcc.dg/format/format.exp +--- a/src/gcc/testsuite/gcc.dg/format/format.exp 2008-12-05 12:35:34.000000000 -0800 ++++ b/src/gcc/testsuite/gcc.dg/format/format.exp 2009-03-17 17:08:18.000000000 -0700 +@@ -26,7 +26,7 @@ load_lib gcc-dg.exp + load_lib torture-options.exp + + torture-init +-set-torture-options [list { } { -DWIDE } ] ++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] + + dg-init + gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" +diff -uNrp a/src/gcc/testsuite/gcc.dg/pr30473.c b/src/gcc/testsuite/gcc.dg/pr30473.c +--- a/src/gcc/testsuite/gcc.dg/pr30473.c 2007-02-02 04:21:13.000000000 -0800 ++++ b/src/gcc/testsuite/gcc.dg/pr30473.c 2009-03-17 17:01:13.000000000 -0700 +@@ -1,7 +1,7 @@ + /* PR middle-end/30473 */ + /* Make sure this doesn't ICE. */ + /* { dg-do compile } */ +-/* { dg-options "-O2" } */ ++/* { dg-options "-O2 -Wno-format" } */ + + extern int sprintf (char *, const char *, ...); + +diff -uNrp a/src/gcc/testsuite/gcc.dg/pr38902.c b/src/gcc/testsuite/gcc.dg/pr38902.c +--- a/src/gcc/testsuite/gcc.dg/pr38902.c 2009-03-16 18:23:01.000000000 -0700 ++++ b/src/gcc/testsuite/gcc.dg/pr38902.c 2009-03-17 17:02:06.000000000 -0700 +@@ -1,6 +1,6 @@ + /* PR target/38902 */ + /* { dg-do run } */ +-/* { dg-options "-O2 -fstack-protector" } */ ++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ + /* { dg-require-effective-target fstack_protector } */ + + #ifdef DEBUG --- gcc-4.4-4.4.5.orig/debian/patches/ada-sjlj.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcc-linaro-doc.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-linaro-doc.diff @@ -0,0 +1,1617 @@ +# DP: Changes for the Linaro 4.4-2010.10-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} + +@@ -648,12 +653,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 +@@ -669,6 +675,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 +@@ -774,12 +781,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 +-affective 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 ++affective 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 +@@ -12003,7 +12081,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} +@@ -12012,6 +12090,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} +@@ -12019,6 +12098,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} +@@ -12518,8 +12598,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}, +@@ -12617,11 +12698,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. +@@ -12637,13 +12721,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 +@@ -12846,12 +12931,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 +@@ -13047,6 +13149,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 +@@ -13968,8 +14080,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 +@@ -13977,7 +14089,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). +@@ -14613,7 +14725,7 @@ + + @item -mel + @opindex mel +-Compile code for little endian mode. ++Compile code for little endian mode. + + @item -mnhwloop + @opindex mnhwloop +@@ -14625,7 +14737,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 +@@ -14742,7 +14854,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 +@@ -14917,6 +15030,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 +@@ -15278,7 +15396,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 +@@ -15554,6 +15672,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. +@@ -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.5.orig/debian/patches/ada-libgnatvsn.diff +++ gcc-4.4-4.4.5/debian/patches/ada-libgnatvsn.diff @@ -0,0 +1,1564 @@ +# DP: - Introduce a new shared library named libgnatvsn, containing +# DP: common components of GNAT under the GNAT-Modified GPL, for +# DP: use in GNAT tools, ASIS, GLADE and GPS. Link the gnat tools +# DP: against this new library. + +# This patch seems large, but the hunks in Makefile.in are actually +# generated from Makefile.def using autogen. + +# !!! Must be applied after ada-link-lib.dpatch + +Index: b/src/gnattools/Makefile.in +=================================================================== +--- a/src/gnattools/Makefile.in ++++ b/src/gnattools/Makefile.in +@@ -38,10 +38,11 @@ + 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@srcdir@/../gcc/ada ++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I../libgnatvsn + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ +- @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) ++ ../libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) + ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ADA_LIBS += -L../libgnatvsn -lgnatvsn + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -67,62 +68,34 @@ + # 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 +-# libgnatvsn and libgnatprj. ++# libgnatprj. + GNATLINK_OBJS = \ + ali.o \ +-alloc.o \ + butil.o \ +-casing.o \ +-csets.o \ +-debug.o \ + fmap.o \ +-fname.o \ + gnatlink.o \ +-gnatvsn.o \ +-hostparm.o \ + indepsw.o \ +-namet.o \ +-opt.o \ + osint.o \ +-output.o \ + prefix.o \ + rident.o \ + sdefault.o \ +-snames.o \ + stylesw.o \ + switch.o \ +-table.o \ + targparm.o \ +-tree_io.o \ +-types.o \ +-validsw.o \ +-version.o \ +-widechar.o ++validsw.o + + GNATMAKE_OBJS = \ + ali-util.o \ + ali.o \ +-alloc.o \ +-atree.o \ + binderr.o \ + butil.o \ +-casing.o \ +-csets.o \ +-debug.o \ +-einfo.o\ +-elists.o \ + err_vars.o \ + erroutc.o \ + errutil.o \ + fmap.o \ + fname-sf.o \ + fname-uf.o \ +-fname.o \ + gnatmake.o \ +-gnatvsn.o \ +-hostparm.o \ +-krunch.o \ +-lib.o \ + make.o \ + makeusg.o \ + makeutl.o \ +@@ -132,12 +105,8 @@ + mlib-tgt-specific.o \ + mlib-utl.o \ + mlib.o \ +-namet.o \ +-nlists.o \ +-opt.o \ + osint-m.o \ + osint.o \ +-output.o \ + prefix.o \ + prj-attr-pm.o \ + prj-attr.o \ +@@ -155,47 +124,58 @@ + prj-util.o \ + prj.o \ + rident.o \ +-scans.o \ + scng.o \ + sdefault.o \ + sfn_scan.o \ +-sinfo.o \ + sinput-c.o \ + sinput-p.o \ +-sinput.o \ +-snames.o \ +-stand.o \ +-stringt.o \ + styleg.o \ + stylesw.o \ + switch-m.o \ + switch.o \ +-table.o \ + targparm.o \ + tempdir.o \ +-tree_io.o \ +-types.o \ +-uintp.o \ +-uname.o \ +-urealp.o \ + usage.o \ + validsw.o \ +-version.o \ +-widechar.o \ + $(EXTRA_GNATMAKE_OBJS) + ++EXTRA_TOOLS_OBJS = \ ++bcheck.o \ ++binde.o \ ++bindgen.o \ ++bindusg.o \ ++clean.o \ ++gprep.o \ ++makegpr.o \ ++osint-b.o \ ++osint-l.o \ ++prep.o \ ++prj-makr.o \ ++prj-pp.o \ ++switch-b.o \ ++vms_conv.o \ ++vms_data.o \ ++xr_tabls.o \ ++xref_lib.o ++ ++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS) ++ + # Makefile targets + # ---------------- + + .PHONY: gnattools gnattools-native gnattools-cross regnattools + gnattools: @default_gnattools_target@ + +-# Build directory for the tools. Let's copy the target-dependent +-# sources using the same mechanism as for gnatlib. The other sources are +-# accessed using the vpath directive. ++BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.adb,$(f)))) ++SPECS := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o,@srcdir@/../gcc/ada/%.ads,$(f)))) ++ ++$(notdir $(SPECS) $(BODIES)): stamp-gnattools-sources + + stamp-gnattools-sources: +- $(LN_S) ../gcc/ada/sdefault.adb . ++ 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))) \ +@@ -203,6 +183,7 @@ + touch $@ + + gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) + +@@ -210,18 +191,16 @@ + + vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc + vpath %.h @srcdir@/../gcc/ada +-vpath %.adb .:@srcdir@/../gcc/ada +-vpath %.ads @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 and version.o. ++# of its object files, e.g. prefix.o. + vpath prefix.o ../gcc +-vpath version.o ../gcc + + # gnatlink + + gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o link.o + $(GCC) -o $@ $^ \ ++ ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +@@ -238,6 +217,7 @@ + + gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o link.o + $(GCC) -o $@ $(ADA_CFLAGS) $^ \ ++ ../libgnatvsn/libgnatvsn.a \ + ../gcc/ada/rts/libgnat.a \ + ../libiberty/libiberty.a + +@@ -251,7 +231,8 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatkr: version.o ++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 +@@ -262,7 +243,8 @@ + cp -lp $< $@ + + gnatbind gnatchop gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref: \ +-link.o version.o prefix.o ++link.o prefix.o ++ 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 +@@ -284,6 +266,8 @@ + %.o: %.c + $(GCC) -c -o $@ $< $(CFLAGS) $(INCLUDES) + ++prefix.o: ++ + # Other + # ----- + +@@ -319,13 +303,15 @@ + install-html: + + # Cleaning rules. ++.PHONY: mostlyclean clean distclean ++ + mostlyclean: + $(RM) gnatmake gnatlink $(TOOLS) *.o *.ali + +-clean: ++clean: mostlyclean + $(RM) *.ads *.adb stamp-gnattools-sources + +-distclean: ++distclean: clean + $(RM) Makefile config.status config.log + + maintainer-clean: +Index: b/src/libgnatvsn/configure +=================================================================== +--- /dev/null ++++ b/src/libgnatvsn/configure +@@ -0,0 +1,43 @@ ++#!/bin/sh ++ ++# Minimal configure script for libgnatvsn. We're only interested in ++# a few parameters. ++ ++for arg in $*; do ++ case ${arg} in ++ --build=*) ++ build=`expr ${arg} : '--build=\(.\+\)'`;; ++ --host=*) ++ host=`expr ${arg} : '--host=\(.\+\)'`;; ++ --target=*) ++ target=`expr ${arg} : '--target=\(.\+\)'`;; ++ --prefix=*) ++ prefix=`expr ${arg} : '--prefix=\(.\+\)'`;; ++ --srcdir=*) ++ srcdir=`expr ${arg} : '--srcdir=\(.\+\)'`;; ++ --with-pkgversion=*) ++ pkgversion=`expr ${arg} : '--with-pkgversion=\(.\+\)'`;; ++ --with-bugurl=*) ++ bugurl=`expr ${arg} : '--with-bugurl=\(.\+\)'`;; ++ *) ++ echo "Warning: ignoring option: ${arg}" ++ esac ++done ++ ++echo "build: ${build}" | tee config.log ++echo "host: ${host}" | tee -a config.log ++echo "target: ${target}" | tee -a config.log ++echo "prefix: ${prefix}" | tee -a config.log ++echo "srcdir: ${srcdir}" | tee -a config.log ++echo "pkgversion: ${pkgversion}" | tee -a config.log ++echo "bugurl: ${bugurl}" | tee -a config.log ++ ++echo "Creating Makefile..." | tee -a config.log ++sed -e "s,@build@,${build},g" \ ++ -e "s,@host@,${host},g" \ ++ -e "s,@target@,${target},g" \ ++ -e "s,@prefix@,${prefix},g" \ ++ -e "s,@srcdir@,${srcdir},g" \ ++ -e "s,@PKGVERSION@,${pkgversion},g" \ ++ -e "s,@REPORT_BUGS_TO@,${bugurl},g" \ ++ < ${srcdir}/Makefile.in > 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.5.orig/debian/patches/ada-symbolic-tracebacks.diff +++ gcc-4.4-4.4.5/debian/patches/ada-symbolic-tracebacks.diff @@ -0,0 +1,315 @@ +# 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 +@@ -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.5.orig/debian/patches/pr40816.diff +++ gcc-4.4-4.4.5/debian/patches/pr40816.diff @@ -0,0 +1,31 @@ +# DP: Fix PR java/40816, taken from the gcc-4_5-branch + +libjava/ + +2010-02-24 Andrew Haley + + PR java/40816 + * include/jni_md.h: jboolean is an unsigned type. + +Index: libjava/include/jni_md.h +=================================================================== +--- a/src/libjava/include/jni_md.h (revision 157046) ++++ b/src/libjava/include/jni_md.h (revision 157047) +@@ -78,7 +78,7 @@ + typedef int jshort __attribute__((__mode__(__HI__))); + typedef int jint __attribute__((__mode__(__SI__))); + typedef int jlong __attribute__((__mode__(__DI__))); +-typedef int jboolean __attribute__((__mode__(__QI__))); ++typedef unsigned int jboolean __attribute__((__mode__(__QI__))); + typedef unsigned short jchar __attribute__((__mode__(__HI__))); + typedef float jfloat; + typedef double jdouble; +@@ -99,7 +99,7 @@ + typedef float jfloat; + typedef double jdouble; + typedef jint jsize; +-typedef int8_t jboolean; ++typedef uint8_t jboolean; + typedef uint16_t jchar; + + # else /* JV_HAVE_INTTYPES_H */ --- gcc-4.4-4.4.5.orig/debian/patches/linux-atomic-builtin-expect.diff +++ gcc-4.4-4.4.5/debian/patches/linux-atomic-builtin-expect.diff @@ -0,0 +1,43 @@ +# DP: [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport) + +2010-09-01 Marcus Shawcroft + + * config/arm/linux-atomic.c (__sync_val_compare_and_swap_4): Insert __builtin_expect(). + (SUBWORD_VAL_CAS): Likewise. + +--- a/src/gcc/config/arm/linux-atomic.c ++++ b/src/gcc/config/arm/linux-atomic.c +@@ -155,12 +155,12 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) + { + actual_oldval = *ptr; + +- if (oldval != actual_oldval) ++ if (__builtin_expect (oldval != actual_oldval, 0)) + return actual_oldval; + + fail = __kernel_cmpxchg (actual_oldval, newval, ptr); + +- if (!fail) ++ if (__builtin_expect (!fail, 1)) + return oldval; + } + } +@@ -180,7 +180,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) + { \ + actual_oldval = *wordptr; \ + \ +- if (((actual_oldval & mask) >> shift) != (unsigned int) oldval) \ ++ if (__builtin_expect (((actual_oldval & mask) >> shift) != \ ++ (unsigned int) oldval, 0)) \ + return (actual_oldval & mask) >> shift; \ + \ + actual_newval = (actual_oldval & ~mask) \ +@@ -189,7 +190,7 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) + fail = __kernel_cmpxchg (actual_oldval, actual_newval, \ + wordptr); \ + \ +- if (!fail) \ ++ if (__builtin_expect (!fail, 1)) \ + return oldval; \ + } \ + } --- gcc-4.4-4.4.5.orig/debian/patches/ada-arm-eabi.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gcj-use-atomic-builtins.diff +++ gcc-4.4-4.4.5/debian/patches/gcj-use-atomic-builtins.diff @@ -0,0 +1,94 @@ +# DP: gcj: add option -fuse-atomic-builtins + +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. + +Index: gcc/java/builtins.c +=================================================================== +--- a/src/gcc/java/builtins.c (revision 155104) ++++ b/src/gcc/java/builtins.c (working copy) +@@ -305,7 +305,8 @@ + { + enum machine_mode mode = TYPE_MODE (int_type_node); + if (sync_compare_and_swap_cc[mode] != CODE_FOR_nothing +- || sync_compare_and_swap[mode] != CODE_FOR_nothing) ++ || sync_compare_and_swap[mode] != CODE_FOR_nothing ++ || flag_use_atomic_builtins) + { + tree addr, stmt; + UNMARSHAL5 (orig_call); +@@ -325,7 +326,12 @@ + { + enum machine_mode mode = TYPE_MODE (long_type_node); + if (sync_compare_and_swap_cc[mode] != CODE_FOR_nothing +- || sync_compare_and_swap[mode] != CODE_FOR_nothing) ++ || sync_compare_and_swap[mode] != CODE_FOR_nothing ++ || (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (word_mode) ++ && flag_use_atomic_builtins)) ++ /* We don't trust flag_use_atomic_builtins for multi-word ++ compareAndSwap. Some machines such as ARM have atomic libfuncs ++ but not the multi-word versions. */ + { + tree addr, stmt; + UNMARSHAL5 (orig_call); +@@ -344,7 +350,8 @@ + { + enum machine_mode mode = TYPE_MODE (ptr_type_node); + if (sync_compare_and_swap_cc[mode] != CODE_FOR_nothing +- || sync_compare_and_swap[mode] != CODE_FOR_nothing) ++ || sync_compare_and_swap[mode] != CODE_FOR_nothing ++ || flag_use_atomic_builtins) + { + tree addr, stmt; + int builtin; +Index: gcc/java/jvspec.c +=================================================================== +--- a/src/gcc/java/jvspec.c (revision 155104) ++++ b/src/gcc/java/jvspec.c (working copy) +@@ -73,6 +73,7 @@ + % + + 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.5.orig/debian/patches/libstdc++-man-3cxx.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-man-3cxx.diff @@ -0,0 +1,82 @@ +# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 + +--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in~ 2009-02-21 01:45:21.000000000 +0100 ++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in 2009-04-23 15:35:53.000000000 +0200 +@@ -1276,7 +1276,7 @@ + # The MAN_EXTENSION tag determines the extension that is added to + # the generated man pages (default is the subroutine's section .3) + +-MAN_EXTENSION = .3 ++MAN_EXTENSION = .3cxx + + # If the MAN_LINKS tag is set to YES and Doxygen generates man output, + # then it will generate one additional man file for each entity +--- a/src/libstdc++-v3/scripts/run_doxygen.orig 2009-05-02 13:11:50.000000000 +0000 ++++ b/src/libstdc++-v3/scripts/run_doxygen 2009-05-02 15:52:41.000000000 +0000 +@@ -210,6 +210,7 @@ + if $do_man; then + echo :: + echo :: Fixing up the man pages... ++mv $outdir/man/man3cxx/* $outdir/man/man3/ + cd $outdir/man/man3 + + # here's the other end of the "stupid doxygen bug" mentioned above +@@ -219,15 +220,15 @@ + find . -name "* *" -print0 | xargs -0r rm # requires GNU tools + + # Cleanups before tr1* files get killed. +-mv tr1_random_distributions.3 random_distributions.3 +-mv tr1_random_distributions_continuous.3 random_distributions_continuous.3 +-mv tr1_random_distributions_discrete.3 random_distributions_discrete.3 +-mv tr1_random_generators.3 random_generators.3 ++mv tr1_random_distributions.3cxx random_distributions.3cxx ++mv tr1_random_distributions_continuous.3cxx random_distributions_continuous.3cxx ++mv tr1_random_distributions_discrete.3cxx random_distributions_discrete.3cxx ++mv tr1_random_generators.3cxx random_generators.3cxx + + # man pages are for functions/types/other entities, not source files + # directly. who the heck would type "man foo.h" anyhow? + find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm +-rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3 ++rm -f *.h.3cxx *.hpp.3cxx *config* *.cc.3cxx *.tcc.3cxx *_t.3cxx + #rm ext_*.3 tr1_*.3 debug_*.3 + + # this is used to examine what we would have deleted, for debugging +@@ -240,7 +241,7 @@ + # and I'm off getting coffee then anyhow, so I didn't care enough to make + # this super-fast. + g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader +-problematic=`egrep -l '#include <.*_.*>' [a-z]*.3` ++problematic=`egrep -l '#include <.*_.*>' [a-z]*.3 [a-z]*.3cxx` + for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/fC#include .*/\1/p' $f` +@@ -253,7 +254,7 @@ + # Some of the pages for generated modules have text that confuses certain + # implementations of man(1), e.g., Linux's. We need to have another top-level + # *roff tag to /stop/ the .SH NAME entry. +-problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ++problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3 [A-Z]*.3cxx` + #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' + + for f in $problematic; do +@@ -267,7 +268,7 @@ + done + + # Also, break this (generated) line up. It's ugly as sin. +-problematic=`grep -l '[^^]Definition at line' *.3` ++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` + for f in $problematic; do + sed 's/Definition at line/\ + .PP\ +@@ -340,8 +341,8 @@ + istringstream ostringstream stringstream filebuf ifstream \ + ofstream fstream string; + do +- echo ".so man3/std::basic_${f}.3" > std::${f}.3 +- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 ++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx ++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx + done + + echo :: --- gcc-4.4-4.4.5.orig/debian/patches/ada-gcc-name.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/libstdc++-arm-no-check.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-arm-no-check.diff @@ -0,0 +1,12 @@ +# DP: Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi + +--- a/src/libstdc++-v3/testsuite/Makefile.in~ 2010-06-12 15:16:18.401082211 +0200 ++++ b/src/libstdc++-v3/testsuite/Makefile.in 2010-06-12 15:21:47.091076028 +0200 +@@ -556,6 +556,7 @@ + + # Run the testsuite in normal mode. + check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp ++ case "${target}" in arm*-*-linux-gnueabi) exit 0;; esac; \ + AR=$(AR); export AR; \ + RANLIB=$(RANLIB); export RANLIB; \ + if [ -z "$*$(filter-out --target_board=%, $(RUNTESTFLAGS))" ] \ --- gcc-4.4-4.4.5.orig/debian/patches/alpha-ieee-doc.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gdc-libphobos-build.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-libphobos-build.diff @@ -0,0 +1,657 @@ +# DP: Setup gcc build system for libphobos. + +--- a/src/configure 2009-04-25 05:10:29.000000000 +0100 ++++ b/src/configure 2010-08-23 11:41:36.661791965 +0100 +@@ -1918,6 +1918,7 @@ + target-boehm-gc \ + ${libgcj} \ + target-libobjc \ ++ target-libphobos \ + target-libada" + + # these tools are built using the target libraries, and are intended to +--- a/src/configure.ac 2009-04-25 05:10:29.000000000 +0100 ++++ b/src/configure.ac 2010-08-23 11:41:36.685787193 +0100 +@@ -189,6 +189,7 @@ + target-boehm-gc \ + ${libgcj} \ + target-libobjc \ ++ target-libphobos \ + target-libada" + + # these tools are built using the target libraries, and are intended to +--- a/src/Makefile.def 2009-04-25 05:10:29.000000000 +0100 ++++ b/src/Makefile.def 2010-08-23 11:41:36.685787193 +0100 +@@ -163,6 +163,7 @@ + target_modules = { module= rda; }; + target_modules = { module= libada; }; + target_modules = { module= libgomp; lib_path=.libs; }; ++target_modules = { module= libphobos; }; + + // These are (some of) the make targets to be done in each subdirectory. + // Not all; these are the ones which don't have special options. +--- a/src/Makefile.in 2009-04-25 05:10:29.000000000 +0100 ++++ b/src/Makefile.in 2010-08-23 11:41:36.765787034 +0100 +@@ -769,7 +769,8 @@ + maybe-configure-target-qthreads \ + maybe-configure-target-rda \ + maybe-configure-target-libada \ +- maybe-configure-target-libgomp ++ maybe-configure-target-libgomp \ ++ maybe-configure-target-libphobos + + # The target built for a native non-bootstrap build. + .PHONY: all +@@ -933,6 +934,7 @@ + all-target: maybe-all-target-rda + all-target: maybe-all-target-libada + all-target: maybe-all-target-libgomp ++all-target: maybe-all-target-libphobos + + # Do a target for all the subdirectories. A ``make do-X'' will do a + # ``make X'' in all subdirectories (because, in general, there is a +@@ -1048,6 +1050,7 @@ + info-target: maybe-info-target-rda + info-target: maybe-info-target-libada + info-target: maybe-info-target-libgomp ++info-target: maybe-info-target-libphobos + + .PHONY: do-dvi + do-dvi: +@@ -1158,6 +1161,7 @@ + dvi-target: maybe-dvi-target-rda + dvi-target: maybe-dvi-target-libada + dvi-target: maybe-dvi-target-libgomp ++dvi-target: maybe-dvi-target-libphobos + + .PHONY: do-pdf + do-pdf: +@@ -1268,6 +1272,7 @@ + pdf-target: maybe-pdf-target-rda + pdf-target: maybe-pdf-target-libada + pdf-target: maybe-pdf-target-libgomp ++pdf-target: maybe-pdf-target-libphobos + + .PHONY: do-html + do-html: +@@ -1378,6 +1383,7 @@ + html-target: maybe-html-target-rda + html-target: maybe-html-target-libada + html-target: maybe-html-target-libgomp ++html-target: maybe-html-target-libphobos + + .PHONY: do-TAGS + do-TAGS: +@@ -1488,6 +1494,7 @@ + TAGS-target: maybe-TAGS-target-rda + TAGS-target: maybe-TAGS-target-libada + TAGS-target: maybe-TAGS-target-libgomp ++TAGS-target: maybe-TAGS-target-libphobos + + .PHONY: do-install-info + do-install-info: +@@ -1598,6 +1605,7 @@ + install-info-target: maybe-install-info-target-rda + install-info-target: maybe-install-info-target-libada + install-info-target: maybe-install-info-target-libgomp ++install-info-target: maybe-install-info-target-libphobos + + .PHONY: do-install-pdf + do-install-pdf: +@@ -1708,6 +1716,7 @@ + install-pdf-target: maybe-install-pdf-target-rda + install-pdf-target: maybe-install-pdf-target-libada + install-pdf-target: maybe-install-pdf-target-libgomp ++install-pdf-target: maybe-install-pdf-target-libphobos + + .PHONY: do-install-html + do-install-html: +@@ -1818,6 +1827,7 @@ + install-html-target: maybe-install-html-target-rda + install-html-target: maybe-install-html-target-libada + install-html-target: maybe-install-html-target-libgomp ++install-html-target: maybe-install-html-target-libphobos + + .PHONY: do-installcheck + do-installcheck: +@@ -1928,6 +1938,7 @@ + installcheck-target: maybe-installcheck-target-rda + installcheck-target: maybe-installcheck-target-libada + installcheck-target: maybe-installcheck-target-libgomp ++installcheck-target: maybe-installcheck-target-libphobos + + .PHONY: do-mostlyclean + do-mostlyclean: +@@ -2038,6 +2049,7 @@ + mostlyclean-target: maybe-mostlyclean-target-rda + mostlyclean-target: maybe-mostlyclean-target-libada + mostlyclean-target: maybe-mostlyclean-target-libgomp ++mostlyclean-target: maybe-mostlyclean-target-libphobos + + .PHONY: do-clean + do-clean: +@@ -2148,6 +2160,7 @@ + clean-target: maybe-clean-target-rda + clean-target: maybe-clean-target-libada + clean-target: maybe-clean-target-libgomp ++clean-target: maybe-clean-target-libphobos + + .PHONY: do-distclean + do-distclean: +@@ -2258,6 +2271,7 @@ + distclean-target: maybe-distclean-target-rda + distclean-target: maybe-distclean-target-libada + distclean-target: maybe-distclean-target-libgomp ++distclean-target: maybe-distclean-target-libphobos + + .PHONY: do-maintainer-clean + do-maintainer-clean: +@@ -2368,6 +2382,7 @@ + maintainer-clean-target: maybe-maintainer-clean-target-rda + maintainer-clean-target: maybe-maintainer-clean-target-libada + maintainer-clean-target: maybe-maintainer-clean-target-libgomp ++maintainer-clean-target: maybe-maintainer-clean-target-libphobos + + + # Here are the targets which correspond to the do-X targets. +@@ -2531,7 +2546,8 @@ + maybe-check-target-qthreads \ + maybe-check-target-rda \ + maybe-check-target-libada \ +- maybe-check-target-libgomp ++ maybe-check-target-libgomp \ ++ maybe-check-target-libphobos + + do-check: + @: $(MAKE); $(unstage) +@@ -2744,7 +2760,8 @@ + maybe-install-target-qthreads \ + maybe-install-target-rda \ + maybe-install-target-libada \ +- maybe-install-target-libgomp ++ maybe-install-target-libgomp \ ++ maybe-install-target-libphobos + + uninstall: + @echo "the uninstall target is not supported in this tree" +@@ -52903,6 +52920,447 @@ + + + ++ ++ ++.PHONY: configure-target-libphobos maybe-configure-target-libphobos ++maybe-configure-target-libphobos: ++@if gcc-bootstrap ++configure-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++maybe-configure-target-libphobos: configure-target-libphobos ++configure-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ echo "Checking multilib configuration for libphobos..."; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \ ++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libphobos/multilib.tmp 2> /dev/null ; \ ++ if test -r $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ if cmp -s $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; then \ ++ rm -f $(TARGET_SUBDIR)/libphobos/multilib.tmp; \ ++ else \ ++ rm -f $(TARGET_SUBDIR)/libphobos/Makefile; \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ else \ ++ mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \ ++ fi; \ ++ test ! -f $(TARGET_SUBDIR)/libphobos/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo Configuring in $(TARGET_SUBDIR)/libphobos; \ ++ cd "$(TARGET_SUBDIR)/libphobos" || exit 1; \ ++ case $(srcdir) in \ ++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ ++ *) topdir=`echo $(TARGET_SUBDIR)/libphobos/ | \ ++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ ++ esac; \ ++ srcdiroption="--srcdir=$${topdir}/libphobos"; \ ++ libsrcdir="$$s/libphobos"; \ ++ 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-libphobos ++ ++ ++ ++ ++ ++.PHONY: all-target-libphobos maybe-all-target-libphobos ++maybe-all-target-libphobos: ++@if gcc-bootstrap ++all-target-libphobos: stage_current ++@endif gcc-bootstrap ++@if target-libphobos ++TARGET-target-libphobos=all ++maybe-all-target-libphobos: all-target-libphobos ++all-target-libphobos: configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ ++ $(TARGET-target-libphobos)) ++@endif target-libphobos ++ ++ ++ ++ ++ ++.PHONY: check-target-libphobos maybe-check-target-libphobos ++maybe-check-target-libphobos: ++@if target-libphobos ++maybe-check-target-libphobos: check-target-libphobos ++ ++check-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) ++ ++@endif target-libphobos ++ ++.PHONY: install-target-libphobos maybe-install-target-libphobos ++maybe-install-target-libphobos: ++@if target-libphobos ++maybe-install-target-libphobos: install-target-libphobos ++ ++install-target-libphobos: installdirs ++ @: $(MAKE); $(unstage) ++ @r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) ++ ++@endif target-libphobos ++ ++# Other targets (info, dvi, pdf, etc.) ++ ++.PHONY: maybe-info-target-libphobos info-target-libphobos ++maybe-info-target-libphobos: ++@if target-libphobos ++maybe-info-target-libphobos: info-target-libphobos ++ ++info-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing info in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ info) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-dvi-target-libphobos dvi-target-libphobos ++maybe-dvi-target-libphobos: ++@if target-libphobos ++maybe-dvi-target-libphobos: dvi-target-libphobos ++ ++dvi-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing dvi in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ dvi) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-pdf-target-libphobos pdf-target-libphobos ++maybe-pdf-target-libphobos: ++@if target-libphobos ++maybe-pdf-target-libphobos: pdf-target-libphobos ++ ++pdf-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing pdf in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ pdf) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-html-target-libphobos html-target-libphobos ++maybe-html-target-libphobos: ++@if target-libphobos ++maybe-html-target-libphobos: html-target-libphobos ++ ++html-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing html in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ html) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-TAGS-target-libphobos TAGS-target-libphobos ++maybe-TAGS-target-libphobos: ++@if target-libphobos ++maybe-TAGS-target-libphobos: TAGS-target-libphobos ++ ++TAGS-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing TAGS in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ TAGS) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-info-target-libphobos install-info-target-libphobos ++maybe-install-info-target-libphobos: ++@if target-libphobos ++maybe-install-info-target-libphobos: install-info-target-libphobos ++ ++install-info-target-libphobos: \ ++ configure-target-libphobos \ ++ info-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-info in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-info) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-pdf-target-libphobos install-pdf-target-libphobos ++maybe-install-pdf-target-libphobos: ++@if target-libphobos ++maybe-install-pdf-target-libphobos: install-pdf-target-libphobos ++ ++install-pdf-target-libphobos: \ ++ configure-target-libphobos \ ++ pdf-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-pdf) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-install-html-target-libphobos install-html-target-libphobos ++maybe-install-html-target-libphobos: ++@if target-libphobos ++maybe-install-html-target-libphobos: install-html-target-libphobos ++ ++install-html-target-libphobos: \ ++ configure-target-libphobos \ ++ html-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing install-html in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ install-html) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-installcheck-target-libphobos installcheck-target-libphobos ++maybe-installcheck-target-libphobos: ++@if target-libphobos ++maybe-installcheck-target-libphobos: installcheck-target-libphobos ++ ++installcheck-target-libphobos: \ ++ configure-target-libphobos ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing installcheck in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ installcheck) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-mostlyclean-target-libphobos mostlyclean-target-libphobos ++maybe-mostlyclean-target-libphobos: ++@if target-libphobos ++maybe-mostlyclean-target-libphobos: mostlyclean-target-libphobos ++ ++mostlyclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ mostlyclean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-clean-target-libphobos clean-target-libphobos ++maybe-clean-target-libphobos: ++@if target-libphobos ++maybe-clean-target-libphobos: clean-target-libphobos ++ ++clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing clean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ clean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-distclean-target-libphobos distclean-target-libphobos ++maybe-distclean-target-libphobos: ++@if target-libphobos ++maybe-distclean-target-libphobos: distclean-target-libphobos ++ ++distclean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing distclean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ distclean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++.PHONY: maybe-maintainer-clean-target-libphobos maintainer-clean-target-libphobos ++maybe-maintainer-clean-target-libphobos: ++@if target-libphobos ++maybe-maintainer-clean-target-libphobos: maintainer-clean-target-libphobos ++ ++maintainer-clean-target-libphobos: ++ @: $(MAKE); $(unstage) ++ @[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \ ++ r=`${PWD_COMMAND}`; export r; \ ++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ ++ $(NORMAL_TARGET_EXPORTS) \ ++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libphobos" ; \ ++ for flag in $(EXTRA_TARGET_FLAGS); do \ ++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ ++ done; \ ++ (cd $(TARGET_SUBDIR)/libphobos && \ ++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ ++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ ++ "RANLIB=$${RANLIB}" \ ++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libphobos ++ ++ + # ---------- + # GCC module + # ---------- +@@ -55298,6 +55756,7 @@ + configure-target-rda: stage_last + configure-target-libada: stage_last + configure-target-libgomp: stage_last ++configure-target-libphobos: stage_last + @endif gcc-bootstrap + + @if gcc-no-bootstrap +@@ -55322,6 +55781,7 @@ + configure-target-rda: maybe-all-gcc + configure-target-libada: maybe-all-gcc + configure-target-libgomp: maybe-all-gcc ++configure-target-libphobos: maybe-all-gcc + @endif gcc-no-bootstrap + + +@@ -56166,6 +56626,7 @@ + configure-target-rda: maybe-all-target-libgcc + configure-target-libada: maybe-all-target-libgcc + configure-target-libgomp: maybe-all-target-libgcc ++configure-target-libphobos: maybe-all-target-libgcc + @endif gcc-no-bootstrap + + +@@ -56209,6 +56670,8 @@ + + configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss + ++configure-target-libphobos: maybe-all-target-newlib maybe-all-target-libgloss ++ + + CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@ + GDB_TK = @GDB_TK@ --- gcc-4.4-4.4.5.orig/debian/patches/mudflap-nocheck.diff +++ gcc-4.4-4.4.5/debian/patches/mudflap-nocheck.diff @@ -0,0 +1,17 @@ +# DP: Disable running the libmudflap testsuite. Getting killed on alpha. + +--- + libmudflap/testsuite/Makefile.in | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +--- a/src/libmudflap/testsuite/Makefile.in ++++ b/src/libmudflap/testsuite/Makefile.in +@@ -246,6 +246,8 @@ CTAGS: + + + check-DEJAGNU: site.exp ++ @echo target $@ disabled for Debian build. ++check-DEJAGNU-disabled: site.exp + srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + runtest=$(RUNTEST); \ --- gcc-4.4-4.4.5.orig/debian/patches/pr40134.diff +++ gcc-4.4-4.4.5/debian/patches/pr40134.diff @@ -0,0 +1,73 @@ +# DP: Backport of PR target/40134 from the trunk + +Index: gcc/config.gcc +=================================================================== +--- a/src/gcc/config.gcc (revision 151558) ++++ b/src/gcc/config.gcc (working copy) +@@ -900,7 +900,7 @@ + target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS" + tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \ + pa/pa32-regs.h pa/pa32-linux.h" +- tmake_file="${tmake_file} pa/t-linux" ++ tmake_file="${tmake_file} pa/t-linux t-slibgcc-libgcc" + # Set the libgcc version number + if test x$sjlj = x1; then + tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver" +@@ -1745,12 +1745,12 @@ + tm_file="rs6000/secureplt.h ${tm_file}" + fi + extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt" +- tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp" ++ tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp" + ;; + powerpc64-*-gnu*) + tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h" + extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt" +- tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp" ++ tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp" + ;; + powerpc-*-darwin*) + extra_options="${extra_options} rs6000/darwin.opt" +@@ -1856,7 +1856,7 @@ + tm_file="${tm_file} rs6000/linux.h" + ;; + esac +- tmake_file="${tmake_file} rs6000/t-fprules-softfp soft-fp/t-softfp" ++ tmake_file="${tmake_file} t-slibgcc-libgcc rs6000/t-fprules-softfp soft-fp/t-softfp" + if test x${enable_secureplt} = xyes; then + tm_file="rs6000/secureplt.h ${tm_file}" + fi +@@ -1864,14 +1864,14 @@ + powerpc-*-gnu-gnualtivec*) + tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h" + extra_options="${extra_options} rs6000/sysv4.opt" +- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm" ++ tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm" + if test x$enable_threads = xyes; then + thread_file='posix' + fi + ;; + powerpc-*-gnu*) + tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h" +- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm" ++ tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-slibgcc-libgcc t-gnu rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + if test x$enable_threads = xyes; then + thread_file='posix' +Index: gcc/config/pa/pa-linux.h +=================================================================== +--- a/src/gcc/config/pa/pa-linux.h (revision 154725) ++++ b/src/gcc/config/pa/pa-linux.h (working copy) +@@ -31,12 +31,6 @@ + #undef CPP_SPEC + #define CPP_SPEC "%{posix:-D_POSIX_SOURCE}" + +-#undef LIB_SPEC +-#define LIB_SPEC \ +- "%{pthread:-lpthread} \ +- %{shared:-lgcc -lc} \ +- %{!shared:%{mieee-fp:-lieee} %{shared-libgcc:-lgcc} %{profile:-lc_p}%{!profile:-lc}}" +- + #undef ASM_SPEC + #define ASM_SPEC \ + "%{v:-V} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" --- gcc-4.4-4.4.5.orig/debian/patches/libjava-jnipath.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-jnipath.diff @@ -0,0 +1,75 @@ +# DP: - Add /usr/lib/jni to java.library.path. +# DP: - When running the i386 binaries on amd64, look in +# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead. + +--- + libjava/gnu/classpath/natSystemProperties.cc | 42 ++++++++++++++++++++++++-- + 1 files changed, 39 insertions(+), 3 deletions(-) + +--- a/src/libjava/gnu/classpath/natSystemProperties.cc ++++ b/src/libjava/gnu/classpath/natSystemProperties.cc +@@ -141,6 +141,34 @@ PrependVersionedLibdir (::java::lang::String* libpath) + return retval; + } + ++static char* ++AppendJniLibdir (char *path, struct utsname *u) ++{ ++ char* retval; ++ const char* jnilibdir = "/usr/lib/jni"; ++ ++#if defined(__linux__) && defined (__i386__) ++ if (! strcmp ("x86_64", u->machine)) ++ jnilibdir = "/usr/lib32/jni"; ++#endif ++ ++ if (path) ++ { ++ jsize total = strlen (path) ++ + (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) + 1; ++ retval = (char*) _Jv_Malloc (total); ++ strcpy (retval, path); ++ strcat (retval, PATH_SEPARATOR); ++ strcat (retval, jnilibdir); ++ } ++ else ++ { ++ retval = (char*) _Jv_Malloc (strlen (jnilibdir) + 1); ++ strcpy (retval, jnilibdir); ++ } ++ return retval; ++} ++ + void + gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops) + { +@@ -373,8 +401,13 @@ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properti + // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that + // libgcj will find its own JNI libraries, like libgtkpeer.so. + char* val = PrependVersionedLibdir (path); +- _Jv_SetDLLSearchPath (val); ++ ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + } + else + { +@@ -382,9 +415,12 @@ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properti + #ifdef USE_LTDL + char *libpath = getenv (LTDL_SHLIBPATH_VAR); + char* val = _Jv_PrependVersionedLibdir (libpath); +- SET ("java.library.path", val); +- _Jv_SetDLLSearchPath (val); ++ // Append jnilibdir ++ char* val2 = AppendJniLibdir (val, &u); ++ SET ("java.library.path", val2); ++ _Jv_SetDLLSearchPath (val2); + _Jv_Free (val); ++ _Jv_Free (val2); + #else + SET ("java.library.path", ""); + #endif --- gcc-4.4-4.4.5.orig/debian/patches/libstdc++-test-installed.diff +++ gcc-4.4-4.4.5/debian/patches/libstdc++-test-installed.diff @@ -0,0 +1,76 @@ +# DP: Add support to run the libstdc++-v3 testsuite using the +# DP: installed shared libraries. + +--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp~ 2010-05-27 15:43:11.332323079 +0200 ++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp 2010-05-27 16:03:58.662323814 +0200 +@@ -38,6 +38,12 @@ + # the last thing before testing begins. This can be defined in, e.g., + # ~/.dejagnurc or $DEJAGNU. + ++set test_installed 0 ++if [info exists env(TEST_INSTALLED)] { ++ verbose -log "test installed libstdc++-v3" ++ set test_installed 1 ++} ++ + proc load_gcc_lib { filename } { + global srcdir + load_file $srcdir/../../gcc/testsuite/lib/$filename +@@ -91,6 +99,7 @@ + global target_triplet + global flags_file + global tool_timeout ++ global test_installed + + # We set LC_ALL and LANG to C so that we get the same error + # messages as expected. +@@ -99,6 +108,9 @@ + + set blddir [lookfor_file [get_multilibs] libstdc++-v3] + set flags_file "${blddir}/scripts/testsuite_flags" ++ if {$test_installed} { ++ set flags_file "${blddir}/scripts/testsuite_flags.installed" ++ } + v3track flags_file 2 + + # If a test doesn't have special options, use DEFAULT_CXXFLAGS. +@@ -129,7 +141,11 @@ + + # Locate libgcc.a so we don't need to account for different values of + # SHLIB_EXT on different platforms +- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ if {$test_installed} { ++ set gccdir "" ++ } else { ++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] ++ } + if {$gccdir != ""} { + set gccdir [file dirname $gccdir] + append ld_library_path_tmp ":${gccdir}" +@@ -138,7 +154,11 @@ + + # Locate libgomp. This is only required for parallel mode. + set v3-libgomp 0 +- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.so] ++ if {$test_installed} { ++ set libgompdir "" ++ } else { ++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.so] ++ } + if {$libgompdir != ""} { + set v3-libgomp 1 + set libgompdir [file dirname $libgompdir] +@@ -149,7 +169,12 @@ + + # Locate libstdc++ shared library. (ie libstdc++.so.) + set v3-sharedlib 0 +- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.so] ++ if {$test_installed} { ++ set sharedlibdir "" ++ set v3-sharedlib 1 ++ } else { ++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.so] ++ } + if {$sharedlibdir != ""} { + if { [string match "*-*-linux*" $target_triplet] && [isnative] } { + set v3-sharedlib 1 --- gcc-4.4-4.4.5.orig/debian/patches/kbsd-gnu-ada.diff +++ gcc-4.4-4.4.5/debian/patches/kbsd-gnu-ada.diff @@ -0,0 +1,236 @@ +2009-08-17 Aurelien Jarno + + * gcc-interface/Makefile.in: Add Ada support for + GNU/kFreeBSD x86_64. + * system-freebsd-x86_64.ads: New file based on + system-freebsd-x86.ads. + +2009-08-01 Aurelien Jarno + + * s-osinte-kfreebsd-gnu.ads (SA_ONSTACK): New constant. + (stack_t): New record type. + (sigaltstack): New imported function. + (Alternate_Stack): New imported variable. + (Alternate_Stack_Size): New constant. + +--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads ++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads +@@ -188,6 +188,7 @@ + SIG_IGN : constant := 1; + + SA_SIGINFO : constant := 16#0040#; ++ SA_ONSTACK : constant := 16#0001#; + + function sigaction + (sig : Signal; +@@ -280,6 +281,24 @@ + -- Stack -- + ----------- + ++ type stack_t is record ++ ss_sp : System.Address; ++ ss_size : size_t; ++ ss_flags : int; ++ end record; ++ pragma Convention (C, stack_t); ++ ++ function sigaltstack ++ (ss : not null access stack_t; ++ oss : access stack_t) return int; ++ pragma Import (C, sigaltstack, "sigaltstack"); ++ ++ Alternate_Stack : aliased System.Address; ++ -- This is a dummy definition, never used (Alternate_Stack_Size is null) ++ ++ Alternate_Stack_Size : constant := 0; ++ -- No alternate signal stack is used on this platform ++ + function Get_Stack_Base (thread : pthread_t) return Address; + pragma Inline (Get_Stack_Base); + -- This is a dummy procedure to share some GNULLI files +--- a/src/gcc/ada/gcc-interface/Makefile.in ++++ b/src/gcc/ada/gcc-interface/Makefile.in +@@ -907,6 +907,35 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(arch) $(osys))),) ++ 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 := 64; ++ Memory_Size : constant := 2 ** 64; ++ ++ -- 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) ++ ++ Max_Priority : constant Positive := 30; ++ Max_Interrupt_Priority : constant Positive := 31; ++ ++ subtype Any_Priority is Integer range 0 .. 31; ++ subtype Priority is Any_Priority range 0 .. 30; ++ subtype Interrupt_Priority is Any_Priority range 31 .. 31; ++ ++ Default_Priority : constant Priority := 15; ++ ++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 := True; ++ GCC_ZCX_Support : constant Boolean := True; ++ ++end System; --- gcc-4.4-4.4.5.orig/debian/patches/ada-bug564232.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/gdc-fix-build-kbsd.diff +++ gcc-4.4-4.4.5/debian/patches/gdc-fix-build-kbsd.diff @@ -0,0 +1,39 @@ +# DP: Fix gdc build on k*bsd*-gnu, update configure and target-ver-syms.sh +# DP: to build k*bsd*-gnu architectures as a freebsd + +--- a/src/gcc/d/phobos/configure 2010-07-15 12:05:38.000000000 +0100 ++++ b/src/gcc/d/phobos/configure 2010-08-23 10:29:11.885790413 +0100 +@@ -5817,7 +5817,7 @@ + d_gc_stack=GC_Use_Stack_Fixed + d_gc_data="$d_gc_data GC_Use_Data_Dyld" + ;; +- *freebsd*)D_GC_MODULES="$D_GC_MODULES internal/gc/gc_freebsd.o" ++ freebsd*|k*bsd*-gnu)D_GC_MODULES="$D_GC_MODULES internal/gc/gc_freebsd.o" + d_gc_stack=GC_Use_Stack_FreeBSD + d_gc_data="$d_gc_data GC_Use_Data_Fixed" + ;; +--- a/src/gcc/d/target-ver-syms.sh 2010-07-15 12:05:39.000000000 +0100 ++++ b/src/gcc/d/target-ver-syms.sh 2010-08-23 10:30:11.877793587 +0100 +@@ -29,7 +29,8 @@ + cygwin*) d_os_versym=cygwin ; d_unix=1 ;; + darwin*) d_os_versym=darwin ; d_unix=1 ;; + elf*) ;; +-*freebsd*) d_os_versym=freebsd ; d_unix=1 ;; ++freebsd*) d_os_versym=freebsd ; d_unix=1 ;; ++k*bsd*-gnu) d_os_versym=freebsd ; d_unix=1 ;; + linux*) d_os_versym=linux ; d_unix=1 ;; + mingw32*) d_os_versym=Win32; d_windows=1 ;; + pe*) case "$target" in +--- a/src/gcc/ggc-page.c 2008-07-28 15:33:56.000000000 +0100 ++++ b/src/gcc/ggc-page.c 2010-08-23 10:35:54.197796263 +0100 +@@ -1313,6 +1313,10 @@ + unsigned bit, word; + unsigned long mask; + ++ /* FIXME: why could this happen on kbsd64 targets? */ ++ if (!p || !ggc_allocated_p (p)) ++ return 1; ++ + /* Look up the page on which the object is alloced. If the object + wasn't allocated by the collector, we'll probably die. */ + entry = lookup_page_table_entry (p); --- gcc-4.4-4.4.5.orig/debian/patches/libjava-disable-static.diff +++ gcc-4.4-4.4.5/debian/patches/libjava-disable-static.diff @@ -0,0 +1,26 @@ +# DP: Disable building the static libjava. + +--- + Makefile.in | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -49463,7 +49463,7 @@ configure-target-libjava: + 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} \ ++ --target=${target_alias} --disable-static $${srcdiroption} \ + || exit 1 + @endif target-libjava + +@@ -50347,7 +50347,7 @@ configure-target-boehm-gc: + 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} \ ++ --target=${target_alias} --disable-static $${srcdiroption} \ + || exit 1 + @endif target-boehm-gc + --- gcc-4.4-4.4.5.orig/debian/patches/gold-and-ld.diff +++ gcc-4.4-4.4.5/debian/patches/gold-and-ld.diff @@ -0,0 +1,478 @@ +# DP: Enable both gold and ld in a single toolchain. +# DP: New option -fuse-ld=ld.bfd, -fuse-ld=gold. + +Index: gcc/gcc.c +=================================================================== +--- a/src/gcc/gcc.c (revision ++++ b/src/gcc/gcc.c (working +@@ -726,7 +726,11 @@ + #ifndef LINK_COMMAND_SPEC + #define LINK_COMMAND_SPEC "\ + %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\ +- %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\ ++ %(linker) %l " LINK_PIE_SPEC \ ++ "%{fuse-ld=gold:%{fuse-ld=bfd:%e-fuse-ld=gold and -fuse-ld=bfd may not be used together}} \ ++ %{fuse-ld=gold:-use-gold} \ ++ %{fuse-ld=bfd:-use-ld}" \ ++ "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\ + %{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)\ +Index: gcc/opts.c +=================================================================== +--- a/src/gcc/opts.c (revision ++++ b/src/gcc/opts.c (working +@@ -2062,6 +2062,10 @@ + /* These are no-ops, preserved for backward compatibility. */ + break; + ++ case OPT_fuse_ld_: ++ /* No-op. Used by the driver and passed to us because it starts with f. */ ++ break; ++ + default: + /* If the flag was handled in a standard way, assume the lack of + processing here is intentional. */ +Index: gcc/configure.ac +=================================================================== +--- a/src/gcc/configure.ac (revision ++++ b/src/gcc/configure.ac (working +@@ -1911,6 +1911,17 @@ + AC_PATH_PROG(gcc_cv_ld, $LD_FOR_TARGET) + fi]) + ++gcc_cv_ld_gold_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gold ++ ++AS_VAR_SET_IF(gcc_cv_gold,, [ ++if test -f $gcc_cv_ld_gold_srcdir/configure.ac \ ++ && test -f ../gold/Makefile \ ++ && test x$build = x$host; then ++ gcc_cv_gold=../gold/ld-new$build_exeext ++else ++ gcc_cv_gold='' ++fi]) ++ + ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld + AC_SUBST(ORIGINAL_LD_FOR_TARGET) + case "$ORIGINAL_LD_FOR_TARGET" in +@@ -1918,6 +1929,9 @@ + *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;; + esac + ++ORIGINAL_GOLD_FOR_TARGET=$gcc_cv_gold ++AC_SUBST(ORIGINAL_GOLD_FOR_TARGET) ++ + AC_MSG_CHECKING(what linker to use) + if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext; then + # Single tree build which includes ld. We want to prefer it +Index: gcc/exec-tool.in +=================================================================== +--- a/src/gcc/exec-tool.in (revision ++++ b/src/gcc/exec-tool.in (working +@@ -1,6 +1,6 @@ + #! /bin/sh + +-# Copyright (C) 2007, 2008 Free Software Foundation, Inc. ++# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. + # This file is part of GCC. + + # GCC is free software; you can redistribute it and/or modify +@@ -21,10 +21,12 @@ + + ORIGINAL_AS_FOR_TARGET="@ORIGINAL_AS_FOR_TARGET@" + ORIGINAL_LD_FOR_TARGET="@ORIGINAL_LD_FOR_TARGET@" ++ORIGINAL_GOLD_FOR_TARGET="@ORIGINAL_GOLD_FOR_TARGET@" + ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@" + exeext=@host_exeext@ + fast_install=@enable_fast_install@ + objdir=@objdir@ ++version="1.1" + + invoked=`basename "$0"` + case "$invoked" in +@@ -33,48 +35,111 @@ + prog=as-new$exeext + dir=gas + ;; +- collect-ld) +- original=$ORIGINAL_LD_FOR_TARGET +- prog=ld-new$exeext +- dir=ld +- ;; + nm) + original=$ORIGINAL_NM_FOR_TARGET + prog=nm-new$exeext + dir=binutils + ;; ++ collect-ld) ++ prog=ld-new$exeext ++ # Look for the a command line option ++ # specifying the linker to be used. ++ case " $* " in ++ *\ -use-gold\ *) ++ original=$ORIGINAL_GOLD_FOR_TARGET ++ dir=gold ++ ;; ++ *\ -use-ld\ * | *\ -use-ld.bfd\ *) ++ original=$ORIGINAL_LD_FOR_TARGET ++ dir=ld ++ ;; ++# *\ -plugin\ *) ++# original=$ORIGINAL_PLUGIN_LD_FOR_TARGET ++# dir=ld ++# ;; ++ *) ++ original=$ORIGINAL_LD_FOR_TARGET ++ dir=ld ++ ;; ++ esac ++ ++ # If the selected linker has not been configured then ++ # try using the others, in the order PLUGIN-LD, LD, GOLD. ++ if test x"$original" = x; then ++# if test x"$ORIGINAL_PLUGIN_LD_FOR_TARGET" != x; then ++# original=$ORIGINAL_PLUGIN_LD_FOR_TARGET ++# dir=ld ++# elif test x"$ORIGINAL_LD_FOR_TARGET" != x; then ++ if test x"$ORIGINAL_LD_FOR_TARGET" != x; then ++ original=$ORIGINAL_LD_FOR_TARGET ++ dir=ld ++ elif test x"$ORIGINAL_GOLD_FOR_TARGET" != x; then ++ original=$ORIGINAL_GOLD_FOR_TARGET ++ dir=gold ++ # Otherwise do nothing - the case statement below ++ # will issue an error message for us. ++ fi ++ fi ++ ;; + esac + + case "$original" in + ../*) +- # compute absolute path of the location of this script ++ # Compute absolute path of the location of this script + tdir=`dirname "$0"` + scriptdir=`cd "$tdir" && pwd` + + if test -x $scriptdir/../$dir/$prog; then +- test "$fast_install" = yes || exec $scriptdir/../$dir/$prog ${1+"$@"} ++ if test "$fast_install" = yes; then ++ # If libtool did everything it needs to do, there's a fast path. ++ lt_prog=$scriptdir/../$dir/$objdir/lt-$prog + +- # if libtool did everything it needs to do, there's a fast path +- lt_prog=$scriptdir/../$dir/$objdir/lt-$prog +- test -x $lt_prog && exec $lt_prog ${1+"$@"} +- +- # libtool has not relinked ld-new yet, but we cannot just use the +- # previous stage (because then the relinking would just never happen!). +- # So we take extra care to use prev-ld/ld-new *on recursive calls*. +- test x"$LT_RCU" = x"1" && exec $scriptdir/../prev-$dir/$prog ${1+"$@"} +- +- LT_RCU=1; export LT_RCU +- $scriptdir/../$dir/$prog ${1+"$@"} +- result=$? +- exit $result +- ++ if test -x $lt_prog; then ++ original=$lt_prog ++ else ++ # Libtool has not relinked ld-new yet, but we cannot just use the ++ # previous stage (because then the relinking would just never happen!). ++ # So we take extra care to use prev-ld/ld-new *on recursive calls*. ++ if test x"$LT_RCU" = x"1"; then ++ original=$scriptdir/../prev-$dir/$prog ++ else ++ LT_RCU=1; export LT_RCU ++ case " $* " in ++ *\ -v\ *) ++ echo "$invoked $version" ++ echo $scriptdir/../$dir/$prog $* ++ ;; ++ esac ++ $scriptdir/../$dir/$prog ${1+"$@"} ++ result=$? ++ exit $result ++ fi ++ fi ++ else ++ original=$scriptdir/../$dir/$prog ++ fi + else +- exec $scriptdir/../prev-$dir/$prog ${1+"$@"} ++ original=$scriptdir/../prev-$dir/$prog + fi + ;; +- *) +- exec "$original" ${1+"$@"} ++ "") ++ echo "$invoked: executable not configured" ++ exit 1 + ;; + esac + ++# If -v has been used then display our version number ++# and then echo the command we are about to invoke. ++case " $* " in ++ *\ -v\ *) ++ echo "$invoked $version" ++ echo $original $* ++ ;; ++esac + ++if test -x $original; then ++ exec "$original" ${1+"$@"} ++else ++ echo "$invoked: unable to locate executable: $original" ++ exit 1 ++fi +Index: gcc/common.opt +=================================================================== +--- a/src/gcc/common.opt (revision ++++ b/src/gcc/common.opt (working +@@ -1299,6 +1299,9 @@ + Common Report Var(flag_unwind_tables) Optimization + Just generate unwind tables for exception handling + ++fuse-ld= ++Common Joined Undocumented ++ + fvar-tracking + Common Report Var(flag_var_tracking) VarExists Optimization + Perform variable tracking +Index: gcc/collect2.c +=================================================================== +--- a/src/gcc/collect2.c (revision ++++ b/src/gcc/collect2.c (working +@@ -766,6 +766,8 @@ + main (int argc, char **argv) + { + static const char *const ld_suffix = "ld"; ++ static const char *const gold_suffix = "gold"; ++ static const char *const bfd_ld_suffix = "ld.bfd"; + static const char *const real_ld_suffix = "real-ld"; + static const char *const collect_ld_suffix = "collect-ld"; + static const char *const nm_suffix = "nm"; +@@ -784,6 +786,10 @@ + + const char *const full_ld_suffix = + concat(target_machine, "-", ld_suffix, NULL); ++ const char *const full_gold_suffix = ++ concat (target_machine, "-", gold_suffix, NULL); ++ const char *const full_bfd_ld_suffix = ++ concat (target_machine, "-", bfd_ld_suffix, NULL); + const char *const full_nm_suffix = + concat (target_machine, "-", nm_suffix, NULL); + const char *const full_gnm_suffix = +@@ -798,6 +804,8 @@ + concat (target_machine, "-", gstrip_suffix, NULL); + #else + const char *const full_ld_suffix = ld_suffix; ++ const char *const full_gold_suffix = gold_suffix; ++ const char *const full_bfd_ld_suffix = bfd_ld_suffix; + const char *const full_nm_suffix = nm_suffix; + const char *const full_gnm_suffix = gnm_suffix; + #ifdef LDD_SUFFIX +@@ -818,6 +826,12 @@ + const char **c_ptr; + char **ld1_argv; + const char **ld1; ++ enum linker_select ++ { ++ DFLT_LINKER, ++ GOLD_LINKER, ++ BFD_LINKER ++ } selected_linker = DFLT_LINKER; + char **ld2_argv; + const char **ld2; + char **object_lst; +@@ -875,6 +890,10 @@ + { + if (! strcmp (argv[i], "-debug")) + debug = 1; ++ else if (! strcmp (argv[i], "-use-gold")) ++ selected_linker = GOLD_LINKER; ++ else if (! strcmp (argv[i], "-use-ld")) ++ selected_linker = BFD_LINKER; + } + vflag = debug; + } +@@ -954,13 +973,81 @@ + ld_file_name = find_a_file (&cpath, collect_ld_suffix); + /* Search the compiler directories for `ld'. We have protection against + recursive calls in find_a_file. */ +- if (ld_file_name == 0) +- ld_file_name = find_a_file (&cpath, ld_suffix); ++ if (ld_file_name == NULL) ++ switch (selected_linker) ++ { ++ default: ++ case DFLT_LINKER: ++ ld_file_name = find_a_file (&cpath, ld_suffix); ++ break; ++ case GOLD_LINKER: ++ ld_file_name = find_a_file (&cpath, gold_suffix); ++ break; ++ case BFD_LINKER: ++ ld_file_name = find_a_file (&cpath, bfd_ld_suffix); ++ break; ++ } + /* Search the ordinary system bin directories + for `ld' (if native linking) or `TARGET-ld' (if cross). */ +- if (ld_file_name == 0) +- ld_file_name = find_a_file (&path, full_ld_suffix); ++ if (ld_file_name == NULL) ++ switch (selected_linker) ++ { ++ default: ++ case DFLT_LINKER: ++ ld_file_name = find_a_file (&path, full_ld_suffix); ++ break; ++ case GOLD_LINKER: ++ ld_file_name = find_a_file (&path, full_gold_suffix); ++ break; ++ case BFD_LINKER: ++ ld_file_name = find_a_file (&path, full_bfd_ld_suffix); ++ break; ++ } + ++ if ((vflag || debug) && ld_file_name == NULL) ++ { ++ struct prefix_list * p; ++ const char * s; ++ ++ notice ("collect2: warning: unable to find linker.\n"); ++ ++#ifdef DEFAULT_LINKER ++ notice (" Searched for this absolute executable:\n"); ++ notice (" %s\n", DEFAULT_LINKER); ++#endif ++ ++ notice (" Searched in these paths:\n"); ++ for (p = cpath.plist; p != NULL; p = p->next) ++ notice (" %s\n", p->prefix); ++ notice (" For these executables:\n"); ++ notice (" %s\n", real_ld_suffix); ++ notice (" %s\n", collect_ld_suffix); ++ switch (selected_linker) ++ { ++ default: ++ case DFLT_LINKER: s = ld_suffix; break; ++ case GOLD_LINKER: s = gold_suffix; break; ++ case BFD_LINKER: s = bfd_ld_suffix; break; ++ } ++ notice (" %s\n", s); ++ ++ notice (" And searched in these paths:\n"); ++ for (p = path.plist; p != NULL; p = p->next) ++ notice (" %s\n", p->prefix); ++ notice (" For these executables:\n"); ++#ifdef REAL_LD_FILE_NAME ++ notice (" %s\n", REAL_LD_FILE_NAME); ++#endif ++ switch (selected_linker) ++ { ++ default: ++ case DFLT_LINKER: s = full_ld_suffix; break; ++ case GOLD_LINKER: s = full_gold_suffix; break; ++ case BFD_LINKER: s = full_bfd_ld_suffix; break; ++ } ++ notice (" %s\n", s); ++ } ++ + #ifdef REAL_NM_FILE_NAME + nm_file_name = find_a_file (&path, REAL_NM_FILE_NAME); + if (nm_file_name == 0) +Index: configure.ac +=================================================================== +--- a/src/configure.ac (revision ++++ b/src/configure.ac (working +@@ -165,7 +165,7 @@ + # know that we are building the simulator. + # binutils, gas and ld appear in that order because it makes sense to run + # "make check" in that particular order. +-# If --enable-gold is used, "gold" will replace "ld". ++# If --enable-gold is used, "gold" may replace "ld". + host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools" + + # libgcj represents the runtime libraries only used by gcj. +@@ -294,37 +294,57 @@ + esac + + # Handle --enable-gold. ++# --enable-gold Build only gold ++# --disable-gold [default] Build only ld ++# --enable-gold=both Build both gold and ld, ld is default ++# --enable-gold=both/ld Same ++# --enable-gold=both/gold Build both gold and ld, gold is default, ld is renamed ld.bfd + + AC_ARG_ENABLE(gold, +-[ --enable-gold use gold instead of ld], ++[ --enable-gold[[=ARG]] build gold [[ARG={both}[[/{gold,ld}]]]]], + ENABLE_GOLD=$enableval, + ENABLE_GOLD=no) +-if test "${ENABLE_GOLD}" = "yes"; then +- # Check for ELF target. +- is_elf=no +- case "${target}" in +- *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ +- | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ +- | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2*) ++ case "${ENABLE_GOLD}" in ++ yes|both|both/gold|both/ld) ++ # Check for ELF target. ++ is_elf=no ++ case "${target}" in ++ *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \ ++ | *-*-linux* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \ ++ | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-solaris2* | *-*-nto*) ++ case "${target}" in ++ *-*-linux*aout* | *-*-linux*oldld*) ++ ;; ++ *) ++ is_elf=yes ++ ;; ++ esac ++ esac ++ ++ if test "$is_elf" = "yes"; then ++ # Check for target supported by gold. + case "${target}" in +- *-*-linux*aout* | *-*-linux*oldld*) ++ i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-*) ++ case "${ENABLE_GOLD}" in ++ both*) ++ configdirs="$configdirs gold" ++ ;; ++ *) ++ configdirs=`echo " ${configdirs} " | sed -e 's/ ld / gold /'` ++ ;; ++ esac ++ ENABLE_GOLD=yes + ;; +- *) +- is_elf=yes +- ;; + esac ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ AC_MSG_ERROR([invalid --enable-gold argument]) ++ ;; + esac + +- if test "$is_elf" = "yes"; then +- # Check for target supported by gold. +- case "${target}" in +- i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-*) +- configdirs=`echo " ${configdirs} " | sed -e 's/ ld / gold /'` +- ;; +- esac +- fi +-fi +- + # Configure extra directories which are host specific + + case "${host}" in --- gcc-4.4-4.4.5.orig/debian/patches/ada-bug589164.diff +++ gcc-4.4-4.4.5/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.5.orig/debian/patches/sh4-multilib.diff +++ gcc-4.4-4.4.5/debian/patches/sh4-multilib.diff @@ -0,0 +1,23 @@ +# DP: Fix multilib (m4/m4-nofpu) for sh4-linux + +--- + gcc/config.gcc | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +--- a/src/gcc/config.gcc ++++ b/src/gcc/config.gcc +@@ -2119,11 +2119,12 @@ sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ + if test x${sh_multilibs} = x ; then + case ${target} in + sh64-superh-linux* | \ +- sh[1234]*) sh_multilibs=${sh_cpu_target} ;; + sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;; +- sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;; ++ sh-superh-* | \ ++ sh4-*-linux*) sh_multilibs=m4,m4-nofpu ;; + sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;; + sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;; ++ sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;; + *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;; + esac + if test x$with_fp = xno; then --- gcc-4.4-4.4.5.orig/debian/patches/gcc-linaro.diff +++ gcc-4.4-4.4.5/debian/patches/gcc-linaro.diff @@ -0,0 +1,90571 @@ +# DP: Changes for the Linaro 4.4-2010.10-0 release. + +--- a/src/ChangeLog.linaro ++++ b/src/ChangeLog.linaro +@@ -0,0 +1,8618 @@ ++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/fixincl.x ++++ b/src/fixincludes/fixincl.x +@@ -2,11 +2,11 @@ + * + * DO NOT EDIT THIS FILE (fixincl.x) + * +- * It has been AutoGen-ed Wednesday July 14, 2010 at 11:12:51 AM MEST ++ * It has been AutoGen-ed Tuesday September 7, 2010 at 02:44:29 PM BST + * From the definitions inclhack.def + * and the template file fixincl + */ +-/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jul 14 11:12:52 MEST 2010 ++/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Sep 7 14:44:29 BST 2010 + * + * You must regenerate it. Use the ./genfixes script. + * +@@ -15,7 +15,7 @@ + * certain ANSI-incompatible system header files which are fixed to work + * correctly with ANSI C and placed in a directory that GNU C will search. + * +- * This file contains 183 fixup descriptions. ++ * This file contains 185 fixup descriptions. + * + * See README for more information. + * +@@ -39,7 +39,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"; + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * +@@ -2300,6 +2300,81 @@ + + /* * * * * * * * * * * * * * * * * * * * * * * * * * + * ++ * Description of Glibc_String2_Memset fix ++ */ ++tSCC zGlibc_String2_MemsetName[] = ++ "glibc_string2_memset"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zGlibc_String2_MemsetList[] = ++ "bits/string2.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++#define apzGlibc_String2_MemsetMachs (const char**)NULL ++ ++/* ++ * content selection pattern - do fix if pattern found ++ */ ++tSCC zGlibc_String2_MemsetSelect0[] = ++ "#ifndef _HAVE_STRING_ARCH_memset\n\ ++# if _STRING_ARCH_unaligned"; ++ ++#define GLIBC_STRING2_MEMSET_TEST_CT 1 ++static tTestDesc aGlibc_String2_MemsetTests[] = { ++ { TT_EGREP, zGlibc_String2_MemsetSelect0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Glibc_String2_Memset ++ */ ++static const char* apzGlibc_String2_MemsetPatch[] = { ++ "format", ++ "%0 && 0", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * ++ * Description of Glibc_Strncpy fix ++ */ ++tSCC zGlibc_StrncpyName[] = ++ "glibc_strncpy"; ++ ++/* ++ * File name selection pattern ++ */ ++tSCC zGlibc_StrncpyList[] = ++ "bits/string2.h\0"; ++/* ++ * Machine/OS name selection pattern ++ */ ++#define apzGlibc_StrncpyMachs (const char**)NULL ++ ++/* ++ * content bypass pattern - skip fix if pattern found ++ */ ++tSCC zGlibc_StrncpyBypass0[] = ++ "__builtin_strncpy"; ++ ++#define GLIBC_STRNCPY_TEST_CT 1 ++static tTestDesc aGlibc_StrncpyTests[] = { ++ { TT_NEGREP, zGlibc_StrncpyBypass0, (regex_t*)NULL }, }; ++ ++/* ++ * Fix Command Arguments for Glibc_Strncpy ++ */ ++static const char* apzGlibc_StrncpyPatch[] = { ++ "format", ++ "# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n)", ++ "# define strncpy([^\n\ ++]*\\\\\n\ ++)*[^\n\ ++]*", ++ (char*)NULL }; ++ ++/* * * * * * * * * * * * * * * * * * * * * * * * * * ++ * + * Description of Gnu_Types fix + */ + tSCC zGnu_TypesName[] = +@@ -5733,8 +5808,7 @@ + * Machine/OS name selection pattern + */ + tSCC* apzSolaris_Mutex_Init_2Machs[] = { +- "*-*-solaris2.[0-9]", +- "*-*-solaris2.[0-9][!0-9]*", ++ "*-*-solaris*", + (const char*)NULL }; + + /* +@@ -5743,8 +5817,15 @@ + tSCC zSolaris_Mutex_Init_2Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +-#define SOLARIS_MUTEX_INIT_2_TEST_CT 1 ++/* ++ * perform the 'test' shell command - do fix on success ++ */ ++tSCC zSolaris_Mutex_Init_2Test0[] = ++ " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; ++ ++#define SOLARIS_MUTEX_INIT_2_TEST_CT 2 + static tTestDesc aSolaris_Mutex_Init_2Tests[] = { ++ { TT_TEST, zSolaris_Mutex_Init_2Test0, 0 /* unused */ }, + { TT_EGREP, zSolaris_Mutex_Init_2Select0, (regex_t*)NULL }, }; + + /* +@@ -5786,8 +5867,15 @@ + tSCC zSolaris_Rwlock_Init_1Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +-#define SOLARIS_RWLOCK_INIT_1_TEST_CT 1 ++/* ++ * perform the 'test' shell command - do fix on success ++ */ ++tSCC zSolaris_Rwlock_Init_1Test0[] = ++ " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; ++ ++#define SOLARIS_RWLOCK_INIT_1_TEST_CT 2 + static tTestDesc aSolaris_Rwlock_Init_1Tests[] = { ++ { TT_TEST, zSolaris_Rwlock_Init_1Test0, 0 /* unused */ }, + { TT_EGREP, zSolaris_Rwlock_Init_1Select0, (regex_t*)NULL }, }; + + /* +@@ -5857,8 +5945,7 @@ + * Machine/OS name selection pattern + */ + tSCC* apzSolaris_Once_Init_2Machs[] = { +- "*-*-solaris2.[0-9]", +- "*-*-solaris2.[0-9][!0-9]*", ++ "*-*-solaris*", + (const char*)NULL }; + + /* +@@ -5867,8 +5954,15 @@ + tSCC zSolaris_Once_Init_2Select0[] = + "@\\(#\\)pthread.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; + +-#define SOLARIS_ONCE_INIT_2_TEST_CT 1 ++/* ++ * perform the 'test' shell command - do fix on success ++ */ ++tSCC zSolaris_Once_Init_2Test0[] = ++ " -n \"`grep '#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)' \\`dirname $file\\`/sys/types.h`\""; ++ ++#define SOLARIS_ONCE_INIT_2_TEST_CT 2 + static tTestDesc aSolaris_Once_Init_2Tests[] = { ++ { TT_TEST, zSolaris_Once_Init_2Test0, 0 /* unused */ }, + { TT_EGREP, zSolaris_Once_Init_2Select0, (regex_t*)NULL }, }; + + /* +@@ -7424,9 +7518,9 @@ + * + * List of all fixes + */ +-#define REGEX_COUNT 229 +-#define MACH_LIST_SIZE_LIMIT 181 +-#define FIX_COUNT 183 ++#define REGEX_COUNT 231 ++#define MACH_LIST_SIZE_LIMIT 169 ++#define FIX_COUNT 185 + + /* + * Enumerate the fixes +@@ -7487,6 +7581,8 @@ + GLIBC_C99_INLINE_3_FIXIDX, + GLIBC_C99_INLINE_4_FIXIDX, + GLIBC_MUTEX_INIT_FIXIDX, ++ GLIBC_STRING2_MEMSET_FIXIDX, ++ GLIBC_STRNCPY_FIXIDX, + GNU_TYPES_FIXIDX, + HP_INLINE_FIXIDX, + HP_SYSFILE_FIXIDX, +@@ -7893,6 +7989,16 @@ + GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY, + aGlibc_Mutex_InitTests, apzGlibc_Mutex_InitPatch, 0 }, + ++ { zGlibc_String2_MemsetName, zGlibc_String2_MemsetList, ++ apzGlibc_String2_MemsetMachs, ++ GLIBC_STRING2_MEMSET_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aGlibc_String2_MemsetTests, apzGlibc_String2_MemsetPatch, 0 }, ++ ++ { zGlibc_StrncpyName, zGlibc_StrncpyList, ++ apzGlibc_StrncpyMachs, ++ GLIBC_STRNCPY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, ++ aGlibc_StrncpyTests, apzGlibc_StrncpyPatch, 0 }, ++ + { zGnu_TypesName, zGnu_TypesList, + apzGnu_TypesMachs, + GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE, +--- 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/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 *); +@@ -144,6 +148,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 +159,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 +200,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 }, +@@ -3339,6 +4580,21 @@ + 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; ++} ++ + #if TARGET_DLLIMPORT_DECL_ATTRIBUTES + /* Handle the "notshared" attribute. This attribute is another way of + requesting hidden visibility. ARM's compiler supports +@@ -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; +@@ -4131,6 +5402,7 @@ + if (GET_MODE_SIZE (mode) <= 4 + && ! (arm_arch4 + && (mode == HImode ++ || mode == HFmode + || (mode == QImode && outer == SIGN_EXTEND)))) + { + if (code == MULT) +@@ -4159,13 +5431,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 +5610,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 +6310,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 +6349,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 +6371,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 +6414,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 +6446,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 +6487,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 +6604,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 +6757,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; +@@ -5573,8 +6863,20 @@ + *total += rtx_cost (XEXP (x, 0), code, speed); + return true; + +- case CONST_DOUBLE: +- if (TARGET_HARD_FLOAT && vfp3_const_double_rtx (x)) ++ case CONST_DOUBLE: ++ 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 +6951,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 +6982,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; +@@ -5705,118 +7009,494 @@ + return false; + + case MULT: +- *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); ++ *total = COSTS_N_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_N_INSNS (1); ++ return false; ++ } ++ ++ /* Fall through */ ++ case NOT: ++ *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); ++ ++ return false; ++ ++ case IF_THEN_ELSE: ++ *total = 0; ++ return false; ++ ++ case COMPARE: ++ if (cc_register (XEXP (x, 0), VOIDmode)) ++ * total = 0; ++ else ++ *total = COSTS_N_INSNS (1); ++ return false; ++ ++ case ABS: ++ 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)); ++ return false; ++ ++ case SIGN_EXTEND: ++ *total = 0; ++ if (GET_MODE_SIZE (GET_MODE (XEXP (x, 0))) < 4) ++ { ++ if (!(arm_arch4 && MEM_P (XEXP (x, 0)))) ++ *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2); ++ } ++ if (mode == DImode) ++ *total += COSTS_N_INSNS (1); ++ return false; ++ ++ case ZERO_EXTEND: ++ *total = 0; ++ if (!(arm_arch4 && MEM_P (XEXP (x, 0)))) ++ { ++ switch (GET_MODE (XEXP (x, 0))) ++ { ++ case QImode: ++ *total += COSTS_N_INSNS (1); ++ break; ++ ++ case HImode: ++ *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2); ++ ++ 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) ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) + { +- *total = COSTS_N_INSNS (1); ++ *total = COSTS_WIDE_INSNS (1); + return false; + } + + /* Fall through */ + case NOT: +- *total = COSTS_N_INSNS (ARM_NUM_REGS (mode)); +- ++ 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 = 0; ++ *total = COSTS_NARROW_INSNS (1); + return false; + + case COMPARE: + if (cc_register (XEXP (x, 0), VOIDmode)) +- * total = 0; ++ *total = 0; + else +- *total = COSTS_N_INSNS (1); ++ *total = COSTS_NARROW_INSNS (1); + return false; + + case ABS: +- if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT) +- *total = COSTS_N_INSNS (1); ++ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT ++ && (mode == SFmode || !TARGET_VFP_SINGLE)) ++ *total = COSTS_WIDE_INSNS (1); + else +- *total = COSTS_N_INSNS (1 + ARM_NUM_REGS (mode)); ++ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)) * 2; + return false; + + case SIGN_EXTEND: +- *total = 0; +- if (GET_MODE_SIZE (GET_MODE (XEXP (x, 0))) < 4) +- { +- if (!(arm_arch4 && MEM_P (XEXP (x, 0)))) +- *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2); +- } +- if (mode == DImode) +- *total += COSTS_N_INSNS (1); ++ 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: +- *total = 0; +- if (!(arm_arch4 && MEM_P (XEXP (x, 0)))) +- { +- switch (GET_MODE (XEXP (x, 0))) +- { +- case QImode: +- *total += COSTS_N_INSNS (1); +- break; +- +- case HImode: +- *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2); +- +- case SImode: +- break; +- +- default: +- *total += COSTS_N_INSNS (2); +- } +- } +- +- if (mode == DImode) +- *total += COSTS_N_INSNS (1); +- ++ 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 +7505,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 +7635,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 +7794,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 +8142,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 +8192,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 +8214,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 +8448,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; ++ } ++ ++ /* 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); + +- gcc_assert (VECTOR_MODE_P (mode)); ++ /* 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 +8798,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 +8837,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 +8913,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 +9285,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 +9322,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 +9554,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 +9764,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 +9827,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 +10298,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 +10356,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 +11523,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 +11720,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 +11866,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 +12073,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 +12158,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 +12758,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 +12822,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 +13018,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 (); +@@ -11318,6 +13379,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 +13479,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 +13636,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 +13776,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 +13967,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 +14062,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 +14286,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 +14327,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 +14375,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 +14508,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 +14882,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 +15022,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 +15566,7 @@ + fprintf (stream, HOST_WIDE_INT_PRINT_DEC, INTVAL (x)); + break; + ++ case CONST: + case SYMBOL_REF: + output_addr_const (stream, x); + break; +@@ -13493,7 +15630,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 +15667,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 +15689,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 +15877,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 +16018,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 +16126,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 +16401,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 +16545,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 +16922,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 +16946,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 +18412,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 +18430,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 +19574,7 @@ + unsigned HOST_WIDE_INT mask = 0xff; + int i; + ++ val = val & (unsigned HOST_WIDE_INT)0xffffffffu; + if (val == 0) /* XXX */ + return 0; + +@@ -18288,41 +20662,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 +20713,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 +20947,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 +21001,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 +21402,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 +21436,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 +21454,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 +21971,10 @@ + { + case cortexr4: + case cortexr4f: ++ case cortexa5: + case cortexa8: + case cortexa9: ++ case marvell_f: + return 2; + + default: +@@ -19621,7 +22030,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 +22039,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 +22099,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) \ +@@ -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,6 +5419,30 @@ + " + ) + ++(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"))] +@@ -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]) +@@ -335,6 +313,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 +445,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 +469,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 +494,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 +539,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 +551,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) + { +@@ -658,6 +660,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 +717,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 +743,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 +763,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 +831,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 +852,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 +869,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 +905,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 +949,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 +1011,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 +1056,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 +1089,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 +1105,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 +1129,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 +1164,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 +1233,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 +1279,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 +1293,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 +1810,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 +1883,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 +1908,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 +1936,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 +2040,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 +2222,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 +2236,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 +2371,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 +2411,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 +2623,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 +2694,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 +2703,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 +2792,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 +2813,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 +2854,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 +2874,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<