--- gcj-4.2-4.2-20070707.orig/debian/README +++ gcj-4.2-4.2-20070707/debian/README @@ -0,0 +1,32 @@ + 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) + +=============================================================================== --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcj-4.2-4.2-20070707/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: Apps/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@* --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-hppa64.prerm +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/README.patches +++ gcj-4.2-4.2-20070707/debian/README.patches @@ -0,0 +1,30 @@ +Patches applied to the Debian version of egcs +--------------------------------------------- + +Debian specific patches can be found in the debian/patches directory. +Each patch is accompanied by a shell script to apply and unapply the +patch: + +- The script can be found in the debian/patches directory and is called + .dpatch. +- The shell script is called by the debian/rules file with the option + '-patch' to apply the patch and and with '-unpatch' to unapply + the patch. The working directory is the source directory. +- The shell script returns 0 on success and 1 on failure when + (un)applying the patch. The patch program itself should be called with + --force to prevent questions. +- debian/rules creates a file patched- in the source + directory when applying the patch and removes this file when + unapplying the patch. + +Besides the patches, the following add-ons were included: + +- gpc (unpacked from gpc-19990118.tar.gz) + ftp://agnes.dida.physik.uni-essen.de/gnu-pascal/beta/gpc-19990118.tar.gz + +If these package(s) aren't found in the gcc source directory, it's +assumed that the tarball(s) can be found in the parent directory. See +debian/rules for more details. + +Before making a source package, these packages need to be unpacked. +You can use "debian/rules unpack-addons". --- gcj-4.2-4.2-20070707.orig/debian/README.maintainers +++ gcj-4.2-4.2-20070707/debian/README.maintainers @@ -0,0 +1,139 @@ +-*- 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.2: C, C++, Fortran, Objective-C and Objective-C++, plus many + common libraries like libssp, libmudflap, and libgcc. +gcj-4.2: Java. +gnat-4.2: Ada. + +The way we do this is quite peculiar, so listen up :) + +When we build from the gcc-4.2 source package, we produce, among many +others, a gcc-4.2-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.2/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.2 and gnat-4.2. + +For gcj-4.2 and gnat-4.2, the "source tarball" just contains an empty +directory; e.g.: + +$ tar tzf gnat-4.2_4.2-20070609.orig.tar.gz +gnat-4.2-4.2-20070609.orig/ + +The build scripts for all three 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.2 (4.2-20070609-1) unstable; urgency=low + + * Upload as gcj-4.2. + + -- 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.2), or in +/usr/src/gcc-4.2/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 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 seventh 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. + +* Making your own packages + +In this example, we will build our own gnat-4.2 package. + +1) Create a .orig.tar.gz tarball containing a single, empty directory. + +$ mkdir gnat-4.2-4.2-20070609.orig +$ tar czf gnat-4.2_4.2-20070609.orig.tar.gz gnat-4.2-4.2-20070609.orig + +2) Install gcc-4.2-source, which contains the real sources: + +# apt-get install gcc-4.2-source + +3) Create a build directory: + +$ mkdir gnat-4.2-4.2-20070609; cd gnat-4.2-4.2-20070609 + +4) Checkout from Subversion: + +$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-4.2/debian + +5) Edit the debian/changelog file, adding a new entry at the top that + starts with "gnat-4.2" instead of "gcc-4.2". !! The version number + in this new entry must be exactly the same as the version number of + the gcc-4.2-source package !! + +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 cores as are available +in your box. 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 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.2-4.2-20070609 ~/src/debian/ram + +3) Build in there. On my dual-core, 2 GHz amd64, it takes 61 minutes + to build gnat and run the tests, and the tmpfs takes 795 MB of + physical RAM. + +-- +Ludovic Brenta, 2007-06-26. --- gcj-4.2-4.2-20070707.orig/debian/gcc-dummy.texi +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/locale-gen +++ gcj-4.2-4.2-20070707/debian/locale-gen @@ -0,0 +1,43 @@ +#!/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 <. It can be found at the +following locations (this list was last updated on 2000/11/19): + +USA: http://www.cerfnet.com/~mpcline/c++-faq-lite/ + +Canada: http://new-brunswick.net/workshop/c++/faq + +Finland: http://www.utu.fi/~sisasa/oasis/cppfaq/ + +France: http://caor.ensmp.fr/FAQ/c++-faq-lite/ + +Spain: http://geneura.ugr.es/~jmerelo/c++-faq/ + +Taiwan: http://www.cis.nctu.edu.tw/c++/C++FAQ-English/ + +U.K.: http://www.cs.bham.ac.uk/~jdm/CPP/index.html + + +Please send updates to this list as bug report for the g++ package. --- gcj-4.2-4.2-20070707.orig/debian/gcjh-wrapper-BV +++ gcj-4.2-4.2-20070707/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); --- gcj-4.2-4.2-20070707.orig/debian/libmudflap.copyright +++ gcj-4.2-4.2-20070707/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'. --- gcj-4.2-4.2-20070707.orig/debian/gnat-BV-doc.prerm +++ gcj-4.2-4.2-20070707/debian/gnat-BV-doc.prerm @@ -0,0 +1,7 @@ +#! /bin/sh -e + +install-info --quiet --remove gnat_ugn_unw-@BV@ +install-info --quiet --remove gnat_rm-@BV@ +install-info --quiet --remove gnat-style-@BV@ + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-gcc-name.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-gcc-name.dpatch @@ -0,0 +1,106 @@ +#! /bin/sh -e + +# DP: use gcc-4.2 instead of gcc as the command name. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -ur gcc/ada.old/ali.adb gcc/ada/ali.adb +--- gcc/ada.old/ali.adb 2004-02-21 15:23:32.000000000 +0100 ++++ gcc/ada/ali.adb 2004-02-21 15:23:57.000000000 +0100 +@@ -260,7 +260,7 @@ + Write_Str (" is incorrectly formatted"); + Write_Eol; + Write_Str +- ("make sure you are using consistent versions of gcc/gnatbind"); ++ ("make sure you are using consistent versions of gcc-4.2/gnatbind"); + Write_Eol; + + -- Find start of line +diff -ur gcc/ada.old/comperr.adb gcc/ada/comperr.adb +--- gcc/ada.old/comperr.adb 2004-02-21 15:23:32.000000000 +0100 ++++ gcc/ada/comperr.adb 2004-02-21 15:23:57.000000000 +0100 +@@ -292,7 +292,7 @@ + End_Line; + + Write_Str +- ("| Include the exact gcc or gnatmake command " & ++ ("| Include the exact gcc-4.2 or gnatmake command " & + "that you entered."); + End_Line; + +diff -ur gcc/ada.old/gnatlink.adb gcc/ada/gnatlink.adb +--- gcc/ada.old/gnatlink.adb 2004-02-21 15:23:32.000000000 +0100 ++++ gcc/ada/gnatlink.adb 2004-02-21 15:23:57.000000000 +0100 +@@ -123,7 +123,7 @@ + + subtype chars_ptr is System.Address; + +- Gcc : String_Access := Program_Name ("gcc"); ++ Gcc : String_Access := Program_Name ("gcc-4.2"); + + Read_Mode : constant String := "r" & ASCII.Nul; + +@@ -1287,7 +1287,8 @@ + Write_Line (" -b target Compile the binder source to run on target"); + Write_Line (" -Bdir Load compiler executables from dir"); + 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.2'"); + Write_Eol; + Write_Line (" [non-Ada-objects] list of non Ada object files"); + Write_Line (" [linker-options] other options for the linker"); +diff -ur gcc/ada.old/make.adb gcc/ada/make.adb +--- gcc/ada.old/make.adb 2004-02-21 15:23:32.000000000 +0100 ++++ gcc/ada/make.adb 2004-02-21 15:23:57.000000000 +0100 +@@ -650,7 +650,7 @@ + -- Compiler, Binder & Linker Data and Subprograms -- + ---------------------------------------------------- + +- Gcc : String_Access := Program_Name ("gcc"); ++ Gcc : String_Access := Program_Name ("gcc-4.2"); + Gnatbind : String_Access := Program_Name ("gnatbind"); + Gnatlink : String_Access := Program_Name ("gnatlink"); + -- Default compiler, binder, linker programs +diff -ur gcc/ada.old/par-ch10.adb gcc/ada/par-ch10.adb +--- gcc/ada.old/par-ch10.adb 2004-02-21 15:23:32.000000000 +0100 ++++ gcc/ada/par-ch10.adb 2004-02-21 15:23:57.000000000 +0100 +@@ -224,7 +224,7 @@ + else + Item := First (Config_Pragmas); + Error_Msg_N +- ("cannot compile configuration pragmas with gcc", Item); ++ ("cannot compile configuration pragmas with gcc-4.2", Item); + Error_Msg_N + ("use gnatchop -c to process configuration pragmas!", Item); + raise Unrecoverable_Error; +--- gcc/ada/gnatchop.adb~ 2004-01-05 16:20:44.000000000 +0100 ++++ gcc/ada/gnatchop.adb 2004-04-25 09:33:51.000000000 +0200 +@@ -43,7 +43,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.2"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; --- gcj-4.2-4.2-20070707.orig/debian/patches/libffi-configure.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libffi-configure.dpatch @@ -0,0 +1,76 @@ +#! /bin/sh -e + +# DP: Add --enable-libffi option to toplevel configure script + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- ./configure.in.orig 2006-12-11 11:53:58.776229000 +0100 ++++ ./configure.in 2006-12-11 11:54:18.956229000 +0100 +@@ -312,6 +312,16 @@ + ENABLE_LIBSSP=$enableval, + ENABLE_LIBSSP=yes) + ++AC_ARG_ENABLE(libffi, ++[ --enable-libffi Builds libffi directory], ++ENABLE_LIBFFI=$enableval, ++ENABLE_LIBFFI=yes) ++if test "${ENABLE_LIBFFI}" != "yes" ; then ++ noconfigdirs="$noconfigdirs target-libffi" ++else ++ libgcj="`echo $libgcj | sed 's/target-libffi *//'`" ++fi ++ + # Save it here so that, even in case of --enable-libgcj, if the Java + # front-end isn't enabled, we still get libgcj disabled. + libgcj_saved=$libgcj +--- ./configure.orig 2006-12-11 11:53:58.776229000 +0100 ++++ ./configure 2006-12-11 11:55:27.416229000 +0100 +@@ -18,6 +18,8 @@ + ac_help="$ac_help + --enable-libssp Builds libssp directory" + ac_help="$ac_help ++ --enable-libffi Builds libffi directory" ++ac_help="$ac_help + --with-mpfr-dir=PATH This option has been REMOVED" + ac_help="$ac_help + --with-mpfr=PATH Specify prefix directory for installed MPFR package +@@ -1149,6 +1151,20 @@ + fi + + ++# Check whether --enable-libffi or --disable-libffi was given. ++if test "${enable_libffi+set}" = set; then ++ enableval="$enable_libffi" ++ ENABLE_LIBFFI=$enableval ++else ++ ENABLE_LIBFFI=yes ++fi ++ ++if test "${ENABLE_LIBFFI}" != "yes" ; then ++ noconfigdirs="$noconfigdirs target-libffi" ++else ++ libgcj="`echo $libgcj | sed 's/target-libffi *//'`" ++fi ++ + # Save it here so that, even in case of --enable-libgcj, if the Java + # front-end isn't enabled, we still get libgcj disabled. + libgcj_saved=$libgcj --- gcj-4.2-4.2-20070707.orig/debian/patches/ignore-comp-fail.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ignore-comp-fail.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Ignore the bootstrap comparision failure + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/Makefile.in~ 2004-02-06 08:03:12.000000000 +0100 ++++ gcc/Makefile.in 2004-02-14 10:27:19.000000000 +0100 +@@ -3567,7 +3567,9 @@ + if [ -f .bad_compare ]; then \ + echo "Bootstrap comparison failure!"; \ + cat .bad_compare; \ +- exit 1; \ ++ echo ""; \ ++ echo "Ignore the comparision failure!"; \ ++ true; \ + else \ + case "$@" in \ + *-lean ) rm -rf stage$$stage ;; \ --- gcj-4.2-4.2-20070707.orig/debian/patches/gpc-names.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gpc-names.dpatch @@ -0,0 +1,117 @@ +#! /bin/sh -e + +# DP: versioned gpc names + +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $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;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p1 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src-old/gcc/p/doc/en/gpc.texi Mon Oct 9 09:32:26 2000 ++++ src-native/gcc/p/doc/en/gpc.texi Tue Dec 19 21:04:21 2000 +@@ -28,11 +28,11 @@ + + @dircategory GNU programming tools + @direntry +-* GPC: (gpc). The GNU Pascal Compiler. ++* GPC-2.1-3.3: (gpc-2.1-3.3). The GNU Pascal Compiler. + @end direntry + @dircategory Individual utilities + @direntry +-* GPC: (gpc)Invoking GPC. The GNU Pascal Compiler. ++* GPC-2.1-3.3: (gpc-2.1-3.3)Invoking GPC. The GNU Pascal Compiler. + @end direntry + + @c Version numbers appear twice: in lowercase and capitalized for headlines. + +--- src/gcc/p/Make-lang.in~ 2003-08-31 10:13:01.000000000 +0200 ++++ src/gcc/p/Make-lang.in 2003-08-31 10:20:51.000000000 +0200 +@@ -711,42 +711,42 @@ + pascal.start.encap: + pascal.rest.encap: + +-pascal.info: $(srcdir)/p/doc/info/gpc.info \ +- $(srcdir)/p/doc/info/gpcs.info \ +- $(srcdir)/p/doc/info/gpcs-de.info \ +- $(srcdir)/p/doc/info/gpc-hr.info \ +- $(srcdir)/p/doc/info/gpcs-hr.info \ +- $(srcdir)/p/doc/info/gpc-es.info \ +- $(srcdir)/p/doc/info/gpcs-es.info ++pascal.info: $(srcdir)/p/doc/info/gpc-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-de-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpc-hr-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-hr-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpc-es-2.1$(iv).info \ ++ $(srcdir)/p/doc/info/gpcs-es-2.1$(iv).info + pascal.dvi: gpc.dvi + +-$(srcdir)/p/doc/info/gpc.info: $(GPC_TEXI_EN) ++$(srcdir)/p/doc/info/gpc-2.1$(iv).info: $(GPC_TEXI_EN) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_EN) -o $(srcdir)/p/doc/info/gpc.info gpc.texi ++ $(MAKEINFO_EN) -o $(srcdir)/p/doc/info/gpc-2.1$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs.info: $(GPC_TEXI_EN) ++$(srcdir)/p/doc/info/gpcs-2.1$(iv).info: $(GPC_TEXI_EN) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_EN) --no-split -o $(srcdir)/p/doc/info/gpcs.info gpcs.texi ++ $(MAKEINFO_EN) --no-split -o $(srcdir)/p/doc/info/gpcs-2.1$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpcs-de.info: $(GPC_TEXI_DE) ++$(srcdir)/p/doc/info/gpcs-de-2.1$(iv).info: $(GPC_TEXI_DE) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_DE) --no-split -o $(srcdir)/p/doc/info/gpcs-de.info gpcs.texi ++ $(MAKEINFO_DE) --no-split -o $(srcdir)/p/doc/info/gpcs-de-2.1$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpc-hr.info: $(GPC_TEXI_HR) ++$(srcdir)/p/doc/info/gpc-hr-2.1$(iv).info: $(GPC_TEXI_HR) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_HR) -o $(srcdir)/p/doc/info/gpc-hr.info gpc.texi ++ $(MAKEINFO_HR) -o $(srcdir)/p/doc/info/gpc-hr-2.1$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs-hr.info: $(GPC_TEXI_HR) ++$(srcdir)/p/doc/info/gpcs-hr-2.1$(iv).info: $(GPC_TEXI_HR) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_HR) --no-split -o $(srcdir)/p/doc/info/gpcs-hr.info gpcs.texi ++ $(MAKEINFO_HR) --no-split -o $(srcdir)/p/doc/info/gpcs-hr-2.1$(iv).info gpcs.texi + +-$(srcdir)/p/doc/info/gpc-es.info: $(GPC_TEXI_ES) ++$(srcdir)/p/doc/info/gpc-es-2.1$(iv).info: $(GPC_TEXI_ES) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_ES) -o $(srcdir)/p/doc/info/gpc-es.info gpc.texi ++ $(MAKEINFO_ES) -o $(srcdir)/p/doc/info/gpc-es-2.1$(iv).info gpc.texi + +-$(srcdir)/p/doc/info/gpcs-es.info: $(GPC_TEXI_ES) ++$(srcdir)/p/doc/info/gpcs-es-2.1$(iv).info: $(GPC_TEXI_ES) + [ -d "$(srcdir)/p/doc/info" ] || $(srcdir)/p/script/mkdir-p "$(srcdir)/p/doc/info" +- $(MAKEINFO_ES) --no-split -o $(srcdir)/p/doc/info/gpcs-es.info gpcs.texi ++ $(MAKEINFO_ES) --no-split -o $(srcdir)/p/doc/info/gpcs-es-2.1$(iv).info gpcs.texi + + gpc.dvi: $(GPC_TEXI_EN) + TEXINPUTS=$(srcdir)/p/doc:$(srcdir)/p/doc/images:$$TEXINPUTS \ +@@ -942,11 +942,11 @@ + fi + + pascal.install-info: pascal.install-info-man-dirs pascal.info +- rm -f $(DESTDIR)$(infodir)/gpc.info* $(DESTDIR)$(infodir)/gpcs.info* $(DESTDIR)$(infodir)/gpcs-de.info* $(DESTDIR)$(infodir)/gpcs-hr.info* $(DESTDIR)$(infodir)/gpcs-es.info* +- for f in `cd $(srcdir)/p/doc/info && echo gpc.info* gpcs*.info*`; do \ ++ rm -f $(DESTDIR)$(infodir)/gpc*.info* $(DESTDIR)$(infodir)/gpcs*.info* $(DESTDIR)$(infodir)/gpcs-de*.info* $(DESTDIR)$(infodir)/gpcs-hr*.info* $(DESTDIR)$(infodir)/gpcs-es*.info* ++ for f in `cd $(srcdir)/p/doc/info && echo gpc-2.1$(iv).info* gpcs*.info*`; do \ + $(INSTALL_DATA) $(srcdir)/p/doc/info/$$f $(DESTDIR)$(infodir)/$$f || exit 1; \ + done +- chmod a-x $(DESTDIR)$(infodir)/gpc.info* $(DESTDIR)$(infodir)/gpcs.info* $(DESTDIR)$(infodir)/gpcs-de.info* $(DESTDIR)$(infodir)/gpcs-hr.info* $(DESTDIR)$(infodir)/gpcs-es.info* ++ chmod a-x $(DESTDIR)$(infodir)/gpc*.info* $(DESTDIR)$(infodir)/gpcs*.info* $(DESTDIR)$(infodir)/gpcs-de*.info* $(DESTDIR)$(infodir)/gpcs-hr*.info* $(DESTDIR)$(infodir)/gpcs-es*.info* + + pascal.install-man: pascal.install-info-man-dirs $(srcdir)/p/doc/en/gpc.1 $(srcdir)/p/doc/generated/gpc-run.1 + -if [ -f gpc1$(exeext) ]; then \ --- gcj-4.2-4.2-20070707.orig/debian/patches/template.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/template.dpatch @@ -0,0 +1,33 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: + +# remove the next line +exit 0 + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + --- gcj-4.2-4.2-20070707.orig/debian/patches/config-ml-trunk.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/config-ml-trunk.dpatch @@ -0,0 +1,198 @@ +#! /bin/sh -e + +# DP: disable some biarch libraries for biarch builds + +if [ $# -eq 3 ] && [ "$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 -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- config-ml.in.orig 2005-11-22 14:42:01.208516952 +0100 ++++ config-ml.in 2005-11-22 14:46:39.072275240 +0100 +@@ -215,6 +215,13 @@ + fi + done + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++ + # Target libraries are configured for the host they run on, so we check + # $host here, not $target. + +@@ -301,6 +308,26 @@ + done + fi + ;; ++i[34567]86-*-*) ++ case " $multidirs " in ++ *" 64 "*) ++ ac_configure_args="${ac_configure_args} --host=x86_64-linux-gnu" ++ # Setting $host this late is a hack. Some directories can't ++ # handle it, so disable them for now. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ ;; ++ esac ++ ;; + m68*-*-*) + if [ x$enable_softfloat = xno ] + then +@@ -494,16 +521,56 @@ + esac + done + fi ++ case " $multidirs " in ++ *" 64 "*) ++ # We will not be able to create libraries with -m64 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 64bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m64 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m64, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *m64* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac + ;; + sparc*-*-*) + case " $multidirs " in +- *" m64 "*) ++ *" 64 "*) + # We will not be able to create libraries with -m64 if + # we cannot even link a trivial program. It usually + # indicates the 64bit libraries are missing. + if echo 'main() {}' > conftest.c && + ${CC-gcc} -m64 conftest.c -o conftest; then +- : ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done + else + echo Could not link program with -m64, disabling it. + old_multidirs="${multidirs}" +@@ -519,6 +586,74 @@ + ;; + esac + ;; ++x86_64*-*-*) ++ case " $multidirs " in ++ *" 32 "*) ++ # We will not be able to create libraries with -m32 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 32bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m32 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *32* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m32, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *m32* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac ++ ;; ++s390-*-*) ++ ac_configure_args="${ac_configure_args} --host=s390x-linux-gnu" ++ ++ case " $multidirs " in ++ *" 64 "*) ++ # We will not be able to create libraries with -m64 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 64bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m64 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m64, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac ++ ;; + esac + + # Remove extraneous blanks from multidirs. --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-driver.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-driver.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: Look for gcc-3.4, gcc-4.0 and gcc-4.1 as gcc with Ada support. + +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 -p0 < $0 + cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/aclocal.m4~ Sat Mar 2 00:37:42 2002 ++++ gcc/aclocal.m4 Sat Apr 6 13:01:36 2002 +@@ -312,6 +312,10 @@ + ${ac_tool_prefix}$user_cc $user_cc \ + ${ac_tool_prefix}gcc gcc \ + ${ac_tool_prefix}cc cc \ ++ ${ac_tool_prefix}gcc-4.2 gcc-4.2 \ ++ ${ac_tool_prefix}gcc-4.1 gcc-4.1 \ ++ ${ac_tool_prefix}gcc-4.0 gcc-4.0 \ ++ ${ac_tool_prefix}gcc-3.4 gcc-3.4 \ + ${ac_tool_prefix}gnatgcc gnatgcc \ + ${ac_tool_prefix}gnatcc gnatcc \ + ${ac_tool_prefix}adagcc adagcc \ --- gcj-4.2-4.2-20070707.orig/debian/patches/powerpc-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/powerpc-biarch.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: enable biarch for 32 bit compiler + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/rs6000/t-linux64.orig 2004-03-17 16:15:32.000000000 +0100 ++++ gcc/config/rs6000/t-linux64 2005-10-01 00:40:20.279274880 +0200 +@@ -8,13 +8,13 @@ + + SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver + +-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 ../lib nof +-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) ++MULTILIB_EXCEPTIONS = ++MULTILIB_EXCLUSIONS = ++MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_MATCHES = + + # We want fine grained libraries, so use the new code to build the + # floating point emulation libraries. --- gcj-4.2-4.2-20070707.orig/debian/patches/alpha-no-ev4-directive.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/alpha-no-ev4-directive.dpatch @@ -0,0 +1,49 @@ +#! /bin/sh -e + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/config/alpha/alpha.c +=================================================================== +--- gcc/config/alpha/alpha.c (revision 115263) ++++ gcc/config/alpha/alpha.c (working copy) +@@ -9372,7 +9372,7 @@ + fputs ("\t.set nomacro\n", asm_out_file); + if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) + { +- const char *arch; ++ const char *arch = NULL; + + if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) + arch = "ev6"; +@@ -9382,10 +9382,9 @@ + arch = "ev56"; + else if (alpha_cpu == PROCESSOR_EV5) + arch = "ev5"; +- else +- arch = "ev4"; + +- fprintf (asm_out_file, "\t.arch %s\n", arch); ++ if (arch) ++ fprintf (asm_out_file, "\t.arch %s\n", arch); + } + } + #endif --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-libffi.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-libffi.dpatch @@ -0,0 +1,1232 @@ +#! /bin/sh -e + +# DP: Enable the libffi invocation interface, needed for the gcj interpreter. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2007-05-18 Aurelien Jarno + + * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted + from (ffi_prep_closure): ... this. + (FFI_INIT_TRAMPOLINE): Adjust. + +2005-12-31 Phil Blundell + + * src/arm/ffi.c (ffi_prep_incoming_args_SYSV, + ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support. + * src/arm/sysv.S(ffi_closure_SYSV): Likewise. + * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise. + (FFI_CLOSURES): Enable closure support. + +2007-07-03 Andrew Haley + + * testsuite/libffi.call/cls_multi_ushort.c, + testsuite/libffi.call/cls_align_uint16.c, + testsuite/libffi.call/nested_struct1.c, + testsuite/libffi.call/nested_struct3.c, + testsuite/libffi.call/cls_7_1_byte.c, + testsuite/libffi.call/cls_double.c, + testsuite/libffi.call/nested_struct5.c, + testsuite/libffi.call/nested_struct7.c, + testsuite/libffi.call/cls_sint.c, + testsuite/libffi.call/nested_struct9.c, + testsuite/libffi.call/cls_20byte1.c, + testsuite/libffi.call/cls_multi_sshortchar.c, + testsuite/libffi.call/cls_align_sint64.c, + testsuite/libffi.call/cls_3byte2.c, + testsuite/libffi.call/cls_multi_schar.c, + testsuite/libffi.call/cls_multi_uchar.c, + testsuite/libffi.call/cls_19byte.c, + testsuite/libffi.call/cls_9byte1.c, + testsuite/libffi.call/cls_align_float.c, + testsuite/libffi.call/closure_fn1.c, + testsuite/libffi.call/problem1.c, + testsuite/libffi.call/closure_fn3.c, + testsuite/libffi.call/cls_sshort.c, + testsuite/libffi.call/closure_fn5.c, + testsuite/libffi.call/cls_align_double.c, + testsuite/libffi.call/cls_2byte.c, + testsuite/libffi.call/nested_struct.c, + testsuite/libffi.call/nested_struct10.c, + testsuite/libffi.call/cls_4byte.c, + testsuite/libffi.call/cls_6byte.c, + testsuite/libffi.call/cls_8byte.c, + testsuite/libffi.call/cls_multi_sshort.c, + testsuite/libffi.call/cls_align_uint32.c, + testsuite/libffi.call/cls_align_sint16.c, + testsuite/libffi.call/cls_float.c, + testsuite/libffi.call/cls_20byte.c, + testsuite/libffi.call/cls_5_1_byte.c, + testsuite/libffi.call/nested_struct2.c, + testsuite/libffi.call/cls_24byte.c, + testsuite/libffi.call/nested_struct4.c, + testsuite/libffi.call/nested_struct6.c, + testsuite/libffi.call/cls_64byte.c, + testsuite/libffi.call/nested_struct8.c, + testsuite/libffi.call/cls_uint.c, + testsuite/libffi.call/cls_multi_ushortchar.c, + testsuite/libffi.call/cls_schar.c, + testsuite/libffi.call/cls_uchar.c, + testsuite/libffi.call/cls_align_uint64.c, + testsuite/libffi.call/cls_ulonglong.c, + testsuite/libffi.call/cls_align_longdouble.c, + testsuite/libffi.call/cls_1_1byte.c, + testsuite/libffi.call/cls_12byte.c, + testsuite/libffi.call/cls_3_1byte.c, + testsuite/libffi.call/cls_3byte1.c, + testsuite/libffi.call/cls_4_1byte.c, + testsuite/libffi.call/cls_6_1_byte.c, + testsuite/libffi.call/cls_16byte.c, + testsuite/libffi.call/cls_18byte.c, + testsuite/libffi.call/closure_fn0.c, + testsuite/libffi.call/cls_9byte2.c, + testsuite/libffi.call/closure_fn2.c, + testsuite/libffi.call/closure_fn4.c, + testsuite/libffi.call/cls_ushort.c, + testsuite/libffi.call/closure_fn6.c, + testsuite/libffi.call/cls_5byte.c, + testsuite/libffi.call/cls_align_pointer.c, + testsuite/libffi.call/cls_7byte.c, + testsuite/libffi.call/cls_align_sint32.c, + testsuite/libffi.special/unwindtest_ffi_call.cc, + testsuite/libffi.special/unwindtest.cc: Enable for ARM. + +Index: libffi/src/arm/ffitarget.h +=================================================================== +--- libffi/src/arm/ffitarget.h (revision 126194) ++++ libffi/src/arm/ffitarget.h (working copy) +@@ -40,7 +40,8 @@ + + /* ---- Definitions for closures ----------------------------------------- */ + +-#define FFI_CLOSURES 0 ++#define FFI_CLOSURES 1 ++#define FFI_TRAMPOLINE_SIZE 20 + #define FFI_NATIVE_RAW_API 0 + + #endif +Index: libffi/src/arm/ffi.c +=================================================================== +--- libffi/src/arm/ffi.c (revision 126194) ++++ libffi/src/arm/ffi.c (working copy) +@@ -168,3 +168,122 @@ + break; + } + } ++ ++/** private members **/ ++ ++static void ffi_prep_incoming_args_SYSV (char *stack, void **ret, ++ void** args, ffi_cif* cif); ++ ++void ffi_closure_SYSV (ffi_closure *); ++ ++/* This function is jumped to by the trampoline */ ++ ++unsigned int ++ffi_closure_SYSV_inner (closure, respp, args) ++ ffi_closure *closure; ++ void **respp; ++ void *args; ++{ ++ // our various things... ++ ffi_cif *cif; ++ void **arg_area; ++ ++ cif = closure->cif; ++ arg_area = (void**) alloca (cif->nargs * sizeof (void*)); ++ ++ /* this call will initialize ARG_AREA, such that each ++ * element in that array points to the corresponding ++ * value on the stack; and if the function returns ++ * a structure, it will re-set RESP to point to the ++ * structure return address. */ ++ ++ ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif); ++ ++ (closure->fun) (cif, *respp, arg_area, closure->user_data); ++ ++ return cif->flags; ++} ++ ++/*@-exportheader@*/ ++static void ++ffi_prep_incoming_args_SYSV(char *stack, void **rvalue, ++ void **avalue, ffi_cif *cif) ++/*@=exportheader@*/ ++{ ++ register unsigned int i; ++ register void **p_argv; ++ register char *argp; ++ register ffi_type **p_arg; ++ ++ argp = stack; ++ ++ if ( cif->flags == FFI_TYPE_STRUCT ) { ++ *rvalue = *(void **) argp; ++ argp += 4; ++ } ++ ++ p_argv = avalue; ++ ++ for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) ++ { ++ size_t z; ++ ++ /* Align if necessary */ ++ if ((sizeof(int) - 1) & (unsigned) argp) { ++ argp = (char *) ALIGN(argp, sizeof(int)); ++ } ++ ++ z = (*p_arg)->size; ++ ++ /* because we're little endian, this is what it turns into. */ ++ ++ *p_argv = (void*) argp; ++ ++ p_argv++; ++ argp += z; ++ } ++ ++ return; ++} ++ ++/* How to make a trampoline. */ ++ ++#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \ ++({ unsigned char *__tramp = (unsigned char*)(TRAMP); \ ++ unsigned int __fun = (unsigned int)(FUN); \ ++ unsigned int __ctx = (unsigned int)(CTX); \ ++ *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */ \ ++ *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \ ++ *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \ ++ *(unsigned int*) &__tramp[12] = __ctx; \ ++ *(unsigned int*) &__tramp[16] = __fun; \ ++ register unsigned long _beg __asm ("a1") = (unsigned long) (&__tramp[0]); \ ++ register unsigned long _end __asm ("a2") = (unsigned long) (&__tramp[19]); \ ++ register unsigned long _flg __asm ("a3") = 0; \ ++ __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \ ++ : "=r" (_beg) \ ++ : "0" (_beg), "r" (_end), "r" (_flg)); \ ++ }) ++ ++ ++/* the cif must already be prep'ed */ ++ ++ffi_status ++ffi_prep_closure_loc (ffi_closure* closure, ++ ffi_cif* cif, ++ void (*fun)(ffi_cif*,void*,void**,void*), ++ void *user_data, ++ void *codeloc) ++{ ++ FFI_ASSERT (cif->abi == FFI_SYSV); ++ ++ FFI_INIT_TRAMPOLINE (&closure->tramp[0], \ ++ &ffi_closure_SYSV, \ ++ codeloc); ++ ++ closure->cif = cif; ++ closure->user_data = user_data; ++ closure->fun = fun; ++ ++ return FFI_OK; ++} +Index: libffi/src/arm/sysv.S +=================================================================== +--- libffi/src/arm/sysv.S (revision 126194) ++++ libffi/src/arm/sysv.S (working copy) +@@ -207,3 +207,51 @@ + .ffi_call_SYSV_end: + .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) + ++/* ++ unsigned int FFI_HIDDEN ++ ffi_closure_SYSV_inner (closure, respp, args) ++ ffi_closure *closure; ++ void **respp; ++ void *args; ++*/ ++ ++ARM_FUNC_START ffi_closure_SYSV ++ add ip, sp, #16 ++ stmfd sp!, {ip, lr} ++ add r2, sp, #8 ++ sub sp, sp, #16 ++ str sp, [sp, #8] ++ add r1, sp, #8 ++ bl ffi_closure_SYSV_inner ++ cmp r0, #FFI_TYPE_INT ++ beq .Lretint ++ cmp r0, #FFI_TYPE_FLOAT ++ beq .Lretfloat ++ cmp r0, #FFI_TYPE_DOUBLE ++ beq .Lretdouble ++ cmp r0, #FFI_TYPE_LONGDOUBLE ++ beq .Lretlongdouble ++ cmp r0, #FFI_TYPE_SINT64 ++ beq .Lretlonglong ++.Lclosure_epilogue: ++ add sp, sp, #16 ++ ldmfd sp, {sp, pc} ++.Lretint: ++ ldr r0, [sp] ++ b .Lclosure_epilogue ++.Lretlonglong: ++ ldr r0, [sp] ++ ldr r1, [sp, #4] ++ b .Lclosure_epilogue ++.Lretfloat: ++ ldfs f0, [sp] ++ b .Lclosure_epilogue ++.Lretdouble: ++ ldfd f0, [sp] ++ b .Lclosure_epilogue ++.Lretlongdouble: ++ ldfd f0, [sp] ++ b .Lclosure_epilogue ++.ffi_closure_SYSV_end: ++ .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) ++ +Index: libffi/testsuite/libffi.call/cls_multi_ushort.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_ushort.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_ushort.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + unsigned short test_func_fn(unsigned short a1, unsigned short a2) +Index: libffi/testsuite/libffi.call/cls_align_uint16.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_uint16.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_uint16.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/nested_struct1.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct1.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct1.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_16byte1 { +Index: libffi/testsuite/libffi.call/nested_struct3.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct3.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct3.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030911 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_7_1_byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_7_1_byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_7_1_byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20050708 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_7byte { +Index: libffi/testsuite/libffi.call/cls_double.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_double.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_double.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/nested_struct5.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct5.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct5.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/nested_struct7.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct7.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct7.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_sint.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_sint.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_sint.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031108 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/nested_struct9.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct9.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct9.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_20byte1.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_20byte1.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_20byte1.c (working copy) +@@ -5,7 +5,9 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_20byte { +Index: libffi/testsuite/libffi.call/cls_multi_sshortchar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_sshortchar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_sshortchar.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + signed short test_func_fn(signed char a1, signed short a2, +Index: libffi/testsuite/libffi.call/cls_align_sint64.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_sint64.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_sint64.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_3byte2.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_3byte2.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_3byte2.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_3byte_1 { +Index: libffi/testsuite/libffi.call/cls_multi_schar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_schar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_schar.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + signed char test_func_fn(signed char a1, signed char a2) +Index: libffi/testsuite/libffi.call/cls_multi_uchar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_uchar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_uchar.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + unsigned char test_func_fn(unsigned char a1, unsigned char a2, +Index: libffi/testsuite/libffi.call/cls_19byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_19byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_19byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030915 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_19byte { +Index: libffi/testsuite/libffi.call/cls_9byte1.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_9byte1.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_9byte1.c (working copy) +@@ -7,7 +7,7 @@ + PR: none. + Originator: 20030914 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_9byte { +Index: libffi/testsuite/libffi.call/cls_align_float.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_float.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_float.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/closure_fn1.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn1.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn1.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + +Index: libffi/testsuite/libffi.call/problem1.c +=================================================================== +--- libffi/testsuite/libffi.call/problem1.c (revision 126194) ++++ libffi/testsuite/libffi.call/problem1.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct my_ffi_struct { +Index: libffi/testsuite/libffi.call/closure_fn3.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn3.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn3.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/cls_sshort.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_sshort.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_sshort.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031108 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/closure_fn5.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn5.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn5.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20031026 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void +Index: libffi/testsuite/libffi.call/cls_align_double.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_double.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_double.c (working copy) +@@ -4,7 +4,9 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_2byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_2byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_2byte.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_2byte { +Index: libffi/testsuite/libffi.call/nested_struct.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_16byte1 { +Index: libffi/testsuite/libffi.call/nested_struct10.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct10.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct10.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_4byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_4byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_4byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + + #include "ffitest.h" + +Index: libffi/testsuite/libffi.call/cls_6byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_6byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_6byte.c (working copy) +@@ -5,7 +5,8 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_6byte { +Index: libffi/testsuite/libffi.call/cls_8byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_8byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_8byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_8byte { +Index: libffi/testsuite/libffi.call/cls_multi_sshort.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_sshort.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_sshort.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + signed short test_func_fn(signed short a1, signed short a2) +Index: libffi/testsuite/libffi.call/cls_align_uint32.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_uint32.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_uint32.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_align_sint16.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_sint16.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_sint16.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_float.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_float.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_float.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/cls_20byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_20byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_20byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_20byte { +Index: libffi/testsuite/libffi.call/cls_5_1_byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_5_1_byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_5_1_byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20050708 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_5byte { +Index: libffi/testsuite/libffi.call/nested_struct2.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct2.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct2.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030911 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_24byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_24byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_24byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_24byte { +Index: libffi/testsuite/libffi.call/nested_struct4.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct4.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct4.c (working copy) +@@ -6,7 +6,7 @@ + PR: PR 25630. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/nested_struct6.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct6.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct6.c (working copy) +@@ -6,7 +6,7 @@ + PR: PR 25630. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_64byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_64byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_64byte.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_64byte { +Index: libffi/testsuite/libffi.call/nested_struct8.c +=================================================================== +--- libffi/testsuite/libffi.call/nested_struct8.c (revision 126194) ++++ libffi/testsuite/libffi.call/nested_struct8.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20051010 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct A { +Index: libffi/testsuite/libffi.call/cls_uint.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_uint.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_uint.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/cls_multi_ushortchar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_multi_ushortchar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_multi_ushortchar.c (working copy) +@@ -4,7 +4,7 @@ + PR: PR13221. + Originator: 20031129 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + unsigned short test_func_fn(unsigned char a1, unsigned short a2, +Index: libffi/testsuite/libffi.call/cls_schar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_schar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_schar.c (working copy) +@@ -4,7 +4,9 @@ + PR: none. + Originator: 20031108 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/cls_uchar.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_uchar.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_uchar.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/cls_align_uint64.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_uint64.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_uint64.c (working copy) +@@ -4,7 +4,8 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_ulonglong.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_ulonglong.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_ulonglong.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp, +Index: libffi/testsuite/libffi.call/cls_align_longdouble.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_longdouble.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_longdouble.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + + #include "ffitest.h" + +Index: libffi/testsuite/libffi.call/cls_1_1byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_1_1byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_1_1byte.c (working copy) +@@ -6,7 +6,9 @@ + PR: none. + Originator: 20030902 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_1_1byte { +Index: libffi/testsuite/libffi.call/cls_12byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_12byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_12byte.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_12byte { +Index: libffi/testsuite/libffi.call/cls_3_1byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_3_1byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_3_1byte.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030902 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_3_1byte { +Index: libffi/testsuite/libffi.call/cls_3byte1.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_3byte1.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_3byte1.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_3byte { +Index: libffi/testsuite/libffi.call/cls_4_1byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_4_1byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_4_1byte.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030902 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_4_1byte { +Index: libffi/testsuite/libffi.call/cls_6_1_byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_6_1_byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_6_1_byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20050708 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_6byte { +Index: libffi/testsuite/libffi.call/cls_16byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_16byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_16byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_16byte { +Index: libffi/testsuite/libffi.call/cls_18byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_18byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_18byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030915 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_18byte { +Index: libffi/testsuite/libffi.call/closure_fn0.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn0.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn0.c (working copy) +@@ -6,7 +6,10 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++ ++ ++ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void +Index: libffi/testsuite/libffi.call/cls_9byte2.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_9byte2.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_9byte2.c (working copy) +@@ -7,7 +7,7 @@ + PR: none. + Originator: 20030914 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_9byte { +Index: libffi/testsuite/libffi.call/closure_fn2.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn2.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn2.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/closure_fn4.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn4.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn4.c (working copy) +@@ -6,7 +6,7 @@ + PR: none. + Originator: 20031026 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + + #include "ffitest.h" + +Index: libffi/testsuite/libffi.call/cls_ushort.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_ushort.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_ushort.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args, +Index: libffi/testsuite/libffi.call/closure_fn6.c +=================================================================== +--- libffi/testsuite/libffi.call/closure_fn6.c (revision 126194) ++++ libffi/testsuite/libffi.call/closure_fn6.c (working copy) +@@ -5,7 +5,7 @@ + PR: PR23404 + Originator: 20050830 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + static void +Index: libffi/testsuite/libffi.call/cls_5byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_5byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_5byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_5byte { +Index: libffi/testsuite/libffi.call/cls_align_pointer.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_pointer.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_pointer.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.call/cls_7byte.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_7byte.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_7byte.c (working copy) +@@ -5,7 +5,7 @@ + PR: none. + Originator: 20030828 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_7byte { +Index: libffi/testsuite/libffi.call/cls_align_sint32.c +=================================================================== +--- libffi/testsuite/libffi.call/cls_align_sint32.c (revision 126194) ++++ libffi/testsuite/libffi.call/cls_align_sint32.c (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: 20031203 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitest.h" + + typedef struct cls_struct_align { +Index: libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +=================================================================== +--- libffi/testsuite/libffi.special/unwindtest_ffi_call.cc (revision 126194) ++++ libffi/testsuite/libffi.special/unwindtest_ffi_call.cc (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: Andreas Tobler 20061213 */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitestcxx.h" + + static int checking(int a __UNUSED__, short b __UNUSED__, +Index: libffi/testsuite/libffi.special/unwindtest.cc +=================================================================== +--- libffi/testsuite/libffi.special/unwindtest.cc (revision 126194) ++++ libffi/testsuite/libffi.special/unwindtest.cc (working copy) +@@ -4,7 +4,7 @@ + PR: none. + Originator: Jeff Sturm */ + +-/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */ ++/* { dg-do run { xfail mips64*-*-* } } */ + #include "ffitestcxx.h" + + void --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-sjlj.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-sjlj.dpatch @@ -0,0 +1,65 @@ +#! /bin/sh -e + +# DP: Don't try to use _Unwind_Backtrace on SJLJ targets. +# DP: See bug #387875, #388505, GCC PR 29206. + +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 + +--- + libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +Index: src/libjava/sysdep/generic/backtrace.h +=================================================================== +--- src.orig/libjava/sysdep/generic/backtrace.h 2006-11-06 14:00:32.000000000 -0500 ++++ src/libjava/sysdep/generic/backtrace.h 2006-11-06 14:04:38.000000000 -0500 +@@ -13,6 +13,20 @@ details. */ + + #include + ++#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, _J + { + return _URC_NO_REASON; + } ++ ++#endif /* SJLJ_EXCEPTIONS */ ++ + #endif --- gcj-4.2-4.2-20070707.orig/debian/patches/mudflap-nocheck.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/mudflap-nocheck.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: Disable running the libmudflap testsuite. Getting killed on alpha. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libmudflap/testsuite/Makefile.in~ 2005-09-23 18:33:47.000000000 +0200 ++++ libmudflap/testsuite/Makefile.in 2006-03-25 20:31:45.044903808 +0100 +@@ -218,6 +218,8 @@ + + + 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); \ --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-secondary-addr-reload.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-secondary-addr-reload.dpatch @@ -0,0 +1,96 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: add secondary reloads to allow reload to get byte values into addr regs + +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 + +--- + gcc/config/m68k/m68k.c | 5 +---- + gcc/config/m68k/m68k.h | 6 ++++++ + gcc/config/m68k/m68k.md | 16 ++++++++++++++++ + 3 files changed, 23 insertions(+), 4 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -3625,10 +3625,7 @@ m68k_regno_mode_ok (int regno, enum mach + } + else if (regno < 16) + { +- /* Address Registers, can't hold bytes, can hold aggregate if +- fits in. */ +- if (GET_MODE_SIZE (mode) == 1) +- return false; ++ /* Address Registers, can hold aggregate if fits in. */ + if (regno + GET_MODE_SIZE (mode) / 4 <= 16) + return true; + } +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -437,6 +437,12 @@ extern enum reg_class regno_reg_class[]; + ? DATA_REGS \ + : (CLASS)) + ++/* Reloads of QImode memory subregs into address regs require a ++ secondary reload via a data reg. */ ++#define SECONDARY_RELOAD_CLASS(CLASS, MODE, X) \ ++ (((CLASS) == ADDR_REGS && (MODE) == QImode && true_regnum(X) == -1) \ ++ ? DATA_REGS : NO_REGS) ++ + /* On the m68k, this is the size of MODE in words, + except in the FP regs, where a single reg is always enough. */ + #define CLASS_MAX_NREGS(CLASS, MODE) \ +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -762,6 +762,22 @@ + "!TARGET_COLDFIRE" + "") + ++(define_expand "reload_inqi" ++ [(set (match_operand:QI 2 "register_operand" "=&d") ++ (match_operand:QI 1 "general_operand" "g")) ++ (set (match_operand:QI 0 "register_operand" "=a") ++ (match_dup 2))] ++ "" ++ "") ++ ++(define_expand "reload_outqi" ++ [(set (match_operand:QI 2 "register_operand" "=&d") ++ (match_operand:QI 1 "register_operand" "=a")) ++ (set (match_operand:QI 0 "general_operand" "g") ++ (match_dup 2))] ++ "" ++ "") ++ + (define_expand "movsf" + [(set (match_operand:SF 0 "nonimmediate_operand" "") + (match_operand:SF 1 "general_operand" ""))] +--- gcc/config/m68k/m68k.c~ 2007-05-19 08:23:35.000000000 +0200 ++++ gcc/config/m68k/m68k.c 2007-05-19 08:30:58.000000000 +0200 --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-hash-style-both.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-hash-style-both.dpatch @@ -0,0 +1,163 @@ +#! /bin/sh -e + +# DP: Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +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. + +--- gcc/config/alpha/linux-elf.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/alpha/linux-elf.h 2006-12-11 13:03:10.336229000 +0100 +@@ -40,7 +40,7 @@ + + #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: \ +--- gcc/config/s390/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/s390/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -78,7 +78,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/sparc/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -133,7 +133,7 @@ + + + #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: \ +--- gcc/config/sparc/linux64.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/sparc/linux64.h 2006-12-11 13:03:10.336229000 +0100 +@@ -167,7 +167,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=both -Y P,/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -176,7 +176,7 @@ + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -257,7 +257,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=both -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/i386/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -109,7 +109,7 @@ + { "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: \ +--- gcc/config/i386/linux64.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/i386/linux64.h 2006-12-11 13:03:51.046229000 +0100 +@@ -53,7 +53,7 @@ + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ ++#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/ia64/linux.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/ia64/linux.h 2006-12-11 13:03:10.346229000 +0100 +@@ -40,7 +40,7 @@ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "\ ++#define LINK_SPEC "--hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/rs6000/sysv4.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/rs6000/sysv4.h 2006-12-11 13:03:10.346229000 +0100 +@@ -908,7 +908,7 @@ + #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 "}}}" + +--- gcc/config/rs6000/linux64.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/rs6000/linux64.h 2006-12-11 13:03:10.346229000 +0100 +@@ -351,11 +351,11 @@ + 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 "}}}" + --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-gnatvsn.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-gnatvsn.dpatch @@ -0,0 +1,57 @@ +#! /bin/sh -e + +# DP: proposed patch for PR ada/27194. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- orig/gnatvsn.ads 2005-11-15 14:59:02.000000000 +0100 ++++ gcc/ada/gnatvsn.ads 2006-04-18 10:00:37.010002000 +0200 +@@ -67,7 +67,7 @@ + -- GAP + -- GNAT Academic Program, similar to Public. + +- Ver_Len_Max : constant := 32; ++ Ver_Len_Max : constant := 64; + -- Longest possible length for Gnat_Version_String in this or any + -- other version of GNAT. This is used by the binder to establish + -- space to store any possible version string value for checks. This +--- orig/gnatvsn.adb 2005-07-01 03:29:17.000000000 +0200 ++++ 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); --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-ssp-default.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-ssp-default.dpatch @@ -0,0 +1,208 @@ +#! /bin/sh -e + +# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++. +# DP: Build libgcc using -fno-stack-protector. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/doc/invoke.texi.orig 2006-12-11 13:38:29.266229000 +0100 ++++ gcc/doc/invoke.texi 2006-12-11 13:38:54.066229000 +0100 +@@ -5829,6 +5829,9 @@ + 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 7.04 this option is enabled by default ++for C, C++, ObjC, ObjC++. ++ + @item -fstack-protector-all + Like @option{-fstack-protector} except that all functions are protected. + +--- gcc/objc/lang-specs.h.orig 2006-12-11 13:38:28.986229000 +0100 ++++ gcc/objc/lang-specs.h 2006-12-11 13:38:54.046229000 +0100 +@@ -30,13 +30,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 %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\ ++ cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(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 -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0}, + {"@objective-c-header", + "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\ +@@ -45,10 +45,10 @@ + %{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) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}\ + %{!save-temps:%{!no-integrated-cpp:\ +- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\ ++ cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\ + -o %g.s %{!o*:--output-pch=%i.gch}\ + %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0}, +--- gcc/objcp/lang-specs.h.orig 2006-12-11 13:38:29.046229000 +0100 ++++ gcc/objcp/lang-specs.h 2006-12-11 13:38:54.046229000 +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}, +--- gcc/cp/lang-specs.h.orig 2006-12-11 13:38:28.986229000 +0100 ++++ gcc/cp/lang-specs.h 2006-12-11 13:39:40.806229000 +0100 +@@ -42,7 +42,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++", +@@ -52,11 +52,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}, +--- gcc/Makefile.in.orig 2006-12-11 13:38:29.076229000 +0100 ++++ gcc/Makefile.in 2006-12-11 13:40:11.316229000 +0100 +@@ -555,6 +555,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. +@@ -568,6 +569,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-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional sources to handle exceptions; overridden by targets as needed. +--- gcc/gcc.c.orig 2006-12-11 13:38:29.166229000 +0100 ++++ gcc/gcc.c 2006-12-11 13:38:54.056229000 +0100 +@@ -682,6 +682,10 @@ + #endif + #endif + ++#ifndef SSP_DEFAULT_SPEC ++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:-fstack-protector}" ++#endif ++ + #ifndef LINK_PIE_SPEC + #ifdef HAVE_LD_PIE + #define LINK_PIE_SPEC "%{pie:-pie} " +@@ -735,6 +739,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; +@@ -806,6 +811,7 @@ + %{--target-help:--target-help}\ + %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ + %{fsyntax-only:-o %j} %{-param*}\ ++ %(ssp_default)\ + %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants}\ + %{coverage:-fprofile-arcs -ftest-coverage}"; + +@@ -961,15 +967,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}\ +@@ -992,7 +998,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}, +@@ -1542,6 +1548,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), --- gcj-4.2-4.2-20070707.orig/debian/patches/ppc64-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ppc64-biarch.dpatch @@ -0,0 +1,118 @@ +#! /bin/sh -e + +# DP: biarch patches for ppc64 + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +diff -urN tmp/gcc/config/rs6000/t-linux64 src/gcc/config/rs6000/t-linux64 +--- tmp/gcc/config/rs6000/t-linux64 2004-12-04 08:05:46.000000000 +0000 ++++ src/gcc/config/rs6000/t-linux64 2004-12-04 08:07:52.180889736 +0000 +@@ -8,13 +8,10 @@ + + SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver + +-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 ../lib nof ++MULTILIB_OSDIRNAMES = ../lib ../lib32 +-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) + + # We want fine grained libraries, so use the new code to build the + # floating point emulation libraries. +diff -urN tmp/libjava/configure.host src/libjava/configure.host +--- tmp/libjava/configure.host 25 Nov 2004 03:46:56 -0000 ++++ src/libjava/configure.host 15 Dec 2004 15:45:22 -0000 +@@ -123,10 +123,13 @@ + powerpc64*-*) + sysdeps_dir=powerpc + libgcj_interpreter=yes +- if [ x`$CC -print-multi-os-directory` = x../lib64 ]; then ++ touch f-test.c ++ $CC -c f-test.c -o f-test.o ++ if [ "x`file f-test.o | grep 32-bit`" = "x" ]; then + libgcj_flags="${libgcj_flags} -mminimal-toc" + fi + enable_hash_synchronization_default=yes + slow_pthread_self=yes ++ rm f-test.c f-test.o + ;; + powerpc*-*) +diff -urN tmp/config-ml.in src/config-ml.in +--- tmp/config-ml.in 2004-11-09 08:07:29.000000000 +0000 ++++ src/config-ml.in 2004-12-12 07:12:44.631147816 +0000 +@@ -400,7 +400,49 @@ + ;; + esac + ;; +-powerpc*-*-* | rs6000*-*-*) ++powerpc64-*-*) ++ case " $multidirs " in ++ *" 32 "*) ++ # We will not be able to create libraries with -m32 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 32bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m32 conftest.c -o conftest; then ++ echo Enable only libstdc++. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *32* ) case ${ml_realsrcdir} in ++ *"libstdc++-v3" ) multidirs="${multidirs} ${x}" ;; ++ *"libgfortran" ) multidirs="${multidirs} ${x}" ;; ++ *"libffi" ) multidirs="${multidirs} ${x}" ;; ++ *"libssp" ) multidirs="${multidirs} ${x}" ;; ++ *"libobjc" ) multidirs="${multidirs} ${x}" ;; ++ *"libiberty" ) multidirs="${multidirs} ${x}" ;; ++ *"zlib" ) multidirs="${multidirs} ${x}" ;; ++ *) : ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m32, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *m32* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac ++ ;; ++powerpc-*-* | rs6000*-*-*) + if [ x$enable_aix64 = xno ] + then + old_multidirs="${multidirs}" --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-prevent-swap.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-prevent-swap.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: don't swap operands during reloads + +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 + +--- + + gcc/recog.c | 1 + + 1 files changed, 1 insertions(+) + +Index: gcc-4.1/gcc/recog.c +=================================================================== +--- gcc-4.1.orig/gcc/recog.c ++++ gcc-4.1/gcc/recog.c +@@ -569,6 +569,7 @@ validate_replace_rtx_1 (rtx *loc, rtx fr + simplifications, as it is not our job. */ + + if (SWAPPABLE_OPERANDS_P (x) ++ && !reload_in_progress + && swap_commutative_operands_p (XEXP (x, 0), XEXP (x, 1))) + { + validate_change (object, loc, --- gcj-4.2-4.2-20070707.orig/debian/patches/gpc-4.1.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gpc-4.1.dpatch @@ -0,0 +1,3369 @@ +#! /bin/sh -e + +# DP: GPC updates for GCC 4.1 (4.1-4) + +dir=gcc/ +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3/gcc" + dir="$3/gcc/" +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 + +Only in gpc/p: .#Make-lang.in.1.7 +Only in gpc/p: .#declarations.c.1.14 +Only in gpc/p: .#expressions.c.1.10 +Only in gpc/p: .#gbe.h.1.4 +Only in gpc/p: .#gpc-lex.c.1.9 +Only in gpc/p: .#gpc.h.1.13 +Only in gpc/p: .#gpcpp.c.1.8 +Only in gpc/p: .#lang.c.1.15 +Only in gpc/p: .#module.c.1.10 +Only in gpc/p: .#objects.c.1.12 +Only in gpc/p: .#options.c.1.9 +Only in gpc/p: .#p-tree.def.1.6 +Only in gpc/p: .#parse.y.1.14 +Only in gpc/p: .#predef.c.1.15 +Only in gpc/p: .#statements.c.1.9 +Only in gpc/p: .#typecheck.c.1.10 +Only in gpc/p: .#types.c.1.17 +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/CVS and gpc/p/CVS +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/ChangeLog gpc/p/ChangeLog +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/ChangeLog 2006-03-24 02:47:15.000000000 +0100 ++++ gpc/p/ChangeLog 2006-04-06 02:11:56.000000000 +0200 +@@ -1,5 +1,16 @@ + ChangeLog -- Edit History for GPC, the GNU Pascal Compiler, since version 2.1 + ============================================================================= ++2006-03-24 Waldek Hebisch ++ ++ * Make-lang.in, config-lang.in, declarations.c, expressions.c, ++ gbe.h, gpc-lex.c, gpc.c, gpc.h, lang.c, module.c, objects.c, ++ options.c, opts.sum, p-tree.def, parse.y, pascal-lex.l, ++ predef.c, statements.c, typecheck.c, types.c, utils/Makefile ++ utils/gpidump.pas, utils/mk-t-inc: adapted to gcc-4.0, ++ schema changed to use placeholders ++ plant.c, plant.h, diffs/gcc-4.0.2.diff, diffs/gcc-4.0.3.diff: ++ new files ++ + 2006-03-09 Waldek Hebisch + + * predef.c: build_predef_call (): handle named exit from a method +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/FAQ gpc/p/FAQ +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/FAQ 2006-02-18 14:37:53.000000000 +0100 ++++ gpc/p/FAQ 2006-04-04 19:39:50.000000000 +0200 +@@ -62,7 +62,7 @@ + What is the current version? + ============================ + +-The current version is 20060215. ++The current version is 20060325. + + Releases are available as a source archive and precompiled binaries + for several common platforms from the GPC web site, +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/Make-lang.in gpc/p/Make-lang.in +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/Make-lang.in 2006-03-25 04:33:50.000000000 +0100 ++++ gpc/p/Make-lang.in 2006-04-06 02:11:56.000000000 +0200 +@@ -56,6 +56,7 @@ + # `40' for gcc-4.x + GPC_GCC_2_=2 + GPC_GCC_28_=8 ++GPC_GCC_28_PPQ=$(GPC_GCC_28_$(gcc_version)$(BACKEND) + GPC_GCC_34_PPQ_=foo + GPC_GCC_34_PPP=$(GPC_GCC_34_PPQ_$(target_noncanonical)) + GPC_GCC_34_PP_=34 +@@ -65,7 +66,7 @@ + GPC_GCC_40_PP_=40 + GPC_GCC_40_PP_fallback_to_34=$(GPC_GCC_34_) + GPC_GCC_40_=$(GPC_GCC_40_PP_$(GPC_GCC_40_PPP)) +-GCC_VERSION_FOR_GPC=$(GPC_GCC_2_$(BACKEND))$(GPC_GCC_28_$(gcc_version)) ++GCC_VERSION_FOR_GPC=$(GPC_GCC_2_$(BACKEND))$(GPC_GCC_28_PPQ) + GCC_VERSION_FOR_GPC34=$(GCC_VERSION_FOR_GPC)$(GPC_GCC_34_) + GCC_VERSION_FOR_GPC40=$(GCC_VERSION_FOR_GPC)$(GPC_GCC_40_) + GPC_GCC_VERSION_28=$(version) +@@ -733,7 +734,9 @@ + $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< + + p/version.o: version.c $(GPC_BE_H) +- $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< ++ $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) \ ++ -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) $< + + $(srcdir)/p/pascal-lex.c: $(srcdir)/p/pascal-lex.l + if $(GPC_LEX) --version | grep -q '2\.5\.4'; then \ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/Make-lang.in~ gpc/p/Make-lang.in~ +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/Make-lang.in~ 2006-03-25 01:43:44.000000000 +0100 ++++ gpc/p/Make-lang.in~ 2006-04-04 18:40:42.000000000 +0200 +@@ -631,7 +631,7 @@ + s: version.o::g;' "$<" > "$@" || { rm -f "$@"; false; } + + gpc1$(exeext): $(P) $(GPC_GCC_VERSION_DEPS) $(GPC_OBJS) $(LIBDEPS) +- @grep "@@ PATCHED FOR GPC 20051114 @@" $(srcdir)/stor-layout.c > /dev/null || \ ++ @grep "@@ PATCHED FOR GPC 20060322 @@" $(srcdir)/stor-layout.c > /dev/null || \ + { echo "*** There have been changes in the patch for GCC. Please start with a fresh"; \ + echo "*** copy of the GCC sources and do a new build, including configure."; \ + exit 1; } >&2 +@@ -733,7 +733,9 @@ + $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< + + p/version.o: version.c $(GPC_BE_H) +- $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< ++ $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) \ ++ -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ ++ -DDEVPHASE=$(DEVPHASE_s) $< + + $(srcdir)/p/pascal-lex.c: $(srcdir)/p/pascal-lex.l + if $(GPC_LEX) --version | grep -q '2\.5\.4'; then \ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/config-lang.in gpc/p/config-lang.in +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/config-lang.in 2006-03-25 03:50:32.000000000 +0100 ++++ gpc/p/config-lang.in 2006-04-04 18:44:47.000000000 +0200 +@@ -93,7 +93,7 @@ + echo "***" >&2 + echo "*** Press ENTER to continue, Ctrl-C to abort." >&2 + echo "***" >&2 +- read junk ++# read junk + fi + fi + fi +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/config-lang.in~ gpc/p/config-lang.in~ +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/config-lang.in~ 2006-03-25 03:02:46.000000000 +0100 ++++ gpc/p/config-lang.in~ 2006-04-04 18:25:25.000000000 +0200 +@@ -129,8 +129,11 @@ + if [ ! -r "$srcdir/p/diffs/gcc-3.4.5.diff" ]; then + (cd "$srcdir/p/diffs"; ln -s "gcc-3.4.4.diff" "gcc-3.4.5.diff") + fi ++if [ ! -r "$srcdir/p/diffs/gcc-3.4.6.diff" ]; then ++ (cd "$srcdir/p/diffs"; ln -s "gcc-3.4.4.diff" "gcc-3.4.6.diff") ++fi + +-if grep "@@ PATCHED FOR GPC 20051114 @@" "$srcdir/stor-layout.c" > /dev/null; then ++if grep "@@ PATCHED FOR GPC 20060322 @@" "$srcdir/stor-layout.c" > /dev/null; then + : + elif grep "@@ PATCHED FOR GPC" "$srcdir/stor-layout.c" > /dev/null; then + echo "" >&2 +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/declarations.c gpc/p/declarations.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/declarations.c 2006-03-13 01:33:16.000000000 +0100 ++++ gpc/p/declarations.c 2006-04-09 21:55:21.000000000 +0200 +@@ -437,7 +437,11 @@ + /* Clear out the local identifier meanings of this level. */ + for (t = decls; t; t = TREE_CHAIN (t)) + if (DECL_NAME (t)) +- IDENTIFIER_VALUE (DECL_NAME (t)) = NULL_TREE; ++ { ++ if (DECL_EXTERNAL (t) && TREE_ADDRESSABLE (t)) ++ TREE_ADDRESSABLE (DECL_ASSEMBLER_NAME (t)) = 1; ++ IDENTIFIER_VALUE (DECL_NAME (t)) = NULL_TREE; ++ } + restore_identifiers (level->shadowed); + + /* Not sure if this is a fix or work-around: Remove local external +@@ -527,7 +531,7 @@ + if (co->pascal_dialect & C_E_O_PASCAL) + error (msg2, IDENTIFIER_NAME (name)); + else +- warning (msg2, IDENTIFIER_NAME (name)); ++ gpc_warning (msg2, IDENTIFIER_NAME (name)); + } + check_id_redeclaration (name, msg1); + } +@@ -903,7 +907,7 @@ + if (TYPE_LANG_CODE_TEST (inner_type, PASCAL_LANG_ABSTRACT_OBJECT)) + error ("abstract object type declared as value parameter"); + else if (co->warn_object_assignment) +- warning ("object type declared as value parameter"); ++ gpc_warning ("object type declared as value parameter"); + } + } + for (decl = parms; decl; decl = TREE_CHAIN (decl)) +@@ -988,10 +992,11 @@ + && TREE_STRING_LENGTH (x) == TREE_STRING_LENGTH (y) + && !memcmp (TREE_STRING_POINTER (x), TREE_STRING_POINTER (y), TREE_STRING_LENGTH (x))) + return 1; +- if (TREE_CODE (x) == CONSTRUCTOR ++ if (TREE_CODE (x) == PASCAL_SET_CONSTRUCTOR + && TREE_CODE (TREE_TYPE (x)) == SET_TYPE && TREE_CODE (TREE_TYPE (x)) == SET_TYPE + && comptypes (TREE_TYPE (x), TREE_TYPE (y)) +- && const_set_constructor_binary_op (EQ_EXPR, CONSTRUCTOR_ELTS (x), CONSTRUCTOR_ELTS (y)) == boolean_true_node) ++ && const_set_constructor_binary_op (EQ_EXPR, SET_CONSTRUCTOR_ELTS (x), ++ SET_CONSTRUCTOR_ELTS (y)) == boolean_true_node) + return 1; + + return 0; +@@ -1055,7 +1060,7 @@ + DECL_CONTEXT (x) = NULL_TREE; + + if (co->warn_local_external && DECL_EXTERNAL (x) && !DECL_ARTIFICIAL (x) && !pascal_global_bindings_p ()) +- warning ("local external declaration of `%s'", IDENTIFIER_NAME (name)); ++ gpc_warning ("local external declaration of `%s'", IDENTIFIER_NAME (name)); + + t = lookup_name_current_level (name); + /* Overloading an operator is ok. The decl is a dummy placeholder. +@@ -1126,10 +1131,18 @@ + } + + DECL_UID (x) = DECL_UID (t); ++ gcc_assert (TREE_CODE (x) == FUNCTION_DECL && ++ TREE_CODE (t) == FUNCTION_DECL); ++#ifndef GCC_4_1 + /* Copy decl-specific fields of x into t. */ + memcpy ((char *) t + sizeof (struct tree_common), + (char *) x + sizeof (struct tree_common), + sizeof (struct tree_decl) - sizeof (struct tree_common)); ++#else ++ memcpy ((char *) t + sizeof (struct tree_common), ++ (char *) x + sizeof (struct tree_common), ++ tree_size (t) - sizeof (struct tree_common)); ++#endif + return t; + } + +@@ -1173,7 +1186,7 @@ + + /* Maybe warn if shadowing something else (not for vars made for inlining). */ + if (!weak && t && warn_shadow && !DECL_FROM_INLINE (x)) +- warning ("declaration of `%s' shadows an outer declaration", IDENTIFIER_NAME (name)); ++ gpc_warning ("declaration of `%s' shadows an outer declaration", IDENTIFIER_NAME (name)); + + /* Record a shadowed declaration for later restoration. */ + if (!weak && t) +@@ -1384,6 +1397,7 @@ + expand_expr_stmt (build_routine_call (longjmp_routine_node, + tree_cons (NULL_TREE, build_unary_op (ADDR_EXPR, DECL_LANG_LABEL_JMPBUF (decl), 0), + build_tree_list (NULL_TREE, integer_one_node)))); ++ TREE_USED (DECL_LANG_LABEL_JMPBUF (decl)) = 1; + #ifndef GCC_3_3 + /* @@ Work-around: `function_cannot_inline_p' should check `current_function_calls_longjmp'. */ + current_function_has_nonlocal_goto = 1; +@@ -1433,9 +1447,9 @@ + #endif + /* Avoid calling `setjmp' for labels that are only used locally */ + if (DECL_LANG_LABEL_JMPBUF (d) +-#ifndef GCC_4_0 ++// #ifndef GCC_4_0 + && TREE_USED (DECL_LANG_LABEL_JMPBUF (d)) +-#endif ++// #endif + ) + { + expand_start_cond (build_routine_call (setjmp_routine_node, +@@ -1580,10 +1594,10 @@ + location_t loc_aux; + loc_aux.file = filename; + loc_aux.line = line; +- warning ("%Hcapitalisation of identifier `%s' doesn't match", &loc_aux, spelling); ++ gpc_warning ("%Hcapitalisation of identifier `%s' doesn't match", &loc_aux, spelling); + loc_aux.file = IDENTIFIER_SPELLING_FILE (id); + loc_aux.line = IDENTIFIER_SPELLING_LINENO (id); +- warning ("%H previous capitalisation `%s'", &loc_aux, IDENTIFIER_SPELLING (id)); ++ gpc_warning ("%H previous capitalisation `%s'", &loc_aux, IDENTIFIER_SPELLING (id)); + #endif + } + } +@@ -2306,7 +2320,7 @@ + if (co->pascal_dialect & C_E_O_PASCAL) + error (msg, IDENTIFIER_NAME (name)); + else +- warning (msg, IDENTIFIER_NAME (name)); ++ gpc_warning (msg, IDENTIFIER_NAME (name)); + } + } + +@@ -2562,7 +2576,7 @@ + if (TREE_VALUE (*tt)) + error ("spurious argument to `%s' attribute", IDENTIFIER_NAME (TREE_PURPOSE (*tt))); + if (TREE_CODE (TREE_TYPE (t)) == VOID_TYPE) +- warning ("`%s' is meaningless for a procedure", IDENTIFIER_NAME (TREE_PURPOSE (*tt))); ++ gpc_warning ("`%s' is meaningless for a procedure", IDENTIFIER_NAME (TREE_PURPOSE (*tt))); + else + PASCAL_TREE_IGNORABLE (t) = 1; + *tt = TREE_CHAIN (*tt); +@@ -2576,7 +2590,7 @@ + if (TREE_VALUE (*tt)) + error ("spurious argument to `%s' attribute", IDENTIFIER_NAME (TREE_PURPOSE (*tt))); + if (!last || TREE_CODE (TREE_VALUE (last)) != VOID_TYPE) +- warning ("inline declaration ignored for routine with `...'"); ++ gpc_warning ("inline declaration ignored for routine with `...'"); + else if (!flag_no_inline && optimize > 0) + /* Assume that otherwise the function can be inlined. */ + DECL_INLINE (*d) = 1; +@@ -2646,7 +2660,7 @@ + } + else if (IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_asmname)) + { +- warning ("`%s' is deprecated; use `external name' or `attribute (name = ...)' instead", ++ gpc_warning ("`%s' is deprecated; use `external name' or `attribute (name = ...)' instead", + IDENTIFIER_NAME (TREE_VALUE (dir))); + assembler_name = TREE_PURPOSE (dir); + any_dir = 1; +@@ -2654,7 +2668,7 @@ + else if (IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_c) + || IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_c_language)) + { +- warning ("`%s' is deprecated; use `external' instead", ++ gpc_warning ("`%s' is deprecated; use `external' instead", + IDENTIFIER_NAME (TREE_VALUE (dir))); + any_dir = c_dir = is_public = 1; + } +@@ -2662,7 +2676,7 @@ + { + is_external = is_public = 1; + if (TREE_PURPOSE (dir)) +- warning ("library name in `external' is ignored"); ++ gpc_warning ("library name in `external' is ignored"); + } + else if (IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_forward)) + any_dir = is_forward = 1; +@@ -2675,15 +2689,15 @@ + || IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_far)) + { + if (co->warn_near_far) +- warning ("`%s' directive ignored because of flat memory model", IDENTIFIER_NAME (TREE_VALUE (dir))); ++ gpc_warning ("`%s' directive ignored because of flat memory model", IDENTIFIER_NAME (TREE_VALUE (dir))); + } + else + error ("unknown directive `%s'", IDENTIFIER_NAME (TREE_VALUE (dir))); + + if (is_external && !assembler_name) + { +- warning ("`external' without `name' has a different default now"); +- warning (" (This warning will disappear in a future version)"); ++ gpc_warning ("`external' without `name' has a different default now"); ++ gpc_warning (" (This gpc_warning will disappear in a future version)"); + } + + is_external |= c_dir; +@@ -3016,7 +3030,7 @@ + || IDENTIFIER_IS_BUILT_IN (TREE_VALUE (dir), p_far)) + { + if (co->warn_near_far) +- warning ("`%s' directive ignored because of flat memory model", IDENTIFIER_NAME (TREE_VALUE (dir))); ++ gpc_warning ("`%s' directive ignored because of flat memory model", IDENTIFIER_NAME (TREE_VALUE (dir))); + } + else + { +@@ -3301,14 +3315,18 @@ + #ifndef EGCS97 + /* So we can tell if jump_optimize sets it to 1. */ + can_reach_end = 0; +-#else +- ggc_push_context (); + #endif + +- +- /* Run the optimizers and output the assembler code for this function. */ + #ifndef GCC_4_0 ++#ifdef EGCS97 ++ ggc_push_context (); ++#endif ++ /* Run the optimizers and output the assembler code for this function. */ + rest_of_compilation (fndecl); ++ ++#ifdef EGCS97 ++ ggc_pop_context (); ++#endif + #endif + + if (DECL_LANG_RESULT_VARIABLE (fndecl)) +@@ -3316,11 +3334,9 @@ + + #ifndef EGCS97 + if (TREE_THIS_VOLATILE (fndecl) && can_reach_end) +- warning ("routine declared `noreturn' returns"); ++ gpc_warning ("routine declared `noreturn' returns"); + if (!outer_function_chain) + permanent_allocation (1); +-#else +- ggc_pop_context (); + #endif + + #ifndef GCC_4_0 +@@ -3581,7 +3597,8 @@ + if (!EM (TREE_TYPE (element)) + && TREE_CODE (element) != VAR_DECL + && TREE_CODE (element) != PARM_DECL +- && TREE_CODE (element) != CONSTRUCTOR) ++ && TREE_CODE (element) != CONSTRUCTOR ++/* && TREE_CODE (element) != PASCAL_SET_CONSTRUCTOR */) + { + tree elem_type = TREE_TYPE (element), rec_addr; + if (TREE_READONLY (element)) +@@ -3700,13 +3717,13 @@ + { + qualifiers |= VQ_EXTERNAL; + if (arg) +- warning ("library name in `external' is ignored"); ++ gpc_warning ("library name in `external' is ignored"); + } + else if (arg && IDENTIFIER_IS_BUILT_IN (id, p_name)) + assembler_name = arg; + else if (arg && IDENTIFIER_IS_BUILT_IN (id, p_asmname)) + { +- warning ("`%s' is deprecated; use `external name' or `attribute (name = ...)' instead", ++ gpc_warning ("`%s' is deprecated; use `external name' or `attribute (name = ...)' instead", + IDENTIFIER_NAME (id)); + assembler_name = arg; + } +@@ -3720,8 +3737,8 @@ + + if ((qualifiers & VQ_EXTERNAL) && !(qualifiers & VQ_IMPLICIT) && !assembler_name) + { +- warning ("`external' without `name' has a different default now"); +- warning (" (This warning will disappear in a future version.)"); ++ gpc_warning ("`external' without `name' has a different default now"); ++ gpc_warning (" (This gpc_warning will disappear in a future version.)"); + } + + if (init && PASCAL_ABSOLUTE_CLAUSE (init)) +@@ -3744,7 +3761,7 @@ + return NULL_TREE; + } + if (co->warn_absolute) +- warning ("variables at absolute adresses may cause problems"); ++ gpc_warning ("variables at absolute adresses may cause problems"); + } + else + { +@@ -3756,7 +3773,7 @@ + && TREE_CODE (TREE_TYPE (init)) != VOID_TYPE + && TREE_CODE (TREE_TYPE (init)) != FUNCTION_TYPE + && TYPE_ALIGN (type) > TYPE_ALIGN (TREE_TYPE (init))) +- warning ("`absolute' declaration increases required alignment"); ++ gpc_warning ("`absolute' declaration increases required alignment"); + while (TREE_CODE (init) == NOP_EXPR + || TREE_CODE (init) == NON_LVALUE_EXPR + || TREE_CODE (init) == CONVERT_EXPR +@@ -3770,7 +3787,7 @@ + || (indirect == 0 && TREE_CODE (init) == PARM_DECL) + || (indirect == 1 && TREE_CODE (init) == PARM_DECL + && TREE_CODE (TREE_TYPE (init)) == REFERENCE_TYPE))) +- warning ("`absolute' variable has non-constant address"); ++ gpc_warning ("`absolute' variable has non-constant address"); + TREE_USED (init) = 1; + init = address; + } +@@ -3982,7 +3999,15 @@ + DECL_CONTEXT (d) = NULL_TREE; /* for deferred initializers */ + + /* Output the assembler code and/or RTL code. */ +-#ifndef GCC_4_0 ++#ifdef GCC_4_0 ++ if (pascal_global_bindings_p () && current_module ++ && current_module->implementation) ++ { ++ if (!DECL_INITIAL (d)) ++ DECL_DEFER_OUTPUT (d) = 1; ++ rest_of_decl_compilation (d, true, 0); ++ } ++#else + rest_of_decl_compilation (d, NULL, !DECL_CONTEXT (d), 1 /* for GPC */); + #endif + +Only in gpc/p: declarations.c~ +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/demos and gpc/p/demos +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/diffs and gpc/p/diffs +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/doc and gpc/p/doc +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/expressions.c gpc/p/expressions.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/expressions.c 2006-03-24 02:47:15.000000000 +0100 ++++ gpc/p/expressions.c 2006-04-09 02:28:59.000000000 +0200 +@@ -36,7 +36,7 @@ + static int implicit_comparison = 0; + int operators_defined = 0; + +-static void set_string_length (tree, int, int); ++// static void set_string_length (tree, int, int); + static void warn_operands (enum tree_code, tree, int); + static tree shorten_compare (tree *, tree *, tree *, enum tree_code *); + static const char *get_op_name (enum tree_code); +@@ -56,7 +56,7 @@ + Note: TREE_STRING_LENGTH includes a trailing #0 (to output C-compatible + strings and to avoid changing the backend's output code), but the domain + doesn't (so the #0 doesn't appear in Pascal string usage). */ +-static void ++void + set_string_length (tree value, int wide_flag, int length) + { + gcc_assert (length >= 0); +@@ -282,7 +282,7 @@ + { + if (co->pascal_dialect & C_E_O_PASCAL) + { +- warning(msg); ++ gpc_warning (msg); + return build (COMPOUND_EXPR, TREE_TYPE (min), + build_predef_call (p_RangeCheckError, NULL_TREE), min); + } +@@ -653,7 +653,7 @@ + enum tree_code inner = EXP_ORIGINAL_CODE (exp_inner); + if ((AND_OP (inner) && OR_OP (outer)) + || ((OR_OP (inner) || AND_OP (inner) || (!rhs && inner == TRUTH_NOT_EXPR)) && REL_OP (outer))) +- warning ("suggest parentheses around `%s' in operand of `%s'", ++ gpc_warning ("suggest parentheses around `%s' in operand of `%s'", + get_op_name (inner), get_op_name (outer)); + } + } +@@ -783,7 +783,6 @@ + and are already no lvalues (WRT ISO parentheses). */ + gcc_assert (TREE_CODE (t) != STRING_CST); + gcc_assert (TREE_CODE (t) != CONSTRUCTOR); +- gcc_assert (code == NOP_EXPR || !lvalue_p (t)); + t = build1 (NON_LVALUE_EXPR, TREE_TYPE (old), old); + TREE_CONSTANT (t) = TREE_CONSTANT (old); + TREE_OVERFLOW (t) = TREE_OVERFLOW (old); +@@ -1124,9 +1123,11 @@ + } + + /* Convert set constructors to sets. */ +- if (t1 == CONSTRUCTOR && TREE_CODE (TREE_TYPE (exp1)) == SET_TYPE) ++ if (t1 == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (exp1)) == SET_TYPE) + exp1 = construct_set (exp1, NULL_TREE, 1); +- if (t2 == CONSTRUCTOR && TREE_CODE (TREE_TYPE (exp2)) == SET_TYPE && code != IN_EXPR) ++ if (t2 == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (exp2)) == SET_TYPE && code != IN_EXPR) + exp2 = construct_set (exp2, NULL_TREE, 1); + + CHK_EM (TREE_TYPE (exp1)); +@@ -1249,17 +1250,18 @@ + return error_mark_node; + } + +- if (TREE_CODE (exp2) == CONSTRUCTOR) ++ if (TREE_CODE (exp2) == PASCAL_SET_CONSTRUCTOR) + { + /* Optimize `foo in [a, b .. c]' to become + `(foo = a) or ((foo >= b) and (foo <= c))' + (where foo is evaluated only once). */ +- tree elem = CONSTRUCTOR_ELTS (exp2), result = NULL_TREE, exp = save_expr (exp1); ++ tree elem = SET_CONSTRUCTOR_ELTS (exp2), ++ result = NULL_TREE, exp = save_expr (exp1); + if (!elem) + { +- warning ("`... in []' (empty set) is always `False'."); ++ gpc_warning ("`... in []' (empty set) is always `False'."); + if (TREE_SIDE_EFFECTS (exp1)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return boolean_false_node; + } + for (; elem; elem = TREE_CHAIN (elem)) +@@ -1333,12 +1335,18 @@ + if (code == SYMDIFF_EXPR) + chk_dialect ("symmetric set difference is", E_O_PASCAL); + +- if (TREE_CODE (exp1) == CONSTRUCTOR && TREE_CODE (exp2) == CONSTRUCTOR) ++ if (TREE_CODE (exp1) == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (exp2) == PASCAL_SET_CONSTRUCTOR) + { + if (code == PLUS_EXPR) +- return build_set_constructor (chainon (copy_list (CONSTRUCTOR_ELTS (exp1)), copy_list (CONSTRUCTOR_ELTS (exp2)))); +- else if (PASCAL_CONSTRUCTOR_INT_CST (exp1) && PASCAL_CONSTRUCTOR_INT_CST (exp2)) +- return const_set_constructor_binary_op (code, CONSTRUCTOR_ELTS (exp1), CONSTRUCTOR_ELTS (exp2)); ++ return build_set_constructor (chainon ( ++ copy_list (SET_CONSTRUCTOR_ELTS (exp1)), ++ copy_list (SET_CONSTRUCTOR_ELTS (exp2)))); ++ else if (PASCAL_CONSTRUCTOR_INT_CST (exp1) ++ && PASCAL_CONSTRUCTOR_INT_CST (exp2)) ++ return const_set_constructor_binary_op (code, ++ SET_CONSTRUCTOR_ELTS (exp1), ++ SET_CONSTRUCTOR_ELTS (exp2)); + } + + result = NULL_TREE; +@@ -1351,19 +1359,19 @@ + { + case PLUS_EXPR: + case SYMDIFF_EXPR: +- warning ("Set operation has no effect."); ++ gpc_warning ("Set operation has no effect."); + return exp2; + case MINUS_EXPR: + case MULT_EXPR: +- warning ("Set operation always yields the empty set."); ++ gpc_warning ("Set operation always yields the empty set."); + result = build_set_constructor (NULL_TREE); + break; + case GT_EXPR: +- warning ("`>' comparison of the empty set is always false."); ++ gpc_warning ("`>' comparison of the empty set is always false."); + result = boolean_false_node; + break; + case LE_EXPR: +- warning ("`<=' comparison of the empty set is always true."); ++ gpc_warning ("`<=' comparison of the empty set is always true."); + result = boolean_true_node; + break; + case EQ_EXPR: +@@ -1389,18 +1397,18 @@ + case PLUS_EXPR: + case MINUS_EXPR: + case SYMDIFF_EXPR: +- warning ("Set operation has no effect."); ++ gpc_warning ("Set operation has no effect."); + return exp1; + case MULT_EXPR: +- warning ("Set operation always yields the empty set."); ++ gpc_warning ("Set operation always yields the empty set."); + result = build_set_constructor (NULL_TREE); + break; + case LT_EXPR: +- warning ("`<' comparison against the empty set is always false."); ++ gpc_warning ("`<' comparison against the empty set is always false."); + result = boolean_false_node; + break; + case GE_EXPR: +- warning ("`>=' comparison against the empty set is always true."); ++ gpc_warning ("`>=' comparison against the empty set is always true."); + result = boolean_true_node; + break; + case EQ_EXPR: +@@ -1417,7 +1425,7 @@ + if (result) + { + if (TREE_SIDE_EFFECTS (empty1 ? exp2 : exp1)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return result; + } + if (!r_num) +@@ -1827,7 +1835,8 @@ + /* build_unary_op accepts CONSTRUCTORs (for parameters), but the backend + would later crash. Maybe it should be checked elsewhere, but it + seems to work here. -- Frank */ +- if (TREE_CODE (factor) == CONSTRUCTOR) ++ if (TREE_CODE (factor) == CONSTRUCTOR ++ || TREE_CODE (factor) == PASCAL_SET_CONSTRUCTOR) + { + error ("reference expected, value given"); + return error_mark_node; +@@ -1841,6 +1850,7 @@ + else + { + tree t; ++ tree string_cst_type = NULL_TREE; + + if (TREE_CODE (factor) == STRING_CST) + { +@@ -1850,13 +1860,25 @@ + tree capf = TYPE_FIELDS (st); + tree lenf = TREE_CHAIN (capf); + tree schf = TREE_CHAIN (lenf); ++#ifndef GCC_4_1 ++ tree inilist = tree_cons (capf, length, ++ tree_cons (lenf, length, ++ build_tree_list (schf, factor))); ++#else ++ VEC(constructor_elt,gc) * inilist = 0; ++ CONSTRUCTOR_APPEND_ELT (inilist, capf, length); ++ CONSTRUCTOR_APPEND_ELT (inilist, lenf, length); ++ CONSTRUCTOR_APPEND_ELT (inilist, schf, factor); ++#endif + factor = build_constructor (build_pascal_string_schema (length), +- tree_cons (capf, length, +- tree_cons (lenf, length, +- build_tree_list (schf, factor)))); ++ inilist); + /* Make this a valid lvalue for taking addresses. */ + TREE_CONSTANT (factor) = 1; + TREE_STATIC (factor) = 1; ++ string_cst_type = TREE_TYPE (factor); ++ factor = declare_variable (get_unique_identifier ("const_string"), ++ TREE_TYPE (factor), build_tree_list (NULL_TREE, factor), ++ VQ_IMPLICIT | VQ_CONST | VQ_STATIC); + } + + t = factor; +@@ -1883,6 +1905,12 @@ + && (!DECL_CONTEXT (factor) + || (TREE_CODE (factor) == FUNCTION_DECL && DECL_NO_STATIC_CHAIN (factor)))) + TREE_CONSTANT (result) = 1; ++#if 0 ++ if (string_cst_type) ++ { ++ result = convert (build_pointer_type (string_cst_type), result); ++ } ++#endif + } + + if (untyped) +@@ -2119,22 +2147,22 @@ + if (!implicit_comparison && !max_gt && !unsignedp0 && TREE_CODE (primop0) != INTEGER_CST) + { + if (val == boolean_false_node) +- warning ("Comparison always yields `False' due to limited range of data type."); ++ gpc_warning ("Comparison always yields `False' due to limited range of data type."); + if (val == boolean_true_node) +- warning ("Comparison always yields `True' due to limited range of data type."); ++ gpc_warning ("Comparison always yields `True' due to limited range of data type."); + } + if (!implicit_comparison && !min_lt && unsignedp0 && TREE_CODE (primop0) != INTEGER_CST) + { + if (val == boolean_false_node) +- warning ("Comparison always yields `False' due to limited range of data type."); ++ gpc_warning ("Comparison always yields `False' due to limited range of data type."); + if (val == boolean_true_node) +- warning ("Comparison always yields `True' due to limited range of data type."); ++ gpc_warning ("Comparison always yields `True' due to limited range of data type."); + } + + if (val) + { + if (TREE_SIDE_EFFECTS (primop0)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return val; + } + +@@ -2184,13 +2212,13 @@ + the signedness of the comparison isn't an issue, so suppress + the warning. */ + if (!implicit_comparison && TREE_CODE (primop0) != INTEGER_CST) +- warning ("Comparison `unsigned value >= 0' always yields `True'."); ++ gpc_warning ("Comparison `unsigned value >= 0' always yields `True'."); + value = boolean_true_node; + break; + + case LT_EXPR: + if (!implicit_comparison && TREE_CODE (primop0) != INTEGER_CST) +- warning ("Comparison `unsigned value < 0' always yields `False'."); ++ gpc_warning ("Comparison `unsigned value < 0' always yields `False'."); + value = boolean_false_node; + break; + +@@ -2201,7 +2229,7 @@ + if (value) + { + if (TREE_SIDE_EFFECTS (primop0)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return value; + } + } +@@ -2564,14 +2592,14 @@ + if (TREE_CODE (op1) == INTEGER_CST) + { + if (tree_int_cst_sgn (op1) < 0) +- warning ("right shift count is negative"); ++ gpc_warning ("right shift count is negative"); + else + { + if (TREE_INT_CST_LOW (op1) | TREE_INT_CST_HIGH (op1)) + short_shift = 1; + if (TREE_INT_CST_HIGH (op1) != 0 + || ((unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (op1) >= TYPE_PRECISION (type0))) +- warning ("right shift count >= width of type"); ++ gpc_warning ("right shift count >= width of type"); + } + } + /* Use the type of the value to be shifted for the result. */ +@@ -2591,10 +2619,10 @@ + if (TREE_CODE (op1) == INTEGER_CST) + { + if (tree_int_cst_sgn (op1) < 0) +- warning ("left shift count is negative"); ++ gpc_warning ("left shift count is negative"); + else if (TREE_INT_CST_HIGH (op1) != 0 + || ((unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (op1) >= TYPE_PRECISION (result_type))) +- warning ("left shift count >= width of type"); ++ gpc_warning ("left shift count >= width of type"); + } + if (TYPE_MAIN_VARIANT (TREE_TYPE (op1)) != pascal_integer_type_node) + op1 = convert (pascal_integer_type_node, op1); +@@ -2606,7 +2634,7 @@ + case EQ_EXPR: + case NE_EXPR: + if (co->warn_float_equal && (code0 == REAL_TYPE || code1 == REAL_TYPE)) +- warning ("comparing real numbers with `=' or `<>' is unsafe"); ++ gpc_warning ("comparing real numbers with `=' or `<>' is unsafe"); + /* Result of comparison is always Boolean, but don't convert the args to Boolean. */ + build_type = boolean_type_node; + if (ORDINAL_REAL_OR_COMPLEX_TYPE (code0) && compatible_relop_p (type0, type1)) +@@ -2658,7 +2686,7 @@ + { + result_type = common_type (type0, type1); + if (TREE_CODE (TREE_TYPE (type0)) == FUNCTION_TYPE) +- warning ("ordered comparisons of pointers to routines"); ++ gpc_warning ("ordered comparisons of pointers to routines"); + } + else if (!comp_object_or_schema_pointer_types (TREE_TYPE (type0), TREE_TYPE (type1), 0) + && !comp_object_or_schema_pointer_types (TREE_TYPE (type1), TREE_TYPE (type0), 0)) +@@ -2688,7 +2716,7 @@ + != COMPLETE_OR_VOID_TYPE_P (TREE_TYPE (type1))) + pedwarn ("comparison of complete and incomplete pointers"); + else if (pedantic && TREE_CODE (TREE_TYPE (type0)) == FUNCTION_TYPE) +- warning ("ordered comparision of pointers to routines"); ++ gpc_warning ("ordered comparision of pointers to routines"); + } + else + { +@@ -2895,13 +2923,13 @@ + { + mask = (~0L) << bits; + if ((mask & constant) != mask) +- warning ("comparison of promoted `not' unsigned with constant"); ++ gpc_warning ("comparison of promoted `not' unsigned with constant"); + } + } + else if (unsignedp0 && unsignedp1 + && (TYPE_PRECISION (TREE_TYPE (primop0)) < TYPE_PRECISION (result_type)) + && (TYPE_PRECISION (TREE_TYPE (primop1)) < TYPE_PRECISION (result_type))) +- warning ("comparison of promoted `not' unsigned with unsigned"); ++ gpc_warning ("comparison of promoted `not' unsigned with unsigned"); + } + } + } +@@ -2986,9 +3014,9 @@ + /* The result is a pointer of the same type that is being added. */ + tree result_type = TREE_TYPE (ptrop), size_exp = integer_one_node, result, folded; + if (TREE_CODE (TREE_TYPE (result_type)) == VOID_TYPE) +- warning ("untyped pointer used in arithmetic"); ++ gpc_warning ("untyped pointer used in arithmetic"); + else if (TREE_CODE (TREE_TYPE (result_type)) == FUNCTION_TYPE) +- warning ("pointer to a routine used in arithmetic"); ++ gpc_warning ("pointer to a routine used in arithmetic"); + else + size_exp = c_size_in_bytes (TREE_TYPE (result_type)); + /* Replace the integer argument with a suitable product by the object size. */ +@@ -3010,9 +3038,9 @@ + tree result, folded, restype = ptrdiff_type_node; + tree target_type = TREE_TYPE (TREE_TYPE (op0)); + if (TREE_CODE (target_type) == VOID_TYPE) +- warning ("untyped pointer used in pointer difference"); ++ gpc_warning ("untyped pointer used in pointer difference"); + if (TREE_CODE (target_type) == FUNCTION_TYPE) +- warning ("pointer to a routine used in pointer difference"); ++ gpc_warning ("pointer to a routine used in pointer difference"); + /* First do the subtraction as integers, then divide. */ + op0 = build_pascal_binary_op (MINUS_EXPR, convert (restype, op0), convert (restype, op1)); + /* This generates an error if op1 is pointer to incomplete type. */ +@@ -3170,7 +3198,8 @@ + } + + /* Addresses of constructors are needed for parameters. */ +- if (TREE_CODE (arg) == CONSTRUCTOR) ++ if (TREE_CODE (arg) == CONSTRUCTOR ++ || TREE_CODE (arg) == PASCAL_SET_CONSTRUCTOR) + { + if (!TREE_CONSTANT (arg)) + { +@@ -3321,15 +3350,15 @@ + && TREE_CODE (TREE_TYPE (otype)) != VOID_TYPE + && TREE_CODE (TREE_TYPE (otype)) != FUNCTION_TYPE + && TYPE_ALIGN (TREE_TYPE (type)) > TYPE_ALIGN (TREE_TYPE (otype))) +- warning ("cast increases required alignment of target type"); ++ gpc_warning ("cast increases required alignment of target type"); + + if (TYPE_PRECISION (type) != TYPE_PRECISION (otype) && !TREE_CONSTANT (value)) + { + if (TREE_CODE (type) == INTEGER_TYPE && TREE_CODE (otype) == POINTER_TYPE) +- warning ("cast from pointer to integer of different size"); ++ gpc_warning ("cast from pointer to integer of different size"); + if (TREE_CODE (type) == POINTER_TYPE && TREE_CODE (otype) == INTEGER_TYPE + && TREE_CODE (value) != PLUS_EXPR && TREE_CODE (value) != MINUS_EXPR) +- warning ("cast to pointer from integer of different size"); ++ gpc_warning ("cast to pointer from integer of different size"); + } + + ovalue = value; +@@ -3372,7 +3401,7 @@ + if (TREE_CODE (otype) != VOID_TYPE + && TREE_CODE (type) != VOID_TYPE + && !tree_int_cst_equal (TYPE_SIZE (otype), TYPE_SIZE (type))) +- warning ("cast to type of different size"); ++ gpc_warning ("cast to type of different size"); + /* @@ GPC allows `@'...'' as an extension, but we don't want that here. */ + if (TREE_CODE (value) == STRING_CST) + error ("reference expected, value given"); +@@ -3784,7 +3813,7 @@ + return error_mark_node; + } + if (co->warn_object_assignment) +- warning ("assignment between objects"); ++ gpc_warning ("assignment between objects"); + + while (TREE_CODE (l) == NOP_EXPR + || TREE_CODE (l) == CONVERT_EXPR +@@ -3794,7 +3823,7 @@ + && TREE_CODE (l) != PARM_DECL + && TREE_CODE (l) != COMPONENT_REF + && TREE_CODE (l) != ARRAY_REF) +- warning ("left-hand side of object assignment is polymorphic"); ++ gpc_warning ("left-hand side of object assignment is polymorphic"); + + /* The following code assumes that the VMT pointer is the first field. + This is always the case in GPC. If this ever changes, the code must +@@ -3811,7 +3840,7 @@ + if (!field) + { + if (!is_init) +- warning ("assignment of object with no fields has no effect"); ++ gpc_warning ("assignment of object with no fields has no effect"); + return error_mark_node; + } + lastfield = tree_last (field); +@@ -3940,7 +3969,7 @@ + && TREE_CODE (TREE_TYPE (TREE_TYPE (lhs))) != VOID_TYPE + && TREE_CODE (TREE_TYPE (TREE_TYPE (lhs))) != FUNCTION_TYPE + && TYPE_ALIGN (TREE_TYPE (TREE_TYPE (inner_lhs))) > TYPE_ALIGN (TREE_TYPE (TREE_TYPE (lhs)))) +- warning ("lhs cast decreases required alignment of target type"); ++ gpc_warning ("lhs cast decreases required alignment of target type"); + + return build_modify_expr (inner_lhs, NOP_EXPR, convert (TREE_TYPE (inner_lhs), newrhs)); + } +Only in gpc/p: expressions.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gbe.h gpc/p/gbe.h +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gbe.h 2006-03-03 20:14:31.000000000 +0100 ++++ gpc/p/gbe.h 2006-04-06 03:35:49.000000000 +0200 +@@ -119,7 +119,7 @@ + #define CONCAT2(a,b) a##b + #define STRINGX(s) #s + #define lineno input_line +-#define warning_with_decl(x, y) (warning ("%H" y, &DECL_SOURCE_LOCATION (x), \ ++#define warning_with_decl(x, y) (gpc_warning ("%H" y, &DECL_SOURCE_LOCATION (x), \ + DECL_NAME (x) ? IDENTIFIER_POINTER (DECL_NAME (x)) : NULL)) + #define error_with_decl(x, y) (error ("%H" y, &DECL_SOURCE_LOCATION (x), \ + DECL_NAME (x) ? IDENTIFIER_POINTER (DECL_NAME (x)) : NULL)) +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpc-lex.c gpc/p/gpc-lex.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpc-lex.c 2006-03-03 20:14:31.000000000 +0100 ++++ gpc/p/gpc-lex.c 2006-04-06 03:35:49.000000000 +0200 +@@ -172,19 +172,19 @@ + return 0; + else if (Message && co->warn_mixed_comments) + { +- warning ("comments starting with `(*' and ending with `}' or starting with"); +- warning (" `{' and ending with `*)' are an obscure ISO Pascal feature"); ++ gpc_warning ("comments starting with `(*' and ending with `}' or starting with"); ++ gpc_warning (" `{' and ending with `*)' are an obscure ISO Pascal feature"); + } + break; + case NestedComments: + if (!co->nested_comments) + { + if (co->warn_nested_comments) +- warning ("comment opener found within a comment"); ++ gpc_warning ("comment opener found within a comment"); + return 0; + } + else if (Message && co->warn_nested_comments) +- warning ("nested comments are a GPC extension"); ++ gpc_warning ("nested comments are a GPC extension"); + break; + case DelphiComments: + if (!co->delphi_comments) +@@ -268,7 +268,7 @@ + } + } + if (in_string) +- warning ("unterminated string in compiler directive"); ++ gpc_warning ("unterminated string in compiler directive"); + *q = 0; + process_pascal_directive (s, q - s); + } +@@ -673,9 +673,9 @@ + if (value == ';' && co->warn_semicolon) + switch (last_token) + { +- case p_then: warning ("`;' after `then'"); break; +- case p_else: warning ("`;' after `else'"); break; +- case p_do: warning ("`;' after `do'"); break; ++ case p_then: gpc_warning ("`;' after `then'"); break; ++ case p_else: gpc_warning ("`;' after `else'"); break; ++ case p_do: gpc_warning ("`;' after `do'"); break; + } + last_token = value; + +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpc.h gpc/p/gpc.h +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpc.h 2006-03-11 00:40:51.000000000 +0100 ++++ gpc/p/gpc.h 2006-04-09 03:21:18.000000000 +0200 +@@ -43,11 +43,24 @@ + + #undef USE_CPPLIB /* Not suitable for Pascal */ + ++#include "gbe.h" ++ + #ifndef GCC_3_3 + #define GTY(x) + #endif + +-#include "gbe.h" ++#ifdef GCC_4_1 ++#define gpc_warning warning0 ++#define SET_CONSTRUCTOR_ELTS(t) TREE_OPERAND (t, 0) ++#else ++#define gpc_warning warning ++#define PASCAL_SET_CONSTRUCTOR CONSTRUCTOR ++#define SET_CONSTRUCTOR_ELTS(t) CONSTRUCTOR_ELTS (t) ++#define CONSTRUCTOR_APPEND_ELT(C, I, V) do \ ++ {\ ++ (C) = tree_cons ((I), (V), (C));\ ++ } while (0) ++#endif + + #ifdef GCC_4_0 + extern tree xnon_lvalue (tree x); +@@ -382,7 +395,9 @@ + /* IS_EXPR_CODE_CLASS ought to work, but for CONSTRUCTORS the backend overwrites + this field via TREE_CST_RTL. @@@@@@@@@@ Severe backend bug! This is no fix. */ + #define HAS_EXP_ORIGINAL_CODE_FIELD(exp) \ +- (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (exp))) && TREE_CODE (exp) != CONSTRUCTOR) ++ (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (exp))) \ ++ && TREE_CODE (exp) != CONSTRUCTOR \ ++ && TREE_CODE (exp) != PASCAL_SET_CONSTRUCTOR) + + #define IS_EXPR_OR_REF_CODE_CLASS(c) (IS_EXPR_CODE_CLASS (c) || \ + c == tcc_reference) +@@ -1374,6 +1389,7 @@ + extern void un_initialize_block (tree, int, int); + extern void expand_call_statement (tree); + extern void expand_pascal_assignment (tree, tree); ++extern void expand_pascal_assignment2 (tree, tree, int); + extern tree assign_set (tree, tree); + extern tree assign_string (tree, const tree); + extern void start_main_program (void); +Only in gpc/p: gpc.h~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpcpp.c gpc/p/gpcpp.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/gpcpp.c 2006-02-18 14:22:58.000000000 +0100 ++++ gpc/p/gpcpp.c 2006-04-06 03:35:49.000000000 +0200 +@@ -566,7 +566,7 @@ + static U_CHAR *macarg1 (U_CHAR *, U_CHAR *, int *, int *, int *, int); + static int discard_comments (U_CHAR *, int, int); + static int change_newlines (U_CHAR *, int); +-static void warning (const char *, ...) ATTRIBUTE_PRINTF_1; ++static void gpc_warning (const char *, ...) ATTRIBUTE_PRINTF_1; + static void error (const char *, ...) ATTRIBUTE_PRINTF_1; + static void verror (const char *, va_list); + static void error_from_errno (const char *); +@@ -1348,8 +1348,8 @@ + { + if (warn_mixed_comments && !inhibit_warnings) + { +- warning ("comments starting with `(*' and ending with `}' or starting with"); +- warning (" `{' and ending with `*)' are an obscure ISO Pascal feature"); ++ gpc_warning ("comments starting with `(*' and ending with `}' or starting with"); ++ gpc_warning (" `{' and ending with `*)' are an obscure ISO Pascal feature"); + } + } + +@@ -1357,7 +1357,7 @@ + warn_nested_comment (void) + { + if (warn_nested_comments && !inhibit_warnings) +- warning (nested_comments ? "nested comments are a GPC extension" : "comment opener found within comment"); ++ gpc_warning (nested_comments ? "nested comments are a GPC extension" : "comment opener found within comment"); + } + + /* Skip the (non-`//') comment starting at bp, handling C, Pascal, +@@ -1550,7 +1550,7 @@ + if (!ip->fname) { + /* note BP character constants */ + if (ip->buf != beg_of_line && ((*ibp < '0' || *ibp > '9') && *ibp != '$')) +- warning ("preprocessing directive not recognized within macro arg"); ++ gpc_warning ("preprocessing directive not recognized within macro arg"); + goto randomchar; + } + if (ident_length) +@@ -2438,14 +2438,14 @@ + bp++; + } else if (*bp == '{') { + if (bp[1] == '$') +- warning ("ignoring Pascal style directive within C style directive"); ++ gpc_warning ("ignoring Pascal style directive within C style directive"); + ip->bufp = bp + 1; + skip_to_end_of_comment (ip, &ip->lineno, '}'); + bp = ip->bufp; + } else if ((*bp == '\\') && bp[1] == '\n') { + } else if (IS_COMMENT_START (bp)) { + if (bp[1] == '*' && bp[2] == '$') +- warning ("ignoring Pascal style directive within C style directive"); ++ gpc_warning ("ignoring Pascal style directive within C style directive"); + ip->bufp = bp + 2; + skip_to_end_of_comment (ip, &ip->lineno, 0); + bp = ip->bufp; +@@ -2567,7 +2567,7 @@ + U_CHAR *obp = bp - 1; + if (*bp == '$') + { +- warning ("ignoring Pascal style directive within C style directive"); ++ gpc_warning ("ignoring Pascal style directive within C style directive"); + *bp = ' '; + } + ip->bufp = bp; +@@ -2591,7 +2591,7 @@ + U_CHAR *obp = bp - 1; + if (*bp == '*' && bp[1] == '$') + { +- warning ("ignoring Pascal style directive within C style directive"); ++ gpc_warning ("ignoring Pascal style directive within C style directive"); + bp[1] = ' '; + } + ip->bufp = bp + 1; +@@ -2751,12 +2751,12 @@ + conditionals. So, just don't allow such things ... */ + if (*p == '{' && p[1] == '$') + { +- warning ("ignoring compiler directive within another directive"); ++ gpc_warning ("ignoring compiler directive within another directive"); + p[1] = ' '; + } + if (*p == '(' && p[1] == '*' && p[2] == '$') + { +- warning ("ignoring compiler directive within another directive"); ++ gpc_warning ("ignoring compiler directive within another directive"); + p[2] = ' '; + } + if (IS_COMMENT_START2 (p)) +@@ -3353,7 +3353,7 @@ + f = open (fname, O_RDONLY, 0666); + #ifdef EACCES + if (f == -1 && errno == EACCES) +- warning ("header file %s exists, but is not readable", fname); ++ gpc_warning ("header file %s exists, but is not readable", fname); + #endif + if (f >= 0) + break; +@@ -3540,7 +3540,7 @@ + bp++; + SKIP_WHITE_SPACE (bp); + } else +- warning ("missing white space after `$define %.*s'", ++ gpc_warning ("missing white space after `$define %.*s'", + sym_length, symname); + } + /* Now everything from bp before limit is the definition. */ +@@ -3992,7 +3992,7 @@ + /* If we are generating additional info for debugging (with -g) we + need to pass through all effective #undef directives. */ + if (hp->type != T_MACRO) +- warning ("undefining `%s'", hp->name); ++ gpc_warning ("undefining `%s'", hp->name); + delete_macro (hp); + } + if (pedantic) { +@@ -4030,7 +4030,7 @@ + memcpy ((char *) copy, (char *) buf, length); + copy[length] = 0; + SKIP_WHITE_SPACE (copy); +- warning ("#warning %s", copy); ++ gpc_warning ("#gpc_warning %s", copy); + return 0; + } + +@@ -5711,7 +5711,7 @@ + + /* Print warning. */ + static void +-warning (const char *msg, ...) ++gpc_warning (const char *msg, ...) + { + va_list args; + va_start (args, msg); +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/lang.c gpc/p/lang.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/lang.c 2006-03-24 02:47:15.000000000 +0100 ++++ gpc/p/lang.c 2006-04-06 03:35:49.000000000 +0200 +@@ -178,7 +178,7 @@ + res = build (COMPOUND_EXPR, TREE_TYPE (res), + current_statement_list, res); + current_statement_list = save_statement_list; +- unshare_all_trees (res); ++ res = unshare_expr (res); + } + break; + +@@ -200,15 +200,16 @@ + DECL_INITIAL (new_var) = TREE_OPERAND (t, 0); + + TREE_OPERAND (t, 0) = new_var; ++ recompute_tree_invarant_for_addr_expr (t); + return GS_ALL_DONE; + } + return GS_UNHANDLED; + +- case CONSTRUCTOR: ++ case PASCAL_SET_CONSTRUCTOR: + if (TREE_CODE (TREE_TYPE (t)) == SET_TYPE) + { + tree type = TREE_TYPE (t); +- tree elt = CONSTRUCTOR_ELTS (t); ++ tree elt = SET_CONSTRUCTOR_ELTS (t); + tree domain = TYPE_DOMAIN (type); + tree domain_min = convert (sbitsizetype, TYPE_MIN_VALUE (domain)); + tree domain_max = convert (sbitsizetype, TYPE_MAX_VALUE (domain)); +@@ -690,6 +691,7 @@ + #define flag_objc 0 + #define flag_isoc99 0 + #define rs6000_cpu_cpp_builtins(foo) ++#define darwin_cpp_builtins(foo) + #endif + + #ifdef GCC_3_4 +@@ -1204,7 +1206,7 @@ + DECL_COMMON (*node) = 0; + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + +@@ -1221,7 +1223,7 @@ + DECL_COMMON (*node) = 1; + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + +@@ -1247,7 +1249,7 @@ + TREE_READONLY (TREE_TYPE (type)), 1)); + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + +@@ -1272,7 +1274,7 @@ + TREE_USED (decl) = 1; + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + } +@@ -1305,7 +1307,7 @@ + TREE_THIS_VOLATILE (TREE_TYPE (type)))); + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + +@@ -1491,7 +1493,7 @@ + } + else + { +- warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_POINTER (name)); + *no_add_attrs = true; + } + +@@ -1563,7 +1565,10 @@ + #define LANG_HOOKS_TYPE_FOR_MODE type_for_mode + + #define LANG_HOOKS_MARK_ADDRESSABLE pascal_mark_addressable ++ ++#ifndef GCC_4_1 + #define LANG_HOOKS_TRUTHVALUE_CONVERSION truthvalue_conversion ++#endif + + #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL + #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL copy_decl_lang_specific +@@ -1588,6 +1593,44 @@ + #undef LANG_HOOKS_TYPES_COMPATIBLE_P + #define LANG_HOOKS_TYPES_COMPATIBLE_P pascal_types_compatible_p + ++#ifdef GCC_4_1 ++#undef LANG_HOOKS_INIT_TS ++#define LANG_HOOKS_INIT_TS pascal_init_ts ++#undef LANG_HOOKS_EXPAND_CONSTANT ++#define LANG_HOOKS_EXPAND_CONSTANT pascal_expand_constant ++ ++static tree ++pascal_expand_constant (tree t) ++{ ++ tree nt; ++ if (TREE_CODE (t) == PASCAL_SET_CONSTRUCTOR) ++ { ++ HOST_WIDE_INT len = int_size_in_bytes (TREE_TYPE (t)); ++ char *tmp = xmalloc (len); ++ if (!get_set_constructor_bytes (t, (unsigned char *) tmp, len)) ++ { ++ nt = build_string (len, tmp); ++ gcc_assert (TREE_INT_CST_LOW (TYPE_SIZE (char_type_node)) == 8); ++ TREE_TYPE (nt) = build_simple_array_type (char_type_node, ++ build_index_type (build_int_2 (len, 0))); ++ t = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (t), nt); ++ } ++ } ++ return t; ++} ++ ++static void ++pascal_init_ts (void) ++{ ++ tree_contains_struct[NAMESPACE_DECL][TS_DECL_COMMON] = 1; ++ tree_contains_struct[OPERATOR_DECL][TS_DECL_COMMON] = 1; ++ tree_contains_struct[NAMESPACE_DECL][TS_DECL_MINIMAL] = 1; ++ tree_contains_struct[OPERATOR_DECL][TS_DECL_MINIMAL] = 1; ++} ++ ++#endif ++ ++ + int + pascal_types_compatible_p (tree t1, tree t2) + { +@@ -1763,14 +1806,14 @@ + if (TYPE_P (node)) + *anode = type = build_type_copy (type); + if (!valid_machine_attribute (name, args, decl, type)) +- warning ("`%s' attribute directive ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute directive ignored", IDENTIFIER_NAME (name)); + else if (decl) + type = TREE_TYPE (decl); + continue; + } + else if (attrtab[i].decl_req && !decl) + { +- warning ("`%s' attribute does not apply to types", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute does not apply to types", IDENTIFIER_NAME (name)); + continue; + } + else if (list_length (args) < attrtab[i].min || list_length (args) > attrtab[i].max) +@@ -1787,14 +1830,14 @@ + if (TREE_CODE (decl) == VAR_DECL) + DECL_COMMON (decl) = 0; + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + + case A_COMMON: + if (TREE_CODE (decl) == VAR_DECL) + DECL_COMMON (decl) = 1; + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + + case A_NORETURN: +@@ -1804,7 +1847,7 @@ + TREE_TYPE (decl) = type = build_pointer_type (p_build_type_variant (TREE_TYPE (type), + TREE_READONLY (TREE_TYPE (type)), 1)); + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + + case A_UNUSED: +@@ -1817,7 +1860,7 @@ + || TREE_CODE (decl) == FUNCTION_DECL) + TREE_USED (decl) = 1; + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + + case A_CONST: +@@ -1827,7 +1870,7 @@ + TREE_TYPE (decl) = type = build_pointer_type (p_build_type_variant (TREE_TYPE (type), + 1, TREE_THIS_VOLATILE (TREE_TYPE (type)))); + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + + case A_SECTION: +@@ -1905,7 +1948,7 @@ + assemble_alias (decl, id); + } + else +- warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); ++ gpc_warning ("`%s' attribute ignored", IDENTIFIER_NAME (name)); + break; + } + } +Only in gpc/p: lang.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/module.c gpc/p/module.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/module.c 2006-03-24 20:09:49.000000000 +0100 ++++ gpc/p/module.c 2006-04-11 01:27:35.459338992 +0200 +@@ -38,6 +38,12 @@ + #define HOST_PTR_PRINTF_CAST_TYPE HOST_WIDE_INT + #endif + ++#ifdef GCC_4_1 ++#define GPC_HOST_PTR_PRINTF "%p" ++#else ++#define GPC_HOST_PTR_PRINTF HOST_PTR_PRINTF ++#endif ++ + #ifdef EGCS97 + + /* By default there is no special suffix for target executables. */ +@@ -92,7 +98,7 @@ + + #endif + +-typedef struct ++typedef struct MEMFILE + { + char *filename; + size_t size, curpos; +@@ -283,6 +289,8 @@ + /* Options to pass to child gpc processes in automake. */ + static char *automake_gpc_options = NULL; + ++enum itab_state { ITAB_LOADING, ITAB_COMPLETE }; ++ + /* A table holding the nodes imported from all GPI files + together with their UIDs, so duplicates can be identified. */ + struct interface_table_t GTY(()) +@@ -294,6 +302,9 @@ + tree initializers; /* Same as in module_t. Predefined interfaces + (StandardInput etc.) have no initializer. */ + int count; ++ struct MEMFILE * GTY((skip(""))) infile; /* Input file during reading */ ++ gpi_int * GTY((skip(""))) offsets; /* Offsets of node data during reading */ ++ enum itab_state state; + tree * GTY((length ("%h.count"))) nodes; + int * GTY((length ("%h.count"))) hashlist_next; + int hash_table[MAX_HASH_TABLE]; +@@ -393,7 +404,7 @@ + IDENTIFIER_NAME (id), + current_module->main_program ? "program" : "module"); + else +- warning ( ++ gpc_warning ( + "identifier `%s' in %s heading is not a variable of file type", + IDENTIFIER_NAME (id), + current_module->main_program ? "program" : "module"); +@@ -467,7 +478,7 @@ + if (!id) + { + if (!co->pascal_dialect) +- warning ("missing program header"); ++ gpc_warning ("missing program header"); + else /* BP does not even warn */ + chk_dialect ("programs without program header are", B_D_PASCAL); + id = get_identifier ("noname"); +@@ -544,8 +555,8 @@ + create_gpi_files (); + if (co->interface_only) + exit_compilation (); +- if (co->implementation_only) +- { ++// if (co->implementation_only) ++// { + /* Make sure that interface nodes keep their identity by reloading the + GPI files previously created (presumably) with `--interface_only'. This + is the same as with separate interface and implementation modules. */ +@@ -555,7 +566,7 @@ + current_module = m; + pushlevel (0); + load_own_interface (0); +- } ++// } + current_module->implementation = 1; + } + +@@ -563,7 +574,7 @@ + finalize_module (int implementation_follows) + { + if (co->implementation_only && co->automake_level) +- warning ("`--automake' together with `--implementation-only' can cause problems"); ++ gpc_warning ("`--automake' together with `--implementation-only' can cause problems"); + if (errorcount || sorrycount) + exit_compilation (); + if (!implementation_follows /* && !co->implementation_only */) +@@ -742,7 +753,7 @@ + if (*p == ')') + p++; + else +- warning ("missing `)' in `--uses' parameter"); ++ gpc_warning ("missing `)' in `--uses' parameter"); + file_name = build_string_constant (buffer, q - buffer, 0); + } + else +@@ -755,7 +766,7 @@ + || (*p == '_'))) + { + if (*p != ',') +- warning ("missing `,' in `--uses' parameter"); ++ gpc_warning ("missing `,' in `--uses' parameter"); + p++; + } + } +@@ -1862,9 +1873,11 @@ + { + tree t = rb.nodes[n]; + if (t && (TREE_CODE (t) == FUNCTION_DECL || (TREE_CODE (t) == VAR_DECL)) +-/* #ifndef GCC_4_0 */ ++#ifndef GCC_4_0 + && !DECL_RTL_SET_P (t) +-/* #endif */ ++#else ++ && !PASCAL_DECL_IMPORTED (t) ++#endif + ) + { + if (!module_interface) +@@ -1878,26 +1891,19 @@ + DECL_INITIAL (t) = NULL_TREE; + #endif + } +-#if 0 ++#ifdef GCC_4_0 + else + { +- mark_decl_referenced (t); ++ if (TREE_CODE (t) == VAR_DECL) ++ rest_of_decl_compilation (t, 1, 0); ++// mark_decl_referenced (t); + } + #endif + PASCAL_DECL_WEAK (t) = 0; + PASCAL_DECL_IMPORTED (t) = 1; +- if (module_interface && TREE_CODE (t) == VAR_DECL +- && DECL_INITIAL (t)) +- { +-#if 0 +- fprintf (stderr, "DECL_INITIAL (%p)\n", t); +- debug_tree (t); +- debug_tree (DECL_INITIAL (t)); +-#endif +- } + #ifdef GCC_4_0 + /* @@@@@@@ Otherwise we have problems with vmt */ +- rest_of_decl_compilation (t, 1, 0); ++// rest_of_decl_compilation (t, 1, 0); + #else + rest_of_decl_compilation (t, NULL, 1, 1); + #endif +@@ -1968,8 +1974,12 @@ + #else + #define DECL_FLAGS_SIZE 6 + #endif ++#ifndef GCC_4_1 + #define DECL_EXTRA_STORED(t) (t->decl.u1.i) + #else ++#define DECL_EXTRA_STORED(t) (t->decl_common.u1.i) ++#endif ++#else + #ifdef EGCS + #define DECL_FLAGS_SIZE 5 + #else +@@ -2049,7 +2059,7 @@ + if (code == INTERFACE_NAME_NODE) + { + fprintf (stderr, " \n", + IDENTIFIER_NAME (INTERFACE_TABLE (t)->interface_name), + IDENTIFIER_NAME (INTERFACE_TABLE (t)->module_name), +@@ -2078,7 +2088,10 @@ + gpi_int n; + store_length ((&DECL_SIZE (t)) + 1, DECL_FLAGS_SIZE); + STORE_ANY (DECL_EXTRA_STORED (t)); +- store_node (DECL_NAME (t)); ++#ifdef GCC_4_1 ++ if (CODE_CONTAINS_STRUCT (code, TS_DECL_MINIMAL)) ++#endif ++ store_node (DECL_NAME (t)); + store_string (DECL_SOURCE_FILE (t)); + n = DECL_SOURCE_LINE (t); + STORE_ANY (n); +@@ -2088,8 +2101,13 @@ + #ifdef EGCS97 + store_node (DECL_SIZE_UNIT (t)); + #endif +- n = DECL_ALIGN (t); +- STORE_ANY (n); ++#ifdef GCC_4_1 ++ if (code != FUNCTION_DECL) ++#endif ++ { ++ n = DECL_ALIGN (t); ++ STORE_ANY (n); ++ } + break; + } + case tcc_constant: +@@ -2343,6 +2361,24 @@ + store_node (TREE_TYPE (t)); + break; + ++#ifdef GCC_4_1 ++ case CONSTRUCTOR: ++ { ++ VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS (t); ++ tree index, value; ++ unsigned HOST_WIDE_INT ix; ++ store_node (TREE_TYPE (t)); ++ ix = VEC_length (constructor_elt, elts); ++ STORE_ANY (ix); ++ FOR_EACH_CONSTRUCTOR_ELT (elts, ix, index, value) ++ { ++ store_node (index); ++ store_node (value); ++ } ++ } ++ break; ++#endif ++ + default: + #ifdef GCC_4_0 + gcc_assert (class_done); +@@ -2590,7 +2626,10 @@ + char *s; + LOAD_LENGTH ((&DECL_SIZE (t)) + 1, DECL_FLAGS_SIZE); + LOAD_ANY (DECL_EXTRA_STORED (t)); +- DECL_NAME (t) = load_node (); ++#ifdef GCC_4_1 ++ if (CODE_CONTAINS_STRUCT (code, TS_DECL_MINIMAL)) ++#endif ++ DECL_NAME (t) = load_node (); + s = load_string (rb.infile); + DECL_SOURCE_FILE (t) = PERMANENT_STRING (s); + free (s); +@@ -2602,9 +2641,17 @@ + #ifdef EGCS97 + DECL_SIZE_UNIT (t) = load_node (); + #endif +- LOAD_ANY (n); +- DECL_ALIGN (t) = n; +- DECL_IN_SYSTEM_HEADER (t) = 1; ++#ifdef GCC_4_1 ++ if (code != FUNCTION_DECL) ++#endif ++ { ++ LOAD_ANY (n); ++ DECL_ALIGN (t) = n; ++ } ++#ifdef GCC_4_1 ++ if (CODE_CONTAINS_STRUCT (code, TS_DECL_WITH_VIS)) ++#endif ++ DECL_IN_SYSTEM_HEADER (t) = 1; + break; + } + case tcc_constant: +@@ -2649,7 +2696,7 @@ + if (co->debug_gpi) + { + fprintf (stderr, "GPI loaded <%i>:\n \n", + IDENTIFIER_NAME (i), + IDENTIFIER_NAME (m), +@@ -2832,7 +2879,9 @@ + TREE_TYPE (t) = load_node (); + DECL_ARG_TYPE (t) = load_node (); + DECL_CONTEXT (t) = load_node (); ++#ifndef GCC_4_1 + SET_DECL_ASSEMBLER_NAME (t, DECL_NAME (t)); ++#endif + break; + + case FIELD_DECL: +@@ -2895,6 +2944,27 @@ + TREE_TYPE (t) = load_node (); + break; + ++#ifdef GCC_4_1 ++ case CONSTRUCTOR: ++ { ++ VEC(constructor_elt,gc) *elts = 0; ++ tree index, value; ++ unsigned HOST_WIDE_INT ix; ++ TREE_TYPE (t) = load_node (); ++ LOAD_ANY (ix); ++ while (ix > 0) ++ { ++ index = load_node (); ++ value = load_node (); ++ CONSTRUCTOR_APPEND_ELT (elts, index, value); ++ ix--; ++ } ++ CONSTRUCTOR_ELTS (t) = elts; ++ } ++ break; ++#endif ++ ++ + default: + break; + } +@@ -2962,7 +3032,7 @@ + for (q = n; *q; q++) + *q = TOLOWER (*q); + if (strcmp (f, n) && strcmp (n + strlen (n) - 4, "-all")) +- warning ("interface `%s' in file name `%s'", IDENTIFIER_NAME (name), plain_input_filename); ++ gpc_warning ("interface `%s' in file name `%s'", IDENTIFIER_NAME (name), plain_input_filename); + } + + /* Store names of interfaces imported by this module */ +@@ -3207,7 +3277,7 @@ + if (!itab_check_gpi_checksum (interface, checksum, 0)) + { + if (co->debug_automake) +- warning ("`%s' must be recompiled because of checksum mismatch in %s", name, str); ++ gpc_warning ("`%s' must be recompiled because of checksum mismatch in %s", name, str); + must_recompile = 1; + } + for (imported = current_module->imports; imported; imported = TREE_CHAIN (imported)) +@@ -3278,7 +3348,7 @@ + } + #if 0 + else if (implementation_flag) +- warning ("duplicate implementation flag in GPI file `%s'", name); ++ gpc_warning ("duplicate implementation flag in GPI file `%s'", name); + #endif + implementation_flag = 1; + break; +@@ -3335,7 +3405,7 @@ + } + if (errstr) + { +- warning (errstr, name); ++ gpc_warning (errstr, name); + module_filename = NULL; + must_recompile = 1; + } +Only in gpc/p: module.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/objects.c gpc/p/objects.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/objects.c 2006-03-24 06:03:26.000000000 +0100 ++++ gpc/p/objects.c 2006-04-09 21:28:12.000000000 +0200 +@@ -455,7 +455,7 @@ + if (IDENTIFIER_IS_BUILT_IN (TREE_VALUE (cp), p_virtual)) + { + if (co->methods_always_virtual) +- warning ("explicit `virtual' given with `--methods-always-virtual'"); ++ gpc_warning ("explicit `virtual' given with `--methods-always-virtual'"); + virtual = 1; + nv++; + if (TREE_PURPOSE (cp)) +@@ -568,7 +568,7 @@ + if (PEDANTIC (B_D_PASCAL)) /* forbidden by OOE */ + error ("%s `%s' conflicts with ancestor type name", i ? "method" : "field", IDENTIFIER_NAME (DECL_NAME (field))); + else +- warning ("%s `%s' conflicts with ancestor type name", i ? "method" : "field", IDENTIFIER_NAME (DECL_NAME (field))); ++ gpc_warning ("%s `%s' conflicts with ancestor type name", i ? "method" : "field", IDENTIFIER_NAME (DECL_NAME (field))); + } + } + +@@ -637,7 +637,7 @@ + if (pedantic || !(co->pascal_dialect & B_D_PASCAL)) + error ("%s method `%s', overrides %s method", descr[p2], IDENTIFIER_NAME (DECL_NAME (*dm)), descr[p1]); + else +- warning ("%s method `%s', overrides %s method", descr[p2], IDENTIFIER_NAME (DECL_NAME (*dm)), descr[p1]); ++ gpc_warning ("%s method `%s', overrides %s method", descr[p2], IDENTIFIER_NAME (DECL_NAME (*dm)), descr[p1]); + } + if (PASCAL_VIRTUAL_METHOD (*pm)) + { +@@ -648,12 +648,12 @@ + } + if (PASCAL_TYPE_IOCRITICAL (TREE_TYPE (*dm)) + && !PASCAL_TYPE_IOCRITICAL (TREE_TYPE (*pm))) +- warning ("iocritical virtual method overrides non-iocritical one"); ++ gpc_warning ("iocritical virtual method overrides non-iocritical one"); + } + if (PASCAL_VIRTUAL_METHOD (*pm) && !PASCAL_VIRTUAL_METHOD (*dm)) + { + /* Overridden virtual methods must be virtual. */ +- warning ("method `%s' is virtual", IDENTIFIER_NAME (DECL_NAME (*dm))); ++ gpc_warning ("method `%s' is virtual", IDENTIFIER_NAME (DECL_NAME (*dm))); + PASCAL_VIRTUAL_METHOD (*dm) = 1; + } + /* If a virtual method overrides a non-virtual one, we must +@@ -662,7 +662,7 @@ + if (!PASCAL_VIRTUAL_METHOD (*pm) && PASCAL_VIRTUAL_METHOD (*dm)) + { + if (PEDANTIC (B_D_PASCAL) || co->pascal_dialect == 0) +- warning ("virtual method overrides non-virtual one"); ++ gpc_warning ("virtual method overrides non-virtual one"); + *pm = TREE_CHAIN (*pm); + continue; + } +@@ -782,8 +782,8 @@ + TYPE_LANG_CODE (type) = PASCAL_LANG_ABSTRACT_OBJECT; + if (co->warn_implicit_abstract) + { +- warning ("object type `%s' is implicitly abstract because", object_name); +- warning (" it contains abstract method `%s'", IDENTIFIER_NAME (DECL_NAME (field))); ++ gpc_warning ("object type `%s' is implicitly abstract because", object_name); ++ gpc_warning (" it contains abstract method `%s'", IDENTIFIER_NAME (DECL_NAME (field))); + } + } + method = convert (ptr_type_node, integer_zero_node); +@@ -800,12 +800,12 @@ + /* Set `Size' and `NegatedSize' to 0 for abstract objects */ + TREE_VALUE (vmt_entry) = TREE_VALUE (TREE_CHAIN (vmt_entry)) = size_zero_node; + if (co->warn_inherited_abstract && parent && TYPE_LANG_CODE (parent) != PASCAL_LANG_ABSTRACT_OBJECT) +- warning ("abstract object type `%s' inherits from non-abstract type `%s'", ++ gpc_warning ("abstract object type `%s' inherits from non-abstract type `%s'", + object_name, IDENTIFIER_NAME (DECL_NAME (TYPE_NAME (parent)))); + } + else if (has_virtual_method && !has_constructor && !is_class + /* && (co->pascal_dialect & B_D_PASCAL) */) +- warning ("object type has virtual method, but no constructor"); ++ gpc_warning ("object type has virtual method, but no constructor"); + + /* Now create a global var declaration (also for abstract types, + for `is', `as' and explicit parent type access via VMT). +@@ -816,13 +816,14 @@ + build_tree_list (NULL_TREE, vmt_entry), VQ_IMPLICIT | VQ_CONST | + (current_module->implementation ? VQ_STATIC : 0)); + +-#ifdef GCC_4_0 ++#if 0 /* def GCC_4_0 */ + if (current_module->implementation || !(co->interface_only)) + { + mark_decl_referenced (TYPE_LANG_VMT_VAR (type)); + make_decl_rtl (TYPE_LANG_VMT_VAR (type)); + } + #endif ++ + /* Attach VMT_TYPE to the implicit VMT field of the object. + (Until here it still has the inherited type or ^void type.) + We also need this for abstract types because their methods +@@ -977,16 +978,16 @@ + { + if (op == p_is) + { +- warning ("`is' always yields `True' if the right operand"); +- warning (" is the declared type of the left operand."); ++ gpc_warning ("`is' always yields `True' if the right operand"); ++ gpc_warning (" is the declared type of the left operand."); + if (TREE_SIDE_EFFECTS (left)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return boolean_true_node; + } + else + { +- warning ("`as' has no effect if the right operand is"); +- warning (" the declared type of the left operand"); ++ gpc_warning ("`as' has no effect if the right operand is"); ++ gpc_warning (" the declared type of the left operand"); + return oleft; + } + } +@@ -999,10 +1000,10 @@ + { + if (op == p_is) + { +- warning ("`is' always yields `False' if the left operand is not"); +- warning (" polymorphic and the right operand is not its type"); ++ gpc_warning ("`is' always yields `False' if the left operand is not"); ++ gpc_warning (" polymorphic and the right operand is not its type"); + if (TREE_SIDE_EFFECTS (left)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return boolean_false_node; + } + else +Only in gpc/p: objects.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/options.c gpc/p/options.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/options.c 2006-03-03 20:14:31.000000000 +0100 ++++ gpc/p/options.c 2006-04-06 06:58:40.000000000 +0200 +@@ -308,7 +308,7 @@ + } + else if (OPT ("-fdisable-debug-info")) + { +- warning ("`--disable-debug-info' is a temporary work-around; it may disappear in the future"); ++ gpc_warning ("`--disable-debug-info' is a temporary work-around; it may disappear in the future"); + if (write_symbols == SDB_DEBUG) /* Not all debug formats like to be reset */ + write_symbols = NO_DEBUG; + debug_info_level = DINFO_LEVEL_NONE; +@@ -454,7 +454,7 @@ + { + int limit = strtoint (arg, strlen (arg)); + if (limit <= 0) +- warning ("invalid specified set limit %s.", arg); ++ gpc_warning ("invalid specified set limit %s.", arg); + else + co->set_limit = limit; + } +@@ -682,7 +682,7 @@ + name[--length] = 0; + if (length == 0) + { +- warning ("empty Pascal compiler directive"); ++ gpc_warning ("empty Pascal compiler directive"); + return 1; + } + if (length == 2 && (name[1] == '+' || name[1] == '-')) +@@ -700,12 +700,12 @@ + else + long_name = short_option->inverted_long_name; + if (long_name[1] == '#') +- warning ("directive `{$%s}' not yet implemented", name); ++ gpc_warning ("directive `{$%s}' not yet implemented", name); + else if (long_name[1] == '!') + { + /* BP-style directive. In BP mode, ignore it for compatibility. */ + if (pedantic || !(co->pascal_dialect & U_B_D_PASCAL)) +- warning ("ignoring BP directive `{$%s}' which is unnecessary in GPC", name); ++ gpc_warning ("ignoring BP directive `{$%s}' which is unnecessary in GPC", name); + } + else if (!pascal_decode_option (1, &long_name)) + error ("internal problem: unknown short option expansion `%s'", long_name); +@@ -808,7 +808,7 @@ + case 'o': + case 's': + if (pedantic || !(co->pascal_dialect & U_B_D_PASCAL)) +- warning ("ignoring BP directive `{$%s}' which is unnecessary in GPC", name); ++ gpc_warning ("ignoring BP directive `{$%s}' which is unnecessary in GPC", name); + return 1; + /* One-letter directive already handled by the preprocessor */ + case 'i': +@@ -929,7 +929,7 @@ + } + return 1; + } +- warning ("unknown compiler directive `%s'", name); ++ gpc_warning ("unknown compiler directive `%s'", name); + return 1; + } + +@@ -1026,14 +1026,14 @@ + if (error_flag) + error ("%s", buf); + else +- warning ("%s", buf); ++ gpc_warning ("%s", buf); + *p = ' '; + buf = p; /* including the leading space */ + } + if (error_flag) + error ("%s", buf); + else +- warning ("%s", buf); ++ gpc_warning ("%s", buf); + } + + void +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/p-tree.def gpc/p/p-tree.def +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/p-tree.def 2006-03-03 20:14:31.000000000 +0100 ++++ gpc/p/p-tree.def 2006-04-06 06:58:40.000000000 +0200 +@@ -36,6 +36,9 @@ + DEFTREECODE (RANGE_CHECK_EXPR, "range_check_expr", tcc_expression, 3) + DEFTREECODE (IO_RANGE_CHECK_EXPR, "io_range_check_expr", tcc_expression, 3) + DEFTREECODE (IN_EXPR, "in_expr", tcc_binary, 2) ++#ifdef GCC_4_1 ++DEFTREECODE (PASCAL_SET_CONSTRUCTOR, "pascal_set_constructor", tcc_expression, 1) ++#endif + #else + #ifdef EGCS + DEFTREECODE (OPERATOR_DECL, "operator_decl", 'd', 0) +Only in gpc/p: p-version.h~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/parse.c gpc/p/parse.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/parse.c 2006-03-24 02:52:27.000000000 +0100 ++++ gpc/p/parse.c 2006-04-06 05:37:44.000000000 +0200 +@@ -5214,7 +5214,7 @@ + + case 60: + #line 378 "parse.y" +- { warning ("missing semicolon"); yyerrok; ;} ++ { gpc_warning ("missing semicolon"); yyerrok; ;} + break; + + case 61: +@@ -5284,7 +5284,7 @@ + + case 81: + #line 436 "parse.y" +- { warning ("missing semicolon"); yyerrok; ;} ++ { gpc_warning ("missing semicolon"); yyerrok; ;} + break; + + case 82: +@@ -5419,7 +5419,7 @@ + + case 120: + #line 548 "parse.y" +- { warning ("missing comma"); yyerrok; ;} ++ { gpc_warning ("missing comma"); yyerrok; ;} + break; + + case 121: +@@ -5731,7 +5731,7 @@ + tree t = build_pascal_pointer_type (make_node (LANG_TYPE)); + PASCAL_TYPE_CLASS (t) = 1; + build_type_decl ((((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.ttype), t, NULL_TREE); +- warning("ignored parent in Delphi forward class declaration"); ++ gpc_warning ("ignored parent in Delphi forward class declaration"); + ;} + break; + +@@ -6710,7 +6710,7 @@ + #line 1528 "parse.y" + { + if (!(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.itype) && extra_warnings) +- warning ("empty statement after `else'"); ++ gpc_warning ("empty statement after `else'"); + expand_end_cond (); + ;} + break; +@@ -6849,7 +6849,7 @@ + #line 1608 "parse.y" + { + if (!(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.itype) && extra_warnings) +- warning ("empty statement after `then'"); ++ gpc_warning ("empty statement after `then'"); + ;} + break; + +@@ -7988,7 +7988,7 @@ + + case 795: + #line 2396 "parse.y" +- { warning ("missing `.' at the end of program/unit/module"); ;} ++ { gpc_warning ("missing `.' at the end of program/unit/module"); ;} + break; + + case 796: +@@ -9544,7 +9544,7 @@ + #if YYDEBUG != 0 + yydebug = value; + #else +- warning ("YYDEBUG not defined."); ++ gpc_warning ("YYDEBUG not defined."); + #endif + } + +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/parse.y gpc/p/parse.y +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/parse.y 2006-03-24 02:47:15.000000000 +0100 ++++ gpc/p/parse.y 2006-04-06 03:35:49.000000000 +0200 +@@ -375,7 +375,7 @@ + | error + { error ("module specifications need an export part"); } + | export_part_list error export_part +- { warning ("missing semicolon"); yyerrok; } ++ { gpc_warning ("missing semicolon"); yyerrok; } + | export_part_list ';' error + { error ("extra semicolon"); } + ; +@@ -433,7 +433,7 @@ + import_specification + | import_specification_list ';' import_specification + | import_specification_list error import_specification +- { warning ("missing semicolon"); yyerrok; } ++ { gpc_warning ("missing semicolon"); yyerrok; } + ; + + import_specification: +@@ -545,7 +545,7 @@ + uses_specification + | uses_list ',' uses_specification + | uses_list error uses_specification +- { warning ("missing comma"); yyerrok; } ++ { gpc_warning ("missing comma"); yyerrok; } + ; + + uses_specification: +@@ -786,7 +786,7 @@ + tree t = build_pascal_pointer_type (make_node (LANG_TYPE)); + PASCAL_TYPE_CLASS (t) = 1; + build_type_decl ($1, t, NULL_TREE); +- warning("ignored parent in Delphi forward class declaration"); ++ gpc_warning ("ignored parent in Delphi forward class declaration"); + } + | new_identifier enable_lce equals p_class LEX_RANGE p_end + { +@@ -1527,7 +1527,7 @@ + pushlevel optional_statement poplevel + { + if (!$5 && extra_warnings) +- warning ("empty statement after `else'"); ++ gpc_warning ("empty statement after `else'"); + expand_end_cond (); + } + | p_case expression p_of +@@ -1607,7 +1607,7 @@ + pushlevel optional_statement poplevel + { + if (!$6 && extra_warnings) +- warning ("empty statement after `then'"); ++ gpc_warning ("empty statement after `then'"); + } + ; + +@@ -2393,7 +2393,7 @@ + dot_or_error: + '.' + | error +- { warning ("missing `.' at the end of program/unit/module"); } ++ { gpc_warning ("missing `.' at the end of program/unit/module"); } + ; + + null: +@@ -2487,7 +2487,7 @@ + #if YYDEBUG != 0 + yydebug = value; + #else +- warning ("YYDEBUG not defined."); ++ gpc_warning ("YYDEBUG not defined."); + #endif + } + +Only in gpc/p: parse.y~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/plant.c gpc/p/plant.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/plant.c 2006-03-24 00:51:09.000000000 +0100 ++++ gpc/p/plant.c 2006-04-08 05:42:12.000000000 +0200 +@@ -285,7 +285,9 @@ + current_function_decl = DECL_CONTEXT (the_fun); + cfun = NULL; + +- if (!DECL_CONTEXT (the_fun) || PASCAL_METHOD (the_fun)) ++ if (!DECL_CONTEXT (the_fun) ++ || TREE_CODE (DECL_CONTEXT (the_fun)) != FUNCTION_DECL ++ /* PASCAL_METHOD (the_fun) */) + { + // current_function_decl = NULL_TREE; + current_function_decl = the_fun; +Only in gpc/p: plant.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/predef.c gpc/p/predef.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/predef.c 2006-03-24 02:47:15.000000000 +0100 ++++ gpc/p/predef.c 2006-04-07 02:01:03.000000000 +0200 +@@ -1185,7 +1185,15 @@ + case 't': if (TYPE_MAIN_VARIANT (type) != gpc_type_TimeStamp) errstr = "argument %d to `%s' must be of type `TimeStamp'"; break; + case 'a': if (TYPE_MAIN_VARIANT (type) != gpc_type_BindingType) errstr = "argument %d to `%s' must be of type `BindingType'"; break; + case 'x': break; /* Untyped parameter */ +- case '#': if (TREE_CONSTANT (val) && (TREE_CODE (val) != CONSTRUCTOR || type == empty_set_type_node)) { error ("`%s' applied to a constant", r_name); return error_mark_node; } break; /* expression or type allowed */ ++ case '#': if (TREE_CONSTANT (val) ++ && ((TREE_CODE (val) != CONSTRUCTOR ++ && TREE_CODE (val) != PASCAL_SET_CONSTRUCTOR) ++ || type == empty_set_type_node)) ++ { ++ error ("`%s' applied to a constant", r_name); ++ return error_mark_node; ++ } ++ break; /* expression or type allowed */ + default: gcc_unreachable (); + } + if (ISUPPER ((unsigned char) argtype)) +@@ -1552,11 +1560,12 @@ + return NULL_TREE; + + case p_Card: +- if (TREE_CODE (val) == CONSTRUCTOR && PASCAL_CONSTRUCTOR_INT_CST (val)) ++ if (TREE_CODE (val) == PASCAL_SET_CONSTRUCTOR ++ && PASCAL_CONSTRUCTOR_INT_CST (val)) + { + tree e; + retval = integer_zero_node; +- for (e = CONSTRUCTOR_ELTS (val); e; e = TREE_CHAIN (e)) ++ for (e = SET_CONSTRUCTOR_ELTS (val); e; e = TREE_CHAIN (e)) + { + tree l = TREE_PURPOSE (e), u = TREE_VALUE (e); + gcc_assert (TREE_CODE (l) == INTEGER_CST && TREE_CODE (u) == INTEGER_CST); +@@ -1568,7 +1577,8 @@ + gcc_assert (TREE_CODE (retval) == INTEGER_CST); + break; + } +- if (TREE_CODE (val) == CONSTRUCTOR && TREE_CODE (TREE_TYPE (val)) == SET_TYPE) ++ if (TREE_CODE (val) == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (val)) == SET_TYPE) + { + val = construct_set (val, NULL_TREE, 1); + CHK_EM (val); +@@ -1590,7 +1600,7 @@ + if (co->pascal_dialect & C_E_O_PASCAL) + error ("argument to `%s' must be of real type", r_name); + else +- warning ("`%s' applied to integers has no effect", r_name); ++ gpc_warning ("`%s' applied to integers has no effect", r_name); + retval = val; + } + else +@@ -1667,7 +1677,7 @@ + { + tree arg; + if (argcount == 1) +- warning ("`%s' with only one argument has no effect", r_name); ++ gpc_warning ("`%s' with only one argument has no effect", r_name); + for (arg = apar; arg; arg = TREE_CHAIN (arg)) + if (!is_string_compatible_type (TREE_VALUE (arg), 1)) + errstr = "arguments to `%s' must be strings or chars"; +@@ -1706,7 +1716,7 @@ + case p_Ord: + if (code == INTEGER_TYPE) + { +- warning ("`%s' applied to integers has no effect", r_name); ++ gpc_warning ("`%s' applied to integers has no effect", r_name); + retval = val; + } + else +@@ -1739,9 +1749,9 @@ + else if (pedantic && !contains_auto_initialized_part (type, r_num == p_Finalize)) + { + if (r_num == p_Finalize) +- warning ("variable does not need any finalization"); ++ gpc_warning ("variable does not need any finalization"); + else +- warning ("variable does not need any initialization"); ++ gpc_warning ("variable does not need any initialization"); + } + init_any (val, r_num == p_Finalize, 0); + retval = error_mark_node; /* nothing to expand anymore -- init_any does it already */ +@@ -1823,9 +1833,12 @@ + + /* (val = nil) ? 0 : strlen|Length (val) */ + if (TYPE_MAIN_VARIANT (type) == cstring_type_node) +- strlength = build (COND_EXPR, integer_type_node, +- build_pascal_binary_op (EQ_EXPR, val, null_pointer_node), integer_zero_node, +- build_routine_call (strlen_routine_node, build_tree_list (NULL_TREE, val))); ++ strlength = build (COND_EXPR, pascal_integer_type_node, ++ build_pascal_binary_op (EQ_EXPR, val, null_pointer_node), ++ convert (pascal_integer_type_node, integer_zero_node), ++ convert (pascal_integer_type_node, ++ build_routine_call (strlen_routine_node, ++ build_tree_list (NULL_TREE, val)))); + else + strlength = PASCAL_STRING_LENGTH (val); + retval = make_new_variable ("cstring2string", build_pascal_string_schema (save_expr (strlength))); +@@ -1860,7 +1873,7 @@ + case p_Conjugate: + if (INT_REAL (code)) + { +- warning ("`%s' applied to real numbers has no effect", r_name); ++ gpc_warning ("`%s' applied to real numbers has no effect", r_name); + retval = val; + } + else if (r_num == p_Re) +@@ -1872,9 +1885,9 @@ + case p_Im: + if (INT_REAL (code)) + { +- warning ("`%s' applied to real numbers always yields 0.", r_name); ++ gpc_warning ("`%s' applied to real numbers always yields 0.", r_name); + if (TREE_SIDE_EFFECTS (val)) +- warning (" Argument with side-effects is not evaluated."); ++ gpc_warning (" Argument with side-effects is not evaluated."); + retval = real_zero_node; + } + else +@@ -1923,7 +1936,8 @@ + } + + case p_Assigned: +- retval = build (NE_EXPR, boolean_type_node, val, integer_zero_node); ++ retval = build (NE_EXPR, boolean_type_node, val, ++ convert (TREE_TYPE (val), integer_zero_node)); + break; + + case p_GetMem: +@@ -1956,7 +1970,7 @@ + CHK_EM (ptype); + + if (TREE_CODE (ptype) == VOID_TYPE && !(co->pascal_dialect & B_D_PASCAL)) +- warning ("argument to `%s' should not be an untyped pointer", r_name); ++ gpc_warning ("argument to `%s' should not be an untyped pointer", r_name); + if (PASCAL_TYPE_ANYFILE (ptype)) + error ("`AnyFile' pointers cannot be allocated with `%s'", r_name); + +@@ -2064,8 +2078,12 @@ + int save_warn_object_assignment = co->warn_object_assignment; + co->warn_object_assignment = 0; + #endif ++ ++ + expand_expr_stmt (build_modify_expr (res_deref, NOP_EXPR, + build_pascal_initializer (TREE_TYPE (type), init, "type in `New'", 0))); ++ ++ + #if 0 + co->warn_object_assignment = save_warn_object_assignment; + #endif +@@ -2125,7 +2143,8 @@ + argcount = 1; + TREE_CHAIN (apar) = NULL_TREE; + } +- expand_start_cond (build (NE_EXPR, boolean_type_node, val, integer_zero_node), 0); ++ expand_start_cond (build (NE_EXPR, boolean_type_node, val, ++ convert (TREE_TYPE (val), integer_zero_node)), 0); + init_any (build_indirect_ref (val, NULL), 1, 1); + if (co->pascal_dialect & C_E_O_PASCAL) + { +@@ -2140,12 +2159,12 @@ + if (co->pascal_dialect & C_E_O_PASCAL) + error ("standard Pascal forbids `%s (nil)'", r_name); + else +- warning ("`%s (nil)' has no effect", r_name); ++ gpc_warning ("`%s (nil)' has no effect", r_name); + } + if (argcount > 1) + { + if (PEDANTIC (GNU_PASCAL)) +- warning (r_num == p_Dispose ++ gpc_warning (r_num == p_Dispose + ? "tag fields ignored in `%s'" + : "second parameter ignored in `%s'", r_name); + /* @@ Perhaps we should do a run-time check ? */ +@@ -2222,7 +2241,7 @@ + case p_Int: + if (code == INTEGER_TYPE) + { +- warning ("`%s' applied to integers has no effect", r_name); ++ gpc_warning ("`%s' applied to integers has no effect", r_name); + retval = val; + } + break; +@@ -2230,9 +2249,9 @@ + case p_Frac: + if (code == INTEGER_TYPE) + { +- warning ("`%s' applied to integers always yields 0.", r_name); ++ gpc_warning ("`%s' applied to integers always yields 0.", r_name); + if (TREE_SIDE_EFFECTS (val)) +- warning (" Argument with side-effects is not evaluated."); ++ gpc_warning (" Argument with side-effects is not evaluated."); + retval = integer_zero_node; + } + break; +@@ -2294,7 +2313,7 @@ + } + else if (co->pascal_dialect & U_B_D_M_PASCAL) + { +- warning ("unspecified buffer size for untyped file defaults to 128 in `%s'", r_name); ++ gpc_warning ("unspecified buffer size for untyped file defaults to 128 in `%s'", r_name); + buffer_size = build_int_2 (128, 0); + } + else +@@ -2544,7 +2563,7 @@ + errstr = "left argument of `pow' is 0 while right argument is <= 0"; + if (!pedantic && (co->pascal_dialect & C_E_O_PASCAL)) + { +- warning (errstr); ++ gpc_warning (errstr); + errstr = NULL; + } + } +@@ -2653,11 +2672,11 @@ + if (r_num == p_LT) /* s < '' is impossible */ + { + if (invert_result) +- warning ("`>=' comparison against the empty string is always `True'."); ++ gpc_warning ("`>=' comparison against the empty string is always `True'."); + else +- warning ("`<' comparison against the empty string is always `False'."); ++ gpc_warning ("`<' comparison against the empty string is always `False'."); + if (TREE_SIDE_EFFECTS (val)) +- warning (" Operand with side-effects is not evaluated."); ++ gpc_warning (" Operand with side-effects is not evaluated."); + return invert_result ? boolean_true_node : boolean_false_node; + } + comp_empty = val; +@@ -2996,7 +3015,7 @@ + get_standard_input (void) + { + if (co->warn_implicit_io) +- warning ("implicit use of `Input'"); ++ gpc_warning ("implicit use of `Input'"); + if (!current_module->input_available) + { + current_module->input_available = 1; +@@ -3009,7 +3028,7 @@ + get_standard_output (void) + { + if (co->warn_implicit_io) +- warning ("implicit use of `Output'"); ++ gpc_warning ("implicit use of `Output'"); + if (!current_module->output_available) + { + current_module->output_available = 1; +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/rts and gpc/p/rts +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/script and gpc/p/script +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/statements.c gpc/p/statements.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/statements.c 2006-03-24 03:47:15.000000000 +0100 ++++ gpc/p/statements.c 2006-04-07 19:28:45.000000000 +0200 +@@ -73,7 +73,7 @@ + if (PEDANTIC (GNU_PASCAL)) + { + if (co->pascal_dialect & B_D_M_PASCAL) +- warning ("GPC and Borland Pascal have different `asm' syntax"); ++ gpc_warning ("GPC and Borland Pascal have different `asm' syntax"); + else + chk_dialect ("`asm' is", B_D_M_PASCAL); + } +@@ -203,7 +203,7 @@ + else if (TREE_CODE (t) == VAR_DECL && PASCAL_FOR_LOOP_COUNTER (t)) + { + if (co->pascal_dialect & B_D_M_PASCAL) +- warning ("%s of `for' loop counter", description); ++ gpc_warning ("%s of `for' loop counter", description); + else + { + error ("%s of `for' loop counter", description); +@@ -245,11 +245,11 @@ + return 0; + } + else +- warning ("%s: typed const misused as initialized variable", description); ++ gpc_warning ("%s: typed const misused as initialized variable", description); + if (!informed) + { +- warning (" (Better use ISO 10206 Extended Pascal initialized"); +- warning (" types and variables: `var foo: integer value 7'.)"); ++ gpc_warning (" (Better use ISO 10206 Extended Pascal initialized"); ++ gpc_warning (" types and variables: `var foo: integer value 7'.)"); + informed = 1; + } + } +@@ -284,7 +284,7 @@ + { + tree valtype = TREE_TYPE (TREE_TYPE (current_function_decl)); + if (TREE_THIS_VOLATILE (current_function_decl)) +- warning ("routine declared `noreturn' returns"); ++ gpc_warning ("routine declared `noreturn' returns"); + /* This must be done before returning, otherwise it would jump over it. */ + cleanup_routine (); + if (!retval) +@@ -396,9 +396,9 @@ + if (const_lt (chi, hi)) + nlo = fold (build (PLUS_EXPR, TREE_TYPE (chi), (ehi = chi), convert (TREE_TYPE (chi), integer_one_node))); + if (tree_int_cst_equal (elo, ehi)) +- warning ("duplicate `case' element %ld", (long) TREE_INT_CST_LOW (elo)); ++ gpc_warning ("duplicate `case' element %ld", (long) TREE_INT_CST_LOW (elo)); + else +- warning ("duplicate `case' range %ld .. %ld", (long) TREE_INT_CST_LOW (elo), (long) TREE_INT_CST_LOW (ehi)); ++ gpc_warning ("duplicate `case' range %ld .. %ld", (long) TREE_INT_CST_LOW (elo), (long) TREE_INT_CST_LOW (ehi)); + if (!nlo && !nhi) + lo = hi = NULL_TREE; + else +@@ -591,7 +591,8 @@ + CHK_EM (counter); + + /* Make a set out of a set constructor */ +- if (TREE_CODE (expr) == CONSTRUCTOR && TREE_CODE (TREE_TYPE (expr)) == SET_TYPE) ++ if (TREE_CODE (expr) == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (expr)) == SET_TYPE) + expr = construct_set (expr, NULL_TREE, 0); + if (TREE_CODE (TREE_TYPE (expr)) != SET_TYPE) + { +@@ -600,7 +601,7 @@ + } + else if (TREE_TYPE (expr) == empty_set_type_node) + { +- warning ("`for ... in []' (empty set) has no effect"); ++ gpc_warning ("`for ... in []' (empty set) has no effect"); + /* Be as silent as possible to give the optimizer a chance to remove the whole loop. */ + empty_set = 1; + } +@@ -916,7 +917,7 @@ + || TREE_READONLY (t) + || TYPE_READONLY (TREE_TYPE (t)) + || (TREE_CODE (t) == VAR_DECL && PASCAL_DECL_TYPED_CONST (t))) +- warning ("constant file variables are pointless"); ++ gpc_warning ("constant file variables are pointless"); + + /* Always pass the internal name to the RTS, not only for external files. */ + if (TREE_CODE (thing) == VAR_DECL) +@@ -929,7 +930,7 @@ + fname = build_string_constant (temp, strlen (temp), 0); + + if (pedantic && PASCAL_TYPE_PACKED (type)) +- warning ("`packed' has no effect on the external file format"); ++ gpc_warning ("`packed' has no effect on the external file format"); + + /* Pass the size of the file buffer. */ + file_size = (TREE_CODE (component_type) == VOID_TYPE) ? size_one_node : size_in_bytes (component_type); +@@ -1053,10 +1054,16 @@ + { + if (!TREE_VALUE (decl)) + expand_expr_stmt (TREE_PURPOSE (decl)); +- else if (!TREE_PURPOSE (decl)) +- init_any (TREE_VALUE (decl), the_end, 1); + else ++ { ++ init_any (TREE_VALUE (decl), the_end, 1); ++ if (TREE_PURPOSE (decl)) ++ expand_pascal_assignment2 (TREE_VALUE (decl), ++ TREE_PURPOSE (decl), 1); ++#if 0 + expand_expr_stmt (build_modify_expr (TREE_VALUE (decl), INIT_EXPR, TREE_PURPOSE (decl))); ++#endif ++ } + } + for (decl = names; decl; decl = TREE_CHAIN (decl)) + { +@@ -1146,10 +1153,10 @@ + } + + void +-expand_pascal_assignment (tree target, tree source) ++expand_pascal_assignment2 (tree target, tree source, int is_init) + { + tree stmt, schema_source, schema_target; +- int allow_restricted_target = 0, allow_restricted_source = 0; ++ int allow_restricted_target = is_init, allow_restricted_source = is_init; + if (EM (TREE_TYPE (source)) || EM (TREE_TYPE (target))) + return; + +@@ -1206,7 +1213,7 @@ + allow_restricted_target = 1; + } + +- if (!mark_lvalue (target, "assignment", 1)) ++ if (!mark_lvalue (target, is_init? "initialization" : "assignment", !is_init)) + return; + + schema_source = undo_schema_dereference (source); +@@ -1250,7 +1257,9 @@ + tree schema_check = check_discriminants (schema_target, schema_source); + if (!EM (schema_check)) + { +- if (!lvalue_or_else (schema_target, "assignment") || !mark_lvalue (schema_target, "assignment", 1)) ++ if (!lvalue_or_else (schema_target, "assignment") ++ || !mark_lvalue (schema_target, is_init ? "initialization" ++ : "assignment", is_init)) + return; + stmt = build (MODIFY_EXPR, TREE_TYPE (schema_target), + schema_target, schema_source); +@@ -1259,12 +1268,19 @@ + stmt = build (COMPOUND_EXPR, TREE_TYPE (stmt), schema_check, stmt); + } + else +- stmt = build_modify_expr (target, NOP_EXPR, source); ++ stmt = build_modify_expr (target, ++ is_init ? INIT_EXPR : NOP_EXPR, source); + } + if (stmt && !EM (stmt)) + expand_expr_stmt (stmt); + } + ++void ++expand_pascal_assignment (tree target, tree source) ++{ ++ expand_pascal_assignment2 (target, source, 0); ++} ++ + tree + assign_set (tree target, tree source) + { +@@ -1273,7 +1289,8 @@ + return error_mark_node; + /* @@ Test new constructor code without this. + Construct a set directly to the set variable. */ +- if (TREE_CODE (source) == CONSTRUCTOR && TREE_CODE (TREE_TYPE (source)) == SET_TYPE) ++ if (TREE_CODE (source) == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (source)) == SET_TYPE) + { + source = construct_set (source, target, 0); + if (!source) +@@ -1310,7 +1327,7 @@ + Each string may be either a fixed or variable length string. + @@@ No sophisticated checks are made for capacity violations. */ + tree +-assign_string (tree target, tree source) ++assign_string2 (tree target, tree source, int is_init) + { + tree length = NULL_TREE; + tree t_type = base_type (TREE_TYPE (target)); +@@ -1334,7 +1351,7 @@ + if (TREE_CODE (t_type) == CHAR_TYPE) + { + if (pedantic || !(co->pascal_dialect & E_O_PASCAL)) +- warning ("assignment of string value to char variable"); ++ gpc_warning ("assignment of string value to char variable"); + expr1 = PASCAL_STRING_VALUE (source); + expr1 = build_modify_expr (target, NOP_EXPR, build_array_ref (expr1, + TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (expr1))))); +@@ -1431,6 +1448,12 @@ + return expr; + } + ++tree ++assign_string (tree target, tree source) ++{ ++ return assign_string2 (target, source, 0); ++} ++ + /* Main program, module initializers/finalizers. */ + + static void +Only in gpc/p: statements.c~ +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test and gpc/p/test +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/typecheck.c gpc/p/typecheck.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/typecheck.c 2006-03-24 03:47:15.000000000 +0100 ++++ gpc/p/typecheck.c 2006-04-09 03:31:39.000000000 +0200 +@@ -28,6 +28,9 @@ + + #include "gpc.h" + ++extern void ++set_string_length (tree value, int wide_flag, int length); ++ + static int compatible_assignment_p (tree, tree); + static int check_simple_pascal_initializer (tree, tree); + static tree decl_constant_value (tree); +@@ -47,7 +50,11 @@ + static void really_start_incremental_init (tree); + static void push_init_level (void); + static tree build_bitfields_type (tree, int); ++#ifndef GCC_4_1 + static tree do_build_constructor_rev (tree, tree); ++#else ++static tree do_build_constructor_rev (tree, VEC(constructor_elt,gc) *); ++#endif + static tree fill_one_record (tree *, tree, tree, tree *, HOST_WIDE_INT, HOST_WIDE_INT *); + static tree fake_packed_array_constructor (void); + static tree pop_init_level (void); +@@ -569,6 +576,7 @@ + && TREE_CONSTANT (DECL_INITIAL (decl)) + /* Check for cases where this is sub-optimal, even though valid. */ + && TREE_CODE (DECL_INITIAL (decl)) != CONSTRUCTOR ++ && TREE_CODE (DECL_INITIAL (decl)) != PASCAL_SET_CONSTRUCTOR + && DECL_MODE (decl) != BLKmode) + return DECL_INITIAL (decl); + return decl; +@@ -645,7 +653,8 @@ + return build (COMPOUND_EXPR, TREE_TYPE (op1), TREE_OPERAND (exp, 0), op1); + } + +- if (!lvalue_p (exp) && !(TREE_CODE (exp) == CONSTRUCTOR && TREE_STATIC (exp)) ++ if (!lvalue_p (exp) ++ && !(TREE_CODE (exp) == CONSTRUCTOR && TREE_STATIC (exp)) + && !((TREE_CODE (exp) == NOP_EXPR + #ifdef EGCS97 + || TREE_CODE (exp) == VIEW_CONVERT_EXPR +@@ -921,7 +930,7 @@ + } + else + { +- if (TREE_CODE (val) == CONSTRUCTOR) ++ if (TREE_CODE (val) == PASCAL_SET_CONSTRUCTOR) + /* Convert the set constructor to the corresponding set type */ + #if 0 + val = construct_set (val, type, 2); +@@ -929,7 +938,7 @@ + /* fjf880.pas */ + { + tree temp = make_new_variable ("set_parameter", partype); +- if (!CONSTRUCTOR_ELTS (val)) ++ if (!SET_CONSTRUCTOR_ELTS (val)) + { + construct_set (val, temp, 0); + val = temp; +@@ -1058,6 +1067,7 @@ + && ((TYPE_READONLY (TREE_TYPE (type)) + && (TREE_CODE (val) == STRING_CST + || TREE_CODE (val) == CONSTRUCTOR ++ || TREE_CODE (val) == PASCAL_SET_CONSTRUCTOR + || !lvalue_p (val) + || ((PASCAL_TYPE_STRING (TREE_TYPE (type)) || TREE_CODE (TREE_TYPE (type)) == VOID_TYPE) + && (TREE_CODE (TREE_TYPE (val)) == CHAR_TYPE +@@ -1076,7 +1086,8 @@ + TYPE_READONLY (TREE_TYPE (type)), + TYPE_VOLATILE (TREE_TYPE (type)))); + } +- else if (TREE_CODE (val) == CONSTRUCTOR && TREE_CODE (TREE_TYPE (val)) == SET_TYPE) ++ else if (TREE_CODE (val) == PASCAL_SET_CONSTRUCTOR ++ && TREE_CODE (TREE_TYPE (val)) == SET_TYPE) + val = construct_set (val, NULL_TREE, 0); + else if (TREE_CODE (val) == FUNCTION_DECL) + val = build_routine_call (val, NULL_TREE); +@@ -1927,8 +1938,11 @@ + if (integer_zerop (capacity)) + TREE_VALUE (init) = empty_string_node; + else if (TREE_CODE (TREE_VALUE (init)) == STRING_CST) ++ { + TREE_VALUE (init) = build_string_constant (TREE_STRING_POINTER (TREE_VALUE (init)), + TREE_INT_CST_LOW (capacity), PASCAL_CST_FRESH (TREE_VALUE (init))); ++ set_string_length (TREE_VALUE (init), 0, TREE_INT_CST_LOW (capacity) + 1); ++ } + else + { + /* We can't get here with char constants! */ +@@ -1938,6 +1952,10 @@ + } + string_length = capacity; + } ++ else if (TREE_CODE (TREE_VALUE (init)) == STRING_CST) ++ { ++ set_string_length (TREE_VALUE (init), 0, TREE_INT_CST_LOW (capacity) + 1); ++ } + else if (TREE_CODE (TREE_TYPE (TREE_VALUE (init))) == CHAR_TYPE) + /* convert char to string: [1: char-value; 2 .. Capacity + 1: Chr (0)] */ + TREE_VALUE (init) = tree_cons (build_tree_list (integer_one_node, NULL_TREE), TREE_VALUE (init), +@@ -2021,17 +2039,51 @@ + return 0; + } + /* Pointers to strings used as CStrings. */ ++#if 1 ++ if (TREE_CODE (TREE_VALUE (init)) == ADDR_EXPR) ++ { ++ tree s = TREE_OPERAND (TREE_VALUE (init), 0); ++ if (TREE_CODE (s) == VAR_DECL && TREE_READONLY (s) ++ && DECL_INITIAL (s) ++ && TREE_CODE (DECL_INITIAL (s)) == CONSTRUCTOR ++ && PASCAL_TYPE_DISCRIMINATED_STRING ( ++ TREE_TYPE (DECL_INITIAL (s)))) ++ { ++ int constant = TREE_CONSTANT (TREE_VALUE (init)); ++#ifndef GCC_4_1 ++ tree t = CONSTRUCTOR_ELTS (DECL_INITIAL (s)); ++ TREE_VALUE (init) = build1 (ADDR_EXPR, cstring_type_node, ++ TREE_VALUE (TREE_CHAIN (TREE_CHAIN (t)))); ++#else ++ VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS ( ++ DECL_INITIAL (s)); ++ TREE_VALUE (init) = build1 (ADDR_EXPR, cstring_type_node, ++ VEC_index (constructor_elt, elts, 2)->value); ++#endif ++ TREE_CONSTANT (TREE_VALUE (init)) = constant; ++ return 0; ++ } ++ } ++#else + if (TREE_CODE (TREE_VALUE (init)) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (TREE_VALUE (init), 0)) == CONSTRUCTOR + && PASCAL_TYPE_DISCRIMINATED_STRING (TREE_TYPE (TREE_OPERAND (TREE_VALUE (init), 0)))) + { + int constant = TREE_CONSTANT (TREE_VALUE (init)); ++#ifndef GCC_4_1 + tree t = CONSTRUCTOR_ELTS (TREE_OPERAND (TREE_VALUE (init), 0)); + TREE_VALUE (init) = build1 (ADDR_EXPR, cstring_type_node, + TREE_VALUE (TREE_CHAIN (TREE_CHAIN (t)))); ++#else ++ VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS ( ++ TREE_OPERAND (TREE_VALUE (init), 0)); ++ TREE_VALUE (init) = build1 (ADDR_EXPR, cstring_type_node, ++ VEC_index (constructor_elt, elts, 2)->value); ++#endif + TREE_CONSTANT (TREE_VALUE (init)) = constant; + return 0; + } ++#endif + } + + /* Procedural variables. (Pointers to routines should cause no problems.) */ +@@ -2049,14 +2101,14 @@ + } + + /* Sets. */ +- if (TREE_CODE (TREE_VALUE (init)) == CONSTRUCTOR ++ if (TREE_CODE (TREE_VALUE (init)) == PASCAL_SET_CONSTRUCTOR + && TREE_CODE (TREE_TYPE (TREE_VALUE (init))) == SET_TYPE + && TREE_CODE (type) == SET_TYPE + && TREE_TYPE (TREE_VALUE (init)) == empty_set_type_node) + { + /* The type of the set constructor was not known to the parser. + Specify it now, but check it first. */ +- tree elements = CONSTRUCTOR_ELTS (TREE_VALUE (init)); ++ tree elements = SET_CONSTRUCTOR_ELTS (TREE_VALUE (init)); + if (elements && !comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_PURPOSE (elements))), + TYPE_MAIN_VARIANT (TREE_TYPE (type)))) + return 1; +@@ -2784,6 +2836,9 @@ + break; + + case CONSTRUCTOR: ++#ifdef GCC_4_1 ++ case PASCAL_SET_CONSTRUCTOR: ++#endif + TREE_ADDRESSABLE (x) = 1; + return 1; + +@@ -2932,10 +2987,13 @@ + so the usual warnings are not appropriate. */ + if (TREE_CODE (ttr) != FUNCTION_TYPE && TREE_CODE (ttl) != FUNCTION_TYPE) + { ++#if 0 + if (!TYPE_READONLY (ttl) && TYPE_READONLY (ttr)) + assignment_error_or_warning ("%s discards `const' from pointer target type", + errtype, fundecl, parmnum, 0); +- else if (!TYPE_VOLATILE (ttl) && TYPE_VOLATILE (ttr)) ++ else ++#endif ++ if (!TYPE_VOLATILE (ttl) && TYPE_VOLATILE (ttr)) + assignment_error_or_warning ("%s discards `volatile' from pointer target type", + errtype, fundecl, parmnum, 0); + else if (TREE_CODE (ttl) == INTEGER_TYPE && TREE_CODE (ttr) == INTEGER_TYPE) +@@ -3090,7 +3148,7 @@ + } + else + { +- warning (msg, opname); ++ gpc_warning (msg, opname); + if (name) + warning_with_decl (fundecl, " routine declaration"); + } +@@ -3516,7 +3574,11 @@ + /* If we are saving up the elements rather than allocating them, + this is the list of elements so far (in reverse order, + most recent first). */ ++#ifndef GCC_4_1 + static tree constructor_elements; ++#else ++static VEC(constructor_elt,gc) *constructor_elements; ++#endif + + /* 1 if so far this constructor's elements are all compile-time constants. */ + static int constructor_constant; +@@ -3550,7 +3612,11 @@ + tree max_index; + tree unfilled_index; + tree unfilled_fields; ++#ifndef GCC_4_1 + tree elements; ++#else ++ VEC(constructor_elt,gc) *elements; ++#endif + int offset; + tree pending_elts; + int depth; +@@ -3762,7 +3828,11 @@ + return NULL_TREE; /* avoid further error messages */ + gcc_assert (TREE_CODE (init) == TREE_LIST); + ++#ifndef GCC_4_1 + constructor_elements = NULL_TREE; ++#else ++ constructor_elements = NULL; ++#endif + constructor_stack = 0; + spelling_base = 0; + spelling_size = 0; +@@ -3881,7 +3951,11 @@ + constructor_constant = 1; + constructor_simple = 1; + constructor_depth = SPELLING_DEPTH (); ++#ifndef GCC_4_1 + constructor_elements = NULL_TREE; ++#else ++ constructor_elements = NULL; ++#endif + constructor_pending_elts = NULL_TREE; + + /* Don't die if an entire brace-pair level is superfluous in the containing level. */ +@@ -3963,10 +4037,19 @@ + return type; + } + ++#ifndef GCC_4_1 + static tree + do_build_constructor_rev (tree type, tree el) ++#else ++static tree ++do_build_constructor_rev (tree type, VEC(constructor_elt,gc) *el) ++#endif + { ++#ifndef GCC_4_1 + tree constructor = build_constructor (type, nreverse (el)); ++#else ++ tree constructor = build_constructor (type, el); ++#endif + if (constructor_constant) + { + TREE_CONSTANT (constructor) = 1; +@@ -3982,7 +4065,11 @@ + static tree + fill_one_record (tree *pel, tree min, tree ptype, tree *fields, HOST_WIDE_INT maxnr, HOST_WIDE_INT *pnr) + { ++#ifndef GCC_4_1 + tree prl = NULL_TREE; ++#else ++ VEC(constructor_elt,gc) * prl = NULL; ++#endif + tree el = *pel; + HOST_WIDE_INT oanr = 0; + int first = 1; +@@ -4003,7 +4090,8 @@ + } + if (anr != oanr) + break; +- prl = tree_cons (fields[nr], TREE_VALUE (el), prl); ++ ++ CONSTRUCTOR_APPEND_ELT (prl, fields[nr], TREE_VALUE (el)); + el = TREE_CHAIN (el); + *pel = el; + } +@@ -4013,11 +4101,35 @@ + static tree + fake_packed_array_constructor (void) + { +- tree rtype = NULL_TREE, rfields = NULL_TREE, rl = NULL_TREE; +- tree type = constructor_type, el = nreverse (constructor_elements); +- tree tsize = pascal_array_type_nelts (type), orig_el = el; ++ tree rtype = NULL_TREE, rfields = NULL_TREE; ++ tree type = constructor_type; ++#ifndef GCC_4_1 ++ tree rl = NULL_TREE; ++ tree el = nreverse (constructor_elements); ++#else ++ VEC(constructor_elt,gc) * rl = NULL; ++ tree el = NULL_TREE; ++#endif ++ tree tsize = pascal_array_type_nelts (type), orig_el; + HOST_WIDE_INT size = TREE_INT_CST_LOW (tsize), asize = size / BITS_PER_UNIT; + int psize = size % BITS_PER_UNIT; ++ ++#ifdef GCC_4_1 ++ { ++ VEC(constructor_elt,gc) *elts = constructor_elements; ++ unsigned HOST_WIDE_INT ix; ++ ix = VEC_length (constructor_elt, elts); ++ while (ix > 0) ++ { ++ ix--; ++ el = tree_cons (VEC_index (constructor_elt, elts, ix)->index, ++ VEC_index (constructor_elt, elts, ix)->value, el); ++ } ++ } ++#endif ++ ++ orig_el = el; ++ + if (size <= 0 || TREE_INT_CST_HIGH (tsize)) + { + error ("array too large"); +@@ -4027,7 +4139,12 @@ + { + tree ptype = build_bitfields_type (TREE_TYPE (type), BITS_PER_UNIT); + tree fields[BITS_PER_UNIT]; +- tree atype, arfield, al = NULL_TREE, t; ++ tree atype, arfield, t; ++#ifndef GCC_4_1 ++ tree al = NULL_TREE; ++#else ++ VEC(constructor_elt,gc) * al = NULL; ++#endif + int i; + for (i = 0, t = TYPE_FIELDS (ptype); i < BITS_PER_UNIT; i++, t = TREE_CHAIN (t)) + fields[i] = t; +@@ -4040,10 +4157,12 @@ + tree br = fill_one_record (&el, TYPE_MIN_VALUE (TYPE_DOMAIN (type)), ptype, fields, asize, &anr); + if (!br) + break; +- al = tree_cons (build_int_2 (anr, 0), br, al); ++ ++ CONSTRUCTOR_APPEND_ELT (al, build_int_2 (anr, 0), br); + } + if (al) +- rl = build_tree_list (arfield, do_build_constructor_rev (atype, al)); ++ CONSTRUCTOR_APPEND_ELT (rl, arfield, ++ do_build_constructor_rev (atype, al)); + } + if (psize) + { +@@ -4063,7 +4182,7 @@ + HOST_WIDE_INT anr; + tree pr1 = fill_one_record (&el, TYPE_MIN_VALUE (TYPE_DOMAIN (type)), ptype1, fields1, asize + 1, &anr); + if (pr1) +- rl = tree_cons (prfield, pr1, rl); ++ CONSTRUCTOR_APPEND_ELT (rl, prfield, pr1); + } + } + gcc_assert (!el); +@@ -4116,8 +4235,12 @@ + { + /* A scalar initializer -- just return the element, after + verifying there is just one. */ ++#ifndef GCC_4_1 + gcc_assert (constructor_elements && !TREE_CHAIN (constructor_elements)); + constructor = TREE_VALUE (constructor_elements); ++#else ++ gcc_unreachable (); ++#endif + } + else + { +@@ -4139,7 +4262,12 @@ + && count_bits (TREE_TYPE (constructor_type), NULL)) + constructor = fake_packed_array_constructor (); + else ++#ifndef GCC_4_1 + constructor = build_constructor (constructor_type, nreverse (constructor_elements)); ++#else ++ constructor = build_constructor (constructor_type, ++ constructor_elements); ++#endif + if (constructor_constant) + { + TREE_CONSTANT (constructor) = 1; +@@ -4379,8 +4507,10 @@ + { + /* Otherwise, output this element to constructor_elements. */ + if (!duplicate) +- constructor_elements = tree_cons (field, +- digest_init (type, value, require_constant_value), constructor_elements); ++ { ++ value = digest_init (type, value, require_constant_value); ++ CONSTRUCTOR_APPEND_ELT (constructor_elements, field, value); ++ } + + /* Advance the variable that indicates sequential elements output. */ + if (TREE_CODE (constructor_type) == ARRAY_TYPE) +Only in gpc/p: typecheck.c~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/types.c gpc/p/types.c +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/types.c 2006-03-24 03:47:15.000000000 +0100 ++++ gpc/p/types.c 2006-04-06 05:35:47.000000000 +0200 +@@ -82,7 +82,7 @@ + if (TYPE_LANG_CODE_TEST (type, PASCAL_LANG_ABSTRACT_OBJECT)) + error ("abstract object type declared as function result type"); + else if (co->warn_object_assignment) +- warning ("object type declared as function result type"); ++ gpc_warning ("object type declared as function result type"); + } + if (!SCALAR_TYPE (TREE_CODE (type))) + chk_dialect ("structured function result types are", NOT_CLASSIC_PASCAL); +@@ -281,7 +281,7 @@ + && TREE_CODE (upper) == INTEGER_CST + && tree_int_cst_lt (upper, lower)) + { +- warning ("set constructor range is empty"); ++ gpc_warning ("set constructor range is empty"); + *pres = TREE_CHAIN (m); + continue; + } +@@ -307,8 +307,8 @@ + /* A single element/range with side-effects should be safe. */ + if (side_effects && TREE_CHAIN (elements)) + { +- warning ("expressions with side-effects in set constructors are"); +- warning (" problematic since evaluation is implementation-dependent"); ++ gpc_warning ("expressions with side-effects in set constructors are"); ++ gpc_warning (" problematic since evaluation is implementation-dependent"); + } + /* Sort and merge constant constructor elements */ + if (is_intcst && n) +@@ -338,9 +338,9 @@ + i = j; + } + } +- t = make_node (CONSTRUCTOR); ++ t = make_node (PASCAL_SET_CONSTRUCTOR); + TREE_TYPE (t) = empty_set_type_node; /* real type not yet known */ +- CONSTRUCTOR_ELTS (t) = elements; ++ SET_CONSTRUCTOR_ELTS (t) = elements; + TREE_CONSTANT (t) = TREE_STATIC (t) = is_constant; + #ifdef GCC_4_0 + TREE_INVARIANT (t) = is_constant; +@@ -355,10 +355,10 @@ + limited_set (tree lo) + { + tree hi = fold (build_pascal_binary_op (PLUS_EXPR, lo, size_int (co->set_limit - 1))); +- warning ("constructing limited integer set `%li .. %li';", ++ gpc_warning ("constructing limited integer set `%li .. %li';", + (long int) TREE_INT_CST_LOW (lo), + (long int) TREE_INT_CST_LOW (hi)); +- warning (" use `--setlimit=NUMBER' to change the size limit at compile time."); ++ gpc_warning (" use `--setlimit=NUMBER' to change the size limit at compile time."); + return hi; + } + +@@ -384,7 +384,7 @@ + tree elements, elem, set_low, set_high, setsize, this_set_type; + tree nelem; + CHK_EM (constructor); +- elements = CONSTRUCTOR_ELTS (constructor); ++ elements = SET_CONSTRUCTOR_ELTS (constructor); + if (!elements && (arg_type == 0 || (arg_type == 1 && !target_or_type))) + { + if (arg_type == 0 && target_or_type) +@@ -511,7 +511,7 @@ + nelem = tree_cons (lo2, hi2, nelem); + } + nelem = nreverse (nelem); +- CONSTRUCTOR_ELTS (constructor) = nelem; ++ SET_CONSTRUCTOR_ELTS (constructor) = nelem; + return constructor; + } + +@@ -1485,6 +1485,7 @@ + are handled differently above, anyway.) */ + TYPE_PRECISION (type) = ((TREE_INT_CST_LOW (bits) + BITS_PER_UNIT - 1) + / BITS_PER_UNIT) * BITS_PER_UNIT; ++ TYPE_ALIGN (type) = 0; + layout_type (type); + } + } +@@ -1800,7 +1801,7 @@ + if (TREE_CODE (l) != INTEGER_CST || TREE_CODE (h) != INTEGER_CST || const_lt (h, l)) + { + if (co->warn_dynamic_arrays) +- warning ("dynamic array"); ++ gpc_warning ("dynamic array"); + if (current_function_decl) /* @@ otherwise do it in module constructor */ + expand_expr_stmt (build (COND_EXPR, pascal_integer_type_node, + build_implicit_pascal_binary_op (LT_EXPR, hi, lo), +@@ -1819,7 +1820,7 @@ + enum tree_code code = TREE_CODE (expr); + if (code == VAR_DECL && !PASCAL_INITIALIZED (expr) && !PASCAL_VALUE_ASSIGNED (expr) + && !PASCAL_TREE_DISCRIMINANT (expr) && DECL_CONTEXT (expr) == current_function_decl) +- warning ("`%s' might be used uninitialized in type definition", IDENTIFIER_NAME (DECL_NAME (expr))); ++ gpc_warning ("`%s' might be used uninitialized in type definition", IDENTIFIER_NAME (DECL_NAME (expr))); + else if (IS_EXPR_OR_REF_CODE_CLASS (TREE_CODE_CLASS (code))) + { + int i, l = NUMBER_OF_OPERANDS (code); +@@ -2658,6 +2659,7 @@ + } + else if (TREE_CODE (arg1) == INTEGER_CST && TREE_CODE (arg0) == CONSTRUCTOR) + { ++#ifndef GCC_4_1 + tree elts = CONSTRUCTOR_ELTS (arg0); + arg1 = range_check (TYPE_DOMAIN (TREE_TYPE (arg0)), arg1); + CHK_EM (arg1); +@@ -2667,6 +2669,17 @@ + return TREE_VALUE (elts); + elts = TREE_CHAIN (elts); + } ++#else ++ VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS (arg0); ++ tree index, value; ++ unsigned HOST_WIDE_INT ix; ++ arg1 = range_check (TYPE_DOMAIN (TREE_TYPE (arg0)), arg1); ++ FOR_EACH_CONSTRUCTOR_ELT (elts, ix, index, value) ++ { ++ if (tree_int_cst_equal (arg1, index)) ++ return value; ++ } ++#endif + } + return t; + } +@@ -2953,7 +2966,7 @@ + int need_new_variant; + + if (bindable && !PASCAL_TYPE_FILE (type)) +- warning ("GPC supports `bindable' only for files"); ++ gpc_warning ("GPC supports `bindable' only for files"); + + CHK_EM (type); + +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/units and gpc/p/units +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils and gpc/p/utils +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/CVS and gpc/p/test/CVS +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/README gpc/p/test/README +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/README 2006-02-18 14:37:53.000000000 +0100 ++++ gpc/p/test/README 2006-04-04 19:39:50.000000000 +0200 +@@ -4,7 +4,7 @@ + Note: This file is the `README' file of the `test' directory in the GPC + source distribution, _and_ the file `BUGS' in GPC binary distributions. + +-GPC 2.1, 20060215 ++GPC 2.1, 20060325 + + 1 The GPC Test Suite + ******************** +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/c_gpc.pas gpc/p/test/c_gpc.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/c_gpc.pas 2006-02-18 14:23:00.000000000 +0100 ++++ gpc/p/test/c_gpc.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -33,14 +33,14 @@ + { External declarations we use from the C code } + + var +- CVariable: Integer; external name 'c_variable'; ++ CVariable: CInteger; external name 'c_variable'; + + procedure CRoutine; external name 'c_routine'; + + { Pascal code } + + var +- PascalProgramVariable: Integer = 17; attribute (name = 'pascal_program_variable'); ++ PascalProgramVariable: CInteger = 17; attribute (name = 'pascal_program_variable'); + + procedure PascalProgramRoutine; attribute (name = 'pascal_program_routine'); + begin +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/chief40.pas gpc/p/test/chief40.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/chief40.pas 2002-09-23 09:39:12.000000000 +0200 ++++ gpc/p/test/chief40.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -4,12 +4,15 @@ + a : LongInt; + b : Byte; + ++const ++ MaxCInt = High (CInteger); ++ + begin +- a := 2 * MaxInt; ++ a := 2 * MaxCInt; + b := 10; + a := 2 * a + b; +- if (a = 4 * MaxInt + 10) and (a > MaxInt) then ++ if (a = 4 * MaxCInt + 10) and (a > MaxCInt) then + WriteLn ('OK') + else +- WriteLn ('failed ', a, ' ', 4 * MaxInt + 10, ' ', a > MaxInt) ++ WriteLn ('failed ', a, ' ', 4 * MaxCInt + 10, ' ', a > MaxCInt) + end. +Only in gpc/p/test: fjf1102.pas +Only in gpc/p/test: fjf1103.pas +Only in gpc/p/test: fjf1104.pas +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf186.pas gpc/p/test/fjf186.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf186.pas 2005-01-19 15:23:19.000000000 +0100 ++++ gpc/p/test/fjf186.pas 2006-04-06 06:24:30.000000000 +0200 +@@ -2,7 +2,7 @@ + var + f:text; + s:string(100); +- n:string(20)=ParamStr (1); { Idea how to solve this: let init_any() } ++ n:string(520)=ParamStr (1); { Idea how to solve this: let init_any() } + begin { generate code to do the initialization } + if n = '' then + begin +Only in gpc/p/test: fjf186.pas~ +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf327.pas gpc/p/test/fjf327.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf327.pas 2005-02-23 07:09:05.000000000 +0100 ++++ gpc/p/test/fjf327.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -1,10 +1,10 @@ + program fjf327; + + var +- a : Cardinal = High (Cardinal) - 2; ++ a : CCardinal = High (CCardinal) - 2; + c : LongInt; + + begin + c := - a; +- if c = 2 - LongInt (High (Cardinal)) then writeln ('OK') else writeln ('failed ', c) ++ if c = 2 - LongInt (High (CCardinal)) then writeln ('OK') else writeln ('failed ', c) + end. +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf526a.pas gpc/p/test/fjf526a.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf526a.pas 2005-01-05 01:56:39.000000000 +0100 ++++ gpc/p/test/fjf526a.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -5,7 +5,7 @@ + a, b: LongInt; + + begin +- b := 1 shl BitSizeOf (Integer) + 1; ++ b := 1 shl BitSizeOf (CInteger) + 1; + Rewrite (f, 1); + BlockWrite (f, a, SizeOf (a)); + Reset (f, 1); +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf526b.pas gpc/p/test/fjf526b.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/fjf526b.pas 2005-01-05 01:56:47.000000000 +0100 ++++ gpc/p/test/fjf526b.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -5,7 +5,7 @@ + a, b: LongInt; + + begin +- b := 1 shl BitSizeOf (Integer) + 1; ++ b := 1 shl BitSizeOf (CInteger) + 1; + Rewrite (f, 1); + BlockWrite (f, a, b and $ffffffff); + WriteLn ('OK') +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/gpc_c_p.pas gpc/p/test/gpc_c_p.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/gpc_c_p.pas 2006-02-18 14:23:04.000000000 +0100 ++++ gpc/p/test/gpc_c_p.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -42,14 +42,14 @@ + { External declarations we use from the C code } + + var +- CVariable: Integer; external name 'c_variable'; ++ CVariable: CInteger; external name 'c_variable'; + + procedure CRoutine; external name 'c_routine'; + + { Pascal code } + + var +- PascalProgramVariable: Integer = 17; attribute (name = 'pascal_program_variable'); ++ PascalProgramVariable: CInteger = 17; attribute (name = 'pascal_program_variable'); + + procedure PascalProgramRoutine; attribute (name = 'pascal_program_routine'); + begin +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/gpc_c_u.pas gpc/p/test/gpc_c_u.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/gpc_c_u.pas 2006-02-18 14:23:04.000000000 +0100 ++++ gpc/p/test/gpc_c_u.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -30,7 +30,7 @@ + interface + + var +- PascalUnitVariable: Integer = 42; attribute (name = 'pascal_unit_variable'); ++ PascalUnitVariable: CInteger = 42; attribute (name = 'pascal_unit_variable'); + + procedure PascalUnitRoutine; attribute (name = 'pascal_unit_routine'); + +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/shl.pas gpc/p/test/shl.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/shl.pas 2002-09-23 09:39:12.000000000 +0200 ++++ gpc/p/test/shl.pas 2006-04-06 05:35:48.000000000 +0200 +@@ -1,14 +1,14 @@ + program ShlTest; + + var +- a: Integer = 1; ++ a: CInteger = 1; + i: LongestInt; + + begin + +- i := 1 shl (BitSizeOf (Integer) + 3); ++ i := 1 shl (BitSizeOf (CInteger) + 3); + if i <= 0 then begin WriteLn ('failed a1'); Halt end; +- if i shr (BitSizeOf (Integer) + 3) <> 1 then begin WriteLn ('failed a2'); Halt end; ++ if i shr (BitSizeOf (CInteger) + 3) <> 1 then begin WriteLn ('failed a2'); Halt end; + + i := 1 shl (BitSizeOf (MedInt) - 2); + if i <= 0 then begin WriteLn ('failed a3'); Halt end; +@@ -18,9 +18,9 @@ + if i <= 0 then begin WriteLn ('failed a5'); Halt end; + if i <> $10000000000 then begin WriteLn ('failed a6'); Halt end; + +- i := a shl (BitSizeOf (Integer) + 3); ++ i := a shl (BitSizeOf (CInteger) + 3); + if i <= 0 then begin WriteLn ('failed b1'); Halt end; +- if i shr (BitSizeOf (Integer) + 3) <> 1 then begin WriteLn ('failed b2'); Halt end; ++ if i shr (BitSizeOf (CInteger) + 3) <> 1 then begin WriteLn ('failed b2'); Halt end; + + i := a shl (BitSizeOf (MedInt) - 2); + if i <= 0 then begin WriteLn ('failed b3'); Halt end; +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/test/todo and gpc/p/test/todo +Only in /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/: .#gpidump.pas.1.10 +Only in /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/: .#gpidump.pas.1.8 +Only in /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/: .#mk-t-inc.1.3 +Common subdirectories: /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/CVS and gpc/p/utils/CVS +diff -u /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/gpidump.pas gpc/p/utils/gpidump.pas +--- /pom/kompi/gcc/tst45/pom/gpc-20060325/p/utils/gpidump.pas 2006-03-24 03:47:16.000000000 +0100 ++++ gpc/p/utils/gpidump.pas 2006-04-10 03:51:11.000000000 +0200 +@@ -902,6 +902,9 @@ + {$ifdef EGCS97} + Ref ('size_unit'); + {$endif} ++{$ifdef GCC_4_1} ++ if TreeCode <> FUNCTION_DECL then ++{$endif} + Write (', align ', Number (GetNumber (Pos1), 0)) + end; + 'c': Ref ('type'); +@@ -1166,6 +1169,18 @@ + OPERATOR_DECL: ; + PLACEHOLDER_EXPR: Ref ('type'); + NON_LVALUE_EXPR: if IsPackedAccess then Ref ('packed_info'); ++{$ifdef GCC_4_1} ++ CONSTRUCTOR: begin ++ var j, k : GPIInt; ++ Ref ('type'); ++ k := GetNumber (Pos1); ++ for j := 1 to k do begin ++ Ref('index'); ++ Ref('value') ++ end; ++ end; ++ ++{$endif} + else if not ClassDone + {$ifndef GCC_4_0} or (TreeCode = RTL_EXPR) {$endif} + then Error ('unknown tree code') +@@ -1232,7 +1247,7 @@ + GPI_CHUNK_VERSION: begin + WriteLn; + DumpChars (' ', 0, ChunkLength - 1); +- if (ChunkLength = 0) or not IsSuffix (GCC_VERSION, Buf^.Chars[0 .. ChunkLength - 1]) then ++ if (ChunkLength = 0) { or not IsSuffix (GCC_VERSION, Buf^.Chars[0 .. ChunkLength - 1]) } then + begin + WriteLn; + Error ('backend version in GPI file does not match (rebuild GPIDump for your compiler version)') +Only in gpc/p/utils/: gpidump.pas~ --- gcj-4.2-4.2-20070707.orig/debian/patches/mips-libjava-interp.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/mips-libjava-interp.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Enable the libjava interpreter on mips/mipsel. + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/configure.host~ 2006-04-22 01:59:20.293222320 +0200 ++++ libjava/configure.host 2006-04-22 02:02:17.173332456 +0200 +@@ -90,6 +90,9 @@ + enable_java_net_default=no + enable_getenv_properties_default=no + ;; ++ mips*-linux*) ++ libgcj_interpreter=yes ++ ;; + i686-*|i586-*|i486-*|i386-*) + sysdeps_dir=i386 + # With -fomit-frame-pointer -maccumulate-outgoing-args (implied), --- gcj-4.2-4.2-20070707.orig/debian/patches/pr32522.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/pr32522.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# DP: Proposed patch for PR target/32522. + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/alpha/alpha.c~ 2007-06-11 20:16:33.000000000 +0200 ++++ gcc/config/alpha/alpha.c 2007-06-30 12:12:08.000000000 +0200 +@@ -6111,8 +6111,8 @@ + valist, offset_field, NULL_TREE); + + t = make_tree (ptr_type_node, virtual_incoming_args_rtx); +- t = build2 (PLUS_EXPR, ptr_type_node, t, +- build_int_cst (NULL_TREE, offset)); ++ t = build2 (POINTER_PLUS_EXPR, ptr_type_node, t, ++ size_int (offset)); + t = build2 (GIMPLE_MODIFY_STMT, TREE_TYPE (base_field), base_field, t); + TREE_SIDE_EFFECTS (t) = 1; + expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); +@@ -6172,8 +6172,8 @@ + } + + /* Build the final address and force that value into a temporary. */ +- addr = build2 (PLUS_EXPR, ptr_type, fold_convert (ptr_type, base), +- fold_convert (ptr_type, addend)); ++ addr = build2 (POINTER_PLUS_EXPR, ptr_type, fold_convert (ptr_type, base), ++ fold_convert (sizetype, addend)); + internal_post = NULL; + gimplify_expr (&addr, pre_p, &internal_post, is_gimple_val, fb_rvalue); + append_to_statement_list (internal_post, pre_p); --- gcj-4.2-4.2-20070707.orig/debian/patches/netbsd-archs-gcc.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/netbsd-archs-gcc.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Arch-specific changes to gcc.config + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc/config.gcc src/gcc/config.gcc +--- gcc/config.gcc 2003-03-02 07:39:03.000000000 +0000 ++++ gcc/config.gcc 2003-04-24 06:02:55.000000000 +0000 +@@ -1127,6 +1127,9 @@ + x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" + ;; ++i[34567]86-*-netbsdelf*-gnu*) ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd-gnu.h netbsd-elf-gnu.h i386/netbsd-elf.h" ++ ;; + i[34567]86-*-netbsdelf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" + ;; --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-gij.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-gij.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: Enable gij interpreter on arm + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src/libjava/configure.host.old 2005-12-31 16:06:00.900551776 +0000 ++++ src/libjava/configure.host 2005-12-31 16:06:25.879754360 +0000 +@@ -98,6 +98,9 @@ + enable_hash_synchronization_default=yes + slow_pthread_self=yes + ;; ++ arm*-*) ++ libgcj_interpreter=yes ++ ;; + x86_64-*) + sysdeps_dir=x86-64 + libgcj_flags="${libgcj_flags} -ffloat-store -fno-omit-frame-pointer" --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-dwarf2.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-dwarf2.dpatch @@ -0,0 +1,144 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Recognize stack adjustments also in the src of an instruction. + +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 + +--- + + gcc/dwarf2out.c | 83 +++++++++++++++++++++++++++++++------------------------- + 1 file changed, 47 insertions(+), 36 deletions(-) + +Index: gcc-4.1/gcc/dwarf2out.c +=================================================================== +--- gcc-4.1.orig/gcc/dwarf2out.c ++++ gcc-4.1/gcc/dwarf2out.c +@@ -1045,6 +1045,7 @@ stack_adjust_offset (rtx pattern) + rtx src = SET_SRC (pattern); + rtx dest = SET_DEST (pattern); + HOST_WIDE_INT offset = 0; ++ enum machine_mode mode; + enum rtx_code code; + + if (dest == stack_pointer_rtx) +@@ -1059,52 +1060,62 @@ stack_adjust_offset (rtx pattern) + offset = INTVAL (XEXP (src, 1)); + if (code == PLUS) + offset = -offset; ++ return offset; + } +- else if (MEM_P (dest)) ++ if (MEM_P (dest) ++ && GET_RTX_CLASS (GET_CODE (XEXP (dest, 0)))) + { + /* (set (mem (pre_dec (reg sp))) (foo)) */ ++ mode = GET_MODE (dest); + src = XEXP (dest, 0); +- code = GET_CODE (src); ++ } ++ else if (MEM_P (src) ++ && GET_RTX_CLASS (GET_CODE (XEXP (src, 0)))) ++ { ++ /* (set (foo) (mem (post_inc (reg sp)))) */ ++ mode = GET_MODE (src); ++ src = XEXP (src, 0); ++ } ++ else ++ return 0; + +- switch (code) ++ code = GET_CODE (src); ++ switch (code) ++ { ++ case PRE_MODIFY: ++ case POST_MODIFY: ++ if (XEXP (src, 0) == stack_pointer_rtx) + { +- case PRE_MODIFY: +- case POST_MODIFY: +- if (XEXP (src, 0) == stack_pointer_rtx) +- { +- rtx val = XEXP (XEXP (src, 1), 1); +- /* We handle only adjustments by constant amount. */ +- gcc_assert (GET_CODE (XEXP (src, 1)) == PLUS +- && GET_CODE (val) == CONST_INT); +- offset = -INTVAL (val); +- break; +- } +- return 0; +- +- case PRE_DEC: +- case POST_DEC: +- if (XEXP (src, 0) == stack_pointer_rtx) +- { +- offset = GET_MODE_SIZE (GET_MODE (dest)); +- break; +- } +- return 0; ++ rtx val = XEXP (XEXP (src, 1), 1); ++ /* We handle only adjustments by constant amount. */ ++ gcc_assert (GET_CODE (XEXP (src, 1)) == PLUS ++ && GET_CODE (val) == CONST_INT); ++ offset = -INTVAL (val); ++ break; ++ } ++ return 0; + +- case PRE_INC: +- case POST_INC: +- if (XEXP (src, 0) == stack_pointer_rtx) +- { +- offset = -GET_MODE_SIZE (GET_MODE (dest)); +- break; +- } +- return 0; ++ case PRE_DEC: ++ case POST_DEC: ++ if (XEXP (src, 0) == stack_pointer_rtx) ++ { ++ offset = GET_MODE_SIZE (mode); ++ break; ++ } ++ return 0; + +- default: +- return 0; ++ case PRE_INC: ++ case POST_INC: ++ if (XEXP (src, 0) == stack_pointer_rtx) ++ { ++ offset = -GET_MODE_SIZE (mode); ++ break; + } ++ return 0; ++ ++ default: ++ return 0; + } +- else +- return 0; + + return offset; + } --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-acats.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-acats.dpatch @@ -0,0 +1,78 @@ +#! /bin/sh -e + +# 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, build/libgnatvsn and build/libgnatprj. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/testsuite/ada/acats/run_acats~ ++++ gcc/testsuite/ada/acats/run_acats 2006-04-22 08:57:50.933824704 +0200 +@@ -11,23 +11,42 @@ + host_gnatmake=`type gnatmake | awk '{print $3}'` + ROOT=`${PWDCMD-pwd}` + BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}` +- +-PATH=$BASE:$ROOT:$PATH +-ADA_INCLUDE_PATH=$BASE/ada/rts ++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}` ++LIBGNATVSN=`cd $BASE/../libgnatvsn; ${PWDCMD-pwd}` ++LIBGNATPRJ=`cd $BASE/../libgnatprj; ${PWDCMD-pwd}` ++ ++PATH=$GNATTOOLS:$BASE:$ROOT:$PATH ++ADA_INCLUDE_DIR=$BASE/ada/rts ++ADA_INCLUDE_PATH=$ADA_INCLUDE_DIR:$LIBGNATVSN:$LIBGNATPRJ + LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH + ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH + +-if [ ! -d $ADA_INCLUDE_PATH ]; then ++if [ ! -d $ADA_INCLUDE_DIR ]; then + echo gnatlib missing, exiting. + exit 1 + fi + +-if [ ! -f $BASE/gnatchop ]; then ++if [ ! -d $GNATTOOLS ]; then ++ echo gnattools missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -d $LIBGNATVSN ]; then ++ echo libgnatvsn missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -d $LIBGNATPRJ ]; then ++ echo libgnatprj missing, exiting. ++ exit 1 ++fi ++ ++if [ ! -f $GNATTOOLS/gnatchop ]; then + echo gnattools missing, exiting. + exit 1 + fi + +-if [ ! -f $BASE/gnatmake ]; then ++if [ ! -f $GNATTOOLS/gnatmake ]; then + echo gnattools missing, exiting. + exit 1 + fi --- gcj-4.2-4.2-20070707.orig/debian/patches/configure-updates-trunk.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/configure-updates-trunk.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e + +# DP: libgcc and libdecnumber configure updates + +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 -p0 < $0 + cd ${dir}libecnumber && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libecnumber/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +libdecnumber/ + +2007-03-26 Martin Michlmayr + H.J. Lu + + * configure.ac: Add AC_CANONICAL_TARGET. + * configure: Regenerated. + +--- libdecnumber/configure.ac.can 2007-03-24 12:05:55.000000000 -0700 ++++ libdecnumber/configure.ac 2007-03-26 09:03:48.000000000 -0700 +@@ -71,6 +71,8 @@ else + fi + AC_SUBST(MAINT) + ++AC_CANONICAL_TARGET ++ + # Default decimal format + # If you change the defaults here, be sure to change them in the GCC directory also + AC_MSG_CHECKING([for decimal floating point]) --- gcj-4.2-4.2-20070707.orig/debian/patches/native-ecj.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/native-ecj.dpatch @@ -0,0 +1,124 @@ +#! /bin/sh -e + +# DP: Build ecj as a native binary + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/Makefile.am.old 2007-05-06 15:33:47.000000000 +0200 ++++ libjava/Makefile.am 2007-05-07 13:05:56.000000000 +0200 +@@ -669,7 +669,7 @@ + ## Hopefully the user has compiled it into his system .db. + ## However, even if not it will run reasonably quickly. + +-ECJX_BASE_FLAGS = -findirect-dispatch \ ++ECJX_BASE_FLAGS = \ + --main=org.eclipse.jdt.internal.compiler.batch.GCCMain + + if NATIVE +@@ -678,7 +678,7 @@ + + if ENABLE_SHARED + ## Use ecj.jar at runtime. +-ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR) ++ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + else !ENABLE_SHARED + ## Use ecj.jar at compile time. + ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) +--- libjava/Makefile.in.old 2007-05-16 08:33:34.000000000 +0200 ++++ libjava/Makefile.in 2007-05-16 08:40:46.000000000 +0200 +@@ -580,7 +580,7 @@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ +-ECJ_BUILD_JAR = @ECJ_BUILD_JAR@ ++ECJ_BUILD_JAR = $(top_srcdir)/../ecj-standalone.jar + ECJ_JAR = @ECJ_JAR@ + EGREP = @EGREP@ + ENABLE_SHARED_FALSE = @ENABLE_SHARED_FALSE@ +@@ -7861,13 +7861,13 @@ + gij_LDADD = -L$(here)/.libs libgij.la + gij_DEPENDENCIES = libgij.la + ecjx_SOURCES = +-ECJX_BASE_FLAGS = -findirect-dispatch \ ++ECJX_BASE_FLAGS = \ + --main=org.eclipse.jdt.internal.compiler.batch.GCCMain + + @NATIVE_FALSE@ecjx_LINK = $(GCJ_FOR_ECJX_LINK) + @NATIVE_TRUE@ecjx_LINK = $(GCJLINK) + @ENABLE_SHARED_FALSE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH) +-@ENABLE_SHARED_TRUE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR) ++@ENABLE_SHARED_TRUE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + @NATIVE_FALSE@ecjx_LDADD = + @NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la -rpath $(dbexecdir) +--- libjava/testsuite/Makefile.am~ 2007-05-06 10:44:26.000000000 +0200 ++++ libjava/testsuite/Makefile.am 2007-05-09 09:36:45.000000000 +0200 +@@ -61,11 +61,11 @@ + if test -n "$$testdep"; then \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ + $(top_builddir)/libgcj-$(gcc_short_version).jar::$$testtmpdir \ +- -d $$testtmpdir $(srcdir)/$$testdep || exit; \ ++ -d $$testtmpdir $(srcdir)/$$testdep || echo "ERROR building $$testdep"; \ + fi; \ + $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath \ + $(top_builddir)/libgcj-$(gcc_short_version).jar:$$testtmpdir \ +- -d $$testtmpdir $(srcdir)/$$test || exit; \ ++ -d $$testtmpdir $(srcdir)/$$test || echo "ERROR building $$test"; \ + case "$$test" in \ + libjava.loader/dummy.java) \ + cp $$testtmpdir/dummy.class $$testjar;; \ +@@ -77,7 +77,7 @@ + if test -n "$$genheader"; then \ + $(MYGCJH) $$genheader $$testtmpdir/*.class \ + -bootclasspath $(top_builddir)/libgcj-$(gcc_short_version).jar \ +- -d $$testtmpdir/ || exit; \ ++ -d $$testtmpdir/ || echo "ERROR generating header files"; \ + mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + fi; \ + rm -rf $$testtmpdir; \ +--- libjava/testsuite/Makefile.in~ 2007-05-06 10:44:33.000000000 +0200 ++++ libjava/testsuite/Makefile.in 2007-05-09 09:38:38.000000000 +0200 +@@ -559,11 +559,11 @@ + @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_short_version).jar::$$testtmpdir \ +-@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$testdep || exit; \ ++@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$testdep || echo "ERROR building $$testdep"; \ + @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_short_version).jar:$$testtmpdir \ +-@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$test || exit; \ ++@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir $(srcdir)/$$test || echo "ERROR building $$test"; \ + @JAVA_MAINTAINER_MODE_TRUE@ case "$$test" in \ + @JAVA_MAINTAINER_MODE_TRUE@ libjava.loader/dummy.java) \ + @JAVA_MAINTAINER_MODE_TRUE@ cp $$testtmpdir/dummy.class $$testjar;; \ +@@ -575,7 +575,7 @@ + @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_short_version).jar \ +-@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir/ || exit; \ ++@JAVA_MAINTAINER_MODE_TRUE@ -d $$testtmpdir/ || echo "ERROR generating header files"; \ + @JAVA_MAINTAINER_MODE_TRUE@ mv $$testtmpdir/*.h $(srcdir)/`dirname $$test`/ 2>/dev/null; \ + @JAVA_MAINTAINER_MODE_TRUE@ fi; \ + @JAVA_MAINTAINER_MODE_TRUE@ rm -rf $$testtmpdir; \ --- gcj-4.2-4.2-20070707.orig/debian/patches/gpc-gcc-4.1.diff +++ gcj-4.2-4.2-20070707/debian/patches/gpc-gcc-4.1.diff @@ -0,0 +1,1487 @@ +diff -ru ../gcc-4.1.0.orig/gcc/config/i386/i386.c gcc-4.1.0/gcc/config/i386/i386.c +--- ../gcc-4.1.0.orig/gcc/config/i386/i386.c 2006-01-11 14:32:44.000000000 +0100 ++++ gcc-4.1.0/gcc/config/i386/i386.c 2006-04-04 21:31:03.000000000 +0200 +@@ -2733,6 +2733,30 @@ + } + break; + ++ case SET_TYPE: ++ if (bytes <= 4) ++ { ++ classes[0] = X86_64_INTEGERSI_CLASS; ++ return 1; ++ } ++ else if (bytes <= 8) ++ { ++ classes[0] = X86_64_INTEGER_CLASS; ++ return 1; ++ } ++ else if (bytes <= 12) ++ { ++ classes[0] = X86_64_INTEGER_CLASS; ++ classes[1] = X86_64_INTEGERSI_CLASS; ++ return 2; ++ } ++ else ++ { ++ classes[0] = X86_64_INTEGER_CLASS; ++ classes[1] = X86_64_INTEGER_CLASS; ++ return 2; ++ } ++ + default: + gcc_unreachable (); + } +Only in gcc-4.1.0/gcc/config/i386: i386.c.orig +Only in gcc-4.1.0/gcc/config/i386: i386.c~ +diff -ru ../gcc-4.1.0.orig/gcc/config/ia64/ia64.c gcc-4.1.0/gcc/config/ia64/ia64.c +--- ../gcc-4.1.0.orig/gcc/config/ia64/ia64.c 2006-02-04 23:13:20.000000000 +0100 ++++ gcc-4.1.0/gcc/config/ia64/ia64.c 2006-04-05 02:08:45.000000000 +0200 +@@ -3819,6 +3819,7 @@ + case BOOLEAN_TYPE: case CHAR_TYPE: case POINTER_TYPE: + case OFFSET_TYPE: case REFERENCE_TYPE: case METHOD_TYPE: + case LANG_TYPE: case FUNCTION_TYPE: ++ case SET_TYPE: + return VOIDmode; + + /* Fortran complex types are supposed to be HFAs, so we need to handle +Only in gcc-4.1.0/gcc/config/ia64: ia64.c.orig +Only in gcc-4.1.0/gcc/config/ia64: ia64.c.rej +Only in gcc-4.1.0/gcc/config/ia64: ia64.c~ +diff -ru ../gcc-4.1.0.orig/gcc/config/sparc/sparc.c gcc-4.1.0/gcc/config/sparc/sparc.c +--- ../gcc-4.1.0.orig/gcc/config/sparc/sparc.c 2006-02-11 09:38:51.000000000 +0100 ++++ gcc-4.1.0/gcc/config/sparc/sparc.c 2006-04-05 02:10:26.000000000 +0200 +@@ -7019,6 +7019,7 @@ + case VECTOR_TYPE: + case CHAR_TYPE: /* GNU Pascal CHAR type. Not used in C. */ + case BOOLEAN_TYPE: /* GNU Fortran BOOLEAN type. */ ++ case SET_TYPE: /* GNU Pascal SET type. */ + case LANG_TYPE: /* ? */ + return qualifiers; + +Only in gcc-4.1.0/gcc/config/sparc: sparc.c.orig +Only in gcc-4.1.0/gcc/config/sparc: sparc.c.rej +Only in gcc-4.1.0/gcc/config/sparc: sparc.c~ +diff -ru ../gcc-4.1.0.orig/gcc/dbxout.c gcc-4.1.0/gcc/dbxout.c +--- ../gcc-4.1.0.orig/gcc/dbxout.c 2005-10-06 02:47:21.000000000 +0200 ++++ gcc-4.1.0/gcc/dbxout.c 2006-04-08 02:50:05.000000000 +0200 +@@ -1916,7 +1916,7 @@ + { + stabstr_S ("@s"); + stabstr_D (BITS_PER_UNIT * int_size_in_bytes (type)); +- stabstr_S (";-20;"); ++ stabstr_S (";-20"); + } + else + { +@@ -1933,7 +1933,7 @@ + { + stabstr_S ("@s"); + stabstr_D (BITS_PER_UNIT * int_size_in_bytes (type)); +- stabstr_S (";-16;"); ++ stabstr_S (";-16"); + } + else /* Define as enumeral type (False, True) */ + stabstr_S ("eFalse:0,True:1,;"); +@@ -1972,6 +1972,22 @@ + } + break; + ++ case SET_TYPE: ++ if (use_gnu_debug_info_extensions) ++ { ++ stabstr_S ("@s"); ++ stabstr_D (BITS_PER_UNIT * int_size_in_bytes (type)); ++ stabstr_C (';'); ++ ++ /* Check if a bitstring type, which in Chill is ++ different from a [power]set. */ ++ if (TYPE_STRING_FLAG (type)) ++ stabstr_S ("@S;"); ++ } ++ stabstr_C ('S'); ++ dbxout_type (TYPE_DOMAIN (type), 0); ++ break; ++ + case ARRAY_TYPE: + /* Make arrays of packed bits look like bitstrings for chill. */ + if (TYPE_PACKED (type) && use_gnu_debug_info_extensions) +@@ -2435,7 +2451,7 @@ + we see following the TREE_TYPE chain. */ + + t = type; +- while (POINTER_TYPE_P (t)) ++ while (POINTER_TYPE_P (t) && !TYPE_NAME (t)) + t = TREE_TYPE (t); + + /* RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE, and ENUMERAL_TYPE +Only in gcc-4.1.0/gcc: dbxout.c~ +diff -ru ../gcc-4.1.0.orig/gcc/dwarf2out.c gcc-4.1.0/gcc/dwarf2out.c +--- ../gcc-4.1.0.orig/gcc/dwarf2out.c 2006-02-04 23:13:20.000000000 +0100 ++++ gcc-4.1.0/gcc/dwarf2out.c 2006-04-04 21:16:16.000000000 +0200 +@@ -8218,6 +8218,7 @@ + case OFFSET_TYPE: + case LANG_TYPE: + case VECTOR_TYPE: ++ case SET_TYPE: + return 0; + + default: +@@ -9014,9 +9015,12 @@ + { + dw_loc_descr_ref ret, ret1; + int have_address = 0; +- int unsignedp = TYPE_UNSIGNED (TREE_TYPE (loc)); ++ int unsignedp /* = TYPE_UNSIGNED (TREE_TYPE (loc)) */; + enum dwarf_location_atom op; + ++ gcc_assert (TREE_TYPE (loc)); ++ unsignedp = TYPE_UNSIGNED (TREE_TYPE (loc)); ++ + /* ??? Most of the time we do not take proper care for sign/zero + extending the values properly. Hopefully this won't be a real + problem... */ +@@ -9390,6 +9394,19 @@ + } + break; + ++#ifdef GPC ++ case REAL_CST: ++ case FLOAT_EXPR: ++ case RDIV_EXPR: ++ case STRING_CST: ++ /* In Pascal it's possible for array bounds to contain floating point ++ expressions (e.g., p/test/emil11c.pas). I don't know if it's ++ possible to represent them in dwarf2, but it doesn't seem terribly ++ important since this occurs quite rarely. -- Frank */ ++ return 0; ++#endif ++ ++ + case FIX_TRUNC_EXPR: + case FIX_CEIL_EXPR: + case FIX_FLOOR_EXPR: +@@ -11142,6 +11159,16 @@ + add_type_attribute (array_die, element_type, 0, 0, context_die); + } + ++static void ++gen_set_type_die (tree type, dw_die_ref context_die) ++{ ++ dw_die_ref type_die ++ = new_die (DW_TAG_set_type, scope_die_for (type, context_die), type); ++ ++ equate_type_number_to_die (type, type_die); ++ add_type_attribute (type_die, TREE_TYPE (type), 0, 0, context_die); ++} ++ + #if 0 + static void + gen_entry_point_die (tree decl, dw_die_ref context_die) +@@ -12499,6 +12526,11 @@ + gen_ptr_to_mbr_type_die (type, context_die); + break; + ++ case SET_TYPE: ++ gen_type_die (TYPE_DOMAIN (type), context_die); ++ gen_set_type_die (type, context_die); ++ break; ++ + case FUNCTION_TYPE: + /* Force out return type (in case it wasn't forced out already). */ + gen_type_die (TREE_TYPE (type), context_die); +diff -ru ../gcc-4.1.0.orig/gcc/expr.c gcc-4.1.0/gcc/expr.c +--- ../gcc-4.1.0.orig/gcc/expr.c 2006-02-03 19:31:14.000000000 +0100 ++++ gcc-4.1.0/gcc/expr.c 2006-04-04 21:16:16.000000000 +0200 +@@ -4635,6 +4635,10 @@ + case REFERENCE_TYPE: + return 1; + ++ case SET_TYPE: ++ /* @@@@@@ return something more accurate ... */ ++ return -1; ++ + case VOID_TYPE: + case METHOD_TYPE: + case FUNCTION_TYPE: +@@ -4655,6 +4659,10 @@ + HOST_WIDE_INT nz_elts, nc_elts, count, elts; + bool must_clear; + ++ if (TREE_TYPE (exp) && TREE_CODE (TREE_TYPE (exp)) == SET_TYPE) ++ /* If there are no ranges of true bits, it is all zero. */ ++ return CONSTRUCTOR_ELTS (exp) == NULL_TREE; ++ + categorize_ctor_elements (exp, &nz_elts, &nc_elts, &count, &must_clear); + if (must_clear) + return 1; +@@ -5289,6 +5297,229 @@ + gen_rtx_PARALLEL (GET_MODE (target), vector))); + break; + } ++ ++ case SET_TYPE: ++ { ++ tree elt = CONSTRUCTOR_ELTS (exp); ++ unsigned HOST_WIDE_INT nbytes = int_size_in_bytes (type), nbits; ++ tree domain = TYPE_DOMAIN (type); ++ tree domain_min, domain_max, bitlength; ++ ++ /* The default implementation strategy is to extract the constant ++ parts of the constructor, use that to initialize the target, ++ and then "or" in whatever non-constant ranges we need in addition. ++ ++ If a large set is all zero or all ones, it is ++ probably better to set it using memset (if available) or bzero. ++ Also, if a large set has just a single range, it may also be ++ better to first clear all the first clear the set (using ++ bzero/memset), and set the bits we want. */ ++ ++ /* Check for all zeros. */ ++ if (elt == NULL_TREE && size > 0) ++ { ++ if (!cleared) ++ clear_storage (target, GEN_INT (size), BLOCK_OP_NORMAL); ++ return; ++ } ++ ++#ifndef GPC ++ domain_min = convert (sizetype, TYPE_MIN_VALUE (domain)); ++ domain_max = convert (sizetype, TYPE_MAX_VALUE (domain)); ++#else /* GPC */ ++ domain_min = convert (sbitsizetype, TYPE_MIN_VALUE (domain)); ++ domain_max = convert (sbitsizetype, TYPE_MAX_VALUE (domain)); ++ ++ /* Align the set. */ ++ if (set_alignment) ++ domain_min = size_binop (BIT_AND_EXPR, domain_min, sbitsize_int (-(int) ++set_alignment)); ++ ++#endif /* GPC */ ++ bitlength = size_binop (PLUS_EXPR, ++ size_binop (MINUS_EXPR, domain_max, domain_min), ++#ifndef GPC ++ ssize_int (1)); ++#else /* GPC */ ++ sbitsize_int (1)); ++#endif /* GPC */ ++ ++#ifdef GPC ++ if (TREE_INT_CST_HIGH (bitlength)) { ++ error ("set size too big for host integers"); ++ return; ++ } ++#endif /* GPC */ ++ nbits = tree_low_cst (bitlength, 1); ++#ifdef GPC ++ bitlength = convert (sizetype, bitlength); ++#endif /* GPC */ ++ ++ /* For "small" sets, or "medium-sized" (up to 32 bytes) sets that ++ are "complicated" (more than one range), initialize (the ++ constant parts) by copying from a constant. */ ++ if (GET_MODE (target) != BLKmode || nbits <= 2 * BITS_PER_WORD ++ || (nbytes <= 32 && TREE_CHAIN (elt) != NULL_TREE)) ++ { ++#ifndef GPC ++ unsigned int set_word_size = TYPE_ALIGN (TREE_TYPE (exp)); ++#endif /* not GPC */ ++ enum machine_mode mode = mode_for_size (set_word_size, MODE_INT, 1); ++ char *bit_buffer = alloca (nbits); ++ HOST_WIDE_INT word = 0; ++ unsigned int bit_pos = 0; ++ unsigned int ibit = 0; ++ unsigned int offset = 0; /* In bytes from beginning of set. */ ++ ++ elt = get_set_constructor_bits (exp, bit_buffer, nbits); ++ for (;;) ++ { ++ if (bit_buffer[ibit]) ++ { ++#ifndef GPC ++ if (BYTES_BIG_ENDIAN) ++#else /* GPC */ ++ if (set_words_big_endian) ++#endif /* GPC */ ++ word |= (((HOST_WIDE_INT)1) << (set_word_size - 1 - bit_pos)); ++ else ++ word |= ((HOST_WIDE_INT)1) << bit_pos; ++ } ++ ++ bit_pos++; ibit++; ++ if (bit_pos >= set_word_size || ibit == nbits) ++ { ++ if (word != 0 || ! cleared) ++ { ++ rtx datum = gen_int_mode (word, mode); ++ rtx to_rtx; ++ ++ /* The assumption here is that it is safe to use ++ XEXP if the set is multi-word, but not if ++ it's single-word. */ ++ if (GET_CODE (target) == MEM) ++ to_rtx = adjust_address (target, mode, offset); ++ else if (offset == 0) ++ to_rtx = target; ++ else ++ abort (); ++ emit_move_insn (to_rtx, datum); ++ } ++ ++ if (ibit == nbits) ++ break; ++ word = 0; ++ bit_pos = 0; ++ offset += set_word_size / BITS_PER_UNIT; ++ } ++ } ++ } ++ else if (!cleared) ++ /* GPC expects bits outside the range to be cleared. (fjf1010.pas) ++ Though this check might be "dead" in this GCC version since it only ++ applies to single ranges with constant bounds, and those are apparently ++ always stored as constants anyway, not initialized via `__setbits'. */ ++#ifndef GPC ++ /* Don't bother clearing storage if the set is all ones. */ ++ if (TREE_CHAIN (elt) != NULL_TREE ++ || (TREE_PURPOSE (elt) == NULL_TREE ++ ? nbits != 1 ++ : ( ! host_integerp (TREE_VALUE (elt), 0) ++ || ! host_integerp (TREE_PURPOSE (elt), 0) ++ || (tree_low_cst (TREE_VALUE (elt), 0) ++ - tree_low_cst (TREE_PURPOSE (elt), 0) + 1 ++ != (HOST_WIDE_INT) nbits)))) ++#endif ++ clear_storage (target, expr_size (exp), BLOCK_OP_NORMAL); ++ ++ for (; elt != NULL_TREE; elt = TREE_CHAIN (elt)) ++ { ++ /* Start of range of element or NULL. */ ++ tree startbit = TREE_PURPOSE (elt); ++ /* End of range of element, or element value. */ ++ tree endbit = TREE_VALUE (elt); ++ HOST_WIDE_INT startb, endb; ++ rtx bitlength_rtx, startbit_rtx, endbit_rtx, targetx; ++ ++ bitlength_rtx = expand_expr (bitlength, ++ NULL_RTX, MEM, EXPAND_CONST_ADDRESS); ++ ++ /* Handle non-range tuple element like [ expr ]. */ ++ if (startbit == NULL_TREE) ++ { ++ startbit = save_expr (endbit); ++ endbit = startbit; ++ } ++ ++#ifndef GPC ++ startbit = convert (sizetype, startbit); ++ endbit = convert (sizetype, endbit); ++#endif /* not GPC */ ++ if (! integer_zerop (domain_min)) ++ { ++#ifdef GPC ++ startbit = convert (sbitsizetype, startbit); ++ endbit = convert (sbitsizetype, endbit); ++#endif /* GPC */ ++ startbit = size_binop (MINUS_EXPR, startbit, domain_min); ++ endbit = size_binop (MINUS_EXPR, endbit, domain_min); ++ } ++#ifdef GPC ++ startbit = convert (sizetype, startbit); ++ endbit = convert (sizetype, endbit); ++#endif /* GPC */ ++ startbit_rtx = expand_expr (startbit, NULL_RTX, MEM, ++ EXPAND_CONST_ADDRESS); ++ endbit_rtx = expand_expr (endbit, NULL_RTX, MEM, ++ EXPAND_CONST_ADDRESS); ++ ++ if (REG_P (target)) ++ { ++ targetx ++ = assign_temp ++ ((build_qualified_type ((*lang_hooks.types.type_for_mode) ++ (GET_MODE (target), 0), ++ TYPE_QUAL_CONST)), ++ 0, 1, 1); ++ emit_move_insn (targetx, target); ++ } ++ ++ else if (GET_CODE (target) == MEM) ++ targetx = target; ++ else ++ abort (); ++ ++ /* Optimization: If startbit and endbit are constants divisible ++ by BITS_PER_UNIT, call memset instead. */ ++ if ( ++ TREE_CODE (startbit) == INTEGER_CST ++ && TREE_CODE (endbit) == INTEGER_CST ++ && (startb = TREE_INT_CST_LOW (startbit)) % BITS_PER_UNIT == 0 ++ && (endb = TREE_INT_CST_LOW (endbit) + 1) % BITS_PER_UNIT == 0) ++ { ++ emit_library_call (memset_libfunc, LCT_NORMAL, ++ VOIDmode, 3, ++ plus_constant (XEXP (targetx, 0), ++ startb / BITS_PER_UNIT), ++ Pmode, ++ constm1_rtx, TYPE_MODE (integer_type_node), ++ GEN_INT ((endb - startb) / BITS_PER_UNIT), ++ TYPE_MODE (sizetype)); ++ } ++ else ++ emit_library_call (setbits_libfunc, LCT_NORMAL, ++ VOIDmode, 4, XEXP (targetx, 0), ++ Pmode, bitlength_rtx, TYPE_MODE (sizetype), ++ startbit_rtx, TYPE_MODE (sizetype), ++ endbit_rtx, TYPE_MODE (sizetype)); ++ ++ if (REG_P (target)) ++ if (REG_P (target)) ++ emit_move_insn (target, targetx); ++ } ++ ++ break; ++ } + + default: + gcc_unreachable (); +@@ -5588,9 +5819,19 @@ + index, then convert to sizetype and multiply by the size of + the array element. */ + if (! integer_zerop (low_bound)) ++#ifdef GPC ++ /* I think that address arithmetic should always be done on ++ sizetype or its variants -- for Pascal signed seems to be the ++ correct choice (and generates slightly better code). -- Waldek */ ++ index = convert (sizetype, convert (bitsizetype, ++ size_binop (MINUS_EXPR, ++ convert (sbitsizetype, index), ++ convert (sbitsizetype, low_bound)))); ++#else ++ + index = fold_build2 (MINUS_EXPR, TREE_TYPE (index), + index, low_bound); +- ++#endif + offset = size_binop (PLUS_EXPR, offset, + size_binop (MULT_EXPR, + convert (sizetype, index), +@@ -6687,11 +6928,18 @@ + /* Variables inherited from containing functions should have + been lowered by this point. */ + context = decl_function_context (exp); +- gcc_assert (!context ++// gcc_assert ++ if (!context + || context == current_function_decl + || TREE_STATIC (exp) + /* ??? C++ creates functions that are not TREE_STATIC. */ +- || TREE_CODE (exp) == FUNCTION_DECL); ++ || TREE_CODE (exp) == FUNCTION_DECL) ++ ; ++ else ++ { ++ debug_tree (exp); ++ gcc_unreachable (); ++ } + + /* This is the case of an array whose size is to be determined + from its initializer, while the initializer is still being parsed. +@@ -8624,7 +8872,7 @@ + tree + string_constant (tree arg, tree *ptr_offset) + { +- tree array, offset; ++ tree array, offset, lb = size_zero_node; + STRIP_NOPS (arg); + + if (TREE_CODE (arg) == ADDR_EXPR) +@@ -8638,6 +8886,7 @@ + { + array = TREE_OPERAND (arg, 0); + offset = size_zero_node; ++ goto do_lb; + } + else if (TREE_CODE (TREE_OPERAND (arg, 0)) == ARRAY_REF) + { +@@ -8646,6 +8895,7 @@ + if (TREE_CODE (array) != STRING_CST + && TREE_CODE (array) != VAR_DECL) + return 0; ++ lb = array_ref_low_bound (TREE_OPERAND (arg, 0)); + } + else + return 0; +@@ -8674,10 +8924,26 @@ + } + else + return 0; ++ do_lb: ++ if (TREE_TYPE (array) && TREE_CODE (TREE_TYPE (array)) == ARRAY_TYPE) ++ { ++ tree domain_type = TYPE_DOMAIN (TREE_TYPE (array)); ++ if (domain_type && TYPE_MIN_VALUE (domain_type)) ++#if 0 ++ lb = SUBSTITUTE_PLACEHOLDER_IN_EXPR ( ++ TYPE_MIN_VALUE (domain_type), array); ++#else ++ lb = TYPE_MIN_VALUE (domain_type); ++#endif ++ } + } + else + return 0; + ++ if (! integer_zerop (lb)) ++ offset = size_diffop (fold_convert (sizetype, offset), ++ fold_convert (sizetype, lb)); ++ + if (TREE_CODE (array) == STRING_CST) + { + *ptr_offset = convert (sizetype, offset); +diff -ru ../gcc-4.1.0.orig/gcc/fold-const.c gcc-4.1.0/gcc/fold-const.c +--- ../gcc-4.1.0.orig/gcc/fold-const.c 2006-02-03 19:02:04.000000000 +0100 ++++ gcc-4.1.0/gcc/fold-const.c 2006-04-04 21:16:16.000000000 +0200 +@@ -5956,6 +5956,10 @@ + HOST_WIDE_INT hpart; + int overflow; + ++ /* Overflow check does not work for unsigned numbers */ ++ if (TYPE_UNSIGNED (TREE_TYPE (arg0))) ++ return NULL_TREE; ++ + /* We have to do this the hard way to detect unsigned overflow. + prod = int_const_binop (MULT_EXPR, arg01, arg1, 0); */ + overflow = mul_double (TREE_INT_CST_LOW (arg01), +diff -ru ../gcc-4.1.0.orig/gcc/function.c gcc-4.1.0/gcc/function.c +--- ../gcc-4.1.0.orig/gcc/function.c 2006-01-04 10:13:56.000000000 +0100 ++++ gcc-4.1.0/gcc/function.c 2006-04-04 22:51:00.000000000 +0200 +@@ -3111,7 +3111,11 @@ + if (TYPE_P (t)) + { + if (POINTER_TYPE_P (t)) ++#ifndef GPC + *walk_subtrees = 1; ++#else ++ *walk_subtrees = 0; ++#endif + else if (TYPE_SIZE (t) && !TREE_CONSTANT (TYPE_SIZE (t)) + && !TYPE_SIZES_GIMPLIFIED (t)) + { +Only in gcc-4.1.0/gcc: function.c~ +diff -ru ../gcc-4.1.0.orig/gcc/gcc.c gcc-4.1.0/gcc/gcc.c +--- ../gcc-4.1.0.orig/gcc/gcc.c 2006-01-21 19:29:08.000000000 +0100 ++++ gcc-4.1.0/gcc/gcc.c 2006-04-04 22:38:05.000000000 +0200 +@@ -794,8 +794,8 @@ + "%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\ + %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*}\ + %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}}\ +- %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs}\ +- %{v:-version} %{pg:-p} %{p} %{f*} %{undef}\ ++ %{g*} %{O*} %{f*&W*&pedantic*&w} %{std*&ansi&trigraphs}\ ++ %{v:-version} %{pg:-p} %{p} %{undef}\ + %{Qn:-fno-ident} %{--help:--help}\ + %{--target-help:--target-help}\ + %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ +diff -ru ../gcc-4.1.0.orig/gcc/gimplify.c gcc-4.1.0/gcc/gimplify.c +--- ../gcc-4.1.0.orig/gcc/gimplify.c 2006-02-13 22:29:13.000000000 +0100 ++++ gcc-4.1.0/gcc/gimplify.c 2006-04-04 22:38:45.000000000 +0200 +@@ -342,7 +342,7 @@ + + /* Create a new temporary name with PREFIX. Returns an identifier. */ + +-static GTY(()) unsigned int tmp_var_id_num; ++static GTY(()) unsigned int tmp_var_id_num = 155419; + + tree + create_tmp_var_name (const char *prefix) +@@ -2704,15 +2704,35 @@ + cref = build (ARRAY_REF, array_elt_type, unshare_expr (object), + purpose, NULL_TREE, NULL_TREE); + } ++#if 0 ++ else if (DECL_BIT_FIELD (purpose)) ++ { ++ tree bioff = size_binop (PLUS_EXPR, ++ DECL_FIELD_BIT_OFFSET (purpose), ++ size_binop (MULT_EXPR, ++ bitsize_int (BITS_PER_UNIT), ++ convert (bitsizetype, DECL_FIELD_OFFSET (purpose)))); ++ cref = build3 (BIT_FIELD_REF, TREE_TYPE (purpose), ++ unshare_expr (object), bioff, ++ DECL_SIZE (purpose)); ++ BIT_FIELD_REF_UNSIGNED (cref) = TYPE_UNSIGNED (TREE_TYPE (purpose)); ++ } ++#endif + else + { +- gcc_assert (TREE_CODE (purpose) == FIELD_DECL); ++// gcc_assert (TREE_CODE (purpose) == FIELD_DECL); ++ if (TREE_CODE (purpose) != FIELD_DECL) ++ { ++ debug_tree (purpose); ++ gcc_unreachable (); ++ } + cref = build (COMPONENT_REF, TREE_TYPE (purpose), + unshare_expr (object), purpose, NULL_TREE); + } + + if (TREE_CODE (value) == CONSTRUCTOR +- && TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE) ++ && TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE ++ && TREE_CODE (TREE_TYPE (value)) != SET_TYPE) + gimplify_init_ctor_eval (cref, CONSTRUCTOR_ELTS (value), + pre_p, cleared); + else +@@ -2743,6 +2763,10 @@ + if (TREE_CODE (ctor) != CONSTRUCTOR) + return GS_UNHANDLED; + ++ ret = lang_hooks.gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, post_p); ++ if (ret != GS_UNHANDLED) ++ return ret; ++ + ret = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, post_p, + is_gimple_lvalue, fb_lvalue); + if (ret == GS_ERROR) +@@ -2784,7 +2808,7 @@ + DECL_INITIAL (object) = ctor; + TREE_STATIC (object) = 1; + if (!DECL_NAME (object)) +- DECL_NAME (object) = create_tmp_var_name ("C"); ++ DECL_NAME (object) = create_tmp_var_name ("c_C"); + walk_tree (&DECL_INITIAL (object), force_labels_r, NULL, NULL); + + /* ??? C++ doesn't automatically append a . to the +@@ -2857,7 +2881,7 @@ + + if (size > 0 && !can_move_by_pieces (size, align)) + { +- tree new = create_tmp_var_raw (type, "C"); ++ tree new = create_tmp_var_raw (type, "r_C"); + + gimple_add_tmp_var (new); + TREE_STATIC (new) = 1; +@@ -4507,6 +4531,10 @@ + goto dont_recalculate; + + default: ++ if (!(TREE_CODE (*expr_p) == TRUTH_AND_EXPR ++ || TREE_CODE (*expr_p) == TRUTH_OR_EXPR ++ || TREE_CODE (*expr_p) == TRUTH_XOR_EXPR)) ++ debug_tree (*expr_p); + gcc_assert (TREE_CODE (*expr_p) == TRUTH_AND_EXPR + || TREE_CODE (*expr_p) == TRUTH_OR_EXPR + || TREE_CODE (*expr_p) == TRUTH_XOR_EXPR); +@@ -4692,6 +4720,10 @@ + return ret; + } + ++extern void (*lang_remember_gimplified_type)(tree); ++ ++void (*lang_remember_gimplified_type)(tree) = 0; ++ + /* Look through TYPE for variable-sized objects and gimplify each such + size that we find. Add to LIST_P any statements generated. */ + +@@ -4712,6 +4744,12 @@ + + TYPE_SIZES_GIMPLIFIED (type) = 1; + ++ if (lang_remember_gimplified_type) ++ lang_remember_gimplified_type (type); ++ ++ gimplify_one_sizepos (&TYPE_SIZE (type), list_p); ++ gimplify_one_sizepos (&TYPE_SIZE_UNIT (type), list_p); ++ + switch (TREE_CODE (type)) + { + case INTEGER_TYPE: +@@ -4742,12 +4780,16 @@ + if (TREE_CODE (field) == FIELD_DECL) + { + gimplify_one_sizepos (&DECL_FIELD_OFFSET (field), list_p); +- gimplify_type_sizes (TREE_TYPE (field), list_p); + } ++ for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) ++ if (TREE_CODE (field) == FIELD_DECL) ++ gimplify_type_sizes (TREE_TYPE (field), list_p); + break; + + case POINTER_TYPE: + case REFERENCE_TYPE: ++ break; ++ + gimplify_type_sizes (TREE_TYPE (type), list_p); + break; + +@@ -4755,9 +4797,6 @@ + break; + } + +- gimplify_one_sizepos (&TYPE_SIZE (type), list_p); +- gimplify_one_sizepos (&TYPE_SIZE_UNIT (type), list_p); +- + for (t = TYPE_NEXT_VARIANT (type); t; t = TYPE_NEXT_VARIANT (t)) + { + TYPE_SIZE (t) = TYPE_SIZE (type); +@@ -4766,6 +4805,11 @@ + } + } + ++ ++extern void (*lang_remember_gimplified_sizepos)(tree *); ++ ++void (*lang_remember_gimplified_sizepos)(tree *) = 0; ++ + /* A subroutine of gimplify_type_sizes to make sure that *EXPR_P, + a size or position, has had all of its SAVE_EXPRs evaluated. + We add any required statements to STMT_P. */ +@@ -4775,6 +4819,12 @@ + { + tree type, expr = *expr_p; + ++ if (expr == NULL_TREE || TREE_CODE (expr) == INTEGER_CST) ++ return; ++ ++ if (lang_remember_gimplified_sizepos) ++ lang_remember_gimplified_sizepos(expr_p); ++ + /* We don't do anything if the value isn't there, is constant, or contains + A PLACEHOLDER_EXPR. We also don't want to do anything if it's already + a VAR_DECL. If it's a VAR_DECL from another function, the gimplifier +@@ -4878,9 +4928,18 @@ + a pointer to the array type. We must allow this in order to + properly represent assigning the address of an array in C into + pointer to the element type. */ ++/* + gcc_assert (TREE_CODE (otype) == ARRAY_TYPE + && POINTER_TYPE_P (ptype) + && cpt_same_type (TREE_TYPE (otype), dtype)); ++*/ ++ if (!(TREE_CODE (otype) == ARRAY_TYPE ++ && POINTER_TYPE_P (ptype) ++ && cpt_same_type (TREE_TYPE (otype), dtype))) ++ { ++ debug_tree (t); ++ gcc_unreachable (); ++ } + break; + } + break; +diff -ru ../gcc-4.1.0.orig/gcc/ipa-type-escape.c gcc-4.1.0/gcc/ipa-type-escape.c +--- ../gcc-4.1.0.orig/gcc/ipa-type-escape.c 2005-09-25 07:28:01.000000000 +0200 ++++ gcc-4.1.0/gcc/ipa-type-escape.c 2006-04-04 21:16:16.000000000 +0200 +@@ -260,9 +260,23 @@ + type_to_consider (tree type) + { + /* Strip the *'s off. */ ++ tree otype = type; ++ long cnt = 0; ++ long ocnt = 0; + type = TYPE_MAIN_VARIANT (type); + while (POINTER_TYPE_P (type) || TREE_CODE (type) == ARRAY_TYPE) +- type = TYPE_MAIN_VARIANT (TREE_TYPE (type)); ++ { ++ type = TYPE_MAIN_VARIANT (TREE_TYPE (type)); ++ if (type == otype) ++ return false; ++ if (cnt > ocnt) ++ { ++ ocnt += cnt; ++ otype = type; ++ } ++ else ++ cnt ++; ++ } + + switch (TREE_CODE (type)) + { +Only in gcc-4.1.0/gcc: p +diff -ru ../gcc-4.1.0.orig/gcc/print-tree.c gcc-4.1.0/gcc/print-tree.c +--- ../gcc-4.1.0.orig/gcc/print-tree.c 2005-10-13 01:34:09.000000000 +0200 ++++ gcc-4.1.0/gcc/print-tree.c 2006-04-04 21:16:16.000000000 +0200 +@@ -580,7 +580,7 @@ + + if (TREE_CODE (node) == ENUMERAL_TYPE) + print_node (file, "values", TYPE_VALUES (node), indent + 4); +- else if (TREE_CODE (node) == ARRAY_TYPE) ++ else if (TREE_CODE (node) == ARRAY_TYPE || TREE_CODE (node) == SET_TYPE) + print_node (file, "domain", TYPE_DOMAIN (node), indent + 4); + else if (TREE_CODE (node) == VECTOR_TYPE) + fprintf (file, " nunits %d", (int) TYPE_VECTOR_SUBPARTS (node)); +diff -ru ../gcc-4.1.0.orig/gcc/reload1.c gcc-4.1.0/gcc/reload1.c +--- ../gcc-4.1.0.orig/gcc/reload1.c 2006-02-24 02:18:27.000000000 +0100 ++++ gcc-4.1.0/gcc/reload1.c 2006-04-04 21:16:16.000000000 +0200 +@@ -1252,7 +1252,10 @@ + reg_equiv_memory_loc = 0; + + if (offsets_known_at) +- free (offsets_known_at); ++ { ++// free (offsets_known_at); ++ offsets_known_at = 0; ++ } + if (offsets_at) + free (offsets_at); + +diff -ru ../gcc-4.1.0.orig/gcc/stor-layout.c gcc-4.1.0/gcc/stor-layout.c +--- ../gcc-4.1.0.orig/gcc/stor-layout.c 2006-02-14 17:12:56.000000000 +0100 ++++ gcc-4.1.0/gcc/stor-layout.c 2006-04-04 21:17:03.000000000 +0200 +@@ -19,6 +19,7 @@ + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + ++/* @@ PATCHED FOR GPC 20060322 @@ */ + + #include "config.h" + #include "system.h" +@@ -53,6 +54,21 @@ + called only by a front end. */ + static int reference_types_internal = 0; + ++/* If nonzero, the alignment of a bitstring or (power-)set value, in bits. ++ May be overridden by front-ends. */ ++unsigned int set_alignment = 0; ++ ++/* The word size of a bitstring or (power-)set value, in bits. ++ Must be non-zero. ++ May be overridden by front-ends. */ ++unsigned int set_word_size = BITS_PER_UNIT; ++ ++/* If non-zero, bits in (power-)sets start with the highest bit. ++ May be overridden by front-ends. ++ In order to be backward-compatible, the Chill frontend should ++ initialize this to BYTES_BIG_ENDIAN. */ ++unsigned int set_words_big_endian = 0; ++ + static void finalize_record_size (record_layout_info); + static void finalize_type_size (tree); + static void place_union_field (record_layout_info, tree); +@@ -1881,6 +1897,50 @@ + } + break; + ++ case SET_TYPE: /* Used by Chill and Pascal. */ ++ if (TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type))) != INTEGER_CST ++ || TREE_CODE (TYPE_MIN_VALUE (TYPE_DOMAIN (type))) != INTEGER_CST) ++ abort (); ++ else ++ { ++ int alignment = set_alignment ? set_alignment : set_word_size; ++ tree lower_bound = convert (sbitsizetype, ++ TYPE_MIN_VALUE (TYPE_DOMAIN (type))); ++ tree upper_bound = convert (sbitsizetype, ++ TYPE_MAX_VALUE (TYPE_DOMAIN (type))); ++ tree size_in_bits, rounded_size; ++ if (set_alignment) ++ { ++ lower_bound = round_down (lower_bound, alignment); ++ } ++ size_in_bits = size_binop (PLUS_EXPR, ++ size_binop (MINUS_EXPR, ++ upper_bound, ++ lower_bound), ++ sbitsize_int(1)); ++ rounded_size = round_up (size_in_bits, alignment); ++ ++ if ( TREE_INT_CST_HIGH (rounded_size) ++ || TREE_INT_CST_LOW (rounded_size) > (unsigned) alignment) ++ { ++ TYPE_MODE (type) = BLKmode; ++ } ++ else ++ { ++ TYPE_MODE (type) = mode_for_size (alignment, MODE_INT, 1); ++ } ++ ++ TYPE_SIZE (type) = convert (bitsizetype, rounded_size); ++ TYPE_SIZE_UNIT (type) = convert (sizetype, ++ size_binop ( CEIL_DIV_EXPR, ++ rounded_size, ++ sbitsize_int (BITS_PER_UNIT))); ++ TYPE_ALIGN (type) = alignment; ++ TYPE_USER_ALIGN (type) = 0; ++ TYPE_PRECISION (type) = TREE_INT_CST_LOW (size_in_bits); ++ } ++ break; ++ + default: + gcc_unreachable (); + } +@@ -1977,9 +2037,9 @@ + t = build_distinct_type_copy (type); + /* We do want to use sizetype's cache, as we will be replacing that + type. */ +- TYPE_CACHED_VALUES (t) = TYPE_CACHED_VALUES (sizetype); +- TYPE_CACHED_VALUES_P (t) = TYPE_CACHED_VALUES_P (sizetype); +- TREE_TYPE (TYPE_CACHED_VALUES (t)) = type; ++ TYPE_CACHED_VALUES (t) = NULL_TREE /* TYPE_CACHED_VALUES (sizetype) */; ++ TYPE_CACHED_VALUES_P (t) = 0 ; /* TYPE_CACHED_VALUES_P (sizetype); ++ TREE_TYPE (TYPE_CACHED_VALUES (t)) = type; */ + TYPE_UID (t) = TYPE_UID (sizetype); + TYPE_IS_SIZETYPE (t) = 1; + +@@ -1991,8 +2051,8 @@ + TYPE_NAME (t) = get_identifier ("bit_size_type"); + /* We do want to use bitsizetype's cache, as we will be replacing that + type. */ +- TYPE_CACHED_VALUES (t) = TYPE_CACHED_VALUES (bitsizetype); +- TYPE_CACHED_VALUES_P (t) = TYPE_CACHED_VALUES_P (bitsizetype); ++ TYPE_CACHED_VALUES (t) = NULL_TREE /* TYPE_CACHED_VALUES (bitsizetype) */; ++ TYPE_CACHED_VALUES_P (t) = 0 /* TYPE_CACHED_VALUES_P (bitsizetype) */; + TYPE_PRECISION (t) = precision; + TYPE_UID (t) = TYPE_UID (bitsizetype); + TYPE_IS_SIZETYPE (t) = 1; +Only in gcc-4.1.0/gcc: stor-layout.c~ +diff -ru ../gcc-4.1.0.orig/gcc/toplev.c gcc-4.1.0/gcc/toplev.c +--- ../gcc-4.1.0.orig/gcc/toplev.c 2006-02-04 23:13:20.000000000 +0100 ++++ gcc-4.1.0/gcc/toplev.c 2006-04-09 17:33:48.000000000 +0200 +@@ -803,9 +803,13 @@ + /* A subroutine of check_global_declarations. Issue appropriate warnings + for the global declaration DECL. */ + ++volatile int dump_global_decl_trees = 0; + void + check_global_declaration_1 (tree decl) + { ++ if (dump_global_decl_trees) ++ debug_tree (decl); ++ + /* Warn about any function declared static but not defined. We don't + warn about variables, because many programs have static variables + that exist only to get some text into the object file. */ +@@ -1110,6 +1114,27 @@ + void + print_version (FILE *file, const char *indent) + { ++#ifdef GPC ++ extern const char *lang_version_string; ++ static const char fmt1[] = ++#ifdef __GNUC__ ++ N_("%s%s%s version %s%s (%s)\n%s\tcompiled by GNU C version %s.\n") ++#else ++ N_("%s%s%s version %s%s (%s) compiled by CC.\n") ++#endif ++ ; ++ static const char fmt2[] = ++ N_("%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"); ++#ifndef __VERSION__ ++#define __VERSION__ "[?]" ++#endif ++ ++ fprintf (file, ++ file == stderr ? _(fmt1) : fmt1, ++ indent, *indent != 0 ? " " : "", ++ lang_hooks.name, lang_version_string, version_string, TARGET_NAME, ++ indent, __VERSION__); ++#else + static const char fmt1[] = + #ifdef __GNUC__ + N_("%s%s%s version %s (%s)\n%s\tcompiled by GNU C version %s.\n") +@@ -1122,11 +1147,13 @@ + #ifndef __VERSION__ + #define __VERSION__ "[?]" + #endif ++ + fprintf (file, + file == stderr ? _(fmt1) : fmt1, + indent, *indent != 0 ? " " : "", + lang_hooks.name, version_string, TARGET_NAME, + indent, __VERSION__); ++#endif + fprintf (file, + file == stderr ? _(fmt2) : fmt2, + indent, *indent != 0 ? " " : "", +Only in gcc-4.1.0/gcc: toplev.c~ +diff -ru ../gcc-4.1.0.orig/gcc/tree-cfg.c gcc-4.1.0/gcc/tree-cfg.c +--- ../gcc-4.1.0.orig/gcc/tree-cfg.c 2006-02-16 16:23:24.000000000 +0100 ++++ gcc-4.1.0/gcc/tree-cfg.c 2006-04-04 21:16:16.000000000 +0200 +@@ -3642,10 +3642,17 @@ + if (decl_function_context (LABEL_EXPR_LABEL (stmt)) + != current_function_decl) + { +- error ("label %s has incorrect context in bb %d", +- IDENTIFIER_POINTER (DECL_NAME (LABEL_EXPR_LABEL (stmt))), +- bb->index); +- err = 1; ++ tree ldecl = DECL_NAME (LABEL_EXPR_LABEL (stmt)); ++ const char * ln = ldecl ? IDENTIFIER_POINTER (ldecl): "????"; ++#if 0 ++ error ("label %s has incorrect context in bb %d\n", ++ IDENTIFIER_POINTER (DECL_NAME (LABEL_EXPR_LABEL (stmt))), ++ bb->index); ++#else ++ error ("label %s has incorrect context in bb %d\n", ln, ++ bb->index); ++#endif ++ err = 1; + } + } + +diff -ru ../gcc-4.1.0.orig/gcc/tree-flow-inline.h gcc-4.1.0/gcc/tree-flow-inline.h +--- ../gcc-4.1.0.orig/gcc/tree-flow-inline.h 2006-02-09 15:00:59.000000000 +0100 ++++ gcc-4.1.0/gcc/tree-flow-inline.h 2006-04-04 21:55:58.000000000 +0200 +@@ -1492,7 +1492,8 @@ + return false; + + return (AGGREGATE_TYPE_P (TREE_TYPE (v)) && +- TREE_CODE (TREE_TYPE (v)) != ARRAY_TYPE); ++ TREE_CODE (TREE_TYPE (v)) != ARRAY_TYPE ++ && TREE_CODE (TREE_TYPE (v)) != SET_TYPE); + } + + +Only in gcc-4.1.0/gcc: tree-flow-inline.h~ +diff -ru ../gcc-4.1.0.orig/gcc/tree-nested.c gcc-4.1.0/gcc/tree-nested.c +--- ../gcc-4.1.0.orig/gcc/tree-nested.c 2005-10-03 22:57:45.000000000 +0200 ++++ gcc-4.1.0/gcc/tree-nested.c 2006-04-04 21:16:16.000000000 +0200 +@@ -1170,6 +1170,8 @@ + if (!elt) + return NULL_TREE; + new_label = elt->new; ++ DECL_CONTEXT (new_label) = DECL_CONTEXT (label); ++// mark_decl_referenced (new_label); + + /* If there's any possibility that the previous statement falls through, + then we must branch around the new non-local label. */ +diff -ru ../gcc-4.1.0.orig/gcc/tree-sra.c gcc-4.1.0/gcc/tree-sra.c +--- ../gcc-4.1.0.orig/gcc/tree-sra.c 2005-11-21 01:55:57.000000000 +0100 ++++ gcc-4.1.0/gcc/tree-sra.c 2006-04-04 21:16:16.000000000 +0200 +@@ -1368,6 +1368,9 @@ + && (!can_completely_scalarize_p (elt) + || !type_can_instantiate_all_elements (elt->type))) + use_block_copy = true; ++ if (TREE_TYPE (elt->type) ++ && full_size != full_count*TYPE_PRECISION (TREE_TYPE (elt->type))) ++ use_block_copy = true; + } + elt->use_block_copy = use_block_copy; + +diff -ru ../gcc-4.1.0.orig/gcc/tree-ssa-dom.c gcc-4.1.0/gcc/tree-ssa-dom.c +--- ../gcc-4.1.0.orig/gcc/tree-ssa-dom.c 2005-11-18 14:32:05.000000000 +0100 ++++ gcc-4.1.0/gcc/tree-ssa-dom.c 2006-04-04 21:16:16.000000000 +0200 +@@ -2802,12 +2802,26 @@ + val_type = TREE_TYPE (val); + + /* While both types are pointers, get the type of the object +- pointed to. */ +- while (POINTER_TYPE_P (op_type) && POINTER_TYPE_P (val_type)) +- { +- op_type = TREE_TYPE (op_type); +- val_type = TREE_TYPE (val_type); +- } ++ pointed to. Do not get trapped in cycles. */ ++ { ++ long cnt = 0, maxcnt = 11; ++ tree op_type0 = op_type; ++ while (POINTER_TYPE_P (op_type) && POINTER_TYPE_P (val_type)) ++ { ++ op_type = TREE_TYPE (op_type); ++ val_type = TREE_TYPE (val_type); ++ if (op_type == op_type0) ++ return false; ++ cnt ++; ++ if (cnt > maxcnt) ++ { ++ op_type0 = op_type; ++ maxcnt += maxcnt; ++ if (maxcnt < 0) ++ return false; ++ } ++ } ++ } + + /* Make sure underlying types match before propagating a constant by + converting the constant to the proper type. Note that convert may +diff -ru ../gcc-4.1.0.orig/gcc/tree.c gcc-4.1.0/gcc/tree.c +--- ../gcc-4.1.0.orig/gcc/tree.c 2006-01-29 23:24:10.000000000 +0100 ++++ gcc-4.1.0/gcc/tree.c 2006-04-04 21:16:16.000000000 +0200 +@@ -801,9 +801,16 @@ + if (t) + { + /* Make sure no one is clobbering the shared constant. */ ++ if (!(TREE_TYPE (t) == type)) ++ debug_tree (t); + gcc_assert (TREE_TYPE (t) == type); ++ if (!(TREE_INT_CST_LOW (t) == low)) ++ debug_tree (t); + gcc_assert (TREE_INT_CST_LOW (t) == low); ++ if (!(TREE_INT_CST_HIGH (t) == hi)) ++ debug_tree (t); + gcc_assert (TREE_INT_CST_HIGH (t) == hi); ++ + } + else + { +@@ -2132,6 +2139,7 @@ + || CONTAINS_PLACEHOLDER_P (TYPE_MAX_VALUE (type))); + + case ARRAY_TYPE: ++ case SET_TYPE: + /* We're already checked the component type (TREE_TYPE), so just check + the index type. */ + return type_contains_placeholder_p (TYPE_DOMAIN (type)); +@@ -3143,7 +3151,8 @@ + if (EXPR_LOCUS (node) + && EXPR_LINENO (node) == line + && (EXPR_FILENAME (node) == file +- || !strcmp (EXPR_FILENAME (node), file))) ++ || (EXPR_FILENAME (node) && file ++ && ! strcmp (EXPR_FILENAME (node), file)))) + { + last_annotated_node = EXPR_LOCUS (node); + return; +@@ -3155,7 +3164,8 @@ + if (last_annotated_node + && last_annotated_node->line == line + && (last_annotated_node->file == file +- || !strcmp (last_annotated_node->file, file))) ++ || (last_annotated_node->file && file ++ && ! strcmp (last_annotated_node->file, file)))) + { + SET_EXPR_LOCUS (node, last_annotated_node); + return; +@@ -4996,6 +5006,7 @@ + TYPE_SIZE_UNIT (itype) = TYPE_SIZE_UNIT (type); + TYPE_ALIGN (itype) = TYPE_ALIGN (type); + TYPE_USER_ALIGN (itype) = TYPE_USER_ALIGN (type); ++ TYPE_UNSIGNED (itype) = TYPE_UNSIGNED (type); + + if (host_integerp (lowval, 0) && highval != 0 && host_integerp (highval, 0)) + return type_hash_canon (tree_low_cst (highval, 0) +@@ -5957,6 +5968,137 @@ + return get_file_function_name_long (p); + } + ++/* Expand (the constant part of) a SET_TYPE CONSTRUCTOR node. ++ The result is placed in BUFFER (which has length BIT_SIZE), ++ with one bit in each char ('\000' or '\001'). ++ ++ If the constructor is constant, NULL_TREE is returned. ++ Otherwise, a TREE_LIST of the non-constant elements is emitted. */ ++ ++tree ++get_set_constructor_bits (tree init, char *buffer, int bit_size) ++{ ++ int i; ++ tree vals; ++ HOST_WIDE_INT domain_min ++ = tree_low_cst (TYPE_MIN_VALUE (TYPE_DOMAIN (TREE_TYPE (init))), 0); ++ HOST_WIDE_INT low_limit = domain_min; ++ tree non_const_bits = NULL_TREE; ++ ++ if (set_alignment) ++ /* Note: `domain_min -= domain_min % set_alignment' would be wrong for negative ++ numbers (rounding towards 0, while we have to round towards -inf). */ ++ domain_min &= -(int) set_alignment; ++ ++ low_limit -= domain_min; ++ ++ for (i = 0; i < bit_size; i++) ++ buffer[i] = 0; ++ ++ for (vals = TREE_OPERAND (init, 0) /* CONSTRUCTOR_ELTS (init) */; ++ vals != NULL_TREE; vals = TREE_CHAIN (vals)) ++ { ++ if (!host_integerp (TREE_VALUE (vals), 0) ++ || (TREE_PURPOSE (vals) != NULL_TREE ++ && !host_integerp (TREE_PURPOSE (vals), 0))) ++ non_const_bits ++ = tree_cons (TREE_PURPOSE (vals), TREE_VALUE (vals), non_const_bits); ++ else if (TREE_PURPOSE (vals) != NULL_TREE) ++ { ++ /* Set a range of bits to ones. */ ++ HOST_WIDE_INT lo_index ++ = tree_low_cst (TREE_PURPOSE (vals), 0) - domain_min; ++ HOST_WIDE_INT hi_index ++ = tree_low_cst (TREE_VALUE (vals), 0) - domain_min; ++ ++ if (lo_index < low_limit || hi_index >= bit_size) ++ { ++ error ("invalid initializer for set"); ++ return NULL_TREE; ++ } ++ ++ gcc_assert (lo_index >= 0); ++ gcc_assert (lo_index < bit_size); ++ gcc_assert (hi_index >= 0); ++ gcc_assert (hi_index < bit_size); ++ for (; lo_index <= hi_index; lo_index++) ++ buffer[lo_index] = 1; ++ } ++ else ++ { ++ /* Set a single bit to one. */ ++ HOST_WIDE_INT index ++ = tree_low_cst (TREE_VALUE (vals), 0) - domain_min; ++ if (index < 0 || index >= bit_size) ++ { ++ error ("invalid initializer for set"); ++ return NULL_TREE; ++ } ++ buffer[index] = 1; ++ } ++ } ++ return non_const_bits; ++} ++ ++/* Expand (the constant part of) a SET_TYPE CONSTRUCTOR node. ++ The result is placed in BUFFER (which is an array of bytes). ++ If the constructor is constant, NULL_TREE is returned. ++ Otherwise, a TREE_LIST of the non-constant elements is emitted. */ ++ ++tree ++get_set_constructor_bytes (tree init, unsigned char *buffer, int wd_size) ++{ ++ int i; ++#ifdef GPC ++ int bit_size = wd_size * BITS_PER_UNIT; ++ unsigned int bit_pos = 0; ++#else /* not GPC */ ++ int set_word_size = BITS_PER_UNIT; ++ int bit_size = wd_size * set_word_size; ++ int bit_pos = 0; ++#endif /* not GPC */ ++ unsigned char *bytep = buffer; ++ char *bit_buffer = alloca (bit_size); ++ tree non_const_bits = get_set_constructor_bits (init, bit_buffer, bit_size); ++ ++ for (i = 0; i < wd_size; i++) ++ buffer[i] = 0; ++ ++ for (i = 0; i < bit_size; i++) ++ { ++#ifdef GPC ++ if (bit_buffer[i]) ++ { ++ int k = bit_pos / BITS_PER_UNIT; ++ if (WORDS_BIG_ENDIAN) ++ k = set_word_size / BITS_PER_UNIT - 1 - k; ++ if (set_words_big_endian) ++ bytep[k] |= (1 << (BITS_PER_UNIT - 1 - bit_pos % BITS_PER_UNIT)); ++ else ++ bytep[k] |= (1 << (bit_pos % BITS_PER_UNIT)); ++ } ++ bit_pos++; ++ if (bit_pos >= set_word_size) ++ { ++ bit_pos = 0; ++ bytep += set_word_size / BITS_PER_UNIT; ++ } ++#else /* not GPC */ ++ if (bit_buffer[i]) ++ { ++ if (BYTES_BIG_ENDIAN) ++ *bytep |= (1 << (set_word_size - 1 - bit_pos)); ++ else ++ *bytep |= 1 << bit_pos; ++ } ++ bit_pos++; ++ if (bit_pos >= set_word_size) ++ bit_pos = 0, bytep++; ++#endif ++ } ++ return non_const_bits; ++} ++ + #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007) + + /* Complain that the tree code of NODE does not match the expected 0 +@@ -6627,6 +6769,15 @@ + { + unsigned HOST_WIDE_INT idx; + ++#if 0 ++ /* Set is empty if it has no elements. */ ++ if (TREE_CODE (TREE_TYPE (init)) == SET_TYPE && elt) ++ return false; ++#else ++ if (TREE_CODE (TREE_TYPE (init)) == SET_TYPE) ++ gcc_unreachable (); ++#endif ++ + FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (init), idx, elt) + if (!initializer_zerop (elt)) + return false; +diff -ru ../gcc-4.1.0.orig/gcc/tree.def gcc-4.1.0/gcc/tree.def +--- ../gcc-4.1.0.orig/gcc/tree.def 2006-02-10 18:32:10.000000000 +0100 ++++ gcc-4.1.0/gcc/tree.def 2006-04-04 21:16:16.000000000 +0200 +@@ -254,6 +254,12 @@ + includes the hidden argument for "self". */ + DEFTREECODE (METHOD_TYPE, "method_type", tcc_type, 0) + ++/* Types of sets for Pascal. Special fields are the same as ++ in an array type. The target type is always a boolean type. ++ Used for both bitstrings and powersets in Chill; ++ TYPE_STRING_FLAG indicates a bitstring. */ ++DEFTREECODE (SET_TYPE, "set_type", tcc_type, 0) ++ + /* This is a language-specific kind of type. + Its meaning is defined by the language front end. + layout_type does not know how to lay this out, +diff -ru ../gcc-4.1.0.orig/gcc/tree.h gcc-4.1.0/gcc/tree.h +--- ../gcc-4.1.0.orig/gcc/tree.h 2006-02-14 15:36:15.000000000 +0100 ++++ gcc-4.1.0/gcc/tree.h 2006-04-04 21:16:31.000000000 +0200 +@@ -704,6 +704,9 @@ + #define NOT_RECORD_OR_UNION_CHECK(T) \ + TREE_NOT_CHECK3 (T, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE) + ++#define ARRAY_OR_SET_CHECK(T) \ ++ TREE_CHECK2 (T, ARRAY_TYPE, SET_TYPE) ++ + #define NUMERICAL_TYPE_CHECK(T) \ + TREE_CHECK5 (T, INTEGER_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, \ + CHAR_TYPE, REAL_TYPE) +@@ -817,7 +820,8 @@ + + #define AGGREGATE_TYPE_P(TYPE) \ + (TREE_CODE (TYPE) == ARRAY_TYPE || TREE_CODE (TYPE) == RECORD_TYPE \ +- || TREE_CODE (TYPE) == UNION_TYPE || TREE_CODE (TYPE) == QUAL_UNION_TYPE) ++ || TREE_CODE (TYPE) == UNION_TYPE || TREE_CODE (TYPE) == QUAL_UNION_TYPE \ ++ || TREE_CODE (TYPE) == SET_TYPE) + + /* Nonzero if TYPE represents a pointer or reference type. + (It should be renamed to INDIRECT_TYPE_P.) Keep these checks in +@@ -1618,7 +1622,7 @@ + #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type.size_unit) + #define TYPE_MODE(NODE) (TYPE_CHECK (NODE)->type.mode) + #define TYPE_VALUES(NODE) (ENUMERAL_TYPE_CHECK (NODE)->type.values) +-#define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type.values) ++#define TYPE_DOMAIN(NODE) (ARRAY_OR_SET_CHECK (NODE)->type.values) + #define TYPE_FIELDS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.values) + #define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK(NODE)->type.values) + #define TYPE_ORIG_SIZE_TYPE(NODE) \ +@@ -3535,6 +3539,15 @@ + /* and its original value in bytes, specified via -fpack-struct=. */ + extern unsigned int initial_max_fld_align; + ++/* If nonzero, the alignment of a bitstring or (power-)set value, in bits. */ ++extern unsigned int set_alignment; ++ ++/* The word size of a bitstring or (power-)set value, in bits. */ ++extern unsigned int set_word_size; ++ ++/* If non-zero, bits in (power-)sets start with the highest bit. */ ++extern unsigned int set_words_big_endian; ++ + /* Concatenate two lists (chains of TREE_LIST nodes) X and Y + by making the last node in X point to Y. + Returns X, except if X is 0 returns Y. */ +Only in gcc-4.1.0/gcc: tree.h.orig +diff -ru ../gcc-4.1.0.orig/gcc/varasm.c gcc-4.1.0/gcc/varasm.c +--- ../gcc-4.1.0.orig/gcc/varasm.c 2005-12-24 09:56:10.000000000 +0100 ++++ gcc-4.1.0/gcc/varasm.c 2006-04-04 21:16:16.000000000 +0200 +@@ -2446,6 +2446,18 @@ + + const_hash_1 (TREE_IMAGPART (exp))); + + case CONSTRUCTOR: ++ if (TREE_CODE (TREE_TYPE (exp)) == SET_TYPE) ++ { ++ char *tmp; ++ ++ len = int_size_in_bytes (TREE_TYPE (exp)); ++ tmp = alloca (len); ++ gcc_unreachable (); ++ get_set_constructor_bytes (exp, (unsigned char *) tmp, len); ++ p = tmp; ++ break; ++ } ++ else + { + unsigned HOST_WIDE_INT idx; + tree value; +@@ -2571,6 +2583,30 @@ + typecode = TREE_CODE (TREE_TYPE (t1)); + if (typecode != TREE_CODE (TREE_TYPE (t2))) + return 0; ++ if (typecode == SET_TYPE) ++ { ++ int len = int_size_in_bytes (TREE_TYPE (t2)); ++ unsigned char *tmp1, *tmp2; ++ ++ if (TYPE_MAIN_VARIANT (TREE_TYPE (t1)) != ++ TYPE_MAIN_VARIANT (TREE_TYPE (t2))) ++ return 0; ++ ++ if (int_size_in_bytes (TREE_TYPE (t1)) != len) ++ return 0; ++ ++ tmp1 = alloca (len); ++ tmp2 = alloca (len); ++ ++ gcc_unreachable (); ++ if (get_set_constructor_bytes (t1, tmp1, len) != NULL_TREE) ++ return 0; ++ if (get_set_constructor_bytes (t2, tmp2, len) != NULL_TREE) ++ return 0; ++ ++ return memcmp (tmp1, tmp2, len) == 0; ++ } ++ + + if (typecode == ARRAY_TYPE) + { +@@ -2703,6 +2739,24 @@ + VEC(constructor_elt, gc) *v; + unsigned HOST_WIDE_INT idx; + tree purpose, value; ++ ++#if 0 ++ tree list = copy_list (CONSTRUCTOR_ELTS (exp)); ++ tree tail; ++ ++ CONSTRUCTOR_ELTS (copy) = list; ++ for (tail = list; tail; tail = TREE_CHAIN (tail)) ++ TREE_VALUE (tail) = copy_constant (TREE_VALUE (tail)); ++ ++ if (TREE_CODE (TREE_TYPE (exp)) == SET_TYPE) ++ for (tail = list; tail; tail = TREE_CHAIN (tail)) ++ TREE_PURPOSE (tail) = copy_constant (TREE_PURPOSE (tail)); ++ ++ return copy; ++#else ++ if (TREE_CODE (TREE_TYPE (exp)) == SET_TYPE) ++ gcc_unreachable (); ++#endif + + v = VEC_alloc(constructor_elt, gc, VEC_length(constructor_elt, + CONSTRUCTOR_ELTS (exp))); +@@ -3743,7 +3797,12 @@ + /* Allow conversions to struct or union types if the value + inside is okay. */ + if (TREE_CODE (dest_type) == RECORD_TYPE +- || TREE_CODE (dest_type) == UNION_TYPE) ++ || TREE_CODE (dest_type) == UNION_TYPE ++#ifdef GPC ++ || TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE ++#endif ++ ) ++ + return initializer_constant_valid_p (src, endtype); + } + break; +@@ -4032,6 +4091,23 @@ + output_constructor (exp, size, align); + return; + ++ case SET_TYPE: ++ if (TREE_CODE (exp) == INTEGER_CST) ++ assemble_integer (expand_expr (exp, NULL_RTX, ++ VOIDmode, EXPAND_INITIALIZER), ++ thissize, align, 1); ++ else if (TREE_CODE (exp) == CONSTRUCTOR) ++ { ++ unsigned char *buffer = alloca (thissize); ++ gcc_unreachable (); ++ if (get_set_constructor_bytes (exp, buffer, thissize)) ++ abort (); ++ assemble_string ((char *) buffer, thissize); ++ } ++ else ++ error ("unknown set constructor type"); ++ return; ++ + case ERROR_MARK: + return; + --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-version.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-version.dpatch @@ -0,0 +1,35 @@ +#! /bin/sh -e + +# DP: Add package identification to the gcc version string + +pkgversion= +if [ -n "$DEB_VERSION" ]; then + pkgversion=" $DEB_VERSION" +fi + +dist=Debian +dist=$(lsb_release -is) + +dir=gcc +if [ $# -eq 3 -a "$2" = '-d' ]; then + dir=$3/gcc +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + sed -e "/#define VERSUFFIX/s/\".*/\" ($dist$pkgversion)\"/" \ + $dir/version.c > $dir/version.c.new \ + && mv -f $dir/version.c.new $dir/version.c + ;; + -unpatch) + sed -e '/#define VERSUFFIX/s/".*/""/' \ + $dir/version.c > $dir/version.c.new \ + && mv -f $dir/version.c.new $dir/version.c + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/patches/multiarch-lib.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/multiarch-lib.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh -e + +# multiarch-lib.dpatch by Stephen Frost + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc.old/config/i386/t-linux64 gcc/config/i386/t-linux64 +--- gcc.old/config/i386/t-linux64 2002-11-28 15:47:02.000000000 +0100 ++++ gcc/config/i386/t-linux64 2004-07-10 07:28:01.000000000 +0200 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = x86_64-linux i486-linux + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +diff -urN gcc.old/config/t-linux gcc/config/t-linux +--- gcc.old/config/t-linux 2004-05-04 18:09:38.000000000 +0200 ++++ gcc/config/t-linux 2004-07-10 07:28:01.000000000 +0200 +@@ -11,3 +11,11 @@ + LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ + $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c + LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c ++ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = 32 ++MULTILIB_OSDIRNAMES = $TARGET_ARCH ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib ++ --- gcj-4.2-4.2-20070707.orig/debian/patches/kbsd-gnu-ada.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/kbsd-gnu-ada.dpatch @@ -0,0 +1,590 @@ +#! /bin/sh -e + +# Description: Ada support for GNU/k*BSD +# Author: Aurelien Jarno +# Status: not yet submitted upstream. + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- gcc-4.1.0.old/gcc/ada/Makefile.in 2005-04-07 22:03:50.000000000 +0200 ++++ gcc-4.1.0/gcc/ada/Makefile.in 2005-11-28 21:14:23.000000000 +0100 +@@ -835,6 +835,34 @@ + endif + endif + ++ifeq ($(strip $(filter-out %86 kfreebsd%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads) of Signal; ++ ++ Unmasked : constant Signal_Set := ( ++ SIGTRAP, ++ -- To enable debugging on multithreaded applications, mark SIGTRAP to ++ -- be kept unmasked. ++ ++ SIGBUS, ++ ++ SIGTTIN, SIGTTOU, SIGTSTP, ++ -- Keep these three signals unmasked so that background processes ++ -- and IO behaves as normal "C" applications ++ ++ SIGPROF, ++ -- To avoid confusing the profiler ++ ++ SIGKILL, SIGSTOP, ++ -- These two signals actually cannot be masked; ++ -- POSIX simply won't allow it. ++ ++ SIGLTHRRES, SIGLTHRCAN, SIGLTHRDBG); ++ -- These three signals are used by GNU/LinuxThreads starting from ++ -- glibc 2.1 (future 2.2). ++ ++ Reserved : constant Signal_Set := ++ -- I am not sure why the following signal is reserved. ++ -- I guess they are not supported by this version of GNU/kFreeBSD. ++ (0 .. 0 => SIGVTALRM); ++ ++ type sigset_t is private; ++ ++ function sigaddset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigaddset, "sigaddset"); ++ ++ function sigdelset (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigdelset, "sigdelset"); ++ ++ function sigfillset (set : access sigset_t) return int; ++ pragma Import (C, sigfillset, "sigfillset"); ++ ++ function sigismember (set : access sigset_t; sig : Signal) return int; ++ pragma Import (C, sigismember, "sigismember"); ++ ++ function sigemptyset (set : access sigset_t) return int; ++ pragma Import (C, sigemptyset, "sigemptyset"); ++ ++ -- sigcontext is architecture dependent, so define it private ++ type struct_sigcontext is private; ++ ++ type struct_sigaction is record ++ sa_handler : System.Address; ++ sa_flags : int; ++ sa_mask : sigset_t; ++ end record; ++ pragma Convention (C, struct_sigaction); ++ ++ type struct_sigaction_ptr is access all struct_sigaction; ++ ++ SIG_BLOCK : constant := 1; ++ SIG_UNBLOCK : constant := 2; ++ SIG_SETMASK : constant := 3; ++ ++ SIG_DFL : constant := 0; ++ SIG_IGN : constant := 1; ++ ++ SA_SIGINFO : constant := 16#0040#; ++ ++ function sigaction ++ (sig : Signal; ++ act : struct_sigaction_ptr; ++ oact : struct_sigaction_ptr) return int; ++ pragma Import (C, sigaction, "sigaction"); ++ ++ ---------- ++ -- Time -- ++ ---------- ++ ++ type timespec is private; ++ ++ function To_Duration (TS : timespec) return Duration; ++ pragma Inline (To_Duration); ++ ++ function To_Timespec (D : Duration) return timespec; ++ pragma Inline (To_Timespec); ++ ++ type struct_timeval is private; ++ ++ function To_Duration (TV : struct_timeval) return Duration; ++ pragma Inline (To_Duration); ++ ++ function To_Timeval (D : Duration) return struct_timeval; ++ pragma Inline (To_Timeval); ++ ++ function gettimeofday ++ (tv : access struct_timeval; ++ tz : System.Address := System.Null_Address) return int; ++ pragma Import (C, gettimeofday, "gettimeofday"); ++ ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++ ++ SC_CLK_TCK : constant := 2; ++ ++ ------------------------- ++ -- Priority Scheduling -- ++ ------------------------- ++ ++ SCHED_FIFO : constant := 1; ++ SCHED_OTHER : constant := 2; ++ SCHED_RR : constant := 3; ++ ++ ------------- ++ -- Process -- ++ ------------- ++ ++ type pid_t is private; ++ ++ function kill (pid : pid_t; sig : Signal) return int; ++ pragma Import (C, kill, "kill"); ++ ++ function getpid return pid_t; ++ pragma Import (C, getpid, "getpid"); ++ ++ ------------- ++ -- Threads -- ++ ------------- ++ ++ type Thread_Body is access ++ function (arg : System.Address) return System.Address; ++ ++ function Thread_Body_Access is new ++ Unchecked_Conversion (System.Address, Thread_Body); ++ ++ type pthread_t is new unsigned_long; ++ subtype Thread_Id is pthread_t; ++ ++ function To_pthread_t is new Unchecked_Conversion ++ (unsigned_long, pthread_t); ++ ++ type pthread_mutex_t is limited private; ++ type pthread_cond_t is limited private; ++ type pthread_attr_t is limited private; ++ type pthread_mutexattr_t is limited private; ++ type pthread_condattr_t is limited private; ++ type pthread_key_t is private; ++ ++ PTHREAD_CREATE_DETACHED : constant := 1; ++ ++ ----------- ++ -- Stack -- ++ ----------- ++ ++ function Get_Stack_Base (thread : pthread_t) return Address; ++ pragma Inline (Get_Stack_Base); ++ -- This is a dummy procedure to share some GNULLI files ++ ++ --------------------------------------- ++ -- Nonstandard Thread Initialization -- ++ --------------------------------------- ++ ++ procedure pthread_init; ++ pragma Inline (pthread_init); ++ -- This is a dummy procedure to share some GNULLI files ++ ++ ------------------------- ++ -- POSIX.1c Section 3 -- ++ ------------------------- ++ ++ function sigwait (set : access sigset_t; sig : access Signal) return int; ++ pragma Import (C, sigwait, "sigwait"); ++ ++ function pthread_kill (thread : pthread_t; sig : Signal) return int; ++ pragma Import (C, pthread_kill, "pthread_kill"); ++ ++ type sigset_t_ptr is access all sigset_t; ++ ++ function pthread_sigmask ++ (how : int; ++ set : sigset_t_ptr; ++ oset : sigset_t_ptr) return int; ++ pragma Import (C, pthread_sigmask, "pthread_sigmask"); ++ ++ -------------------------- ++ -- POSIX.1c Section 11 -- ++ -------------------------- ++ ++ function pthread_mutexattr_init ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init"); ++ ++ function pthread_mutexattr_destroy ++ (attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy"); ++ ++ function pthread_mutex_init ++ (mutex : access pthread_mutex_t; ++ attr : access pthread_mutexattr_t) return int; ++ pragma Import (C, pthread_mutex_init, "pthread_mutex_init"); ++ ++ function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy"); ++ ++ function pthread_mutex_lock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock"); ++ ++ function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock"); ++ ++ function pthread_condattr_init ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_init, "pthread_condattr_init"); ++ ++ function pthread_condattr_destroy ++ (attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy"); ++ ++ function pthread_cond_init ++ (cond : access pthread_cond_t; ++ attr : access pthread_condattr_t) return int; ++ pragma Import (C, pthread_cond_init, "pthread_cond_init"); ++ ++ function pthread_cond_destroy (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy"); ++ ++ function pthread_cond_signal (cond : access pthread_cond_t) return int; ++ pragma Import (C, pthread_cond_signal, "pthread_cond_signal"); ++ ++ function pthread_cond_wait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t) return int; ++ pragma Import (C, pthread_cond_wait, "pthread_cond_wait"); ++ ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ Relative_Timed_Wait : constant Boolean := False; ++ -- pthread_cond_timedwait requires an absolute delay time ++ ++ -------------------------- ++ -- POSIX.1c Section 13 -- ++ -------------------------- ++ ++ type struct_sched_param is record ++ sched_priority : int; -- scheduling priority ++ end record; ++ pragma Convention (C, struct_sched_param); ++ ++ function pthread_setschedparam ++ (thread : pthread_t; ++ policy : int; ++ param : access struct_sched_param) return int; ++ pragma Import (C, pthread_setschedparam, "pthread_setschedparam"); ++ ++ function pthread_attr_setschedpolicy ++ (attr : access pthread_attr_t; ++ policy : int) return int; ++ pragma Import ++ (C, pthread_attr_setschedpolicy, "pthread_attr_setschedpolicy"); ++ ++ function sched_yield return int; ++ pragma Import (C, sched_yield, "sched_yield"); ++ ++ --------------------------- ++ -- P1003.1c - Section 16 -- ++ --------------------------- ++ ++ function pthread_attr_init ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_init, "pthread_attr_init"); ++ ++ function pthread_attr_destroy ++ (attributes : access pthread_attr_t) return int; ++ pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy"); ++ ++ function pthread_attr_setdetachstate ++ (attr : access pthread_attr_t; ++ detachstate : int) return int; ++ pragma Import ++ (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate"); ++ ++ function pthread_attr_setstacksize ++ (attr : access pthread_attr_t; ++ stacksize : size_t) return int; ++ pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize"); ++ ++ function pthread_create ++ (thread : access pthread_t; ++ attributes : access pthread_attr_t; ++ start_routine : Thread_Body; ++ arg : System.Address) return int; ++ pragma Import (C, pthread_create, "pthread_create"); ++ ++ procedure pthread_exit (status : System.Address); ++ pragma Import (C, pthread_exit, "pthread_exit"); ++ ++ function pthread_self return pthread_t; ++ pragma Import (C, pthread_self, "pthread_self"); ++ ++ -------------------------- ++ -- POSIX.1c Section 17 -- ++ -------------------------- ++ ++ function pthread_setspecific ++ (key : pthread_key_t; ++ value : System.Address) return int; ++ pragma Import (C, pthread_setspecific, "pthread_setspecific"); ++ ++ function pthread_getspecific (key : pthread_key_t) return System.Address; ++ pragma Import (C, pthread_getspecific, "pthread_getspecific"); ++ ++ type destructor_pointer is access procedure (arg : System.Address); ++ ++ function pthread_key_create ++ (key : access pthread_key_t; ++ destructor : destructor_pointer) return int; ++ pragma Import (C, pthread_key_create, "pthread_key_create"); ++ ++private ++ ++ type sigset_t is array (1 .. 4) of unsigned; ++ ++ -- In FreeBSD the component sa_handler turns out to ++ -- be one a union type, and the selector is a macro: ++ -- #define sa_handler __sigaction_u._handler ++ -- #define sa_sigaction __sigaction_u._sigaction ++ ++ -- Should we add a signal_context type here ? ++ -- How could it be done independent of the CPU architecture ? ++ -- sigcontext type is opaque, so it is architecturally neutral. ++ -- It is always passed as an access type, so define it as an empty record ++ -- since the contents are not used anywhere. ++ type struct_sigcontext is null record; ++ pragma Convention (C, struct_sigcontext); ++ ++ type pid_t is new int; ++ ++ type time_t is new long; ++ ++ type timespec is record ++ tv_sec : time_t; ++ tv_nsec : long; ++ end record; ++ pragma Convention (C, timespec); ++ ++ type struct_timeval is record ++ tv_sec : time_t; ++ tv_usec : time_t; ++ end record; ++ pragma Convention (C, struct_timeval); ++ ++ type pthread_attr_t is record ++ detachstate : int; ++ schedpolicy : int; ++ schedparam : struct_sched_param; ++ inheritsched : int; ++ scope : int; ++ guardsize : size_t; ++ stackaddr_set : int; ++ stackaddr : System.Address; ++ stacksize : size_t; ++ end record; ++ pragma Convention (C, pthread_attr_t); ++ ++ type pthread_condattr_t is record ++ dummy : int; ++ end record; ++ pragma Convention (C, pthread_condattr_t); ++ ++ type pthread_mutexattr_t is record ++ mutexkind : int; ++ end record; ++ pragma Convention (C, pthread_mutexattr_t); ++ ++ type struct_pthread_fast_lock is record ++ status : long; ++ spinlock : int; ++ end record; ++ pragma Convention (C, struct_pthread_fast_lock); ++ ++ type pthread_mutex_t is record ++ m_reserved : int; ++ m_count : int; ++ m_owner : System.Address; ++ m_kind : int; ++ m_lock : struct_pthread_fast_lock; ++ end record; ++ pragma Convention (C, pthread_mutex_t); ++ ++ type pthread_cond_t is array (0 .. 47) of unsigned_char; ++ pragma Convention (C, pthread_cond_t); ++ ++ type pthread_key_t is new unsigned; ++ ++end System.OS_Interface; --- gcj-4.2-4.2-20070707.orig/debian/patches/deb-protoize.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/deb-protoize.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# DP: build protoize/unprotoize binaries + +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $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 -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/Makefile.in.old 2006-04-02 00:12:07.360106584 +0200 ++++ gcc/Makefile.in 2006-04-02 00:13:16.211639560 +0200 +@@ -131,7 +131,7 @@ + + # 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) + + # Selection of languages to be made during stage1 build. + BOOT_LANGUAGES = c @all_boot_languages@ +@@ -3054,7 +3054,7 @@ + coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ +- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + +@@ -3062,7 +3062,7 @@ + $(CONFIG_H) $(SYSTEM_H) Makefile version.h + (SHLIB_LINK='$(SHLIB_LINK)' \ + SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ +- $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ ++ $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) -Wno-error \ + $(DRIVER_DEFINES) \ + $(srcdir)/protoize.c $(OUTPUT_OPTION)) + --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-peephole.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-peephole.dpatch @@ -0,0 +1,312 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Convert some text peepholes to rtl peepholes, so the correct +# DP: DWARF2 information can be generated for stack manipulations. +# DP: (Keep a few peepholes temporarily disabled.) + +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 + +--- + + gcc/config/m68k/m68k.h | 2 + gcc/config/m68k/m68k.md | 227 +++++++++++++++++++----------------------------- + 2 files changed, 91 insertions(+), 138 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -631,7 +631,7 @@ __transfer_from_trampoline () \ + #define DATA_REG_P(X) (REG_P (X) && REGNO_OK_FOR_DATA_P (REGNO (X))) + + /* 1 if X is an fp register. */ +-#define FP_REG_P(X) (REG_P (X) && REGNO_OK_FOR_FP_P (REGNO (X))) ++#define FP_REG_P(X) (REG_P (X) && (REGNO (X) ^ 020) < 8) + + /* 1 if X is an address register */ + #define ADDRESS_REG_P(X) (REG_P (X) && REGNO_OK_FOR_BASE_P (REGNO (X))) +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -665,13 +665,23 @@ + } + }) + +-;; General case of fullword move. The register constraints +-;; force integer constants in range for a moveq to be reloaded +-;; if they are headed for memory. ++;; General case of fullword move. + (define_insn "" + ;; Notes: make sure no alternative allows g vs g. + ;; We don't allow f-regs since fixed point cannot go in them. + [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") ++ (match_operand:SI 1 "general_src_operand" "daymSnT,n,i"))] ++ ++ "!TARGET_COLDFIRE && reload_completed" ++{ ++ return output_move_simode (operands); ++}) ++ ++;; Before reload is completed the register constraints ++;; force integer constants in range for a moveq to be reloaded ++;; if they are headed for memory. ++(define_insn "" ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") + (match_operand:SI 1 "general_src_operand" "daymSKT,n,i"))] + + "!TARGET_COLDFIRE" +@@ -6594,154 +6604,97 @@ + ;; and then is moved into an FP register. + ;; But it is mainly intended to test the support for these optimizations. + +-(define_peephole ++(define_peephole2 + [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int 4))) +- (set (match_operand:DF 0 "register_operand" "=f") +- (match_operand:DF 1 "register_operand" "ad"))] +- "FP_REG_P (operands[0]) && ! FP_REG_P (operands[1])" +-{ +- rtx xoperands[2]; +- xoperands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); +- output_asm_insn ("move%.l %1,%@", xoperands); +- output_asm_insn ("move%.l %1,%-", operands); +- return "fmove%.d %+,%0"; +-}) ++ (set (match_operand:DF 0 "register_operand" "") ++ (match_operand:DF 1 "register_operand" ""))] ++ "FP_REG_P (operands[0]) && !FP_REG_P (operands[1])" ++ [(set (mem:SI (reg:SI SP_REG)) (match_dup 1)) ++ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 2)) ++ (set (match_dup 0) (mem:DF (post_inc:SI (reg:SI SP_REG))))] ++ "split_di(operands + 1, 1, operands + 1, operands + 2);") + + ;; Optimize a stack-adjust followed by a push of an argument. + ;; This is said to happen frequently with -msoft-float + ;; when there are consecutive library calls. + +-(define_peephole ++(define_peephole2 ++ [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int 4))) ++ (set (mem:SF (pre_dec:SI (reg:SI SP_REG))) ++ (match_operand:SF 0 "general_operand" ""))] ++ "!reg_mentioned_p (stack_pointer_rtx, operands[0])" ++ [(set (mem:SF (reg:SI SP_REG)) (match_dup 0))] ++ "") ++ ++(define_peephole2 + [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) +- (match_operand:SI 0 "const_int_operand" "n"))) +- (set (match_operand:SF 1 "push_operand" "=m") +- (match_operand:SF 2 "general_operand" "rmfF"))] +- "INTVAL (operands[0]) >= 4 +- && ! reg_mentioned_p (stack_pointer_rtx, operands[2])" +-{ +- if (INTVAL (operands[0]) > 4) +- { +- rtx xoperands[2]; +- xoperands[0] = stack_pointer_rtx; +- xoperands[1] = GEN_INT (INTVAL (operands[0]) - 4); +- if (INTVAL (xoperands[1]) <= 8) +- { +- if (!TARGET_COLDFIRE) +- output_asm_insn ("addq%.w %1,%0", xoperands); +- else +- output_asm_insn ("addq%.l %1,%0", xoperands); +- } +- else if (TARGET_CPU32 && INTVAL (xoperands[1]) <= 16) +- { +- xoperands[1] = GEN_INT (INTVAL (xoperands[1]) - 8); +- output_asm_insn ("addq%.w #8,%0\;addq%.w %1,%0", xoperands); +- } +- else if (INTVAL (xoperands[1]) <= 0x7FFF) +- { +- if (TARGET_68040) +- output_asm_insn ("add%.w %1,%0", xoperands); +- else if (MOTOROLA) +- output_asm_insn ("lea (%c1,%0),%0", xoperands); +- else +- output_asm_insn ("lea %0@(%c1),%0", xoperands); +- } +- else +- output_asm_insn ("add%.l %1,%0", xoperands); +- } +- if (FP_REG_P (operands[2])) +- return "fmove%.s %2,%@"; +- return "move%.l %2,%@"; +-}) ++ (match_operand:SI 0 "const_int_operand" ""))) ++ (set (mem:SF (pre_dec:SI (reg:SI SP_REG))) ++ (match_operand:SF 1 "general_operand" ""))] ++ "INTVAL (operands[0]) > 4 ++ && !reg_mentioned_p (stack_pointer_rtx, operands[1])" ++ [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_dup 0))) ++ (set (mem:SF (reg:SI SP_REG)) (match_dup 1))] ++ "operands[0] = GEN_INT (INTVAL (operands[0]) - 4);") + + ;; Speed up stack adjust followed by a fullword fixedpoint push. + +-(define_peephole ++(define_peephole2 ++ [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int 4))) ++ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) ++ (match_operand:SI 0 "general_operand" ""))] ++ "!reg_mentioned_p (stack_pointer_rtx, operands[0])" ++ [(set (mem:SI (reg:SI SP_REG)) (match_dup 0))] ++ "") ++ ++(define_peephole2 + [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) +- (match_operand:SI 0 "const_int_operand" "n"))) +- (set (match_operand:SI 1 "push_operand" "=m") +- (match_operand:SI 2 "general_operand" "g"))] +- "INTVAL (operands[0]) >= 4 +- && ! reg_mentioned_p (stack_pointer_rtx, operands[2])" +-{ +- if (INTVAL (operands[0]) > 4) +- { +- rtx xoperands[2]; +- xoperands[0] = stack_pointer_rtx; +- xoperands[1] = GEN_INT (INTVAL (operands[0]) - 4); +- if (INTVAL (xoperands[1]) <= 8) +- { +- if (!TARGET_COLDFIRE) +- output_asm_insn ("addq%.w %1,%0", xoperands); +- else +- output_asm_insn ("addq%.l %1,%0", xoperands); +- } +- else if (TARGET_CPU32 && INTVAL (xoperands[1]) <= 16) +- { +- xoperands[1] = GEN_INT (INTVAL (xoperands[1]) - 8); +- output_asm_insn ("addq%.w #8,%0\;addq%.w %1,%0", xoperands); +- } +- else if (INTVAL (xoperands[1]) <= 0x7FFF) +- { +- if (TARGET_68040) +- output_asm_insn ("add%.w %1,%0", xoperands); +- else if (MOTOROLA) +- output_asm_insn ("lea (%c1,%0),%0", xoperands); +- else +- output_asm_insn ("lea %0@(%c1),%0", xoperands); +- } +- else +- output_asm_insn ("add%.l %1,%0", xoperands); +- } +- if (operands[2] == const0_rtx) +- return "clr%.l %@"; +- return "move%.l %2,%@"; +-}) ++ (match_operand:SI 0 "const_int_operand" ""))) ++ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) ++ (match_operand:SI 1 "general_operand" ""))] ++ "INTVAL (operands[0]) > 4 ++ && !reg_mentioned_p (stack_pointer_rtx, operands[1])" ++ [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_dup 0))) ++ (set (mem:SI (reg:SI SP_REG)) (match_dup 1))] ++ "operands[0] = GEN_INT (INTVAL (operands[0]) - 4);") + + ;; Speed up pushing a single byte but leaving four bytes of space. + +-(define_peephole +- [(set (mem:QI (pre_dec:SI (reg:SI SP_REG))) +- (match_operand:QI 1 "general_operand" "dami")) +- (set (reg:SI SP_REG) (minus:SI (reg:SI SP_REG) (const_int 2)))] +- "! reg_mentioned_p (stack_pointer_rtx, operands[1])" +-{ +- rtx xoperands[4]; +- +- if (GET_CODE (operands[1]) == REG) +- return "move%.l %1,%-"; +- +- xoperands[1] = operands[1]; +- xoperands[2] +- = gen_rtx_MEM (QImode, plus_constant (stack_pointer_rtx, 3)); +- xoperands[3] = stack_pointer_rtx; +- if (!TARGET_COLDFIRE) +- output_asm_insn ("subq%.w #4,%3\;move%.b %1,%2", xoperands); +- else +- output_asm_insn ("subq%.l #4,%3\;move%.b %1,%2", xoperands); +- return ""; +-}) +- +-(define_peephole +- [(set (match_operand:SI 0 "register_operand" "=d") +- (const_int 0)) +- (set (strict_low_part (subreg:HI (match_dup 0) 2)) +- (match_operand:HI 1 "general_operand" "rmn"))] +- "strict_low_part_peephole_ok (HImode, prev_nonnote_insn (insn), operands[0])" +-{ +- if (GET_CODE (operands[1]) == CONST_INT) +- { +- if (operands[1] == const0_rtx +- && (DATA_REG_P (operands[0]) +- || GET_CODE (operands[0]) == MEM) +- /* clr insns on 68000 read before writing. +- This isn't so on the 68010, but we have no TARGET_68010. */ +- && ((TARGET_68020 || TARGET_COLDFIRE) +- || !(GET_CODE (operands[0]) == MEM +- && MEM_VOLATILE_P (operands[0])))) +- return "clr%.w %0"; +- } +- return "move%.w %1,%0"; +-}) ++(define_peephole2 ++ [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -4))) ++ (set (mem:QI (plus:SI (reg:SI SP_REG) (const_int 3))) ++ (match_operand:QI 0 "register_operand" ""))] ++ "!reg_mentioned_p (stack_pointer_rtx, operands[0])" ++ [(set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 0))] ++ "operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));") ++ ++(define_peephole2 ++ [(set (mem:HI (pre_dec:SI (reg:SI SP_REG))) ++ (match_operand:HI 0 "register_operand" "")) ++ (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -2)))] ++ "!reg_mentioned_p (stack_pointer_rtx, operands[0])" ++ [(set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 0))] ++ "operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));") ++ ++;;(define_peephole2 ++;; [(set (match_operand:SI 0 "register_operand" "") ++;; (const_int 0)) ++;; (set (strict_low_part (match_operand:HI 1 "register_operand" "")) ++;; (match_operand:HI 2 "general_operand" ""))] ++;; "REGNO (operands[0]) == REGNO (operands[1]) ++;; && strict_low_part_peephole_ok (HImode, insn, operands[0])" ++;; [(set (strict_low_part (match_dup 1)) (match_dup 2))] ++;; "") ++;; ++;;(define_peephole2 ++;; [(set (match_operand:SI 0 "register_operand" "") ++;; (const_int 0)) ++;; (set (strict_low_part (match_operand:QI 1 "register_operand" "")) ++;; (match_operand:QI 2 "general_operand" ""))] ++;; "REGNO (operands[0]) == REGNO (operands[1]) ++;; && strict_low_part_peephole_ok (QImode, insn, operands[0])" ++;; [(set (strict_low_part (match_dup 1)) (match_dup 2))] ++;; "") + + ;; dbCC peepholes + ;; --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-noautoinc-setjmp.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-noautoinc-setjmp.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: don't attempt autoinc in a function using setjmp +# DP: (otherwise it might modify a variable expected to be unmodified) + +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 + +--- + + gcc/flow.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: gcc-4.1/gcc/flow.c +=================================================================== +--- gcc-4.1.orig/gcc/flow.c ++++ gcc-4.1/gcc/flow.c +@@ -3601,7 +3601,7 @@ find_auto_inc (struct propagate_block_in + int regno; + int size = GET_MODE_SIZE (GET_MODE (x)); + +- if (JUMP_P (insn)) ++ if (JUMP_P (insn) || current_function_calls_setjmp) + return; + + /* Here we detect use of an index register which might be good for --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-biarch-awt.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-biarch-awt.dpatch @@ -0,0 +1,105 @@ +#! /bin/sh -e + +# DP: + +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 -p0 < $0 + cd ${dir}libjava && aclocal -I ../config -I .. -I . && autoconf -I ../config -I .. -I . + #cd - >/dev/null + #cd ${dir}libjava/classpath && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/configure.ac.orig 2006-08-19 21:29:33.603803000 +0200 ++++ libjava/configure.ac 2006-08-19 21:36:07.803803000 +0200 +@@ -200,6 +200,23 @@ + + for peer in $peerlibs ; do + case $peer in ++ xlib-*|gtk-*|qt-*) ++ real=$(echo $peer | sed -e 's/^\(.*\)-.*$/\1/') ++ condition=$(echo $peer | sed -e 's/^.*-\(.*\)$/\1/') ++ if test -z "${with_multisubdir}" && test "$condition" = default; then ++ new_peerlibs="$new_peerlibs $real" ++ elif test "${with_multisubdir}" && test "$condition" = "${with_multisubdir}"; then ++ new_peerlibs="$new_peerlibs $real" ++ fi ++ ;; ++ *) ++ new_peerlibs="$new_peerlibs $peer" ++ ;; ++ esac ++done ++ ++for peer in $new_peerlibs ; do ++ case $peer in + xlib) + if test "$no_x" = yes; then + echo "*** xlib peers requested but no X library available" 1>&2 +@@ -290,13 +307,21 @@ + else + # We are being configured with a native or crossed-native compiler + if test -x "${built_gcc_dir}/gcj${ac_exeext}"; then +- if test x"$build" = x"$host"; then ++ if test x"$with_multisubdir" = x32; then ++ which_gcj=built ++ elif test x"$with_multisubdir" = x64; then ++ which_gcj=built ++ elif test x"$build" = x"$host"; then + # True native build (host=target and host=build) + which_gcj=built + else + # Crossed-native build (host=target and host!=build) + which_gcj=cross + fi ++ # Debian ... ++ case "$with_multisubdir" in ++ *-linux-gnu) which_gcj=built;; ++ esac + else + which_gcj=path + fi +@@ -335,7 +360,12 @@ + ac_configure_args="$ac_configure_args --enable-tool-wrappers" + ac_configure_args="$ac_configure_args --disable-load-library" + ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug" +-ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT" ++if test -n "$with_multisubdir"; then ++ ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT --disable-gconf-peer" ++ use_gtk_awt=no ++ use_qt_awt=no ++ plugin_enabled=no ++fi + dir1=`cd $srcdir && pwd` + dir2=`pwd` + ac_configure_args="$ac_configure_args --with-vm-classes=$dir1:$dir2" +@@ -1157,9 +1187,12 @@ + AC_SUBST(LIBART_LIBS) + + # We require the XTest Extension to support java.awt.Robot. +- AC_CHECK_LIB([Xtst], [XTestQueryExtension], [true], ++ if test -z "$with_multisubdir"; then ++ AC_CHECK_LIB([Xtst], [XTestQueryExtension], [true], + [AC_MSG_ERROR([libXtst not found, required by java.awt.Robot])], + [${X_LIBS}]) ++ fi ++ # Debian: guaranteed by the libxtst-dev build dependency + fi + + # On Solaris, and maybe other architectures, the Boehm collector --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-pr30486.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-pr30486.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: Fix 30486 on ARM + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: trunk/gcc/fortran/trans-types.c +=================================================================== +--- trunk/gcc/fortran/trans-types.c (revision 170435) ++++ trunk/gcc/fortran/trans-types.c (working copy) +@@ -1800,6 +1800,13 @@ gfc_type_for_size (unsigned bits, int un + if (type && bits == TYPE_PRECISION (type)) + return type; + } ++ ++ /* Handle TImode as a special case because it is used by some backends ++ (eg. ARM) even though it is not available for normal use. */ ++#if HOST_BITS_PER_WIDE_INT >= 64 ++ if (bits == TYPE_PRECISION (intTI_type_node)) ++ return intTI_type_node; ++#endif + } + else + { + --- gcj-4.2-4.2-20070707.orig/debian/patches/pr20218.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/pr20218.dpatch @@ -0,0 +1,346 @@ +#! /bin/sh -e + +# DP: Backport from mainline for PR middle-end/17982, PR middle-end/20218. + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-12-07 H.J. Lu + + Backport from mainline: + 2006-12-11 H.J. Lu + PR middle-end/17982 + PR middle-end/20218 + * cgraphunit.c (cgraph_optimize): Remove call to + process_pending_assemble_externals. + + * config/elfos.h (ASM_OUTPUT_EXTERNAL): New. + + * config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed. + + * config/ia64/ia64.c (ia64_asm_output_external): Rewritten. + (ia64_hpux_add_extern_decl): Removed. + (ia64_hpux_file_end): Likewise. + (extern_func_list): Likewise. + (extern_func_head): Likewise. + + * output.h (assemble_external): Update comments. + (default_elf_asm_output_external): New. + (maybe_assemble_visibility): New. + + * toplev.c (compile_file): Update comment. + + * varasm.c (assemble_external): Always put it on + pending_assemble_externals. + (maybe_assemble_visibility): Make it extern and return int. + (default_elf_asm_output_external): New. + +--- gcc/cgraphunit.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/cgraphunit.c 2006-12-07 05:47:22.000000000 -0800 +@@ -1536,8 +1536,6 @@ cgraph_optimize (void) + return; + } + +- process_pending_assemble_externals (); +- + /* Frontend may output common variables after the unit has been finalized. + It is safe to deal with them here as they are always zero initialized. */ + cgraph_varpool_analyze_pending_decls (); +--- gcc/config/elfos.h.global 2006-11-30 12:45:20.000000000 -0800 ++++ gcc/config/elfos.h 2006-12-07 05:47:22.000000000 -0800 +@@ -499,3 +499,13 @@ Boston, MA 02110-1301, USA. */ + fprintf ((FILE), "\"\n"); \ + } \ + while (0) ++ ++/* A C statement (sans semicolon) to output to the stdio stream STREAM ++ any text necessary for declaring the name of an external symbol ++ named NAME whch is referenced in this compilation but not defined. ++ It is needed to properly support non-default visibility. */ ++ ++#ifndef ASM_OUTPUT_EXTERNAL ++#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \ ++ default_elf_asm_output_external (FILE, DECL, NAME) ++#endif +--- gcc/config/ia64/hpux.h.global 2006-10-29 17:03:12.000000000 -0800 ++++ gcc/config/ia64/hpux.h 2006-12-07 05:47:22.000000000 -0800 +@@ -144,10 +144,6 @@ do { \ + definitions, so do not use them in gthr-posix.h. */ + #define GTHREAD_USE_WEAK 0 + +-/* Put out the needed function declarations at the end. */ +- +-#define TARGET_ASM_FILE_END ia64_hpux_file_end +- + #undef CTORS_SECTION_ASM_OP + #define CTORS_SECTION_ASM_OP "\t.section\t.init_array,\t\"aw\",\"init_array\"" + +--- gcc/config/ia64/ia64.c.global 2006-12-07 05:45:17.000000000 -0800 ++++ gcc/config/ia64/ia64.c 2006-12-07 05:47:22.000000000 -0800 +@@ -255,10 +255,6 @@ static section *ia64_rwreloc_select_rtx_ + unsigned HOST_WIDE_INT) + ATTRIBUTE_UNUSED; + static unsigned int ia64_section_type_flags (tree, const char *, int); +-static void ia64_hpux_add_extern_decl (tree decl) +- ATTRIBUTE_UNUSED; +-static void ia64_hpux_file_end (void) +- ATTRIBUTE_UNUSED; + static void ia64_init_libfuncs (void) + ATTRIBUTE_UNUSED; + static void ia64_hpux_init_libfuncs (void) +@@ -5021,49 +5017,6 @@ ia64_secondary_reload_class (enum reg_cl + } + + +-/* Emit text to declare externally defined variables and functions, because +- the Intel assembler does not support undefined externals. */ +- +-void +-ia64_asm_output_external (FILE *file, tree decl, const char *name) +-{ +- int save_referenced; +- +- /* GNU as does not need anything here, but the HP linker does need +- something for external functions. */ +- +- if (TARGET_GNU_AS +- && (!TARGET_HPUX_LD +- || TREE_CODE (decl) != FUNCTION_DECL +- || strstr (name, "__builtin_") == name)) +- return; +- +- /* ??? The Intel assembler creates a reference that needs to be satisfied by +- the linker when we do this, so we need to be careful not to do this for +- builtin functions which have no library equivalent. Unfortunately, we +- can't tell here whether or not a function will actually be called by +- expand_expr, so we pull in library functions even if we may not need +- them later. */ +- if (! strcmp (name, "__builtin_next_arg") +- || ! strcmp (name, "alloca") +- || ! strcmp (name, "__builtin_constant_p") +- || ! strcmp (name, "__builtin_args_info")) +- return; +- +- if (TARGET_HPUX_LD) +- ia64_hpux_add_extern_decl (decl); +- else +- { +- /* assemble_name will set TREE_SYMBOL_REFERENCED, so we must save and +- restore it. */ +- save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)); +- if (TREE_CODE (decl) == FUNCTION_DECL) +- ASM_OUTPUT_TYPE_DIRECTIVE (file, name, "function"); +- (*targetm.asm_out.globalize_label) (file, name); +- TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) = save_referenced; +- } +-} +- + /* Parse the -mfixed-range= option string. */ + + static void +@@ -9174,55 +9127,33 @@ ia64_hpux_function_arg_padding (enum mac + return DEFAULT_FUNCTION_ARG_PADDING (mode, type); + } + +-/* Linked list of all external functions that are to be emitted by GCC. +- We output the name if and only if TREE_SYMBOL_REFERENCED is set in +- order to avoid putting out names that are never really used. */ +- +-struct extern_func_list GTY(()) +-{ +- struct extern_func_list *next; +- tree decl; +-}; +- +-static GTY(()) struct extern_func_list *extern_func_head; +- +-static void +-ia64_hpux_add_extern_decl (tree decl) +-{ +- struct extern_func_list *p = ggc_alloc (sizeof (struct extern_func_list)); +- +- p->decl = decl; +- p->next = extern_func_head; +- extern_func_head = p; +-} +- +-/* Print out the list of used global functions. */ ++/* Emit text to declare externally defined variables and functions, because ++ the Intel assembler does not support undefined externals. */ + +-static void +-ia64_hpux_file_end (void) ++void ++ia64_asm_output_external (FILE *file, tree decl, const char *name) + { +- struct extern_func_list *p; +- +- for (p = extern_func_head; p; p = p->next) +- { +- tree decl = p->decl; +- tree id = DECL_ASSEMBLER_NAME (decl); +- +- gcc_assert (id); +- +- if (!TREE_ASM_WRITTEN (decl) && TREE_SYMBOL_REFERENCED (id)) +- { +- const char *name = XSTR (XEXP (DECL_RTL (decl), 0), 0); +- +- TREE_ASM_WRITTEN (decl) = 1; +- (*targetm.asm_out.globalize_label) (asm_out_file, name); +- fputs (TYPE_ASM_OP, asm_out_file); +- assemble_name (asm_out_file, name); +- fprintf (asm_out_file, "," TYPE_OPERAND_FMT "\n", "function"); +- } ++ /* We output the name if and only if TREE_SYMBOL_REFERENCED is ++ set in order to avoid putting out names that are never really ++ used. */ ++ if (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))) ++ { ++ /* maybe_assemble_visibility will return 1 if the assembler ++ visibility directive is outputed. */ ++ int need_visibility = ((*targetm.binds_local_p) (decl) ++ && maybe_assemble_visibility (decl)); ++ ++ /* GNU as does not need anything here, but the HP linker does ++ need something for external functions. */ ++ if ((TARGET_HPUX_LD || !TARGET_GNU_AS) ++ && TREE_CODE (decl) == FUNCTION_DECL) ++ { ++ ASM_OUTPUT_TYPE_DIRECTIVE (file, name, "function"); ++ (*targetm.asm_out.globalize_label) (file, name); ++ } ++ else if (need_visibility && !TARGET_GNU_AS) ++ (*targetm.asm_out.globalize_label) (file, name); + } +- +- extern_func_head = 0; + } + + /* Set SImode div/mod functions, init_integral_libfuncs only initializes +--- gcc/output.h.global 2006-10-21 13:45:54.000000000 -0700 ++++ gcc/output.h 2006-12-07 05:47:22.000000000 -0800 +@@ -204,9 +204,9 @@ extern void assemble_variable (tree, int + DONT_OUTPUT_DATA is from assemble_variable. */ + extern void align_variable (tree decl, bool dont_output_data); + +-/* Output something to declare an external symbol to the assembler. +- (Most assemblers don't need this, so we normally output nothing.) +- Do nothing if DECL is not external. */ ++/* Queue for outputing something to declare an external symbol to the ++ assembler. (Most assemblers don't need this, so we normally output ++ nothing.) Do nothing if DECL is not external. */ + extern void assemble_external (tree); + + /* Assemble code to leave SIZE bytes of zeros. */ +@@ -619,6 +619,10 @@ 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 *); ++extern int maybe_assemble_visibility (tree); ++ + extern int default_address_cost (rtx); + + /* dbxout helper functions */ +--- gcc/toplev.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/toplev.c 2006-12-07 05:58:23.000000000 -0800 +@@ -1076,9 +1076,7 @@ compile_file (void) + + dw2_output_indirect_constants (); + +- /* Flush any pending external directives. cgraph did this for +- assemble_external calls from the front end, but the RTL +- expander can also generate them. */ ++ /* Flush any pending external directives. */ + process_pending_assemble_externals (); + + /* Attach a special .ident directive to the end of the file to identify +--- gcc/varasm.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/varasm.c 2006-12-07 05:49:16.000000000 -0800 +@@ -126,7 +126,6 @@ static unsigned HOST_WIDE_INT array_size + static unsigned min_align (unsigned, unsigned); + static void output_constructor (tree, unsigned HOST_WIDE_INT, unsigned int); + static void globalize_decl (tree); +-static void maybe_assemble_visibility (tree); + #ifdef BSS_SECTION_ASM_OP + #ifdef ASM_OUTPUT_BSS + static void asm_output_bss (FILE *, tree, const char *, +@@ -1964,11 +1963,10 @@ assemble_external (tree decl ATTRIBUTE_U + if (!DECL_P (decl) || !DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl)) + return; + +- if (flag_unit_at_a_time) +- pending_assemble_externals = tree_cons (0, decl, +- pending_assemble_externals); +- else +- assemble_external_real (decl); ++ /* We want to output external symbols at very last to check if they ++ are references or not. */ ++ pending_assemble_externals = tree_cons (0, decl, ++ pending_assemble_externals); + #endif + } + +@@ -5071,13 +5069,18 @@ default_assemble_visibility (tree decl, + + /* A helper function to call assemble_visibility when needed for a decl. */ + +-static void ++int + maybe_assemble_visibility (tree decl) + { + enum symbol_visibility vis = DECL_VISIBILITY (decl); + + if (vis != VISIBILITY_DEFAULT) +- targetm.asm_out.visibility (decl, vis); ++ { ++ targetm.asm_out.visibility (decl, vis); ++ return 1; ++ } ++ else ++ return 0; + } + + /* Returns 1 if the target configuration supports defining public symbols +@@ -6327,4 +6330,19 @@ elf_record_gcc_switches (print_switch_ty + return 0; + } + ++/* Emit text to declare externally defined symbols. It is needed to ++ properly support non-default visibility. */ ++void ++default_elf_asm_output_external (FILE *file ATTRIBUTE_UNUSED, ++ tree decl, ++ const char *name ATTRIBUTE_UNUSED) ++{ ++ /* We output the name if and only if TREE_SYMBOL_REFERENCED is ++ set in order to avoid putting out names that are never really ++ used. */ ++ if (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) ++ && targetm.binds_local_p (decl)) ++ maybe_assemble_visibility (decl); ++} ++ + #include "gt-varasm.h" --- gcj-4.2-4.2-20070707.orig/debian/patches/cpu-default-i486.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/cpu-default-i486.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: set default 32bit ix86 architecture to i486 + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/config/i386/i386.c~ 2006-04-02 00:14:35.841533976 +0200 ++++ gcc/config/i386/i386.c 2006-04-02 00:17:40.338486176 +0200 +@@ -1602,7 +1602,7 @@ + "-mtune=generic instead as appropriate."); + + if (!ix86_arch_string) +- ix86_arch_string = TARGET_64BIT ? "x86-64" : "i386"; ++ ix86_arch_string = TARGET_64BIT ? "x86-64" : "i486"; + if (!strcmp (ix86_arch_string, "generic")) + error ("generic CPU can be used only for -mtune= switch"); + if (!strncmp (ix86_arch_string, "generic", 7)) --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-bitfield.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-bitfield.dpatch @@ -0,0 +1,55 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Avoid propagation of mem expression past a zero_extract lvalue + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/gcse.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +Index: gcc-4.1/gcc/gcse.c +=================================================================== +--- gcc-4.1.orig/gcc/gcse.c ++++ gcc-4.1/gcc/gcse.c +@@ -5319,6 +5319,16 @@ compute_ld_motion_mems (void) + else + ptr->invalid = 1; + } ++ else if (GET_CODE (dest) == ZERO_EXTRACT) ++ { ++ dest = XEXP (dest, 0); ++ if (MEM_P (dest) && simple_mem (dest)) ++ { ++ ptr = ldst_entry (dest); ++ ptr->invalid = 1; ++ } ++ ++ } + } + else + invalidate_any_buried_refs (PATTERN (insn)); --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-driver-extra-langs.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-driver-extra-langs.dpatch @@ -0,0 +1,40 @@ +#! /bin/sh -e + +# DP: Add options and specs for languages that are not built from a source +# DP: (but built from separate sources). + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/Makefile.in~ 2006-07-11 14:03:25.865618000 +0200 ++++ gcc/Makefile.in 2006-07-11 21:15:30.011548776 +0200 +@@ -424,8 +424,8 @@ + xm_include_list=@xm_include_list@ + xm_defines=@xm_defines@ + lang_checks=check-gcc +-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,$(debian_extra_langs),$(srcdir)/$(lang)/lang.opt)) $(srcdir)/c.opt $(srcdir)/common.opt ++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(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@ --- gcj-4.2-4.2-20070707.orig/debian/patches/gccbug.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gccbug.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: Use sensible-editor instead of vi as fallback editor + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100 ++++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100 +@@ -134,7 +134,7 @@ + # If they don't have a preferred editor set, then use + if [ -z "$VISUAL" ]; then + if [ -z "$EDITOR" ]; then +- EDIT=vi ++ EDIT=/usr/bin/sensible-editor + else + EDIT="$EDITOR" + fi --- gcj-4.2-4.2-20070707.orig/debian/patches/cross-fixes.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/cross-fixes.dpatch @@ -0,0 +1,146 @@ +#! /bin/sh -e + +# DP: Fix the linker error when creating an xcc for ia64 + +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 + cd ${dir}gcc && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/ia64/fde-glibc.c gcc-4.0.0.new/gcc/config/ia64/fde-glibc.c +--- gcc-4.0.0.orig/gcc/config/ia64/fde-glibc.c 2003-11-02 18:35:20.000000000 +0100 ++++ gcc-4.0.0.new/gcc/config/ia64/fde-glibc.c 2005-05-15 02:42:27.675247674 +0200 +@@ -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, unsign + + return data.ret; + } ++ ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/ia64/unwind-ia64.c gcc-4.0.0.new/gcc/config/ia64/unwind-ia64.c +--- gcc-4.0.0.orig/gcc/config/ia64/unwind-ia64.c 2005-04-06 05:50:36.000000000 +0200 ++++ gcc-4.0.0.new/gcc/config/ia64/unwind-ia64.c 2005-05-15 02:43:10.842199954 +0200 +@@ -30,7 +30,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" +@@ -2404,3 +2404,4 @@ alias (_Unwind_SetIP); + #endif + + #endif ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/pa/linux-unwind.h gcc-4.0.0.new/gcc/config/pa/linux-unwind.h +--- gcc-4.0.0.orig/gcc/config/pa/linux-unwind.h 2005-02-11 02:46:20.000000000 +0100 ++++ gcc-4.0.0.new/gcc/config/pa/linux-unwind.h 2005-05-15 02:37:02.000000000 +0200 +@@ -29,6 +29,7 @@ Boston, MA 02111-1307, 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 + +@@ -136,3 +137,5 @@ pa32_fallback_frame_state (struct _Unwin + fs->retaddr_column = DWARF_ALT_FRAME_RETURN_COLUMN; + return _URC_NO_REASON; + } ++ ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/config/sh/linux-unwind.h gcc-4.0.0.new/gcc/config/sh/linux-unwind.h +--- gcc-4.0.0.orig/gcc/config/sh/linux-unwind.h 2005-02-11 02:12:57.000000000 +0100 ++++ gcc-4.0.0.new/gcc/config/sh/linux-unwind.h 2005-05-15 02:44:31.000000000 +0200 +@@ -29,6 +29,7 @@ Boston, MA 02111-1307, 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 + #include "insn-constants.h" +@@ -169,3 +170,4 @@ sh_fallback_frame_state (struct _Unwind_ + return _URC_NO_REASON; + } + #endif /* defined (__SH5__) */ ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/unwind-compat.c gcc-4.0.0.new/gcc/unwind-compat.c +--- gcc-4.0.0.orig/gcc/unwind-compat.c 2004-09-04 02:15:40.000000000 +0200 ++++ gcc-4.0.0.new/gcc/unwind-compat.c 2005-05-15 02:41:17.000000000 +0200 +@@ -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" +@@ -204,3 +205,4 @@ _Unwind_SetIP (struct _Unwind_Context *c + } + symver (_Unwind_SetIP, GCC_3.0); + #endif ++#endif +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.orig/gcc/unwind-generic.h gcc-4.0.0.new/gcc/unwind-generic.h +--- gcc-4.0.0.orig/gcc/unwind-generic.h 2004-11-30 09:15:39.000000000 +0100 ++++ gcc-4.0.0.new/gcc/unwind-generic.h 2005-05-15 02:38:33.000000000 +0200 +@@ -202,6 +202,7 @@ extern _Unwind_Reason_Code _Unwind_SjLj_ + compatible with the standard ABI for IA-64, we inline these. */ + + #ifdef __ia64__ ++#ifndef inhibit_libc + #include + + static inline _Unwind_Ptr +@@ -220,6 +221,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C + + /* @@@ 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 *); +diff -NurpP -x '*.orig' -x '*.libc' gcc-4.0.0.new/gcc/config/alpha/linux-unwind.h gcc-4.0.0.new2/gcc/config/alpha/linux-unwind.h +--- gcc-4.0.0.new/gcc/config/alpha/linux-unwind.h 2005-02-11 02:12:54.000000000 +0100 ++++ gcc-4.0.0.new2/gcc/config/alpha/linux-unwind.h 2005-05-15 05:09:16.000000000 +0200 +@@ -29,6 +29,7 @@ Boston, MA 02111-1307, 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 _Unwi + fs->retaddr_column = 64; + return _URC_NO_REASON; + } ++ ++#endif --- gcj-4.2-4.2-20070707.orig/debian/patches/gccbug-manpage.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gccbug-manpage.dpatch @@ -0,0 +1,182 @@ +#! /bin/sh -e + +# DP: add gccbug(1) manpage + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2003-03-11 Matthias Klose + + * Makefile.in (generated-manpages): Add $(docdir)/gccbug.1. + ($(docdir)/gccbug.1): Build from doc/bugreport.texi, + (maintainer-clean): Remove gccbug.1, + (install-man): Install gccbug.1. + * doc/bugreport.texi: Add manpage sections for gccbug(1). + (contributed by Omni Flux ). + Do not document options possibly unsupported by a future BTS. + * doc/.cvsignore: Add gccbug.1. + + +--- gcc/Makefile.in~ 2003-03-02 13:49:32.000000000 +0100 ++++ gcc/Makefile.in 2003-03-03 23:13:21.000000000 +0100 +@@ -2541,6 +2541,7 @@ + $(TEXI2DVI) -I $(docdir) -I $(docdir)/include $(docdir)/cppinternals.texi + + generated-manpages: $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 \ ++ $(docdir)/gccbug.1 \ + $(docdir)/gfdl.7 $(docdir)/gpl.7 $(docdir)/fsf-funding.7 \ + lang.generated-manpages + +@@ -2570,6 +2571,14 @@ + (rm -f $(docdir)/gcc.1.T$$$$ && exit 1) + -rm -f gcc.pod + ++$(docdir)/gccbug.1: $(docdir)/bugreport.texi ++ $(STAMP) $(docdir)/gccbug.1 ++ -$(TEXI2POD) $(docdir)/bugreport.texi > gccbug.pod ++ -($(POD2MAN) --section=1 gccbug.pod > $(docdir)/gccbug.1.T$$$$ && \ ++ mv -f $(docdir)/gccbug.1.T$$$$ $(docdir)/gccbug.1) || \ ++ (rm -f $(docdir)/gccbug.1.T$$$$ && exit 1) ++ -rm -f gccbug.pod ++ + $(docdir)/gfdl.7: $(docdir)/include/fdl.texi + $(STAMP) $(docdir)/gfdl.7 + -$(TEXI2POD) $(docdir)/include/fdl.texi > gfdl.pod +@@ -2736,6 +2745,7 @@ + -rm -f $(docdir)/cpp.info* $(docdir)/gcc.info* $(docdir)/gccint.info* + -rm -f $(docdir)/cppinternals.info* + -rm -f $(docdir)/gcov.1 $(docdir)/cpp.1 $(docdir)/gcc.1 ++ -rm -f $(docdir)/gccbug.1 + -rm -f $(docdir)/fsf-funding.7 $(docdir)/gfdl.7 $(docdir)/gpl.7 + # + # Entry points `install' and `uninstall'. +@@ -2893,6 +2903,9 @@ + $(INSTALL_DATA) $(docdir)/gcc.1 $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ + chmod a-x $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext); \ + fi ++ -rm -f $(DESTDIR)$(man1dir)/gccbug$(man1ext) ++ -$(INSTALL_DATA) $(docdir)/gccbug.1 $(DESTDIR)$(man1dir)/gccbug$(man1ext) ++ -chmod a-x $(DESTDIR)$(man1dir)/gccbug$(man1ext) + -rm -f $(DESTDIR)$(man1dir)/cpp$(man1ext) + -$(INSTALL_DATA) $(docdir)/cpp.1 $(DESTDIR)$(man1dir)/cpp$(man1ext) + -chmod a-x $(DESTDIR)$(man1dir)/cpp$(man1ext) +@@ -3069,6 +3082,7 @@ + -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) + -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/$(GCC_CROSS_NAME)$(man1ext) ++ -rm -rf $(DESTDIR)$(man1dir)/gccbug$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext) + +--- gcc/doc/bugreport.texi.old 2003-03-13 20:56:48.000000000 +0100 ++++ gcc/doc/bugreport.texi 2003-03-13 20:59:11.000000000 +0100 +@@ -374,6 +374,44 @@ + @section The gccbug script + @cindex gccbug script + ++@ignore ++@c man begin SYNOPSIS ++gccbug ++ [ @option{--cc} @var{mail-address} ] ++ [ @option{--version} ] | [ @option{--help} ] ++@c man end ++@c Set file name and title for the man page. ++@setfilename gccbug ++@settitle Reporting GCC Bugs ++@c man begin SEEALSO ++gcc(1), send-pr(1), send-pr(8), the info entries for @file{gcc} (node Bugs), ++and the online pages at @uref{http://gcc.gnu.org/bugs.html}. ++@c man end ++@c man begin DESCRIPTION ++@command{gccbug} is a version of GNU GNATS send-pr configured for GCC bug ++reporting. ++ ++Invoking @command{gccbug} calls the editor named in your environment ++variable @env{VISUAL} or @env{EDITOR} on a problem report template. ++ ++Your bug reports play an essential role in making GCC reliable. However ++since the maintainers are very overloaded, please first make sure that: ++@itemize @bullet ++@item ++The problem is not already known. See ++@uref{http://gcc.gnu.org/bugs.html#known} for a list of known bugs. ++If it isn't known, then you should report the problem. ++ ++You can browse the bug database for bugs reported at ++@uref{http://gcc.gnu.org/cgi-bin/gnatsweb.pl}. ++ ++@item ++You include the information that makes for fixing the bug. See ++@uref{http://gcc.gnu.org/bugs.html#report} for bug reporting instructions. ++@end itemize ++@c man end ++@end ignore ++ + To simplify creation of bug reports, and to allow better tracking of + reports, we use the GNATS bug tracking system. Part of that system is + the @command{gccbug} script. This is a Unix shell script, so you need a +@@ -382,9 +420,31 @@ + + The gccbug script is derived from send-pr, @pxref{using + send-pr,,Creating new Problem Reports,send-pr,Reporting Problems}. When +-invoked, it starts a text editor so you can fill out the various fields +-of the report. When the you quit the editor, the report is automatically ++invoked, it starts a text editor named in your environment variable ++@env{VISUAL} or @env{EDITOR} so you can fill out the various fields of ++the report. When the you quit the editor, the report is automatically + send to the bug reporting address. + + A number of fields in this bug report form are specific to GCC, and are + explained at @uref{http://gcc.gnu.org/gnats.html}. ++ ++The @command{gccbug} script accepts the following options: ++ ++@c man begin OPTIONS ++@table @gcctabopt ++ ++@item --cc @var{mail-address} ++Specifies the mail-address to which the PR should be carbon-copied. ++ ++@item --version ++Displays the @command{gccbug} version number and a usage summary. No mail ++is sent. ++ ++@item --help ++Displays a usage summary for @command{gccbug}. No mail is sent. ++@end table ++ ++@command{gccbug} has more (undocumented) options, which may be ++unsupported by a future GCC bug tracking system. ++ ++@c man end + +#--- gcc/doc/.cvsignore~ 2002-06-26 20:27:50.000000000 +0200 +#+++ gcc/doc/.cvsignore 2003-03-13 21:07:13.000000000 +0100 +#@@ -4,6 +4,7 @@ +# cpp.info* +# cppinternals.info* +# gcc.1 +#+gccbug.1 +# cpp.1 +# gcov.1 +# gfdl.7 + --- gcj-4.2-4.2-20070707.orig/debian/patches/pr28102.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/pr28102.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: Apply proposed fix for PR target/28102. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2006-07-15 Alfred M. Szmidt + + * config/i386/gnu.h (TARGET_C99_FUNCTIONS): Undefine macro. + +Index: gcc/config/i386/gnu.h +=================================================================== +--- gcc/config/i386/gnu.h (revision 115472) ++++ gcc/config/i386/gnu.h (working copy) +@@ -36,3 +36,5 @@ + + /* FIXME: Is a Hurd-specific fallback mechanism necessary? */ + #undef MD_UNWIND_SUPPORT ++ ++#undef TARGET_C99_FUNCTIONS /* config.gcc includes i386/linux.h. */ + + --- gcj-4.2-4.2-20070707.orig/debian/patches/cross-include.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/cross-include.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Set cross include path to .../include, not .../sys-include +# DP: This should be a fix for famous limits.h issue + +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 -p0 < $0 + cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir}gcc && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/configure.ac.orig 2005-08-24 06:24:11.000000000 +0400 ++++ gcc/configure.ac 2005-12-06 00:40:45.000000000 +0300 +@@ -681,7 +681,7 @@ + ], [ + TARGET_SYSTEM_ROOT= + TARGET_SYSTEM_ROOT_DEFINE= +- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include' ++ CROSS_SYSTEM_HEADER_DIR='$(prefix)/$(target_noncanonical)/include' + ]) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-textdomain.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-textdomain.dpatch @@ -0,0 +1,103 @@ +#! /bin/sh -e + +# DP: Set gettext's domain and textdomain to the versioned package name. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/Makefile.in.orig 2005-09-04 23:32:54.003440040 +0000 ++++ gcc/Makefile.in 2005-09-04 23:40:10.954013456 +0000 +@@ -4565,8 +4565,8 @@ + 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.2.mo; \ ++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-4.2.mo; \ + done + + # Rule for regenerating the message template (gcc.pot). +--- gcc/intl.c.orig 2005-09-04 23:32:54.006439584 +0000 ++++ gcc/intl.c 2005-09-04 23:36:37.933397512 +0000 +@@ -51,8 +51,8 @@ + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("gcc-4.2", LOCALEDIR); ++ (void) textdomain ("gcc-4.2"); + + /* Opening quotation mark. */ + open_quote = _("`"); +--- libcpp/Makefile.in.orig 2005-09-04 23:32:54.009439128 +0000 ++++ libcpp/Makefile.in 2005-09-04 23:33:24.607787472 +0000 +@@ -47,6 +47,7 @@ + LIBICONV = @LIBICONV@ + LIBINTL = @LIBINTL@ + PACKAGE = @PACKAGE@ ++PACKAGE_SUFFIX = -4.2 + RANLIB = @RANLIB@ + SHELL = @SHELL@ + USED_CATALOGS = @USED_CATALOGS@ +@@ -66,6 +67,7 @@ + + INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ + -I$(srcdir)/include ++CPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" + + ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) + +@@ -156,8 +158,8 @@ + 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: +--- libcpp/system.h.orig 2005-09-04 23:32:54.006439584 +0000 ++++ libcpp/system.h 2005-09-04 23:33:24.606787624 +0000 +@@ -260,7 +260,7 @@ + #endif + + #ifndef _ +-# define _(msgid) dgettext (PACKAGE, msgid) ++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) + #endif + + #ifndef N_ +--- libcpp/init.c.orig 2005-09-04 23:32:54.008439280 +0000 ++++ libcpp/init.c 2005-09-04 23:33:24.607787472 +0000 +@@ -122,7 +122,7 @@ + init_trigraph_map (); + + #ifdef ENABLE_NLS +- (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); + #endif + } + } --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-symbolic-operand.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-symbolic-operand.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: better recognize symbolic operands in addresses + +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 + +--- + gcc/config/m68k/m68k.h | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -718,9 +718,7 @@ __transfer_from_trampoline () \ + && (TARGET_68020 \ + || ((unsigned) INTVAL (XEXP (X, 1)) + 0x8000) < 0x10000)) \ + || (GET_CODE (X) == PLUS && XEXP (X, 0) == pic_offset_table_rtx \ +- && flag_pic && GET_CODE (XEXP (X, 1)) == SYMBOL_REF) \ +- || (GET_CODE (X) == PLUS && XEXP (X, 0) == pic_offset_table_rtx \ +- && flag_pic && GET_CODE (XEXP (X, 1)) == LABEL_REF)) ++ && flag_pic && symbolic_operand (XEXP (X, 1), VOIDmode))) \ + + #define GO_IF_NONINDEXED_ADDRESS(X, ADDR) \ + { if (INDIRECTABLE_1_ADDRESS_P (X)) goto ADDR; } --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-driver-check-trunk.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-driver-check-trunk.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Simplify Ada driver check (we always build using the required +# DP: Ada version. Needed for warnings on alpha. + +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 -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- config/acx.m4~ 2005-12-15 14:59:17.000000000 +0100 ++++ config/acx.m4 2006-07-08 17:01:44.325594336 +0200 +@@ -195,7 +195,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 --- gcj-4.2-4.2-20070707.orig/debian/patches/netbsd-dynlinker.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/netbsd-dynlinker.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# JB: Dynamic linker patches for netbsd. + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -ur src.orig/gcc/config/i386/netbsd-elf.h src/gcc/config/i386/netbsd-elf.h +--- src.orig/gcc/config/i386/netbsd-elf.h 2002-03-01 23:38:15.000000000 +0000 ++++ src/gcc/config/i386/netbsd-elf.h 2003-01-21 19:44:46.000000000 +0000 +@@ -35,7 +35,7 @@ + %{!e*:-e __start}}} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}} \ ++ %{!dynamic-linker:-dynamic-linker /lib/ld.elf_so}} \ + %{static:-static}}" + + /* Names to predefine in the preprocessor for this target machine. */ +diff -ur src.orig/gcc/config/netbsd-elf.h src/gcc/config/netbsd-elf.h +--- src.orig/gcc/config/netbsd-elf.h 2002-01-22 04:23:02.000000000 +0000 ++++ src/gcc/config/netbsd-elf.h 2003-01-21 19:44:27.000000000 +0000 +@@ -72,5 +72,5 @@ + %{!e*:-e __start}}} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}} \ ++ %{!dynamic-linker:-dynamic-linker /lib/ld.elf_so}} \ + %{static:-static}}" --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-sig-unwind.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-sig-unwind.dpatch @@ -0,0 +1,189 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: add support for unwinding over signal frames + +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 + +--- + + gcc/config/m68k/linux-unwind.h | 140 +++++++++++++++++++++++++++++++++++++++++ + gcc/config/m68k/linux.h | 2 + 2 files changed, 142 insertions(+) + +Index: gcc-4.1/gcc/config/m68k/linux-unwind.h +=================================================================== +--- /dev/null ++++ gcc-4.1/gcc/config/m68k/linux-unwind.h +@@ -0,0 +1,140 @@ ++/* DWARF2 EH unwinding support for Linux/m68k. ++ 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 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 with other programs, and to distribute ++those programs 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 another program.) ++ ++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. */ ++ ++/* Do code reading to identify a signal frame, and set the frame ++ state data appropriately. See unwind-dw2.c for the structs. ++ Don't use this at all if inhibit_libc is used. */ ++ ++#ifndef inhibit_libc ++ ++#include ++ ++/* is unfortunaly broken right now */ ++struct uw_ucontext { ++ unsigned long uc_flags; ++ struct ucontext *uc_link; ++ stack_t uc_stack; ++ mcontext_t uc_mcontext; ++ unsigned long uc_filler[80]; ++ __sigset_t uc_sigmask; ++}; ++ ++#define MD_FALLBACK_FRAME_STATE_FOR m68k_fallback_frame_state ++ ++static _Unwind_Reason_Code ++m68k_fallback_frame_state (struct _Unwind_Context *context, ++ _Unwind_FrameState *fs) ++{ ++ unsigned char *pc = context->ra; ++ long cfa; ++ ++ /* moveq #__NR_sigreturn,%d0; trap #0 */ ++ if (*(unsigned int *)(pc+0) == 0x70774e40) ++ { ++ struct sigcontext *sc; ++ ++ sc = *(struct sigcontext **)(context->cfa + 8); ++ ++ cfa = sc->sc_usp; ++ fs->cfa_how = CFA_REG_OFFSET; ++ fs->cfa_reg = 15; ++ fs->cfa_offset = cfa - (long) context->cfa; ++ ++ fs->regs.reg[0].how = REG_SAVED_OFFSET; ++ fs->regs.reg[0].loc.offset = (long)&sc->sc_d0 - cfa; ++ fs->regs.reg[1].how = REG_SAVED_OFFSET; ++ fs->regs.reg[1].loc.offset = (long)&sc->sc_d1 - cfa; ++ fs->regs.reg[8].how = REG_SAVED_OFFSET; ++ fs->regs.reg[8].loc.offset = (long)&sc->sc_a0 - cfa; ++ fs->regs.reg[9].how = REG_SAVED_OFFSET; ++ fs->regs.reg[9].loc.offset = (long)&sc->sc_a1 - cfa; ++ ++ fs->regs.reg[24].how = REG_SAVED_OFFSET; ++ fs->regs.reg[24].loc.offset = (long)&sc->sc_pc - cfa; ++ ++ if (*(int *)sc->sc_fpstate) ++ { ++ int *fpregs = (int *)sc->sc_fpregs; ++ ++ fs->regs.reg[16].how = REG_SAVED_OFFSET; ++ fs->regs.reg[16].loc.offset = (long)&fpregs[0] - cfa; ++ fs->regs.reg[17].how = REG_SAVED_OFFSET; ++ fs->regs.reg[17].loc.offset = (long)&fpregs[3] - cfa; ++ } ++ } ++ /* moveq #~__NR_rt_sigreturn,%d0; not.b %d0; trap #0 */ ++ else if (*(unsigned int *)(pc+0) == 0x70524600 ++ && *(unsigned short *)(pc+4) == 0x4e40) ++ { ++ struct uw_ucontext *uc; ++ greg_t *gregs; ++ int i; ++ ++ uc = *(struct uw_ucontext **)(context->cfa + 8); ++ ++ gregs = uc->uc_mcontext.gregs; ++ cfa = gregs[15]; ++ fs->cfa_how = CFA_REG_OFFSET; ++ fs->cfa_reg = 15; ++ fs->cfa_offset = cfa - (long) context->cfa; ++ ++ /* register %d0-%d7/%a0-%a6 */ ++ for (i = 0; i <= 14; i++) ++ { ++ fs->regs.reg[i].how = REG_SAVED_OFFSET; ++ fs->regs.reg[i].loc.offset = (long)&gregs[i] - cfa; ++ } ++ ++ /* return address */ ++ fs->regs.reg[24].how = REG_SAVED_OFFSET; ++ fs->regs.reg[24].loc.offset = (long)&gregs[16] - cfa; ++ ++#define uc_fpstate uc_filler[0] ++ ++ if (uc->uc_fpstate) ++ { ++ int *fpregs = (int *)uc->uc_mcontext.fpregs.f_fpregs; ++ ++ /* register %fp0-%fp7 */ ++ for (i = 16; i <= 23; i++) ++ { ++ fs->regs.reg[i].how = REG_SAVED_OFFSET; ++ fs->regs.reg[i].loc.offset = (long)fpregs - cfa; ++ fpregs += 3; ++ } ++ } ++ } ++ else ++ return _URC_END_OF_STACK; ++ ++ fs->retaddr_column = 24; ++ fs->signal_frame = 1; ++ ++ return _URC_NO_REASON; ++} ++#endif /* ifdef inhibit_libc */ +Index: gcc-4.1/gcc/config/m68k/linux.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/linux.h ++++ gcc-4.1/gcc/config/m68k/linux.h +@@ -297,3 +297,5 @@ do { \ + } + + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ++ ++#define MD_UNWIND_SUPPORT "config/m68k/linux-unwind.h" --- gcj-4.2-4.2-20070707.orig/debian/patches/disable-configure-run-check.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/disable-configure-run-check.dpatch @@ -0,0 +1,157 @@ +#! /bin/sh -e + +# DP: don't bogusly check if the 64bit binaries also work, +# DP: which does break on 32bit kernels. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libmudflap/configure.orig 2007-07-06 20:28:43.000000000 +0200 ++++ libmudflap/configure 2007-07-07 14:44:32.899598235 +0200 +@@ -2366,7 +2366,8 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++# Check disabled as it doesn't catch 64 bit biarch builds on 32 bit archs. ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libiberty/configure.orig 2007-07-06 20:28:51.000000000 +0200 ++++ libiberty/configure 2007-07-07 14:44:32.939598839 +0200 +@@ -2177,7 +2177,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libjava/libltdl/configure.orig 2007-07-06 20:28:59.000000000 +0200 ++++ libjava/libltdl/configure 2007-07-07 14:44:32.919598537 +0200 +@@ -2457,7 +2457,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libjava/configure.orig 2007-07-07 14:42:54.778118095 +0200 ++++ libjava/configure 2007-07-07 14:44:32.929598688 +0200 +@@ -2818,7 +2818,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +--- libobjc/configure.orig 2007-07-06 20:28:33.000000000 +0200 ++++ libobjc/configure 2007-07-07 14:44:32.889598084 +0200 +@@ -2101,7 +2101,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- boehm-gc/configure.orig 2007-07-06 20:43:16.000000000 +0200 ++++ boehm-gc/configure 2007-07-07 14:44:32.909598386 +0200 +@@ -2354,7 +2354,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libffi/configure.orig 2007-07-06 20:43:16.000000000 +0200 ++++ libffi/configure 2007-07-07 14:44:32.909598386 +0200 +@@ -2319,7 +2319,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- zlib/configure.orig 2007-07-06 20:28:32.000000000 +0200 ++++ zlib/configure 2007-07-07 14:44:32.879597934 +0200 +@@ -2397,7 +2397,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libstdc++-v3/configure.orig 2007-07-06 20:28:28.000000000 +0200 ++++ libstdc++-v3/configure 2007-07-07 14:47:06.371913330 +0200 +@@ -2759,7 +2759,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +@@ -5840,7 +5840,7 @@ + + if test $enable_clocale = auto; then + # Test for bugs early in glibc-2.2.x series +- if test "$cross_compiling" = yes; then ++ if false && test "$cross_compiling" = yes; then + enable_clocale_flag=generic + else + cat >conftest.$ac_ext <<_ACEOF +--- libssp/configure.orig 2007-07-06 20:28:55.000000000 +0200 ++++ libssp/configure 2007-07-07 14:44:32.909598386 +0200 +@@ -2406,7 +2406,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 +--- libgfortran/configure.orig 2007-07-06 20:28:42.000000000 +0200 ++++ libgfortran/configure 2007-07-07 14:44:32.899598235 +0200 +@@ -2501,7 +2501,7 @@ + echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. +-if test "$cross_compiling" != yes; then ++if false && test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 --- gcj-4.2-4.2-20070707.orig/debian/patches/gccbug-posix.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gccbug-posix.dpatch @@ -0,0 +1,84 @@ +#! /bin/sh -e + +# DP: Make gccbug POSIX compliant (patch by David Weinehall) +# DP: http://www.opengroup.org/onlinepubs/009695399/utilities/test.html + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/gccbug.in~ 2004-06-15 04:43:16.000000000 +0200 ++++ gcc/gccbug.in 2004-07-04 23:51:38.000000000 +0200 +@@ -165,7 +165,7 @@ + ;; + -f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi + shift ; IN_FILE="$1" +- if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then ++ if [ "$IN_FILE" != "-" ] && [ ! -r "$IN_FILE" ]; then + echo "$COMMAND: cannot read $IN_FILE" + $REMOVE_TEMP + exit 1 +@@ -237,7 +237,7 @@ + # Catch some signals. ($xs kludge needed by Sun /bin/sh) + xs=0 + trap '$REMOVE_TEMP; exit $xs' 0 +-trap 'echo "$COMMAND: Aborting ..."; $REMOVE_TEMP; xs=1; exit' 1 3 13 15 ++trap 'echo "$COMMAND: Aborting ..."; $REMOVE_TEMP; xs=1; exit' HUP QUIT PIPE TERM + + # If they told us to use a specific file, then do so. + if [ -n "$IN_FILE" ]; then +@@ -258,16 +258,16 @@ + fi + else + +- if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then ++ if [ -n "$PR_FORM" ] && [ -z "$PRINT_INTERN" ]; then + # If their PR_FORM points to a bogus entry, then bail. +- if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then ++ if [ ! -f "$PR_FORM" ] || [ ! -r "$PR_FORM" ] || [ ! -s "$PR_FORM" ]; then + echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM" + sleep 1 + PRINT_INTERN=bad_prform + fi + fi + +- if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then ++ if [ -n "$PR_FORM" ] && [ -z "$PRINT_INTERN" ]; then + cp $PR_FORM $TEMP || + ( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit ) + else +@@ -359,7 +359,7 @@ + done + fi + +- if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then ++ if [ "$PRINT" = true ] || [ "$PRINT_INTERN" = true ]; then + cat $TEMP + xs=0; exit + fi +@@ -467,7 +467,7 @@ + CNT=`expr $CNT + 1` + fi + +- [ $CNT -lt 6 -a -z "$BATCH" ] && ++ [ $CNT -lt 6 ] && [ -z "$BATCH" ] && + echo "Errors were found with the problem report." + + while true; do --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-save_pic.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-save_pic.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: gcc/config/m68k/m68k.c: +# DP: correctly save the pic register, when not done by reload() +# DP: (fixes _Unwind_RaiseException and thus exception handling) +# DP: fixes 345574 + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -466,7 +466,8 @@ m68k_save_reg (unsigned int regno, bool + { + if (flag_pic && regno == PIC_OFFSET_TABLE_REGNUM) + { +- if (current_function_uses_pic_offset_table) ++ if (current_function_uses_pic_offset_table || ++ current_function_has_nonlocal_label) + return true; + if (!current_function_is_leaf && TARGET_ID_SHARED_LIBRARY) + return true; --- gcj-4.2-4.2-20070707.orig/debian/patches/rename-info-files.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/rename-info-files.dpatch @@ -0,0 +1,592 @@ +#! /bin/sh -e + +# DP: Allow transformations on info file names. Reference the +# DP: transformed info file names in the texinfo files. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +gcc/ChangeLog: + +2004-02-17 Matthias Klose + + * 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 + names to makeinfo. + * gcj.texi: Use macros defined in MAKEINFODEFS for references. + +gcc/treelang/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + Define TREELANG_MAKEINFODEFS macros to pass transformated info file + names to makeinfo. + * treelang.texi: Use macros defined in MAKEINFO_DEFS for references. + + +--- gcc/doc/cpp.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/cpp.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -52,7 +52,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +--- gcc/doc/cppinternals.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/cppinternals.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -7,7 +7,7 @@ + @ifinfo + @dircategory Software development + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +--- gcc/doc/extend.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/extend.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -10384,7 +10384,7 @@ + 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. +--- gcc/doc/gcc.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/gcc.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -64,7 +64,7 @@ + @ifnottex + @dircategory Software development + @direntry +-* gcc: (gcc). The GNU Compiler Collection. ++* @value{fngcc}: (@value{fngcc}). The GNU Compiler Collection. + @end direntry + This file documents the use of the GNU compilers. + @sp 1 +@@ -120,7 +120,7 @@ + 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. +--- gcc/doc/gccint.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/gccint.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -50,7 +50,7 @@ + @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 +@@ -79,7 +79,7 @@ + how to port them to new targets and some information about how to + write front ends for new languages. It corresponds to GCC 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 +--- gcc/doc/invoke.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/invoke.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -6574,7 +6574,7 @@ + @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 +@@ -6582,7 +6582,7 @@ + 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 +@@ -13714,7 +13714,7 @@ + @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 +@@ -13866,7 +13866,7 @@ + + 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 +--- gcc/doc/libgcc.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/libgcc.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -24,7 +24,7 @@ + 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 +--- gcc/doc/makefile.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/makefile.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -139,7 +139,7 @@ + @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 +--- gcc/doc/passes.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/passes.texi 2007-03-22 14:33:29.000000000 +0100 +@@ -191,7 +191,7 @@ + @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 +--- gcc/doc/standards.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/doc/standards.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -188,8 +188,8 @@ + 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{gfortran}, 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{gcj}, GNU gcj}, + for details of compatibility between @command{gcj} and the Java Platform. +--- gcc/java/Make-lang.in.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/java/Make-lang.in 2007-03-22 14:32:35.000000000 +0100 +@@ -129,11 +129,23 @@ + 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 ++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 +@@ -189,8 +201,9 @@ + -rm -rf $(DESTDIR)$(man1dir)/gij$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/jv-convert$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/gcj-dbtool$(man1ext) ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info* + +-java.install-info: $(DESTDIR)$(infodir)/gcj.info ++java.install-info: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info + + java.install-pdf: $(JAVA_PDFFILES) + @$(NORMAL_INSTALL) +--- gcc/java/gcj.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/java/gcj.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -59,7 +59,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 +@@ -164,7 +164,7 @@ + + 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 +--- gcc/fortran/Make-lang.in.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/fortran/Make-lang.in 2007-03-22 14:32:35.000000000 +0100 +@@ -125,7 +125,8 @@ + cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-fortran.info: doc/gfortran.info ++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') ++fortran.info: doc/$(INFO_FORTRAN_NAME).info + fortran.dvi: doc/gfortran.dvi + fortran.pdf: doc/gfortran.pdf + fortran.html: $(build_htmldir)/gfortran/index.html +@@ -154,10 +155,10 @@ + $(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 + +@@ -204,7 +205,7 @@ + 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) + +@@ -222,7 +223,7 @@ + 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: +--- gcc/fortran/gfortran.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/fortran/gfortran.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -103,6 +103,7 @@ + @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}). +--- gcc/treelang/Make-lang.in.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/treelang/Make-lang.in 2007-03-22 14:32:35.000000000 +0100 +@@ -153,9 +153,12 @@ + cd $(srcdir)/treelang; etags -o TAGS.sub *.y *.l *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-treelang.info: doc/treelang.info ++INFO_TREELANG_NAME = $(shell echo treelang|sed '$(program_transform_name)') ++TREELANG_MAKEINFODEFS = -D 'fntreelang $(INFO_TREELANG_NAME)' + +-treelang.srcinfo: doc/treelang.info ++treelang.info: doc/$(INFO_TREELANG_NAME).info ++ ++treelang.srcinfo: doc/$(INFO_TREELANG_NAME).info + -cp -p $^ $(srcdir)/doc + + treelang.dvi: doc/treelang.dvi +@@ -169,8 +172,8 @@ + $(gcc_docdir)/include/funding.texi \ + gcc-vers.texi + +-doc/treelang.info: $(TEXI_TREELANG_FILES) +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir)/include -o $@ $< ++doc/$(INFO_TREELANG_NAME).info: $(TEXI_TREELANG_FILES) ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(TREELANG_MAKEINFODEFS) -I $(gcc_docdir)/include -o $@ $< + + doc/treelang.dvi: $(TEXI_TREELANG_FILES) + $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< +@@ -208,7 +211,7 @@ + $(STAMP) treelang.install.common.done + + # We might not be able to build the info files +-treelang.install-info: $(DESTDIR)$(infodir)/treelang.info ++treelang.install-info: $(DESTDIR)$(infodir)/$(INFO_TREELANG_NAME).info + + treelang.install-man: + +@@ -221,6 +224,7 @@ + echo -rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ + rm -rf $(DESTDIR)$(bindir)/$$name2$(exeext); \ + done ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_TREELANG_NAME).info* + -rm treelang.install.common.done + + # +--- gcc/treelang/treelang.texi.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/treelang/treelang.texi 2007-03-22 14:32:35.000000000 +0100 +@@ -102,7 +102,7 @@ + @ifnottex + @dircategory Software development + @direntry +-* treelang: (treelang). The GNU Treelang compiler. ++* @value{fntreelang}: (@value{fntreelang}). The GNU Treelang compiler. + @end direntry + @ifset INTERNALS + @ifset USING +@@ -255,7 +255,7 @@ + @item + The packaging and compiler portions of GNU Treelang are based largely + on the GCC compiler. +-@xref{Contributors,,Contributors to GCC,GCC,Using and Maintaining GCC}, ++@xref{Contributors,,Contributors to GCC,@value{fngcc},Using and Maintaining GCC}, + for more information. + + @item +@@ -875,7 +875,7 @@ + command-line options that are designed to cater to Treelang users + but apply to other languages as well. + +-@xref{G++ and GCC,,Programming Languages Supported by GCC,GCC,Using ++@xref{G++ and GCC,,Programming Languages Supported by GCC,@value{fngcc},Using + the GNU Compiler Collection (GCC)}, + for information on the way different languages are handled + by the GCC compiler (@code{gcc}). +--- gcc/Makefile.in.orig 2007-03-22 14:32:10.000000000 +0100 ++++ gcc/Makefile.in 2007-03-22 14:32:35.000000000 +0100 +@@ -3358,8 +3358,24 @@ + + 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_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 'fngccint $(INFO_GCCINT_NAME)' \ ++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ ++ -D 'fncppint $(INFO_CPPINT_NAME)' \ ++ -D 'fngfortran $(INFO_GFORTRAN_NAME)' \ + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -3405,21 +3421,41 @@ + # 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 + +@@ -3751,11 +3787,11 @@ + # $(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 +@@ -3956,8 +3992,11 @@ + -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. +--- libgomp/libgomp.texi.orig 2007-02-11 03:32:08.650777000 +0100 ++++ libgomp/libgomp.texi 2007-02-11 03:32:35.800777000 +0100 +@@ -32,7 +32,7 @@ + @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 +--- libgomp/Makefile.am.orig 2007-02-11 03:32:08.650777000 +0100 ++++ libgomp/Makefile.am 2007-02-11 03:34:30.000777000 +0100 +@@ -84,16 +84,19 @@ + + 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 +--- libgomp/Makefile.in.orig 2007-02-11 03:32:08.650777000 +0100 ++++ libgomp/Makefile.in 2007-02-11 03:34:52.400777000 +0100 +@@ -303,7 +303,8 @@ + + # 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 +@@ -1050,15 +1051,16 @@ + install-html: + + 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 ++ 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. --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-unbreak-eabi-armv4t.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-unbreak-eabi-armv4t.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: Fix armv4t build on ARM + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc-4.1.1/gcc/config/arm/linux-eabi.h gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h +--- gcc-4.1.1/gcc/config/arm/linux-eabi.h 2006-10-22 11:11:49.000000000 -0700 ++++ gcc-4.1.1-arm9tdmi/gcc/config/arm/linux-eabi.h 2006-10-24 21:34:01.000000000 -0700 +@@ -45,7 +45,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 + + #undef SUBTARGET_EXTRA_LINK_SPEC + #define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi" --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-align-stack.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-align-stack.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: try to keep the stack word aligned + +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 + +--- + gcc/config/m68k/m68k.h | 1 + + 1 file changed, 1 insertion(+) + +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -143,6 +143,7 @@ Boston, MA 02110-1301, USA. */ + + #define PARM_BOUNDARY (TARGET_SHORT ? 16 : 32) + #define STACK_BOUNDARY 16 ++#define PREFERRED_STACK_BOUNDARY 32 + #define FUNCTION_BOUNDARY 16 + #define EMPTY_FIELD_BOUNDARY 16 + --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-fjump.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-fjump.dpatch @@ -0,0 +1,320 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: gcc/config/m68k/m68k.md: +# DP: always use as fjcc pseudo op, we rely heavily on as +# DP: to generate the right size for the jump instructions +# DP: fixes #359281 + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k.md | 90 ++++++++++++++---------------------------------- + 1 file changed, 27 insertions(+), 63 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -5562,10 +5562,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbeq %l0", "fbeq %l0", "jbeq %l0"); +- else +- OUTPUT_JUMP ("jeq %l0", "fjeq %l0", "jeq %l0"); ++ OUTPUT_JUMP ("jeq %l0", "fjeq %l0", "jeq %l0"); + }) + + (define_insn "bne" +@@ -5576,10 +5573,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbne %l0", "fbne %l0", "jbne %l0"); +- else +- OUTPUT_JUMP ("jne %l0", "fjne %l0", "jne %l0"); ++ OUTPUT_JUMP ("jne %l0", "fjne %l0", "jne %l0"); + }) + + (define_insn "bgt" +@@ -5590,10 +5584,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbgt %l0", "fbgt %l0", 0); +- else +- OUTPUT_JUMP ("jgt %l0", "fjgt %l0", 0); ++ OUTPUT_JUMP ("jgt %l0", "fjgt %l0", 0); + }) + + (define_insn "bgtu" +@@ -5615,10 +5606,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jblt %l0", "fblt %l0", "jbmi %l0"); +- else +- OUTPUT_JUMP ("jlt %l0", "fjlt %l0", "jmi %l0"); ++ OUTPUT_JUMP ("jlt %l0", "fjlt %l0", "jmi %l0"); + }) + + (define_insn "bltu" +@@ -5640,10 +5628,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbge %l0", "fbge %l0", "jbpl %l0"); +- else +- OUTPUT_JUMP ("jge %l0", "fjge %l0", "jpl %l0"); ++ OUTPUT_JUMP ("jge %l0", "fjge %l0", "jpl %l0"); + }) + + (define_insn "bgeu" +@@ -5665,10 +5650,7 @@ + (pc)))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jble %l0", "fble %l0", 0); +- else +- OUTPUT_JUMP ("jle %l0", "fjle %l0", 0); ++ OUTPUT_JUMP ("jle %l0", "fjle %l0", 0); + }) + + (define_insn "bleu" +@@ -5690,7 +5672,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbor %l0" : "fjor %l0"; ++ return "fjor %l0"; + }) + + (define_insn "bunordered" +@@ -5701,7 +5683,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbun %l0" : "fjun %l0"; ++ return "fjun %l0"; + }) + + (define_insn "buneq" +@@ -5712,7 +5694,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbueq %l0" : "fjueq %l0"; ++ return "fjueq %l0"; + }) + + (define_insn "bunge" +@@ -5723,7 +5705,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbuge %l0" : "fjuge %l0"; ++ return "fjuge %l0"; + }) + + (define_insn "bungt" +@@ -5734,7 +5716,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbugt %l0" : "fjugt %l0"; ++ return "fjugt %l0"; + }) + + (define_insn "bunle" +@@ -5745,7 +5727,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbule %l0" : "fjule %l0"; ++ return "fjule %l0"; + }) + + (define_insn "bunlt" +@@ -5756,7 +5738,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbult %l0" : "fjult %l0"; ++ return "fjult %l0"; + }) + + (define_insn "bltgt" +@@ -5767,7 +5749,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbogl %l0" : "fjogl %l0"; ++ return "fjogl %l0"; + }) + + ;; Negated conditional jump instructions. +@@ -5780,10 +5762,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbne %l0", "fbne %l0", "jbne %l0"); +- else +- OUTPUT_JUMP ("jne %l0", "fjne %l0", "jne %l0"); ++ OUTPUT_JUMP ("jne %l0", "fjne %l0", "jne %l0"); + }) + + (define_insn "" +@@ -5794,10 +5773,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbeq %l0", "fbeq %l0", "jbeq %l0"); +- else +- OUTPUT_JUMP ("jeq %l0", "fjeq %l0", "jeq %l0"); ++ OUTPUT_JUMP ("jeq %l0", "fjeq %l0", "jeq %l0"); + }) + + (define_insn "" +@@ -5808,10 +5784,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jble %l0", "fbngt %l0", 0); +- else +- OUTPUT_JUMP ("jle %l0", "fjngt %l0", 0); ++ OUTPUT_JUMP ("jle %l0", "fjngt %l0", 0); + }) + + (define_insn "" +@@ -5833,10 +5806,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbge %l0", "fbnlt %l0", "jbpl %l0"); +- else +- OUTPUT_JUMP ("jge %l0", "fjnlt %l0", "jpl %l0"); ++ OUTPUT_JUMP ("jge %l0", "fjnlt %l0", "jpl %l0"); + }) + + (define_insn "" +@@ -5858,10 +5828,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jblt %l0", "fbnge %l0", "jbmi %l0"); +- else +- OUTPUT_JUMP ("jlt %l0", "fjnge %l0", "jmi %l0"); ++ OUTPUT_JUMP ("jlt %l0", "fjnge %l0", "jmi %l0"); + }) + + (define_insn "" +@@ -5883,10 +5850,7 @@ + (label_ref (match_operand 0 "" ""))))] + "" + { +- if (MOTOROLA) +- OUTPUT_JUMP ("jbgt %l0", "fbnle %l0", 0); +- else +- OUTPUT_JUMP ("jgt %l0", "fjnle %l0", 0); ++ OUTPUT_JUMP ("jgt %l0", "fjnle %l0", 0); + }) + + (define_insn "" +@@ -5908,7 +5872,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbun %l0" : "fjun %l0"; ++ return "fjun %l0"; + }) + + (define_insn "*bunordered_rev" +@@ -5919,7 +5883,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbor %l0" : "fjor %l0"; ++ return "fjor %l0"; + }) + + (define_insn "*buneq_rev" +@@ -5930,7 +5894,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbogl %l0" : "fjogl %l0"; ++ return "fjogl %l0"; + }) + + (define_insn "*bunge_rev" +@@ -5941,7 +5905,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbolt %l0" : "fjolt %l0"; ++ return "fjolt %l0"; + }) + + (define_insn "*bunle_rev" +@@ -5952,7 +5916,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbogt %l0" : "fjogt %l0"; ++ return "fjogt %l0"; + }) + + (define_insn "*bunlt_rev" +@@ -5963,7 +5927,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fboge %l0" : "fjoge %l0"; ++ return "fjoge %l0"; + }) + + (define_insn "*bltgt_rev" +@@ -5974,7 +5938,7 @@ + "TARGET_68881" + { + gcc_assert (cc_prev_status.flags & CC_IN_68881); +- return MOTOROLA ? "fbueq %l0" : "fjueq %l0"; ++ return "fjueq %l0"; + }) + + ;; Unconditional and other jump instructions --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-limit_reload.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-limit_reload.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: correctly limit reload class +# DP: fixes 375522 + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -433,7 +433,7 @@ extern enum reg_class regno_reg_class[]; + assumption that if the class is not ADDR_REGS, then it must be a superset + of DATA_REGS. */ + #define LIMIT_RELOAD_CLASS(MODE, CLASS) \ +- (((MODE) == QImode && (CLASS) != ADDR_REGS) \ ++ (((MODE) == QImode && (CLASS) == ADDR_REGS) \ + ? DATA_REGS \ + : (CLASS)) + --- gcj-4.2-4.2-20070707.orig/debian/patches/i386-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/i386-biarch.dpatch @@ -0,0 +1,280 @@ +#! /bin/sh -e + +# DP: biarch patches for i386/x86_64 + +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 -p0 < $0 + (cd ${dir}libcpp && autoconf) + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir}libcpp && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +From: "Joseph S. Myers" +Sender: gcc-patches-owner@gcc.gnu.org +To: gcc-patches@gcc.gnu.org, bkorb@gnu.org +Subject: Patch to support x86-linux --enable-targets=all +Date: Sun, 22 Oct 2006 19:57:53 +0000 (UTC) + +This patch allows i?86-*-linux* configurations to be built with 64-bit +support, using the same --enable-targets=all option that enables this +for powerpc-linux configurations. (Using this feature needs my recent +binutils patch +.) + +Bootstrapped with no regressions on i686-pc-linux-gnu (without the new +option) and tested on i686-pc-linux-gnu with the new option. OK to +commit? + +The fixincludes change is because such biarch configurations have +wrapper files that look something like + +#ifndef __ASM_STUB_POSIX_TYPES_H__ +# define __ASM_STUB_POSIX_TYPES_H__ +# if defined __x86_64__ +# include +# endif +# if defined __i386__ +# include +# endif +#endif + +and this wrongly matches a fix for an old pre-x86_64 i386 + file. + +gcc: +2006-10-22 Joseph Myers + + * config.gcc (i[34567]86-*-linux*): Handle --enable-targets=all. + Handle tuning for bi-arch i[34567]86-*-linux* like that for + i[34567]86-*-solaris2.1[0-9]*. + * config/i386/linux64.h (TARGET_VERSION, MULTILIB_DEFAULTS): + Define conditionally depending on TARGET_64BIT_DEFAULT. + (SPEC_32, SPEC_64): Define. + (LINK_SPEC): Use them. + * doc/install.texi (--enable-targets=all): Document for x86-linux. + +libcpp: +2006-10-22 Joseph Myers + + * configure.ac (need_64bit_hwint): Set for i[34567]86-*-linux* + depending on --enable-targets=all. + * configure: Regenerate. + +fixincludes: +2006-10-22 Joseph Myers + + * inclhack.def (AAB_fd_zero_asm_posix_types_h): Bypass on x86_64. + * fixincl.x: Regenerate. + +Index: gcc/doc/install.texi +=================================================================== +--- gcc/doc/install.texi (revision 117956) ++++ gcc/doc/install.texi (working copy) +@@ -1154,7 +1154,7 @@ + option enables the 32-bit target to be a bi-arch compiler, which is + useful when you want a bi-arch compiler that defaults to 32-bit, and + you are building a bi-arch or multi-arch binutils in a combined tree. +-Currently, this option only affects powerpc-linux. ++Currently, this option only affects powerpc-linux and x86-linux. + + @item --enable-secureplt + This option enables @option{-msecure-plt} by default for powerpc-linux. +Index: gcc/config.gcc +=================================================================== +--- gcc/config.gcc (revision 117956) ++++ gcc/config.gcc (working copy) +@@ -1075,10 +1075,34 @@ + i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu) + # Intel 80386's running GNU/* + # with ELF format using glibc 2 +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" ++ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h" + case ${target} in +- i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;; +- i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; ++ i[34567]86-*-linux*) ++ if test x$enable_targets = xall; then ++ tm_file="${tm_file} i386/x86-64.h i386/linux64.h" ++ tm_defines="${tm_defines} TARGET_BI_ARCH=1" ++ tmake_file="${tmake_file} i386/t-linux64" ++ need_64bit_hwint=yes ++ # FIXME: -m64 for i[34567]86-*-* should be allowed just ++ # like -m32 for x86_64-*-*. ++ case X"${with_cpu}" in ++ Xgeneric|Xnocona|Xx86-64|Xk8|Xopteron|Xathlon64|Xathlon-fx) ++ ;; ++ X) ++ with_cpu=generic ++ ;; ++ *) ++ echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 ++ echo "generic nocona x86-64 k8 opteron athlon64 athlon-fx" 1>&2 ++ exit 1 ++ ;; ++ esac ++ else ++ tm_file="${tm_file} i386/linux.h" ++ fi ++ ;; ++ i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;; ++ i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;; + esac + tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtfm t-dfprules" + ;; +Index: gcc/config/i386/linux64.h +=================================================================== +--- gcc/config/i386/linux64.h (revision 117956) ++++ gcc/config/i386/linux64.h (working copy) +@@ -19,7 +19,11 @@ + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + ++#if TARGET_64BIT_DEFAULT + #define TARGET_VERSION fprintf (stderr, " (x86-64 Linux/ELF)"); ++#else ++#define TARGET_VERSION fprintf (stderr, " (i386 Linux/ELF)"); ++#endif + + #define TARGET_OS_CPP_BUILTINS() \ + do \ +@@ -52,14 +56,22 @@ + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" + ++#if TARGET_64BIT_DEFAULT ++#define SPEC_32 "m32" ++#define SPEC_64 "!m32" ++#else ++#define SPEC_32 "!m64" ++#define SPEC_64 "m64" ++#endif ++ + #undef LINK_SPEC +-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=both \ ++#define LINK_SPEC "%{" SPEC_64 ":-m elf_x86_64} %{" SPEC_32 ":-m elf_i386} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- %{m32:%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}} \ +- %{!m32:%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}} \ ++ %{" SPEC_32 ":%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER32 "}} \ ++ %{" SPEC_64 ":%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER64 "}}} \ + %{static:-static}}" + + /* Similar to standard Linux, but adding -ffast-math support. */ +@@ -68,7 +80,11 @@ + "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ + %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" + ++#if TARGET_64BIT_DEFAULT + #define MULTILIB_DEFAULTS { "m64" } ++#else ++#define MULTILIB_DEFAULTS { "m32" } ++#endif + + #undef NEED_INDICATE_EXEC_STACK + #define NEED_INDICATE_EXEC_STACK 1 +Index: libcpp/configure.ac +=================================================================== +--- libcpp/configure.ac (revision 117956) ++++ libcpp/configure.ac (working copy) +@@ -130,6 +130,13 @@ + sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + sh[123456789l]*-*-*) + need_64bit_hwint=yes ;; ++ i[34567]86-*-linux*) ++ if test "x$enable_targets" = xall; then ++ need_64bit_hwint=yes ++ else ++ need_64bit_hwint=no ++ fi ++ ;; + *) + need_64bit_hwint=no ;; + esac +Index: fixincludes/inclhack.def +=================================================================== +--- fixincludes/inclhack.def (revision 117956) ++++ fixincludes/inclhack.def (working copy) +@@ -140,6 +140,7 @@ + files = asm/posix_types.h; + mach = 'i[34567]86-*-linux*'; + bypass = '} while'; ++ bypass = 'x86_64'; + + /* + * Define _POSIX_TYPES_H_WRAPPER at the end of the wrapper, not + +-- +Joseph S. Myers +joseph@codesourcery.com + + +2006-12-12 Matthias Klose + + * configure.tgt (i[456]86-*-linux*): Only add ia32 specific + flags if not building with -m64. + * testsuite/lib/libgomp-dg.exp (libgomp_init): Don't add -march + flag for i?86-*-* targets, if current target matches -m64. + +Index: libgomp/configure.tgt +=================================================================== +--- libgomp/configure.tgt (revision 119778) ++++ libgomp/configure.tgt (working copy) +@@ -49,9 +49,14 @@ + # Note that bare i386 is not included here. We need cmpxchg. + i[456]86-*-linux*) + config_path="linux/x86 linux posix" +- if test -z "$with_arch"; then +- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" +- fi ++ case " ${CC} ${CFLAGS} " in ++ *" -m64 "*) ++ ;; ++ *) ++ if test -z "$with_arch"; then ++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}" ++ fi ++ esac + ;; + + # Similar jiggery-pokery for x86_64 multilibs, except here we +Index: libgomp/testsuite/lib/libgomp-dg.exp +=================================================================== +--- libgomp/testsuite/lib/libgomp-dg.exp (revision 119985) ++++ libgomp/testsuite/lib/libgomp-dg.exp (working copy) +@@ -57,6 +57,7 @@ + global lang_test_file + global lang_library_path + global lang_link_flags ++ global current_target_name + + set blddir [lookfor_file [get_multilibs] libgomp] + +@@ -130,7 +131,7 @@ + } + + # We use atomic operations in the testcases to validate results. +- if [istarget i?86-*-*] { ++ if { [istarget i?86-*-*] && [string match *-m64* $current_target_name] == -1} { + lappend ALWAYS_CFLAGS "additional_flags=-march=i486" + } + if [istarget sparc*-*-*] { --- gcj-4.2-4.2-20070707.orig/debian/patches/alpha-ieee-doc.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/alpha-ieee-doc.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off (doc patch) + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- src/gcc/doc/invoke.texi~ 2005-09-29 20:00:57.638380128 +0200 ++++ src/gcc/doc/invoke.texi 2005-09-30 22:23:22.922502992 +0200 +@@ -7670,6 +7670,13 @@ + 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 --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-bitfield-offset.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-bitfield-offset.dpatch @@ -0,0 +1,192 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: only use constant offset for register bitfields +# DP: (combine expects shifts, but does a rotate) +# test case for invalid use of bitfield inst: +# +# #define XINT(v) (((int)(v) << 4) >> 4) +# #define XUINT(v) (((unsigned)(v) << 4) >> 4) +# +# int f(int v, int s) +# { +# return (XUINT(v) >> -XINT(s)) & 0x0fffffff; +# } + +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 + +--- + + gcc/config/m68k/m68k.md | 62 ++++++++++++++++++++++++------------------------ + 1 file changed, 31 insertions(+), 31 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -4991,34 +4991,34 @@ + ;; so that its address is reloaded. + + (define_expand "extv" +- [(set (match_operand:SI 0 "nonimmediate_operand" "") ++ [(set (match_operand:SI 0 "register_operand" "") + (sign_extract:SI (match_operand:SI 1 "general_operand" "") +- (match_operand:SI 2 "general_operand" "") +- (match_operand:SI 3 "general_operand" "")))] ++ (match_operand:SI 2 "const_int_operand" "") ++ (match_operand:SI 3 "const_int_operand" "")))] + "TARGET_68020 && TARGET_BITFIELD" + "") + + (define_insn "" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=d") ++ [(set (match_operand:SI 0 "register_operand" "=d") + (sign_extract:SI (match_operand:QI 1 "memory_operand" "o") +- (match_operand:SI 2 "general_operand" "dn") +- (match_operand:SI 3 "general_operand" "dn")))] ++ (match_operand:SI 2 "nonmemory_operand" "dn") ++ (match_operand:SI 3 "nonmemory_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + "bfexts %1{%b3:%b2},%0") + + (define_expand "extzv" +- [(set (match_operand:SI 0 "nonimmediate_operand" "") ++ [(set (match_operand:SI 0 "register_operand" "") + (zero_extract:SI (match_operand:SI 1 "general_operand" "") +- (match_operand:SI 2 "general_operand" "") +- (match_operand:SI 3 "general_operand" "")))] ++ (match_operand:SI 2 "const_int_operand" "") ++ (match_operand:SI 3 "const_int_operand" "")))] + "TARGET_68020 && TARGET_BITFIELD" + "") + + (define_insn "" +- [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d") +- (zero_extract:SI (match_operand:QI 1 "memory_operand" "o,d") +- (match_operand:SI 2 "general_operand" "dn,dn") +- (match_operand:SI 3 "general_operand" "dn,dn")))] ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (zero_extract:SI (match_operand:QI 1 "memory_operand" "o") ++ (match_operand:SI 2 "nonmemory_operand" "dn") ++ (match_operand:SI 3 "nonmemory_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (GET_CODE (operands[2]) == CONST_INT) +@@ -5035,8 +5035,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "nonmemory_operand" "dn") ++ (match_operand:SI 2 "nonmemory_operand" "dn")) + (xor:SI (zero_extract:SI (match_dup 0) (match_dup 1) (match_dup 2)) + (match_operand 3 "const_int_operand" "n")))] + "TARGET_68020 && TARGET_BITFIELD +@@ -5050,8 +5050,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "nonmemory_operand" "dn") ++ (match_operand:SI 2 "nonmemory_operand" "dn")) + (const_int 0))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -5072,16 +5072,16 @@ + + (define_expand "insv" + [(set (zero_extract:SI (match_operand:SI 0 "nonimmediate_operand" "") +- (match_operand:SI 1 "general_operand" "") +- (match_operand:SI 2 "general_operand" "")) ++ (match_operand:SI 1 "const_int_operand" "") ++ (match_operand:SI 2 "const_int_operand" "")) + (match_operand:SI 3 "register_operand" ""))] + "TARGET_68020 && TARGET_BITFIELD" + "") + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "nonmemory_operand" "dn") ++ (match_operand:SI 2 "nonmemory_operand" "dn")) + (match_operand:SI 3 "register_operand" "d"))] + "TARGET_68020 && TARGET_BITFIELD" + "bfins %3,%0{%b2:%b1}") +@@ -5092,16 +5092,16 @@ + (define_insn "" + [(set (match_operand:SI 0 "nonimmediate_operand" "=d") + (sign_extract:SI (match_operand:SI 1 "register_operand" "d") +- (match_operand:SI 2 "general_operand" "dn") +- (match_operand:SI 3 "general_operand" "dn")))] ++ (match_operand:SI 2 "const_int_operand" "n") ++ (match_operand:SI 3 "const_int_operand" "n")))] + "TARGET_68020 && TARGET_BITFIELD" + "bfexts %1{%b3:%b2},%0") + + (define_insn "" + [(set (match_operand:SI 0 "nonimmediate_operand" "=d") + (zero_extract:SI (match_operand:SI 1 "register_operand" "d") +- (match_operand:SI 2 "general_operand" "dn") +- (match_operand:SI 3 "general_operand" "dn")))] ++ (match_operand:SI 2 "const_int_operand" "n") ++ (match_operand:SI 3 "const_int_operand" "n")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (GET_CODE (operands[2]) == CONST_INT) +@@ -5118,8 +5118,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "const_int_operand" "n") ++ (match_operand:SI 2 "const_int_operand" "n")) + (const_int 0))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -5129,8 +5129,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "const_int_operand" "n") ++ (match_operand:SI 2 "const_int_operand" "n")) + (const_int -1))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -5140,8 +5140,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "dn") +- (match_operand:SI 2 "general_operand" "dn")) ++ (match_operand:SI 1 "const_int_operand" "n") ++ (match_operand:SI 2 "const_int_operand" "n")) + (match_operand:SI 3 "register_operand" "d"))] + "TARGET_68020 && TARGET_BITFIELD" + { --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-dwarf.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-dwarf.dpatch @@ -0,0 +1,76 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: correct the dwarf frame information, but preserve compatibility + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k.c | 4 ++++ + gcc/config/m68k/m68k.h | 9 ++++++++- + 2 files changed, 12 insertions(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -3390,5 +3390,9 @@ m68k_regno_mode_ok (int regno, enum mach + && GET_MODE_UNIT_SIZE (mode) <= 12) + return true; + } ++ else if (regno == 24) ++ { ++ return GET_MODE_SIZE (mode) == 4; ++ } + return false; + } +Index: gcc-4.1/gcc/config/m68k/m68k.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.h ++++ gcc-4.1/gcc/config/m68k/m68k.h +@@ -174,6 +174,13 @@ Boston, MA 02110-1301, USA. */ + register elimination. */ + #define FIRST_PSEUDO_REGISTER 25 + ++/* Number of hardware registers that go into the DWARF-2 unwind info. This ++ should be 24, but to prevent compability problems leave it at 25. */ ++#define DWARF_FRAME_REGISTERS 25 ++ ++#define DWARF_FRAME_RETURN_COLUMN 24 ++#define DWARF_ALT_FRAME_RETURN_COLUMN 25 ++ + /* All m68k targets (except AmigaOS) use %a5 as the PIC register */ + #define PIC_OFFSET_TABLE_REGNUM (flag_pic ? 13 : INVALID_REGNUM) + +@@ -251,7 +258,7 @@ Boston, MA 02110-1301, USA. */ + for the 68881 registers, a single register is always enough for + anything that can be stored in them at all. */ + #define HARD_REGNO_NREGS(REGNO, MODE) \ +- ((REGNO) >= 16 ? GET_MODE_NUNITS (MODE) \ ++ ((REGNO) >= 16 && (REGNO) <= 23 ? GET_MODE_NUNITS (MODE) \ + : ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)) + + /* A C expression that is nonzero if hard register NEW_REG can be --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-lib32-properties.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-lib32-properties.dpatch @@ -0,0 +1,85 @@ +#! /bin/sh -e + +# DP: - When running the i386 binaries on amd64, adjust the properties +# DP: java.home, gnu.classpath.home.url, sun.boot.class.path, +# DP: gnu.gcj.precompiled.db.path. + +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 -p0 < $0 + cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/gnu/classpath/natSystemProperties.cc.orig 2006-09-10 14:07:47.130718000 +0200 ++++ libjava/gnu/classpath/natSystemProperties.cc 2006-09-10 16:30:31.640718000 +0200 +@@ -209,6 +209,18 @@ + // part we do this because most people specify only --prefix and + // nothing else when installing gcj. Plus, people are free to + // redefine `java.home' with `-D' if necessary. ++ struct utsname u; ++#if defined(__linux__) && defined (__i386__) ++ uname (&u); ++ if (! strcmp ("x86_64", u.machine)) ++ { ++ SET ("java.home", "/usr/lib32/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre"); ++ SET ("gnu.classpath.home", "/usr"); ++ SET ("gnu.classpath.home.url", "file:///usr/lib/../lib32"); ++ } ++ else ++#endif ++ { + SET ("java.home", JAVA_HOME); + SET ("gnu.classpath.home", PREFIX); + // This is set to $(toolexeclibdir) because we use this to find +@@ -217,11 +229,11 @@ + strcpy (val2, "file://"); + strcat (val2, TOOLEXECLIBDIR); + SET ("gnu.classpath.home.url", val2); ++ } + + SET ("file.encoding", default_file_encoding); + + #ifdef HAVE_UNAME +- struct utsname u; + if (! uname (&u)) + { + SET ("os.name", u.sysname); +@@ -348,11 +360,21 @@ + // without overriding java.endorsed.dirs. + SET ("gnu.gcj.runtime.endorsed.dirs", GCJ_ENDORSED_DIRS); + ++#if defined(__linux__) && defined (__i386__) ++ if (! strcmp ("x86_64", u.machine)) ++ { ++ SET ("sun.boot.class.path", "/usr/lib32/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre/lib/rt.jar"); ++ SET ("gnu.gcj.precompiled.db.path", "/var/lib32/gcj-4.2/classmap.db"); ++ } ++ else ++#endif ++ { + // The path to libgcj's boot classes + SET ("sun.boot.class.path", BOOT_CLASS_PATH); + + // If there is a default system database, set it. + SET ("gnu.gcj.precompiled.db.path", LIBGCJ_DEFAULT_DATABASE); ++ } + + // Set some properties according to whatever was compiled in with + // `-D'. Important: after this point, the only properties that --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-autoinc.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-autoinc.dpatch @@ -0,0 +1,160 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: recognize a few more autoinc possibilities + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/flow.c | 55 +++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 45 insertions(+), 10 deletions(-) + +Index: gcc-4.1/gcc/flow.c +=================================================================== +--- gcc-4.1.orig/gcc/flow.c ++++ gcc-4.1/gcc/flow.c +@@ -1766,7 +1766,6 @@ propagate_one_insn (struct propagate_blo + && REG_P (SET_DEST (x)) + && (GET_CODE (SET_SRC (x)) == PLUS + || GET_CODE (SET_SRC (x)) == MINUS) +- && XEXP (SET_SRC (x), 0) == SET_DEST (x) + && GET_CODE (XEXP (SET_SRC (x), 1)) == CONST_INT + /* Ok, look for a following memory ref we can combine with. + If one is found, change the memory ref to a PRE_INC +@@ -3428,13 +3427,25 @@ attempt_auto_inc (struct propagate_block + rtx set = single_set (incr); + rtx q = SET_DEST (set); + rtx y = SET_SRC (set); +- int opnum = XEXP (y, 0) == incr_reg ? 0 : 1; ++ rtx *loc = &SET_SRC (set); + int changed; + + /* Make sure this reg appears only once in this insn. */ + if (count_occurrences (PATTERN (insn), incr_reg, 1) != 1) + return; + ++ if (GET_CODE (y) != PLUS) ++ { ++ if (MEM_P (y) && GET_CODE (XEXP (y, 0)) == PLUS) ++ loc = &XEXP (y, 0); ++ else if (MEM_P (q) && GET_CODE (XEXP (q, 0)) == PLUS) ++ loc = &XEXP (q, 0); ++ else ++ abort(); ++ y = *loc; ++ q = NULL_RTX; ++ } ++ + if (dead_or_set_p (incr, incr_reg) + /* Mustn't autoinc an eliminable register. */ + && (regno >= FIRST_PSEUDO_REGISTER +@@ -3446,7 +3457,7 @@ attempt_auto_inc (struct propagate_block + if (! validate_change (insn, &XEXP (mem, 0), inc, 0)) + return; + } +- else if (REG_P (q) ++ else if (q && REG_P (q) + /* PREV_INSN used here to check the semi-open interval + [insn,incr). */ + && ! reg_used_between_p (q, PREV_INSN (insn), incr) +@@ -3461,6 +3472,7 @@ attempt_auto_inc (struct propagate_block + Change it to q = p, ...*q..., q = q+size. + Then fall into the usual case. */ + rtx insns, temp; ++ int opnum = XEXP (y, 0) == incr_reg ? 0 : 1; + + start_sequence (); + emit_move_insn (q, incr_reg); +@@ -3533,13 +3545,13 @@ attempt_auto_inc (struct propagate_block + + /* Modify the old increment-insn to simply copy + the already-incremented value of our register. */ +- changed = validate_change (incr, &SET_SRC (set), incr_reg, 0); ++ changed = validate_change (incr, loc, incr_reg, 0); + gcc_assert (changed); + + /* If that makes it a no-op (copying the register into itself) delete + it so it won't appear to be a "use" and a "set" of this + register. */ +- if (REGNO (SET_DEST (set)) == REGNO (incr_reg)) ++ if (q && REGNO (q) == REGNO (incr_reg)) + { + /* If the original source was dead, it's dead now. */ + rtx note; +@@ -3613,7 +3625,22 @@ find_auto_inc (struct propagate_block_in + y = SET_SRC (set); + + if (GET_CODE (y) != PLUS) +- return; ++ { ++ if (MEM_P (y) && GET_CODE (XEXP (y, 0)) == PLUS) ++ { ++ if (reg_overlap_mentioned_p (addr, SET_DEST (set))) ++ return; ++ y = XEXP (y, 0); ++ } ++ else ++ { ++ y = SET_DEST (set); ++ if (!MEM_P (y) || GET_CODE (XEXP (y, 0)) != PLUS ++ || reg_overlap_mentioned_p (addr, SET_SRC (set))) ++ return; ++ y = XEXP (y, 0); ++ } ++ } + + if (REG_P (XEXP (y, 0)) && REGNO (XEXP (y, 0)) == REGNO (addr)) + inc_val = XEXP (y, 1); +@@ -4172,10 +4199,6 @@ try_pre_increment_1 (struct propagate_bl + && ! dead_or_set_p (y, SET_DEST (x)) + && try_pre_increment (y, SET_DEST (x), amount)) + { +- /* We have found a suitable auto-increment and already changed +- insn Y to do it. So flush this increment instruction. */ +- propagate_block_delete_insn (insn); +- + /* Count a reference to this reg for the increment insn we are + deleting. When a reg is incremented, spilling it is worse, + so we want to make that less likely. */ +@@ -4185,6 +4208,18 @@ try_pre_increment_1 (struct propagate_bl + REG_N_SETS (regno)++; + } + ++ if (XEXP (SET_SRC (x), 0) != SET_DEST (x)) ++ { ++ int change; ++ change = validate_change (insn, &SET_SRC (x), XEXP (SET_SRC (x), 0), 0); ++ gcc_assert(change); ++ return 0; ++ } ++ ++ /* We have found a suitable auto-increment and already changed ++ insn Y to do it. So flush this increment instruction. */ ++ propagate_block_delete_insn (insn); ++ + /* Flush any remembered memories depending on the value of + the incremented register. */ + invalidate_mems_from_set (pbi, SET_DEST (x)); --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-rpath.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-rpath.dpatch @@ -0,0 +1,67 @@ +#! /bin/sh -e + +# DP: - Link ecjx and gij with -rpath $(dbexecdir) + +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 -p0 < $0 + #cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/Makefile.am~ 2007-03-04 18:50:01.000000000 +0100 ++++ libjava/Makefile.am 2007-03-04 19:19:32.000000000 +0100 +@@ -653,7 +653,7 @@ + ## We need -nodefaultlibs because we want to avoid gcj's `-lgcj'. We + ## need this because we are explicitly using libtool to link using the + ## `.la' file. +-gij_LDFLAGS = -rpath $(dbexecdir) -rpath $(toolexeclibdir) \ ++gij_LDFLAGS = -rpath $(dbexecdir) \ + -shared-libgcc $(THREADLDFLAGS) + gij_LINK = $(GCJLINK) + ## See jv_convert_LDADD. +@@ -683,7 +683,7 @@ + ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + endif !ENABLE_SHARED + +-ecjx_LDADD = -L$(here)/.libs libgcj.la ++ecjx_LDADD = -L$(here)/.libs libgcj.la -rpath $(dbexecdir) + ecjx_DEPENDENCIES = libgcj.la libgcj.spec + + else !NATIVE +--- libjava/Makefile.in~ 2007-03-04 18:50:01.000000000 +0100 ++++ libjava/Makefile.in 2007-03-04 19:21:22.000000000 +0100 +@@ -7771,7 +7771,7 @@ + gcj_dbtool_LDADD = gnu/gcj/tools/gcj_dbtool.lo -L$(here)/.libs libgcj.la + gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la libgcj.spec + gij_SOURCES = +-gij_LDFLAGS = -rpath $(dbexecdir) -rpath $(toolexeclibdir) \ ++gij_LDFLAGS = -rpath $(dbexecdir) \ + -shared-libgcc $(THREADLDFLAGS) + + gij_LINK = $(GCJLINK) +@@ -7787,7 +7787,7 @@ + @ENABLE_SHARED_TRUE@@NATIVE_TRUE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) -Djava.class.path=$(ECJ_JAR) + @NATIVE_FALSE@ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) + @NATIVE_FALSE@ecjx_LDADD = +-@NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la ++@NATIVE_TRUE@ecjx_LDADD = -L$(here)/.libs libgcj.la -rpath $(dbexecdir) + @NATIVE_FALSE@ecjx_DEPENDENCIES = + @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec + gappletviewer_SOURCES = --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-biarch-alsa.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-biarch-alsa.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# DP: Fix linking with the correct biarch asound library + +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 -p0 < $0 + #cd ${dir}libjava && automake + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/classpath/native/jni/midi-alsa/Makefile.am~ 2007-06-05 12:23:54.000000000 +0200 ++++ libjava/classpath/native/jni/midi-alsa/Makefile.am 2007-06-05 12:25:09.000000000 +0200 +@@ -4,7 +4,7 @@ + gnu_javax_sound_midi_alsa_AlsaPortDevice.c \ + gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.c + +-libgjsmalsa_la_LIBADD = -lasound ++libgjsmalsa_la_LIBADD = `case "$(CC)" in *-m64*) echo -L/usr/lib64;; *-m32*) echo -L/usr/lib32; esac` -lasound + libgjsmalsa_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version + + AM_LDFLAGS = @CLASSPATH_MODULE@ +--- libjava/classpath/native/jni/midi-alsa/Makefile.in~ 2007-06-05 12:23:54.000000000 +0200 ++++ libjava/classpath/native/jni/midi-alsa/Makefile.in 2007-06-05 12:25:19.000000000 +0200 +@@ -326,7 +326,7 @@ + gnu_javax_sound_midi_alsa_AlsaPortDevice.c \ + gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.c + +-libgjsmalsa_la_LIBADD = -lasound ++libgjsmalsa_la_LIBADD = `case "$(CC)" in *-m64*) echo -L/usr/lib64;; *-m32*) echo -L/usr/lib32; esac` -lasound + libgjsmalsa_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version + AM_LDFLAGS = @CLASSPATH_MODULE@ + AM_CPPFLAGS = @CLASSPATH_INCLUDES@ `pkg-config --cflags-only-I alsa` --- gcj-4.2-4.2-20070707.orig/debian/patches/libstdc++-doclink.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libstdc++-doclink.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: adjust hrefs to point to the local documentation + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libstdc++-v3/docs/doxygen/mainpage.html.orig 2006-12-11 11:49:36.056229000 +0100 ++++ libstdc++-v3/docs/doxygen/mainpage.html 2006-12-11 11:50:32.936229000 +0100 +@@ -30,8 +30,8 @@ +

There are two types of documentation for libstdc++. One is the + distribution documentation, which can be read online at + http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html +- or offline from docs/html/documentation.html in the library source +- directory. ++ or offline from ++ /usr/share/doc/gcc-4.2/libstdc++/html/documentation.html. +

+ +

The other type is the source documentation, of which this is the first page. +@@ -75,7 +75,7 @@ + +

License, Copyright, and Other Lawyerly Verbosity

+

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

+

Part of the generated documentation involved comments and notes from --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-split_shift.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-split_shift.dpatch @@ -0,0 +1,730 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: use correct predicates for long long shifts and use more splits +# DP: fixes 381572 + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k-protos.h | 3 + gcc/config/m68k/m68k.c | 26 ++ + gcc/config/m68k/m68k.md | 546 +++++++++++++++++++++++++++++++----------- + 3 files changed, 437 insertions(+), 138 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k-protos.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k-protos.h ++++ gcc-4.1/gcc/config/m68k/m68k-protos.h +@@ -22,6 +22,9 @@ Boston, MA 02110-1301, USA. */ + + #ifdef RTX_CODE + extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to); ++ ++extern void split_di (rtx[], int, rtx[], rtx[]); ++ + extern const char *output_move_const_into_data_reg (rtx *); + extern int valid_mov3q_const (rtx); + extern const char *output_move_simode_const (rtx *); +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -2243,6 +2243,32 @@ output_move_double (rtx *operands) + return ""; + } + ++void ++split_di (rtx operands[], int num, rtx lo_half[], rtx hi_half[]) ++{ ++ while (num--) ++ { ++ rtx op = operands[num]; ++ ++ /* simplify_subreg refuse to split volatile memory addresses, ++ but we still have to handle it. */ ++ if (GET_CODE (op) == MEM) ++ { ++ lo_half[num] = adjust_address (op, SImode, 4); ++ hi_half[num] = adjust_address (op, SImode, 0); ++ } ++ else ++ { ++ lo_half[num] = simplify_gen_subreg (SImode, op, ++ GET_MODE (op) == VOIDmode ++ ? DImode : GET_MODE (op), 4); ++ hi_half[num] = simplify_gen_subreg (SImode, op, ++ GET_MODE (op) == VOIDmode ++ ? DImode : GET_MODE (op), 0); ++ } ++ } ++} ++ + /* Return a REG that occurs in ADDR with coefficient 1. + ADDR can be effectively incremented by incrementing REG. */ + +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -3881,69 +3881,168 @@ + return "move%.w %1,%0\;sub%.l %R0,%R0"; + }) + +-(define_insn "ashldi_const32" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=rm") +- (ashift:DI (match_operand:DI 1 "general_operand" "ro") +- (const_int 32)))] +- "" ++(define_insn "*ashldi3_const1" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (ashift:DI (match_operand:DI 1 "register_operand" "0") ++ (const_int 1)))] ++ "!TARGET_COLDFIRE" ++ "add%.l %R0,%R0\;addx%.l %0,%0") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 2)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (ashift:DI (match_dup 1) (const_int 1))) ++ (set (match_dup 0) ++ (ashift:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 3)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (ashift:DI (match_dup 1) (const_int 2))) ++ (set (match_dup 0) ++ (ashift:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 8)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 2) ++ (rotate:SI (match_dup 2) (const_int 8))) ++ (set (match_dup 3) ++ (rotate:SI (match_dup 3) (const_int 8))) ++ (set (strict_low_part (subreg:QI (match_dup 0) 3)) ++ (subreg:QI (match_dup 0) 7)) ++ (set (strict_low_part (subreg:QI (match_dup 0) 7)) ++ (const_int 0))] + { +- CC_STATUS_INIT; +- if (GET_CODE (operands[1]) == REG) +- operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); +- else +- operands[3] = adjust_address (operands[1], SImode, 4); +- if (GET_CODE (operands[0]) == REG) +- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- else if (GET_CODE (XEXP (operands[0], 0)) == PRE_DEC) +- return "clr%.l %0\;move%.l %3,%0"; +- else if (GET_CODE (XEXP (operands[0], 0)) == POST_INC) +- return "move%.l %3,%0\;clr%.l %0"; +- else +- operands[2] = adjust_address (operands[0], SImode, 4); +- if (ADDRESS_REG_P (operands[2])) +- return "move%.l %3,%0\;sub%.l %2,%2"; +- else +- return "move%.l %3,%0\;clr%.l %2"; +-}) +- +-;; The predicate below must be general_operand, because ashldi3 allows that +-(define_insn "ashldi_const" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=d") +- (ashift:DI (match_operand:DI 1 "general_operand" "0") +- (match_operand 2 "const_int_operand" "n")))] +- "(!TARGET_COLDFIRE +- && ((INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3) +- || INTVAL (operands[2]) == 8 || INTVAL (operands[2]) == 16 +- || (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63)))" ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 16)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 2) ++ (rotate:SI (match_dup 2) (const_int 16))) ++ (set (match_dup 3) ++ (rotate:SI (match_dup 3) (const_int 16))) ++ (set (strict_low_part (subreg:HI (match_dup 0) 2)) ++ (subreg:HI (match_dup 0) 6)) ++ (set (strict_low_part (subreg:HI (match_dup 0) 6)) ++ (const_int 0))] + { +- operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- if (INTVAL (operands[2]) == 1) +- return "add%.l %1,%1\;addx%.l %0,%0"; +- else if (INTVAL (operands[2]) == 8) +- return "rol%.l #8,%1\;rol%.l #8,%0\;move%.b %1,%0\;clr%.b %1"; +- else if (INTVAL (operands[2]) == 16) +- return "swap %1\;swap %0\;move%.w %1,%0\;clr%.w %1"; +- else if (INTVAL (operands[2]) == 48) +- return "mov%.l %1,%0\;swap %0\;clr%.l %1\;clr%.w %0"; +- else if (INTVAL (operands[2]) == 2) +- return "add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0"; +- else if (INTVAL (operands[2]) == 3) +- return "add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0"; +- else /* 32 < INTVAL (operands[2]) <= 63 */ +- { +- operands[2] = GEN_INT (INTVAL (operands[2]) - 32); +- output_asm_insn (INTVAL (operands[2]) <= 8 ? "asl%.l %2,%1" : +- "moveq %2,%0\;asl%.l %0,%1", operands); +- return "mov%.l %1,%0\;moveq #0,%1"; +- } ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); + }) + ++(define_split ++ [(set (match_operand:DI 0 "pre_dec_operand" "") ++ (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "") ++ (const_int 32)))] ++ "reload_completed" ++ [(set (match_dup 0) (const_int 0)) ++ (set (match_dup 0) (match_dup 1))] ++{ ++ operands[0] = adjust_address(operands[0], SImode, 0); ++ operands[1] = gen_lowpart(SImode, operands[1]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "post_inc_operand" "") ++ (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "") ++ (const_int 32)))] ++ "reload_completed" ++ [(set (match_dup 0) (match_dup 1)) ++ (set (match_dup 0) (const_int 0))] ++{ ++ operands[0] = adjust_address(operands[0], SImode, 0); ++ operands[1] = gen_lowpart(SImode, operands[1]); ++}) ++ ++(define_insn_and_split "*ashldi3_const32" ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=ro<>") ++ (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "ro") ++ (const_int 32)))] ++ "" ++ "#" ++ "&& reload_completed" ++ [(set (match_dup 4) (match_dup 3)) ++ (set (match_dup 2) (const_int 0))] ++ "split_di(operands, 2, operands + 2, operands + 4);") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (match_operand 2 "const_int_operand" "")))] ++ "reload_completed && !TARGET_COLDFIRE ++ && INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 40" ++ [(set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 2))) ++ (set (match_dup 3) (match_dup 4)) ++ (set (match_dup 4) (const_int 0))] ++{ ++ operands[2] = GEN_INT (INTVAL (operands[2]) - 32); ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[4] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 48)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 2) (match_dup 3)) ++ (set (match_dup 2) ++ (rotate:SI (match_dup 2) (const_int 16))) ++ (set (match_dup 3) (const_int 0)) ++ (set (strict_low_part (subreg:HI (match_dup 0) 2)) ++ (const_int 0))] ++{ ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (match_operand 2 "const_int_operand" "")))] ++ "reload_completed && !TARGET_COLDFIRE ++ && INTVAL (operands[2]) > 40 && INTVAL (operands[2]) <= 63" ++ [(set (match_dup 3) (match_dup 2)) ++ (set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 3))) ++ (set (match_dup 3) (match_dup 4)) ++ (set (match_dup 4) (const_int 0))] ++{ ++ operands[2] = GEN_INT (INTVAL (operands[2]) - 32); ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[4] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_insn "*ashldi3" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (ashift:DI (match_operand:DI 1 "register_operand" "0") ++ (match_operand 2 "const_int_operand" "n")))] ++ "!TARGET_COLDFIRE ++ && ((INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3) ++ || INTVAL (operands[2]) == 8 || INTVAL (operands[2]) == 16 ++ || (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63))" ++ "#") ++ + (define_expand "ashldi3" +- [(set (match_operand:DI 0 "nonimmediate_operand" "") +- (ashift:DI (match_operand:DI 1 "general_operand" "") +- (match_operand 2 "const_int_operand" "")))] ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashift:DI (match_operand:DI 1 "register_operand" "") ++ (match_operand 2 "const_int_operand" "")))] + "!TARGET_COLDFIRE" +- " + { + /* ??? This is a named pattern like this is not allowed to FAIL based + on its operands. */ +@@ -3952,7 +4051,7 @@ + && INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16 + && (INTVAL (operands[2]) < 32 || INTVAL (operands[2]) > 63))) + FAIL; +-} ") ++}) + + ;; On most 68k models, this makes faster code in a special case. + +@@ -4068,21 +4167,86 @@ + return "move%.l %1,%0"; + }) + +-(define_insn "ashrdi_const32" ++(define_insn "*ashrdi3_const1" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "0") ++ (const_int 1)))] ++ "!TARGET_COLDFIRE" ++{ ++ operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); ++ return "asr%.l #1,%0\;roxr%.l #1,%1"; ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 2)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (ashiftrt:DI (match_dup 1) (const_int 1))) ++ (set (match_dup 0) ++ (ashiftrt:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 3)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (ashiftrt:DI (match_dup 1) (const_int 2))) ++ (set (match_dup 0) ++ (ashiftrt:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 8)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (strict_low_part (subreg:QI (match_dup 0) 7)) ++ (subreg:QI (match_dup 0) 3)) ++ (set (match_dup 2) ++ (ashiftrt:SI (match_dup 2) (const_int 8))) ++ (set (match_dup 3) ++ (rotatert:SI (match_dup 3) (const_int 8)))] ++{ ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 16)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (strict_low_part (subreg:HI (match_dup 0) 6)) ++ (subreg:HI (match_dup 0) 2)) ++ (set (match_dup 2) ++ (rotate:SI (match_dup 2) (const_int 16))) ++ (set (match_dup 3) ++ (rotate:SI (match_dup 3) (const_int 16))) ++ (set (match_dup 2) ++ (sign_extend:SI (subreg:HI (match_dup 2) 2)))] ++{ ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_insn "*ashrdi_const32" + [(set (match_operand:DI 0 "register_operand" "=d") + (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro") + (const_int 32)))] + "" + { + CC_STATUS_INIT; +- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); + if (TARGET_68020) +- return "move%.l %1,%2\;smi %0\;extb%.l %0"; ++ return "move%.l %1,%R0\;smi %0\;extb%.l %0"; + else +- return "move%.l %1,%2\;smi %0\;ext%.w %0\;ext%.l %0"; ++ return "move%.l %1,%R0\;smi %0\;ext%.w %0\;ext%.l %0"; + }) + +-(define_insn "ashrdi_const32_mem" ++(define_insn "*ashrdi_const32_mem" + [(set (match_operand:DI 0 "nonimmediate_operand" "=o,<") + (ashiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro") + (const_int 32))) +@@ -4100,36 +4264,35 @@ + return "move%.l %1,%3\;smi %2\;ext%.w %2\;ext%.l %2\;move%.l %2,%0"; + }) + ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 63)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 3) ++ (ashiftrt:SI (match_dup 3) (const_int 31))) ++ (set (match_dup 2) ++ (match_dup 3))] ++ "split_di(operands, 1, operands + 2, operands + 3);") ++ + ;; The predicate below must be general_operand, because ashrdi3 allows that + (define_insn "ashrdi_const" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=d") +- (ashiftrt:DI (match_operand:DI 1 "general_operand" "0") ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "0") + (match_operand 2 "const_int_operand" "n")))] +- "(!TARGET_COLDFIRE ++ "!TARGET_COLDFIRE + && ((INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3) + || INTVAL (operands[2]) == 8 || INTVAL (operands[2]) == 16 + || INTVAL (operands[2]) == 31 +- || (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63)))" ++ || (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63))" + { + operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- if (INTVAL (operands[2]) == 63) +- return "add%.l %0,%0\;subx%.l %0,%0\;move%.l %0,%1"; + CC_STATUS_INIT; +- if (INTVAL (operands[2]) == 1) +- return "asr%.l #1,%0\;roxr%.l #1,%1"; +- else if (INTVAL (operands[2]) == 8) +- return "move%.b %0,%1\;asr%.l #8,%0\;ror%.l #8,%1"; +- else if (INTVAL (operands[2]) == 16) +- return "move%.w %0,%1\;swap %0\;ext%.l %0\;swap %1"; +- else if (INTVAL (operands[2]) == 48) ++ if (INTVAL (operands[2]) == 48) + return "swap %0\;ext%.l %0\;move%.l %0,%1\;smi %0\;ext%.w %0"; +- else if (INTVAL (operands[2]) == 31) ++ if (INTVAL (operands[2]) == 31) + return "add%.l %1,%1\;addx%.l %0,%0\;move%.l %0,%1\;subx%.l %0,%0"; +- else if (INTVAL (operands[2]) == 2) +- return "asr%.l #1,%0\;roxr%.l #1,%1\;asr%.l #1,%0\;roxr%.l #1,%1"; +- else if (INTVAL (operands[2]) == 3) +- return "asr%.l #1,%0\;roxr%.l #1,%1\;asr%.l #1,%0\;roxr%.l #1,%1\;asr%.l #1,%0\;roxr%.l #1,%1"; +- else /* 32 < INTVAL (operands[2]) <= 63 */ ++ if (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63) + { + operands[2] = GEN_INT (INTVAL (operands[2]) - 32); + output_asm_insn (INTVAL (operands[2]) <= 8 ? "asr%.l %2,%0" : +@@ -4138,14 +4301,14 @@ + return INTVAL (operands[2]) >= 15 ? "ext%.w %d0" : + TARGET_68020 ? "extb%.l %0" : "ext%.w %0\;ext%.l %0"; + } ++ return "#"; + }) + + (define_expand "ashrdi3" +- [(set (match_operand:DI 0 "nonimmediate_operand" "") +- (ashiftrt:DI (match_operand:DI 1 "general_operand" "") ++ [(set (match_operand:DI 0 "register_operand" "") ++ (ashiftrt:DI (match_operand:DI 1 "register_operand" "") + (match_operand 2 "const_int_operand" "")))] + "!TARGET_COLDFIRE" +- " + { + /* ??? This is a named pattern like this is not allowed to FAIL based + on its operands. */ +@@ -4154,7 +4317,7 @@ + && INTVAL (operands[2]) != 8 && INTVAL (operands[2]) != 16 + && (INTVAL (operands[2]) < 31 || INTVAL (operands[2]) > 63))) + FAIL; +-} ") ++}) + + ;; On all 68k models, this makes faster code in a special case. + +@@ -4242,69 +4405,176 @@ + return "move%.l %1,%0"; + }) + +-(define_insn "lshrdi_const32" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=ro,<,>") +- (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro,ro,ro") ++(define_insn "*lshrdi3_const1" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "0") ++ (const_int 1)))] ++ "!TARGET_COLDFIRE" ++ "lsr%.l #1,%0\;roxr%.l #1,%R0") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 2)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (lshiftrt:DI (match_dup 1) (const_int 1))) ++ (set (match_dup 0) ++ (lshiftrt:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 3)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (match_dup 0) ++ (lshiftrt:DI (match_dup 1) (const_int 2))) ++ (set (match_dup 0) ++ (lshiftrt:DI (match_dup 0) (const_int 1)))] ++ "") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 8)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (strict_low_part (subreg:QI (match_dup 0) 7)) ++ (subreg:QI (match_dup 0) 3)) ++ (set (match_dup 2) ++ (lshiftrt:SI (match_dup 2) (const_int 8))) ++ (set (match_dup 3) ++ (rotatert:SI (match_dup 3) (const_int 8)))] ++{ ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 16)))] ++ "reload_completed && !TARGET_COLDFIRE" ++ [(set (strict_low_part (subreg:HI (match_dup 0) 6)) ++ (subreg:HI (match_dup 0) 2)) ++ (set (strict_low_part (subreg:HI (match_dup 0) 2)) ++ (const_int 0)) ++ (set (match_dup 3) ++ (rotate:SI (match_dup 3) (const_int 16))) ++ (set (match_dup 2) ++ (rotate:SI (match_dup 2) (const_int 16)))] ++{ ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "pre_dec_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "") ++ (const_int 32)))] ++ "reload_completed" ++ [(set (match_dup 0) (match_dup 1)) ++ (set (match_dup 0) (const_int 0))] ++{ ++ operands[0] = adjust_address(operands[0], SImode, 0); ++ operands[1] = gen_highpart(SImode, operands[1]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "post_inc_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "") ++ (const_int 32)))] ++ "reload_completed" ++ [(set (match_dup 0) (const_int 0)) ++ (set (match_dup 0) (match_dup 1))] ++{ ++ operands[0] = adjust_address(operands[0], SImode, 0); ++ operands[1] = gen_highpart(SImode, operands[1]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "nonimmediate_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "") ++ (const_int 32)))] ++ "reload_completed" ++ [(set (match_dup 2) (match_dup 5)) ++ (set (match_dup 4) (const_int 0))] ++ "split_di(operands, 2, operands + 2, operands + 4);") ++ ++(define_insn "*lshrdi_const32" ++ [(set (match_operand:DI 0 "nonimmediate_operand" "=ro<>") ++ (lshiftrt:DI (match_operand:DI 1 "general_operand" "ro") + (const_int 32)))] + "" ++ "#") ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (match_operand 2 "const_int_operand" "")))] ++ "reload_completed && !TARGET_COLDFIRE ++ && INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 40" ++ [(set (match_dup 3) (lshiftrt:SI (match_dup 3) (match_dup 2))) ++ (set (match_dup 4) (match_dup 3)) ++ (set (match_dup 3) (const_int 0))] ++{ ++ operands[2] = GEN_INT (INTVAL (operands[2]) - 32); ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[4] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (const_int 48)))] ++ "reload_completed" ++ [(set (match_dup 3) (match_dup 2)) ++ (set (strict_low_part (subreg:HI (match_dup 0) 6)) ++ (const_int 0)) ++ (set (match_dup 2) (const_int 0)) ++ (set (match_dup 3) ++ (rotate:SI (match_dup 3) (const_int 16)))] + { +- CC_STATUS_INIT; +- if (which_alternative == 1) +- return "move%.l %1,%0\;clr%.l %0"; +- if (which_alternative == 2) +- return "clr%.l %0\;move%.l %1,%0"; +- if (GET_CODE (operands[0]) == REG) +- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- else +- operands[2] = adjust_address (operands[0], SImode, 4); +- if (GET_CODE (operands[1]) == REG) +- operands[3] = gen_rtx_REG (SImode, REGNO (operands[1]) + 1); +- else +- operands[3] = adjust_address (operands[1], SImode, 4); +- if (ADDRESS_REG_P (operands[0])) +- return "move%.l %1,%2\;sub%.l %0,%0"; +- else +- return "move%.l %1,%2\;clr%.l %0"; ++ operands[2] = gen_highpart (SImode, operands[0]); ++ operands[3] = gen_lowpart (SImode, operands[0]); ++}) ++ ++(define_split ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") ++ (match_operand 2 "const_int_operand" "")))] ++ "reload_completed && !TARGET_COLDFIRE ++ && INTVAL (operands[2]) > 40 && INTVAL (operands[2]) <= 62" ++ [(set (match_dup 4) (match_dup 2)) ++ (set (match_dup 3) (lshiftrt:SI (match_dup 3) (match_dup 4))) ++ (set (match_dup 4) (match_dup 3)) ++ (set (match_dup 3) (const_int 0))] ++{ ++ operands[2] = GEN_INT (INTVAL (operands[2]) - 32); ++ operands[3] = gen_highpart (SImode, operands[0]); ++ operands[4] = gen_lowpart (SImode, operands[0]); + }) + +-;; The predicate below must be general_operand, because lshrdi3 allows that +-(define_insn "lshrdi_const" +- [(set (match_operand:DI 0 "nonimmediate_operand" "=d") +- (lshiftrt:DI (match_operand:DI 1 "general_operand" "0") ++(define_insn "*lshrdi_const63" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "0") ++ (const_int 63)))] ++ "" ++ "add%.l %0,%0\;clr%.l %0\;clr%.l %R1\;addx%.l %R1,%R1") ++ ++(define_insn "*lshrdi3_const" ++ [(set (match_operand:DI 0 "register_operand" "=d") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "0") + (match_operand 2 "const_int_operand" "n")))] + "(!TARGET_COLDFIRE +- && ((INTVAL (operands[2]) >= 1 && INTVAL (operands[2]) <= 3) ++ && ((INTVAL (operands[2]) >= 2 && INTVAL (operands[2]) <= 3) + || INTVAL (operands[2]) == 8 || INTVAL (operands[2]) == 16 + || (INTVAL (operands[2]) > 32 && INTVAL (operands[2]) <= 63)))" +-{ +- operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- if (INTVAL (operands[2]) == 63) +- return "add%.l %0,%0\;clr%.l %0\;clr%.l %1\;addx%.l %1,%1"; +- CC_STATUS_INIT; +- if (INTVAL (operands[2]) == 1) +- return "lsr%.l #1,%0\;roxr%.l #1,%1"; +- else if (INTVAL (operands[2]) == 8) +- return "move%.b %0,%1\;lsr%.l #8,%0\;ror%.l #8,%1"; +- else if (INTVAL (operands[2]) == 16) +- return "move%.w %0,%1\;clr%.w %0\;swap %1\;swap %0"; +- else if (INTVAL (operands[2]) == 48) +- return "move%.l %0,%1\;clr%.w %1\;clr%.l %0\;swap %1"; +- else if (INTVAL (operands[2]) == 2) +- return "lsr%.l #1,%0\;roxr%.l #1,%1\;lsr%.l #1,%0\;roxr%.l #1,%1"; +- else if (INTVAL (operands[2]) == 3) +- return "lsr%.l #1,%0\;roxr%.l #1,%1\;lsr%.l #1,%0\;roxr%.l #1,%1\;lsr%.l #1,%0\;roxr%.l #1,%1"; +- else /* 32 < INTVAL (operands[2]) <= 63 */ +- { +- operands[2] = GEN_INT (INTVAL (operands[2]) - 32); +- output_asm_insn (INTVAL (operands[2]) <= 8 ? "lsr%.l %2,%0" : +- "moveq %2,%1\;lsr%.l %1,%0", operands); +- return "mov%.l %0,%1\;moveq #0,%0"; +- } +-}) ++ "#") + + (define_expand "lshrdi3" +- [(set (match_operand:DI 0 "nonimmediate_operand" "") +- (lshiftrt:DI (match_operand:DI 1 "general_operand" "") ++ [(set (match_operand:DI 0 "register_operand" "") ++ (lshiftrt:DI (match_operand:DI 1 "register_operand" "") + (match_operand 2 "const_int_operand" "")))] + "!TARGET_COLDFIRE" + { --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-library-path.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-library-path.dpatch @@ -0,0 +1,162 @@ +#! /bin/sh -e + +# 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. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/gnu/classpath/natSystemProperties.cc~ 2006-08-02 00:53:40.000000000 +0200 ++++ libjava/gnu/classpath/natSystemProperties.cc 2006-08-19 00:41:50.063803000 +0200 +@@ -141,6 +141,34 @@ + 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) + { +@@ -370,8 +398,13 @@ + // 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 + { +@@ -379,9 +412,12 @@ + #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 +--- libjava/prims.cc~ 2006-07-28 10:24:31.000000000 +0200 ++++ libjava/prims.cc 2006-08-19 00:47:15.993803000 +0200 +@@ -21,6 +21,10 @@ + #include + #endif + ++#ifdef HAVE_UNAME ++#include ++#endif ++ + #include + #include + #include +@@ -1725,12 +1729,28 @@ + _Jv_PrependVersionedLibdir (char* libpath) + { + char* retval = 0; ++#define GCJ_VERSIONED_SUBDIR "gcj-4.2" ++#define GCJ_VERSIONED_LIB32DIR "/usr/lib32" GCJ_VERSIONED_SUBDIR ++ const char* vlibdir = GCJ_VERSIONED_LIBDIR; ++ int vlibdir_size = sizeof (GCJ_VERSIONED_LIBDIR); ++ ++#if defined(__linux__) && defined (__i386__) ++ struct utsname u; ++ if (! uname (&u)) ++ { ++ if (! strcmp ("x86_64", u.machine)) ++ { ++ vlibdir = GCJ_VERSIONED_LIB32DIR; ++ vlibdir_size = sizeof (GCJ_VERSIONED_LIB32DIR); ++ } ++ } ++#endif + + if (libpath && libpath[0] != '\0') + { + if (! strncmp (libpath, +- GCJ_VERSIONED_LIBDIR, +- sizeof (GCJ_VERSIONED_LIBDIR) - 1)) ++ vlibdir, ++ vlibdir_size - 1)) + { + // LD_LIBRARY_PATH is already prefixed with + // GCJ_VERSIONED_LIBDIR. +@@ -1741,10 +1761,10 @@ + { + // LD_LIBRARY_PATH is not prefixed with + // GCJ_VERSIONED_LIBDIR. +- jsize total = (sizeof (GCJ_VERSIONED_LIBDIR) - 1) ++ jsize total = (vlibdir_size - 1) + + (sizeof (PATH_SEPARATOR) - 1) + strlen (libpath) + 1; + retval = (char*) _Jv_Malloc (total); +- strcpy (retval, GCJ_VERSIONED_LIBDIR); ++ strcpy (retval, vlibdir); + strcat (retval, PATH_SEPARATOR); + strcat (retval, libpath); + } +@@ -1752,8 +1772,8 @@ + else + { + // LD_LIBRARY_PATH was not specified or is empty. +- retval = (char*) _Jv_Malloc (sizeof (GCJ_VERSIONED_LIBDIR)); +- strcpy (retval, GCJ_VERSIONED_LIBDIR); ++ retval = (char*) _Jv_Malloc (vlibdir_size); ++ strcpy (retval, vlibdir); + } + + return retval; --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-peephole-note.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-peephole-note.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: don't choke on notes while reinserting REG_EH_REGION notes + +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 + +--- + + gcc/recog.c | 1 + + 1 file changed, 1 insertion(+) + +Index: gcc-4.1/gcc/recog.c +=================================================================== +--- gcc-4.1.orig/gcc/recog.c ++++ gcc-4.1/gcc/recog.c +@@ -3215,6 +3215,7 @@ peephole2_optimize (FILE *dump_file ATTR + for (x = try ; x != before_try ; x = PREV_INSN (x)) + if (CALL_P (x) + || (flag_non_call_exceptions ++ && INSN_P (x) + && may_trap_p (PATTERN (x)) + && !find_reg_note (x, REG_EH_REGION, NULL))) + { --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-symbolic-tracebacks.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-symbolic-tracebacks.dpatch @@ -0,0 +1,298 @@ +#! /bin/sh -e + +# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy +# DP: convert_addresses from adaint.c, and provide a real one separately.) + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +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 + +--- gcc/ada/g-trasym.adb~ Thu Oct 24 11:02:18 2002 ++++ gcc/ada/g-trasym.adb Fri Jul 4 16:16:30 2003 +@@ -33,16 +33,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; + + ------------------------ +@@ -56,16 +56,19 @@ + buf : System.Address; + len : System.Address); + pragma Import (C, convert_addresses, "convert_addresses"); +- -- This is the procedure version of the Ada aware addr2line that will +- -- use argv[0] as the executable containing the debug information. +- -- This procedure is provided by libaddr2line on targets that support +- -- it. A dummy version is in a-adaint.c for other targets so that build +- -- of shared libraries doesn't generate unresolved symbols. ++ -- This is the ALT Linux specific version adapted to the binutils ++ -- deployed with most Linuxes. These binutils already have an ++ -- addr2line tool that demangles Ada symbolic names, but there are ++ -- version dependant variants for the option names. Therefore our ++ -- implementation spawns a shell script that does normalization of ++ -- the option and then executes addr2line and communicates with it ++ -- through a bidirectional pipe. + -- + -- Note that this procedure is *not* thread-safe. + +- Res : String (1 .. 256 * Traceback'Length); +- Len : Integer; ++ B_Size : constant Integer := 256 * Traceback'Length; ++ Len : Integer := B_Size; ++ Res : String (1 .. B_Size); + + begin + if Traceback'Length > 0 then +--- gcc/ada/convert_addresses.c~ 1970-01-01 01:00:00.000000000 +0100 ++++ gcc/ada/convert_addresses.c 2005-04-27 15:06:51.000000000 +0200 +@@ -0,0 +1,157 @@ ++/* ++ 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 ++( 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]; ++ char exe_name[128]; ++ ++ *buf = 0; *len = 0; ++ /* Thanx to the /proc filesystem we can very easily reference our own ++ executable image:-)*/ ++ snprintf(exe_name,sizeof(exe_name),"--exe=/proc/%ld/exe", (long)pid); ++ ++ 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", ++ exe_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; ++} +--- gcc/ada/Makefile.in.orig 2006-04-17 19:39:15.848644432 +0000 ++++ gcc/ada/Makefile.in 2006-04-17 19:43:14.794319168 +0000 +@@ -1352,7 +1352,7 @@ + include $(fsrcdir)/Makefile.rtl + + GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \ +- g-trasym.o memtrack.o ++ g-trasym.o memtrack.o convert_addresses.o + + # Default run time files + +@@ -1507,7 +1507,6 @@ + for file in rts/*.ali; do \ + $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + done +- -$(INSTALL_DATA) rts/g-trasym$(objext) $(DESTDIR)$(ADA_RTL_OBJ_DIR) + -cd rts; for file in *$(arext);do \ + $(INSTALL_DATA) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR); \ + $(RANLIB_FOR_TARGET) $(DESTDIR)$(ADA_RTL_OBJ_DIR)/$$file; \ +@@ -1607,7 +1606,7 @@ + $(GNATRTL_OBJS) + $(RM) rts/libgnat$(arext) rts/libgnarl$(arext) + $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgnat$(arext) \ +- $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS)) ++ $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) g-trasym.o convert_addresses.o) + ifneq ($(PREFIX_OBJS),) + $(AR_FOR_TARGET) $(AR_FLAGS) rts/libgccprefix$(arext) \ + $(PREFIX_OBJS); +@@ -1637,6 +1636,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 rts; ../../xgcc -B../../ -shared $(GNATLIBCFLAGS) \ +@@ -1859,6 +1859,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 + + gen-soccon: gen-soccon.c gsocket.h + $(CC) $(ALL_CFLAGS) $(ADA_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-pr28516.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-pr28516.dpatch @@ -0,0 +1,43 @@ +#! /bin/sh -e + +# DP: Fix PR28516 on ARM + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- trunk/gcc/config/arm/arm.c 2006/09/19 13:18:27 117055 ++++ trunk/gcc/config/arm/arm.c 2006/09/19 13:19:24 117056 +@@ -15415,6 +15415,15 @@ + /* Move from sp to reg. */ + asm_fprintf (asm_out_file, "\t.movsp %r\n", REGNO (e0)); + } ++ else if (GET_CODE (e1) == PLUS ++ && GET_CODE (XEXP (e1, 0)) == REG ++ && REGNO (XEXP (e1, 0)) == SP_REGNUM ++ && GET_CODE (XEXP (e1, 1)) == CONST_INT) ++ { ++ /* Set reg to offset from sp. */ ++ asm_fprintf (asm_out_file, "\t.movsp %r, #%d\n", ++ REGNO (e0), (int)INTVAL(XEXP (e1, 1))); ++ } + else + abort (); + break; --- gcj-4.2-4.2-20070707.orig/debian/patches/libstdc++-pic.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libstdc++-pic.dpatch @@ -0,0 +1,71 @@ +#! /bin/sh -e + +# DP: Build and install libstdc++_pic.a library. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -ur libstdc++-v3/src/Makefile.am libstdc++-v3/src/Makefile.am +--- libstdc++-v3/src/Makefile.am~ 2004-04-16 21:04:05.000000000 +0200 ++++ libstdc++-v3/src/Makefile.am 2004-07-03 20:22:43.000000000 +0200 +@@ -210,6 +210,10 @@ + $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ + + ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o ++ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) ++ + # Added bits to build debug library. + if GLIBCXX_BUILD_DEBUG + all-local: build_debug +diff -ur libstdc++-v3/src/Makefile.in libstdc++-v3/src/Makefile.in +--- libstdc++-v3/src/Makefile.in 2004-07-03 06:41:13.000000000 +0200 ++++ libstdc++-v3/src/Makefile.in 2004-07-03 20:25:05.000000000 +0200 +@@ -611,7 +611,7 @@ + + install-data-am: install-data-local + +-install-exec-am: install-toolexeclibLTLIBRARIES ++install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local + + install-info: install-info-am + +@@ -644,6 +644,7 @@ + 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 \ +@@ -729,6 +730,11 @@ + install_debug: + (cd ${debugdir} && $(MAKE) \ + toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ++ ++install-exec-local: ++ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o ++ $(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: --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-driver-check.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-driver-check.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: Simplify Ada driver check (we always build using the required +# DP: Ada version. Needed for warnings on alpha. + +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 -p0 < $0 + cd ${dir} && autoconf2.13 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- config/acx.m4~ 2005-12-15 14:59:17.000000000 +0100 ++++ config/acx.m4 2006-07-08 17:01:44.325594336 +0200 +@@ -195,7 +195,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 --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-libgnatvsn.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-libgnatvsn.dpatch @@ -0,0 +1,1522 @@ +#! /bin/sh -e + +# 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 + +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 -p0 < $0 + cd ${dir} && autoconf2.13 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- configure.in~ ++++ configure.in 2007-06-19 16:00:28.885236576 +0200 +@@ -123,7 +123,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 libada" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber libada libgnatvsn" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -152,6 +152,7 @@ + ${libgcj} \ + target-libobjc \ + target-libada \ ++ target-libgnatvsn \ + target-libgomp" + + # these tools are built using the target libraries, and are intended to +@@ -230,7 +231,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}" ;; +@@ -304,7 +304,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, +--- gcc/ada/config-lang.in~ ++++ gcc/ada/config-lang.in 2007-06-19 16:01:00.198766122 +0200 +@@ -38,8 +38,8 @@ + + outputs=ada/Makefile + +-target_libs="target-libada" +-lang_dirs="libada gnattools" ++target_libs="target-libada target-libgnatvsn" ++lang_dirs="libada libgnatvsn gnattools" + + # Ada will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +--- gnattools/Makefile.in~ ++++ gnattools/Makefile.in 2007-06-19 16:06:58.188252543 +0200 +@@ -40,9 +40,10 @@ + INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc + ADA_CFLAGS=-g -O2 -gnatn + ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada ++ADA_INCLUDES += -aO../libgnatvsn + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +-ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) ++ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -L../libgnatvsn -lgnatvsn + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -68,62 +69,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.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,33 +124,19 @@ + 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) + + +@@ -204,6 +159,7 @@ + touch $@ + + gnattools-native: ../gcc/ada/rts/libgnat-$(LIB_VERSION).so ++gnattools-native: ../libgnatvsn/libgnatvsn.so + gnattools-native: stamp-gnattools-sources + gnattools-native: $(TOOLS) gnatbl + +@@ -215,14 +171,14 @@ + 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 + +@@ -239,6 +195,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 + +@@ -252,7 +209,7 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatchop gnatkr: version.o ++gnatchop gnatkr: + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ + --GNATBIND=../gcc/gnatbind +@@ -264,7 +221,7 @@ + cp -lp $< $@ + + gnatbind gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref gprmake: \ +-link.o version.o prefix.o ++link.o prefix.o + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ + --GNATBIND=../gcc/gnatbind +@@ -273,7 +230,7 @@ + --GCC="$(GCC) $(ADA_INCLUDES)" + strip $@ + +-gnatbl: gnatbl.c link.o version.o prefix.o ++gnatbl: gnatbl.c link.o prefix.o + $(GCC) -o $@ $< $(CFLAGS) \ + -I../gcc -I@srcdir@/../gcc/config -I@srcdir@/../gcc \ + -I@srcdir@/../include \ +--- libgnatvsn/configure~ ++++ libgnatvsn/configure 2006-04-13 08:18:04.000000000 +0200 +@@ -0,0 +1,34 @@ ++#!/bin/sh ++ ++# Minimal configure script for libgnatvsn. We're only interested in ++# a few parameters. ++ ++for arg in $*; do ++ case ${arg} in ++ --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=\(.\+\)'`;; ++ *) ++ 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 "Creating Makefile..." | tee -a config.log ++sed -e "s,@build@,${build}," \ ++ -e "s,@host@,${host}," \ ++ -e "s,@target@,${target}," \ ++ -e "s,@prefix@,${prefix}," \ ++ -e "s,@srcdir@,${srcdir}," < ${srcdir}/Makefile.in > Makefile +--- libgnatvsn/Makefile.in~ ++++ libgnatvsn/Makefile.in 2007-06-21 01:10:32.000000000 +0200 +@@ -0,0 +1,131 @@ ++# 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))\"" ++ ++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 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 ++vpath %.ads @srcdir@/../gcc/ada ++vpath %.adb @srcdir@/../gcc/ada ++ ++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)): | 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) \ ++ $(realpath $<) -o $@ ++ ++obj-shared: ++ -mkdir $@ ++ ++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS)) ++ : # Make libgnatvsn.a ++ ar rc $@ $^ ++ ranlib $@ ++ ++$(addprefix obj-static/,$(OBJECTS)): | 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) \ ++ $< -o $@ ++ ++obj-static: ++ -mkdir $@ ++ ++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* +--- Makefile.def~ ++++ Makefile.def 2007-06-19 16:10:02.997279759 +0200 +@@ -120,6 +120,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; +@@ -157,6 +164,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. +@@ -315,6 +329,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; }; + + // Host modules specific to gdb. + dependencies = { module=configure-gdb; on=configure-intl; }; +--- Makefile.in~ ++++ Makefile.in 2007-06-19 16:11:13.000000000 +0200 +@@ -640,6 +640,7 @@ + maybe-configure-libtermcap \ + maybe-configure-utils \ + maybe-configure-libada \ ++ maybe-configure-libgnatvsn \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -662,6 +663,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. +@@ -784,6 +786,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 +@@ -807,6 +810,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 +@@ -893,6 +897,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 +@@ -916,6 +921,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 +@@ -997,6 +1003,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 +@@ -1020,6 +1027,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 +@@ -1101,6 +1109,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 +@@ -1124,6 +1133,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 +@@ -1205,6 +1215,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 +@@ -1228,6 +1239,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 +@@ -1309,6 +1321,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 +@@ -1332,6 +1345,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 +@@ -1413,6 +1427,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 +@@ -1436,6 +1451,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-html +@@ -1517,6 +1533,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 +@@ -1540,6 +1557,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 +@@ -1621,6 +1639,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 +@@ -1644,6 +1663,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 +@@ -1725,6 +1745,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 +@@ -1748,6 +1769,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 +@@ -1829,6 +1851,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 +@@ -1852,6 +1875,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 +@@ -1933,6 +1957,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 +@@ -1956,6 +1981,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 +@@ -2037,6 +2063,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 +@@ -2060,6 +2087,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 + + +@@ -2197,6 +2225,7 @@ + maybe-check-libtermcap \ + maybe-check-utils \ + maybe-check-libada \ ++ maybe-check-libgnatvsn \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2220,6 +2249,7 @@ + maybe-check-target-qthreads \ + maybe-check-target-rda \ + maybe-check-target-libada \ ++ maybe-check-target-libgnatvsn \ + maybe-check-target-libgomp + + do-check: +@@ -2327,6 +2357,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2399,6 +2430,7 @@ + maybe-install-libtermcap \ + maybe-install-utils \ + maybe-install-libada \ ++ maybe-install-libgnatvsn \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2422,6 +2454,7 @@ + maybe-install-target-qthreads \ + maybe-install-target-rda \ + maybe-install-target-libada \ ++ maybe-install-target-libgnatvsn \ + maybe-install-target-libgomp + + uninstall: +@@ -33428,115 +33461,121 @@ + + + +-.PHONY: configure-libada maybe-configure-libada +-maybe-configure-libada: ++.PHONY: configure-libgnatvsn maybe-configure-libgnatvsn ++maybe-configure-libgnatvsn: + @if gcc-bootstrap +-configure-libada: stage_current ++configure-libgnatvsn: stage_current + @endif gcc-bootstrap +-@if libada +-maybe-configure-libada: configure-libada +-configure-libada: ++@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)/libada/Makefile || exit 0; \ +- $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libada ; \ ++ test ! -f $(HOST_SUBDIR)/libgnatvsn/Makefile || exit 0; \ ++ $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libgnatvsn ; \ + $(HOST_EXPORTS) \ +- echo Configuring in $(HOST_SUBDIR)/libada; \ +- cd "$(HOST_SUBDIR)/libada" || exit 1; \ ++ echo Configuring in $(HOST_SUBDIR)/libgnatvsn; \ ++ cd "$(HOST_SUBDIR)/libgnatvsn" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ +- *) topdir=`echo $(HOST_SUBDIR)/libada/ | \ ++ *) topdir=`echo $(HOST_SUBDIR)/libgnatvsn/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ +- srcdiroption="--srcdir=$${topdir}/libada"; \ +- libsrcdir="$$s/libada"; \ ++ srcdiroption="--srcdir=$${topdir}/libgnatvsn"; \ ++ libsrcdir="$$s/libgnatvsn"; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) $${srcdiroption} \ + || exit 1 +-@endif libada ++@endif libgnatvsn + + + + + +-.PHONY: all-libada maybe-all-libada +-maybe-all-libada: ++.PHONY: all-libgnatvsn maybe-all-libgnatvsn ++maybe-all-libgnatvsn: + @if gcc-bootstrap +-all-libada: stage_current ++all-libgnatvsn: stage_current + @endif gcc-bootstrap +-@if libada +-TARGET-libada=all +-maybe-all-libada: all-libada +-all-libada: configure-libada ++@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)/libada && \ +- $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libada)) +-@endif libada ++ (cd $(HOST_SUBDIR)/libgnatvsn && \ ++ $(MAKE) $(FLAGS_TO_PASS) $(TARGET-libgnatvsn)) ++@endif libgnatvsn + + + + +-.PHONY: check-libada maybe-check-libada +-maybe-check-libada: +-@if libada +-maybe-check-libada: check-libada ++.PHONY: check-libgnatvsn maybe-check-libgnatvsn ++maybe-check-libgnatvsn: ++@if libgnatvsn ++maybe-check-libgnatvsn: check-libgnatvsn + +-check-libada: ++check-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: install-libada maybe-install-libada +-maybe-install-libada: +-@if libada +-maybe-install-libada: install-libada ++.PHONY: install-libgnatvsn maybe-install-libgnatvsn ++maybe-install-libgnatvsn: ++@if libgnatvsn ++maybe-install-libgnatvsn: install-libgnatvsn + +-install-libada: ++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 libada ++@endif libgnatvsn + + # Other targets (info, dvi, pdf, etc.) + +-.PHONY: maybe-info-libada info-libada +-maybe-info-libada: +-@if libada +-maybe-info-libada: info-libada ++.PHONY: maybe-info-libgnatvsn info-libgnatvsn ++maybe-info-libgnatvsn: ++@if libgnatvsn ++maybe-info-libgnatvsn: info-libgnatvsn + +-# libada doesn't support info. +-info-libada: ++# libgnatvsn doesn't support info. ++info-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-dvi-libada dvi-libada +-maybe-dvi-libada: +-@if libada +-maybe-dvi-libada: dvi-libada ++.PHONY: maybe-dvi-libgnatvsn dvi-libgnatvsn ++maybe-dvi-libgnatvsn: ++@if libgnatvsn ++maybe-dvi-libgnatvsn: dvi-libgnatvsn + +-# libada doesn't support dvi. +-dvi-libada: ++# libgnatvsn doesn't support dvi. ++dvi-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-pdf-libada pdf-libada +-maybe-pdf-libada: +-@if libada +-maybe-pdf-libada: pdf-libada ++.PHONY: maybe-pdf-libgnatvsn pdf-libgnatvsn ++maybe-pdf-libgnatvsn: ++@if libgnatvsn ++maybe-pdf-libgnatvsn: pdf-libgnatvsn + +-pdf-libada: \ +- configure-libada ++pdf-libgnatvsn: \ ++ configure-libgnatvsn + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33544,56 +33583,56 @@ + pdf) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-html-libada html-libada +-maybe-html-libada: +-@if libada +-maybe-html-libada: html-libada ++.PHONY: maybe-html-libgnatvsn html-libgnatvsn ++maybe-html-libgnatvsn: ++@if libgnatvsn ++maybe-html-libgnatvsn: html-libgnatvsn + +-# libada doesn't support html. +-html-libada: ++# libgnatvsn doesn't support html. ++html-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-TAGS-libada TAGS-libada +-maybe-TAGS-libada: +-@if libada +-maybe-TAGS-libada: TAGS-libada ++.PHONY: maybe-TAGS-libgnatvsn TAGS-libgnatvsn ++maybe-TAGS-libgnatvsn: ++@if libgnatvsn ++maybe-TAGS-libgnatvsn: TAGS-libgnatvsn + +-# libada doesn't support TAGS. +-TAGS-libada: ++# libgnatvsn doesn't support TAGS. ++TAGS-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-install-info-libada install-info-libada +-maybe-install-info-libada: +-@if libada +-maybe-install-info-libada: install-info-libada ++.PHONY: maybe-install-info-libgnatvsn install-info-libgnatvsn ++maybe-install-info-libgnatvsn: ++@if libgnatvsn ++maybe-install-info-libgnatvsn: install-info-libgnatvsn + +-# libada doesn't support install-info. +-install-info-libada: ++# libgnatvsn doesn't support install-info. ++install-info-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-install-html-libada install-html-libada +-maybe-install-html-libada: +-@if libada +-maybe-install-html-libada: install-html-libada ++.PHONY: maybe-install-html-libgnatvsn install-html-libgnatvsn ++maybe-install-html-libgnatvsn: ++@if libgnatvsn ++maybe-install-html-libgnatvsn: install-html-libgnatvsn + +-install-html-libada: \ +- configure-libada \ +- html-libada ++install-html-libgnatvsn: \ ++ configure-libgnatvsn \ ++ html-libgnatvsn + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33601,34 +33640,34 @@ + install-html) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-installcheck-libada installcheck-libada +-maybe-installcheck-libada: +-@if libada +-maybe-installcheck-libada: installcheck-libada ++.PHONY: maybe-installcheck-libgnatvsn installcheck-libgnatvsn ++maybe-installcheck-libgnatvsn: ++@if libgnatvsn ++maybe-installcheck-libgnatvsn: installcheck-libgnatvsn + +-# libada doesn't support installcheck. +-installcheck-libada: ++# libgnatvsn doesn't support installcheck. ++installcheck-libgnatvsn: + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-mostlyclean-libada mostlyclean-libada +-maybe-mostlyclean-libada: +-@if libada +-maybe-mostlyclean-libada: mostlyclean-libada ++.PHONY: maybe-mostlyclean-libgnatvsn mostlyclean-libgnatvsn ++maybe-mostlyclean-libgnatvsn: ++@if libgnatvsn ++maybe-mostlyclean-libgnatvsn: mostlyclean-libgnatvsn + +-mostlyclean-libada: ++mostlyclean-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33636,24 +33675,24 @@ + mostlyclean) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-clean-libada clean-libada +-maybe-clean-libada: +-@if libada +-maybe-clean-libada: clean-libada ++.PHONY: maybe-clean-libgnatvsn clean-libgnatvsn ++maybe-clean-libgnatvsn: ++@if libgnatvsn ++maybe-clean-libgnatvsn: clean-libgnatvsn + +-clean-libada: ++clean-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33661,24 +33700,24 @@ + clean) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-distclean-libada distclean-libada +-maybe-distclean-libada: +-@if libada +-maybe-distclean-libada: distclean-libada ++.PHONY: maybe-distclean-libgnatvsn distclean-libgnatvsn ++maybe-distclean-libgnatvsn: ++@if libgnatvsn ++maybe-distclean-libgnatvsn: distclean-libgnatvsn + +-distclean-libada: ++distclean-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33686,24 +33725,24 @@ + distclean) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + +-.PHONY: maybe-maintainer-clean-libada maintainer-clean-libada +-maybe-maintainer-clean-libada: +-@if libada +-maybe-maintainer-clean-libada: maintainer-clean-libada ++.PHONY: maybe-maintainer-clean-libgnatvsn maintainer-clean-libgnatvsn ++maybe-maintainer-clean-libgnatvsn: ++@if libgnatvsn ++maybe-maintainer-clean-libgnatvsn: maintainer-clean-libgnatvsn + +-maintainer-clean-libada: ++maintainer-clean-libgnatvsn: + @: $(MAKE); $(unstage) +- @[ -f ./libada/Makefile ] || exit 0; \ ++ @[ -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 libada" ; \ +- (cd $(HOST_SUBDIR)/libada && \ ++ 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}" \ +@@ -33711,7 +33750,7 @@ + maintainer-clean) \ + || exit 1 + +-@endif libada ++@endif libgnatvsn + + + +@@ -41675,6 +41714,317 @@ + + + ++.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) $${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}" \ ++ 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-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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatvsn ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -43570,6 +43920,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 + +@@ -43593,6 +43944,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 + +@@ -43829,6 +44181,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-gdb: maybe-configure-intl + configure-gdb: maybe-configure-sim + all-gdb: maybe-all-intl --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-stacktrace.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-stacktrace.dpatch @@ -0,0 +1,70 @@ +#! /bin/sh -e + +# DP: libgcj: Lookup source file name and line number in separated +# DP: debug files found in /usr/lib/debug + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- libjava/stacktrace.cc.orig 2006-06-16 13:54:07.078577632 +0200 ++++ libjava/stacktrace.cc 2006-06-16 13:56:08.032189888 +0200 +@@ -20,6 +20,11 @@ + #endif + + #include ++#include ++#include ++#ifdef HAVE_UNISTD_H ++#include ++#endif + + #include + #include +@@ -222,6 +227,28 @@ + 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 = --- gcj-4.2-4.2-20070707.orig/debian/patches/gpc-gcc-4.x.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gpc-gcc-4.x.dpatch @@ -0,0 +1,42 @@ +#! /bin/sh -e + +# DP: The gpc patch from the gpc tarball. + +if [ "x$gpc_gcc_patch" = "x" ] +then + gpc_gcc_patch=gcc-3.2.1.diff +fi + +pdir=gcc +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="$3/gcc" +elif [ $# -ne 1 ]; then + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi + +gpc_gcc_patch=$pdir/p/diffs/gcc-4.1.diff +gpc_gcc_patch=debian/patches/gpc-gcc-4.1.diff + +case "$1" in + -patch) + # keep the backup files ... to regenerate p/diffs/${gpc_gcc_patch} + # dan@debian.org: no, don't. Apply it by hand if you need to regen. + # get the patch from the gpc source + echo Using patch file ${gpc_gcc_patch} + patch -d $pdir -f -p2 < ${gpc_gcc_patch} + #pf=`echo $0 | sed 's/\.dpatch/.diff/'` + #patch -d $pdir -f -p1 < $pf + ;; + -unpatch) + # get the patch from the gpc source + echo Using patch file ${gpc_gcc_patch} + patch -d $pdir -f -R -p2 < ${gpc_gcc_patch} + #pf=`echo $0 | sed 's/\.dpatch/.diff/'` + #patch -d $pdir -f -R -p1 < $pf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/patches/ld-lib-path.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ld-lib-path.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: Add /gcc/ada/rts to the runtime gcc library path. + +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 -p0 < $0 + cd ${dir} && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir} && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- configure.in~ 2004-11-13 20:06:43.000000000 +0100 ++++ configure.in 2004-11-14 09:24:02.000000000 +0100 +@@ -2344,9 +2344,9 @@ + *) + eval "d=\$$RPATH_ENVVAR" + if test x"$d" != x; then +- d="$pwd/gcc:$d" ++ d="$pwd/gcc:$pwd/gcc/ada/rts:$d" + else +- d="$pwd/gcc" ++ d="$pwd/gcc:$pwd/gcc/ada/rts" + fi + SET_GCC_LIB_PATH="\$(RPATH_ENVVAR)=$d; export \$(RPATH_ENVVAR);" + ;; --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-return.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-return.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: don't use single return if fp register have to be restored +# DP: fixes 386864 + +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 + +--- + + gcc/config/m68k/m68k.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1/gcc/config/m68k/m68k.c~ 2006-08-09 01:40:20.000000000 +0200 ++++ gcc-4.1/gcc/config/m68k/m68k.c 2007-05-19 08:23:35.000000000 +0200 +@@ -778,7 +778,7 @@ + /* We can output the epilogue as RTL only if no registers need to be + restored. */ + m68k_compute_frame_layout (); +- return current_frame.reg_no ? false : true; ++ return (current_frame.reg_no + current_frame.fpu_no) ? false : true; + } + + /* This function generates the assembly code for function exit, --- gcj-4.2-4.2-20070707.orig/debian/patches/link-libs.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/link-libs.dpatch @@ -0,0 +1,157 @@ +#! /bin/sh -e + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/t-slibgcc-elf-ver.orig 2006-10-03 18:16:53.094898500 +0200 ++++ gcc/config/t-slibgcc-elf-ver 2006-10-03 18:17:40.061833750 +0200 +@@ -14,6 +14,7 @@ + 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) && \ +--- libstdc++-v3/src/Makefile.am.orig 2006-10-03 18:16:53.186904250 +0200 ++++ libstdc++-v3/src/Makefile.am 2006-10-03 18:17:40.121837500 +0200 +@@ -185,6 +185,7 @@ + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + # Use special rules for the deprecated source files so that they find +--- libstdc++-v3/src/Makefile.in.orig 2006-10-03 18:16:53.206905500 +0200 ++++ libstdc++-v3/src/Makefile.in 2006-10-03 18:17:40.137838500 +0200 +@@ -387,6 +387,7 @@ + + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + +--- libobjc/Makefile.in.orig 2006-10-03 18:16:53.098898750 +0200 ++++ libobjc/Makefile.in 2006-10-03 18:17:40.061833750 +0200 +@@ -276,11 +276,13 @@ + libobjc$(libext).la: $(OBJS) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) + + libobjc_gc$(libext).la: $(OBJS_GC) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ + -rpath $(toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) + + # +--- libgfortran/Makefile.am.orig 2006-10-03 18:16:53.102899000 +0200 ++++ libgfortran/Makefile.am 2006-10-03 18:18:59.566802500 +0200 +@@ -7,7 +7,7 @@ + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + + toolexeclib_LTLIBRARIES = libgfortran.la +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) -Wl,-O1 + + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +--- libgfortran/Makefile.in.orig 2006-10-03 18:16:53.106899250 +0200 ++++ libgfortran/Makefile.in 2006-10-03 18:19:17.543926000 +0200 +@@ -359,7 +359,7 @@ + ACLOCAL_AMFLAGS = -I ../config + gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) + toolexeclib_LTLIBRARIES = libgfortran.la +-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) ++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lm $(extra_ldflags_libgfortran) -Wl,-O1 + myexeclib_LTLIBRARIES = libgfortranbegin.la + myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) + libgfortranbegin_la_SOURCES = fmain.c +--- libmudflap/Makefile.am.orig 2006-10-03 18:16:53.182904000 +0200 ++++ libmudflap/Makefile.am 2006-10-03 18:17:40.117837250 +0200 +@@ -34,7 +34,7 @@ + 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 + + clean-local: + rm -f pth/*.o pth/*.lo +--- libmudflap/Makefile.in.orig 2006-10-03 18:16:53.182904000 +0200 ++++ libmudflap/Makefile.in 2006-10-03 18:17:40.121837500 +0200 +@@ -241,7 +241,7 @@ + + 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 = + libmudflapth_la_LIBADD = \ + pth/mf-runtime.lo \ +--- libffi/Makefile.am.orig 2006-10-03 18:16:53.098898750 +0200 ++++ libffi/Makefile.am 2006-10-03 18:17:40.061833750 +0200 +@@ -154,7 +154,7 @@ + + AM_CFLAGS = -Wall -g -fexceptions + +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) +--- libffi/Makefile.in.orig 2006-10-03 18:16:53.102899000 +0200 ++++ libffi/Makefile.in 2006-10-03 18:17:40.065834000 +0200 +@@ -436,7 +436,7 @@ + libffi_convenience_la_SOURCES = $(libffi_la_SOURCES) + nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES) + AM_CFLAGS = -Wall -g -fexceptions +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + AM_CCASFLAGS = $(AM_CPPFLAGS) + all: fficonfig.h +--- libjava/Makefile.am.orig 2006-10-03 18:16:53.130900750 +0200 ++++ libjava/Makefile.am 2006-10-03 18:17:40.093835750 +0200 +@@ -97,7 +97,7 @@ + GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) \ + $(LDFLAGS) -o $@ + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ ++ $(LDFLAGS) $(extra_ldflags_libjava) -Wl,-O1 -o $@ + + GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@ + +--- libjava/Makefile.in.orig 2006-10-03 18:16:53.162902750 +0200 ++++ libjava/Makefile.in 2006-10-03 18:17:40.117837250 +0200 +@@ -733,7 +733,7 @@ + $(LDFLAGS) -o $@ + + LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \ +- $(LDFLAGS) $(extra_ldflags_libjava) -o $@ ++ $(LDFLAGS) $(extra_ldflags_libjava) -Wl,-O1 -o $@ + + WARNINGS = -Wextra -Wall + AM_CXXFLAGS = \ --- gcj-4.2-4.2-20070707.orig/debian/patches/autoreconf.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/autoreconf.dpatch @@ -0,0 +1,26 @@ +#! /bin/sh -e + +# DP: autoreconf several directories for proper mipsen libtool support + +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) + for i in libstdc++-v3 zlib; do + (cd ${dir}/${i} ; autoreconf --force) + done + ;; + -unpatch) + echo unable to unpatch autoreconf. + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/patches/sparc-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/sparc-biarch.dpatch @@ -0,0 +1,80 @@ +#! /bin/sh -e +# 10_newpatch.dpatch by +# updated for 4.0, 4.1, 4.2 by Matthias Klose +# +# DP: Enable biarch support for the 32bit sparc compiler + +if [ $# -eq 3 ] && [ "$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 -p0 < $0 + cd ${dir}libcpp && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + cd ${dir}libcpp && autoconf + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- gcc/config/sparc/linux64.h.orig 2006-06-04 13:09:21.857528428 -0300 ++++ gcc/config/sparc/linux64.h 2006-06-04 13:11:15.385012057 -0300 +@@ -54,8 +54,8 @@ + + MASK_STACK_BIAS + MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128) + #endif + +-#undef ASM_CPU_DEFAULT_SPEC +-#define ASM_CPU_DEFAULT_SPEC "-Av9a" ++#undef ASM_CPU64_DEFAULT_SPEC ++#define ASM_CPU64_DEFAULT_SPEC "-Av9a" + + /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add + the GNU/Linux magical crtbegin.o file (see crtstuff.c) which +--- gcc/config.gcc.orig 2006-06-04 13:09:21.882530957 -0300 ++++ gcc/config.gcc 2006-06-04 13:14:13.577036688 -0300 +@@ -315,6 +315,7 @@ + ;; + sparc*-*-*) + cpu_type=sparc ++ need_64bit_hwint=yes + ;; + s390*-*-*) + cpu_type=s390 +@@ -2105,9 +2106,16 @@ + use_fixproto=yes + ;; + sparc-*-linux*) # SPARC's running GNU/Linux, libc6 ++ # If cpu is specified, assume we want a 32/64 compiler ++ if test x$with_cpu = x; then + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h" + extra_options="${extra_options} sparc/long-double-switch.opt" + tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm" ++ else ++ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h" ++ extra_options="${extra_options} sparc/long-double-switch.opt" ++ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm" ++ fi + ;; + sparc-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h" +--- libcpp/configure.ac~ 2006-01-18 22:52:36.862072128 +0100 ++++ libcpp/configure.ac 2006-08-15 14:48:00.484137064 +0200 +@@ -124,7 +124,7 @@ + powerpc*-*-* | \ + rs6000*-*-* | \ + s390*-*-* | \ +- sparc64*-*-* | ultrasparc-*-freebsd* | \ ++ sparc*-*-* | ultrasparc-*-freebsd* | \ + sparcv9-*-solaris2* | \ + sparc-*-solaris2.[789] | sparc-*-solaris2.1[0-9]* | \ + sh[123456789l]*-*-*) --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-native-libdir.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-native-libdir.dpatch @@ -0,0 +1,97 @@ +#! /bin/sh -e + +# DP: Set the native libjava libdir to gcj-4.2. + +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 -p0 < $0 + cd ${dir}libjava && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/Makefile.am.orig 2006-08-24 12:51:54.070781500 +0200 ++++ libjava/Makefile.am 2006-08-24 12:55:31.912395750 +0200 +@@ -63,7 +63,8 @@ + ## Name of the default .db. + db_name = classmap.db + ## Compiler specific component of the .db file +-db_pathtail = gcj-$(gcc_version)/$(db_name) ++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/') ++db_pathtail = gcj-$(short_version)/$(db_name) + + ## For now, only on native systems. FIXME. + if NATIVE +@@ -124,9 +125,9 @@ + -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \ + -DJAVA_EXT_DIRS="\"$(jardir)/ext\"" \ + -DGCJ_ENDORSED_DIRS="\"$(jardir)/gcj-endorsed\"" \ +- -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ ++ -DGCJ_VERSIONED_LIBDIR="\"$(libdir)/gcj-$(short_version)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib$(replace /,,$(MULTISUBDIR))/gcj-$(short_version)/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" \ + -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" + +--- libjava/Makefile.in.orig 2006-08-24 12:51:54.178788250 +0200 ++++ libjava/Makefile.in 2006-08-24 12:55:41.104970250 +0200 +@@ -722,7 +722,8 @@ + @JAVA_HOME_SET_FALSE@BOOT_CLASS_PATH_DIR = $(jardir)/libgcj-$(gcc_version).jar + @JAVA_HOME_SET_TRUE@BOOT_CLASS_PATH_DIR = $(JAVA_HOME)/lib/rt.jar + db_name = classmap.db +-db_pathtail = gcj-$(gcc_version)/$(db_name) ++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+\.[0-9]+).*/\1/') ++db_pathtail = gcj-$(short_version)/$(db_name) + @NATIVE_TRUE@dbexec_DATA = $(db_name) + bin_SCRIPTS = addr2name.awk $(am__append_4) + GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated +@@ -750,9 +751,9 @@ + -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \ + -DJAVA_EXT_DIRS="\"$(jardir)/ext\"" \ + -DGCJ_ENDORSED_DIRS="\"$(jardir)/gcj-endorsed\"" \ +- -DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \ ++ -DGCJ_VERSIONED_LIBDIR="\"$(libdir)/gcj-$(short_version)\"" \ + -DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \ +- -DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \ ++ -DLIBGCJ_DEFAULT_DATABASE="\"/var/lib$(replace /,,$(MULTISUBDIR))/gcj-$(short_version)/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" \ + -DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" + +--- libjava/configure.ac.orig 2006-08-24 12:51:54.306796250 +0200 ++++ libjava/configure.ac 2006-08-24 13:05:08.424425500 +0200 +@@ -1292,15 +1292,17 @@ + # Determine where the standard .db file and GNU Classpath JNI + # libraries are found. + multi_os_directory=`$CC -print-multi-os-directory` ++short_version=`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' $srcdir/../gcc/BASE-VER` + case $multi_os_directory in + .) +- dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /. ++ dbexecdir='$(libdir)/gcj-$(short_version)' # Avoid /. + ;; + *) +- dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)' ++ dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(short_version)' + ;; + esac + AC_SUBST(dbexecdir) ++ac_configure_args="$ac_configure_args --with-native-libdir=\$\(toolexeclibdir\)/gcj-$short_version" + + # Determine gcj version number. + gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([[^ ]]*\).*$/\1/p'` --- gcj-4.2-4.2-20070707.orig/debian/patches/libssp-gnu.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libssp-gnu.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# DP: GNU/k*BSD support +# Author: Aurelien Jarno +# Status: Submitted: http://gcc.gnu.org/ml/gcc-patches/2007-04/msg01962.html + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- src/gcc/configure.orig 2007-05-17 13:41:11.000000000 +0200 ++++ src/gcc/configure 2007-05-17 13:42:24.000000000 +0200 +@@ -16002,7 +16002,7 @@ + + # Test for stack protector support in target C library. + case "$target" in +- *-*-linux*) ++ *-*-*-gnu*) + echo "$as_me:$LINENO: checking __stack_chk_fail in target GNU C library" >&5 + echo $ECHO_N "checking __stack_chk_fail in target GNU C library... $ECHO_C" >&6 + if test "${gcc_cv_libc_provides_ssp+set}" = set; then +--- src/gcc/configure.ac.orig 2007-05-17 13:41:11.000000000 +0200 ++++ src/gcc/configure.ac 2007-05-17 13:41:14.000000000 +0200 +@@ -3202,7 +3202,7 @@ + + # Test for stack protector support in target C library. + case "$target" in +- *-*-linux*) ++ *-*-*-gnu*) + AC_CACHE_CHECK(__stack_chk_fail in target GNU C library, + gcc_cv_libc_provides_ssp, + [gcc_cv_libc_provides_ssp=no --- gcj-4.2-4.2-20070707.orig/debian/patches/ppc64-ada.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ppc64-ada.dpatch @@ -0,0 +1,257 @@ +#! /bin/sh -e + +# DP: Add gcc/ada/system-linux-ppc64.ads and use it in gcc/ada/Makefile.in +# DP: + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN src.orig/gcc/ada/Makefile.in src/gcc/ada/Makefile.in +--- src.orig/gcc/ada/Makefile.in 2005-05-02 16:39:32.000000000 +0200 ++++ src/gcc/ada/Makefile.in 2005-05-02 16:36:37.000000000 +0200 +@@ -1346,6 +1346,31 @@ + LIBRARY_VERSION := $(LIB_VERSION) + endif + ++ifeq ($(strip $(filter-out powerpc64% linux%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads" (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; ++ ++ -- 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. ++ ++ AAMP : constant Boolean := False; ++ 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; ++ Functions_Return_By_DSP : constant Boolean := False; ++ Machine_Overflows : constant Boolean := False; ++ Machine_Rounds : constant Boolean := True; ++ OpenVMS : constant Boolean := False; ++ Preallocated_Stacks : constant Boolean := False; ++ Signed_Zeros : constant Boolean := True; ++ Stack_Check_Default : constant Boolean := False; ++ Stack_Check_Probes : 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; ++ 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; ++ Front_End_ZCX_Support : constant Boolean := False; ++ ++ -- Obsolete entries, to be removed eventually (bootstrap issues!) ++ ++ High_Integrity_Mode : constant Boolean := False; ++ Long_Shifts_Inlined : constant Boolean := True; ++ ++end System; +diff -urN tmp/gcc/ada/s-auxdec.ads src/gcc/ada/s-auxdec.ads +--- tmp/gcc/ada/s-auxdec.ads 2004-06-11 12:47:36.000000000 +0200 ++++ src/gcc/ada/s-auxdec.ads 2005-05-03 11:34:17.000000000 +0200 +@@ -108,13 +108,13 @@ + pragma Warnings (Off); + + type F_Float is digits 6; +- pragma Float_Representation (VAX_Float, F_Float); ++-- pragma Float_Representation (VAX_Float, F_Float); + + type D_Float is digits 9; +- pragma Float_Representation (Vax_Float, D_Float); ++-- pragma Float_Representation (Vax_Float, D_Float); + + type G_Float is digits 15; +- pragma Float_Representation (Vax_Float, G_Float); ++-- pragma Float_Representation (Vax_Float, G_Float); + + -- Floating point type declarations for IEEE floating point data types + +--- tmp/gcc/ada/s-vaflop.ads 2003-10-21 15:42:18.000000000 +0200 ++++ src/gcc/ada/s-vaflop.ads 2005-05-03 15:24:24.000000000 +0200 +@@ -40,15 +40,15 @@ + -- Suppress warnings if not on Alpha/VAX + + type D is digits 9; +- pragma Float_Representation (VAX_Float, D); ++-- pragma Float_Representation (VAX_Float, D); + -- D Float type on Vax + + type G is digits 15; +- pragma Float_Representation (VAX_Float, G); ++-- pragma Float_Representation (VAX_Float, G); + -- G Float type on Vax + + type F is digits 6; +- pragma Float_Representation (VAX_Float, F); ++-- pragma Float_Representation (VAX_Float, F); + -- F Float type on Vax + + type S is digits 6; --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-subdir.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-subdir.dpatch @@ -0,0 +1,237 @@ +#! /bin/sh -e + +# DP: - Set the libjava sublibdir to /usr/lib/gcj-4.2 +# DP: - Set the default libgcj database dir to /var/lib/gcj-4.2 + +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 -p0 < $0 + cd ${dir}libjava && aclocal -I ../config -I .. -I . && autoconf -I ../config -I .. -I . + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/testsuite/lib/libjava.exp.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/testsuite/lib/libjava.exp 2007-03-22 14:36:05.000000000 +0100 +@@ -169,6 +169,7 @@ + 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.2" + + verbose "version: $libjava_version" + +--- libjava/testsuite/Makefile.am.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/testsuite/Makefile.am 2007-03-22 14:36:05.000000000 +0100 +@@ -4,6 +4,7 @@ + + # 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 @@ + 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 @@ + 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; \ +--- libjava/testsuite/Makefile.in.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/testsuite/Makefile.in 2007-03-22 14:36:05.000000000 +0100 +@@ -311,6 +311,7 @@ + + # 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 \ +@@ -558,11 +559,11 @@ + @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) \ +@@ -574,7 +575,7 @@ + @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; \ +--- libjava/Makefile.am.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/Makefile.am 2007-03-22 14:41:39.000000000 +0100 +@@ -5,7 +5,8 @@ + ACLOCAL_AMFLAGS = -I . -I .. -I ../config + + # 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 +@@ -27,7 +28,7 @@ + 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) + +@@ -140,7 +141,7 @@ + -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.2/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- libjava/Makefile.in.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/Makefile.in 2007-03-22 14:42:00.000000000 +0100 +@@ -762,7 +762,7 @@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ +-libstdcxx_incdir = @libstdcxx_incdir@ ++libstdcxx_incdir = c++/$(gcc_full_version) + localstatedir = @localstatedir@ + mandir = @mandir@ + mkdir_p = @mkdir_p@ +@@ -791,7 +791,8 @@ + ACLOCAL_AMFLAGS = -I . -I .. -I ../config + + # 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 +@@ -804,8 +805,8 @@ + write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) $(foreach object,$(1),$(shell echo $(object) >> $(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 +@@ -850,7 +851,7 @@ + -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.2/$(db_name)\"" \ + -DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\"" + + AM_GCJFLAGS = \ +--- libjava/configure.ac.orig 2007-03-22 14:35:52.000000000 +0100 ++++ libjava/configure.ac 2007-03-22 14:36:05.000000000 +0100 +@@ -511,6 +511,9 @@ + 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) + +@@ -1358,6 +1361,7 @@ + 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 + ;; +@@ -1369,15 +1373,21 @@ + # Determine where the standard .db file and GNU Classpath JNI + # libraries are found. + multi_os_directory=`$CC -print-multi-os-directory` ++short_version=`sed -r 's/([[0-9]]+\.[[0-9]]+).*/\1/' $srcdir/../gcc/BASE-VER` ++libgcj_soversion=`awk -F: '/^[[^#]].*:/ { print $1 }' $srcdir/libtool-version` + case $multi_os_directory in + .) +- dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /. ++ dbexecdir='$(libdir)/'gcj-$short_version-$libgcj_soversion # Avoid /. ++ ;; ++ ../lib*) ++ dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory/gcj-$short_version-$libgcj_soversion')' + ;; + *) +- dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)' ++ dbexecdir='$(libdir)/'$multi_os_directory/gcj-$short_version-$libgcj_soversion + ;; + esac + AC_SUBST(dbexecdir) ++ac_configure_args="$ac_configure_args --with-native-libdir=\$\(subst\ /lib/../lib,/lib,\$\(toolexeclibdir\)\)/gcj-$short_version-$libgcj_soversion" + + # Determine gcj version number. + gcjversion=`$GCJ -v 2>&1 | sed -n 's/^.*version \([[^ ]]*\).*$/\1/p'` +--- gcc/java/Make-lang.in~ 2006-09-11 08:41:56.950718000 +0200 ++++ gcc/java/Make-lang.in 2006-09-11 09:25:28.160718000 +0200 +@@ -385,12 +385,13 @@ + $(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) + + # create gjnih's object --- gcj-4.2-4.2-20070707.orig/debian/patches/disable-biarch-check.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/disable-biarch-check.dpatch @@ -0,0 +1,44 @@ +#! /bin/sh -e + +# DP: For biarch builds, disable the testsuite for the non-default architecture +# DP: for runtime libraries, which are not built by default (libjava). + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/testsuite/Makefile.in~ 2005-09-29 23:53:39.213898000 +0200 ++++ libjava/testsuite/Makefile.in 2005-09-29 23:55:33.382541760 +0200 +@@ -346,12 +346,14 @@ + + + check-DEJAGNU: site.exp ++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-m[36][24]//'`"; \ ++ 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 --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-lib32subdir.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-lib32subdir.dpatch @@ -0,0 +1,93 @@ +#! /bin/sh -e + +# DP: - When running the i386 binaries on amd64, look in /usr/lib32/gcj-x-y + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/prims.cc.orig 2007-01-18 20:12:18.000000000 +0100 ++++ libjava/prims.cc 2007-01-19 01:10:44.000000000 +0100 +@@ -21,6 +21,10 @@ + #include + #endif + ++#ifdef HAVE_UNAME ++#include ++#endif ++ + #include + #include + #include +@@ -1806,12 +1810,28 @@ + _Jv_PrependVersionedLibdir (char* libpath) + { + char* retval = 0; ++#define GCJ_VERSIONED_SUBDIR "gcj-4.2-80" ++#define GCJ_VERSIONED_LIB32DIR "/usr/lib32/" GCJ_VERSIONED_SUBDIR ++ const char* vlibdir = GCJ_VERSIONED_LIBDIR; ++ int vlibdir_size = sizeof (GCJ_VERSIONED_LIBDIR); ++ ++#if defined(__linux__) && defined (__i386__) ++ struct utsname u; ++ if (! uname (&u)) ++ { ++ if (! strcmp ("x86_64", u.machine)) ++ { ++ vlibdir = GCJ_VERSIONED_LIB32DIR; ++ vlibdir_size = sizeof (GCJ_VERSIONED_LIB32DIR); ++ } ++ } ++#endif + + if (libpath && libpath[0] != '\0') + { + if (! strncmp (libpath, +- GCJ_VERSIONED_LIBDIR, +- sizeof (GCJ_VERSIONED_LIBDIR) - 1)) ++ vlibdir, ++ vlibdir_size - 1)) + { + // LD_LIBRARY_PATH is already prefixed with + // GCJ_VERSIONED_LIBDIR. +@@ -1825,10 +1845,10 @@ + char path_sep[2]; + path_sep[0] = (char) _Jv_platform_path_separator; + path_sep[1] = '\0'; +- jsize total = ((sizeof (GCJ_VERSIONED_LIBDIR) - 1) ++ jsize total = ((vlibdir_size - 1) + + 1 /* path separator */ + strlen (libpath) + 1); + retval = (char*) _Jv_Malloc (total); +- strcpy (retval, GCJ_VERSIONED_LIBDIR); ++ strcpy (retval, vlibdir); + strcat (retval, path_sep); + strcat (retval, libpath); + } +@@ -1836,8 +1856,8 @@ + else + { + // LD_LIBRARY_PATH was not specified or is empty. +- retval = (char*) _Jv_Malloc (sizeof (GCJ_VERSIONED_LIBDIR)); +- strcpy (retval, GCJ_VERSIONED_LIBDIR); ++ retval = (char*) _Jv_Malloc (vlibdir_size); ++ strcpy (retval, vlibdir); + } + + return retval; --- gcj-4.2-4.2-20070707.orig/debian/patches/hurd-changes.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/hurd-changes.dpatch @@ -0,0 +1,90 @@ +#! /bin/sh -e + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# 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. + +--- gcc/ada/adaint.c.orig 2005-11-15 14:52:31.000000000 +0100 ++++ gcc/ada/adaint.c 2006-12-10 12:28:46.000000000 +0100 +@@ -272,6 +272,10 @@ + #include + #endif + ++#ifndef MAXPATHLEN ++#define MAXPATHLEN 4096 ++#endif ++ + #ifdef MAXPATHLEN + #define GNAT_MAX_PATH_LEN MAXPATHLEN + #else +--- gcc/config/i386/gnu.h.orig 2004-09-08 02:17:19.000000000 +0200 ++++ gcc/config/i386/gnu.h 2006-12-10 12:28:45.000000000 +0100 +@@ -17,7 +17,7 @@ + while (0) + + #undef CPP_SPEC +-#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{bsd:-D_BSD_SOURCE}" ++#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{bsd:-D_BSD_SOURCE} %{pthread:-D_REENTRANT}" + + #undef CC1_SPEC + #define CC1_SPEC "%(cc1_cpu)" +--- gcc/config/gnu.h.orig 2004-07-05 21:49:20.000000000 +0200 ++++ gcc/config/gnu.h 2006-12-10 12:28:45.000000000 +0100 +@@ -6,11 +6,12 @@ + + /* Default C library spec. Use -lbsd-compat for gcc -bsd. */ + #undef LIB_SPEC +-#define LIB_SPEC "%{bsd:-lbsd-compat} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" ++#define LIB_SPEC "%{pthread:-lpthread} %{bsd:-lbsd-compat} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" + + /* 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" + + /* The system headers under GNU are C++-aware. */ + #define NO_IMPLICIT_EXTERN_C +--- gcc/config/t-gnu.orig 2004-01-10 07:40:24.000000000 +0100 ++++ gcc/config/t-gnu 2006-12-10 12:28:45.000000000 +0100 +@@ -1,2 +1,2 @@ + # In GNU, "/usr" is a four-letter word. +-NATIVE_SYSTEM_HEADER_DIR = /include ++NATIVE_SYSTEM_HEADER_DIR = /usr/include +--- gcc/tlink.c.orig 2005-06-25 04:02:01.000000000 +0200 ++++ gcc/tlink.c 2006-12-10 12:28:45.000000000 +0100 +@@ -34,6 +34,10 @@ + + #define MAX_ITERATIONS 17 + ++#ifndef MAXPATHLEN ++#define MAXPATHLEN 4096 ++#endif ++ + /* Defined in the automatically-generated underscore.c. */ + extern int prepends_underscore; + --- gcj-4.2-4.2-20070707.orig/debian/patches/s390-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/s390-biarch.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: enable biarch for 31 bit compiler + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config.gcc~ 2006-06-02 01:59:42.000000000 +0200 ++++ gcc/config.gcc 2006-06-04 18:20:56.272554984 +0200 +@@ -1884,7 +1884,7 @@ + ;; + 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" ++ tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux s390/t-linux64" + ;; + s390x-*-linux*) + tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-prevent-qipush.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-prevent-qipush.dpatch @@ -0,0 +1,50 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: prevent combine from creating a byte push on the stack (invalid on m68k) + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- + gcc/config/m68k/m68k.md | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -748,7 +748,10 @@ + (define_insn "" + [(set (match_operand:QI 0 "nonimmediate_operand" "=d,*a,m") + (match_operand:QI 1 "general_src_operand" "dmSi*a,di*a,dmSi"))] +- "!TARGET_COLDFIRE" ++ "!TARGET_COLDFIRE ++ && (!MEM_P (operands[0]) ++ || GET_CODE (XEXP (operands[0], 0)) != PRE_DEC ++ || XEXP (XEXP (operands[0], 0), 0) != stack_pointer_rtx)" + "* return output_move_qimode (operands);") + + (define_insn "" --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-disable-static.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-disable-static.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: Disable building the static libjava. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: Makefile.in +=================================================================== +--- Makefile.in (revision 117742) ++++ Makefile.in (working copy) +@@ -32681,7 +32681,7 @@ + libsrcdir="$$s/libjava"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ +- $(TARGET_CONFIGARGS) $${srcdiroption} \ ++ $(TARGET_CONFIGARGS) --disable-static $${srcdiroption} \ + || exit 1 + @endif target-libjava + +@@ -33379,7 +33379,7 @@ + libsrcdir="$$s/boehm-gc"; \ + rm -f no-such-file || : ; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ +- $(TARGET_CONFIGARGS) $${srcdiroption} \ ++ $(TARGET_CONFIGARGS) --disable-static $${srcdiroption} \ + || exit 1 + @endif target-boehm-gc + --- gcj-4.2-4.2-20070707.orig/debian/patches/pr31868.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/pr31868.dpatch @@ -0,0 +1,143 @@ +#! /bin/sh -e + +# DP: Backport from mainline for PR target/31868 + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2007-05-08 H.J. Lu + + PR target/31868 + * config.gcc (x86_64-*-freebsd*): Add i386/t-crtstuff64 to + tmake_file. + (x86_64-*-netbsd*): Likewise. + (x86_64-*-linux*): Likewise. + (x86_64-*-kfreebsd*-gnu): Likewise. + (x86_64-*-knetbsd*-gnu): Likewise. + (i[34567]86-*-solaris2.1[0-9]*): Likewise. + + * config/i386/t-linux64 (CRTSTUFF_T_CFLAGS): Move to ... + * config/i386/t-crtstuff64: This. New file. + + * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Add $(CRTSTUFF_T_CFLAGS). + * config/t-libc-ok (CRTSTUFF_T_CFLAGS_S): Likewise. + * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Likewise. + * config/t-netbsd (CRTSTUFF_T_CFLAGS_S): Likewise. + * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Likewise. + +--- gcc/config.gcc.crtend 2007-05-06 11:24:44.000000000 -0700 ++++ gcc/config.gcc 2007-05-08 10:45:04.000000000 -0700 +@@ -1064,6 +1064,7 @@ i[34567]86-*-freebsd*) + ;; + x86_64-*-freebsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h" ++ tmake_file="${tmake_file} i386/t-crtstuff64" + ;; + i[34567]86-*-netbsdelf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h" +@@ -1076,6 +1077,7 @@ i[34567]86-*-netbsd*) + ;; + x86_64-*-netbsd*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h" ++ tmake_file="${tmake_file} i386/t-crtstuff64" + ;; + i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123]) + tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h" +@@ -1111,7 +1113,7 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu + x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;; + x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;; + esac +- tmake_file="${tmake_file} i386/t-linux64 i386/t-crtfm t-dfprules" ++ tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff64 i386/t-crtfm t-dfprules" + ;; + i[34567]86-*-gnu*) + ;; +@@ -1208,7 +1210,7 @@ i[34567]86-*-solaris2*) + *-*-solaris2.1[0-9]*) + tm_file="${tm_file} i386/x86-64.h i386/sol2-10.h" + tm_defines="${tm_defines} TARGET_BI_ARCH=1" +- tmake_file="$tmake_file i386/t-sol2-10" ++ tmake_file="$tmake_file i386/t-crtstuff64 i386/t-sol2-10" + need_64bit_hwint=yes + # FIXME: -m64 for i[34567]86-*-* should be allowed just + # like -m32 for x86_64-*-*. +--- gcc/config/i386/t-crtstuff64.crtend 2007-05-08 10:42:59.000000000 -0700 ++++ gcc/config/i386/t-crtstuff64 2007-05-08 10:42:59.000000000 -0700 +@@ -0,0 +1,5 @@ ++# The pushl in CTOR initialization interferes with frame pointer elimination. ++# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, ++# because then __FRAME_END__ might not be the last thing in .eh_frame ++# section. ++CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables +--- gcc/config/i386/t-linux64.crtend 2006-11-18 06:26:01.000000000 -0800 ++++ gcc/config/i386/t-linux64 2007-05-08 10:42:59.000000000 -0700 +@@ -13,9 +13,3 @@ INSTALL_LIBGCC = install-multilib + + EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o \ + crtbeginT.o crtfastmath.o +- +-# The pushl in CTOR initialization interferes with frame pointer elimination. +-# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables, +-# because then __FRAME_END__ might not be the last thing in .eh_frame +-# section. +-CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables +--- gcc/config/t-freebsd.crtend 2006-11-18 06:26:22.000000000 -0800 ++++ gcc/config/t-freebsd 2007-05-08 10:42:59.000000000 -0700 +@@ -1,5 +1,5 @@ + # Compile crtbeginS.o and crtendS.o with pic. +-CRTSTUFF_T_CFLAGS_S = -fPIC ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC + + # Compile libgcc.a with pic. + TARGET_LIBGCC2_CFLAGS += -fPIC +--- gcc/config/t-libc-ok.crtend 2006-11-18 06:26:22.000000000 -0800 ++++ gcc/config/t-libc-ok 2007-05-08 10:42:59.000000000 -0700 +@@ -1 +1 @@ +-CRTSTUFF_T_CFLAGS_S=-fPIC ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC +--- gcc/config/t-lynx.crtend 2006-11-18 06:26:22.000000000 -0800 ++++ gcc/config/t-lynx 2007-05-08 10:42:59.000000000 -0700 +@@ -1,5 +1,5 @@ + # Compile crtbeginS.o and crtendS.o with pic. +-CRTSTUFF_T_CFLAGS_S = -fPIC ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC + + # Compile libgcc2.a with pic. + TARGET_LIBGCC2_CFLAGS = -fPIC +--- gcc/config/t-netbsd.crtend 2006-11-18 06:26:22.000000000 -0800 ++++ gcc/config/t-netbsd 2007-05-08 10:42:59.000000000 -0700 +@@ -1,2 +1,2 @@ + # Always build crtstuff with PIC. +-CRTSTUFF_T_CFLAGS = -fPIC ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC +--- gcc/config/t-svr4.crtend 2006-11-18 06:26:22.000000000 -0800 ++++ gcc/config/t-svr4 2007-05-08 10:42:59.000000000 -0700 +@@ -4,7 +4,7 @@ + # we will be doing that, we just always use -fPIC when compiling the + # routines in crtstuff.c. Likewise for libgcc2.c. + +-CRTSTUFF_T_CFLAGS = -fPIC ++CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC + TARGET_LIBGCC2_CFLAGS = -fPIC + + # See all the declarations. --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-reg-inc.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-reg-inc.dpatch @@ -0,0 +1,90 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: reinsert REG_INC notes after splitting an instruction + +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 + +--- + gcc/emit-rtl.c | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +Index: gcc-4.1/gcc/emit-rtl.c +=================================================================== +--- gcc-4.1.orig/gcc/emit-rtl.c ++++ gcc-4.1/gcc/emit-rtl.c +@@ -3103,6 +3103,34 @@ prev_cc0_setter (rtx insn) + } + #endif + ++#ifdef AUTO_INC_DEC ++static int ++find_auto_inc (rtx *xp, void *data) ++{ ++ rtx x = *xp; ++ rtx reg = data; ++ ++ if (GET_RTX_CLASS (GET_CODE (x)) != RTX_AUTOINC) ++ return 0; ++ ++ switch (GET_CODE (x)) { ++ case PRE_DEC: ++ case PRE_INC: ++ case POST_DEC: ++ case POST_INC: ++ case PRE_MODIFY: ++ case POST_MODIFY: ++ if (rtx_equal_p (reg, XEXP (x, 0))) ++ return 1; ++ break; ++ ++ default: ++ gcc_unreachable (); ++ } ++ return -1; ++} ++#endif ++ + /* Increment the label uses for all labels present in rtx. */ + + static void +@@ -3268,6 +3296,18 @@ try_split (rtx pat, rtx trial, int last) + } + break; + ++#ifdef AUTO_INC_DEC ++ case REG_INC: ++ for (insn = insn_last; insn; insn = PREV_INSN (insn)) ++ { ++ rtx reg = XEXP (note, 0); ++ if (for_each_rtx (&PATTERN (insn), find_auto_inc, reg) > 0) ++ REG_NOTES (insn) = gen_rtx_EXPR_LIST (REG_INC, reg, ++ REG_NOTES (insn)); ++ } ++ break; ++#endif ++ + default: + break; + } --- gcj-4.2-4.2-20070707.orig/debian/patches/mips-libspec.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/mips-libspec.dpatch @@ -0,0 +1,69 @@ +#! /bin/sh -e + +# DP: mips*-linux: Always imply -lpthread for -pthread + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +2007-06-13 Thiemo Seufer + + * config/mips/linux.h, config/mips/linux64.h (LIB_SPEC): Always + imply -lpthread for -pthread. + + +Index: gcc/config/mips/linux.h +=================================================================== +--- gcc/config/mips/linux.h (revision 125681) ++++ gcc/config/mips/linux.h (working copy) +@@ -174,9 +174,10 @@ + + #undef LIB_SPEC + #define LIB_SPEC "\ +-%{shared: -lc} \ +-%{!shared: %{pthread:-lpthread} \ +- %{profile:-lc_p} %{!profile: -lc}}" ++%{pthread:-lpthread} \ ++%{shared:-lc} \ ++%{!shared: \ ++ %{profile:-lc_p} %{!profile:-lc}}" + + #define MD_UNWIND_SUPPORT "config/mips/linux-unwind.h" + +Index: gcc/config/mips/linux64.h +=================================================================== +--- gcc/config/mips/linux64.h (revision 125681) ++++ gcc/config/mips/linux64.h (working copy) +@@ -34,9 +34,10 @@ + + #undef LIB_SPEC + #define LIB_SPEC "\ +-%{shared: -lc} \ +-%{!shared: %{pthread:-lpthread} \ +- %{profile:-lc_p} %{!profile: -lc}}" ++%{pthread:-lpthread} \ ++%{shared:-lc} \ ++%{!shared: \ ++ %{profile:-lc_p} %{!profile:-lc}}" + + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1" + --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-jnipath.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-jnipath.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh -e + +# 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. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libjava/gnu/classpath/natSystemProperties.cc~ 2006-08-02 00:53:40.000000000 +0200 ++++ libjava/gnu/classpath/natSystemProperties.cc 2006-08-19 00:41:50.063803000 +0200 +@@ -141,6 +141,34 @@ + 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) + { +@@ -370,8 +398,13 @@ + // 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 + { +@@ -379,9 +412,12 @@ + #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 --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-default-project-path.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-default-project-path.dpatch @@ -0,0 +1,101 @@ +#! /bin/sh -e + +# DP: - Change the default search path for project files to the one specified +# DP: by the Debian Policy for Ada: /usr/share/ada/adainclude. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc.old/ada/prj-ext.adb 2005-11-15 15:01:18.000000000 +0100 ++++ gcc/ada/prj-ext.adb 2006-03-22 09:09:51.000000000 +0100 +@@ -282,9 +282,7 @@ + if Add_Default_Dir then + Current_Project_Path := + new String'(Name_Buffer (1 .. Name_Len) & Path_Separator & +- Sdefault.Search_Dir_Prefix.all & ".." & +- Directory_Separator & ".." & Directory_Separator & +- ".." & Directory_Separator & "gnat"); ++ Sdefault.Search_Dir_Prefix.all); + else + Current_Project_Path := new String'(Name_Buffer (1 .. Name_Len)); + end if; +--- gcc.old/ada/gnatls.adb 2005-07-01 03:29:17.000000000 +0200 ++++ gcc/ada/gnatls.adb 2006-03-22 12:19:39.000000000 +0100 +@@ -1547,9 +1547,6 @@ + declare + Project_Path : constant String_Access := Getenv (Ada_Project_Path); + +- Lib : constant String := +- Directory_Separator & "lib" & Directory_Separator; +- + First : Natural; + Last : Natural; + +@@ -1605,35 +1602,9 @@ + 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 +- Write_Str (" "); +- Write_Str (Name_Buffer (1 .. Name_Len)); +- Write_Str ("gnat"); +- Write_Char (Directory_Separator); +- Write_Eol; +- end if; ++ Write_Str (" "); ++ Write_Str (Name_Buffer (1 .. Name_Len)); ++ Write_Eol; + end if; + end; + +--- gcc.old/ada/Make-lang.in ++++ gcc/ada/Make-lang.in +@@ -930,7 +930,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 --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-align-code.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-align-code.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: use "move.l %a4,%a4" to advance within code. + +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 + +--- + gcc/config/m68k/linux.h | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: gcc-4.1/gcc/config/m68k/linux.h +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/linux.h ++++ gcc-4.1/gcc/config/m68k/linux.h +@@ -163,6 +163,11 @@ Boston, MA 02110-1301, USA. */ + if ((LOG) > 0) \ + fprintf ((FILE), "%s%u\n", ALIGN_ASM_OP, 1 << (LOG)); + ++/* Use "move.l %a4,%a4" to advance within code. */ ++#define ASM_OUTPUT_ALIGN_WITH_NOP(FILE,LOG) \ ++ if ((LOG) > 0) \ ++ fprintf ((FILE), "\t.balignw %u,0x284c\n", 1 << (LOG)); ++ + /* If defined, a C expression whose value is a string containing the + assembler operation to identify the following data as uninitialized global + data. */ --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-ice-hack.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-ice-hack.dpatch @@ -0,0 +1,320 @@ +#! /bin/sh -e + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# DP: 2004-01-23 Jakub Jelinek +# DP: +# DP: * system.h (ICE_EXIT_CODE): Define. +# DP: * gcc.c (execute): Don't free first string early, but at the end +# DP: of the function. Call retry_ice if compiler exited with +# DP: ICE_EXIT_CODE. +# DP: (retry_ice): New function. +# DP: * diagnostic.c (diagnostic_count_diagnostic, +# DP: diagnostic_action_after_output, error_recursion): Exit with +# DP: ICE_EXIT_CODE instead of FATAL_EXIT_CODE. + +--- gcc/diagnostic.c~ 2006-04-02 00:43:34.347240936 +0200 ++++ gcc/diagnostic.c 2006-04-02 00:54:47.676879272 +0200 +@@ -265,7 +265,7 @@ + "See %s for instructions.\n", bug_report_url); + fnotice (stderr, "For Debian GNU/Linux specific bug reporting instructions,\n" + "see %s.\n", debian_bug_report_url); +- exit (ICE_EXIT_CODE); ++ exit (FATAL_EXIT_CODE); + + case DK_FATAL: + if (context->abort_on_error) +--- gcc/gcc.c~ 2006-04-02 01:07:37.323875144 +0200 ++++ gcc/gcc.c 2006-04-02 01:11:15.310736104 +0200 +@@ -348,6 +348,9 @@ + #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 *if_exists_spec_function (int, const char **); + static const char *if_exists_else_spec_function (int, const char **); +@@ -2951,7 +2954,7 @@ + } + } + +- if (string != commands[i].prog) ++ if (i && string != commands[i].prog) + free ((void *) string); + } + +@@ -3010,6 +3013,16 @@ + 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; +@@ -3030,6 +3043,9 @@ + } + } + ++ if (commands[0].argv[0] != commands[0].prog) ++ free ((PTR) commands[0].argv[0]); ++ + return ret_code; + } + } +@@ -5963,6 +5979,224 @@ + 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. */ --- gcj-4.2-4.2-20070707.orig/debian/patches/boehm-gc-nocheck.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/boehm-gc-nocheck.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- boehm-gc/Makefile.in~ 2004-06-20 16:24:06.000000000 +0200 ++++ boehm-gc/Makefile.in 2004-06-23 09:43:42.000000000 +0200 +@@ -662,7 +662,8 @@ + 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 --- gcj-4.2-4.2-20070707.orig/debian/patches/netbsd-all-gcc.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/netbsd-all-gcc.dpatch @@ -0,0 +1,395 @@ +#! /bin/sh -e + +# DP: General NetBSD support patches + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +diff -urN gcc/config/netbsd-elf-gnu.h src/gcc/config/netbsd-elf-gnu.h +--- gcc/config/netbsd-elf-gnu.h 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/config/netbsd-elf-gnu.h 2003-04-24 05:42:44.000000000 +0000 +@@ -0,0 +1,98 @@ ++/* Common configuration file for NetBSD ELF w/ GNU userland targets. ++ Copyright (C) 2002 Free Software Foundation, Inc. ++ Contributed by Wasabi Systems, Inc. ++ ++This file is part of GNU CC. ++ ++GNU CC is free software; you can 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 CC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 CC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++/* TARGET_OS_CPP_BUILTINS() common to all NetBSD ELF targets. */ ++#define NETBSD_OS_CPP_BUILTINS_ELF() \ ++ do \ ++ { \ ++ NETBSD_OS_CPP_BUILTINS_COMMON(); \ ++ builtin_define ("__ELF__"); \ ++ } \ ++ while (0) ++ ++/* This defines which switch letters take arguments. On NetBSD, most ++ of the normal cases (defined by gcc.c) apply, and we also have -h* ++ and -z* options (for the linker) (coming from SVR4). */ ++ ++#undef SWITCH_TAKES_ARG ++#define SWITCH_TAKES_ARG(CHAR) \ ++ (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ ++ || (CHAR) == 'h' \ ++ || (CHAR) == 'z' \ ++ || (CHAR) == 'R') ++ ++ ++/* Provide a STARTFILE_SPEC appropriate for NetBSD ELF. Here we ++ provide support for the special GCC option -static. On ELF ++ targets, we also add the crtbegin.o file, which provides part ++ of the support for getting C++ file-scope static objects ++ constructed before entering "main". */ ++ ++#define NETBSD_STARTFILE_SPEC \ ++ "%{!shared: \ ++ %{pg:gcrt0%O%s} \ ++ %{!pg: \ ++ %{p:gcrt0%O%s} \ ++ %{!p:crt0%O%s}}} \ ++ %:if-exists(crti%O%s) \ ++ %{static:%:if-exists-else(crtbeginT%O%s crtbegin%O%s)} \ ++ %{!static: \ ++ %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}}" ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC ++ ++ ++/* Provide an ENDFILE_SPEC appropriate for NetBSD ELF. Here we ++ add crtend.o, which provides part of the support for getting ++ C++ file-scope static objects deconstructed after exiting "main". */ ++ ++#define NETBSD_ENDFILE_SPEC \ ++ "%{!shared:crtend%O%s} %{shared:crtendS%O%s} \ ++ %:if-exists(crtn%O%s)" ++ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC NETBSD_ENDFILE_SPEC ++ ++/* Provide a LINK_SPEC appropriate for NetBSD ELF. Here we provide ++ support for the special GCC options -assert, -R, -rpath, -shared, ++ -nostdlib, -static, -rdynamic, and -dynamic-linker. ++ ++ Target-specific code can use this in conjunction with any other ++ target-specific LINK_SPEC options. ++ ++ Target-specific code must provide the %(netbsd_entry_point) spec. */ ++ ++/* This differs from native NetBSD only in that the linker is expected to ++ live in /lib, rather than /usr/libexec (or /libexec). */ ++ ++#define NETBSD_LINK_SPEC_ELF \ ++ "%{assert*} %{R*} %{rpath*} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ -dc -dp \ ++ %{!nostdlib: \ ++ %{!r*: \ ++ %{!e*:-e %(netbsd_entry_point)}}} \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ %{!dynamic-linker:-dynamic-linker /lib/ld.elf_so}} \ ++ %{static:-static}}" +diff -urN gcc/config/netbsd-gnu.h src/gcc/config/netbsd-gnu.h +--- gcc/config/netbsd-gnu.h 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/config/netbsd-gnu.h 2003-04-24 05:41:04.000000000 +0000 +@@ -0,0 +1,206 @@ ++/* Base configuration file for all NetBSD w/ GNU userland targets. ++ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 ++ Free Software Foundation, Inc. ++ ++This file is part of GNU CC. ++ ++GNU CC is free software; you can 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 CC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR 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 CC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++/* TARGET_OS_CPP_BUILTINS() common to all NetBSD targets. */ ++#define NETBSD_OS_CPP_BUILTINS_COMMON() \ ++ do \ ++ { \ ++ builtin_define ("__NetBSD__"); \ ++ builtin_assert ("system=unix"); \ ++ builtin_assert ("system=NetBSD"); \ ++ } \ ++ while (0) ++ ++/* TARGET_OS_CPP_BUILTINS() common to all LP64 NetBSD targets. */ ++#define NETBSD_OS_CPP_BUILTINS_LP64() \ ++ do \ ++ { \ ++ builtin_define ("_LP64"); \ ++ } \ ++ while (0) ++ ++/* CPP_SPEC parts common to all NetBSD targets. */ ++#define NETBSD_CPP_SPEC \ ++ "%{posix:-D_POSIX_SOURCE} \ ++ %{pthread:-D_REENTRANT -D_PTHREADS}" ++ ++/* NETBSD_NATIVE is defined only when gcc is integrated into a NetBSD ++ system with a NetBSD userland - NetBSD with a GNU userland never defines ++ it, and all references to it have been removed for this system type. */ ++ ++/* FIXME: This should link to libc, but there are problems with that under ++ 3.2 - find out of they still apply under 3.3! */ ++ ++/* Provide a LIB_SPEC appropriate for NetBSD. Here we: ++ ++ 1. Select the appropriate set of libs, depending on whether we're ++ profiling. ++ ++ 2. Include the pthread library if -pthread is specified (only ++ if threads are enabled). ++ ++ 3. Include the posix library if -posix is specified. ++ ++ FIXME: Could eliminate the duplication here if we were allowed to ++ use string concatenation. */ ++ ++#ifdef NETBSD_ENABLE_PTHREADS ++#define NETBSD_LIB_SPEC \ ++ "%{pthread: \ ++ %{!p: \ ++ %{!pg:-lpthread}} \ ++ %{p:-lpthread_p} \ ++ %{pg:-lpthread_p}} \ ++ %{posix: \ ++ %{!p: \ ++ %{!pg:-lposix}} \ ++ %{p:-lposix_p} \ ++ %{pg:-lposix_p}} \ ++ %{!shared: \ ++ %{!symbolic: \ ++ %{!p: \ ++ %{!pg:-lc}} \ ++ %{p:-lc_p} \ ++ %{pg:-lc_p}}}" ++#else ++#define NETBSD_LIB_SPEC \ ++ "%{posix: \ ++ %{!p: \ ++ %{!pg:-lposix}} \ ++ %{p:-lposix_p} \ ++ %{pg:-lposix_p}} \ ++ %{!shared: \ ++ %{!symbolic: \ ++ %{!p: \ ++ %{!pg:-lc}} \ ++ %{p:-lc_p} \ ++ %{pg:-lc_p}}}" ++#endif ++ ++#undef LIB_SPEC ++#define LIB_SPEC NETBSD_LIB_SPEC ++ ++/* Provide a LIBGCC_SPEC appropriate for NetBSD. We also want to exclude ++ libgcc with -symbolic. */ ++ ++#ifdef NETBSD_NATIVE ++#define NETBSD_LIBGCC_SPEC \ ++ "%{!symbolic: \ ++ %{!shared: \ ++ %{!p: \ ++ %{!pg: -lgcc}}} \ ++ %{shared: -lgcc_pic} \ ++ %{p: -lgcc_p} \ ++ %{pg: -lgcc_p}}" ++#else ++#define NETBSD_LIBGCC_SPEC "%{!shared:%{!symbolic: -lgcc}}" ++#endif ++ ++#undef LIBGCC_SPEC ++#define LIBGCC_SPEC NETBSD_LIBGCC_SPEC ++ ++/* When building shared libraries, the initialization and finalization ++ functions for the library are .init and .fini respectively. */ ++ ++#define COLLECT_SHARED_INIT_FUNC(STREAM,FUNC) \ ++ do { \ ++ fprintf ((STREAM), "void __init() __asm__ (\".init\");"); \ ++ fprintf ((STREAM), "void __init() {\n\t%s();\n}\n", (FUNC)); \ ++ } while (0) ++ ++#define COLLECT_SHARED_FINI_FUNC(STREAM,FUNC) \ ++ do { \ ++ fprintf ((STREAM), "void __fini() __asm__ (\".fini\");"); \ ++ fprintf ((STREAM), "void __fini() {\n\t%s();\n}\n", (FUNC)); \ ++ } while (0) ++ ++#undef TARGET_HAS_F_SETLKW ++#define TARGET_HAS_F_SETLKW ++ ++/* Implicit library calls should use memcpy, not bcopy, etc. */ ++ ++#undef TARGET_MEM_FUNCTIONS ++#define TARGET_MEM_FUNCTIONS 1 ++ ++/* Handle #pragma weak and #pragma pack. */ ++ ++#define HANDLE_SYSV_PRAGMA 1 ++ ++ ++/* Define some types that are the same on all NetBSD platforms, ++ making them agree with . */ ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "int" ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 32 ++ ++#undef WINT_TYPE ++#define WINT_TYPE "int" ++ ++ ++/* Attempt to turn on execute permission for the stack. This may be ++ used by TRANSFER_FROM_TRAMPOLINE of the target needs it (that is, ++ if the target machine can change execute permissions on a page). ++ ++ There is no way to query the execute permission of the stack, so ++ we always issue the mprotect() call. ++ ++ Note that we go out of our way to use namespace-non-invasive calls ++ here. Unfortunately, there is no libc-internal name for mprotect(). ++ ++ Also note that no errors should be emitted by this code; it is considered ++ dangerous for library calls to send messages to stdout/stderr. */ ++ ++#define NETBSD_ENABLE_EXECUTE_STACK \ ++extern void __enable_execute_stack (void *); \ ++void \ ++__enable_execute_stack (addr) \ ++ void *addr; \ ++{ \ ++ extern int mprotect (void *, size_t, int); \ ++ extern int __sysctl (int *, unsigned int, void *, size_t *, \ ++ void *, size_t); \ ++ \ ++ static int size; \ ++ static long mask; \ ++ \ ++ char *page, *end; \ ++ \ ++ if (size == 0) \ ++ { \ ++ int mib[2]; \ ++ size_t len; \ ++ \ ++ mib[0] = 6; /* CTL_HW */ \ ++ mib[1] = 7; /* HW_PAGESIZE */ \ ++ len = sizeof (size); \ ++ (void) __sysctl (mib, 2, &size, &len, NULL, 0); \ ++ mask = ~((long) size - 1); \ ++ } \ ++ \ ++ page = (char *) (((long) addr) & mask); \ ++ end = (char *) ((((long) (addr + TRAMPOLINE_SIZE)) & mask) + size); \ ++ \ ++ /* 7 == PROT_READ | PROT_WRITE | PROT_EXEC */ \ ++ (void) mprotect (page, end - page, 7); \ ++} +diff -urN gcc/config/t-netbsd-gnu src/gcc/config/t-netbsd-gnu +--- gcc/config/t-netbsd-gnu 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/config/t-netbsd-gnu 2003-02-21 10:31:17.000000000 +0000 +@@ -0,0 +1,5 @@ ++# Don't run fixproto ++STMP_FIXPROTO = ++ ++# Always build crtstuff with PIC. ++CRTSTUFF_T_CFLAGS = -fPIC +diff -urN gcc/config.gcc src/gcc/config.gcc +--- gcc/config.gcc 2003-03-02 07:39:03.000000000 +0000 ++++ gcc/config.gcc 2003-04-24 06:02:55.000000000 +0000 +@@ -329,6 +329,45 @@ + ;; + esac + ;; ++*-*-netbsd*-gnu*) ++ tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd" ++ xm_defines=POSIX ++ gas=yes ++ gnu_ld=yes ++ ++ # This section MUST go above the matches for Hurd and native NetBSD, ++ # or they will catch the value, due to using excessively permissive ++ # match values. Also, $machine doesn't contain any version data, on ++ # a NetBSD w/ GNU userland machine, so we use uname -r instead. ++ ++ osr=`uname -r` ++ ++ # NetBSD 2.0 and later get POSIX threads enabled by default. ++ # Allow them to be explicitly enabled on any other version. ++ case x${enable_threads} in ++ x) ++ case $osr in ++ [2-9]*) ++ thread_file='posix' ++ tm_defines="${tm_defines} NETBSD_ENABLE_PTHREADS" ++ ;; ++ esac ++ ;; ++ xyes | xposix) ++ thread_file='posix' ++ tm_defines="${tm_defines} NETBSD_ENABLE_PTHREADS" ++ ;; ++ esac ++ ++ # NetBSD 1.7 and later are set up to use GCC's crtstuff for ++ # ELF configurations. We will clear extra_parts in the ++ # a.out configurations. ++ case $osr in ++ 1.[7-9]* | [2-9]*) ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" ++ ;; ++ esac ++ ;; + *-*-gnu*) + # On the Hurd, the setup is just about the same on + # each different CPU. The specific machines that we --- gcj-4.2-4.2-20070707.orig/debian/patches/kbsd-gnu.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/kbsd-gnu.dpatch @@ -0,0 +1,94 @@ +#! /bin/sh -e + +# DP: GNU/k*BSD support +# Author: Robert Millan +# Status: Not yet submitted + + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# append the patch here and adjust the -p? flag in the patch calls. + +diff -Nurd gcc-4.2.orig/gcc/config/i386/kfreebsd-gnu.h gcc-4.2/gcc/config/i386/kfreebsd-gnu.h +--- gcc-4.2.orig/gcc/config/i386/kfreebsd-gnu.h 2006-01-18 22:46:30.000000000 +0100 ++++ gcc-4.2/gcc/config/i386/kfreebsd-gnu.h 2007-05-23 05:34:47.000000000 +0200 +@@ -20,7 +20,29 @@ + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + ++#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 ++ +diff -Nurd gcc-4.2.orig/gcc/config/i386/linux64.h gcc-4.2/gcc/config/i386/linux64.h +--- gcc-4.2.orig/gcc/config/i386/linux64.h 2007-05-22 22:25:11.000000000 +0200 ++++ gcc-4.2/gcc/config/i386/linux64.h 2007-05-23 05:39:11.000000000 +0200 +@@ -49,11 +49,14 @@ + 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 LINK_SPEC +-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=both \ ++#define LINK_SPEC "%{!m32:-m " LINK_EMULATION64 "} %{m32:-m " LINK_EMULATION32 "} --hash-style=both \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +diff -Nurd gcc-4.2.orig/gcc/config.gcc gcc-4.2/gcc/config.gcc +--- gcc-4.2.orig/gcc/config.gcc 2007-02-03 10:03:58.000000000 +0100 ++++ gcc-4.2/gcc/config.gcc 2007-05-23 05:37:10.000000000 +0200 +@@ -1102,7 +1102,7 @@ + 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-crtfm t-dfprules" --- gcj-4.2-4.2-20070707.orig/debian/patches/note-gnu-stack.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/note-gnu-stack.dpatch @@ -0,0 +1,316 @@ +#! /bin/sh -e + +# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc +# DP: Taken from FC. + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +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. + + +Index: boehm-gc/ia64_save_regs_in_stack.s +=================================================================== +--- boehm-gc/ia64_save_regs_in_stack.s (revision 107431) ++++ boehm-gc/ia64_save_regs_in_stack.s (revision 107432) +@@ -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 +- +Index: boehm-gc/ia64_save_regs_in_stack.S +=================================================================== +--- boehm-gc/ia64_save_regs_in_stack.S (revision 0) ++++ boehm-gc/ia64_save_regs_in_stack.S (revision 107432) +@@ -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 +--- gcc/config/ia64/linux.h.orig 2006-10-12 02:01:00.000000000 +0200 ++++ gcc/config/ia64/linux.h 2006-12-11 10:33:13.000000000 +0100 +@@ -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*}" +--- gcc/config/ia64/lib1funcs.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/lib1funcs.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -792,3 +792,7 @@ + } + .endp __floattitf + #endif ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crti.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crti.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -64,3 +64,7 @@ + .body + + # end of crti.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtn.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtn.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -54,3 +54,7 @@ + br.ret.sptk.many b0 + + # end of crtn.asm ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtend.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtend.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -122,3 +122,7 @@ + + br.ret.sptk.many rp + .endp __do_global_ctors_aux ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/ia64/crtbegin.asm.orig 2006-01-18 22:46:41.000000000 +0100 ++++ gcc/config/ia64/crtbegin.asm 2006-12-11 10:33:13.000000000 +0100 +@@ -255,3 +255,7 @@ + .weak __cxa_finalize + #endif + .weak _Jv_RegisterClasses ++ ++#ifdef __linux__ ++.section .note.GNU-stack; .previous ++#endif +--- gcc/config/rs6000/ppc-asm.h.orig 2006-01-18 22:46:46.000000000 +0100 ++++ gcc/config/rs6000/ppc-asm.h 2006-12-11 10:33:14.000000000 +0100 +@@ -158,7 +158,7 @@ + .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 +--- libffi/src/powerpc/ppc_closure.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/ppc_closure.S 2006-12-11 10:33:14.000000000 +0100 +@@ -281,3 +281,7 @@ + .LEFDE1: + + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/sysv.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -217,3 +217,7 @@ + .align 2 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/linux64_closure.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/powerpc/linux64_closure.S 2006-12-11 10:33:14.000000000 +0100 +@@ -204,3 +204,7 @@ + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/powerpc/linux64.S.orig 2006-03-25 09:16:06.000000000 +0100 ++++ libffi/src/powerpc/linux64.S 2006-12-11 10:33:14.000000000 +0100 +@@ -175,3 +175,7 @@ + .align 3 + .LEFDE1: + #endif ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/arm/sysv.S.orig 2006-10-12 02:00:57.000000000 +0200 ++++ libffi/src/arm/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -255,3 +255,6 @@ + .ffi_closure_SYSV_end: + .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) + ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",%progbits ++#endif +--- libffi/src/m68k/sysv.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/m68k/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -207,3 +207,7 @@ + rts + CFI_ENDPROC() + .size ffi_closure_struct_SYSV,.-ffi_closure_struct_SYSV ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/alpha/osf.S.orig 2006-01-18 22:49:27.000000000 +0100 ++++ libffi/src/alpha/osf.S 2006-12-11 10:33:14.000000000 +0100 +@@ -356,4 +356,8 @@ + .byte 16 # uleb128 offset 16*-8 + .align 3 + $LEFDE3: ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif + #endif +--- libffi/src/x86/sysv.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/x86/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -376,3 +376,7 @@ + #endif + + #endif /* ifndef __x86_64__ */ ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/x86/unix64.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/x86/unix64.S 2006-12-11 10:33:14.000000000 +0100 +@@ -410,3 +410,7 @@ + .LEFDE3: + + #endif /* __x86_64__ */ ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/s390/sysv.S.orig 2006-01-18 22:49:28.000000000 +0100 ++++ libffi/src/s390/sysv.S 2006-12-11 10:33:14.000000000 +0100 +@@ -427,3 +427,6 @@ + + #endif + ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/ia64/unix.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/ia64/unix.S 2006-12-11 10:33:14.000000000 +0100 +@@ -553,3 +553,7 @@ + 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 +--- libffi/src/sparc/v9.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/sparc/v9.S 2006-12-11 10:33:14.000000000 +0100 +@@ -300,3 +300,7 @@ + .align 8 + .LLEFDE2: + #endif ++ ++#ifdef __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif +--- libffi/src/sparc/v8.S.orig 2006-01-18 22:49:29.000000000 +0100 ++++ libffi/src/sparc/v8.S 2006-12-11 10:33:14.000000000 +0100 +@@ -265,3 +265,7 @@ + .byte 0x1f ! uleb128 0x1f + .align WS + .LLEFDE2: ++ ++#if defined __ELF__ && defined __linux__ ++ .section .note.GNU-stack,"",@progbits ++#endif --- gcj-4.2-4.2-20070707.orig/debian/patches/alpha-ieee.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/alpha-ieee.dpatch @@ -0,0 +1,57 @@ +#! /bin/sh -e + +# DP: #212912 +# DP: on alpha-linux, make -mieee default and add -mieee-disable switch +# DP: to turn default off + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- src/gcc/config/alpha/alpha.c~ 2005-06-04 21:25:45.000000000 +0200 ++++ src/gcc/config/alpha/alpha.c 2005-09-30 22:21:33.251175568 +0200 +@@ -248,6 +248,10 @@ + { 0, 0, 0 } + }; + ++ /* 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) + { +#--- src/gcc/doc/invoke.texi~ 2005-09-29 20:00:57.638380128 +0200 +#+++ src/gcc/doc/invoke.texi 2005-09-30 22:23:22.922502992 +0200 +#@@ -7670,6 +7670,13 @@ +# 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 --- gcj-4.2-4.2-20070707.orig/debian/patches/libstdc++-baseline.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libstdc++-baseline.dpatch @@ -0,0 +1,42 @@ +#! /bin/sh -e + +# DP: overwrite baseline detection for i386: use the i486 headers + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libstdc++-v3/configure.target~ 2003-06-19 19:55:35.000000000 +0200 ++++ libstdc++-v3/configure.target 2003-06-20 09:15:08.000000000 +0200 +@@ -91,6 +91,14 @@ + ;; + esac + ++# Debian adjustments ++echo "LIBSTDCXX TARGET CPU: $target_cpu" ++case "${target_cpu}" in ++ i386) ++ # we use the i486 ABI ... ++ try_cpu=i486 ++ ;; ++esac + + # Now look for the file(s) usually tied to a CPU model, and make + # default choices for those if they haven't been explicitly set --- gcj-4.2-4.2-20070707.orig/debian/patches/libstdc++-doxygen.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libstdc++-doxygen.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: libstdc++ doxygen docs: Set SHORT_NAMES to YES + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libstdc++-v3/docs/doxygen/user.cfg.in~ 2005-03-04 19:44:51.000000000 +0100 ++++ libstdc++-v3/docs/doxygen/user.cfg.in 2005-04-09 01:00:44.753742400 +0200 +@@ -133,7 +133,7 @@ + # (but less readable) file names. This can be useful is your file systems + # doesn't support long names like on DOS, Mac, or CD-ROM. + +-SHORT_NAMES = NO ++SHORT_NAMES = YES + + # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen + # will interpret the first line (until the first dot) of a JavaDoc-style --- gcj-4.2-4.2-20070707.orig/debian/patches/gcc-hash-style-gnu.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gcc-hash-style-gnu.dpatch @@ -0,0 +1,163 @@ +#! /bin/sh -e + +# DP: Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, s390, sparc) + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +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. + +--- gcc/config/alpha/linux-elf.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/alpha/linux-elf.h 2006-12-11 13:03:10.336229000 +0100 +@@ -40,7 +40,7 @@ + + #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: \ +--- gcc/config/s390/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/s390/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -78,7 +78,7 @@ + + #undef LINK_SPEC + #define LINK_SPEC \ +- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ ++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{static:-static} \ +--- gcc/config/sparc/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/sparc/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -133,7 +133,7 @@ + + + #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: \ +--- gcc/config/sparc/linux64.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/sparc/linux64.h 2006-12-11 13:03:10.336229000 +0100 +@@ -167,7 +167,7 @@ + { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ + { "link_arch", LINK_ARCH_SPEC }, + +-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ ++#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -176,7 +176,7 @@ + %{static:-static}}} \ + " + +-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +@@ -257,7 +257,7 @@ + #else /* !SPARC_BI_ARCH */ + + #undef LINK_SPEC +-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \ ++#define LINK_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ +--- gcc/config/i386/linux.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/i386/linux.h 2006-12-11 13:03:10.336229000 +0100 +@@ -109,7 +109,7 @@ + { "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: \ +--- gcc/config/i386/linux64.h.orig 2006-12-11 13:02:43.396229000 +0100 ++++ gcc/config/i386/linux64.h 2006-12-11 13:03:51.046229000 +0100 +@@ -53,7 +53,7 @@ + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" + + #undef LINK_SPEC +-#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ ++#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu \ + %{shared:-shared} \ + %{!shared: \ + %{!static: \ +--- gcc/config/ia64/linux.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/ia64/linux.h 2006-12-11 13:03:10.346229000 +0100 +@@ -40,7 +40,7 @@ + #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: \ +--- gcc/config/rs6000/sysv4.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/rs6000/sysv4.h 2006-12-11 13:03:10.346229000 +0100 +@@ -908,7 +908,7 @@ + #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 "}}}" + +--- gcc/config/rs6000/linux64.h.orig 2006-12-11 13:02:43.406229000 +0100 ++++ gcc/config/rs6000/linux64.h 2006-12-11 13:03:10.346229000 +0100 +@@ -351,11 +351,11 @@ + 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 "}}}" + --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-link-lib.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-link-lib.dpatch @@ -0,0 +1,2479 @@ +#! /bin/sh -e + +# 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. + +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 -p0 < $0 + cd ${dir} && autoconf2.13 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- configure.in~ 2007-01-01 09:51:04.000000000 +0100 ++++ configure.in 2007-06-15 12:04:39.996241825 +0200 +@@ -123,7 +123,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" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber libada" + + # these tools are built for the host environment + # Note, the powerpc-eabi build depends on sim occurring before gdb in order to +@@ -230,7 +230,7 @@ + + # Similarly, some are only suitable for cross toolchains. + # Remove these if host=target. +-cross_only="target-libgloss target-newlib target-opcodes" ++cross_only="target-libgloss target-newlib target-opcodes target-libada" + + case $is_cross_compiler in + no) skipdirs="${skipdirs} ${cross_only}" ;; +--- gcc/ada/config-lang.in~ 2006-01-18 22:44:53.000000000 +0100 ++++ gcc/ada/config-lang.in 2007-06-15 12:04:40.000242020 +0200 +@@ -39,7 +39,7 @@ + outputs=ada/Makefile + + target_libs="target-libada" +-lang_dirs="gnattools" ++lang_dirs="libada gnattools" + + # Ada will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +--- gcc/ada/link.c~ 2006-01-18 22:44:59.000000000 +0100 ++++ gcc/ada/link.c 2007-06-15 12:04:40.564269545 +0200 +@@ -155,8 +155,8 @@ + + #elif defined (__FreeBSD__) + char *__gnat_object_file_option = ""; +-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; +@@ -164,8 +164,8 @@ + + #elif defined (linux) + 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; +--- gcc/ada/Makefile.in~ 2007-06-12 01:12:08.000000000 +0200 ++++ gcc/ada/Makefile.in 2007-06-15 12:04:40.644273449 +0200 +@@ -116,7 +116,7 @@ + TEXI2DVI = texi2dvi + TEXI2PDF = texi2pdf + GNATBIND = $(STAGE_PREFIX)gnatbind +-GNATBIND_FLAGS = -static -x ++GNATBIND_FLAGS = -shared -x + ADA_CFLAGS = + ADAFLAGS = -W -Wall -gnatpg -gnata + SOME_ADAFLAGS =-gnata +@@ -248,7 +248,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, +@@ -294,31 +293,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-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 + # variable. +@@ -411,8 +385,6 @@ + g-socthi.adb&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +fi +case "$1" in + -patch) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +gcc/ +2007-01-17 H.J. Lu + + * config/mips/mips-protos.h (mips_output_external): Make it + return void. + * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed. + * config/mips/mips.c (irix_output_external_libcall): Likewise. + (extern_list): Likewise. + (extern_head): Likewise. + (TARGET_ASM_FILE_END): Likewise. + (mips_file_end): Likewise. + (mips_output_external): Rewritten. + +Index: gcc/config/mips/iris.h +=================================================================== +--- gcc/config/mips/iris.h (revision 120822) ++++ gcc/config/mips/iris.h (working copy) +@@ -61,10 +61,6 @@ #define ASM_DECLARE_OBJECT_NAME mips_dec + #undef ASM_FINISH_DECLARE_OBJECT + #define ASM_FINISH_DECLARE_OBJECT mips_finish_declare_object + +-/* Also do this for libcalls. */ +-#undef TARGET_ASM_EXTERNAL_LIBCALL +-#define TARGET_ASM_EXTERNAL_LIBCALL irix_output_external_libcall +- + /* The linker needs a space after "-o". */ + #define SWITCHES_NEED_SPACES "o" + +Index: gcc/config/mips/mips-protos.h +=================================================================== +--- gcc/config/mips/mips-protos.h (revision 120822) ++++ gcc/config/mips/mips-protos.h (working copy) +@@ -197,7 +197,7 @@ extern HOST_WIDE_INT mips_debugger_offse + + extern void print_operand (FILE *, rtx, int); + extern void print_operand_address (FILE *, rtx); +-extern int mips_output_external (FILE *, tree, const char *); ++extern void mips_output_external (FILE *, tree, const char *); + extern void mips_output_filename (FILE *, const char *); + extern void mips_output_ascii (FILE *, const char *, size_t, const char *); + extern void mips_output_aligned_bss (FILE *, tree, const char *, +Index: gcc/config/mips/mips.c +=================================================================== +--- gcc/config/mips/mips.c (revision 120822) ++++ gcc/config/mips/mips.c (working copy) +@@ -303,11 +303,7 @@ static void mips_set_tune (const struct + static bool mips_handle_option (size_t, const char *, int); + static struct machine_function *mips_init_machine_status (void); + static void print_operand_reloc (FILE *, rtx, const char **); +-#if TARGET_IRIX +-static void irix_output_external_libcall (rtx); +-#endif + static void mips_file_start (void); +-static void mips_file_end (void); + static bool mips_rewrite_small_data_p (rtx); + static int mips_small_data_pattern_1 (rtx *, void *); + static int mips_rewrite_small_data_1 (rtx *, void *); +@@ -552,19 +548,6 @@ int sdb_label_count = 0; + /* Next label # for each statement for Silicon Graphics IRIS systems. */ + int sym_lineno = 0; + +-/* Linked list of all externals that are to be emitted when optimizing +- for the global pointer if they haven't been declared by the end of +- the program with an appropriate .comm or initialization. */ +- +-struct extern_list GTY (()) +-{ +- struct extern_list *next; /* next external */ +- const char *name; /* name of the external */ +- int size; /* size in bytes */ +-}; +- +-static GTY (()) struct extern_list *extern_head = 0; +- + /* Name of the file containing the current function. */ + const char *current_function_file = ""; + +@@ -1144,9 +1127,7 @@ #define TARGET_IN_SMALL_DATA_P mips_in_s + #define TARGET_MACHINE_DEPENDENT_REORG mips_reorg + + #undef TARGET_ASM_FILE_START +-#undef TARGET_ASM_FILE_END + #define TARGET_ASM_FILE_START mips_file_start +-#define TARGET_ASM_FILE_END mips_file_end + #undef TARGET_ASM_FILE_START_FILE_DIRECTIVE + #define TARGET_ASM_FILE_START_FILE_DIRECTIVE true + +@@ -5786,48 +5767,38 @@ print_operand_address (FILE *file, rtx x + the -G limit but declared by the user to be in a section other + than .sbss or .sdata. */ + +-int +-mips_output_external (FILE *file ATTRIBUTE_UNUSED, tree decl, const char *name) +-{ +- register struct extern_list *p; +- +- if (!TARGET_EXPLICIT_RELOCS && mips_in_small_data_p (decl)) +- { +- p = (struct extern_list *) ggc_alloc (sizeof (struct extern_list)); +- p->next = extern_head; +- p->name = name; +- p->size = int_size_in_bytes (TREE_TYPE (decl)); +- extern_head = p; +- } +- +- if (TARGET_IRIX && mips_abi == ABI_32 && TREE_CODE (decl) == FUNCTION_DECL) +- { +- p = (struct extern_list *) ggc_alloc (sizeof (struct extern_list)); +- p->next = extern_head; +- p->name = name; +- p->size = -1; +- extern_head = p; +- } +- +- return 0; +-} +- +-#if TARGET_IRIX +-static void +-irix_output_external_libcall (rtx fun) ++void ++mips_output_external (FILE *file, tree decl, const char *name) + { +- register struct extern_list *p; ++ default_elf_asm_output_external (file, decl, name); + +- if (mips_abi == ABI_32) +- { +- p = (struct extern_list *) ggc_alloc (sizeof (struct extern_list)); +- p->next = extern_head; +- p->name = XSTR (fun, 0); +- p->size = -1; +- extern_head = p; ++ /* We output the name if and only if TREE_SYMBOL_REFERENCED is ++ set in order to avoid putting out names that are never really ++ used. */ ++ if (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))) ++ { ++ if (!TARGET_EXPLICIT_RELOCS && mips_in_small_data_p (decl)) ++ { ++ fputs ("\t.extern\t", file); ++ assemble_name (file, name); ++ fprintf (file, ", " HOST_WIDE_INT_PRINT_DEC "\n", ++ int_size_in_bytes (TREE_TYPE (decl))); ++ } ++ else if (TARGET_IRIX ++ && mips_abi == ABI_32 ++ && TREE_CODE (decl) == FUNCTION_DECL) ++ { ++ /* In IRIX 5 or IRIX 6 for the O32 ABI, we must output a ++ `.global name .text' directive for every used but ++ undefined function. If we don't, the linker may perform ++ an optimization (skipping over the insns that set $gp) ++ when it is unsafe. */ ++ fputs ("\t.globl ", file); ++ assemble_name (file, name); ++ fputs (" .text\n", file); ++ } + } + } +-#endif + + /* Emit a new filename to a stream. If we are smuggling stabs, try to + put out a MIPS ECOFF file and a stab. */ +@@ -5989,50 +5960,6 @@ mips_output_aligned_bss (FILE *stream, t + } + #endif + +-/* Implement TARGET_ASM_FILE_END. When using assembler macros, emit +- .externs for any small-data variables that turned out to be external. */ +- +-static void +-mips_file_end (void) +-{ +- tree name_tree; +- struct extern_list *p; +- +- if (extern_head) +- { +- fputs ("\n", asm_out_file); +- +- for (p = extern_head; p != 0; p = p->next) +- { +- name_tree = get_identifier (p->name); +- +- /* Positively ensure only one .extern for any given symbol. */ +- if (!TREE_ASM_WRITTEN (name_tree) +- && TREE_SYMBOL_REFERENCED (name_tree)) +- { +- TREE_ASM_WRITTEN (name_tree) = 1; +- /* In IRIX 5 or IRIX 6 for the O32 ABI, we must output a +- `.global name .text' directive for every used but +- undefined function. If we don't, the linker may perform +- an optimization (skipping over the insns that set $gp) +- when it is unsafe. */ +- if (TARGET_IRIX && mips_abi == ABI_32 && p->size == -1) +- { +- fputs ("\t.globl ", asm_out_file); +- assemble_name (asm_out_file, p->name); +- fputs (" .text\n", asm_out_file); +- } +- else +- { +- fputs ("\t.extern\t", asm_out_file); +- assemble_name (asm_out_file, p->name); +- fprintf (asm_out_file, ", %d\n", p->size); +- } +- } +- } +- } +-} +- + /* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON. This is usually the same as the + elfos.h version, but we also need to handle -muninit-const-in-rodata. */ + + --- gcj-4.2-4.2-20070707.orig/debian/patches/arm-pragma-pack.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/arm-pragma-pack.dpatch @@ -0,0 +1,91 @@ +#! /bin/sh -e + +# DP: Fix #pragma pack on ARM + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +From: Paul Brook +Sender: gcc-patches-owner@gcc.gnu.org +To: gcc-patches@gcc.gnu.org +Subject: [patch] #pragma pack vs. STRUCTURE_SIZE_BOUNDARY +Date: Sun, 22 Oct 2006 16:32:31 +0100 + +Currently STRUCTURE_SIZE_BOUNDARY is obeyed even when +#pragma pack(1) is in effect. By contrast __attribute__((packed)) overrides +STRUCTURE_SIZE_BOUNDARY. + +This matters when odd sized packed structs are nested inside each other. + +Given the purpose of #pragma pack is for compatibility with Win32, I think +#pragma pack(1) act the same as __attribute__((packed)). + +The patch below fixes this. +Tested with cross to arm-none-eabi. +Ok? + +Paul + +2006-10-22 Paul Brook + + gcc/ + * stor-layout.c (start_record_layout): maximum_field_alignment + overrides STRUCTURE_SIZE_BOUNDARY. + + gcc/testsuite/ + * gcc.dg/pragma-pack-4.c: New test. + +Index: gcc/stor-layout.c +=================================================================== +--- gcc/stor-layout.c (revision 117906) ++++ gcc/stor-layout.c (working copy) +@@ -525,7 +525,15 @@ start_record_layout (tree t) + #ifdef STRUCTURE_SIZE_BOUNDARY + /* Packed structures don't need to have minimum size. */ + if (! TYPE_PACKED (t)) +- rli->record_align = MAX (rli->record_align, (unsigned) STRUCTURE_SIZE_BOUNDARY); ++ { ++ unsigned tmp; ++ ++ /* #pragma pack overrides STRUCTURE_SIZE_BOUNDARY. */ ++ tmp = (unsigned) STRUCTURE_SIZE_BOUNDARY; ++ if (maximum_field_alignment != 0) ++ tmp = MIN (tmp, maximum_field_alignment); ++ rli->record_align = MAX (rli->record_align, tmp); ++ } + #endif + + rli->offset = size_zero_node; +Index: gcc/testsuite/gcc.dg/pragma-pack-4.c +=================================================================== +--- gcc/testsuite/gcc.dg/pragma-pack-4.c (revision 0) ++++ gcc/testsuite/gcc.dg/pragma-pack-4.c (revision 0) +@@ -0,0 +1,10 @@ ++/* Check that pragma pack overrides STRUCTURE_SIZE_BOUNDARY. */ ++/* { dg-do compile } */ ++ ++#pragma pack(1) ++struct S ++{ ++ char a; ++}; ++ ++int test[sizeof(struct S) == 1 ? 1: -1]; --- gcj-4.2-4.2-20070707.orig/debian/patches/cpu-default-i486-trunk.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/cpu-default-i486-trunk.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: set default 32bit ix86 architecture to i486 + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +--- gcc/config/i386/i386.c~ 2007-06-28 13:23:31.000000000 +0200 ++++ gcc/config/i386/i386.c 2007-06-28 13:26:33.000000000 +0200 +@@ -1953,7 +1953,7 @@ + "-mtune=generic instead as appropriate."); + + if (!ix86_arch_string) +- ix86_arch_string = TARGET_64BIT ? "x86-64" : "i386"; ++ ix86_arch_string = TARGET_64BIT ? "x86-64" : "i486"; + else + ix86_arch_specified = 1; + --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-dwarf3.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-dwarf3.dpatch @@ -0,0 +1,50 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: emit correct dwarf info for cfa offset and register with -fomit-frame-pointer + +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 + +--- + gcc/config/m68k/m68k.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -604,10 +604,12 @@ m68k_output_function_prologue (FILE *str + + if (dwarf2out_do_frame ()) + { +- cfa_offset += current_frame.size + 4; ++ cfa_offset += current_frame.size; + dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset); + } + } /* !frame_pointer_needed */ ++ else if (dwarf2out_do_frame ()) ++ dwarf2out_def_cfa ("", STACK_POINTER_REGNUM, cfa_offset); + + if (current_frame.fpu_mask) + { --- gcj-4.2-4.2-20070707.orig/debian/patches/multiarch-include.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/multiarch-include.dpatch @@ -0,0 +1,138 @@ +#! /bin/sh -e + +# DP: biarch-include.dpatch +# DP: +# DP: Adds biarch include directories +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: to the system include paths, depending on 32/64 bit mode. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +Index: gcc/cppdefault.c +=================================================================== +--- gcc/cppdefault.c (revision 112832) ++++ gcc/cppdefault.c (working copy) +@@ -60,6 +60,7 @@ + #endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, + #endif + #ifdef PREFIX_INCLUDE_DIR +@@ -83,6 +84,7 @@ + #endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ ++ { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 2 }, + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1, 0 }, + #endif + { 0, 0, 0, 0, 0, 0 } +Index: gcc/c-incpath.c +=================================================================== +--- gcc/c-incpath.c (revision 112832) ++++ gcc/c-incpath.c (working copy) +@@ -30,6 +30,7 @@ + #include "intl.h" + #include "c-incpath.h" + #include "cppdefault.h" ++#include "errors.h" + + /* Windows does not natively support inodes, and neither does MSDOS. + Cygwin's emulation can generate non-unique inodes, so don't use it. +@@ -121,6 +121,31 @@ + } + } + ++struct multiarch_mapping ++{ ++ const char *const multilib; ++ const char *const multiarch; ++}; ++ ++const struct multiarch_mapping multiarch_mappings[] ++= { ++#include "multiarch.inc" ++ { 0, 0 } ++}; ++ ++static 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; ++ } ++ internal_error("no multiarch mapping for multilib (%s)\n", imultilib); ++} ++ + /* Append the standard include chain defined in cppdefault.c. */ + static void + add_standard_paths (const char *sysroot, const char *iprefix, +@@ -128,6 +153,7 @@ + { + const struct default_include *p; + size_t len; ++ const char *multiarch; + + if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0) + { +@@ -146,8 +172,15 @@ + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); +- if (p->multilib && imultilib) ++ if (p->multilib == 1 && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); ++ if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } + add_path (str, SYSTEM, p->cxx_aware, false); + } + } +@@ -166,9 +199,17 @@ + else + str = update_path (p->fname, p->component); + +- if (p->multilib && imultilib) ++ if (p->multilib == 1 && imultilib) + str = concat (str, dir_separator_str, imultilib, NULL); + ++ if (p->multilib == 2) ++ { ++ multiarch = multilib_to_multiarch (imultilib); ++ if (!multiarch) ++ continue; ++ str = concat (str, dir_separator_str, multiarch, NULL); ++ } ++ + add_path (str, SYSTEM, p->cxx_aware, false); + } + } --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-fpcompare.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-fpcompare.dpatch @@ -0,0 +1,176 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: bring fp compare early to its desired form to relieve reload, +# DP: allow any fp constant during and after reload (even special constants) +# DP: in case reload can't find a free register for them. + +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 + +--- + + gcc/config/m68k/m68k.c | 3 + + gcc/config/m68k/m68k.md | 86 ++++++------------------------------------ + gcc/config/m68k/predicates.md | 7 +++ + 3 files changed, 24 insertions(+), 72 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -2467,6 +2467,9 @@ notice_update_cc (rtx exp, rtx insn) + if (((cc_status.value1 && FP_REG_P (cc_status.value1)) + || (cc_status.value2 && FP_REG_P (cc_status.value2)))) + cc_status.flags = CC_IN_68881; ++ if (cc_status.value2 && GET_CODE (cc_status.value2) == COMPARE ++ && GET_MODE_CLASS (GET_MODE (XEXP (cc_status.value2, 0))) == MODE_FLOAT) ++ cc_status.flags = CC_IN_68881; + } + + const char * +Index: gcc-4.1/gcc/config/m68k/m68k.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.md ++++ gcc-4.1/gcc/config/m68k/m68k.md +@@ -408,59 +408,26 @@ + return "cmp%.b %d1,%d0"; + }) + +-(define_expand "cmpdf" +- [(set (cc0) +- (compare (match_operand:DF 0 "general_operand" "") +- (match_operand:DF 1 "general_operand" "")))] +- "TARGET_68881" +-{ +- m68k_last_compare_had_fp_operands = 1; +-}) ++(define_mode_macro F [XF DF SF]) ++(define_mode_attr F_fmt [(XF "%.x") (DF "%.d") (SF "%.s")]) ++(define_mode_attr F_c [(XF "mF") (DF "mF") (SF "mdF")]) + +-(define_insn "" ++(define_expand "cmp" + [(set (cc0) +- (compare (match_operand:DF 0 "general_operand" "f,mG") +- (match_operand:DF 1 "general_operand" "fmG,f")))] ++ (compare (match_operand:F 0 "register_operand" "") ++ (match_operand:F 1 "fp_src_operand" "")))] + "TARGET_68881" +-{ +- cc_status.flags = CC_IN_68881; +- if (REG_P (operands[0])) +- { +- if (REG_P (operands[1])) +- return "fcmp%.x %1,%0"; +- else +- return "fcmp%.d %f1,%0"; +- } +- cc_status.flags |= CC_REVERSED; +- return "fcmp%.d %f0,%1"; +-}) +- +-(define_expand "cmpsf" +- [(set (cc0) +- (compare (match_operand:SF 0 "general_operand" "") +- (match_operand:SF 1 "general_operand" "")))] +- "TARGET_68881" +-{ +- m68k_last_compare_had_fp_operands = 1; +-}) ++ "m68k_last_compare_had_fp_operands = 1;") + +-(define_insn "" ++(define_insn "*cmp" + [(set (cc0) +- (compare (match_operand:SF 0 "general_operand" "f,mdG") +- (match_operand:SF 1 "general_operand" "fmdG,f")))] ++ (compare (match_operand:F 0 "register_operand" "f,f") ++ (match_operand:F 1 "fp_src_operand" "f,")))] + "TARGET_68881" +-{ +- cc_status.flags = CC_IN_68881; +- if (FP_REG_P (operands[0])) +- { +- if (FP_REG_P (operands[1])) +- return "fcmp%.x %1,%0"; +- else +- return "fcmp%.s %f1,%0"; +- } +- cc_status.flags |= CC_REVERSED; +- return "fcmp%.s %f0,%1"; +-}) ++ "@ ++ fcmp%.x %1,%0 ++ fcmp %f1,%0") ++ + + ;; Recognizers for btst instructions. + +@@ -6819,31 +6786,6 @@ + return "ftst%.x %0"; + }) + +-(define_expand "cmpxf" +- [(set (cc0) +- (compare (match_operand:XF 0 "nonimmediate_operand" "") +- (match_operand:XF 1 "nonimmediate_operand" "")))] +- "TARGET_68881" +- "m68k_last_compare_had_fp_operands = 1;") +- +-(define_insn "" +- [(set (cc0) +- (compare (match_operand:XF 0 "nonimmediate_operand" "f,m") +- (match_operand:XF 1 "nonimmediate_operand" "fm,f")))] +- "TARGET_68881" +-{ +- cc_status.flags = CC_IN_68881; +- if (REG_P (operands[0])) +- { +- if (REG_P (operands[1])) +- return "fcmp%.x %1,%0"; +- else +- return "fcmp%.x %f1,%0"; +- } +- cc_status.flags |= CC_REVERSED; +- return "fcmp%.x %f0,%1"; +-}) +- + (define_insn "extendsfxf2" + [(set (match_operand:XF 0 "nonimmediate_operand" "=fm,f") + (float_extend:XF (match_operand:SF 1 "general_operand" "f,rmF")))] +Index: gcc-4.1/gcc/config/m68k/predicates.md +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/predicates.md ++++ gcc-4.1/gcc/config/m68k/predicates.md +@@ -194,3 +194,10 @@ + { + return MEM_P (op) && GET_CODE (XEXP (op, 0)) == PRE_DEC; + }) ++ ++(define_predicate "fp_src_operand" ++ (match_operand 0 "general_src_operand") ++{ ++ return !CONSTANT_P (op) || !standard_68881_constant_p (op) ++ || reload_completed || reload_in_progress; ++}) --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-examples.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-examples.dpatch @@ -0,0 +1,114 @@ +#! /bin/sh -e + +# DP: Fix build for libjava/classpath/examples + +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 -p0 < $0 + #cd ${dir}gcc && autoconf + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + #rm ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + + +2007-07-06 Matthias Klose + + * examples/Makefile.am: Use the just built compiler to build + the examples. + * examples/Makefile.in: Regenerate. + +Index: libjava/classpath/examples/Makefile.in +=================================================================== +--- libjava/classpath/examples/Makefile.in (revision 126369) ++++ libjava/classpath/examples/Makefile.in (working copy) +@@ -317,19 +317,13 @@ + target_vendor = @target_vendor@ + toolexeclibdir = @toolexeclibdir@ + vm_classes = @vm_classes@ +-GLIBJ_CLASSPATH = '$(top_builddir)/lib':'$(top_builddir)/lib/glibj.zip':'$(top_builddir)/tools/tools.zip' +-@FOUND_ECJ_FALSE@@FOUND_JAVAC_TRUE@JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath . ++GLIBJ_BOOTCLASSPATH = '$(top_srcdir)/lib' ++GLIBJ_CLASSPATH = $(srcdir)/asm:$(top_srcdir)/tools ++@FOUND_ECJ_FALSE@@FOUND_GCJ_FALSE@@FOUND_JAVAC_TRUE@JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath .:$(GLIBJ_CLASSPATH) ++@FOUND_ECJ_TRUE@@FOUND_GCJ_FALSE@JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath .:$(GLIBJ_CLASSPATH) + + # Setup the compiler to use the GNU Classpath library we just build +-#if FOUND_GCJ +-#JCOMPILER = $(GCJ) --bootclasspath '$(top_builddir)/lib' --classpath . -C +-#else +-#if FOUND_JIKES +-#JCOMPILER = $(JIKES) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(top_builddir)/lib:. +-#else +-@FOUND_ECJ_TRUE@JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath . +-#endif +-#endif ++@FOUND_GCJ_TRUE@JCOMPILER = $(GCJ) -C -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH):. + + # All our example java source files + EXAMPLE_JAVA_FILES = $(srcdir)/gnu/classpath/examples/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*/*.java +@@ -558,7 +552,7 @@ + uninstall uninstall-am uninstall-exampleDATA uninstall-info-am \ + uninstall-local + +-@FOUND_ECJ_FALSE@@FOUND_JAVAC_FALSE@error dunno how to setup the JCOMPILER and compile ++@FOUND_ECJ_FALSE@@FOUND_GCJ_FALSE@@FOUND_JAVAC_FALSE@error dunno how to setup the JCOMPILER and compile + + # Make sure all sources and icons are also installed so users can use them. + # (Be careful to strip off the srcdir part of the path when installing.) +Index: libjava/classpath/examples/Makefile.am +=================================================================== +--- libjava/classpath/examples/Makefile.am (revision 126369) ++++ libjava/classpath/examples/Makefile.am (working copy) +@@ -1,24 +1,24 @@ + ## Input file for automake to generate the Makefile.in used by configure +-GLIBJ_CLASSPATH='$(top_builddir)/lib':'$(top_builddir)/lib/glibj.zip':'$(top_builddir)/tools/tools.zip' + ++## GCJ LOCAL: use srcdir to find core classes. ++GLIBJ_BOOTCLASSPATH='$(top_srcdir)/lib' ++GLIBJ_CLASSPATH=$(srcdir)/asm:$(top_srcdir)/tools ++## END GCJ LOCAL ++ + # Setup the compiler to use the GNU Classpath library we just build +-#if FOUND_GCJ +-#JCOMPILER = $(GCJ) --bootclasspath '$(top_builddir)/lib' --classpath . -C +-#else +-#if FOUND_JIKES +-#JCOMPILER = $(JIKES) -bootclasspath '' -extdirs '' -sourcepath '' --classpath $(top_builddir)/lib:. +-#else ++if FOUND_GCJ ++JCOMPILER = $(GCJ) -C -encoding UTF-8 -bootclasspath $(GLIBJ_BOOTCLASSPATH) -classpath $(GLIBJ_CLASSPATH):. ++else + if FOUND_ECJ +-JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath . ++JCOMPILER = $(ECJ) -1.5 -encoding UTF-8 -warn:-deprecation,serial,typeHiding,unchecked,unused,varargsCast -bootclasspath $(GLIBJ_CLASSPATH) -classpath .:$(GLIBJ_CLASSPATH) + else + if FOUND_JAVAC +-JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath . ++JCOMPILER = $(JAVAC) -encoding UTF-8 -bootclasspath $(GLIBJ_CLASSPATH) -classpath .:$(GLIBJ_CLASSPATH) + else + error dunno how to setup the JCOMPILER and compile +-#endif +-#endif +-endif +-endif ++endif # FOUND_JAVAC ++endif # FOUND_ECJ ++endif # FOUND_GCJ + + # All our example java source files + EXAMPLE_JAVA_FILES = $(srcdir)/gnu/classpath/examples/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*.java $(srcdir)/gnu/classpath/examples/*/*/*/*.java --- gcj-4.2-4.2-20070707.orig/debian/patches/config-ml.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/config-ml.dpatch @@ -0,0 +1,220 @@ +#! /bin/sh -e + +# DP: disable some biarch libraries for biarch builds + +if [ $# -eq 3 ] && [ "$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 -p0 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- config-ml.in.orig 2005-11-22 14:42:01.208516952 +0100 ++++ config-ml.in 2005-11-22 14:46:39.072275240 +0100 +@@ -215,6 +215,13 @@ + fi + done + ++if [ -z "$biarch_multidir_names" ]; then ++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc" ++ echo "WARNING: biarch_multidir_names is unset. Use default value:" ++ echo " $biarch_multidir_names" ++fi ++ml_srcbase=`basename $ml_realsrcdir` ++ + # Target libraries are configured for the host they run on, so we check + # $host here, not $target. + +@@ -301,6 +308,26 @@ + done + fi + ;; ++i[34567]86-*-*) ++ case " $multidirs " in ++ *" 64 "*) ++ ac_configure_args="${ac_configure_args} --host=x86_64-linux-gnu" ++ # Setting $host this late is a hack. Some directories can't ++ # handle it, so disable them for now. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ++ ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ ;; ++ esac ++ ;; + m68*-*-*) + if [ x$enable_softfloat = xno ] + then +@@ -494,16 +521,56 @@ + esac + done + fi ++ case " $multidirs " in ++ *" 64 "*) ++ # We will not be able to create libraries with -m64 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 64bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m64 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m64, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *m64* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac + ;; + sparc*-*-*) + case " $multidirs " in +- *" m64 "*) ++ *" 64 "*) + # We will not be able to create libraries with -m64 if + # we cannot even link a trivial program. It usually + # indicates the 64bit libraries are missing. + if echo 'main() {}' > conftest.c && + ${CC-gcc} -m64 conftest.c -o conftest; then +- : ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done + else + echo Could not link program with -m64, disabling it. + old_multidirs="${multidirs}" +@@ -519,6 +586,74 @@ + ;; + esac + ;; ++x86_64*-*-*) ++ case " $multidirs " in ++ *" 32 "*) ++ # We will not be able to create libraries with -m32 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 32bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m32 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *32* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m32, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *m32* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac ++ ;; ++s390-*-*) ++ ac_configure_args="${ac_configure_args} --host=s390x-linux-gnu" ++ ++ case " $multidirs " in ++ *" 64 "*) ++ # We will not be able to create libraries with -m64 if ++ # we cannot even link a trivial program. It usually ++ # indicates the 64bit libraries are missing. ++ if echo 'main() {}' > conftest.c && ++ ${CC-gcc} -m64 conftest.c -o conftest; then ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) case "$biarch_multidir_names" in ++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; ++ esac ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ else ++ echo Could not link program with -m64, disabling it. ++ old_multidirs="${multidirs}" ++ multidirs="" ++ for x in ${old_multidirs}; do ++ case "$x" in ++ *64* ) : ;; ++ *) multidirs="${multidirs} ${x}" ;; ++ esac ++ done ++ fi ++ rm -f conftest.c conftest ++ ;; ++ esac ++ ;; + esac + + # Remove extraneous blanks from multidirs. +@@ -892,9 +1027,20 @@ + 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_srcdiroption} ; then ++ ${ac_configure_args} ${ml_configure_args} ${ml_srcdiroption} ; then + true + else + exit 1 --- gcj-4.2-4.2-20070707.orig/debian/patches/reporting.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/reporting.dpatch @@ -0,0 +1,122 @@ +#! /bin/sh -e + +# DP: Add Debian URL for bug reporting instructions. + +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 -p0 < $0 + if grep -q debian_bug_report_url ${dir}gcc/version.c; then + : + else + echo 'const char debian_bug_report_url[] = "";' >> ${dir}gcc/version.c + fi + ;; + -unpatch) + grep -v debian_bug_report_url ${dir}gcc/version.c > ${dir}gcc/version.c.new + ${dir}move-if-change ${dir}gcc/version.c.new ${dir}gcc/version.c + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/java/jcf-dump.c.old 2006-04-02 00:23:43.052345288 +0200 ++++ gcc/java/jcf-dump.c 2006-04-02 00:24:17.571097640 +0200 +@@ -921,6 +921,8 @@ + printf ("\n"); + printf (_("For bug reporting instructions, please see:\n" + "%s.\n"), bug_report_url); ++ printf (_("For Debian GNU/Linux specific bug reporting instructions, please see:\n" ++ "%s.\n"), debian_bug_report_url); + exit (0); + } + +--- gcc/diagnostic.c.old 2006-04-02 00:23:43.053345136 +0200 ++++ gcc/diagnostic.c 2006-04-02 00:27:15.732013064 +0200 +@@ -263,6 +263,8 @@ + fnotice (stderr, "Please submit a full bug report,\n" + "with preprocessed source if appropriate.\n" + "See %s for instructions.\n", bug_report_url); ++ fnotice (stderr, "For Debian GNU/Linux specific bug reporting instructions,\n" ++ "see %s.\n", debian_bug_report_url); + exit (ICE_EXIT_CODE); + + case DK_FATAL: +--- gcc/gcc.c.old 2006-04-02 00:23:43.068342856 +0200 ++++ gcc/gcc.c 2006-04-02 00:26:35.020202200 +0200 +@@ -3001,9 +3001,11 @@ + fatal_ice ("\ + Internal error: %s (program %s)\n\ + Please submit a full bug report.\n\ +-See %s for instructions.", ++See %s for instructions.\n\ ++For Debian GNU/Linux specific bug reporting instructions, see\n\ ++%s.\n", + strsignal (WTERMSIG (status)), commands[i].prog, +- bug_report_url); ++ bug_report_url, debian_bug_report_url); + } + else if (WIFEXITED (status) + && WEXITSTATUS (status) >= MIN_FATAL_STATUS) +@@ -6421,6 +6423,8 @@ + { + printf (_("\nFor bug reporting instructions, please see:\n")); + printf ("%s.\n", bug_report_url); ++ printf ("For Debian GNU/Linux specific bug reporting instructions, please see:\n"); ++ printf ("%s.\n", debian_bug_report_url); + + return (0); + } +@@ -6713,6 +6717,8 @@ + { + printf (("\nFor bug reporting instructions, please see:\n")); + printf ("%s\n", bug_report_url); ++ printf ("For Debian GNU/Linux specific bug reporting instructions, please see:\n"); ++ printf ("%s\n", debian_bug_report_url); + } + + return (signal_count != 0 ? 2 +--- gcc/gccbug.in.old 2006-04-02 00:23:43.069342704 +0200 ++++ gcc/gccbug.in 2006-04-02 00:24:17.588095056 +0200 +@@ -25,10 +25,10 @@ + VERSION=3.113 + + # The submitter-id for your site. +-SUBMITTER=net ++SUBMITTER=net # net-debian + + # The default mail address for PR submissions. +-GNATS_ADDR=gcc-gnats@gcc.gnu.org ++GNATS_ADDR="gcc-gnats@gcc.gnu.org,debian-gcc@lists.debian.org" + + # The default release for this host. + # We have to guess at what program_transform_name might have done. +--- gcc/gcov.c.old 2006-04-02 00:23:43.070342552 +0200 ++++ gcc/gcov.c 2006-04-02 00:24:17.589094904 +0200 +@@ -402,6 +402,8 @@ + fnotice (file, " -u, --unconditional-branches Show unconditional branch counts too\n"); + fnotice (file, "\nFor bug reporting instructions, please see:\n%s.\n", + bug_report_url); ++ fnotice (file, "\nFor Debian GNU/Linux specific bug reporting instructions, please see:\n%s.\n", ++ debian_bug_report_url); + exit (status); + } + +--- gcc/version.h.old 2006-04-02 00:23:43.071342400 +0200 ++++ gcc/version.h 2006-04-02 00:24:17.589094904 +0200 +@@ -2,4 +2,5 @@ + #define GCC_VERSION_H + extern const char version_string[]; + extern const char bug_report_url[]; ++extern const char debian_bug_report_url[]; + #endif /* ! GCC_VERSION_H */ --- gcj-4.2-4.2-20070707.orig/debian/patches/m68k-notice-move.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/m68k-notice-move.dpatch @@ -0,0 +1,52 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: don't set cc_status for fp move without fp register + +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 + +--- + + gcc/config/m68k/m68k.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: gcc-4.1/gcc/config/m68k/m68k.c +=================================================================== +--- gcc-4.1.orig/gcc/config/m68k/m68k.c ++++ gcc-4.1/gcc/config/m68k/m68k.c +@@ -2618,10 +2618,12 @@ notice_update_cc (rtx exp, rtx insn) + || GET_CODE (SET_SRC (exp)) == FLOAT_TRUNCATE + || GET_CODE (SET_SRC (exp)) == FLOAT_EXTEND)) + CC_STATUS_INIT; +- /* A pair of move insns doesn't produce a useful overall cc. */ ++ /* A pair of move insns or a fp move without fp register ++ doesn't produce a useful overall cc. */ + else if (!FP_REG_P (SET_DEST (exp)) + && !FP_REG_P (SET_SRC (exp)) +- && GET_MODE_SIZE (GET_MODE (SET_SRC (exp))) > 4 ++ && (GET_MODE_SIZE (GET_MODE (SET_SRC (exp))) > 4 ++ || GET_MODE_CLASS (GET_MODE (SET_SRC (exp))) == MODE_FLOAT) + && (GET_CODE (SET_SRC (exp)) == REG + || GET_CODE (SET_SRC (exp)) == MEM + || GET_CODE (SET_SRC (exp)) == CONST_DOUBLE)) --- gcj-4.2-4.2-20070707.orig/debian/patches/svn-updates.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/svn-updates.dpatch @@ -0,0 +1,40 @@ +#! /bin/sh -e + +# DP: CVS updates from the 4.2 branch upto 2006xxxx. + +last_updated() +{ + cat > ${dir}LAST_UPDATED <&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 + last_updated + #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 -urN --exclude=.svn gcc_4_2_0_release gcc-4_2-branch +# svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_2_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch + + --- gcj-4.2-4.2-20070707.orig/debian/patches/amd64-biarch.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/amd64-biarch.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Set MULTILIB_OSDIRNAMES to the correct multilib path names for amd64. +# DP: +# DP: + +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 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src/gcc/config/i386/t-linux64~ 2002-11-28 14:47:02.000000000 +0000 ++++ src/gcc/config/i386/t-linux64 2004-06-02 16:07:30.533131301 +0000 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = ../lib ../lib32 + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib --- gcj-4.2-4.2-20070707.orig/debian/patches/gpc-updates.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/gpc-updates.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/p/predef.def~ 2006-02-14 08:14:19.000000000 +0100 ++++ gcc/p/predef.def 2006-02-28 18:24:42.585086192 +0100 +@@ -33,6 +33,10 @@ + The identifiers that are only attributes don't have separate + comments and are documented under `attribute'. */ + ++#if defined(noinline) ++#undef noinline ++#endif ++ + PREDEF_ID (all, GNU_PASCAL) /* extension (`export foo = all') */ + PREDEF_ID (export, E_O_PASCAL) /* module interface export */ + PREDEF_ID (ignorable, GNU_PASCAL) --- gcj-4.2-4.2-20070707.orig/debian/patches/ada-libgnatprj.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/ada-libgnatprj.dpatch @@ -0,0 +1,1449 @@ +#! /bin/sh -e + +# 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 + +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 -p0 < $0 + cd ${dir} && autoconf2.13 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + rm -f ${dir}configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- configure.in~ ++++ configure.in 2007-06-20 21:04:33.968594098 +0200 +@@ -123,7 +123,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 libada libgnatvsn" ++host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber 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 +@@ -153,6 +153,7 @@ + target-libobjc \ + target-libada \ + target-libgnatvsn \ ++ target-libgnatprj \ + target-libgomp" + + # these tools are built using the target libraries, and are intended to +@@ -231,7 +232,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}" ;; +@@ -305,7 +306,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, +--- gcc/ada/config-lang.in~ ++++ gcc/ada/config-lang.in 2007-06-20 21:05:06.994184936 +0200 +@@ -38,8 +38,8 @@ + + outputs=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 will not work until the front end starts emitting GIMPLE trees. + build_by_default=no +--- gnattools/Makefile.in~ ++++ gnattools/Makefile.in 2007-06-20 21:24:49.439989983 +0200 +@@ -37,13 +37,13 @@ + target_noncanonical=@target_noncanonical@ + + CFLAGS=-g -O2 -Wall +-INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc + ADA_CFLAGS=-g -O2 -gnatn + ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts -I@srcdir@/../gcc/ada +-ADA_INCLUDES += -aO../libgnatvsn ++ADA_INCLUDES += -aO../libgnatvsn -aO../libgnatprj + LIB_VERSION=$(strip $(shell grep ' Library_Version :' \ + @srcdir@/../gcc/ada/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/')) +-ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -L../libgnatvsn -lgnatvsn ++ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION) -L../libgnatvsn -lgnatvsn \ ++-L../libgnatprj -lgnatprj + + # We will use the just-built compiler to compile and link everything. + GCC=../gcc/xgcc -B../gcc/ +@@ -68,75 +68,10 @@ + + # 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-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 \ ++GNATLINK_OBJS = gnatlink.o indepsw.o validsw.o ++ ++GNATMAKE_OBJS = fname-sf.o fname-uf.o gnatmake.o make.o makeusg.o makeutl.o \ ++mlib-prj.o osint-m.o usage.o validsw.o \ + $(EXTRA_GNATMAKE_OBJS) + + +@@ -151,7 +86,6 @@ + # accessed using the vpath directive. + + stamp-gnattools-sources: +- $(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))) \ +@@ -170,19 +104,16 @@ + 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. +-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 +@@ -193,13 +124,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 +@@ -209,7 +141,8 @@ + ../gcc/gnatbind -C -o $@ $(ADA_INCLUDES) gnatmake.ali + + # Other tools +-gnatchop gnatkr: ++gnatbind gnatchop gnatclean gnatcmd gnatfind gnatkr gnatls gnatname gnatprep \ ++gnatxref gprmake: + ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ + --GCC="$(GCC)" \ + --GNATBIND=../gcc/gnatbind +@@ -220,17 +153,7 @@ + gnat: gnatcmd + cp -lp $< $@ + +-gnatbind gnatclean gnatcmd gnatfind gnatls gnatname gnatprep gnatxref gprmake: \ +-link.o prefix.o +- ./gnatmake-static -c -b $@ $(ADA_CFLAGS) $(ADA_INCLUDES) \ +- --GCC="$(GCC)" \ +- --GNATBIND=../gcc/gnatbind +- ./gnatlink-static -o $@ $@.ali $^ $(ADA_INCLUDES) $(ADA_LIBS) \ +- ../libiberty/libiberty.a \ +- --GCC="$(GCC) $(ADA_INCLUDES)" +- strip $@ +- +-gnatbl: gnatbl.c link.o prefix.o ++gnatbl: gnatbl.c + $(GCC) -o $@ $< $(CFLAGS) \ + -I../gcc -I@srcdir@/../gcc/config -I@srcdir@/../gcc \ + -I@srcdir@/../include \ +@@ -238,18 +161,12 @@ + $(ADA_LIBS) ../libiberty/libiberty.a + strip $@ + +-# Force compiling sdefault.adb, not .ads, to produce sdefault.o +-sdefault.o: sdefault.adb +- + %.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) +- + # Other + # ----- + +--- libgnatprj/configure~ ++++ libgnatprj/configure 2006-04-19 07:54:53.000000000 +0200 +@@ -0,0 +1,34 @@ ++#!/bin/sh ++ ++# Minimal configure script for libgnatprj. 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=\(.\+\)'`;; ++ *) ++ 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 "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" < ${srcdir}/Makefile.in > Makefile +--- libgnatprj/Makefile.in~ ++++ libgnatprj/Makefile.in 2006-04-19 19:28:33.000000000 +0200 +@@ -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 ++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) ++ ++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 fmap.adb impunit.adb lib-util.adb \ ++mlib.adb mlib-fil.adb mlib-tgt.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 \ ++sdefault.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 ++ ++OBJECTS := $(patsubst %.ads,%.o,$(PRJ_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 ++ ++INCLUDES = -I@srcdir@/../gcc/ada -I@srcdir@/../gcc ++ ++vpath %.c @srcdir@/../gcc/ada ++vpath %.ads @srcdir@/../gcc/ada ++vpath %.adb @srcdir@/../gcc/ada:../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 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)): | obj-shared ++ ++obj-shared/mlib-tgt.o: mlib-tgt-linux.adb ++ -ln -s $< mlib-tgt.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(INCLUDES) \ ++ mlib-tgt.adb -o $@ ++ ++obj-shared/%.o: %.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/%.o: %.ads ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-shared/%.o: %.c ++ $(GCC) -c -fPIC $(CFLAGS) $(INCLUDES) $< -o $@ ++ ++obj-shared/sdefault.o: sdefault.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) -I@srcdir@/../gcc/ada \ ++ $< -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)): | obj-static ++ ++obj-static/mlib-tgt.o: mlib-tgt-linux.adb ++ -ln -s $< mlib-tgt.adb ++ $(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(INCLUDES) \ ++ mlib-tgt.adb -o $@ ++ ++obj-static/%.o: %.adb ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/%.o: %.ads ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@ ++ ++obj-static/%.o: %.c ++ $(GCC) -c $(CFLAGS) $(INCLUDES) $< -o $@ ++ ++obj-static/sdefault.o: sdefault.adb ++ $(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) -I@srcdir@/../gcc/ada \ ++ $< -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 $@ ++ ++# 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)) ++SPECS += $(patsubst %.adb,%.ads,$(BODIES)) ++GENERATED_SOURCES := sdefault.adb ++ ++# Filter out the mlib-tgt.adb from the source directory... ++SOURCES := $(filter-out $(GENERATED_SOURCES) mlib-tgt.adb, \ ++ $(SPECS) $(BODIES) $(PRJ_SEPARATES)) ++# ... and add our symlink to mlib-tgt-linux.adb instead. ++SOURCES_TO_INSTALL := \ ++$(addprefix @srcdir@/../gcc/ada/,$(SOURCES)) \ ++$(addprefix ../gcc/ada/,$(GENERATED_SOURCES)) \ ++mlib-tgt.adb ++ ++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* +--- Makefile.def~ ++++ Makefile.def 2007-06-20 21:09:33.715032842 +0200 +@@ -127,6 +127,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; +@@ -171,6 +178,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. +@@ -330,7 +344,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; }; + + // Host modules specific to gdb. + dependencies = { module=configure-gdb; on=configure-intl; }; +--- Makefile.in~ ++++ Makefile.in 2007-06-20 21:09:45.000000000 +0200 +@@ -641,6 +641,7 @@ + maybe-configure-utils \ + maybe-configure-libada \ + maybe-configure-libgnatvsn \ ++ maybe-configure-libgnatprj \ + maybe-configure-gnattools + .PHONY: configure-target + configure-target: \ +@@ -664,6 +665,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. +@@ -787,6 +789,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 +@@ -811,6 +814,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 +@@ -898,6 +902,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 +@@ -922,6 +927,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 +@@ -1004,6 +1010,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 +@@ -1028,6 +1035,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 +@@ -1110,6 +1118,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 +@@ -1134,6 +1143,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 +@@ -1216,6 +1226,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 +@@ -1240,6 +1251,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 +@@ -1322,6 +1334,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 +@@ -1346,6 +1359,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 +@@ -1428,6 +1442,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 +@@ -1452,6 +1467,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-html +@@ -1534,6 +1550,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 +@@ -1558,6 +1575,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 +@@ -1640,6 +1658,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 +@@ -1664,6 +1683,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 +@@ -1746,6 +1766,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 +@@ -1770,6 +1791,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 +@@ -1852,6 +1874,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 +@@ -1876,6 +1899,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 +@@ -1958,6 +1982,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 +@@ -1982,6 +2007,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 +@@ -2064,6 +2090,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 +@@ -2088,6 +2115,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 + + +@@ -2226,6 +2254,7 @@ + maybe-check-utils \ + maybe-check-libada \ + maybe-check-libgnatvsn \ ++ maybe-check-libgnatprj \ + maybe-check-gnattools + + .PHONY: check-target +@@ -2250,6 +2279,7 @@ + maybe-check-target-rda \ + maybe-check-target-libada \ + maybe-check-target-libgnatvsn \ ++ maybe-check-target-libgnatprj \ + maybe-check-target-libgomp + + do-check: +@@ -2358,6 +2388,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-host +@@ -2431,6 +2462,7 @@ + maybe-install-utils \ + maybe-install-libada \ + maybe-install-libgnatvsn \ ++ maybe-install-libgnatprj \ + maybe-install-gnattools + + .PHONY: install-target +@@ -2455,6 +2487,7 @@ + maybe-install-target-rda \ + maybe-install-target-libada \ + maybe-install-target-libgnatvsn \ ++ maybe-install-target-libgnatprj \ + maybe-install-target-libgomp + + uninstall: +@@ -33754,6 +33787,299 @@ + + + ++.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) $${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}" \ ++ 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-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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif libgnatprj ++ ++ ++ + .PHONY: configure-gnattools maybe-configure-gnattools + maybe-configure-gnattools: + @if gcc-bootstrap +@@ -42025,6 +42351,317 @@ + + + ++.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) $${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}" \ ++ 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-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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ 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}" \ ++ maintainer-clean) \ ++ || exit 1 ++ ++@endif target-libgnatprj ++ ++ ++ ++ ++ + .PHONY: configure-target-libgomp maybe-configure-target-libgomp + maybe-configure-target-libgomp: + @if gcc-bootstrap +@@ -43921,6 +44558,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 + +@@ -43945,6 +44583,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 + +@@ -44182,7 +44821,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-gdb: maybe-configure-intl + configure-gdb: maybe-configure-sim + all-gdb: maybe-all-intl --- gcj-4.2-4.2-20070707.orig/debian/patches/libjava-disable-static-trunk.dpatch +++ gcj-4.2-4.2-20070707/debian/patches/libjava-disable-static-trunk.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: Disable building the static libjava. + +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 -p0 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- Makefile.in~ 2007-03-26 10:44:16.881179540 +0200 ++++ Makefile.in 2007-03-26 10:48:27.564961048 +0200 +@@ -43901,7 +43901,7 @@ + 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 + +@@ -44783,7 +44783,7 @@ + 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 + --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-doc.prerm +++ gcj-4.2-4.2-20070707/debian/gcc-BV-doc.prerm @@ -0,0 +1,7 @@ +#! /bin/sh -e + +install-info --quiet --remove gcc-@BV@ +install-info --quiet --remove gccint-@BV@ +install-info --quiet --remove libgomp-@BV@ + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/runcheck.sh +++ gcj-4.2-4.2-20070707/debian/runcheck.sh @@ -0,0 +1,18 @@ +#! /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#* } +else + echo ${m##*:} +fi --- gcj-4.2-4.2-20070707.orig/debian/README.ssp +++ gcj-4.2-4.2-20070707/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/ --- gcj-4.2-4.2-20070707.orig/debian/porting.texi +++ gcj-4.2-4.2-20070707/debian/porting.texi @@ -0,0 +1,47 @@ +\input texinfo + +@setfilename porting.info +@settitle Porting libstdc++-v3 +@setchapternewpage odd + +@ifinfo +This file explains how to port libstdc++-v3 (the GNU C++ library) to +a new target. + +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. +@end ifinfo + +@c --------------------------------------------------------------------- +@c Titlepage +@c --------------------------------------------------------------------- + +@titlepage +@title Porting libstdc++-v3 +@author Mark Mitchell +@page +@vskip 0pt plus 1filll + +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. +@end titlepage + +@c --------------------------------------------------------------------- +@c Top +@c --------------------------------------------------------------------- + +@node Top +@top Porting libstdc++-v3 + +This document explains how to port libstdc++-v3 (the GNU C++ library) to +a new target. + +The documentation in this file was removed, because it is licencensed +under a non DFSG conforming licencse. + +@c --------------------------------------------------------------------- +@c Epilogue +@c --------------------------------------------------------------------- + +@contents +@bye --- gcj-4.2-4.2-20070707.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcj-4.2-4.2-20070707/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: Apps/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@* --- gcj-4.2-4.2-20070707.orig/debian/copyright +++ gcj-4.2-4.2-20070707/debian/copyright @@ -0,0 +1,667 @@ +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 GNU Pascal compiler in the +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) + +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.2 libgnat-4.2 gnat-4.2-doc +C gcc-4.2 gcc-4.2-doc +C++ g++-4.2 libstdc++6 libstdc++6-4.2-doc +Fortran 95 gfortran-4.2 libgfortran1 gfortran-4.2-doc +Java gcj-4.2 libgcj8 libgcj-doc +Objective C gobjc-4.2 libobjc2 +Objective C++ gobjc++-4.2 +Pascal gpc-4.2 +Treelang treelang-4.2 + +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.2-dbg libstdc++6-4.2-pic +Java libgcj8-src libgcj8-dev libgcj8-dbg + +Additional packages include: + +All languages: +libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) +libffi4-dev, libffi4 Foreign Function Interface library +gcc-4.2-base Base files common to all compilers +gcc-4.2-soft-float Software floating point (ARM only) +gcc-4.2-source The sources with patches + +Ada: +libgnatvsn-dev, libgnatvsn4.2 GNAT version library +libgnatprj-dev, libgnatprj4.2 GNAT Project Manager library + +C: +cpp-4.2, cpp-4.2-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 +libgcj8-awt The Abstract Windowing Toolkit +libgcj8-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 +Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, 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. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License is in `/usr/share/common-licenses/GPL'. + +The libstdc++-v3 library is licensed under the terms of the GNU General +Public License, with this special exception: + + As a special exception, you may use this file as part of a free software + library without restriction. Specifically, if other files instantiate + templates or use macros or inline functions from this file, or you compile + this file and link it with other files to produce an executable, this + file does not by itself cause the resulting executable to be covered by + the GNU General Public License. This exception does not however + invalidate any other reasons why the executable file might be covered by + the GNU General Public License. + +The libgnat-4.2 Ada support library and libgnatvsn are licensed under the +terms of the GNU General Public License, with this special exception: + + As a special exception, if other files instantiate generics from this + unit, or you link this unit with other files to produce an executable, + this unit does not by itself cause the resulting executable to be + covered by the GNU General Public License. This exception does not + however invalidate any other reasons why the executable file might be + covered by the GNU Public License. + +In contrast, libgnatprj is licensed under the terms of the pure GNU +General Public License. + +gpc is copyright Free Software Foundation, and is licensed under the +GNU General Public License which on Debian GNU/Linux systems can be +found as `/usr/share/common-licenses/GPL'. + +The gpc runtime library is licensed under the terms of the GNU General +Public License, with this special exception: + + As a special exception, if you link this file with files compiled + with a GNU compiler to produce an executable, this does not cause + the resulting executable to be covered by the GNU General Public + License. This exception does not however invalidate any other + reasons why the executable file might be covered by the 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. + +gcc/libgcc2.c (source for libgcc) has the following addition: + + 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/unwind-libunwind.c (source for libgcc) has the following addition: + + As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable to + be covered by the GNU General Public License. This exception does + not however invalidate any other reasons why the executable file + might be covered by the GNU General Public License. + +The mudflap library is licensed under the terms of the GNU General +Public License, and has the following addition: + + 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.) + +The ssp library is licensed under the terms of the GNU General +Public License, with a special exception: + + As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable to + be covered by the GNU General Public License. This exception does + not however invalidate any other reasons why the executable file + might be covered by the GNU General Public License. + +The Libgomp library is licensed under the terms of the GNU Lesser +General Public License, with a special exception: + + As a special exception, if you link this library with other files, some + of which are compiled with GCC, to produce an executable, this library + does not by itself cause the resulting executable to be covered by the + GNU General Public License. This exception does not however invalidate + any other reasons why the executable file might be covered by the GNU + General Public License. + +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), appended at the end of this file. + + +GNU Free Documentation License +****************************** + + Version 1.2, November 2002 + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 0. PREAMBLE + + The purpose of this License is to make a manual, textbook, or other + functional and useful document "free" in the sense of freedom: to + assure everyone the effective freedom to copy and redistribute it, + with or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the + author and publisher a way to get credit for their work, while not + being considered responsible for modifications made by others. + + This License is a kind of "copyleft", which means that derivative + works of the document must themselves be free in the same sense. + It complements the GNU General Public License, which is a copyleft + license designed for free software. + + We have designed this License in order to use it for manuals for + free software, because free software needs free documentation: a + free program should come with manuals providing the same freedoms + that the software does. But this License is not limited to + software manuals; it can be used for any textual work, regardless + of subject matter or whether it is published as a printed book. + We recommend this License principally for works whose purpose is + instruction or reference. + + 1. APPLICABILITY AND DEFINITIONS + + This License applies to any manual or other work, in any medium, + that contains a notice placed by the copyright holder saying it + can be distributed under the terms of this License. Such a notice + grants a world-wide, royalty-free license, unlimited in duration, + to use that work under the conditions stated herein. The + "Document", below, refers to any such manual or work. Any member + of the public is a licensee, and is addressed as "you". You + accept the license if you copy, modify or distribute the work in a + way requiring permission under copyright law. + + A "Modified Version" of the Document means any work containing the + Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + + A "Secondary Section" is a named appendix or a front-matter section + of the Document that deals exclusively with the relationship of the + publishers or authors of the Document to the Document's overall + subject (or to related matters) and contains nothing that could + fall directly within that overall subject. (Thus, if the Document + is in part a textbook of mathematics, a Secondary Section may not + explain any mathematics.) The relationship could be a matter of + historical connection with the subject or with related matters, or + of legal, commercial, philosophical, ethical or political position + regarding them. + + The "Invariant Sections" are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in + the notice that says that the Document is released under this + License. If a section does not fit the above definition of + Secondary then it is not allowed to be designated as Invariant. + The Document may contain zero Invariant Sections. If the Document + does not identify any Invariant Sections then there are none. + + The "Cover Texts" are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice + that says that the Document is released under this License. A + Front-Cover Text may be at most 5 words, and a Back-Cover Text may + be at most 25 words. + + A "Transparent" copy of the Document means a machine-readable copy, + represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images + composed of pixels) generic paint programs or (for drawings) some + widely available drawing editor, and that is suitable for input to + text formatters or for automatic translation to a variety of + formats suitable for input to text formatters. A copy made in an + otherwise Transparent file format whose markup, or absence of + markup, has been arranged to thwart or discourage subsequent + modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A + copy that is not "Transparent" is called "Opaque". + + Examples of suitable formats for Transparent copies include plain + ASCII without markup, Texinfo input format, LaTeX input format, + SGML or XML using a publicly available DTD, and + standard-conforming simple HTML, PostScript or PDF designed for + human modification. Examples of transparent image formats include + PNG, XCF and JPG. Opaque formats include proprietary formats that + can be read and edited only by proprietary word processors, SGML or + XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF + produced by some word processors for output purposes only. + + The "Title Page" means, for a printed book, the title page itself, + plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For + works in formats which do not have any title page as such, "Title + Page" means the text near the most prominent appearance of the + work's title, preceding the beginning of the body of the text. + + A section "Entitled XYZ" means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ + stands for a specific section name mentioned below, such as + "Acknowledgements", "Dedications", "Endorsements", or "History".) + To "Preserve the Title" of such a section when you modify the + Document means that it remains a section "Entitled XYZ" according + to this definition. + + The Document may include Warranty Disclaimers next to the notice + which states that this License applies to the Document. These + Warranty Disclaimers are considered to be included by reference in + this License, but only as regards disclaiming warranties: any other + implication that these Warranty Disclaimers may have is void and + has no effect on the meaning of this License. + + 2. VERBATIM COPYING + + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the + copyright notices, and the license notice saying this License + applies to the Document are reproduced in all copies, and that you + add no other conditions whatsoever to those of this License. You + may not use technical measures to obstruct or control the reading + or further copying of the copies you make or distribute. However, + you may accept compensation in exchange for copies. If you + distribute a large enough number of copies you must also follow + the conditions in section 3. + + You may also lend copies, under the same conditions stated above, + and you may publicly display copies. + + 3. COPYING IN QUANTITY + + If you publish printed copies (or copies in media that commonly + have printed covers) of the Document, numbering more than 100, and + the Document's license notice requires Cover Texts, you must + enclose the copies in covers that carry, clearly and legibly, all + these Cover Texts: Front-Cover Texts on the front cover, and + Back-Cover Texts on the back cover. Both covers must also clearly + and legibly identify you as the publisher of these copies. The + front cover must present the full title with all words of the + title equally prominent and visible. You may add other material + on the covers in addition. Copying with changes limited to the + covers, as long as they preserve the title of the Document and + satisfy these conditions, can be treated as verbatim copying in + other respects. + + If the required texts for either cover are too voluminous to fit + legibly, you should put the first ones listed (as many as fit + reasonably) on the actual cover, and continue the rest onto + adjacent pages. + + If you publish or distribute Opaque copies of the Document + numbering more than 100, you must either include a + machine-readable Transparent copy along with each Opaque copy, or + state in or with each Opaque copy a computer-network location from + which the general network-using public has access to download + using public-standard network protocols a complete Transparent + copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you + begin distribution of Opaque copies in quantity, to ensure that + this Transparent copy will remain thus accessible at the stated + location until at least one year after the last time you + distribute an Opaque copy (directly or through your agents or + retailers) of that edition to the public. + + It is requested, but not required, that you contact the authors of + the Document well before redistributing any large number of + copies, to give them a chance to provide you with an updated + version of the Document. + + 4. MODIFICATIONS + + You may copy and distribute a Modified Version of the Document + under the conditions of sections 2 and 3 above, provided that you + release the Modified Version under precisely this License, with + the Modified Version filling the role of the Document, thus + licensing distribution and modification of the Modified Version to + whoever possesses a copy of it. In addition, you must do these + things in the Modified Version: + + A. Use in the Title Page (and on the covers, if any) a title + distinct from that of the Document, and from those of + previous versions (which should, if there were any, be listed + in the History section of the Document). You may use the + same title as a previous version if the original publisher of + that version gives permission. + + B. List on the Title Page, as authors, one or more persons or + entities responsible for authorship of the modifications in + the Modified Version, together with at least five of the + principal authors of the Document (all of its principal + authors, if it has fewer than five), unless they release you + from this requirement. + + C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. + + D. Preserve all the copyright notices of the Document. + + E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + + F. Include, immediately after the copyright notices, a license + notice giving the public permission to use the Modified + Version under the terms of this License, in the form shown in + the Addendum below. + + G. Preserve in that license notice the full lists of Invariant + Sections and required Cover Texts given in the Document's + license notice. + + H. Include an unaltered copy of this License. + + I. Preserve the section Entitled "History", Preserve its Title, + and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on + the Title Page. If there is no section Entitled "History" in + the Document, create one stating the title, year, authors, + and publisher of the Document as given on its Title Page, + then add an item describing the Modified Version as stated in + the previous sentence. + + J. Preserve the network location, if any, given in the Document + for public access to a Transparent copy of the Document, and + likewise the network locations given in the Document for + previous versions it was based on. These may be placed in + the "History" section. You may omit a network location for a + work that was published at least four years before the + Document itself, or if the original publisher of the version + it refers to gives permission. + + K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the + section all the substance and tone of each of the contributor + acknowledgements and/or dedications given therein. + + L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section + titles. + + M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + + N. Do not retitle any existing section to be Entitled + "Endorsements" or to conflict in title with any Invariant + Section. + + O. Preserve any Warranty Disclaimers. + + If the Modified Version includes new front-matter sections or + appendices that qualify as Secondary Sections and contain no + material copied from the Document, you may at your option + designate some or all of these sections as invariant. To do this, + add their titles to the list of Invariant Sections in the Modified + Version's license notice. These titles must be distinct from any + other section titles. + + You may add a section Entitled "Endorsements", provided it contains + nothing but endorsements of your Modified Version by various + parties--for example, statements of peer review or that the text + has been approved by an organization as the authoritative + definition of a standard. + + You may add a passage of up to five words as a Front-Cover Text, + and a passage of up to 25 words as a Back-Cover Text, to the end + of the list of Cover Texts in the Modified Version. Only one + passage of Front-Cover Text and one of Back-Cover Text may be + added by (or through arrangements made by) any one entity. If the + Document already includes a cover text for the same cover, + previously added by you or by arrangement made by the same entity + you are acting on behalf of, you may not add another; but you may + replace the old one, on explicit permission from the previous + publisher that added the old one. + + The author(s) and publisher(s) of the Document do not by this + License give permission to use their names for publicity for or to + assert or imply endorsement of any Modified Version. + + 5. COMBINING DOCUMENTS + + You may combine the Document with other documents released under + this License, under the terms defined in section 4 above for + modified versions, provided that you include in the combination + all of the Invariant Sections of all of the original documents, + unmodified, and list them all as Invariant Sections of your + combined work in its license notice, and that you preserve all + their Warranty Disclaimers. + + The combined work need only contain one copy of this License, and + multiple identical Invariant Sections may be replaced with a single + copy. If there are multiple Invariant Sections with the same name + but different contents, make the title of each such section unique + by adding at the end of it, in parentheses, the name of the + original author or publisher of that section if known, or else a + unique number. Make the same adjustment to the section titles in + the list of Invariant Sections in the license notice of the + combined work. + + In the combination, you must combine any sections Entitled + "History" in the various original documents, forming one section + Entitled "History"; likewise combine any sections Entitled + "Acknowledgements", and any sections Entitled "Dedications". You + must delete all sections Entitled "Endorsements." + + 6. COLLECTIONS OF DOCUMENTS + + You may make a collection consisting of the Document and other + documents released under this License, and replace the individual + copies of this License in the various documents with a single copy + that is included in the collection, provided that you follow the + rules of this License for verbatim copying of each of the + documents in all other respects. + + You may extract a single document from such a collection, and + distribute it individually under this License, provided you insert + a copy of this License into the extracted document, and follow + this License in all other respects regarding verbatim copying of + that document. + + 7. AGGREGATION WITH INDEPENDENT WORKS + + A compilation of the Document or its derivatives with other + separate and independent documents or works, in or on a volume of + a storage or distribution medium, is called an "aggregate" if the + copyright resulting from the compilation is not used to limit the + legal rights of the compilation's users beyond what the individual + works permit. When the Document is included an aggregate, this + License does not apply to the other works in the aggregate which + are not themselves derivative works of the Document. + + If the Cover Text requirement of section 3 is applicable to these + copies of the Document, then if the Document is less than one half + of the entire aggregate, the Document's Cover Texts may be placed + on covers that bracket the Document within the aggregate, or the + electronic equivalent of covers if the Document is in electronic + form. Otherwise they must appear on printed covers that bracket + the whole aggregate. + + 8. TRANSLATION + + Translation is considered a kind of modification, so you may + distribute translations of the Document under the terms of section + 4. Replacing Invariant Sections with translations requires special + permission from their copyright holders, but you may include + translations of some or all Invariant Sections in addition to the + original versions of these Invariant Sections. You may include a + translation of this License, and all the license notices in the + Document, and any Warrany Disclaimers, provided that you also + include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of + this License or a notice or disclaimer, the original version will + prevail. + + If a section in the Document is Entitled "Acknowledgements", + "Dedications", or "History", the requirement (section 4) to + Preserve its Title (section 1) will typically require changing the + actual title. + + 9. TERMINATION + + You may not copy, modify, sublicense, or distribute the Document + except as expressly provided for under this License. Any other + attempt to copy, modify, sublicense or distribute the Document is + void, and will automatically terminate your rights under this + License. However, parties who have received copies, or rights, + from you under this License will not have their licenses + terminated so long as such parties remain in full compliance. + + 10. FUTURE REVISIONS OF THIS LICENSE + + The Free Software Foundation may publish new, revised versions of + the GNU Free Documentation License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. See + `http://www.gnu.org/copyleft/'. + + Each version of the License is given a distinguishing version + number. If the Document specifies that a particular numbered + version of this License "or any later version" applies to it, you + have the option of following the terms and conditions either of + that specified version or of any later version that has been + published (not as a draft) by the Free Software Foundation. If + the Document does not specify a version number of this License, + you may choose any version ever published (not as a draft) by the + Free Software Foundation. + +ADDENDUM: How to use this License for your documents +==================================================== + + To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and license +notices just after the title page: + + Copyright (C) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled ``GNU + Free Documentation License''. + + If you have Invariant Sections, Front-Cover Texts and Back-Cover +Texts, replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with + the Front-Cover Texts being LIST, and with the Back-Cover Texts + being LIST. + + If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + + If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, to +permit their use in free software. --- gcj-4.2-4.2-20070707.orig/debian/fastjar.prerm +++ gcj-4.2-4.2-20070707/debian/fastjar.prerm @@ -0,0 +1,16 @@ +#! /bin/sh -e + +if [ -f /usr/share/info/fastjar.info.gz ]; then + install-info --quiet --remove fastjar +else + # GFDL invariant free + true +fi + +if [ "$1" != "upgrade" ]; then + update-alternatives --quiet --remove jar /usr/bin/fastjar +fi + +#DEBHELPER# + +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/libgcj-common.preinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/dummy-man.1 +++ gcj-4.2-4.2-20070707/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. --- gcj-4.2-4.2-20070707.orig/debian/gfortran-BV-doc.postinst +++ gcj-4.2-4.2-20070707/debian/gfortran-BV-doc.postinst @@ -0,0 +1,10 @@ +#! /bin/sh -e + +case "$1" in + configure) + install-info --quiet --section "Development" "Development" \ + --description="The GNU Fortran compiler (Version @BV@)." \ + /usr/share/info/gfortran-@BV@.info +esac + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcj-4.2-4.2-20070707/debian/gcc-BV-doc.doc-base.gcc @@ -0,0 +1,14 @@ +Document: gcc-@BV@ +Title: The GNU C and C++ compiler +Author: Various +Abstract: This manual documents how to run, install and port the GNU compiler, + as well as its new features and incompatibilities, and how to report bugs. +Section: Apps/Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/gcc.html +Files: /usr/share/doc/gcc-@BV@-base/gcc.html + +Format: info +Index: /usr/share/info/gcc-@BV@.info.gz +Files: /usr/share/info/gcc-@BV@* --- gcj-4.2-4.2-20070707.orig/debian/gcjwebplugin-BV.postinst +++ gcj-4.2-4.2-20070707/debian/gcjwebplugin-BV.postinst @@ -0,0 +1,30 @@ +#!/bin/sh -e + +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +priority=$(echo @BV@ | sed 's/\.//g') +PLUGINPTH=/usr/lib/gcj-@BV@/libgcjwebplugin.so + +update-alternatives --quiet --install \ + /usr/lib/mozilla/plugins/libjavaplugin.so \ + mozilla-javaplugin.so \ + $PLUGINPTH \ + $priority + +# /usr/lib/mozilla-firefox/plugins is still searched +# by the firefox installation in /usr/lib/firefox +update-alternatives --quiet --install \ + /usr/lib/mozilla-firefox/plugins/libjavaplugin.so \ + firefox-javaplugin.so \ + $PLUGINPTH \ + $priority + +update-alternatives --quiet --install \ + /usr/lib/mozilla-snapshot/plugins/libjavaplugin.so \ + mozilla-snapshot-javaplugin.so \ + $PLUGINPTH \ + $priority + +#DEBHELPER# + +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/gnat.1 +++ gcj-4.2-4.2-20070707/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. --- gcj-4.2-4.2-20070707.orig/debian/gpc-PV-BV-doc.prerm +++ gcj-4.2-4.2-20070707/debian/gpc-PV-BV-doc.prerm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +if [ -f /usr/share/info/gpc-@PV@-@BV@.info.gz ]; then + install-info --quiet --remove gpc-@PV@-@BV@ +else + # GFDL invariant free + true +fi + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/gpc-PV-BV-doc.postinst +++ gcj-4.2-4.2-20070707/debian/gpc-PV-BV-doc.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +if [ -f /usr/share/info/gpc-@PV@-@BV@.info.gz ]; then + install-info --quiet --section "Development" "Development" \ + --description="The GNU Pascal compiler." \ + /usr/share/info/gpc-@PV@-@BV@.info +else + # GFDL invariant free + true +fi + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/README.treelang +++ gcj-4.2-4.2-20070707/debian/README.treelang @@ -0,0 +1,11 @@ +Treelang documentation +====================== + +The treelang compiler is called via the `gcc-3.4' command (or via +`gcc', when `gcc-3.4' is the default gcc compiler). + +Documentation for treelang is provided in info format only. You +can read docs in the info format with emacs, xemacs or the info +command: + + info treelang-3.4 --- gcj-4.2-4.2-20070707.orig/debian/rules2 +++ gcj-4.2-4.2-20070707/debian/rules2 @@ -0,0 +1,1620 @@ +#! /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/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) \ + && PATH=$(PWD)/bin:$$PATH \ + CC="$(CC)" \ + $(SET_SHELL) \ + LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \ + ../src/configure $(CONFARGS) + + mkdir -p $(builddir)/gcc + ( \ + echo '#define __$(subst -,_,$(DEB_TARGET_GNU_TYPE))__'; \ + echo ''; \ + echo ' { "", "$(DEB_TARGET_GNU_TYPE)"},'; \ + cat debian/multiarch.inc; \ + ) > $(builddir)/gcc/multiarch.inc + cp -p $(builddir)/gcc/multiarch.inc $(srcdir)/gcc/ + + touch $(configure_stamp) + +build: $(build_dependencies) + +$(build_dummy_stamp): + touch $(build_dummy_stamp) + +$(build_locale_stamp): +ifeq ($(locale_data),generate) + : # build locales needed by libstdc++ testsuite + rm -rf locales + mkdir locales + chmod +x debian/locale-gen + 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. +ifndef DEB_CROSS +ifndef REVERSE_CROSS + 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 + ( \ + echo '#!/bin/sh'; \ + echo 'exec gij-4.1 -cp /usr/share/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "$$@"'; \ + ) > bin/ecj1 + chmod +x bin/ecj1 + ifeq ($(with_java_maintainer_mode),yes) + : # 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.1 ]; then \ + ln -sf /usr/bin/gjavah-4.1 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.1 --encoding ISO-8859-1 -C $$i -I.; done; \ + cd ../..; \ + for i in `find gnu -name \*.java`; do gcj-4.1 -C $$i -I. -Iexternal/asm/; done; \ + gcj-4.1 -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; \ + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(NJOBS) $(bootstrap_target) \ + CC="$(CC)" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + $(STAGE1_CFLAGS) \ + ; \ + echo $$? > status; \ + ) 2>&1 | tee bootstrap-protocol + s=`cat status`; rm -f status; test $$s -eq 0 +else + : # build cross compiler for $(TARGET_ALIAS) + ( \ + set +e; \ + PATH=$(PWD)/bin:$$PATH \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir) $(NJOBS) \ + CC="$(CC)" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + ; \ + 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 + +$(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) && \ + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --disable-shared \ + --disable-nls \ + --disable-threads \ + --disable-libffi \ + --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 \ + --host=hppa-linux-gnu \ + --build=hppa-linux-gnu \ + --target=hppa64-linux-gnu + + mkdir -p $(builddir_hppa64)/gcc + ( \ + echo '#define __$(subst -,_,hppa64-linux-gnu)__'; \ + echo ''; \ + echo ' { "", "hppa64-linux-gnu"},'; \ + ) > $(builddir_hppa64)/gcc/multiarch.inc + cp -p $(builddir_hppa64)/gcc/multiarch.inc $(srcdir)/gcc/ + + touch $(configure_hppa64_stamp) + +$(build_hppa64_stamp): $(configure_hppa64_stamp) + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + $(MAKE) -C $(builddir_hppa64) $(NJOBS) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(LDFLAGS)" + touch $(build_hppa64_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) && \ + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + ../src/configure \ + --enable-languages=c \ + --prefix=/$(PF) \ + --libexecdir=/$(libexecdir) \ + --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) + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir_ia6432) $(NJOBS) \ + CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(LDFLAGS)" + touch $(build_ia6432_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_treelang),yes) + MANUALS += $(srcdir)/gcc/treelang/treelang.texi +endif +ifeq ($(with_ada),yes) + MANUALS += \ + $(builddir)/gcc/doc/gnat_ugn_unw.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_libgomp),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 := arm armeb 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 + +check: $(check_stamp) #$(check_inst_stamp) +$(check_stamp): $(build_stamp) $(build_locale_stamp) + rm -f test-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.pid \ + -m '\ntestsuite still running ...\n' \ + test-protocol \ + $(builddir)/gcc/testsuite/{gcc,g++,g77,objc,obj-c++}.log \ + $(builddir)/gcc/testsuite/ada/acats/acats.log \ + $(builddir)/gcc/p/test/test_log \ + $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-v3.log \ + $(buildlibdir)/libjava/testsuite/libjava.log \ + $(buildlibdir)/libmudflap/testsuite/libmudflap.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 + +ifeq ($(with_ada),yes) +ifneq ($(PKGSOURCE),gcc-snapshot) +# seems to be necessary for all archs +# see above, hppa & gnatlib-shared-dual target +# ifeq ($(with_libgnat_shared_dual),yes) + if [ ! -f $(builddir)/gcc/ada/rts/libgnat-$(GNAT_SONAME).so ]; then \ + ln -sf libgnat-$(GNAT_SONAME).so.1 \ + $(builddir)/gcc/ada/rts/libgnat-$(GNAT_SONAME).so; \ + fi + if [ ! -f $(builddir)/gcc/ada/rts/libgnarl-$(GNAT_SONAME).so ]; then \ + ln -sf libgnarl-$(GNAT_SONAME).so.1 \ + $(builddir)/gcc/ada/rts/libgnarl-$(GNAT_SONAME).so; \ + fi +# endif +endif +endif + + echo "Running testsuite ..." + -$(ULIMIT_M); \ + $(SET_SHELL) \ + $(SET_LOCPATH) \ + PATH=$(PWD)/bin:$$PATH \ + EXTRA_TEST_PFLAGS=-g0 \ + DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ + $(MAKE) -C $(checkdir) -k $(NJOBS) \ + check $(RUNTESTFLAGS) 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 + + -chmod 755 $(srcdir)/contrib/test_summary + 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 binutils `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + >> 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++-3.3 binutils `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ + >> 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{ffi,g2c,gcc,gcj,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} + fs=`echo debian/*-BV* debian/*GCJ* debian/*CXX* debian/*LC*|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/FFI/$(FFI_SONAME)/'); \ + 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 + rm -f debian/lib*gcj-bc.shlibs + rm -rf bin locales + rm -rf check-inst + 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) + gpc_pkg_ver := -$(GPC_BASE_VERSION)$(pkg_ver) +endif + +ifndef DEB_CROSS + 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) + +common_substvars = \ + $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) + +# --------------------------------------------------------------------------- + +ifeq ($(PKGSOURCE),gcc-snapshot) + include debian/rules.d/binary-snapshot.mk +else + +ifndef DEB_CROSS +# ---------------------------------------- +# native target + +ifeq ($(with_gccbase),yes) + include debian/rules.d/binary-base.mk +endif +ifeq ($(with_libgcc),yes) + include debian/rules.d/binary-libgcc.mk +endif + +ifeq ($(with_gccmath),yes) + include debian/rules.d/binary-libgccmath.mk +endif + +ifeq ($(with_libgomp),yes) + include debian/rules.d/binary-libgomp.mk +endif + +ifeq ($(with_source),yes) + include debian/rules.d/binary-source.mk +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_libmudflap),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 +include debian/rules.d/binary-java.mk + +ifeq ($(with_libffi),yes) + include debian/rules.d/binary-libffi.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_treelang),yes) + include debian/rules.d/binary-treelang.mk +endif + +ifeq ($(with_pascal),yes) + include debian/rules.d/binary-pascal.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 + +else +# ---------------------------------------- +# cross target + +ifeq ($(with_gccxbase),yes) + include debian/rules.d/binary-base.mk +endif + +ifeq ($(with_libgcc),yes) + include debian/rules.d/binary-libgcc-cross.mk +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-cpp-cross.mk +endif + +ifeq ($(with_objcxx),yes) + include debian/rules.d/binary-objcxx-cross.mk +endif + +ifeq ($(with_objc),yes) + include debian/rules.d/binary-objc-cross.mk +endif +ifeq ($(with_libobjc),yes) + include debian/rules.d/binary-libobjc-cross.mk +endif + +ifeq ($(with_cxxdev),yes) + include debian/rules.d/binary-cxx-cross.mk +endif +ifeq ($(with_cxx),yes) + include debian/rules.d/binary-libstdcxx-cross.mk +endif + +ifeq ($(with_libnof),yes) + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + include debian/rules.d/binary-nof-cross.mk + endif +endif + +ifeq ($(with_cdev),yes) + include debian/rules.d/binary-gcc-cross.mk +endif + +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 + PATH=$(PWD)/bin:$$PATH \ + $(MAKE) -C $(builddir_hppa64) \ + CC="$(CC)" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + 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 + rm -rf $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed +endif + + : # Install everything + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + 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 + rm -rf $(d)/$(gcc_lib_dir)/include-fixed + +ifeq ($(with_java),yes) + ifneq (,$(filter yes, $(biarch) $(biarch32))) + : # workaround to install the correct binaries for multilib builds + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(MAKE) -C $(buildlibdir)/libjava \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + DESTDIR=$(PWD)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install-binPROGRAMS install-binSCRIPTS \ + install-dbexecDATA install-dbexecLTLIBRARIES \ + install-libexecsubPROGRAMS \ + install-exec-hook \ + install-data-local install-jarDATA + endif +endif + + -ls -l $(d)/usr + if [ -d $(d)/usr/man/man1 ]; then \ + mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ + fi + + chmod 755 debian/dh_* + touch $(install_snap_stamp) + +$(install_stamp): $(build_stamp) + dh_testdir + dh_testroot + dh_clean -k -N$(p_hppa64) + if [ -f $(binary_stamp)-hppa64 ]; then \ + mv $(binary_stamp)-hppa64 saved-stamp; \ + rm -f $(binary_stamp)*; \ + mv saved-stamp $(binary_stamp)-hppa64; \ + else \ + rm -f $(binary_stamp)*; \ + fi + + : # Install directories + rm -rf $(d) + mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/lib/debug +ifeq ($(biarch32),yes) + mkdir -p $(d)/$(PF)/lib32/debug +endif +ifeq ($(biarch),yes) + mkdir -p $(d)/$(PF)/lib64/debug +endif + +ifeq ($(with_java)-$(biarch32)-$(DEB_TARGET_ARCH),yes-yes-amd64) + rm -rf debian/tmp32 + $(MAKE) -C $(buildlibdir)/32/libjava \ + install DESTDIR=$(PWD)/debian/tmp32 + ifeq ($(with_common_gcclibdir),yes) + mv debian/tmp32/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lib_dir)) \ + debian/tmp32/$(gcc_lib_dir) + ifneq ($(gcc_lib_dir),$(gcc_lexec_dir)) + mv debian/tmp32/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lexec_dir)) \ + debian/tmp32/$(gcc_lexec_dir) + endif + endif +endif + +ifeq ($(DEB_TARGET_GNU_CPU),x86_64) + : # 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 + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(MAKE) -C $(builddir) \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + DESTDIR=$(PWD)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install + +ifeq ($(with_java),yes) + ifneq (,$(filter yes, $(biarch) $(biarch32))) + : # workaround to install the correct binaries for multilib builds + PATH=$(PWD)/bin:$$PATH \ + $(SET_SHELL) \ + $(MAKE) -C $(buildlibdir)/libjava \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + DESTDIR=$(PWD)/$(d) \ + infodir=/$(PF)/share/info \ + mandir=/$(PF)/share/man \ + install-binPROGRAMS install-binSCRIPTS \ + install-dbexecDATA install-dbexecLTLIBRARIES \ + install-libexecsubPROGRAMS \ + install-exec-hook \ + install-data-local install-jarDATA + endif +endif + +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 +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 + +ifneq (,$(findstring emul/ia32-linux, $(lib32))) + mkdir -p $(d)/$(lib32) + mv $(d)/$(PF)/lib32/* $(d)/$(lib32)/. + rmdir $(d)/$(PF)/lib32 +endif + +ifeq ($(biarch),yes) + ifeq ($(DEB_TARGET_ARCH),i386) + ifneq (,$(filter c++, $(enabled_languages))) + : # 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 + endif +endif + + : # fix '*.la' and '*.lai' files + for i in $$(find $(d) -name '*.la' -o -name '*.lai'); do \ + libdir=$$(sed -n "s,^libdir='\(.*\)'.*,\1,p" $$i); \ + [ -z "$$libdir" ] && continue; \ + libdir=$$(realpath -s $$libdir); \ + sed -e "s,^libdir='\(.*\)'.*,libdir='$$libdir'," \ + -e 's, -L$(builddir)[^ ]*,,g' \ + $$i > $$i.new; \ + if diff -u $$i $$i.new; then \ + rm -f $$i.new; \ + else \ + echo "$$i: path normalized"; \ + touch -r $$i $$i.new; \ + mv -f $$i.new $$i; \ + fi; \ + done + +ifeq ($(DEB_TARGET_ARCH),amd64) + : # fix '*.la' and '*.lai' files (don't resolve the /lib64 symlink) + for i in $$(find $(d) -name '*.la' -o -name '*.lai'); do \ + sed -e 's,/usr/lib64,/usr/lib,g' -e 's,/lib/\.\./lib64,/lib,g' \ + $$i > $$i.new; \ + if diff -u $$i $$i.new; then \ + rm -f $$i.new; \ + else \ + echo "$$i: references to lib64 fixed"; \ + touch -r $$i $$i.new; \ + mv -f $$i.new $$i; \ + fi; \ + done +endif + +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 + cp -p debian/gccbug.1 $(d)/$(PF)/share/man/man1/$(TP)gccbug$(pkg_ver) + + 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-XXXX) + for i in binobj gpc gpc-run gpidump; do \ + I=`echo $$i | tr a-z A-Z`; \ + sed -e "s/@NAME@/$$I$(gpc_pkg_ver)/g" \ + -e "s/@name@/$$i$(gpc_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$(gpc_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$(gpc_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$(gpc_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$(gpc_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 + +#ifneq ($(with_libgcc),yes) +# : # needed for dependency of other shared libs +# echo 'libgcc_s $(GCC_SONAME) libgcc$(GCC_SONAME) (>= $(DEB_LIBGCC_SOVERSION))' \ +# > debian/shlibs.local +#endif + +ifdef DEB_CROSS + 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 +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) + + PATH=$(PWD)/bin:$$PATH \ + $(MAKE) -C $(builddir_hppa64) \ + CC="$(CC)" \ + CFLAGS="$(CFLAGS)" \ + BOOT_CFLAGS="$(BOOT_CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" \ + 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)/lib/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 +endif + + touch $(install_hppa64_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 --- gcj-4.2-4.2-20070707.orig/debian/README.libstdc++-baseline.in +++ gcj-4.2-4.2-20070707/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcj-4.2-4.2-20070707.orig/debian/gpc-PV-BV-doc.doc-base.gpcs +++ gcj-4.2-4.2-20070707/debian/gpc-PV-BV-doc.doc-base.gpcs @@ -0,0 +1,23 @@ +Document: gpcs-@PV@-@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: Apps/Programming + +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-@PV@-@BV@.info.gz +Files: /usr/share/info/gpcs-@PV@-@BV@* --- gcj-4.2-4.2-20070707.orig/debian/rules +++ gcj-4.2-4.2-20070707/debian/rules @@ -0,0 +1,86 @@ +#! /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 $@ + +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 $@ + +check: $(build_stamp) + $(MAKE) -f debian/rules2 $@ + +clean: + rm -rf $(stampdir) +# remove temporary dirs used for unpacking + rm -rf $(gcc_srcdir) $(gpc_srcdir) p + -$(MAKE) -f debian/rules2 $@ + rm -rf $(srcdir) $(builddir)* debian/tmp* html + rm -f bootstrap-* first-move-stamp + rm -f debian/*.tmp + find debian -name '.#*' | xargs -r rm -f + find debian/patches -name '*.dpatch' -type f ! -perm 644 | xargs -r chmod 644 + 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 $@ + +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 --- gcj-4.2-4.2-20070707.orig/debian/gcc-cross.postinst +++ gcj-4.2-4.2-20070707/debian/gcc-cross.postinst @@ -0,0 +1,7 @@ +#!/bin/sh + +update-alternatives --quiet \ + --install /usr/bin/cross-gcc cross-gcc /usr/bin/cross-gcc-ver 41 \ + --slave /usr/share/man/man1/cross-gcc.1.gz cross-gcc.1.gz /usr/share/man/man1/cross-gcc-ver.1.gz + +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/rules.source +++ gcj-4.2-4.2-20070707/debian/rules.source @@ -0,0 +1,21 @@ +__SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +patchdir = $(__SOURCE_DIR)/patches + +include $(__SOURCE_DIR)/rules.defs +include $(__SOURCE_DIR)/rules.patch +include $(__SOURCE_DIR)/rules.unpack + +patch-source: $(patch_stamp) + ( \ + echo '#define __$(subst -,_,$(DEB_TARGET_GNU_TYPE))__'; \ + echo ''; \ + echo ' { "", "$(DEB_TARGET_GNU_TYPE)"},'; \ + cat $(__SOURCE_DIR)/multiarch.inc; \ + ) > $(srcdir)/gcc/multiarch.inc + +clean-source: + rm -rf $(stampdir) + rm -rf $(gcc_srcdir) $(gpc_srcdir) p + rm -rf bin + rm -rf $(srcdir) + --- gcj-4.2-4.2-20070707.orig/debian/control +++ gcj-4.2-4.2-20070707/debian/control @@ -0,0 +1,192 @@ +Source: gcj-4.2 +Section: devel +Priority: standard +Maintainer: Ubuntu Core developers +XSBC-Original-Maintainer: Debian GCC Maintainers +Uploaders: Matthias Klose +Standards-Version: 3.7.2 +Build-Depends: dpkg-dev (>= 1.13.9), gcc-4.1-multilib [amd64 i386 powerpc ppc64 s390 sparc kfreebsd-amd64] | gcc-4.2-multilib [amd64 i386 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 knetbsd-gnu] | libc12-dev (>= 2.5) [netbsd-elf-gnu] | 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], libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], m4, autoconf, autoconf2.13, automake1.9, libtool, autogen, gawk, expect-tcl8.3 [!m68k !hurd-i386], bzip2, binutils (>= 2.17cvs20070426) | binutils-multiarch (>= 2.17cvs20070426), binutils-hppa64 (>= 2.17cvs20070426) [hppa], debhelper (>= 5.0), gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), libmpfr-dev (>= 2.2.1) [!avr], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [!hurd-i386], sharutils, libz-dev, fastjar [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libmagic-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], ecj (>= 3.2.1-6) [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], zip [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libasound2-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386 !hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], lib32asound2-dev [amd64 ppc64], lib64asound2-dev [i386 powerpc sparc s390], libxtst-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libxt-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libgtk2.0-dev (>= 2.4.4-2) [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libart-2.0-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libcairo2-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], libgconf2-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], firefox-dev [!kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386], gcc-4.2-source (>= 4.2-20070707), gcc-4.2-source (<< 4.2.0), realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81) +Build-Depends-Indep: gjdoc + +Package: gcj-4.2-base +Architecture: any +Section: libs +Priority: optional +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). + +Package: gcj-4.2 +Architecture: any +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), ${dep:gcj}, ${dep:libcdev}, gij-4.2 (= ${gcj:Version}), libgcj8-dev (= ${gcj:Version}), libgcj8-jar (>= ${gcj:SoftVersion}), ecj (>= 3.2.1-6), java-common, ${shlibs:Depends} +Recommends: fastjar, ecj-gcj +Suggests: java-gcj-compat-dev +Provides: java-compiler +Conflicts: cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1), java-gcj-compat-dev (<< 1.0.56-2) +Description: The GNU compiler 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. + +Package: gij-4.2 +Priority: optional +Architecture: any +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj8-0 (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends} +Recommends: libgcj8-0-awt (= ${gcj:Version}) +Suggests: fastjar, gcj-4.2 (= ${gcj:Version}), java-gcj-compat +Replaces: libgcj8 +Provides: java-virtual-machine, java2-runtime, java1-runtime, java-runtime +Description: The GNU Java bytecode interpreter + GIJ is 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. + +Package: libgcj8-0 +Section: libs +Architecture: any +Priority: optional +Depends: gcj-4.2-base (>= ${gcj:Version}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends} +Recommends: libgcj8-jar (>= ${gcj:SoftVersion}), libgcj8-0-awt (= ${gcj:Version}) +Suggests: libgcj8-dbg +Conflicts: libgcj8 +Replaces: libgcj8, libgcj8-awt (<< 4.2-20060817) +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 + libgcj8-dbg and binutils are required. + +Package: libgcj8-jar +Section: libs +Architecture: all +Priority: optional +Depends: gcj-4.2-base (>= ${gcj:SoftVersion}), libgcj8-0 (>= ${gcj:SoftVersion}) +Conflicts: libgcj7-common +Replaces: libgcj7-common +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. + +Package: libgcj8-0-awt +Section: libs +Architecture: any +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj8-0 (= ${gcj:Version}), ${shlibs:Depends} +Suggests: ${pkg:gcjqt} +Replaces: libgcj8-awt-gtk (<< 4.2-20070210) +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). + +Package: gappletviewer-4.2 +Section: utils +Architecture: any +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), gij-4.2 (= ${gcj:Version}), libgcj8-0-awt (= ${gcj:Version}), ${shlibs:Depends} +Description: Standalone application to execute Java (tm) applets + gappletviewer is a standalone application to execute Java (tm) applets. + +Package: gcjwebplugin-4.2 +Section: web +Architecture: any +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), gappletviewer-4.2 (= ${gcj:Version}), ${shlibs:Depends}, firefox | mozilla-browser | epiphany-browser | galeon | konqueror +Description: Web browser plugin to execute Java (tm) applets + gcjwebplugin is a little web browser plugin to execute Java (tm) applets. + It is targeted for Mozilla and compatible browsers that support the NPAPI. + +Package: lib64gcj8-0 +Section: libs +Architecture: i386 powerpc sparc s390 +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj-common, ${shlibs:Depends} +Description: Java runtime library for use with gcj (64bit) + 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. + +Package: lib32gcj8-0 +Section: libs +Architecture: amd64 ppc64 kfreebsd-amd64 +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj-common, lib32stdc++6, lib32z1 +Suggests: lib32gcj8-dbg +Description: Java runtime library for use with gcj (32bit) + 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 + libgcj8-dbg and binutils are required. + +Package: libgcj8-dev +Section: libdevel +Architecture: any +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), gcj-4.2 (= ${gcj:Version}), libgcj8-jar (>= ${gcj:SoftVersion}), libgcj8-0-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends} +Suggests: libgcj-doc +Description: Java development headers and static library for use with gcj + These are the development headers and static libraries 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: lib32gcj8-dev +Section: libdevel +Architecture: amd64 ppc64 kfreebsd-amd64 +Priority: optional +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj8-dev (= ${gcj:Version}), lib32gcj-bc, lib32gcj8-0 (= ${gcj:Version}), lib32z1-dev, ${shlibs:Depends} +Description: Java development and static library for use with gcj (32bit) + These are the development headers and static libraries 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: libgcj8-dbg +Section: libdevel +Architecture: any +Priority: extra +Depends: gcj-4.2-base (= ${gcj:Version}), libgcj8-0 (= ${gcj:Version}) +Recommends: binutils +Description: Debugging symbols for libraries provided in libgcj8-dev + The package provides debugging symbols for the libraries provided + in libgcj8-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: lib32gcj8-dbg +Section: libdevel +Architecture: amd64 ppc64 kfreebsd-amd64 +Priority: extra +Depends: gcj-4.2-base (= ${gcj:Version}), lib32gcj8-0 (= ${gcj:Version}) +Recommends: binutils +Description: Debugging symbols for libraries provided in lib32gcj8-dev + The package provides debugging symbols for the libraries provided + in lib32gcj8-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: libgcj8-src +Section: libdevel +Architecture: all +Priority: optional +Depends: gcj-4.2-base (>= ${gcj:SoftVersion}), gcj-4.2 (>= ${gcj:SoftVersion}), libgcj8-jar (= ${gcj:Version}) +Description: libgcj java sources for use in eclipse + These are the java source files packaged as a zip file for use in development + environments like eclipse. + +Package: libgcj-doc +Section: doc +Architecture: all +Priority: optional +Depends: gcj-4.2-base (>= ${gcj:SoftVersion}) +Enhances: libgcj8-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. + --- gcj-4.2-4.2-20070707.orig/debian/dummy.texi +++ gcj-4.2-4.2-20070707/debian/dummy.texi @@ -0,0 +1 @@ +@c This file is empty because the original one has a non DFSG free license (GFDL) --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-cpp-cross.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-cpp-cross.mk @@ -0,0 +1,40 @@ +arch_binaries := $(arch_binaries) cpp + +dirs_cpp = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) + +files_cpp = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver) \ + $(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver).1 \ + $(gcc_lexec_dir)/cc1 + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cpp) + dh_installdirs -p$(p_cpp) $(dirs_cpp) + DH_COMPAT=2 dh_movefiles -p$(p_cpp) $(files_cpp) + + debian/dh_doclink -p$(p_cpp) $(p_base) + debian/dh_rmemptydirs -p$(p_cpp) + + dh_strip -p$(p_cpp) + dh_compress -p$(p_cpp) + dh_fixperms -p$(p_cpp) + dh_shlibdeps -p$(p_cpp) + dh_gencontrol -p$(p_cpp) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_cpp) + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g;s/gcc/cpp/g' < debian/gcc-cross.postinst > debian/$(p_cpp)/DEBIAN/postinst + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g;s/gcc/cpp/g' < debian/gcc-cross.prerm > debian/$(p_cpp)/DEBIAN/prerm + chmod 755 debian/$(p_cpp)/DEBIAN/{postinst,prerm} + dh_md5sums -p$(p_cpp) + dh_builddeb -p$(p_cpp) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-libstdcxx-cross.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-libstdcxx-cross.mk @@ -0,0 +1,327 @@ +ifeq ($(with_libcxx),yes) + arch_binaries := $(arch_binaries) libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + arch_binaries := $(arch_binaries) lib64stdcxx +endif +ifeq ($(biarch32),yes) + arch_binaries := $(arch_binaries) lib32stdcxx +endif + +ifeq ($(with_cxxdev),yes) + arch_binaries := $(arch_binaries) libstdcxx-dev +endif + +libstdc_ext = -$(BASE_VERSION) + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = libstdc++$(CXX_SONAME)$(libstdc_ext)-dev$(cross_lib_arch) +p_pic = libstdc++$(CXX_SONAME)$(libstdc_ext)-pic$(cross_lib_arch) +p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) +p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) + +d_lib = debian/$(p_lib) +d_lib64 = debian/$(p_lib64) +d_lib32 = debian/$(p_lib32) +d_dev = debian/$(p_dev) +d_pic = debian/$(p_pic) +d_dbg = debian/$(p_dbg) +d_dbg64 = debian/$(p_dbg64) +d_dbg32 = debian/$(p_dbg32) + +dirs_lib = \ + $(docdir) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib + +dirs_lib64 = \ + $(docdir) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64 + +files_lib = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libstdc++.so.* + +files_lib64 = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/libstdc++.so.* + +dirs_dev = \ + $(docdir) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib \ + $(gcc_lib_dir)/include \ + $(cxx_inc_dir) + +files_dev = \ + $(cxx_inc_dir)/ \ + $(gcc_lib_dir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/libsupc++.a +# Not yet... +# $(PF)/$(libdir)/lib{supc,stdc}++.la + +dirs_dbg = \ + $(docdir) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/debug/libstdc++.* + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +ifeq ($(biarch),yes) + dirs_dev += $(gcc_lib_dir)/$(biarchsubdir) + files_dev += \ + $(gcc_lib_dir)/$(biarchsubdir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/$(biarchsubdir)/libsupc++.a + dirs_pic += $(gcc_lib_dir) + files_pic += $(gcc_lib_dir)/$(biarchsubdir)/libstdc++_pic.a +endif +ifeq ($(biarch32),yes) + dirs_dev += $(gcc_lib_dir)/$(biarchsubdir)/ + files_dev += \ + $(gcc_lib_dir)/$(biarchsubdir)/libstdc++.{a,so} \ + $(gcc_lib_dir)/$(biarchsubdir)/libsupc++.a + dirs_pic += $(gcc_lib_dir) + files_pic += $(gcc_lib_dir)/$(biarchsubdir)/libstdc++_pic.a +endif + +# ---------------------------------------------------------------------- + +$(binary_stamp)-libstdcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lib) + dh_installdirs -p$(p_lib) $(dirs_lib) + DH_COMPAT=2 dh_movefiles -p$(p_lib) $(files_lib) + + dh_installdocs -p$(p_lib) + echo "See /$(docdir)/$(p_base) for more information" \ + > $(d_lib)/$(docdir)/$(p_lib)/README.Debian + + dh_installchangelogs -p$(p_lib) + debian/dh_rmemptydirs -p$(p_lib) + + mkdir -p $(d_dbg) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lib) --keep-debug + # The above line puts debugging information into some strange location + # that is hardcoded into dh_strip. Move it from there. + mkdir -p $(d_lib)/usr/$(DEB_TARGET_GNU_TYPE)/lib/debug + mv $(d_lib)/usr/lib/debug/usr/$(DEB_TARGET_GNU_TYPE)/lib/* $(d_lib)/usr/$(DEB_TARGET_GNU_TYPE)/lib/debug/ + rm -rf $(d_lib)/usr/lib + # End workaround + find $(d_dbg) + tar -C $(d_lib) -c -f - usr/$(DEB_TARGET_GNU_TYPE)/lib/debug | tar -v -C $(d_dbg) -x -f - + rm -rf $(d_lib)/usr/$(DEB_TARGET_GNU_TYPE)/lib/debug + + dh_compress -p$(p_lib) + dh_fixperms -p$(p_lib) + dh_makeshlibs -p$(p_lib) -V '$(p_lib) (>= $(DEB_STDCXX_SOVERSION))' -n + sed s/$(cross_lib_arch)//g < debian/$(p_lib)/DEBIAN/shlibs > debian/$(p_lib)/DEBIAN/shlibs.fixed + mv debian/$(p_lib)/DEBIAN/shlibs.fixed debian/$(p_lib)/DEBIAN/shlibs + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lib) + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lib).substvars > debian/$(p_lib).substvars.new + mv debian/$(p_lib).substvars.new debian/$(p_lib).substvars + dh_gencontrol -p$(p_lib) -- -v$(DEB_VERSION) $(common_substvars) + + dh_installdeb -p$(p_lib) + dh_md5sums -p$(p_lib) + dh_builddeb -p$(p_lib) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-lib64stdcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lib64) + dh_installdirs -p$(p_lib64) $(dirs_lib64) + DH_COMPAT=2 dh_movefiles -p$(p_lib64) $(files_lib64) + + dh_installdirs -p$(p_dbg64) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64 + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/debug $(d_dbg64)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/. + + mkdir -p $(d_dbg64) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lib64) --keep-debug + # The above line puts debugging information into some strange location + # that is hardcoded into dh_strip. Move it from there. + mkdir -p $(d_lib64)/usr/$(DEB_TARGET_GNU_TYPE)/lib64/debug + mv $(d_lib64)/usr/lib/debug/usr/$(DEB_TARGET_GNU_TYPE)/lib64/* $(d_lib64)/usr/$(DEB_TARGET_GNU_TYPE)/lib64/debug/ + rm -rf $(d_lib64)/usr/lib64 + # End workaround + find $(d_lib64) + tar -C $(d_lib64) -c -f - usr/$(DEB_TARGET_GNU_TYPE)/lib64/debug | tar -v -C $(d_dbg64) -x -f - + rm -rf $(d_lib64)/usr/$(DEB_TARGET_GNU_TYPE)/lib64/debug + + dh_installdocs -p$(p_lib64) + echo "See /$(docdir)/$(p_base) for more information" \ + > $(d_lib64)/$(docdir)/$(p_lib64)/README.Debian + dh_installchangelogs -p$(p_lib64) + debian/dh_doclink -p$(p_dbg64) $(p_lib64) + + debian/dh_rmemptydirs -p$(p_lib64) + dh_compress -p$(p_lib64) + dh_fixperms -p$(p_lib64) + dh_makeshlibs -p$(p_lib64) -V '$(p_lib64) (>= $(DEB_STDCXX_SOVERSION))' -n + sed s/$(cross_lib_arch)//g < debian/$(p_lib64)/DEBIAN/shlibs > debian/$(p_lib64)/DEBIAN/shlibs.fixed + mv debian/$(p_lib64)/DEBIAN/shlibs.fixed debian/$(p_lib64)/DEBIAN/shlibs + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lib64) + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lib64).substvars > debian/$(p_lib64).substvars.new + mv debian/$(p_lib64).substvars.new debian/$(p_lib64).substvars + dh_gencontrol -p$(p_lib64) -- -v$(DEB_VERSION) $(common_substvars) + dh_gencontrol -p$(p_dbg64) -- -v$(DEB_VERSION) $(common_substvars) + + dh_installdeb -p$(p_lib64) + dh_md5sums -p$(p_lib64) + dh_builddeb -p$(p_lib64) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-lib32stdcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lib32) + dh_installdirs -p$(p_lib32) $(dirs_lib32) + DH_COMPAT=2 dh_movefiles -p$(p_lib32) $(files_lib32) + + dh_installdirs -p$(p_dbg32) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib32 + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/debug $(d_dbg32)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/. + + mkdir -p $(d_dbg32) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lib32) --keep-debug + # The above line puts debugging information into some strange location + # that is hardcoded into dh_strip. Move it from there. + mkdir -p $(d_lib32)/usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug + mv $(d_lib32)/usr/lib/debug/usr/$(DEB_TARGET_GNU_TYPE)/lib32/* $(d_lib32)/usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug/ + rm -rf $(d_lib32)/usr/lib32 + # End workaround + find $(d_lib32) + tar -C $(d_lib32) -c -f - usr/$(DEB_TARGET_GNU_TYPE)/lib/debug | tar -v -C $(d_dbg32) -x -f - + rm -rf $(d_lib32)/usr/$(DEB_TARGET_GNU_TYPE)/lib/debug + + dh_installdocs -p$(p_lib32) + echo "See /$(docdir)/$(p_base) for more information" \ + > $(d_lib32)/$(docdir)/$(p_lib32)/README.Debian + dh_installchangelogs -p$(p_lib32) + debian/dh_doclink -p$(p_dbg32) $(p_lib32) + + debian/dh_rmemptydirs -p$(p_lib32) + dh_compress -p$(p_lib32) + dh_fixperms -p$(p_lib32) + + sed s/$(cross_lib_arch)//g < debian/$(p_lib32)/DEBIAN/shlibs > debian/$(p_lib32)/DEBIAN/shlibs.fixed + mv debian/$(p_lib32)/DEBIAN/shlibs.fixed debian/$(p_lib32)/DEBIAN/shlibs + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lib32) + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lib32).substvars > debian/$(p_lib32).substvars.new + mv debian/$(p_lib32).substvars.new debian/$(p_lib32).substvars + dh_gencontrol -p$(p_lib32) -- -v$(DEB_VERSION) $(common_substvars) + dh_gencontrol -p$(p_dbg32) -- -v$(DEB_VERSION) $(common_substvars) + + dh_installdeb -p$(p_lib32) + dh_md5sums -p$(p_lib32) + dh_builddeb -p$(p_lib32) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +libcxxdev_deps = $(install_stamp) +ifeq ($(with_libcxx),yes) + libcxxdev_deps += $(binary_stamp)-libstdcxx +endif +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) \ + $(binary_stamp)-libstdcxx + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + ln -sf ../../../../$(DEB_TARGET_GNU_TYPE)/lib/libstdc++.so.$(CXX_SONAME) $(d)/$(gcc_lib_dir)/libstdc++.so + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libstdc++_pic.a \ + $(d)/$(gcc_lib_dir)/ + + rm -f $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib/debug/libstdc++_pic.a + rm -f $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + +ifeq ($(biarch),yes) + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/lib*c++*.a $(d)/$(gcc_lib_dir)/$(biarchsubdir)/. + ln -sf ../../../../../lib64/libstdc++.so.$(CXX_SONAME) \ + $(d)/$(gcc_lib_dir)/$(biarchsubdir)/libstdc++.so +endif +ifeq ($(biarch32),yes) + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/lib*c++*.a $(d)/$(gcc_lib_dir)/$(biarchsubdir)/. + ln -sf ../../../../../lib64/libstdc++.so.$(CXX_SONAME) \ + $(d)/$(gcc_lib_dir)/$(biarchsubdir)/libstdc++.so +endif + + for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ + if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ + done + + DH_COMPAT=2 dh_movefiles -p$(p_dev) $(files_dev) + DH_COMPAT=2 dh_movefiles -p$(p_pic) $(files_pic) + DH_COMPAT=2 dh_movefiles -p$(p_dbg) $(files_dbg) + + dh_link -p$(p_dev) \ + /$(PF)/$(DEB_TARGET_GNU_TYPE)/$(libdir)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so \ + /$(cxx_inc_dir) /$(PF)/$(DEB_TARGET_GNU_TYPE)/include/c++/$(BASE_VERSION) + +ifeq ($(biarch),yes) + dh_link -p$(p_dev) \ + /$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/$(biarchsubdir)/libstdc++.so +endif +ifeq ($(biarch32),yes) + dh_link -p$(p_dev) \ + /$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/$(biarchsubdir)/libstdc++.so +endif + + debian/dh_doclink -p$(p_dev) $(p_lib) + debian/dh_doclink -p$(p_pic) $(p_lib) + debian/dh_doclink -p$(p_dbg) $(p_lib) + cp -p $(srcdir)/libstdc++-v3/config/abi/pre/gnu.ver \ + $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map + +ifeq ($(with_cxxdev),yes) + debian/dh_rmemptydirs -p$(p_dev) + debian/dh_rmemptydirs -p$(p_pic) + debian/dh_rmemptydirs -p$(p_dbg) +endif + + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_dev) --dbg-package=$(p_lib) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_pic) + dh_compress -p$(p_dev) -p$(p_pic) -p$(p_dbg) -X.txt + dh_fixperms -p$(p_dev) -p$(p_pic) -p$(p_dbg) + dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + -- -v$(DEB_VERSION) $(common_substvars) + + dh_installdeb -p$(p_dev) -p$(p_pic) -p$(p_dbg) + dh_md5sums -p$(p_dev) -p$(p_pic) -p$(p_dbg) + dh_builddeb -p$(p_dev) -p$(p_pic) -p$(p_dbg) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-objcxx.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-objcxx.mk @@ -0,0 +1,62 @@ +ifneq (,$(filter yes, $(biarch) $(biarch32))) + arch_binaries := $(arch_binaries) objcxx-multi +endif +arch_binaries := $(arch_binaries) objcxx + +p_objcx = gobjc++$(pkg_ver) +d_objcx = debian/$(p_objcx) + +p_objcx_m = gobjc++$(pkg_ver)-multilib +d_objcx_m = debian/$(p_objcx_m) + +dirs_objcx = \ + $(docdir)/$(p_base)/Obj-C++ \ + $(gcc_lexec_dir) + +files_objcx = \ + $(gcc_lexec_dir)/cc1objplus + +$(binary_stamp)-objcxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objcx) + dh_installdirs -p$(p_objcx) $(dirs_objcx) + DH_COMPAT=2 dh_movefiles -p$(p_objcx) $(files_objcx) + + debian/dh_doclink -p$(p_objcx) $(p_base) + cp -p $(srcdir)/gcc/objcp/ChangeLog \ + $(d_objcx)/$(docdir)/$(p_base)/Obj-C++/changelog + + debian/dh_rmemptydirs -p$(p_objcx) + + dh_strip -p$(p_objcx) + dh_compress -p$(p_objcx) + + dh_fixperms -p$(p_objcx) + dh_shlibdeps -p$(p_objcx) + dh_gencontrol -p$(p_objcx) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_objcx) + dh_md5sums -p$(p_objcx) + dh_builddeb -p$(p_objcx) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objcxx-multi: $(install_stamp) + dh_testdir + dh_testroot + + rm -rf $(d_objcx_m) + + debian/dh_doclink -p$(p_objcx_m) $(p_base) + debian/dh_rmemptydirs -p$(p_objcx_m) + dh_strip -p$(p_objcx_m) + dh_compress -p$(p_objcx_m) + + dh_fixperms -p$(p_objcx_m) + dh_shlibdeps -p$(p_objcx_m) + dh_gencontrol -p$(p_objcx_m) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_objcx_m) + dh_md5sums -p$(p_objcx_m) + dh_builddeb -p$(p_objcx_m) --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-libgomp.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-libgomp.mk @@ -0,0 +1,96 @@ +arch_binaries := $(arch_binaries) libgomp +ifeq ($(with_lib64gomp),yes) + arch_binaries := $(arch_binaries) lib64gomp +endif +ifeq ($(with_lib32gomp),yes) + arch_binaries := $(arch_binaries) lib32gomp +endif + +p_gomp = libgomp$(GOMP_SONAME) +p_l32gomp= lib32gomp$(GOMP_SONAME) +p_l64gomp= lib64gomp$(GOMP_SONAME) + +d_gomp = debian/$(p_gomp) +d_l32gomp= debian/$(p_l32gomp) +d_l64gomp= debian/$(p_l64gomp) + +dirs_gomp = \ + $(PF)/$(libdir) +files_gomp = \ + $(PF)/$(libdir)/libgomp.so.* + +$(binary_stamp)-libgomp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gomp) + dh_installdirs -p$(p_gomp) $(dirs_gomp) + + DH_COMPAT=2 dh_movefiles -p$(p_gomp) $(files_gomp) + + debian/dh_doclink -p$(p_gomp) $(p_base) + + dh_strip -p$(p_gomp) + dh_compress -p$(p_gomp) + dh_fixperms -p$(p_gomp) + dh_makeshlibs -p$(p_gomp) -V '$(p_gomp) (>= $(DEB_GOMP_SOVERSION))' + dh_shlibdeps -p$(p_gomp) + dh_gencontrol -p$(p_gomp) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gomp) + dh_md5sums -p$(p_gomp) + dh_builddeb -p$(p_gomp) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64gomp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l64gomp) + dh_installdirs -p$(p_l64gomp) \ + $(PF)/lib64 + DH_COMPAT=2 dh_movefiles -p$(p_l64gomp) \ + $(PF)/lib64/libgomp.so.* + + debian/dh_doclink -p$(p_l64gomp) $(p_base) + + dh_strip -p$(p_l64gomp) + dh_compress -p$(p_l64gomp) + dh_fixperms -p$(p_l64gomp) + dh_makeshlibs -p$(p_l64gomp) -V '$(p_l64gomp) (>= $(DEB_GOMP_SOVERSION))' +# dh_shlibdeps -p$(p_l64gomp) + dh_gencontrol -p$(p_l64gomp) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_l64gomp) + dh_md5sums -p$(p_l64gomp) + dh_builddeb -p$(p_l64gomp) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32gomp: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l32gomp) + dh_installdirs -p$(p_l32gomp) \ + $(lib32) + DH_COMPAT=2 dh_movefiles -p$(p_l32gomp) \ + $(lib32)/libgomp.so.* + + debian/dh_doclink -p$(p_l32gomp) $(p_base) + + dh_strip -p$(p_l32gomp) + dh_compress -p$(p_l32gomp) + dh_fixperms -p$(p_l32gomp) + dh_makeshlibs -p$(p_l32gomp) -V '$(p_l32gomp) (>= $(DEB_GOMP_SOVERSION))' + dh_shlibdeps -p$(p_l32gomp) + dh_gencontrol -p$(p_l32gomp) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_l32gomp) + dh_md5sums -p$(p_l32gomp) + dh_builddeb -p$(p_l32gomp) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-objc.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-objc.mk @@ -0,0 +1,100 @@ +ifneq (,$(filter yes, $(biarch) $(biarch32))) + arch_binaries := $(arch_binaries) objc-multi +endif +arch_binaries := $(arch_binaries) objc + +p_objc = gobjc$(pkg_ver) +d_objc = debian/$(p_objc) + +p_objc_m= gobjc$(pkg_ver)-multilib +d_objc_m= debian/$(p_objc_m) + +dirs_objc = \ + $(docdir)/$(p_base)/ObjC \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include + +files_objc = \ + $(gcc_lexec_dir)/cc1obj \ + $(gcc_lib_dir)/include/objc \ + $(gcc_lib_dir)/libobjc*.a + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -f $(d)/$(PF)/$(libdir)/libobjc.{la,so} + mv $(d)/$(PF)/$(libdir)/libobjc*.a $(d)/$(gcc_lib_dir)/ + + rm -rf $(d_objc) + dh_installdirs -p$(p_objc) $(dirs_objc) + DH_COMPAT=2 dh_movefiles -p$(p_objc) $(files_objc) + + dh_link -p$(p_objc) \ + /$(PF)/$(libdir)/libobjc.so.$(OBJC_SONAME) /$(gcc_lib_dir)/libobjc.so +ifeq ($(with_objc_gc),yes) + dh_link -p$(p_objc) \ + /$(PF)/$(libdir)/libobjc_gc.so.$(OBJC_SONAME) \ + /$(gcc_lib_dir)/libobjc_gc.so +endif + + debian/dh_doclink -p$(p_objc) $(p_base) + cp -p $(srcdir)/libobjc/{README*,THREADS*} \ + $(d_objc)/$(docdir)/$(p_base)/ObjC/. + + cp -p $(srcdir)/libobjc/ChangeLog \ + $(d_objc)/$(docdir)/$(p_base)/ObjC/changelog.libobjc + + debian/dh_rmemptydirs -p$(p_objc) + + dh_strip -p$(p_objc) + dh_compress -p$(p_objc) + + dh_fixperms -p$(p_objc) + dh_shlibdeps -p$(p_objc) + dh_gencontrol -p$(p_objc) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_objc) + dh_md5sums -p$(p_objc) + dh_builddeb -p$(p_objc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +$(binary_stamp)-objc-multi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_objc_m) + dh_installdirs -p$(p_objc_m) \ + $(docdir) \ + $(gcc_lib_dir)/$(biarchsubdir) + +ifeq ($(with_lib64objc),yes) + rm -f $(d)/$(PF)/lib64/libobjc*.{la,so} + mkdir -p $(d_objc_m)/$(gcc_lib_dir)/$(biarchsubdir) + mv $(d)/$(PF)/lib64/libobjc*.a $(d_objc_m)/$(gcc_lib_dir)/$(biarchsubdir)/ + dh_link -p$(p_objc_m) \ + /$(PF)/lib64/libobjc.so.$(OBJC_SONAME) /$(gcc_lib_dir)/$(biarchsubdir)/libobjc.so +endif +ifeq ($(with_lib32objc),yes) + rm -f $(d)/$(lib32)/libobjc*.{la,so} + mkdir -p $(d_objc_m)/$(gcc_lib_dir)/$(biarchsubdir) + mv $(d)/$(lib32)/libobjc*.a $(d_objc_m)/$(gcc_lib_dir)/$(biarchsubdir)/ + dh_link -p$(p_objc_m) \ + /$(lib32)/libobjc.so.$(OBJC_SONAME) /$(gcc_lib_dir)/$(biarchsubdir)/libobjc.so +endif + + debian/dh_doclink -p$(p_objc_m) $(p_base) + + dh_strip -p$(p_objc_m) + dh_compress -p$(p_objc_m) + + dh_fixperms -p$(p_objc_m) + dh_shlibdeps -p$(p_objc_m) + dh_gencontrol -p$(p_objc_m) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_objc_m) + dh_md5sums -p$(p_objc_m) + dh_builddeb -p$(p_objc_m) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcj-4.2-4.2-20070707.orig/debian/rules.d/binary-java.mk +++ gcj-4.2-4.2-20070707/debian/rules.d/binary-java.mk @@ -0,0 +1,741 @@ +ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + arch_binaries := $(arch_binaries) jbase + endif +else + arch_binaries := $(arch_binaries) jbase +endif + +ifeq ($(with_gcj),yes) + arch_binaries := $(arch_binaries) gcj +endif + +ifeq ($(with_libgcj),yes) + ifeq ($(with_java),yes) + arch_binaries := $(arch_binaries) java gcjapplet + indep_binaries := $(indep_binaries) libgcjjar + endif + + ifeq ($(with_javadev),yes) + arch_binaries := $(arch_binaries) libgcjdev libgcjdbg + indep_binaries := $(indep_binaries) libgcjsrc + ifeq ($(with_libgcj_doc),yes) + indep_binaries := $(indep_binaries) libgcjdoc + endif + endif + + ifeq ($(with_java32),yes) + arch_binaries := $(arch_binaries) java32 + endif +endif + +p_jbase = gcj$(pkg_ver)-base +p_gcj = gcj$(pkg_ver) +p_gij = gij$(pkg_ver) +p_jlib = libgcj$(PKG_LIBGCJ_EXT) +p_jdbg = libgcj$(PKG_GCJ_EXT)-dbg +p_jar = libgcj$(PKG_GCJ_EXT)-jar +p_jlibx = libgcj$(PKG_LIBGCJ_EXT)-awt +p_jgtk = libgcj$(PKG_GCJ_EXT)-awt-gtk +p_jqt = libgcj$(PKG_GCJ_EXT)-awt-qt +p_jdev = libgcj$(PKG_GCJ_EXT)-dev +p_jsrc = libgcj$(PKG_GCJ_EXT)-src +p_view = gappletviewer$(pkg_ver) +p_plug = gcjwebplugin$(pkg_ver) +p_jdoc = libgcj-doc +p_j32lib= lib32gcj$(PKG_LIBGCJ_EXT) +p_j32dev= lib32gcj$(PKG_GCJ_EXT)-dev +p_j32dbg= lib32gcj$(PKG_GCJ_EXT)-dbg +p_j32libc = lib32gcj-bc + +d_jbase = debian/$(p_jbase) +d_gcj = debian/$(p_gcj) +d_gij = debian/$(p_gij) +d_jlib = debian/$(p_jlib) +d_jdbg = debian/$(p_jdbg) +d_jar = debian/$(p_jar) +d_jlibx = debian/$(p_jlibx) +d_jgtk = debian/$(p_jgtk) +d_jqt = debian/$(p_jqt) +d_jdev = debian/$(p_jdev) +d_jsrc = debian/$(p_jsrc) +d_jdoc = debian/$(p_jdoc) +d_view = debian/$(p_view) +d_plug = debian/$(p_plug) +d_j32lib= debian/$(p_j32lib) +d_j32dev= debian/$(p_j32dev) +d_j32dbg= debian/$(p_j32dbg) +d_j32libc= debian/$(p_j32libc) + +GCJ_BASE_VERSION = $(BASE_VERSION) + +gcj_vlibdir = $(PF)/$(libdir)/gcj-$(BASE_VERSION)-$(GCJ_SONAME) +gcj_vlib32dir = $(lib32)/gcj-$(BASE_VERSION)-$(GCJ_SONAME) +gcj_vlib64dir = $(PF)/$(lib64)/gcj-$(BASE_VERSION)-$(GCJ_SONAME) + +dirs_gcj = \ + $(docdir)/$(p_jbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(PF)/share/info \ + $(gcc_lexec_dir) +files_gcj = \ + $(PF)/bin/{gcj,gjar,gjarsigner,gcjh,gjavah,gnative2ascii,grmic,gtnameserv,jv-convert,jcf-dump}$(pkg_ver) \ + $(PF)/share/man/man1/{gjar,gjarsigner,gcjh,gjavah,gnative2ascii,grmic,gtnameserv}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{ecj1,jc1,jvgenmain} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcj += \ + $(PF)/share/info/gcj* \ + $(PF)/share/man/man1/{gcj,jv-convert,jcf-dump}$(pkg_ver).1 +endif + +dirs_gij = \ + $(docdir)/$(p_jbase) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + var/lib/gcj$(pkg_ver) + +files_gij = \ + $(PF)/bin/{gij,gcj-dbtool,gorbd,grmid,grmiregistry,gkeytool,gserialver}$(pkg_ver) \ + $(PF)/share/man/man1/{gorbd,grmid,grmiregistry,gkeytool,gserialver}$(pkg_ver).1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gij += \ + $(PF)/share/man/man1/{gij,gcj-dbtool}$(pkg_ver).1 +endif + +dirs_jlib = \ + $(docdir)/$(p_jbase) \ + $(gcj_vlibdir) \ + $(PF)/$(libdir) + +files_jlib = \ + $(PF)/$(libdir)/libgij.so.* \ + $(PF)/$(libdir)/libgcj-tools.so.* \ + $(PF)/$(libdir)/libgcj.so.* \ + $(gcj_vlibdir)/libjvm.so \ + +# $(gcj_vlibdir)/libgconfpeer.so + +ifeq ($(with_java_alsa),yes) + files_jlib += \ + $(gcj_vlibdir)/libgjsmalsa.so +endif + +dirs_jar = \ + $(PF)/share/java + +dirs_jlibx = \ + $(PF)/$(libdir) \ + $(gcj_vlibdir) \ + $(PF)/share/java + +files_jlibx = \ + $(gcj_vlibdir)/libjawt.so \ + $(gcj_vlibdir)/libgtkpeer.so + +#files_jgtk = \ +# $(gcj_vlibdir)/libgtkpeer.so +#files_jqt = \ +# $(gcj_vlibdir)/libqtpeer.so + +dirs_jdev = \ + $(docdir)/$(p_jbase)/examples \ + $(PF)/{include,lib} \ + $(gcc_lib_dir)/include/gcj + +files_jdev = \ + $(cxx_inc_dir)/{org,gcj,java,javax} \ + $(cxx_inc_dir)/gnu/{awt,classpath,gcj,java,javax} \ + $(gcc_lib_dir)/include/{jni.h,jni_md.h,jvmpi.h} \ + $(gcc_lib_dir)/include/{jawt.h,jawt_md.h} \ + $(gcc_lib_dir)/include/gcj/libgcj-config.h \ + $(PF)/$(libdir)/libgij.so \ + $(PF)/$(libdir)/libgcj.{so,spec} \ + $(PF)/$(libdir)/libgcj-tools.so \ + $(PF)/$(libdir)/pkgconfig/libgcj-$(BASE_VERSION).pc \ + $(gcj_vlibdir)/lib*peer.so \ + +ifeq ($(with_static_java),yes) + files_jdev += \ + $(PF)/$(libdir)/libgij.a \ + $(PF)/$(libdir)/libgcj.a \ + $(PF)/$(libdir)/libgcj-tools.a +endif + +ifeq ($(with_lib64gcj),yes) + dirs_jlib += $(gcj_vlib64dir) + files_jlib += \ + $(gcj_vlib64dir)/libjawt.so \ + $(gcj_vlib64dir)/lib*peer.so +endif + +ifeq ($(with_standalone_gcj),yes) + + dirs_gcj += \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + + files_gcj += \ + $(PF)/bin/{cpp,gcc,gcov}$(pkg_ver) \ + $(gcc_lexec_dir)/cc1 \ + $(gcc_lexec_dir)/collect2 \ + $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ + $(gcc_lib_dir)/include/README \ + $(gcc_lib_dir)/include/{decfloat,float,iso646,limits,std*,syslimits,unwind,varargs}.h \ + $(shell for d in asm bits gnu linux; do \ + test -e $(d)/$(gcc_lib_dir)/include/$$d \ + && echo $(gcc_lib_dir)/include/$$d; \ + done) \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) \ + $(shell for h in {,e,p,x}mmintrin.h mm3dnow.h mm_malloc.h; do \ + test -e $(d)/$(gcc_lib_dir)/include/$$h \ + && echo $(gcc_lib_dir)/include/$$h; \ + done) + + ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcj += \ + $(PF)/share/man/man1/{cpp,gcc,gcov}$(pkg_ver).1 + endif + + ifeq ($(biarch),yes) + files_gcj += $(gcc_lib_dir)/$(biarchsubdir)/{libgcc*,libgcov.a,*.o} + endif + ifeq ($(biarch32),yes) + files_gcj += $(gcc_lib_dir)/$(biarchsubdir)/{libgcc*,*.o} + endif + + ifeq ($(DEB_HOST_ARCH),ia64) + files_gcj += $(gcc_lib_dir)/include/ia64intrin.h + endif + + ifeq ($(DEB_HOST_ARCH),m68k) + files_gcj += $(gcc_lib_dir)/include/math-68881.h + endif + + ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64)) + files_gcj += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h} + endif + +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-jbase: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_jbase) + dh_installdirs -p$(p_jbase) + dh_installdocs -p$(p_jbase) + dh_installchangelogs -p$(p_jbase) + dh_compress -p$(p_jbase) + dh_fixperms -p$(p_jbase) + dh_gencontrol -p$(p_jbase) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_jbase) + dh_md5sums -p$(p_jbase) + dh_builddeb -p$(p_jbase) + touch $@ + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgcjjar: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + dh_installdirs -p$(p_jar) $(dirs_jar) + mv $(d)/$(PF)/share/java/libgcj-$(BASE_VERSION).jar \ + $(d_jar)/$(PF)/share/java/ + mv $(d)/$(PF)/share/java/libgcj-tools-$(BASE_VERSION).jar \ + $(d_jar)/$(PF)/share/java/ + + debian/dh_doclink -p$(p_jar) $(p_jbase) + debian/dh_rmemptydirs -p$(p_jar) + dh_compress -p$(p_jar) + dh_fixperms -p$(p_jar) + dh_gencontrol -p$(p_jar) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_jar) + dh_md5sums -p$(p_jar) + dh_builddeb -p$(p_jar) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgcjsrc: $(install_stamp) + dh_testdir + dh_testroot + + PATH=$(PWD)/bin:$$PATH \ + $(MAKE) -C $(buildlibdir)/libjava \ + DESTDIR=$(PWD)/$(d) install-src.zip + mkdir -p $(d_jsrc)/$(PF)/share/java + mv $(d)/$(PF)/share/java/src-$(BASE_VERSION).zip \ + $(d_jsrc)/$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip + + : # add files for the classpath examples + cd $(srcdir)/libjava/classpath/examples && \ + find ! -type d ! -name 'Makefile.??' ! -name '*.java' \ + | fastjar -uvfM@ \ + $(PWD)/$(d_jsrc)/$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip + + debian/dh_doclink -p$(p_jsrc) $(p_jbase) + debian/dh_rmemptydirs -p$(p_jsrc) + dh_compress -p$(p_jsrc) + dh_fixperms -p$(p_jsrc) + dh_gencontrol -p$(p_jsrc) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_jsrc) + dh_md5sums -p$(p_jsrc) + dh_builddeb -p$(p_jsrc) + + touch $@ + +# ---------------------------------------------------------------------- +libgcj_version = $(shell $(builddir)/gcc/xgcc --version \ + | sed -n '/GCC/s/.*(GCC) *//p') +libgcj_title = LibGCJ Classpath +libgcjhbox_href = http://gcc.gnu.org/java +libgcjhbox =

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. + + --- gcj-4.2-4.2-20070707.orig/debian/treelang-BV.doc-base +++ gcj-4.2-4.2-20070707/debian/treelang-BV.doc-base @@ -0,0 +1,15 @@ +Document: treelang-@BV@ +Title: The GNU Treelang Compiler +Author: Tim Josling +Abstract: This file documents the use and the internals of the GNU Treelang + compiler. At the moment this manual is not incorporated into the main + GCC manual as it is too incomplete. +Section: Apps/Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/treelang/treelang.html +Files: /usr/share/doc/gcc-@BV@-base/treelang/treelang.html + +Format: info +Index: /usr/share/info/treelang-@BV@.info.gz +Files: /usr/share/info/treelang-@BV@* --- gcj-4.2-4.2-20070707.orig/debian/rename-pkgs.sh +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/gcc-cross.prerm +++ gcj-4.2-4.2-20070707/debian/gcc-cross.prerm @@ -0,0 +1,5 @@ +#!/bin/sh + +update-alternatives --quiet --remove cross-gcc /usr/bin/cross-gcc-ver + +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/dh_doclink +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/rules.conf +++ gcj-4.2-4.2-20070707/debian/rules.conf @@ -0,0 +1,676 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs + +SOURCE_VERSION := $(shell dpkg-parsechangelog | awk '/^Version:/ {print $$NF}') +DEB_VERSION := $(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, libffi2, libffi2-dev, libg2c0 +EPOCH := 1 +DEB_EVERSION := $(EPOCH):$(DEB_VERSION) +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*-.*/\1/') + +# 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) ). +BINUTILSV = 2.17cvs20070426 +ifdef DEB_CROSS + BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSV)) +else + BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSV)) | binutils-multiarch (>= $(BINUTILSV)) +endif + +# libc-dev dependencies +libc_ver := 2.5 +ifeq ($(DEB_TARGET_ARCH_OS),linux) + ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64)) + LIBC_DEP = libc6.1 + LIBC_DEV_DEP = libc6.1-dev$(LS) (>= $(libc_ver)) + else + LIBC_DEP = libc6 + LIBC_DEV_DEP = libc6-dev$(LS) (>= $(libc_ver)) + endif +else + ifeq ($(DEB_TARGET_ARCH_OS),gnu) + LIBC_DEP = libc0.3 + LIBC_DEV_DEP = libc0.3-dev$(LS) + endif + ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + LIBC_DEP = libc0.1 + LIBC_DEV_DEP = libc0.1-dev + endif + ifeq ($(DEB_TARGET_ARCH_OS),knetbsd) + LIBC_DEP = libc0.1 + LIBC_DEV_DEP = libc0.1-dev$(LS) + endif + ifeq ($(DEB_TARGET_ARCH_OS),netbsd) + LIBC_DEP = libc12 + LIBC_DEV_DEP = libc12-dev$(LS) + endif +endif + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +LIBCXX_BIARCH_DEP := +ifeq ($(biarch),yes) + ifeq ($(DEB_TARGET_ARCH),i386) + LIBC_BIARCH_DEP := libc6-amd64$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-amd64$(LS) + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + LIBC_BIARCH_DEP := libc6-ppc64$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-ppc64$(LS) (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),sparc) + LIBC_BIARCH_DEP := libc6-sparc64$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-sparc64$(LS) (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),s390) + LIBC_BIARCH_DEP := libc6-s390x$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-s390x$(LS) (>= $(libc_ver)) + endif + LIBCXX_BIARCH_DEP = lib64stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) + LIBCXX_BIARCH_DBG_DEP = lib64stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg +endif +ifeq ($(biarch32),yes) + ifeq ($(DEB_TARGET_ARCH),amd64) + LIBC_BIARCH_DEV_DEP := libc6-dev-i386$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEP := libc6-i386$(LS) (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),ppc64) + LIBC_BIARCH_DEP := libc6-powerpc$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-powerpc$(LS) (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),kfreebsd-amd64) + LIBC_BIARCH_DEV_DEP := libc0.1-dev-i386$(LS) (>= $(libc_ver)) + LIBC_BIARCH_DEP := libc0.1-i386$(LS) (>= $(libc_ver)) + endif + LIBCXX_BIARCH_DEP = lib32stdc++$(CXX_SONAME)$(LS) (>= $${gcc:Version}) + LIBCXX_BIARCH_DBG_DEP = lib32stdc++$(CXX_SONAME)-$(BASE_VERSION)-dbg +endif + +LIBUNWIND_DEV_DEP := +ifeq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := libunwind7-dev$(LS) (>= 0.98.5-6) +endif + +ifndef DEB_CROSS +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 knetbsd-gnu] | libc12-dev (>= $(libc_ver)) [netbsd-elf-gnu] | libc6-dev (>= $(libc_ver)) +JAVA_BUILD_DEP := libz-dev, + +ifneq (,$(java_awt_peers)) + JAVA_BUILD_DEP += fastjar [java_no_archs], libmagic-dev [java_no_archs], + JAVA_BUILD_DEP += ecj (>= 3.2.1-6) [java_no_archs], zip [java_no_archs], + ifeq ($(with_java_maintainer_mode),yes) + # gcj-4.1 needed for gjavah-4.1. + JAVA_BUILD_DEP += gcj-4.1 [java_no_archs], + endif + JAVA_BUILD_DEP += libasound2-dev [java_no_archs !hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], + JAVA_BUILD_DEP += lib32asound2-dev [amd64 ppc64], lib64asound2-dev [i386 powerpc sparc s390], + ifneq (,$(findstring gtk,$(java_awt_peers))) + JAVA_BUILD_DEP += libxtst-dev [java_no_archs], libxt-dev [java_no_archs], libgtk2.0-dev (>= 2.4.4-2) [java_no_archs], libart-2.0-dev [java_no_archs], libcairo2-dev [java_no_archs], + endif + ifneq (,$(findstring qt,$(java_awt_peers))) + JAVA_BUILD_DEP += libqt4-dev (>= 4.1.0) [java_no_archs], + endif + # plugin + JAVA_BUILD_DEP += libgconf2-dev [java_no_archs], + ifeq ($(distribution),Debian) + JAVA_BUILD_DEP += libxul-dev [java_no_archs], + else + JAVA_BUILD_DEP += firefox-dev [java_no_archs], + endif +endif +ifneq ($(with_standalone_gcj),yes) + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + JAVA_BUILD_DEP += gcc-4.2-source (>= 4.2-20070707), gcc-4.2-source (<< 4.2.0), + endif +endif +JAVA_BUILD_INDEP := gjdoc +ifeq ($(with_separate_libgcj),yes) + ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := + endif +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 + +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 +else ifeq ($(PKGSOURCE),gcc-snapshot) + # Ditto, as part of the gcc-snapshot package. + GNAT_BUILD_DEP := gnat (>= 4.1) [ada_no_archs], +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-$(BASE_VERSION), + GNAT_BUILD_DEP += gcc-$(BASE_VERSION)-source (= $(SOURCE_VERSION)), + JAVA_BUILD_DEP := + JAVA_BUILD_INDEP := +endif + + +#PASCAL_BUILD_DEP := libncurses5-dev [pascal_no_archs], tetex-bin [pascal_no_archs], libgmp3-dev [pascal_no_archs], help2man [pascal_no_archs], + +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], + +else +# build cross compiler + +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 + +ifneq ($(LIBUNWIND_DEV_DEP),) + LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP), +else + LIBUNWIND_BUILD_DEP := +endif + +ifeq ($(DEB_TARGET_ARCH),ia64) + LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS), +else + LIBATOMIC_OPS_BUILD_DEP := +endif + +JAVA_BUILD_DEP := libz-dev, lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64], +JAVA_BUILD_INDEP := +GNAT_BUILD_DEP := + +endif # cross compiler + +GCC_VERSION := $(strip $(shell cat $(srcdir)/gcc/BASE-VER)) + +# 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.2 +DEB_GCJ_SOFT_VERSION := 4.2 +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 + +# semiautomatic ... +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 4.2-20070516 +DEB_SOEVERSION := $(EPOCH):4.2.0 +DEB_SOEVERSION := $(EPOCH):4.2-20070516 +DEB_SOVERSION := 4.2-20070208 +DEB_SOEVERSION := $(EPOCH):4.2-20070516 +DEB_STDCXX_SOVERSION := 4.2.0 +DEB_GCJ_SOVERSION := 4.2.0 +DEB_STDCXX_SOVERSION := 4.2-20070516 +DEB_GCJ_SOVERSION := 4.2-20070516 +DEB_FFI_SOVERSION := $(DEB_SOVERSION) +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 ($(biarch),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 + +CXX_SONAME := $(strip $(shell awk -F= \ + '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libstdc++-v3/configure.ac)) + +OBJC_SONAME := $(strip $(shell awk -F= '/^VERSION/ \ + {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libobjc/configure.ac)) + +FORTRAN_SONAME := $(strip $(shell tail -1 \ + $(srcdir)/libgfortran/libtool-version \ + | awk -F: '{ print $$1 }' )) + +MUDFLAP_SONAME := $(strip $(shell tail -1 \ + $(srcdir)/libmudflap/libtool-version \ + | awk -F: '{ print $$1 }' )) + +SSP_SONAME := $(strip $(shell tail -1 \ + $(srcdir)/libssp/libtool-version \ + | awk -F: '{ print $$1 }' )) + +GCJ_SONAME := $(strip $(shell tail -1 $(srcdir)/libjava/libtool-version \ + | awk -F: '{ print $$1 }' )) + +FFI_SONAME := $(strip $(shell tail -1 $(srcdir)/libffi/libtool-version \ + | awk -F: '{ print $$1 }' )) + +GOMP_SONAME := $(strip $(shell awk -F= \ + '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libgomp/configure.ac)) + +GCCMATH_SONAME := $(strip $(shell tail -1 $(srcdir)/libgcc-math/libtool-version \ + | awk -F: '{ print $$1 }' )) + +GNAT_SONAME := $(strip $(shell \ + grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ + | sed -e 's/.*"\([^"]*\)".*/\1/')) + +GNAT_VERSION := $(BASE_VERSION) + +LIBGNAT_DEP := +ifeq ($(with_libgnat),yes) + LIBGNAT_DEP := libgnat-$(GNAT_VERSION) (= $(DEB_VERSION)) +endif + +GPC_BASE_VERSION := 2.1 + +pkg_ver := -$(BASE_VERSION) +gpc_pkg_ver := -$(GPC_BASE_VERSION)$(pkg_ver) + +PKG_GCJ_EXT = $(subst 0,,$(GCJ_SONAME)) +PKG_LIBGCJ_EXT = $(PKG_GCJ_EXT)-0 + +ctrl_flags = \ + -DBINUTILSV=$(BINUTILSV) \ + -DSRCNAME=$(PKGSOURCE) \ + -D__$(DEB_TARGET_GNU_CPU)__ \ + -DARCH=$(DEB_TARGET_ARCH) \ + -DDIST=$(distribution) +ifeq ($(with_objc)-$(with_objc_gc),yes-yes) + ctrl_flags += -DOBJC_GC +endif + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_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)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DMULTILIB_ARCHS="$(multilib_archs)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) + +ifdef DEB_CROSS + 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 + +control: control-file parameters-file substvars-file versioned-files + +ifdef DEB_CROSS + languages = c c++ objc objpp + addons = libgcc lib64gcc libcxx lib64cxx cdev c++dev libobjc objcdev objppdev gccxbase +else + languages = ada c c++ fortran java objc objpp treelang # pascal + addons = gccbase cdev c++dev fdev fixincl libcxx lib4gcc \ + libgcc libffi libfortran libgcj libgcjdev gcjdoc libgnat libobjc libs \ + lib64gcc lib64cxx lib64ffi lib64gcj lib64objc lib64gfortran \ + lib32objc lib32gfortran lib32gcj lib32gcc lib32cxx \ + objcdev proto mudflap source objppdev libgomp lib32gomp lib64gomp \ + multilib # libgmath libnof lib64gnat lib64gcj ssp +# 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 lib32gcj lib64gcj gcjdoc gtkpeer qtpeer,$(addons)) + endif + ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION)) + languages = java + addons = gcj libgcj libgcjdev lib32gcj lib64gcj gcjdoc +# 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 + 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 + ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc + endif +endif + +ifeq ($(distribution),DebianXXX) +# use type-handling +ada_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(ada_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(ada_no_systems) | tr ' ' ,`)) +java_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(java_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(java_no_systems) | tr ' ' ,`)) +pascal_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(pascal_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(pascal_no_systems) | tr ' ' ,`)) +fortran_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(fortran_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(fortran_no_systems) | tr ' ' ,`)) +libgc_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(libgc_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(libgc_no_systems) | tr ' ' ,`)) +check_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(check_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(check_no_systems) | tr ' ' ,`) \ + !hurd-i386) +locale_no_archs := $(strip \ + $(shell type-handling -n -r `echo $(locale_no_cpus) | tr ' ' ,` any) \ + $(shell type-handling -n -r any `echo $(locale_no_systems) | tr ' ' ,`)) + +linux_gnu_archs := $(shell type-handling -r any linux-gnu) +else +# avoid it ... +ada_no_archs := $(strip $(foreach cpu,$(ada_no_cpus),!$(cpu)) \ + !kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386) +java_no_archs := $(strip $(foreach cpu,$(java_no_cpus),!$(cpu)) \ + !kfreebsd-amd64 !knetbsd-i386 !netbsd-i386 !hurd-i386) +pascal_no_archs := $(strip $(foreach cpu,$(pascal_no_cpus),!$(cpu)) \ + !netbsd-i386) +fortran_no_archs:= $(strip $(foreach cpu,$(fortran_no_cpus),!$(cpu)) \ + !avr) +libgc_no_archs := $(strip $(foreach cpu,$(libgc_no_cpus),!$(cpu)) \ + !knetbsd-i386) +check_no_archs := $(strip $(foreach cpu,$(check_no_cpus),!$(cpu)) \ + !hurd-i386) +locale_no_archs := $(strip $(foreach cpu,$(locale_no_cpus),!$(cpu)) \ + !hurd-i386 !knetbsd-i386 !netbsd-i386) +linux_gnu_archs := !hurd-i386 +endif + +control-file: + echo "addons: $(addons)"; \ + m4 $(ctrl_flags) \ + -DPV=$(pkg_ver) \ + -DGPC_PV=$(gpc_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) \ + -DFFI_SO=$(FFI_SONAME) \ + -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)" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32_archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch_archs)))" \ + 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) + +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 '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)'; \ + ) > 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_libssp),yes) + echo 'dep:libssp=libssp$(SSP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_libgomp),yes) + echo 'dep:libgomp=libgomp$(GOMP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32fortran),yes) + echo 'dep:libfortranbiarch=lib32gfortran$(FORTRAN_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32objc),yes) + echo 'dep:libobjcbiarch=lib32objc$(OBJC_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32ffi),yes) + echo 'sug:libffidev=lib32ffi$(FFI_SONAME)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32mudflap),yes) + echo 'dep:libmudflapbiarch=lib32mudflap$(MUDFLAP_SONAME)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32ssp),yes) + echo 'dep:libsspbiarch=lib32ssp$(SSP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib32gomp),yes) + echo 'dep:libgompbiarch=lib32gomp$(GOMP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64fortran),yes) + echo 'dep:libfortranbiarch=lib64gfortran$(FORTRAN_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64objc),yes) + echo 'dep:libobjcbiarch=lib64objc$(OBJC_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64ffi),yes) + echo 'dep:libffidev=lib64ffi$(FFI_SONAME)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64mudflap),yes) + echo 'dep:libmudflapbiarch=lib64mudflap$(MUDFLAP_SONAME)' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64ssp),yes) + echo 'dep:libsspbiarch=lib64ssp$(SSP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifeq ($(with_lib64gomp),yes) + echo 'dep:libgompbiarch=lib64gomp$(GOMP_SONAME) (>= $${gcc:Version})' \ + >> debian/substvars.local.tmp +endif +ifneq ($(with_standalone_gcj),yes) + echo 'dep:gcj=gcc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ + >> debian/substvars.local.tmp +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 +ifeq ($(DEB_HOST_ARCH),hppa) + echo 'dep:prctl=prctl' >> 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 'DEB_GPC_VERSION := $(DEB_GPC_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_FFI_SOVERSION := $(DEB_FFI_SOVERSION)'; \ + 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/*FFI*|sort -u`; \ + for f in $$fs; do \ + [ -f $$f ] || echo "CANNOT FIND $$f"; \ + [ -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/FFI/$(FFI_SONAME)/'); \ + 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/@LC@/$(GCC_SONAME)/g' \ + -e 's/@FFI@/$(FFI_SONAME)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-doc.doc-base.gomp +++ gcj-4.2-4.2-20070707/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: Apps/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@* --- gcj-4.2-4.2-20070707.orig/debian/libgcjLGCJ.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/libstdc++CXX.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/gij-wrapper-BV.1 +++ gcj-4.2-4.2-20070707/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) --- gcj-4.2-4.2-20070707.orig/debian/NEWS.html +++ gcj-4.2-4.2-20070707/debian/NEWS.html @@ -0,0 +1,494 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 4.2 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

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

+ +

Caveats

+ +
    +
  • GCC no longer accepts the -fshared-data option. + This option has had no effect in any GCC 4 release; the targets + to which the option used to apply had been removed before GCC 4.0.
  • +
+ +

General Optimizer Improvements

+ +
    +
  • New command-line options specify the possible relationships among + parameters and between parameters and global data. For example, + -fargument-noalias-anything specifies that arguments + do not alias any other storage.

    + +

    Each language will automatically use whatever option is required + by the language standard. You should not need to use these options + yourself.

  • +
+ +

New Languages and Language specific improvements

+ +
    +
  • OpenMP is now + supported for the C, C++ and Fortran compilers.
  • + +
  • New command line options -fstrict-overflow and + -Wstrict-overflow have been added. + -fstrict-overflow tells the compiler that it may + assume that the program follows the strict signed overflow + semantics permitted for the language: for C and C++ this means + that the compiler may assume that signed overflow does not occur. + For example, a loop like +
    +      for (i = 1; i > 0; i *= 2)
    +    
    + is presumably intended to continue looping until i + overflows. With -fstrict-overflow, the compiler may + assume that signed overflow will not occur, and transform this + into an infinite loop. -fstrict-overflow is turned + on by default at -O2, and may be disabled via + -fno-strict-overflow. The + -Wstrict-overflow option may be used to warn about + cases where the compiler assumes that signed overflow will not + occur. It takes five different levels: + -Wstrict-overflow=1 to 5. See the + + documentation for details. -Wstrict-overflow=1 + is enabled by -Wall.
  • + +
  • The new command line option -fno-toplevel-reorder + directs GCC to emit top-level functions, variables, and + asm statements in the same order that they appear in + the input file. This is intended to support existing code which + relies on a particular ordering (for example, code which uses + top-level asm statements to switch sections). For + new code, it is generally better to use function and variable + attributes. The -fno-toplevel-reorder option may be + used for most cases which currently use + -fno-unit-at-a-time. The + -fno-unit-at-a-time option will be removed in some + future version of GCC. If you know of a case which requires + -fno-unit-at-a-time which is not fixed by + -fno-toplevel-reorder, please open a bug report.
  • + +
+ +

C family

+ +
    +
  • The pragma redefine_extname will now + macro expand its tokens for compatibility with + SunPRO.
  • + +
  • In the next release of GCC, 4.3, -std=c99 or + -std=gnu99 will direct GCC to handle inline + functions as specified in the C99 standard. In preparation + for this, GCC 4.2 will warn about any use of non-static inline + functions in gnu99 or c99 mode. This new warning may be + disabled with the new gnu_inline function + attribute or the new -fgnu89-inline command line + option. Also, GCC 4.2 and later will define one of the + preprocessor macros __GNUC_GNU_INLINE__ or + __GNUC_STDC_INLINE__ to indicate the semantics of + inline functions in the current compilation.
  • + +
  • A new command line option -Waddress has been + added to warn about suspicious uses of memory addresses as, + for example, using the address of a function in a conditional + expression, and comparisons against the memory address of a + string literal. This warning is enabled by + -Wall.
  • + +
+ +

C++

+ +
    +
  • +

    C++ visibility handling has been overhauled.

    + +

    Restricted visiblity is propagated from classes to members, from + functions to local statics, and from templates and template arguments + to instantiations, unless the latter has explicitly declared visibility. +

    + +

    The visibility attribute for a class must come between the class-key + and the name, not after the closing brace.

    + +

    Attributes are now allowed for enums and elaborated-type-specifiers + that only declare a type.

    + +

    Members of the anonymous namespace are now local to a particular + translation unit, along with any other declarations which use them, + though they are still treated as having external linkage for language + semantics.

    +
  • + +
  • + The (undocumented) extension which permitted templates with + default arguments to be bound to template template parameters with + fewer parameters has been removed. For example: + +
    +	template <template <typename> class C>
    +	void f(C<double>) {}
    +
    +	template <typename T, typename U = int>
    +	struct S {};
    +
    +	template void f(S<double>);
    +      
    + + is no longer accepted by G++. The reason this code is not + accepted is that S is a template with two parameters; + therefore, it cannot be bound to C which has only + one parameter. +
  • + +
  • + The <?, >?, <?=, + and >?= operators, + deprecated in previous GCC releases, have been removed. +
  • + +
  • + The command line option -fconst-strings, deprecated in + previous GCC releases, has been removed. +
  • + +
  • + The configure variable enable-__cxa_atexit is now enabled by + default for more targets. Enabling this variable is necessary in order for + static destructors to be executed in the correct order, but it depends upon + the presence of a non-standard C library in the target library in order to + work. The variable is now enabled for more targets which are known to have + suitable C libraries. +
  • +
  • + -Wextra will produce warnings for if statements + with a semicolon as the only body, to catch code like: + +
    +         if (a);
    +            return 1;
    +         return 0;
    +     
    + + To suppress the warning in valid cases, use { } instead. +
  • +
  • + The C++ frontend now also produces strict aliasing warnings when + -fstrict-aliasing -Wstrict-aliasing is in effect. +
  • +
+ +

Runtime Library (libstdc++)

+
    +
  • Added support for TR1 <random>, <complex>, and C + compatibility headers. In addition, a lock-free version of + shared_ptr was contributed as part of Phillip + Jordan's Google Summer of Code project on lock-free + containers. The implementation status for TR1 can be tracked in tr1.html +
  • +
  • In association with the Summer of Code work on lock-free + containers, the interface for atomic builtins was adjusted, + creating simpler alternatives for non-threaded code paths. Also, + usage was consolidated and all elements were moved from + namespace std to + namespace__gnu_cxx. Affected interfaces are the + functions __exchange_and_add, + __atomic_add, and the objects __mutex, + __recursive_mutex, and + __scoped_lock.
  • +
  • Support for versioning weak symbol names via namespace + association was added. However, as this changes the names of + exported symbols, this is turned off by default in the current + ABI. Intrepid users can enable this feature by using + --enable-symvers=gnu-versioned-namespace during configuration. +
  • +
  • Revised, simplified, and expanded policy-based associative + containers, including data types for tree and trie forms + (basic_tree, tree, trie), + lists (list_update), and both collision-chaining and + probing hash-based containers (basic_hash_table, + cc_hash_table, gp_hash_table). More details + per the documentation. +
  • +
  • The implementation of the debug mode was modified, whereby the + debug namespaces were nested inside of namespace std + and namespace __gnu_cxx in order to resolve some long + standing corner cases involving name lookup. Debug + functionality from the policy-based data structures was + consolidated and enabled with the single macro, + _GLIBCXX_DEBUG. See PR 26142 for more + information.
  • +
  • Added extensions for type traits: + __conditional_type, __numeric_traits, + __add_unsigned, __removed_unsigned, + __enable_if.
  • +
  • Added a typelist implementation for compile-time + meta-programming. Elements for typelist construction and operation can be + found within namespace __gnu_cxx::typelist.
  • +
  • Added a new allocator, __gnu_cxx::throw_allocator, for +testing exception-safety.
  • +
  • Enabled library-wide visibility control, allowing + -fvisibility to be used.
  • +
  • Consolidated all nested namespaces and the + conversion of __gnu_internal implementation-private + details to anonymous namespaces whenever possible.
  • +
  • Implemented LWG resolutions DR 431 and DR 538.
  • +
+ +

Fortran

+
    +
  • Support for allocatable components has been added (TR 15581 and + Fortran 2003).
  • +
  • Support for the Fortran 2003 streaming IO extension has been + added.
  • +
  • The GNU Fortran compiler now uses 4-byte record markers by default + for unformatted files to be compatible with g77 and most other compilers. + The implementation allows for records greater than 2 GB and is compatible + with several other compilers. Older versions of gfortran used 8-byte + record markers by default (on most systems). In order to change the length + of the record markers, e.g. to read unformatted files created by older + gfortran versions, the + -frecord-marker=8 option can be used.
  • +
+ + +

Java (GCJ)

+ +
    +
  • + A new command line option -static-libgcj has been + added for targets that use a linker compatible with GNU Binutils. + As its name implies, this causes libgcj to be linked statically. + In some cases this causes the resulting executable to start + faster and use less memory than if the shared version of libgcj + were used. However caution should be used as it can also cause + essential parts of the library to be omitted. Some of these issues are + discussed in: + + http://gcc.gnu.org/wiki/Statically%20linking%20libgcj + +
  • + +
  • fastjar is no longer bundled with GCC. To build + libgcj, you will need either InfoZIP (both zip + and unzip) or an external jar program. + In the former case, the GCC build will install a jar + shell script that is based on InfoZIP and provides the same + functionality as fastjar.
  • +
+ + +

New Targets and Target Specific Improvements

+ +

IA-32/x86-64

+
    +
  • -mtune=generic can now be used to generate code running + well on common x86 chips. This includes AMD Athlon, + AMD Opteron, Intel Pentium-M, Intel Pentium 4 and Intel Core 2.
  • +
  • -mtune=native and -march=native will produce + code optimized for the host architecture as detected using the + cpuid instruction.
  • +
  • Added a new command line option -fstackrealign and + and __attribute__ ((force_align_arg_pointer)) + to realign the stack at runtime. This allows functions compiled + with a vector-aligned stack to be invoked from legacy objects + that keep only word-alignment.
  • +
+ +

SPARC

+
    +
  • The default CPU setting has been changed from V7 to V9 in 32-bit + mode on Solaris 7 and above. This is already the case in 64-bit + mode. It can be overridden by specifying --with-cpu + at configure time.
  • +
  • Back-end support of built-in functions for atomic memory access + has been implemented.
  • +
  • Support for the Sun UltraSPARC T1 (Niagara) processor has been + added.
  • +
+ +

M32C

+
    +
  • Various bug fixes have made some functions (notably, functions + returning structures) incompatible with previous releases. + Recompiling all libraries is recommended. Note that code + quality has considerably improved since 4.1, making a + recompile even more beneficial.
  • +
+ +

MIPS

+
    +
  • Added support for the Broadcom SB-1A core.
  • +
+ +

IA-64

+
    +
  • Added support for IA-64 data and control speculation. By default + speculation is enabled only during second scheduler pass. A number of + machine flags was introduced to control the usage of speculation for both + scheduler passes.
  • +
+ +

HPPA

+
    +
  • Added Java language support (libffi and libjava) for 32-bit + HP-UX 11 target.
  • +
+ + +

Obsolete Systems

+ +

Documentation improvements

+ +

PDF Documentation

+
    +
  • A make pdf target has been added to the + top-level makefile, enabling automated production of PDF + documentation files. (Front-ends external to GCC should modify + their Make-lang.in file to add a lang.pdf: + target.)

  • +
+ +

Other significant improvements

+ +

Build system improvements

+
    +
  • All the components of the compiler are now bootstrapped by + default. This improves the resilience to bugs in the system + compiler or binary compatibility problems, as well as providing + better testing of GCC 4.2 itself. In addition, if you build + the compiler from a combined tree, the assembler, linker, etc. + will also be bootstrapped (i.e. built with themselves).

    + +

    You can disable this behavior, and go back to + the pre-GCC 4.2 set up, by configuring GCC with + --disable-bootstrap.

  • + +
  • The rules that configure follows to find target tools + resemble more closely the locations that the built compiler + will search. In addition, you can use the new configure option + --with-target-tools to specify where to find the + target tools used during the build, without affecting what the + built compiler will use.

    + +

    This can be especially useful when building packages of + GCC. For example, you may want to build GCC with + GNU as or ld, even if the resulting compiler + to work with the native assembler and linker. To do so, you + can use --with-target-tools to point to the native + tools.

  • +
+ +

Incompatible changes to the build system

+
    +
  • Front-ends external to GCC should modify their + Make-lang.in file to replace double-colon rules (e.g. + dvi::) with normal rules (like lang.dvi:). + Front-end makefile hooks do not use double-colon rules anymore.
  • + +
  • Up to GCC 4.1, a popular way to specify the target tools used + during the build was to create directories named gas, + binutils, etc. in the build tree, and create + links to the tools from there. This does not work any more + when the compiler is bootstrapped. The new configure option + --with-target-tools provides a better way to achieve + the same effect, and works for all native and cross settings.
  • +
+ + + + + + + + + + + + + --- gcj-4.2-4.2-20070707.orig/debian/fastjar.postinst +++ gcj-4.2-4.2-20070707/debian/fastjar.postinst @@ -0,0 +1,14 @@ +#! /bin/sh -e + +if [ -f /usr/share/info/fastjar.info.gz ]; then + install-info --quiet --section "Development" "Development" \ + /usr/share/info/fastjar.info.gz +else + # GFDL invariant free + true +fi + +update-alternatives --quiet --install /usr/bin/jar jar /usr/bin/fastjar 40 \ + --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/fastjar.1.gz + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/libgcjGCJ-dev.overrides +++ gcj-4.2-4.2-20070707/debian/libgcjGCJ-dev.overrides @@ -0,0 +1 @@ +libgcj@GCJ@-dev: library-not-linked-against-libc --- gcj-4.2-4.2-20070707.orig/debian/gfortran-BV-doc.prerm +++ gcj-4.2-4.2-20070707/debian/gfortran-BV-doc.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +install-info --quiet --remove gfortran-@BV@ + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/libgcj-doc.doc-base +++ gcj-4.2-4.2-20070707/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.2), based on the classpath library. +Section: Apps/Programming + +Format: html +Index: /usr/share/doc/gcj-4.2-base/html/index.html +Files: /usr/share/doc/gcj-4.2-base/html/*.html --- gcj-4.2-4.2-20070707.orig/debian/gnat-BV-doc.doc-base.ug +++ gcj-4.2-4.2-20070707/debian/gnat-BV-doc.doc-base.ug @@ -0,0 +1,16 @@ +Document: gnat_ugn_unw-@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: Apps/Programming + +Format: html +Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn_unw.html +Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn_unw.html + +Format: info +Index: /usr/share/info/gnat_ugn_unw-@BV@.info.gz +Files: /usr/share/info/gnat_ugn_unw-@BV@* --- gcj-4.2-4.2-20070707.orig/debian/compat +++ gcj-4.2-4.2-20070707/debian/compat @@ -0,0 +1 @@ +4 --- gcj-4.2-4.2-20070707.orig/debian/fixincludes.in +++ gcj-4.2-4.2-20070707/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 "$@" --- gcj-4.2-4.2-20070707.orig/debian/gij-BV.postrm +++ gcj-4.2-4.2-20070707/debian/gij-BV.postrm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +case "$1" in + purge) + rm -f /var/lib/gcj-@BV@/classmap.db +esac + +#DEBHELPER# + +exit 0 --- gcj-4.2-4.2-20070707.orig/debian/gnatprj.gpr +++ gcj-4.2-4.2-20070707/debian/gnatprj.gpr @@ -0,0 +1,37 @@ +-- Project file for use with GNAT 3.15p +-- Copyright (c) 2005 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 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. +-- +-- 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 "/usr/share/ada/adainclude/gnatprj"; +-- project Example is +-- for Object_Dir use "obj"; +-- for Exec_Dir use "."; +-- for Main use ("example"); +-- package Linker renames Gnatprj.Linker; +-- -- Alternatively, if you need additional switches: +-- -- package Linker is +-- -- for Default_Switches ("Ada") use (Gnatprj.Linker_Switches & ...) +-- -- end Linker; +-- end Example; + +with "gnatvsn.gpr"; +project Gnatprj is + for Source_Dirs use ("/usr/share/ada/adainclude/gnatprj"); + for Object_Dir use "/usr/lib/ada/adalib/gnatprj"; + Linker_Switches := "-lgnatprj"; + package Linker is + for Default_Switches ("Ada") use (Linker_Switches); + end Linker; +end Gnatprj; --- gcj-4.2-4.2-20070707.orig/debian/lib32gcjGCJ-dev.overrides +++ gcj-4.2-4.2-20070707/debian/lib32gcjGCJ-dev.overrides @@ -0,0 +1 @@ +lib32gcj@GCJ@-dev: library-not-linked-against-libc --- gcj-4.2-4.2-20070707.orig/debian/gij-wrapper-BV +++ gcj-4.2-4.2-20070707/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); --- gcj-4.2-4.2-20070707.orig/debian/README.Bugs +++ gcj-4.2-4.2-20070707/debian/README.Bugs @@ -0,0 +1,304 @@ +Reporting Bugs in the Debian/GNU GNU Compiler Setup +=================================================== + +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. For + Debian GNU/Linux you can get a recent development snapshot from the + gcc-snapshot package in the unstable distribution. + See: http://packages.debian.org/gcc-snapshot + +- 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. + + Debian: http://bugs.debian.org/debian-gcc@lists.debian.org + Upstream: http://gcc.gnu.org/bugzilla/ + + +Where to report a bug +--------------------- + +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). + +Debian'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). + +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. + + +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 ...] --- gcj-4.2-4.2-20070707.orig/debian/TODO +++ gcj-4.2-4.2-20070707/debian/TODO @@ -0,0 +1,36 @@ +(It is recommended to edit this file with emacs' todoo mode) +Last updated: 2007-06-24 + +* 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. + +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. + +- Build both the zero-cost and setjump/longjump exceptions versions of + libgnat. In particular, gnat-glade (distributed systems) works best + with SJLJ. Currently, we only build the ZCX version. + +- Add support for building cross-compilers. + +- Add support for multilib. + +* Fortran + +- gfortran man page generation --- gcj-4.2-4.2-20070707.orig/debian/acats-killer.sh +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/gij-hppa +++ gcj-4.2-4.2-20070707/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.1.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.1.bin "$@" --- gcj-4.2-4.2-20070707.orig/debian/reduce-test-diff.awk +++ gcj-4.2-4.2-20070707/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 +} --- gcj-4.2-4.2-20070707.orig/debian/rules.parameters +++ gcj-4.2-4.2-20070707/debian/rules.parameters @@ -0,0 +1,33 @@ +# configuration parameters taken from upstream source files +GCC_VERSION := 4.2.1 +NEXT_GCC_VERSION := 4.2.2 +BASE_VERSION := 4.2 +SOURCE_VERSION := 4.2-20070707-1ubuntu2 +DEB_VERSION := 4.2-20070707-1ubuntu2 +DEB_EVERSION := 1:4.2-20070707-1ubuntu2 +GPC_BASE_VERSION := 2.1 +DEB_GPC_VERSION := +DEB_SOVERSION := 4.2-20070208 +DEB_SOEVERSION := 1:4.2-20070516 +DEB_LIBGCC_SOVERSION := 1:4.2-20070516 +DEB_LIBGCC_VERSION := 1:4.2-20070707-1ubuntu2 +DEB_STDCXX_SOVERSION := 4.2-20070516 +DEB_GCJ_SOVERSION := 4.2-20070516 +PKG_GCJ_EXT := 8 +PKG_LIBGCJ_EXT := 8-0 +DEB_FFI_SOVERSION := 4.2-20070208 +DEB_GOMP_SOVERSION := 4.2-20070208 +DEB_GCCMATH_SOVERSION := 4.2-20070208 +GCC_SONAME := 1 +CXX_SONAME := 6 +FORTRAN_SONAME := 2 +OBJC_SONAME := 2 +GCJ_SONAME := 80 +GNAT_VERSION := 4.2 +GNAT_SONAME := 4.2 +FFI_SONAME := 4 +MUDFLAP_SONAME := 0 +SSP_SONAME := 0 +GOMP_SONAME := 1 +GCCMATH_SONAME := +LIBC_DEP := libc6 --- gcj-4.2-4.2-20070707.orig/debian/treelang-BV.postinst +++ gcj-4.2-4.2-20070707/debian/treelang-BV.postinst @@ -0,0 +1,15 @@ +#! /bin/sh -e + +case "$1" in + configure) + if [ -f /usr/share/info/treelang-@BV@.info.gz ]; then + install-info --quiet --section "Development" "Development" \ + --description="The GNU Treelang compiler." \ + /usr/share/info/treelang-@BV@.info + else + # GFDL invariant free + true + fi +esac + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/libgnat-BV.overrides +++ gcj-4.2-4.2-20070707/debian/libgnat-BV.overrides @@ -0,0 +1 @@ +libgnat-@BV@: package-name-doesnt-match-sonames --- gcj-4.2-4.2-20070707.orig/debian/dh_rmemptydirs +++ gcj-4.2-4.2-20070707/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 --- gcj-4.2-4.2-20070707.orig/debian/libgccLC.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/libstdc++CXX-BV-doc.overrides +++ gcj-4.2-4.2-20070707/debian/libstdc++CXX-BV-doc.overrides @@ -0,0 +1,2 @@ +libstdc++@CXX@-@BV@-doc: extra-license-file +libstdc++@CXX@-@BV@-doc: manpage-has-errors-from-man usr/share/man/man3/__gnu_internal.3.gz --- gcj-4.2-4.2-20070707.orig/debian/gcjh-wrapper-BV.1 +++ gcj-4.2-4.2-20070707/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) --- gcj-4.2-4.2-20070707.orig/debian/gcj-wrapper-BV.1 +++ gcj-4.2-4.2-20070707/debian/gcj-wrapper-BV.1 @@ -0,0 +1,20 @@ +.TH GCJ-WRAPPER 1 "June 6, 2002" gcj-wrapper "Java User's Manual" +.SH NAME +gcj-wrapper \- a wrapper around gcj + +.SH SYNOPSIS +gcj-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fBgcj-wrapper\fR is a wrapper around gcj(1) to be called as the java +compiler. Options different for javac(1) and gcj(1) are translated, +options unknown to gcj(1) are silently ignored. + +.SH OPTIONS +See gcj-@BV@(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcj-@BV@(1) +, +.BR javac(1) --- gcj-4.2-4.2-20070707.orig/debian/gcc-BV-doc.postinst +++ gcj-4.2-4.2-20070707/debian/gcc-BV-doc.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +install-info --quiet --section "Development" "Development" \ + /usr/share/info/gcc-@BV@.info.gz + +install-info --quiet --section "Development" "Development" \ + /usr/share/info/gccint-@BV@.info.gz + +install-info --quiet --section "Development" "Development" \ + /usr/share/info/libgomp-@BV@.info.gz + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/README.snapshot +++ gcj-4.2-4.2-20070707/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. --- gcj-4.2-4.2-20070707.orig/debian/lib64gccLC.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/gccbug.1 +++ gcj-4.2-4.2-20070707/debian/gccbug.1 @@ -0,0 +1,178 @@ +.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "GCCBUG 1" +.TH GCCBUG 1 "2003-06-03" "gcc-3.4" "GNU" +.SH "NAME" +gccbug \- Reporting GCC Bugs +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +gccbug + [ \fB\-\-cc\fR \fImail-address\fR ] + [ \fB\-\-version\fR ] | [ \fB\-\-help\fR ] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBgccbug\fR is a version of \s-1GNU\s0 \s-1GNATS\s0 send-pr configured for \s-1GCC\s0 bug +reporting. +.PP +Invoking \fBgccbug\fR calls the editor named in your environment +variable \fB\s-1VISUAL\s0\fR or \fB\s-1EDITOR\s0\fR on a problem report template. +.PP +Your bug reports play an essential role in making \s-1GCC\s0 reliable. However +since the maintainers are very overloaded, please first make sure that: +.IP "\(bu" 4 +The problem is not already known. See +<\fBhttp://gcc.gnu.org/bugs.html#known\fR> for a list of known bugs. +If it isn't known, then you should report the problem. +.Sp +You can browse the bug database for bugs reported at +<\fBhttp://gcc.gnu.org/cgi\-bin/gnatsweb.pl\fR>. +.IP "\(bu" 4 +You include the information that makes for fixing the bug. See +<\fBhttp://gcc.gnu.org/bugs.html#report\fR> for bug reporting instructions. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-\-cc\fR \fImail-address\fR" 4 +.IX Item "--cc mail-address" +Specifies the mail-address to which the \s-1PR\s0 should be carbon\-copied. +.IP "\fB\-\-version\fR" 4 +.IX Item "--version" +Displays the \fBgccbug\fR version number and a usage summary. No mail +is sent. +.IP "\fB\-\-help\fR" 4 +.IX Item "--help" +Displays a usage summary for \fBgccbug\fR. No mail is sent. +.PP +\&\fBgccbug\fR has more (undocumented) options, which may be +unsupported by a future \s-1GCC\s0 bug tracking system. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIgcc\fR\|(1), \fIsend\-pr\fR\|(1), \fIsend\-pr\fR\|(8), the info entries for \fIgcc\fR (node Bugs), +and the online pages at <\fBhttp://gcc.gnu.org/bugs.html\fR>. --- gcj-4.2-4.2-20070707.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcj-4.2-4.2-20070707/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: Apps/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@* --- gcj-4.2-4.2-20070707.orig/debian/rules.unpack +++ gcj-4.2-4.2-20070707/debian/rules.unpack @@ -0,0 +1,179 @@ +# -*- 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 + +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/bugreport.texi \ + gcc/doc/cfg.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/cpp.texi \ + gcc/doc/c-tree.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcc.texi \ + gcc/doc/gcov.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/makefile.texi \ + gcc/doc/md.texi \ + gcc/doc/objc.texi \ + gcc/doc/options.texi \ + gcc/doc/passes.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/invoke.texi \ + gcc/fortran/intrinsic.texi \ + libstdc++-v3/docs/html/17_intro/porting.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 \ + gcc/treelang/treelang.texi \ + libgomp/libgomp.texi \ + +gfdl_manpages = \ + gcc/doc/cpp.1 \ + gcc/doc/g++.1 \ + gcc/doc/gcc.1 \ + gcc/doc/gcj.1 \ + gcc/doc/gcj-dbtool.1 \ + gcc/doc/gcjh.1 \ + gcc/doc/gcov.1 \ + gcc/doc/gij.1 \ + gcc/doc/gjnih.1 \ + gcc/doc/grmic.1 \ + gcc/doc/grmiregistry.1 \ + gcc/doc/jcf-dump.1 \ + gcc/doc/jv-convert.1 \ + gcc/doc/jv-scan.1 + +# --------------------------------------------------------------------------- +$(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);; \ + *) false; \ + esac + mv $(gcc_srcdir) $(srcdir) +ifeq (0,1) + cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ + $(gfdl_texinfo_files) \ + $(gfdl_toplevel_texinfo_files) \ + $(gfdl_manpages) \ + libstdc++-v3/docs/html/17_intro/porting.html +endif +ifeq ($(GFDL_INVARIANT_FREE),yes) + rm -f $(srcdir)/gcc/doc/*.1 + rm -f $(srcdir)/gcc/doc/*.info + for i in $(gfdl_texinfo_files); do \ + cp debian/dummy.texi $(srcdir)/$$i; \ + done + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + sed "s/@name@/$$n/g" debian/gcc-dummy.texi > $(srcdir)/$$i; \ + done + cp debian/porting.* $(srcdir)/libstdc++-v3/docs/html/17_intro/ +endif + echo "$(gcc_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +$(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) + rm -f $(srcdir)/gcc/java/*.1 + rm -f $(srcdir)/gcc/java/*.info + for i in $(gfdl_texinfo_files); do \ + cp debian/dummy.texi $(srcdir)/$$i; \ + done + for i in $(gfdl_toplevel_texinfo_files); do \ + n=$$(basename $$i .texi); \ + sed "s/@name@/$$n/g" debian/gcc-dummy.texi > $(srcdir)/$$i; \ + done +endif + echo "$(gcj_tarball) unpacked." > $@ + +# --------------------------------------------------------------------------- +$(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);; \ + *) 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." > $@ --- gcj-4.2-4.2-20070707.orig/debian/gnat-BV-doc.postinst +++ gcj-4.2-4.2-20070707/debian/gnat-BV-doc.postinst @@ -0,0 +1,16 @@ +#! /bin/sh -e + +case "$1" in + configure) + install-info --quiet --section "Development" "Development" \ + --description="GNAT (GNU Ada) User's Guide for Unix Platforms." \ + /usr/share/info/gnat_ugn_unw-@BV@.info + install-info --quiet --section "Development" "Development" \ + --description="GNAT (GNU Ada) Reference Manual." \ + /usr/share/info/gnat_rm-@BV@.info + install-info --quiet --section "Development" "Development" \ + --description="GNAT Coding Style." \ + /usr/share/info/gnat-style-@BV@.info +esac + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/libgcj-common.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/gnat-BV-doc.doc-base.style +++ gcj-4.2-4.2-20070707/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: Apps/Programming + +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@* --- gcj-4.2-4.2-20070707.orig/debian/lib32gccLC.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/control.m4 +++ gcj-4.2-4.2-20070707/debian/control.m4 @@ -0,0 +1,1408 @@ +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(standard) +ifelse(DIST,`Ubuntu',`dnl +ifelse(regexp(SRCNAME, `gcc-snapshot\|gnat'),0,`dnl +Maintainer: Ubuntu MOTU Developers +', `dnl +Maintainer: Ubuntu Core developers +')dnl SRCNAME +XSBC-Original-Maintainer: MAINTAINER +', `dnl +Maintainer: MAINTAINER +')dnl DIST +Uploaders: Matthias Klose +Standards-Version: 3.7.2 +ifdef(`TARGET',`dnl cross +Build-Depends: dpkg-dev (>= 1.13.9), dpkg-cross (>= 1.25.99), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP m4, autoconf, autoconf2.13, automake1.9, libtool, autogen, gawk, bzip2, BINUTILS_BUILD_DEP, debhelper (>= 5.0), bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, make (>= 3.81) +',`dnl native +Build-Depends: dpkg-dev (>= 1.13.9), gcc-4.1-multilib [amd64 i386 powerpc ppc64 s390 sparc kfreebsd-amd64] | gcc-4.2-multilib [amd64 i386 powerpc ppc64 s390 sparc kfreebsd-amd64], LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], m4, autoconf, autoconf2.13, automake1.9, libtool, autogen, gawk, expect-tcl8.3 [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], debhelper (>= 5.0), gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, texinfo (>= 4.3), libmpfr-dev (>= 2.2.1) [fortran_no_archs], locales [locale_no_archs], procps [linux_gnu_archs], sharutils, PASCAL_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP realpath (>= 1.9.12), chrpath, lsb-release, make (>= 3.81) +Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP JAVA_BUILD_INDEP +')dnl +dnl Build-Conflicts: qt3-dev-tools + +ifelse(SRCNAME,gcc-snapshot,`dnl +Package: gcc-snapshot +Architecture: any +Section: devel +Priority: extra +Depends: binutils`'TS (>= ${binutils:Version}), ${dep:libcdev}, ${dep:libunwinddev}, ${shlibs:Depends} +Provides: 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). + . + 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 +Section: libs +Priority: PRI(required) +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(required) +Conflicts: gcc-3.5-base +Replaces: gcc-3.5-base +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) +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) +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} +ifdef(`TARGET',`Provides: libgcc1-TARGET-dcv1 +',`')`'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`'LS +Architecture: ifdef(`TARGET',`all',`m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: BASEDEP, ${shlibs:Depends} +ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1 +',`')`'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 +')`'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} +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 +')`'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} +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 +')`'dnl lib64gcc + +ifdef(`TARGET', `', `dnl +ifenabled(`lib32gcc',` +Package: lib32gcc1`'LS +Architecture: biarch32_archs +Section: libs +Priority: optional +Depends: BASEDEP, ${dep:libcbiarch} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +ifelse(DIST,`Ubuntu', `Replaces: ia32-libs-openoffice.org (<< 1ubuntu3)', `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. +')`'dnl +')`'dnl + +ifdef(`TARGET', `', ` +ifenabled(`libgmath',` +Package: libgccmath`'GCCMATH_SO +Architecture: i386 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends} +Description: GCC math support library + Support library for GCC. + +Package: lib32gccmath`'GCCMATH_SO +Architecture: amd64 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends} +Description: GCC math support library (32bit) + Support library for GCC. + +Package: lib64gccmath`'GCCMATH_SO +Architecture: i386 +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs: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} +Recommends: ${dep:libcdev}, libmudflap`'MF_SO`'PV-dev`'LS (>= ${gcc:Version}) +Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), gcc`'PV-locales (>= ${gcc:SoftVersion}) +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: 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} +Recommends: ${dep:libmudflapbiarch} +Replaces: gcc-4.2 (<< 4.2-20061008) +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 cdev + +ifenabled(`cdev',` +ifdef(`TARGET', `', ` +Package: gcc`'PV-hppa64 +Architecture: hppa +Section: devel +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs: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. +')`'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} +Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) +Conflicts: cpp-4.2 (<< 4.2-20070307), gcc-4.2 (<< 4.2-20070307), g++-4.2 (<< 4.2-20070307), gobjc-4.2 (<< 4.2-20070307), gobjc++-4.2 (<< 4.2-20070307), gfortran-4.2 (<< 4.2-20070307), treelang-4.2 (<< 4.2-20070307), gcj-4.2 (<< 4.2-20070307), gcj-4.2 (<< 4.2-20070307), gcc-4.2-multilib (<< 4.2-20070307), g++-4.2-multilib (<< 4.2-20070307), gobjc-4.2-multilib (<< 4.2-20070307), gobjc++-4.2-multilib (<< 4.2-20070307), gfortran-4.2-multilib (<< 4.2-20070307) +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}) +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}) +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} +Provides: c++-compiler`'TS, c++abi2-dev +Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +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: 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} +Suggests: ${dep:libcxxbiarchdbg} +Replaces: libstdc++6-4.2-dev (<< 4.2-20061008) +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++ + +ifdef(`TARGET', `', ` +ifenabled(`mudflap',` +Package: libmudflap`'MF_SO +Architecture: any +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends} +Description: GCC mudflap shared support libraries + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib32mudflap`'MF_SO +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libmudflap0 (<< 4.1) +Description: GCC mudflap shared support libraries (32bit) + The libmudflap libraries are used by GCC for instrumenting pointer and array + dereferencing operations. + +Package: lib64mudflap`'MF_SO +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs: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: libmudflap`'MF_SO`'PV-dev +Architecture: any +Section: libdevel +Priority: PRI(optional) +Depends: BASEDEP, libmudflap`'MF_SO (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs: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 +')`'dnl native + +ifdef(`TARGET', `', ` +ifenabled(`ssp',` +Package: libssp`'SSP_SO +Architecture: any +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs: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 +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libssp0 (<< 4.1) +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 +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs: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. +')`'dnl +')`'dnl native + +ifdef(`TARGET', `', ` +ifenabled(`libgomp',` +Package: libgomp`'GOMP_SO +Architecture: any +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs: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: lib32gomp`'GOMP_SO +Architecture: biarch32_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +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: lib64gomp`'GOMP_SO +Architecture: biarch64_archs +Section: libs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs: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. +')`'dnl +')`'dnl native + +ifenabled(`proto',` +Package: protoize +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (>= ${gcc:Version}), ${shlibs: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}) +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: 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} +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}) +Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler`'TS +ifdef(`OBJC_GC',`Recommends: libgc-dev', `dnl') +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: 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} +Replaces: gobjc-4.2 (<< 4.2-20061008) +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: any +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, ${shlibs:Depends} +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libobjc + +ifenabled(`lib64objc',` +Package: lib64objc`'OBJC_SO +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +Description: Runtime library for GNU Objective-C applications (64bit) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib64objc + +ifenabled(`lib32objc',` +Package: lib32objc`'OBJC_SO +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends} +Description: Runtime library for GNU Objective-C applications (32bit) + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl lib32objc +')`'dnl objc + +ifenabled(`fortran',` +ifenabled(`fdev',` +Package: gfortran`'PV +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), libgfortran`'FORTRAN_SO (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends} +Provides: fortran95-compiler +Suggests: ${gfortran:multilib}, gfortran`'PV-doc +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: MULTILIB_ARCHS +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(optional)') +Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libfortranbiarch}, ${shlibs:Depends} +Replaces: gfortran-4.2 (<< 4.2-20061008) +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}) +Description: Documentation for the GNU Fortran compiler (gfortran) + Documentation for the GNU Fortran 95 compiler in info `format'. +')`'dnl gfdldoc +')`'dnl fdev + +ifenabled(`libfortran',` +Package: libgfortran`'FORTRAN_SO +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, ${shlibs:Depends} +Description: Runtime library for GNU Fortran applications + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl libgfortran + +ifenabled(`lib64gfortran',` +Package: lib64gfortran`'FORTRAN_SO +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +Description: Runtime library for GNU Fortran applications (64bit) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib64gfortran + +ifenabled(`lib32gfortran',` +Package: lib32gfortran`'FORTRAN_SO +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends} +Description: Runtime library for GNU Fortran applications (32bit) + Library needed for GNU Fortran applications linked against the + shared library. +')`'dnl lib32gfortran +')`'dnl fortran + +ifenabled(`java',` +ifenabled(`gcj',` +Package: gcj`'PV +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), ${dep:gcj}, ${dep:libcdev}, gij`'PV (= ${gcj:Version}), libgcj`'GCJ_SO-dev (= ${gcj:Version}), libgcj`'GCJ_SO-jar (>= ${gcj:SoftVersion}), ecj (>= 3.2.1-6), java-common, ${shlibs:Depends} +Recommends: fastjar, ecj-gcj +Suggests: java-gcj-compat-dev +Provides: java-compiler +Conflicts: cpp-4.1 (<< 4.1.1), gcc-4.1 (<< 4.1.1), java-gcj-compat-dev (<< 1.0.56-2) +Description: The GNU compiler 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. +')`'dnl gcj + +ifenabled(`libgcj',` +ifenabled(`libgcjcommon',` +Package: libgcj-common +Section: libs +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}) +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: gij`'PV +Priority: optional +Architecture: any +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends} +Recommends: libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}) +Suggests: fastjar, gcj`'PV (= ${gcj:Version}), java-gcj-compat +Replaces: libgcj8 +Provides: java-virtual-machine, java2-runtime, java1-runtime, java-runtime +Description: The GNU Java bytecode interpreter + GIJ is 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. + +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} +Recommends: libgcj`'GCJ_SO-jar (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}) +Suggests: libgcj`'GCJ_SO-dbg +Conflicts: libgcj8 +Replaces: libgcj8, libgcj8-awt (<< 4.2-20060817) +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: libgcj`'GCJ_SO-jar +Section: libs +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT (>= ${gcj:SoftVersion}) +Conflicts: libgcj7-common +Replaces: libgcj7-common +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: libs +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:Version}), libgcj`'LIBGCJ_EXT (>= ${gcj:Version}) +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} +Suggests: ${pkg:gcjqt} +Replaces: libgcj8-awt-gtk (<< 4.2-20070210) +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} +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} +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 + +Package: gappletviewer`'PV +Section: utils +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), gij`'PV (= ${gcj:Version}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), ${shlibs:Depends} +Description: Standalone application to execute Java (tm) applets + gappletviewer is a standalone application to execute Java (tm) applets. + +Package: gcjwebplugin`'PV +Section: web +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), gappletviewer`'PV (= ${gcj:Version}), ${shlibs:Depends}, firefox | mozilla-browser | epiphany-browser | galeon | konqueror +Description: Web browser plugin to execute Java (tm) applets + gcjwebplugin is a little web browser plugin to execute Java (tm) applets. + It is targeted for Mozilla and compatible browsers that support the NPAPI. +')`'dnl libgcj + +ifenabled(`lib64gcj',` +Package: lib64gcj`'LIBGCJ_EXT +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj-common, ${shlibs:Depends} +Description: Java runtime library for use with gcj (64bit) + 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. + +ifenabled(`gcjbc',` +Package: lib64gcj-bc +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:Version}), lib64gcj`'LIBGCJ_EXT (>= ${gcj:Version}) +Description: Link time only library for use with gcj (64bit) + 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 +')`'dnl lib64gcj + +ifenabled(`lib32gcj',` +Package: lib32gcj`'LIBGCJ_EXT +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj-common, lib32stdc++`'CXX_SO`'LS, lib32z1 +Suggests: lib32gcj`'GCJ_SO-dbg +Description: Java runtime library for use with gcj (32bit) + 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. + +ifenabled(`gcjbc',` +Package: lib32gcj-bc +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:Version}), lib32gcj`'LIBGCJ_EXT (>= ${gcj:Version}) +Description: Link time only library for use with gcj (32bit) + 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 +')`'dnl lib32gcj + +ifenabled(`libgcjdev',` +Package: libgcj`'GCJ_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), gcj`'PV (= ${gcj:Version}), libgcj`'GCJ_SO-jar (>= ${gcj:SoftVersion}), libgcj`'LIBGCJ_EXT-awt (= ${gcj:Version}), libgcj-bc, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends} +Suggests: libgcj-doc +Description: Java development headers and static library for use with gcj + These are the development headers and static libraries 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: lib32gcj`'GCJ_SO-dev +Section: libdevel +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'GCJ_SO-dev (= ${gcj:Version}), lib32gcj-bc, lib32gcj`'LIBGCJ_EXT (= ${gcj:Version}), lib32z1-dev, ${shlibs:Depends} +Description: Java development and static library for use with gcj (32bit) + These are the development headers and static libraries 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: libdevel +Architecture: any +Priority: extra +Depends: gcj`'PV-base (= ${gcj:Version}), libgcj`'LIBGCJ_EXT (= ${gcj:Version}) +Recommends: binutils +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: lib32gcj`'GCJ_SO-dbg +Section: libdevel +Architecture: biarch32_archs +Priority: extra +Depends: gcj`'PV-base (= ${gcj:Version}), lib32gcj`'LIBGCJ_EXT (= ${gcj:Version}) +Recommends: binutils +Description: Debugging symbols for libraries provided in lib32gcj`'GCJ_SO-dev + The package provides debugging symbols for the libraries provided + in lib32gcj`'GCJ_SO-dev. + . + binutils is required to show file names and line numbers in stack traces. + +Package: libgcj`'GCJ_SO-src +Section: libdevel +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}), gcj`'PV (>= ${gcj:SoftVersion}), libgcj`'GCJ_SO-jar (= ${gcj:Version}) +Description: libgcj java sources for use in eclipse + These are the java source files packaged as a zip file for use in development + environments like eclipse. + +ifenabled(`gcjdoc',` +Package: libgcj-doc +Section: doc +Architecture: all +Priority: PRI(optional) +Depends: gcj`'PV-base (>= ${gcj:SoftVersion}) +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(`libffi',` +Package: libffi`'FFI_SO +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV`'-base (= ${gcc:Version}), ${shlibs:Depends} +Description: Foreign Function Interface library runtime + A foreign function interface is the popular name for the interface that + allows code written in one language to call code written in another + language. + +Package: lib32ffi`'FFI_SO +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcc`'PV`'-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libffi4 (<< 4.1) +Description: Foreign Function Interface library runtime (32bit) + A foreign function interface is the popular name for the interface that + allows code written in one language to call code written in another + language. + +Package: lib64ffi`'FFI_SO +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: gcc`'PV`'-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libffi4 (<< 4.1) +Description: Foreign Function Interface library runtime (64bit) + A foreign function interface is the popular name for the interface that + allows code written in one language to call code written in another + language. + +Package: libffi`'FFI_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV`'-base (= ${gcc:Version}), libffi`'FFI_SO (>= ${gcc:Version}) +Suggests: ${sug:libffidev} +Provides: libffi-dev +Conflicts: libffi1-dev, libffi2-dev, libffi3-dev, libffi-dev, libffi +Description: Foreign Function Interface library (development files) + This package contains the headers and static library files necessary for + building programs which use libffi. + . + A foreign function interface is the popular name for the interface that + allows code written in one language to call code written in another + language. +')`'dnl libffi + +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} +ifdef(`TARGET',`Provides: libstdc++CXX_SO-TARGET-dcv1 +',`')`'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 +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 +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(`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} +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, libstdc++6-4.2-dev (<< 4.2-20070307), libgcj8-dev (<< 4.2-20070307) +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}) +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: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: BASEDEP, libstdc++CXX_SO`'LS (>= ${gcc:Version}) +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 +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: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: BASEDEP, lib32stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}) +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib32stdc++6-4.0-dbg`'LS, lib32stdc++6-4.1-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: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: BASEDEP, lib64stdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO`'PV-dev`'LS (= ${gcc:Version}) +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Conflicts: lib64stdc++6-4.0-dbg`'LS, lib64stdc++6-4.1-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}) +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, libstdc++6-4.0-doc, libstdc++6-4.1-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:Version}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual +Provides: ada-compiler +Conflicts: gnat (<< 4.1), gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5, gnat-4.0, gnat-4.1 +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} +Description: Runtime library for GNU Ada applications + Library needed for GNU Ada applications linked against the shared library. + +Package: libgnat`'-GNAT_V-dbg +Section: libdevel +Architecture: any +Priority: extra +Depends: gnat`'PV-base (= ${gnat:Version}), libgnat`'-GNAT_V (= ${gnat:Version}) +Recommends: gnat-gdb (>= 6.4) +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: any +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}) +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}) +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: libdevel +Depends: gnat`'PV-base (= ${gnat:Version}), libgnatvsn`'GNAT_V (= ${gnat:Version}) +Recommends: gnat-gdb (>= 6.4), libgnatvsn-dev (= ${gnat:Version}) +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: any +Priority: PRI(optional) +Depends: gnat`'PV-base (= ${gnat:Version}), gnat`'PV (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}), libgnatvsn-dev (= ${gnat:Version}) +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}) +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: libdevel +Depends: gnat`'PV-base (= ${gnat:Version}), libgnatprj`'GNAT_V (= ${gnat:Version}) +Recommends: gnat-gdb (>= 6.4), libgnatprj-dev (= ${gnat:Version}) +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} +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) +Suggests: gnat`'PV +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`'GPC_PV +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends} +Recommends: libgmp3-dev, libncurses5-dev +Suggests: gpc`'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. + . + WARNING: the integration of gpc into gcc-4.x is still in an experimental + stage. For production use, please use gpc or gpc-2.1-3.4. + +Package: gpc`'GPC_PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: SOFTBASEDEP +Replaces: gpc (<= 2.91.58-3) +Suggests: gpc`'GPC_PV +Description: Documentation for the GNU Pascal compiler (gpc) + Documentation for the GNU Pascal compiler in info `format'. + . + WARNING: the integration of gpc into gcc-4.x is still in an experimental + stage. For production use, please use gpc or gpc-2.1-3.4. +')`'dnl pascal + +ifenabled(`treelang',` +Package: treelang`'PV +Architecture: any +Priority: PRI(optional) +Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends} +Description: The GNU Treelang compiler + Treelang is a sample language, useful only to help people understand how + to implement a new language front end to GCC. It is not a useful + language in itself other than as an example or basis for building a new + language. Therefore only language developers are likely to have an + interest in it. +')`'dnl treelang + +ifdef(`TARGET',`',`dnl +ifenabled(`libs',` +Package: gcc`'PV-soft-float +Architecture: arm armeb +Priority: PRI(optional) +Depends: BASEDEP, ifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs: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} +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}) +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})') +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: gcc`'PV-base (>= ${gcc:SoftVersion}), make (>= 3.81) +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 --- gcj-4.2-4.2-20070707.orig/debian/gcj-BV.doc-base +++ gcj-4.2-4.2-20070707/debian/gcj-BV.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: Apps/Programming + +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@* --- gcj-4.2-4.2-20070707.orig/debian/gnat-BV-doc.doc-base.rm +++ gcj-4.2-4.2-20070707/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: Apps/Programming + +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@* --- gcj-4.2-4.2-20070707.orig/debian/multiarch.inc +++ gcj-4.2-4.2-20070707/debian/multiarch.inc @@ -0,0 +1,38 @@ + +#if defined(__i486_linux_gnu__) + { "64", "x86_64-linux-gnu"}, +#endif + +#if defined(__powerpc64_linux_gnu__) + { "32", "powerpc-linux-gnu"}, +#endif + +#if defined(__x86_64_linux_gnu__) + { "32", "i486-linux-gnu"}, +#endif + +#if defined(__powerpc_linux_gnu__) + { "64", "powerpc64-linux-gnu"}, +#endif + +#if defined(__sparc_linux_gnu__) + { "64", "sparc64-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", "mipsel64-linux-gnuabin32"}, + { "64", "mipsel64-linux-gnuabi64"}, +#endif + +#if defined(__x86_64_kfreebsd_gnu__) + { "32", "i486-kfreebsd-gnu"}, +#endif --- gcj-4.2-4.2-20070707.orig/debian/lib32stdc++CXX.postinst +++ gcj-4.2-4.2-20070707/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# --- gcj-4.2-4.2-20070707.orig/debian/gcj-wrapper-BV +++ gcj-4.2-4.2-20070707/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); --- gcj-4.2-4.2-20070707.orig/debian/cpp-BV-doc.prerm +++ gcj-4.2-4.2-20070707/debian/cpp-BV-doc.prerm @@ -0,0 +1,6 @@ +#! /bin/sh -e + +install-info --quiet --remove cpp-@BV@ +install-info --quiet --remove cppinternals-@BV@ + +#DEBHELPER# --- gcj-4.2-4.2-20070707.orig/debian/README.cross +++ gcj-4.2-4.2-20070707/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.2 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.2 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.2. + +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.2 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 --- gcj-4.2-4.2-20070707.orig/debian/NEWS.gcc +++ gcj-4.2-4.2-20070707/debian/NEWS.gcc @@ -0,0 +1,386 @@ +GCC 4.2 Release Series - Changes, New Features, and Fixes +========================================================= + + +Caveats +======= + +GCC no longer accepts the -fshared-data option. This option has had +no effect in any GCC 4 release; the targets to which the option used +to apply had been removed before GCC 4.0. + + +General Optimizer Improvements +============================== + +- New command-line options specify the possible relationships among + parameters and between parameters and global data. For example, + -fargument-noalias-anything specifies that arguments do not alias + any other storage. + +- Each language will automatically use whatever option is required by + the language standard. You should not need to use these options + yourself. + + +New Languages and Language specific improvements +================================================ + +- OpenMP is now supported for the C, C++ and Fortran compilers. + +- New command line options -fstrict-overflow and -Wstrict-overflow + have been added. -fstrict-overflow tells the compiler that it may + assume that the program follows the strict signed overflow semantics + permitted for the language: for C and C++ this means that the + compiler may assume that signed overflow does not occur. For + example, a loop like + + for (i = 1; i > 0; i *= 2) + + is presumably intended to continue looping until i overflows. With + -fstrict-overflow, the compiler may assume that signed overflow will + not occur, and transform this into an infinite loop. + -fstrict-overflow is turned on by default at -O2, and may be + disabled via -fno-strict-overflow. The -Wstrict-overflow option may + be used to warn about cases where the compiler assumes that signed + overflow will not occur. It takes five different levels: + -Wstrict-overflow=1 to 5. See the documentation for details. + -Wstrict-overflow=1 is enabled by -Wall. + +- The new command line option -fno-toplevel-reorder directs GCC to + emit top-level functions, variables, and asm statements in the same + order that they appear in the input file. This is intended to + support existing code which relies on a particular ordering (for + example, code which uses top-level asm statements to switch + sections). For new code, it is generally better to use function and + variable attributes. The -fno-toplevel-reorder option may be used + for most cases which currently use -fno-unit-at-a-time. The + -fno-unit-at-a-time option will be removed in some future version of + GCC. If you know of a case which requires -fno-unit-at-a-time which + is not fixed by -fno-toplevel-reorder, please open a bug report. + + +C family +-------- + +- The pragma redefine_extname will now macro expand its tokens for + compatibility with SunPRO. + +- In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct + GCC to handle inline functions as specified in the C99 standard. In + preparation for this, GCC 4.2 will warn about any use of non-static + inline functions in gnu99 or c99 mode. This new warning may be + disabled with the new gnu_inline function attribute or the new + -fgnu89-inline command line option. Also, GCC 4.2 and later will + define one of the preprocessor macros __GNUC_GNU_INLINE__ or + __GNUC_STDC_INLINE__ to indicate the semantics of inline functions + in the current compilation. + +- A new command line option -Waddress has been added to warn about + suspicious uses of memory addresses as, for example, using the + address of a function in a conditional expression, and comparisons + against the memory address of a string literal. This warning is + enabled by -Wall. + + +C++ +--- + +- C++ visibility handling has been overhauled. + + Restricted visiblity is propagated from classes to members, from + functions to local statics, and from templates and template + arguments to instantiations, unless the latter has explicitly + declared visibility. + + The visibility attribute for a class must come between the class-key + and the name, not after the closing brace. + + Attributes are now allowed for enums and elaborated-type-specifiers + that only declare a type. + + Members of the anonymous namespace are now local to a particular + translation unit, along with any other declarations which use them, + though they are still treated as having external linkage for + language semantics. + +- The (undocumented) extension which permitted templates with default + arguments to be bound to template template parameters with fewer + parameters has been removed. For example: + + template