--- gcc-3.4-3.4.6.orig/debian/cross-unwind/path_max.patch +++ gcc-3.4-3.4.6/debian/cross-unwind/path_max.patch @@ -0,0 +1,21 @@ +--- src.orig/os-linux.h 2004-11-04 00:08:07.000000000 +0300 ++++ src/os-linux.h 2005-01-04 22:56:46.000000000 +0300 +@@ -26,6 +26,8 @@ + #ifndef os_linux_h + #define os_linux_h + ++#include ++ + struct map_iterator + { + off_t offset; +--- src.orig/ptrace/_UPT_find_proc_info.c 2004-11-04 00:08:07.000000000 +0300 ++++ src/ptrace/_UPT_find_proc_info.c 2005-01-04 23:37:34.000000000 +0300 +@@ -35,6 +35,7 @@ + #if UNW_TARGET_IA64 + + #include "elf64.h" ++#include + + static unw_word_t + find_gp (struct UPT_info *ui, Elf64_Phdr *pdyn, Elf64_Addr load_base) --- gcc-3.4-3.4.6.orig/debian/cross-unwind/Gcursor_i.h +++ gcc-3.4-3.4.6/debian/cross-unwind/Gcursor_i.h @@ -0,0 +1,33 @@ +#ifndef cursor_i_h +#define cursor_i_h + +/* + * DO NOT MODIFY + * + * This file was generated by ./a.out. + * + */ + +#define IP_OFF 8 /* 0x8 */ +#define PR_OFF 24 /* 0x18 */ +#define BSP_OFF 32 /* 0x20 */ +#define PSP_OFF 48 /* 0x30 */ +#define PFS_LOC_OFF 152 /* 0x98 */ +#define RNAT_LOC_OFF 168 /* 0xa8 */ +#define UNAT_LOC_OFF 328 /* 0x148 */ +#define LC_LOC_OFF 360 /* 0x168 */ +#define FPSR_LOC_OFF 376 /* 0x178 */ +#define B1_LOC_OFF 392 /* 0x188 */ +#define B2_LOC_OFF 408 /* 0x198 */ +#define B3_LOC_OFF 424 /* 0x1a8 */ +#define B4_LOC_OFF 440 /* 0x1b8 */ +#define B5_LOC_OFF 456 /* 0x1c8 */ +#define F2_LOC_OFF 472 /* 0x1d8 */ +#define F3_LOC_OFF 488 /* 0x1e8 */ +#define F4_LOC_OFF 504 /* 0x1f8 */ +#define F5_LOC_OFF 520 /* 0x208 */ +#define FR_LOC_OFF 536 /* 0x218 */ +#define LOC_SIZE 16 /* 0x10 */ +#define SIGCONTEXT_ADDR_OFF 824 /* 0x338 */ + +#endif /* cursor_i_h */ --- gcc-3.4-3.4.6.orig/debian/cross-unwind/Lcursor_i.h +++ gcc-3.4-3.4.6/debian/cross-unwind/Lcursor_i.h @@ -0,0 +1,33 @@ +#ifndef cursor_i_h +#define cursor_i_h + +/* + * DO NOT MODIFY + * + * This file was generated by ./a.out. + * + */ + +#define IP_OFF 8 /* 0x8 */ +#define PR_OFF 24 /* 0x18 */ +#define BSP_OFF 32 /* 0x20 */ +#define PSP_OFF 48 /* 0x30 */ +#define PFS_LOC_OFF 104 /* 0x68 */ +#define RNAT_LOC_OFF 112 /* 0x70 */ +#define UNAT_LOC_OFF 192 /* 0xc0 */ +#define LC_LOC_OFF 208 /* 0xd0 */ +#define FPSR_LOC_OFF 216 /* 0xd8 */ +#define B1_LOC_OFF 224 /* 0xe0 */ +#define B2_LOC_OFF 232 /* 0xe8 */ +#define B3_LOC_OFF 240 /* 0xf0 */ +#define B4_LOC_OFF 248 /* 0xf8 */ +#define B5_LOC_OFF 256 /* 0x100 */ +#define F2_LOC_OFF 264 /* 0x108 */ +#define F3_LOC_OFF 272 /* 0x110 */ +#define F4_LOC_OFF 280 /* 0x118 */ +#define F5_LOC_OFF 288 /* 0x120 */ +#define FR_LOC_OFF 296 /* 0x128 */ +#define LOC_SIZE 8 /* 0x8 */ +#define SIGCONTEXT_ADDR_OFF 456 /* 0x1c8 */ + +#endif /* cursor_i_h */ --- gcc-3.4-3.4.6.orig/debian/cross-unwind/README +++ gcc-3.4-3.4.6/debian/cross-unwind/README @@ -0,0 +1,10 @@ +Files in this directory are used to cross-compile libunwind while building +cross-gcc for ia64 target. Libunwind source can't cross-compile as-is because +it builds tools to generate two header files that are used later in build +process, and this procedure can't handle cross-compiling case properly. + +Fixing build procedure seems too hard because autotools don't seem to +support this case. + +So, as a temporary solution, files are pre-built on ia64 host and provided +in this directory. --- gcc-3.4-3.4.6.orig/debian/patches/link-libs.dpatch +++ gcc-3.4-3.4.6/debian/patches/link-libs.dpatch @@ -0,0 +1,132 @@ +#! /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 -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 -u ./gcc/config/t-slibgcc-elf-ver~ ./gcc/config/t-slibgcc-elf-ver +--- ./gcc/config/t-slibgcc-elf-ver~ 2003-01-26 12:35:07.000000000 +0100 ++++ ./gcc/config/t-slibgcc-elf-ver 2004-05-28 17:23:02.856048856 +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_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ + rm -f $(SHLIB_SOLINK) && \ + if [ -f $(SHLIB_NAME) ]; then \ +diff -u ./libf2c/Makefile.in~ ./libf2c/Makefile.in +--- ./libf2c/Makefile.in~ 2003-07-04 21:53:54.000000000 +0200 ++++ ./libf2c/Makefile.in 2004-05-28 17:17:35.334839648 +0200 +@@ -154,6 +154,7 @@ + $(LIBTOOL) --mode=link $(CC) -o $@ \ + -version-info $(VERSION_MAJOR):$(VERSION_MINOR):$(VERSION_SUB) \ + -rpath $(glibcpp_toolexeclibdir) \ ++ -Wl,-O1 \ + -objectlist s-libe77 \ + -objectlist s-libf77 \ + -objectlist s-libi77 \ +diff -u ./libffi/Makefile.am~ ./libffi/Makefile.am +--- ./libffi/Makefile.am~ 2004-05-23 13:59:17.000000000 +0200 ++++ ./libffi/Makefile.am 2004-05-28 17:18:54.254841984 +0200 +@@ -179,7 +179,7 @@ + + AM_CFLAGS = -fexceptions + +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + INCLUDES = -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + +diff -u ./libffi/Makefile.in~ ./libffi/Makefile.in +--- ./libffi/Makefile.in~ 2004-05-23 13:59:17.000000000 +0200 ++++ ./libffi/Makefile.in 2004-05-28 17:19:33.776833728 +0200 +@@ -223,7 +223,7 @@ + + AM_CFLAGS = -fexceptions + +-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1 + + INCLUDES = -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +diff -u ./libjava/Makefile.in~ ./libjava/Makefile.in +--- ./libjava/Makefile.in~ 2004-05-23 13:59:17.000000000 +0200 ++++ ./libjava/Makefile.in 2004-05-28 17:14:23.595988384 +0200 +@@ -162,7 +162,7 @@ + + GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fclasspath= -fbootclasspath=$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c + GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ +-LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ ++LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) $(LDFLAGS) -Wl,-O1 -o $@ + + LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) + +diff -u ./libjava/Makefile.am~ ./libjava/Makefile.am +--- ./libjava/Makefile.am~ 2004-05-23 13:59:17.000000000 +0200 ++++ ./libjava/Makefile.am 2004-05-28 17:13:58.076867880 +0200 +@@ -67,7 +67,7 @@ + + GCJCOMPILE = $(LIBTOOL) --tag=GCJ --mode=compile $(GCJ_WITH_FLAGS) -fclasspath= -fbootclasspath=$(here) $(JC1FLAGS) -MD -MT $@ -MF $(@:.lo=.d) -c + GCJLINK = $(LIBTOOL) --tag=GCJ --mode=link $(GCJ) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ +-LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) $(LDFLAGS) -o $@ ++LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) $(LDFLAGS) -Wl,-O1 -o $@ + + ## We define this because otherwise libtool can be run with different + ## values of `CXX' and will then get confused and fail to work. So, +diff -u ./libobjc/Makefile.in~ ./libobjc/Makefile.in +--- ./libobjc/Makefile.in~ 2004-05-23 13:59:17.000000000 +0200 ++++ ./libobjc/Makefile.in 2004-05-28 17:16:18.398535744 +0200 +@@ -264,11 +264,13 @@ + libobjc.la: $(OBJS) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \ + -rpath $(glibcpp_toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_VERSION) + + libobjc_gc.la: $(OBJS_GC) + $(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) \ + -rpath $(glibcpp_toolexeclibdir) \ ++ -Wl,-O1 \ + -version-info $(LIBOBJC_GC_VERSION) + + # +diff -u ./libstdc++-v3/src/Makefile.am~ ./libstdc++-v3/src/Makefile.am +--- ./libstdc++-v3/src/Makefile.am~ 2004-05-28 13:18:10.000000000 +0200 ++++ ./libstdc++-v3/src/Makefile.am 2004-05-28 13:19:11.000000000 +0200 +@@ -148,6 +148,7 @@ + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + +diff -u ./libstdc++-v3/src/Makefile.in~ ./libstdc++-v3/src/Makefile.in +--- ./libstdc++-v3/src/Makefile.in~ 2004-05-28 13:18:10.000000000 +0200 ++++ ./libstdc++-v3/src/Makefile.in 2004-05-28 13:19:55.000000000 +0200 +@@ -305,6 +305,7 @@ + libstdc___la_DEPENDENCIES = ${version_dep} $(libstdc___la_LIBADD) + + libstdc___la_LDFLAGS = \ ++ -Wl,-O1 \ + -version-info $(libtool_VERSION) ${version_arg} -lm + + --- gcc-3.4-3.4.6.orig/debian/patches/protector.dpatch +++ gcc-3.4-3.4.6/debian/patches/protector.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: gcc prototector patch: http://www.trl.ibm.com/projects/security/ssp/ + +# the basename of the protector tarball. the tarball is searched in the +# top level package directory. If it's not found, a uuencoded tarball +# is searched in debian/patches. + +pbase=protector-3.4-2.1 + +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) + rm -rf protector + mkdir protector + ( + cd protector; + if [ -f ../$pbase.tar.gz ]; then + tar xfz ../$pbase.tar.gz + else + uudecode ../debian/patches/protector.uue; + tar xfz $pbase.tar.gz + fi + ) + (cd protector && tar cf - gcc) | (cd ${dir} && tar xvf -) + patch $pdir -f --no-backup-if-mismatch -p0 < protector/protector.dif + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < protector/protector.dif + rm -f ${dir}gcc/protector.[ch] + rm -rf protector + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 --- gcc-3.4-3.4.6.orig/debian/patches/fastjar-version.dpatch +++ gcc-3.4-3.4.6/debian/patches/fastjar-version.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: Append GCC version to the fastjar version string. + +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 + +--- fastjar/configure.ac~ 2004-07-07 05:16:28.000000000 +0200 ++++ fastjar/configure.ac 2005-04-08 22:17:25.237925483 +0200 +@@ -1,7 +1,7 @@ + dnl Process this file with autoconf to produce a configure script. + AC_PREREQ(2.57) + AC_INIT(jartool.h) +-AM_INIT_AUTOMAKE(fastjar, 0.92-gcc) ++AM_INIT_AUTOMAKE(fastjar, 0.92-gcc-3.4.3) + AM_CONFIG_HEADER(config.h) + + dnl Checks for programs. +--- fastjar/configure~ 2004-11-05 05:14:05.000000000 +0100 ++++ fastjar/configure 2005-04-08 22:17:26.987301478 +0200 +@@ -1546,7 +1546,7 @@ + + # Define the identity of the package. + PACKAGE=fastjar +- VERSION=0.92-gcc ++ VERSION=0.92-gcc-3.4.3 + + + cat >>confdefs.h <<_ACEOF --- gcc-3.4-3.4.6.orig/debian/patches/ada-gcc-lib.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-gcc-lib.dpatch @@ -0,0 +1,43 @@ +#! /bin/sh -e + +# DP: Change /usr/lib/gcc-lib to /usr/lib/gcc so that the compiler +# DP: finds symboloc links to shared libraries. + +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/ada/Makefile.adalib~ 2004-07-25 19:59:36.000000000 +0200 ++++ gcc/ada/Makefile.adalib 2004-07-25 19:59:44.000000000 +0200 +@@ -53,9 +53,9 @@ + + target = $(shell $(CC) -dumpmachine) + version = $(shell $(CC) -dumpversion) +-ADA_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/adainclude/ +-GCC_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/gcc-include/ +-ADA_OBJECTS_PATH = $(GNAT_ROOT)lib/gcc-lib/$(target)/$(version)/adalib/ ++ADA_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc/$(target)/$(version)/adainclude/ ++GCC_INCLUDE_PATH = $(GNAT_ROOT)lib/gcc/$(target)/$(version)/gcc-include/ ++ADA_OBJECTS_PATH = $(GNAT_ROOT)lib/gcc/$(target)/$(version)/adalib/ + + vpath %.adb $(ADA_INCLUDE_PATH) + vpath %.ads $(ADA_INCLUDE_PATH) + --- gcc-3.4-3.4.6.orig/debian/patches/ada-generated.uue +++ gcc-3.4-3.4.6/debian/patches/ada-generated.uue @@ -0,0 +1,523 @@ +begin 644 ada-generated.tar.bz2 +M0EIH.3%!629369#XX9$!3>]_Q?_________[/___^O____H$````A``("&"2 +M_OJW%&^`7&``-Y5>5Z`EJVI,\>A1LN!7E`:N\W'N\^\=.C1N +MP=44[MUI]WIQ=.B7:KUW:HV7Q?<#??<':SUG=N`Y/660>]CCO2.V*)*J4^WS +MFMFI%H-K3:91MM'WP18[AU.T/0HH['2]:)@V7;MAV9I2AS9(VS-E)"L` +M1:VS%5;CG7;"6E6U`R:`T*T9@#%:00VU5%301LU61!54>\G8$`.GMM&VSAUY +M>M[7>)U2JNRZHTU`#5JJJJ-F2N5E;@P::!-"!`C4::$TFU3S4&IZ,J>C4_5/ +MTRH/2#;5````])H!ZF0`$IZ1"((B:*GA-&D"?JGHF9-3!#!,`CR@81H9&)@` +M@/00&JG_M55*FC`F``$P````"83$P`````31DP`$GJE%$$:1)DU/-34Q/:H' +MJ``&0:````-``````$11"`@$9`F"!H0-`!&FFH,F"8&IAID-,H>DR:::-#0* +MB1$!$T)D:$T$R:FPF0U3U'J`:`-````!D]0`#0]3_JG^O^!^7\Y]=.HU36D4 +MFR`GWOM?:?;X#VF_ +MY_VYP$W$"HM^W_H`,/^W^-3*LG^O]R;YI;'JF:,H#]6DC0I1PUIO\]EUCE)< +MK36VKPUS]R\T),A$TQ%9;7^?1C3J*TTFFZ51\[)>N]Y5T'FS_1E&?_.N=MO.==NL[Z-]] +M]]XWA>NYF.\[ZZ[V.[[TWO7?5WWU-WSOG6M9.'77"'9WWWWUUIOLZZX\[S-S +MF[[W@]WS>^3F]V2.S +M>```````@`#``,!```8``!``.K*X``':M=P&","!``!U:LX!W<``B@`!VE/= +M?>^GQ\=FM?N?2MNVWM")01.`B8$3)1?QPCETTYZ7]/IE!^%BNFWBKP)O^:'C +M]^G1N^/LW=&>2H?((Y@(=:@T3G(E04$/E2*.A$%0AT@*)$1]D41(21Y[/LPK +M9J*8XG_BPU%U'V^GU>OV>;33333V^_[?5XD$1Z^GPG3,]V]9]\[R__?E[\^/I??9 +MOP`=`AX+,+$KIJQ&KSF;]?/.GY>NSEGWYSUXG+>5S5R=DJS;2T5H*="F*P0] +M>,-=P_^NGS]WOZ^J.^N=/RV3Y+"S90>0J&@GPE1);9%&$+I@,0 +M<0MMD480N,)2$+$AB?AH]V86T.V<[G>9XR]SPUIK(?7XBY2'0/QN$[OAS\*-E4="559]-Y5#TC +M9)''36^13.6EQQP&3/2X9C-.HB(#&.DQ`,4:+NH]!D]8,2Z,6==QNHY6V!:1 +M,@_L'^@3%O-U'3.?![.B/O+U`'!$]SZ51#=QZC=E`-$T\9`< +MO3($D8R!H*E;"VHU$1:,65=:EVJ2OC6KS;7>(2RTZJM;.Q;")--VW175,&[3 +M70R4#M!AE6ELM*LK"1)#2)#Z>N-J_K5O[#2^]J7TB2;"7YR05]NW*(A`U6+X +MTW93`2*2-H)0A&62MC04@$,DF1BML:6R^^L93UC4/ZVMK*I2-`!')H#D]>L9M^V.0B:^]6`B6<+Z,C)[FPB:?..(XV$2MQ[1UC6_ +M,9\G+Y*UWJ74RA5L3>7)D]FP?.S3=5!LLAR' +MO/S6G\6+W0P+[*[_+4G$0)(7971OEP)'XGFZDFZT'M`?BIE78AR!!%G8YW?V +MR,33>K=TI^1"GAJTVL&A_A9PM:YEGIJ%Z[+WKG:,WOO>B^=X +MY.KYF7O7=[ZY-W#.C-=]M\.N<>^I?'+++CWCKK=[WSIZ>^S6KXL;D2UGN]7M +M:]F<.%O<6IA9IE3IBL8M*M%Z=V-7W +M[;S5]><.MZOON9UG6N33L]GL`HIG>=GGN:[8V8CJ\J_'IO!%=/F9UUJ^[S.: +M>\T.LU=9K;SDYR:NV]PXFWCC*5N67%K62,>-ZT#++FF+S6B":PF:NY9,)9ES +M+Q$TYI339=Z@,RQRF0))=W4NV''+Y99QY<..]0T9O1F9N\PW-8X3W0?`TOO\ +M:?-U,$[H'B9DSA3&&$@&,JL!QD+RO-7[[&@VSZ;JN8VJ#&:;1:,EJ*L:C9*DD2121D0F_O3C-VN@6!U]M,#NY +M<;SN5O+F3/*&'9`@F_*JJ?O#"%F'#"K*P=&W\LJRG4J%5(JD7?9 +M&\F&I7M+R_E7,+P>;+>RC3;AHG*ML8>XUUCGQZ9_#]+]9\IR.0\#^\R<34T- +MYDJ:[G1R[G1W.'X+F\XXD@22:;-8BU@JM- +M+-6(B.M)>L_)EKI1M#[VONOKG-8F9*MMJ/VH^-)=#2ZEC-#9U +M.LK'$/"?C:M_(Z>)",6O4HD2T513\B9W%,2-OAI9[N[U,3'E+1ZP(GZ0BPE +M@0A3^.\=79A +M7+79XX[?/],D=&D/0Q3H('^'GO\6&S[$^@VTTJ(MG1*MJ*6UOIIJVK7X1>$M +M*X8Y/I\/+;GK9MOQ@"9)H3&A37"K6*0F2MI6O6=YAG.I6P\&&C#`5:6Z[N'" +MS9AJJ5"_O[YMRQ:QM]ERUDC9*BI2BK%1/O5OOM\RBF8,4TL`1%,Q&QF8Q)4D +MDCCLZ8[+NY`??Z2 +M8:-#>3R[S+JTI16@I:'L^^N#N,HAVI]E*J=`B3<44=ZIT=YL;SHSNZRU:?!] +M+-:8#D-+K7/DJJ`)RJV24#>46*C/WFG5>R\JQ4]SW3K&,GVQMM%A[Y)75^?VX +MU9T%JV']:I&55>(`\!$OJA$WRB;<.H4PHYA.0Q-#363%LFU#!,6>3UW0R'H2 +M2.IF'XNQ$)V03T")Y0CW:PD2381/2).S:O@Z'XA.PSL>W[E-.'`ZK?DN2R55F'.[Y?# +MGGP9[GJ]/#\C@REBT20FY.`W?T70-K(UF$^VE]2@905SG=;JYS]FCXQ5S`NU55OR)OQX/%:\-3<0-\E+7 +MYTY)C)'Z'W$H[F)MO]WL]GP:WIE=C>WLR:'9V'#AGO01>BF8G)(:>^&F[) +MI/.1>U.24@N4W$?4-478@;D"ZCF6C%*&P41(!!?\K,0W=V[\E4 +M44^']+YG*.SP66!%TT5]UH@B?'PS:43=!OX!DZCVIIL^Q-G.NVZ"TL`**]:G +M$/PN7URCOHRCR?%\/LT:N3YZ^[`AU5T#QSM`VH-`<`!`AEZ&WO"",9^1D$H* +M2+/(=G9PYG,YI$V,6!T%#7*#D.@P=O3XS;8SS\4`$>SKO?H<,:#L.N89$R?Z("$`*6*:N@O +M8OW0'U\A,#J.J/*#:`H'CY:"[[@SGU>9,\SFZZ93V^+Q^+KTXG-(92)S2)A, +MIDP3CQS$63BHJXQ9!B:#7%!ZO?G,;C0-@1Z5$#A,\X$RG`I2A"!4!$B@7;\X +M)*'6G@%!RG=KS#K$^CGB=#JGV=;[FM==7.8TV.UO;0M]&EI!Y*@PR@*L`*L/FAQ*AJXG6TR;;NW!2 +MQOYTS;2;\>*QC>=&O?I3"(.6.EN3BU71K,J?R#]'Z!]K!/X_">^,-GNG"\(/ +M/MSQDZ_)Q/?W?-G_/['NVW3S<&]7+=KM\NWI_;%5/WO:U2T[;A#V45?OGS_< +M]7K_7_!^'[_W]MMMMOPF_]7M^K_=]W];>J=AW_$6V^]:."$]9G"*3ZVN'2=`=$@2C7[%@6G< +MEIX$O?.',T9YWAY)O9LM2AX5MI.67>2M)6&]:K6:MFL;+#H2 +M!B/*3C5DXG&K_S>1,X5$`\7_X?/^NWW_9_-_X_H^O]'];X?#X?#X?#W?#X>' +ML]1\E]?FJ*')\_B+^J^K=(37.#V77&QI<.LBIYSUH*'\<1$_)^7\?],/IY_) +M^+/]OY3^+^W\O]?XY_5#/Y*=']G0;^K'Y^P07HW;B?GE[/[/S+SR^K:#BWAU +MN.ISR7]CSTWG-OV/A^*:\#E5N%?$\+N^AJRXO8M.3>U97C08Y8?NU\O+:SX? +M7SJ"9OG"X,:6Y&I+];S6G)6[6''7H0M7/'"V#RSM%NO*FGPSUY3#1XX@/IU9]7JVZWM;:V/#QZVVHSKCT=8&- +MNQ':U^N^\B"Q9>+X%<^%Y=MN<6P;<-S[Z\]+W&FM5:.>^B\N?>>>-;]JZ+;3 +MI.FO*=S68G.-=^;8UQJU6?.^11Y/V;==^7&NFJ]&QOOEJV%W6,'P#=?XK1UJ +M_/*6\%MV%MNN?2`@##EOZ%\=N/+T;KX9QMX^W;.WSZ($D^=!;():DA:1"A`0 +M(B:KWB+]5[VL.['G+\])[,[-K9FX$:A:KA5VKIJ;"P-L;VVTFU3&N--EL#%L +MYQMORG:.W+.-\<3S;KRY:."N/#9VN'VC1;5TP-AY'N\VO%Z$;7FM)[[VROC"ZSRZ\+IG=K[7[9A^_;F_'&G/58/5>-%[ +M\N?5=/!A/*W(;=._CG;P7<<^VCXYD=$\6_7''CTG5.OM\-5%1^&'WO8GPP9# +MUQ/@EF(-_A6_JY.NLN[EW=XYN>+H&[+F)*(&,2TEY9C4&TJJDAC4$ +MRZE"6W>F(Y,2):42XH:$7LWDG767=R[N]\W.B\])5ZY>+O/ +M?+UNEI55)#&H)EU*$MN],1R8D2THE\5\2+V_SNQLF-I6;1J6RTLVE9J4VFIM +M*:LU-I4VEFTLVF;1K:6DU4E:5;+6:LMHVU+&U-*?2VM?!'A[N&/V)C +MEG=OQIDAI]F_[4B='S15_4BH;?N33'^V"A!8`0"+T9S8%)TN+)"XHC9!"_5Y +M64J>]7+P?>1`+FVZI'DWK!UEMU!N$VS-:^;TNV?W[ZZ:_;GH +M:TQWRN7Q,S+N99)+ME;5(6?%P;8_T[G\B&<3WWMG,WK(OHHJ$W#2C=WK^+K+ +M68T6FM(5PU?SN6IGN[YGTL/HX:?4/#<[;]9EYE;OUJ;0ALKE^*=$ZE= +M8T\OC=+6G-&AJZOJ[;D<&Y2T:;=Y0/"BN&L.&Z0VL)67>#C1@ER<'#.,29,U +M&:+&$&MY9A;#,C"3K67CUNU0<4YO=HO;U+('#:G*J@*.P"BK/QW7WNL +M1F51$1&1#6-L:UC:HQ;&"I+;&Q5B+:*Q&,=557]+6V_?5^S_+M?]4O^L>X?: +M/F^KW#\PL+@@$!$(SR$`]M^;]BGD']'BZ`^K]/V_=T;[?N\_NJI9:-W/W7B= +M\Q%Y!_GZ5F2)YQI2I3%3:L+-1=8I8K"FS7$B2ABKK$,6+FVHN0UK/T>]WN#: +M],F75%/NI=(%8R+5[[+6^$TTXTW-ZWFM]M].$``&4&J`B$"_$W\>K]JHK1: +M9:C:V)-;Q/E\+/AP#C(0D59$D20"15D&='7(3S/T79TIGC*NH'_!AP:!:*\U(4;= +M*LAPET\@8MK%<_0_0S/R[EKG5]?&HA^GRM*EQ5R=I:#2)A+^I%NNDKTYFK77 +M$H$QB\+GJ%3JBI(D\$HF[CG>F[T:;S^$XXXF[?JFGIG3O[L=4WIGT\=_^P15 +M/[SD8*UK@1/:D$.=]H/Z7XWW?)/<^M]SN=PQ1CP*'W%C!+:O=5&MRU<+6N:Y +MK5\>/MP/AW]ZS)Y//H>$T\ +MXE/X$\Z?X)\Z9.*?6XI<<2<9[).?LQCU;_)/L^WNGCVW]?U'2+*[!1&&- +MI-2<*)0V45A7KI-X6S79L+>D!07HE4'W5<)1-^0J8-8X@R?B_[_T2;DV$TUE +MX=28\NG03W*,HGO6G1Q"WWS6.\++7WUG*,TI9!2AB2*M1;#Q&(D8J\V6M\RJ +MVO/LK#QC'5_BSE[]7Y[E][V^M[OTQ=PB]S\WXQBC"09%9"-$&2H1K?_F_AKZ +M]ON>(^M7CZ;T.&I1HSXSQD:RVK%;'H@5!R0%B9522223R_JJQ.RQ^OG?BT.! +M0>K;M[=DWZ\+>E+="EA).RV2$@_=.?M83W7LOK<7WLN_H2*L)%U,1_Z_76(22=57LJDZ*I).%[MG*PH8A&0"97KPS$DF +M;6]8E+))RMS?W<;YFOUN-#(:R32V+XH=75#?59K*B+L.4H`/+:X8K..T-:N= +MJ6M1%[V5D8S;%E?"ER@4$G15%]T8CD"2$)((!)()!*$%'XK +MU\@KZ5MAM&!F=:`&J"Z@Z#F+>=2?K +M6JK':+;A5TJL[3U46QQ#=;WIPO[I'J/[Y\!]7YE]#_2P'JIFKVIX>[IV[=N[ +M^#6[]?*+K>/`8J/FJHSG'*>\6#3H^EWTG`?0-=""2FJMRNS:XY@HV=#LHQMJ-=K1S]G)N^B!=4!1)$+&8$%-(P7\UJJOI82-$ +M"X9?E6]]&A!@XW5_F-5H+U:>%"_%2UG4XLD>VUFOO-B_.RV-X"H3^N%B+=-* +MS92?UK>^^)'-!@DXQEG&-IOR>FQC"U:K1^O.,>2[>NS5Z=\VV6V,BM<7,;*F +M/+164$%00P5055E)4LH12BE2BLH89GTZ3@8)E`4)604T9LE]3;EX[-51FH;Q +M6VF;.VEZ@P??35E;S>E#^^EIX02K]I76(P],O>RQ<0%U"A_A*]N>\N?A+/.& +MG,MM&VM17P6L/MXC[#[D]WR!Q\K>H']Q;.!^84?#.G'/IT'#&._2W9JQ#K,Q +MZKVKVKX7.E[1I68?.B@(\5#U?D64\U9B2"$N+`B6MDK[=]_G?7OX\RS#WHY\ +M>>KDT43Z^I=L5QBU8IN:WR]'$+]4M,0&)-H:@]%CY+&^L.?PK'$[#$6TRS?- +M=MHF;$0#9;&_%IR1!\[+?2&0_?"L@M&HW<%?'O_3[CU@8WVQTQH-+<[;+>&K +MGG03C.96T3D1-I5Y#7$:;5L +M=:5Y%F;JLUK`<_A6(U0M'A#!D&57Z%Y`S6)#\ +M4V(A&/U+%W$\+!^^6?-K=:\/'X_:6]WK^/[/P!_9<-:R:Z>&[;\".3&?'PZ7 +M9K^D2_Y,1>CX$;0\869H8U;)N6*)=]62@"$(:O;.)BSJM1E$I\N^6)0-:^WM +MU;)<`@^MV8:JOR*[!%]I;=\Y]C3)XV6VN_&;6B^NH]]PHOX2#DU:GJYD\==: +M,76S=7AX2,*MSU[?Y]LYMIG;-G6=9TVP<1@O;G>B`/5KOZ&_`W2$CR"A1TQRYZ#;7ESYWI6O:_(4V +M/A+VOT?#JM+,WQFKYG:_($/A0)9!;/41F$4V:&F-):7T5]WP577JPS+HO':: +MUN^WOQ+V3=P^,F<(%WX[WH6(=$LXDB(PLN%>,,@5\'H/8!^7D.G?I[++\_O_ +M=S\7M?5_H=&KU/U;/U>:ZYUUFKXZ-7J=6=)H$K_C/U`PG9_$?K/#INW%54QM +M^Y_*[NK8OGQCQG\>>X6_'QLYD-SDX+?.;X>#9[#AL\EF%=&CAAV'9X.C8(5^ +MMZ.^F86<^=^OV9PZXSHLZZWUUSEOL][NX=WJJN[T8/.%)O^I5!BU%J#K5*3:E42-@P<$4'&H8*(%A]`N'`2PM(LFI0\NO+I`&F +M#L^V?HM&EI`M`8HQ1`G#T]^)T:3H^YUNK[L&Q=>-`,8/ +M)]<[6C2T@6@,48H@3D]/?E.C2='Y'6ZONP;%UY:YSRA,8N.PL(`T#BX8*'&O +MU7V?4X:+.XOR'19T>#11:M4B>S9[GA]W+;[]\U5W=UP[/N-FA`P/D^!*LP.B +MQ)\5V\N5;:59X.%6$-FS#1\>EH3A9V(GD]#1T5LQP\P(G)Z%'R?&/X0(AH(( +M^V*(`?YGD/F_`BA]"#_1/9-)].8<`\'/[@'KQSG#QZ\'#GH\'`/7[7KX!\`Y +MSA^U\O7CU\#GV?#QP````#UX^CGH`#AS]KQ]'R^!SY?#UST'BL<;5MXQMT[= +MO\9QVQCQC;^VX]O;'P#^O<\?9]7R/AS_0>/`?F#^D\?@<#Y<\<^CZ@^KU]7# +MX?#X>O7CX>CQX\>O7/`?1SG#P>C_%>O!SUSR6?NS,^UFG[VW,=0XLDY%#@9* +M$(0I%F+F8T2JC1II-*VQI4:-L*QLO*\NNO;M;M&MJ2T&FO3KK5[+=+C$P75) +M>UTFN:3,3U<,Q.7$F&#:WM*,+5HJ5I-M,:(E%:5--L74;&6E2U><>5[;K/.[ +MN5W"5Y6\NO;0*W@ZE)9>6[;EHP5BT8-2E*^FJVI:O+R2Y$NNX^+D5WQ$NEO) +M:L2ZMIHQI1J-+7"(#=")^\`(Y`$?Y_T?P_H_;_8V_1O.'1WO5UI_8FFG3KK^ +MA-$]"IG6:;T!$/[44`/L_R_+_?_)^*?SWZWU_VO\?I?/RW_X\?M[^',;`_O_ +MX_O?\[?O:C]['V3^GG7*/LC7I2V^P?SN70GICQT-KZ;7WYXC'H[=9[:8M%^> +MOV=2%7?[OK2N_/1M^_"[>'6G3])K7*-Y]ND>&G^;:^N.==?&>+&W/Q\;6VQU +M?+[;ZV]'CGC[E;.[-Y>AI[^KIXY]6=Q*)/B_AX<_';U>>X\-EZ/;R[]]:_WA +M`$"?D0>A$_5]J#^`8@?13!_2GV$T3ZZ?Y)_=J]KSM_N(RZ^BEZMD8I8L%*2U(UD +MQ.#,;I*I9(DD@;$+VW0Q>%J$B@F"U_/+"?\:9,7?6J2*I@MQ:(3=5:1`O2X* +M6]!3!$MDM0Y9G?,251(A@MXTJ!@MG*`"+\/Y^>/S`_@0`_'C[3[/PN*_11DA +ME"LI+),D&P85M@EDER%(E(E#W!;9* +M.13%4RI5+-"59%R6ZV@8"T_F*%`D1,%J+(&D5P8NMH=ER3$S1+2H!?YZ'R)A +M/+(I!DFO#"82;]1&G32KF4@:DNEL@LY5`0*17VJ[JU^)1-+A-,:E?*]GC-I) +M`)@595`XJ,JK;&6`2+@4M4PI5*J"$P2IOEA'JE7);K0H,BX&UWM6A"*R*DD( +MK(N"I*RH'=D&@1\2IH)#HA'2PPN9#2:F]SDA$C-$58 +M:4DVVFIM5E:4TI4-9(SHJI[$GAE/V/8GOIA-$ZX,($(L(E&6:@DM%_F[-KA9 +ME12V*LLL6BK:^VSQ(*?A[F?&_-J3!":4:@0"=^X;A[VA5P6YI2(`ZY&6<3M>.2D;>7=YW8> +M3O>W/)VOER;Y:==29:C6DA``XQI&TH=L-3%UH59%P6[4T9J1:+87&V:[XP73 +MMFB1I"5EE:]V#12KH:6HINU-Y:\R-QD8MB+%5*KC\;!5A$[T+D@#$^.R-(0A +M`V+4W521P3$]LXY7X:]%^?5:YOLMKDK&VBT58U1;1;%:-1:+16C:C5&J+8K) +MS\O.58M46HV-C9O';&QJ-:-C4;"[BW?:,WQ5H,BQZ*4A(!""D@+8+*/?'[(T +M2-([Y!B+8=1F'687,T8\-,EHJBT6R7A?.F5%5;"^,,S&6#\D?W(^;>Y.6=B: +M3325D&=LQ84EHM'U<&:5JID"04]Z*G:2=A4A%>R)^;]%VBZ0*,XL8[IF4\,E +MQE6>L?A'TC4@]P(D_N1@(D_5']V-Q_)V2((X"(^204@2H@80@RD'D+E@GWR0 +MR;:Y&T62HB+$L9'JM748G]8X(OQ0*\X&0(552JD5^QD1]4?KC;\P(D +MR,W0E\8/+6?ADTNKYQ![79$WB)42HWG"60_)MP-8:F&0OZU9(DH3IC40(*HQ +M@1%="WJM6<+82.3=<0D$P,L31K1('7QJG6)_D>X#4,R7\+&,8QC&,8QC&,8Q +MC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8Q +MC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8Q +MC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,8QC&,;K57YRZEIBI.!*G*6!-*A8 +MK)-\X#@34Q?"Z$]OPD'(1-`_6J1TL`=HB218!'_F*Z@`B]*?`E1!%\$^5(FB +MA<-Q_]KC8``))&'.[BXN(8`DLDT8`D``$@`$C$@D```#``````%H"22R```` +M(@````DD8FDB<&ED#<"20```!@````,262<())````)`+@DDC`%D$@`%DD`` +M```$EF@``D`F@``#@```!AB0`,"022"20!@230`"VVVVVV\`%P",Q`%Z@A&( +MP""IN(86:F9@V%EW!3(D58HN\&S6&[;DLDI2R?YP!&+A@GCD"/I(.A/>G:8[ +M,'I(*IW1?=3@2);%DDDJA*J%55B-:OQ:JI;;:T:V[*63)9-!5&SQVU?BNZ^; +MKRGE[V[6-@FE*34BM^3W">Y(GPI4RGT#5&Q7JG&>-$^[=MJ3%HK%8U%HM&HU +M&HU&HJ-1J+1J-1M%HU&HJ*BT6BK&VU46HMG=5V_<)=L;/YW3@UCT8Q+SAU:3 +M^2`_:C\D>K[>(_%'N=MKQ;%J+:*BV*P6J-OSFU[VAS(681,BVK@:N"8Z;3M) +MTQZS=16$A15BI(EE1RS).WG?R^XU&R5/(E'8 +ME(1VM,A*;%*K(HB,)$"!P+5.E.I,/H2!VIA/5JY(^\FJ=T3Q&3BBV2V2V'?& +M1%\EQ/9<5IF:S`&$"=$JS(RKEE8.#^F]6'V.D!X?@SW5U54+3YS#%DH][,^[&26R:&8?(PTNMY]^H1LB"J"34Q2R +M_EC`9UR&5)0V-62BFE&W:JUNJM;IL4J")SD1]*EL32PG*%F6$>J44M=H4RVV +ME;-K;;RU=VJ^TI9NBR+FV[Z=K7/C*Z%+51TN24J.3,Y/!(G_G*;^ +MG*83ZB`/FZGDG17J,P_'A9AGNQ&5%RX%V7$[_+-*7XY$RBR+"E%YY,TP5"C( +MHQGQA1R3">*6&"W%I`B$(**R""8+5$D$W1"NT*D(U,GOIA/ +M0F"BPA5D3I3(6R6DM%+$[,P>:F1%"*>UHW(&*+@GNA1)%D6(0L;&I+]FVES6 +MT:GQ.L?L>7G?JK0'`VNYK5BD(;B0J!8"2(2(^\G2D3FD0`RI\Q#^0_?)_4?B +MI_'_*0_20^;W\O(1W7#_9VO;VWOL&H@=UP_IW\GQ>^P$(2'E]CSR![_O?'5/ +MQG\Q_1I..[B9SB9G]9^,?R;!`DD-QJC@ZSDIN/FGX8GDN79)>#"\E5T0GBJ.K% +M7JNJ^"JV%?'2T2!1I\,PEMG4`RM'R;W&<=JKD_Z<9AM,VLS8+4M'"E6:=J[* +M[=FZNW71=?-7Q\0$M7U=1Q_T,')PKG%6KQF*MNM(Y2+)U>K<#;G@DY;;[V>, +MF6WGA;;V=5W5LFVS9L=!(+5"O3NPJ)(@2($@EW>D`DEZ#+3NOGV9_I_R535*--*B4A/%8!M$+*AY+/NRRXP +M$1N$N$LES:O;>W&,`9.OU77X]@(.4:U!@',/DVD&#&)-F!0/CQ>=SHUAIXY: +MFLJ;UGZ-&LW2:^@EV::C/)/"T.,X4MRLJU;]&WPE5QPM[5=XRXF65\&?M]/I![?O??'OL'O=".W7#.RX61669II2& +M;Q9%;/!0ATCRJ)UH55%6WXR>67A`_!'>A4 +MKG7.NW5+MKG%75\R8[EJ;[S6)TD3N;U#">K/NL\ZK:>7'?_%AYTQB=SO) +MCW+4YS-8G:1.YO6]%4A`$@4B4GUM[[OS^(1VVW7`D"#M8&?)WW9E_$JQXU%7 +M!$:VV%RTM_.ZRB]W6DYF(J"NYC>X`=7"*(.[H +M/IOF\\@]RI5Y?>]]NN72$KLKLRQ5PT5=BKNK/1LK76:&FA.`)?KSCH^/X6]S +M-+E;Z\BK?U/0&8*O`.-^&94,/C(Z&/%M^+4[JTG\;J.T\>%)*J"`$GQ!?0<+ +MAEJVQGJOOES-G:+3%G1`F$W65V94+\^Y;D/.#?Y/S??HEYAUT*K<(K[^\S"3 +MSV]N#NN'TNZ#SYOK=WO>T5LPNQ5NK$J[%7[51]B5O\&F:N[DC,S!556\5=U5 +M>-T)QUR>!6*!))())55!)'6R[%145IR059Z*,/Q?=>+7U^I[.%9T?NBK9O9= +M96J"M8:$4N]&J3IAUNZ#YM=T'Q;]_] +MZDLM;:P@QR0C3HVD==&<,$J`CRGHC4PR)8V))FTF*2LE%F9A:`PFFNZU4,2$ +MK@DMS)`,R^*_O[FUA:4L:*B*2+;>JKFN;;HS44FHT5$4D6VY5T/'L58'Y?"S1AUT*MGFM"H9@JR@9BVW2R#:?3CSEJ5[-_*W[S +MZET=CZ6GS\+?W#H^OP:8R044%=LI>M:&CD7YX6VZU9:MK:LL'H\MCO[+8X3' +M9]5!NPKP^"*^.QNQ5\_G:WPSGW0<+;LU9'-8N--W#AI,"><7`0`H$3!4S3NY +M;%.&HGO.LMY>SQL^F_*:H\E<*#Z?$`PDJ-!&IJUYY?JM>^@`"&MOSOR_7;[7 +MM?;=/>JYS$Z3UL%J3(HC!4/4<\\O:MY994+)4DD@8U=K*:I*RZ[:9Z=EM +MMJVWEQEW,\H\)PTDD]6G<5Q`CM`7J;(KX/%&Q\&DT,DC'T=%'7+ZK(G*NPUK +M4U8RM3&(C1IBW-83)=4QK(F-,M+?1AY:3PZ*YG#;)UD[2QC&,>ZZ&D-6:T*ODVZ/0<*_` +MZ^GSUK&\SKP^"+3LD%1H.;&TLLML;8W)=HJR)%D(QD15P\":">9QT+GMS*QH +M6[NR=5T+#T.&7+'4+S6M%D-%W+LG1401`&]R;E;\%@I +M)9U8K;>O)/"8,62GN[PT%XJ52JI"`02#83ZE)!'P%R[-LJM&:JS#`P2S9!0V +M!>]3,QO,J:E,-7#-&L%K-D)IC1C-Y+N.R9D-82766&QT:2OR%X,JRMTB=[%7 +MT<,.?9P9PYP5>P+KK?0TC&O?VG;=WG?8J]4$@BNBB28?I>WMY5^E7W^?J]CN +MX@U/+KAK3F3(J[VMMTL")3ZFM+;>^UZ]Y7M?"$("`D#?CG;F/?Q^;6>31%98 +M%;/9K0JNJA%8>!##9K0JY=4:,P5?5:]O/Q9PUF97=:/?$6'1:;[0+$D#(/:I +MH'`AT;:V':6XE:2L:LEW=RBVVUKKYFG*U +MJHA\7KA:&-H66U?K/JPUNIA"EF79>27*R@@EA9@A;:W,LE,A&9#,RR-]9K1F +MJCF0S+:JFBAH&DI1*::V?(86!WZ7\5_?]/%FC[7:6],^%$PA]B7EY>.33U8< +MZWKMZ[R)AAV=&-+79T0T=D(:!HU=6.:NS>^9W<[,WF2[[O&SJ[ZD[UWG99V[ +MK'G?=Z-'=W-F[ODG$#Z>8D[-1S:4ZPQJ:8N9BW&)Z*BNDW(Y:-\GJZ +M\K;?A'*\'K'K9"V2;<]CF?-I[V.KUKODT062(J]\Y&9>+9ACEPR7<9F9>>NP +M[.<%71(*KG?;Y#XJC"V*YU<5B[-JVE[[OADO2NZR;L7#!S@A00[PUG7O8J@4 +MZHA!6%5LNQ5K5`>CL]4['4TD]>O5PY!JT6E/NZ+-2)W'2XD?,BROC:!98>!3NQ>1,1$0T,JD\U +M"RZCERL9%&RXFUK6>!$&>MX#PW,ZJ3>K#3-KXE<8IW),W+11$!:=^S\_^37' +MYZET_,[C?<\%^+S.M9%3&$)\]][U??-O/?%1I41Z/K<6)&,=_$;J,+L2%@@V +MVVW=L98JW=WX.DT7@LNW+AG6K%,(0T)=1NUK62\A&9XF9INX6RX1@0\EA]0\ +M8`HJJ0DF0M(230-;;MU&,23A7(Q370Z.A6-IFT;2^U]*_@NOK5]/O`0?'VE8 +MHF8*JBK9HT9@J^M^Z^97+[WE.:S1I-Z/8<_#\))\><&2+W"*SN<81E$H?8]F +MJZA7L:JK.M"K9T?4NCY-05='JJ!'(!$`_2.+1T()4\+- +MEYUS)5[PK5,AJN;J#C'!)+0 +MB9<67+1G3?KQ9RMDVQLI=NN:8A^JG%3D#X\2/E*,&$DB`/V#H1!R:F! +MA^%/O/Y_1]>G#]9\7,^+WH(4GC\4B/2P+"BBA4HK4D6)$-[CFV5*-)&2B'2( +M?-/>@1.CG?H-46++4A/XH@ +M-6K"%5*JV0K(!1U5(-_;%!/2,9$)G=?CMM5]S63VAI3PZ#$DYD]C&))"67%*8:@BU:R0%@M4H@X"@F&I5M5#M'+R/FNI>8 +M\"<7XJ>25%8J&03[X!DDD1^=\'H28;V*Q#HJ;#QW`/@:G`$.:KWP$D4_9C?: +M+/P=X0\>WB(MA5%LBU%I9(/6(T@0YH<7LWR[LYX)$RCXA(JR$/,4#F/J#TD' +M]UWD/?$1Y^2'B.HB,/8+V@>/TSK2U\W2.?M)Z.71L/,#>'WO-Y3XC>PDFU='`T#H4I1=DA +MO0%#"=W<84?.0RO6([]N0EBR$D:4)258T&FD)BN%UPRRU?K+B+<-J&&N#0T< +M*VUU9I#(Q&*2J51528F"MUMTMNN[<[EQ8TW=TNF#7)E=W= +M+FS(0++R$IC%*1L&0D"1*P*%:MUDK<6D*1DD2PC`MM(6+E-16DU/5RL9&X+$ +MD[(5EZ7D,(R+((2BT:0"K0I&K1I+(6M%=G+==G.=KE=-VHXNFZF_,0X%B:WF +M2RVJN07\OZ9(X1&ED2/F^M/2>X?E=H.4FE8A5*%B1'K/6]?<*=,3Y8KTG,7E +M`!'*BT1SQ'"?S0DYUS;(JPJ%#A$URASLC]]%IH`CJN`1JJ#W@P#9,BI!'1IG +MMG?,5L))30C@DS"L0!&(W5A^SKO4FS+0B9EX1?JBC02K$D4L@_@.LPLG5S&J +M.BLA);(3*F6`Q*D%AM]L=B'FQ(YUUC.TNDL3$D!LQ$,2085+8SF5KF*C%YW8 +MZ5=;W56MVQ%.B*\4IP-%#D"'U!1J&2,(CC4B"P@0P#OWZ0MI(/+>^Y4L]@5@ +M>HW(N#J%V`\YN30`AQ4%@(KP%:TD4T*PC0(1)Z:@8,`P$6JI"``IVNJT8=)! +MX$%R)1$65"H9[/`74:Y`R31"=J@G=T=N3W68@R9TY0]FVUVVRLJ6M:R$V"2? +M`EJ&I'"DF1)[]DT)\_?3IRV$,@"-2D9%.Z)5`)FJ29WN*JCC-<\:V$.(DXLY +MLF]YA"T%H.;SF9K6M7:();))0B6:JI$T_9\;9W*.UUE==KE;]!B$,Q@`B$@H +M%B*TTUHC);5V]7/&\]U56YL3+*0$A041J21-DR8"(UHEL@QMI(2W=YW:R,:S +M)=%:WCA!!=DD\VV#A)76EL@M2U3$8-MEFU25MY9=+W5I1T-,D*B6"+%0546R +M*I:C>Y;,&BJ*3)%A&6*P4RV2K:M*J"RFRHF+XCB'"`W\#UP"85SHCE"E`EWH +MR*",81^&W036U9I5M58UL;35]/;AQN.ERWL:25',?U)(D74]85ZP%V*;^94X +M%3&$X\1WY@F14XD4#1^MQS'1&H2>%D.Y40U)^^/]F-N(5Z/'2XO +MOU3-&KJR6]C9LX]`;@*1#P_TOQ_I^;\/T/NU/I^.[G&XXNT8OR7T^_Y.9#(F +M,*!U:4`8`9'IPN+I@3-EP9*4]-9Y*A;C4\^N]F@TUZ:K5]^)APT51=KUYE'9 +MHAI4T[R)IE::U>6;\D=L5WN]!4//E<+&O.F>3KOK`ZZ`A-W=;.K+^_?+*P\D +MK34]>K?!YYFTMZ8AZFK$A=@1KCK(==0KAGJSCT\>GC1TVEZCW*-CCZR5GJKU +M1D,M[);+J]"@$"4**+979<-3$*@"BO'- +MZE%>>^0L\)7BHF_*8<=8D)R8[-NBM#&E3CV]O;>][WOPKJJ=A79_(8[MQDR5 +MQPM6[:RSOWSOY\=HWU68\:>LW?:*=Z$=:GJ3K0:B&(J(Z[JF,NR;7)OUQL9G +M7YO0^4K7/%E]44^X!NY1P/#10M`5T7)PKAJ+ +M$F^%A7:#V[7Q:I)-!0RLH8A2QG.F>>O7;ID +M^\]A3Z)16JFO0/<:UXTT]._!>F_3]_R?JWS))%L#OGN[ +M-N]@CE``4*(^:&BBSEB3I985V@[[[XM4DF@H1-*GA5JT&OF]\<'S]2<"B +MB*610VHTIZ[LM(K]BX:=U;I-FQ)HV&18Q.DE*E2S8:AXL+9!5D6E4BV+8 +M;14T&.[1HTI&LLM3`>'2&"5*;%-*23E21RU"1/2K422*I`6606Q$F:T:MI+6 +MHL62VU))"*H)-&X43<@YTJVVRJNB;=1)EUFJUT=7)N1PP4"C)[EFVCRH +M]%)P.[)UI5+2TJBBBBBBHHHHHJ42J6^I1U%#T%#E*/)NVPZ)T[WB98XG19:M +MMMGNT1H4=!1U@1*=RAR5;;$><68QEES,MSU\1:MEBRVU@VCPZ:&2DVB%AJRA +M01*6FFA13OY^?CWDR&8Y))88.9EXLF9)+S!DS)0!\'88(4>Y1[A2 +M4IX*;>:ZW.F54N9JZR!J:TT-FD12>:1T=F#9^.N6CW137&ITS79RY7Z3][RK +M]S,ML5(54O2+Y)"?"O/`;B/XR:DGGBO2P^`-$^5^BF5%'91V$4@JAVPD2U$C +MLB3HIW__"V2DJ#4E)Z3V62-BI!1N61/W_\OWN[??OLY\8?Z2J.)IF +M)+E+,MG[^2"AR05EEM5=O@/!AZ+(\*Z +M/*)(V#1C&+,B2_F^[**9%%8Q4$,@AZ57U(`'!,"GN1)^<(G9J?T=T(]8X0?EL +M)CV=!Y*IY0'K07D=R9$>7,-HR$8ZT*0]`M5$>40\BC!!\D5=`)ZD@.O=Y?+< +M3&+AYR)$KR(>4PIO$0R'FB0&0:2EBI2J44/X_F$3_:E^;J/T(>UJR`KO]L.) +M#V2/PEBR'X/L,F9IVG5VM)6E(J92;\-5TTO+L:HG*\C22R&)',[17 +M4]A_%(3I&BNHAU5(E63Y>".B'NZ)8_%#K$D>?_1AH8'J>IT'/PAJ +M*666)"0V/=$D1X$`-X,$GHU%\D8L%X)V]S^,/P5;;/I98JU?#,?MCU9PL35W +MM_0PK$FX8/:-R1S9":.668.8@O0K$`7B-4XZH(H8&"@A0((:=38B9(:DDW&M +M(ZR-N:+9+76*P*2)4C^>1J2:C@$3^:SA.G[[+4JR.*_?H$,A%11))]99`X2D +MQI@85;;(&6<0G]/]GU?V?V<_3))(TU#"K(_M)NJ;4M4LVU-1DC1B9_/VT_&O +MO:7`)>TT5.8)UB,`5.M-@!&J$5).>J',21.RK4D-HD.*B*"A^>,2:C=#\V1.6M-$RF3K".O4Z(X.8H9&I(=(Z=8XC3ER':01RX_ +MB_AMZIRXF*J2?A(?V][[>KK5^V=E$S&EFTPS(0C!C`%^AS#2"E6BIEX;@E:@ +M2V30BFF86!F)D0IF2G&+2:4632GXT=;(J+:B6I+%"RC8Q9-%BBP:(M)1:U?O +M_02"1;Z[4U;^/>6V^M/(I\"'N3C!^VK%[3)LN#@JOA&36F> +MYG]2'=E]$GPDB)X%4W`D]H1TC.R=B/1#C]1J*GQ5`0^H8$.GYA7B>LG02U&L +M(^@1I42(OHC]J'DR?4]S+%FS#]K5??'^,/SQ^I\7O?.1/R$^OXOPXD![V$+A +M^;[8^\(G)*(0'PAR#)W$2D*/;1,*J\A'U-4[PWGU@0[44#E.A01X"HI/')X` +MS5]55:A3.'+V?IQI)9U)J%?!))7*MOZ71 +MJ=(Z$(QG19)C'17OTO$.Z)1H[.3).B5>UEO`DW,UCU#?;BYE>](('@[R/=U= +MKL4H7]1*BV!4+2@P&(E/T!-9(K)(;XX<)_5#;V1'K2K49E1MM&*TLM"IL;&2 +MOS6V=VV5K*V-8K=-;=935FBMBQM;0RU2S5LT65JMB!31?S'910R3;&1IK&L6 +MQMJ-8&8VEFI9E*3,DF695:2J9M$M&&Q;&VHU@*E3:LR*M)D$C4S;:5-JJ*M3 +M:46VFFUBT4U26AE3%B6P6R6HKN?HTC$T_%#\A^"1/>.\1$^9858M5:7CW!2# +MYE@2T3W1#XQ^A(]3VG![W[UOE8UK)BILM%C1;:S)09!!/2=7!7)L>5]-A)&$ +MA(1^K#I17/,V;RUUPU);^.S4MOO==4`T2G$-MN9V/E'RC'15^V(=)`/B](A! +M6>I-P-34/+&$9$'])/9R>^VP581:1Q%8LD'8JST+`F2)NRU(L4A5)XC4AT[1LGQDGT(> +M3[9`_+7WU?S=&1,1%TMDI+NM3X0D^*.]+;?)&9EG%:7+BM!E9=EN-HH7-BYK +MR2MDVLK[\&%44*M)$^T0B5NR#']56KJ^=M7\0``;?SK7E\T-DP>#V;K-(2+; +M4M@6S`!"1'$3$"[E22@I4:!;L"!8VJ)`LL@E#:R[BT4T-`R1^WY8&JU4":MN +MX,"P1I$2VUA=Q'5%EA8R+,@RCHU(8TP8IM@HLABHJI$ITQ#$J)5DFK+4C)"B +ME1*U^?:NW]BW.:2BBC&[;)L-9;56PJREGD<*'],>_XT$+[_0388`<55$^57X +MN`>1.E>@0P!H)JRK;=JM]-,5O:;/M8PIBS7UCZ-:L?GBL4&@P\.Y(3LZPD]A +M]BQ9(>\\21T-))U-)'+]LAXB._T'"2=26*'"65"]GU_9(1/A4>9Z0T\1S(?P +M=?6TL2/A9*JVK5A5VUYL)HQ0==5TI^@DR1N"QD +M32R?8GS![020\O-DGT#N3M,]J>->\.[8ASY'"6MTB +MUBK;FJYJI,;;%94%J%L2V23%).U&"H_$R;DK\4KZ*W,05A+;;NWKS:M_%[9( +ME2:&$:LC(6)#5!9$85I(+"/X-\14J=1YFI(Q-I'&D +MC$9&)(C%'V221L=8IT;3AK$0Y")8CBR$ZV#523=B&[JR";+-ZQ-61INYPK8) +M86.-N-Q;;&(&(@Y(J"8T+:41&RD1<`@PFFA%$4P@",`5!LD19DFB/", +MDZ1Y6"K(="P,BA9/*+VB3N'N3CEV(XAUD$D[$^G3OFU6E805BD!&$DQC&P(1 +MR(Q@KDVMWU0B5>_*KQKG4<;YVB79D29<;D&K$)=\QOC6]\72)-#ER;)+)+(I +MV<[-1V+N".P295I;;Z8Q"HE-L>["HG::B*&B9OB30>*. +MDB0C($"*D98(D\(A43B';$B24\FYYQ9ED943#:U?2OBF5M:NU6JEF[J2%&R( +MFZ.GQ6_X3T!MU\>8^4?'WS6X61[>`_6_75JU56$JU:JJJJM"R1Z^QL1&5XQD +MB)VQ["$.U0U-"%`-6(:1.E`JJKH55JH/;DS&0"0#2T+BA20F!LO*=URC7-:4 +MN1;1N;5TL[K;D5TW+>+QH\72MSHZX$/&J\;4EI;RZVKKX=:E>=M=MVVBU:SM +MTDW,E;LJ-KJPT;7.454FT5-W;5R;44N[M)8C1M&(6Y*2Y;WZJ;8 +MQQ#H%=`:%)Y1^-^*K)8I[[GG]_&(3&*8ZM\P)\![Q\P9:8&!W1,N3(X&2-#A +MJ:F--5IT&IJII-DA^1(,D#Q(2:)VI/U(?#=[\28E++)!4&0PPI" +M^_15,10205!!@F/@/?3@;"N$4^*"@]B)Q/)) +M)!C%A\V@T%!QLKXDZTJ'@=I`[CQ?2'*I18)&`J$6"^4%#XXB@'8,;F)$9+`, +M5(2V)"3Y75(JDU2?2I)&4A:A+9-2DG:+`:L0EL@=EA!5)5B"E(.B1HA20Z'U +M-)(C29\]^0YDD2^TU:WY?2IJULUC4F1"#`A(Q@D2*R*OD'H#B>(#P40>SYB# +M]QY^2#Q(^D4>^-P]I/5N*MC1\3_?:2$8%O>FN3`PR0PF+BMP.4L^1*_;=M\\ +MXS)53,LN3@U`S!A%+!>@1W@KJD#90WIVI0?>3R1W`;S.Y?,_UXTV'UV$&?6) +MJ&:7SYMD'9Z07RAJ'@#W=RY4P`QG7N;X)S.9"$A`B213QIWHFQB#XA%-CM7Z +M@'N7N3CTIV]A@1[H#VJ]`7K$WIIZU01[#Q];1^0@.7I'M\)/<63Y_>17YE/D +MZ,G8A/8.C]1X,/BM"WD?1O8RN_SDJF"(.PQ1(0(L*$9)*(461^5C)'YG^'VJ +MG:1_.D^>NKYOG'>PM(6I%L@MB6I:-8U&K8L:E3:JI2VI+7Y.J<5(_-6*(EH2 +M<1PCR]!H=)HDVG>$/!%DGT1L1)J.UBD-I(C*M'JGO/07B>9)(YCY<23]D;Z;5E=7`^G?>\Z?IK +MJYHC5J/%KE`_.?/CN7<\1-YN1"1D`D5C$$&BT*1`:46PD1(0 +M!*AU(GM)")M#:J2615B3U6*B4R33"6UD5B8BQPS(IJZMBU=&JJIB81D+`^]^ +MZ'5W?RA[%*G@=J\X'(D)Q'D,-4]]7A[4AQP!W%<$PK[C@!R/*&P(>,1XO)U4 +M&+T`1&2,AV:@`O>B81#VC1C%5'J/*(L!13\(`C%0'[=`!&BO1-R&O%#B?6D` +M(M(*XW]HJ9%4]$42G,5,OU$?Q1]T/A%.L0/)RG1)8BI!*<(N1]"D0*EF(%1+!+$6;1JE:)82"IH>85<`(:(N5 +M@5>E.Y7FE4R$4T@(.@C$60B0B'<62O688`!`GD+K\:WN8GY,"H$``>=*B"[J +M)(4=%A`T=Y^SHJ9`EZLLH_>C=\X2KS3L(>KUO8$&@O?CDP,&E%](;LH.^[VF +MT26MQKK".(]%@%$Y$2^I$D"@$!.FQ'$`((`X$;A[Z:VR=IE[:E&UUIL,H;8B +MM-Y?(-P@*K[<]LV-K)HSC4C/.D3&HE;AY6:GMV*77KZ$F8:#UWSNBZF>OL=E +MNS7#Q"KYO+]:JOREG'DZUGE*^*.\.4--#X-#XL+NCY3=PFYW<_3LBW/-[<.I +MF2E,1D?I`A]9S)FIY8BU1:$!/3N\L/=6GUOPK7>X;C7=A=[FUR@7`DKMPN`7 +M>6/MFJD%HDF^R!LQ[B:V[,\;\7=5*'9DZH\)F^'7-5;_0-U7B1BO*F-O@8YE +M1LXL##WM,=U.J63T5S7@4Y4TE*HN,3J.[&U52R3T8X&F(Y5,:8Q6*9*55EK291I557IQW;3U4VP8<'I*PI719BX4K&"JJI@X>S-[,>*\6 +MZ:U&]+*;4Z6W1N)X::?&V;K%]K203@>9JBV`@$'GS$?;!9"\$K&K$TJ-1894 +M>O#<:GK8X1%M+9.:Q4MB[--&JE$FVDZ0HQ,U?8R`%7M5VKMJO;2[^*[\XA-D +M2J^=*G4<417&%V-Q[QT1#0^O.@UC(\&)&FO1)MWB5M4;/W^'LV6-N_6D-45; +M%5)I%2$U:U;5D%EC(J9:Y'8LC%&@M)U9S)#<;:C'GBK5OX"^R1'6>>_:0DL; +M0V8=!&K:54"Q+#ZA89(BHX,*"X1Y'*B@E'B.A)(Q.[7'EU[NM5MU7D`*]R&I +M1YGRJ2(;CMYDZ]W9.RKJ-$W.@\J"053179SA,&'#'0"<0".G'R_1^;CII$][ +M6O'-'JB%DQ?%[).K"]&DDLM0M*.Q^SRR+5:U"THTYDHM*HCVT%?J-4:$[HP^.\MW*M[R4_&6*K]%Z_DGRM&_2:YZBJY;NX>2Z+$""`=>_?Q[7S +MK6M:76RJZ.B`?!\EFAW!8HQ0(Y#)&63)8O.!H)";ZDJ +MBD%:0+7%()/G%.HVN@LA1+(-Y%HM#%/>[HV#7X=RN=78$;:2FBZ4*I94M%4L +MLNO?C*WO'K9O>#K[_?XSSTRJW\SL:[0CSOOG.NUOKONIXE4$;2(!C&,8P3BR +M#!".=E9L')`4@#.6-LW0T3&R=1>2D60D&*QB0DB"T*";D:?E* +MB47W")UD/#69`/'KU[SENE77G=YP$`Y&'H4Y#S*8W$;BD8226VZFK+W)?#<( +MQR*ZIWI&T;K9:5XNG[RBF9`LO/W3VK>WV3NLOQ9WF,D4AG:DM:[MBTI8J2QM +M%1BQMVOI4M<\VX3H**E9HQ$R<::DR12O,R$MBJ[I[SCFW=>)V31/1.)D5!(@ +M91IKLNC#-D)6&`U*55DHZUYNKO)JX-O*-8B6E0Z=%U'E7,D=%7=>JV5)E49A +MHHJZ*TXZ9HE!C;9DG%KE93E%V/3M;224B6R)825$I>&G'#'O,D:26"]K:J+? +M=-Q<598R[MLD@M1MK*V)L&J(-&C"".VU-=4CC$DM2HCA9)D+"/`?'5]W49J#OM<+.HX<6VVV&HQ4CT9-)&KZTJW,@2D.5\0:2Z.B;I!T +MJG>5E9CR]]'10\SN@FBX>(AH*Q$$(%PXU/$18@C0B\"G@)$!0Y4'L4>9HANB=P<;8L(XW),8N3&#"I"QDQ`'-&N1"*K"/ +M!0#<+P34X)3@?$B,CJZL'Z?R=[9"R60]ZHJWLB)T+A/A1].5,(FY0-_"!(O- +M5R)E%%J]@',[>O*CJ,4"20"$(DC(KYZNJ)DC:#2OJ[-HI((8Q<$C95A+6R%H +MI2"\\8`<.^G9[W;U=+%YU>7O73W:C35,:TJU+8-*TDJ62I&0V)!A#5)LZU6M +M[?'F]T*0/7>MT48R3)J[3=DTR4L)-1%H2HV4B:*0P,S,V-=>;M>`I2M38S:6 +MS3)IDI82:B+0E1J9MMW@MUMUEXBDD#!=%7FKJZV^+S5U>5[4KXO/1()#RV2V +M:FN;5>ZXUH,+I(FK:%MDS(C%A&,[:\[32:\:W+$7+;E46WVM?*"-)\=B'&A3 +M",GB#U'5]AYC4G$FV&8HXM'"C@"B$\:C(,,G$]B:0IX!TP1R(["G +M9%#N!44-A\JO9O!+8D6M18,$61411"HLG?D/7Z`[8DA(P?/!"8EL;&3L8RT4 +MQ(!@K;:/KB?$3_V)_YL?;41W^D1ZI0#F04&,59`03VE.]-D"19))4^(QVDA5 +M'J3^5AUBG\WRCNB>XX0'Y1?+S8$8(0^<34/`U5('L4(R&'1[26)W01*A*[PC +MH60^4?//9I955?[\;&T>'#V'EXC[^8D1.Y\[:D54'UB$A^U2."?C5]?:];BY +MP.;A)VU?R[:U^>IM::]J(E"0A\QXA/]4U.U(GFGPJ\1R@F[*U-Y[!?0AZ^@[ +M@ZRVX)C!)987`=1#3OXA@DDG:*26HAN+8XBFXIX/0F#9-Q9:3B,LD<2;PZ8A +MJ$LM!&;SZ!#5."L$XN@5(0^**5^>I`(&^)@$&U-Y\?0-;.0LF+)5GQYF&DN,UDQ$;;3:ADB&F,? +MH*C$-L3@K2I)B33B!=!3F66%!<+LHA"R%HA9AJO^%#8<<6\:3#*%E@R57*]Z +MELR2CET# +HB>?E'OI*J+26P6VU*JC]E@?6\>Y_-!$,@B'[8C__%W)%.%"0D/CAD0`` +` +end --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-doclink.dpatch +++ gcc-3.4-3.4.6/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~ 2004-02-21 13:49:31.000000000 +0100 ++++ libstdc++-v3/docs/doxygen/mainpage.html 2004-02-21 13:59:02.000000000 +0100 +@@ -30,8 +30,8 @@ + + +

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

License, Copyright, and Other Lawyerly Verbosity

+

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

+

Part of the generated documentation involved comments and notes from --- gcc-3.4-3.4.6.orig/debian/patches/gpc-version-fix.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-version-fix.dpatch @@ -0,0 +1,46 @@ +#! /bin/sh -e + +# DP: gpc: Declare global variable version string + +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/options.c.orig Sun Apr 10 01:23:17 2005 ++++ gcc/p/options.c Sun Apr 10 01:26:37 2005 +@@ -31,6 +31,8 @@ + #include "options.h" + #endif + ++const char *lang_version_string = GPC_RELEASE_STRING ", based on gcc-"; ++ + /* An array with all long Pascal command-line switches. */ + static const struct + { +@@ -915,8 +917,6 @@ + version_flag = 1; + if (version_flag) + fprintf (stderr, "GNU Pascal version is actually %s, based on gcc-%s\n", GPC_RELEASE_STRING, version_string); +-#else +- version_string = concat (GPC_RELEASE_STRING ", based on gcc-", version_string, NULL); + #endif + + lexer_options = compiler_options = co = (struct options *) xmalloc (sizeof (struct options)); + --- gcc-3.4-3.4.6.orig/debian/patches/gcj-without-rpath.dpatch +++ gcc-3.4-3.4.6/debian/patches/gcj-without-rpath.dpatch @@ -0,0 +1,118 @@ +#! /bin/sh -e + +# DP: don't define runtime link path for java binaries and libraries + +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/Makefile.am~ Mon Apr 1 11:29:37 2002 ++++ src/libjava/Makefile.am Mon Apr 1 11:42:55 2002 +@@ -109,6 +109,8 @@ + + ## ################################################################ + ++rpath_def = $(shell if test "$(toolexeclibdir)" != /usr/lib -a test "$(toolexeclibdir)" != /usr/lib/.; then echo -rpath $(toolexeclibdir); fi) ++ + ## + ## How to build libgcj.a and libgcj.jar + ## +@@ -423,7 +425,7 @@ + ## need this because we are explicitly using libtool to link using the + ## `.la' file. + jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + jv_convert_LINK = $(GCJLINK) + ## We explicitly link in the libraries we need. This way we don't + ## need -nodefaultlibs, so we can still rely on gcj picking up the +@@ -440,7 +442,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 $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++gij_LDFLAGS = $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + gij_LINK = $(GCJLINK) + ## We explicitly link in the libraries we need. This way we don't + ## need -nodefaultlibs, so we can still rely on gcj picking up the +@@ -456,7 +458,7 @@ + ## This is a dummy definition. + EXTRA_rmic_SOURCES = $(rmi_java_source_files) + rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + rmic_LINK = $(GCJLINK) + ## We explicitly link in the libraries we need. This way we don't + ## need -nodefaultlibs, so we can still rely on gcj picking up the +@@ -472,7 +474,7 @@ + ## This is a dummy definition. + EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) + rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + rmiregistry_LINK = $(GCJLINK) + ## We explicitly link in the libraries we need. This way we don't + ## need -nodefaultlibs, so we can still rely on gcj picking up the +--- src/libjava/Makefile.in~ Mon Apr 1 11:29:37 2002 ++++ src/libjava/Makefile.in Mon Apr 1 11:44:02 2002 +@@ -195,6 +195,7 @@ + $(GCINCS) $(THREADINCS) $(INCLTDL) \ + $(GCC_UNWIND_INCLUDE) $(ZINCS) $(LIBFFIINCS) + ++rpath_def = $(shell if test "$(toolexeclibdir)" != /usr/lib -a test "$(toolexeclibdir)" != /usr/lib/.; then echo -rpath $(toolexeclibdir); fi) + + nat_files = $(nat_source_files:.cc=.lo) + x_nat_files = $(x_nat_source_files:.cc=.lo) +@@ -267,7 +268,7 @@ + jv_convert_SOURCES = + EXTRA_jv_convert_SOURCES = $(convert_source_files) + jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + + jv_convert_LINK = $(GCJLINK) + jv_convert_LDADD = libgcj.la -L$(here)/.libs +@@ -276,7 +277,7 @@ + + + gij_SOURCES = gij.cc +-gij_LDFLAGS = -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++gij_LDFLAGS = $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + gij_LINK = $(GCJLINK) + gij_LDADD = libgcj.la -L$(here)/.libs + gij_DEPENDENCIES = libgcj.la libgcj.spec +@@ -284,7 +285,7 @@ + rmic_SOURCES = + EXTRA_rmic_SOURCES = $(rmi_java_source_files) + rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + + rmic_LINK = $(GCJLINK) + rmic_LDADD = libgcj.la -L$(here)/.libs +@@ -293,7 +294,7 @@ + rmiregistry_SOURCES = + EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) + rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(rpath_def) -shared-libgcc $(THREADLDFLAGS) + + rmiregistry_LINK = $(GCJLINK) + rmiregistry_LDADD = libgcj.la -L$(here)/.libs --- gcc-3.4-3.4.6.orig/debian/patches/gpc-doc.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-doc.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: gpc documentation: Fix hyperlinks to the example 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 + #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/p/doc/macros.texi~ 2005-01-01 23:47:29.000000000 +0100 ++++ gcc/p/doc/macros.texi 2005-08-09 11:25:36.472607454 +0200 +@@ -49,7 +49,7 @@ + @end macro + + @macro xhrefexample{FILENAME,DESCRIPTION} +-@uref{../demos/\FILENAME\,[\DESCRIPTION\]} ++@uref{../examples/\FILENAME\,[\DESCRIPTION\]} + @end macro + + @macro htmlhrule --- gcc-3.4-3.4.6.orig/debian/patches/ada-gcc-name.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-gcc-name.dpatch @@ -0,0 +1,106 @@ +#! /bin/sh -e + +# DP: use gcc-3.4 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-3.4/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-3.4 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-3.4"); + + 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-3.4'"); + 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-3.4"); + 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-3.4", 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-3.4"); + -- May be modified by switch --GCC= + + Gcc_Set : Boolean := False; --- gcc-3.4-3.4.6.orig/debian/patches/ada-no-gnatpsta.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-no-gnatpsta.dpatch @@ -0,0 +1,55 @@ +#! /bin/sh -e + +# DP: Don't build the gnatpsta tool + +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-10-22 Arnaud Charlet + + * Makefile.in: Disable build of gnatpsta. PR ada/10110. + +--- gcc/ada/Makefile.in~ 2003-07-04 21:53:53.000000000 +0200 ++++ gcc/ada/Makefile.in 2003-10-29 11:02:58.000000000 +0100 +@@ -1609,7 +1609,7 @@ + TOOLSCASE=native \ + ../../gnatchop$(exeext) ../../gnat$(exeext) ../../gnatkr$(exeext) \ + ../../gnatls$(exeext) ../../gnatprep$(exeext) \ +- ../../gnatpsta$(exeext) ../../gnatxref$(exeext) \ ++ ../../gnatxref$(exeext) \ + ../../gnatfind$(exeext) ../../gnatname$(exeext) + + # These tools are only built for the native version. +@@ -1653,10 +1653,10 @@ + $(TOOLS_LIBS) + + ../../gnatpsta$(exeext): deftarg.o +- $(GNATMAKE) -c $(ADA_INCLUDES) gnatpsta --GCC="$(CC) $(ALL_ADAFLAGS)" +- $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatpsta +- $(GNATLINK) -v gnatpsta -o $@ --GCC="$(CC) $(ADA_INCLUDES)"\ +- ../targtyps.o deftarg.o $(TOOLS_LIBS) ++# $(GNATMAKE) -c $(ADA_INCLUDES) gnatpsta --GCC="$(CC) $(ALL_ADAFLAGS)" ++# $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatpsta ++# $(GNATLINK) -v gnatpsta -o $@ --GCC="$(CC) $(ADA_INCLUDES)"\ ++# ../targtyps.o deftarg.o $(TOOLS_LIBS) + + ../../gnatxref$(exeext): + $(GNATMAKE) -c $(ADA_INCLUDES) gnatxref --GCC="$(CC) $(ALL_ADAFLAGS)" --- gcc-3.4-3.4.6.orig/debian/patches/tool-version-checks.dpatch +++ gcc-3.4-3.4.6/debian/patches/tool-version-checks.dpatch @@ -0,0 +1,49 @@ +#! /bin/sh -e + +# DP: Backpart version checks for makeinfo and ld. + +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 -f ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/configure.ac~ 2005-06-01 18:32:31.000000000 +0200 ++++ gcc/configure.ac 2008-03-29 16:25:58.000000000 +0100 +@@ -648,7 +648,7 @@ + # that we can use it. + gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version, + [GNU texinfo.* \([0-9][0-9.]*\)], +- [4.[2-9]*]) ++ [4.[2-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*]) + fi + + if test $gcc_cv_prog_makeinfo_modern = no; then +@@ -1886,9 +1886,7 @@ + if echo "$ld_ver" | grep GNU > /dev/null; then + changequote(,)dnl + ld_vers=`echo $ld_ver | sed -n \ +- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ +- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ +- -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ ++ -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p'` --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-mips-atomic.dpatch +++ gcc-3.4-3.4.6/debian/patches/libstdc++-mips-atomic.dpatch @@ -0,0 +1,86 @@ +#! /bin/sh -e + +# DP: Fix libstdc++ atomic ops for 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 + ;; + -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/config/cpu/mips/atomicity.h.old 2004-03-18 18:36:29.000000000 +0100 ++++ libstdc++-v3/config/cpu/mips/atomicity.h 2004-10-26 16:40:09.000000000 +0200 +@@ -39,43 +39,25 @@ namespace __gnu_cxx + + __asm__ __volatile__ + ("/* Inline exchange & add */\n\t" +- "1:\n\t" + ".set push\n\t" +-#if _MIPS_SIM == _ABIO32 + ".set mips2\n\t" +-#endif +- "ll %0,%3\n\t" +- "addu %1,%4,%0\n\t" +- "sc %1,%2\n\t" ++ ".set noreorder\n\t" ++ ".set nomacro\n" ++ "1:\tll %0,(%2)\n\t" ++ "addu %1,%3,%0\n\t" ++ "sc %1,(%2)\n\t" ++ ".set reorder\n\t" ++ "beqzl %1,1b\n\t" + ".set pop\n\t" +- "beqz %1,1b\n\t" +- "/* End exchange & add */" +- : "=&r"(__result), "=&r"(__tmp), "=m"(*__mem) +- : "m" (*__mem), "r"(__val)); +- ++ "/* End exchange & add */\n" ++ : "=&r"(__result), "=&r"(__tmp), "+r"(__mem) ++ : "r"(__val) ++ : "memory"); ++ + return __result; + } + + void +- __attribute__ ((__unused__)) + __atomic_add(volatile _Atomic_word* __mem, int __val) +- { +- _Atomic_word __result; +- +- __asm__ __volatile__ +- ("/* Inline atomic add */\n\t" +- "1:\n\t" +- ".set push\n\t" +-#if _MIPS_SIM == _ABIO32 +- ".set mips2\n\t" +-#endif +- "ll %0,%2\n\t" +- "addu %0,%3,%0\n\t" +- "sc %0,%1\n\t" +- ".set pop\n\t" +- "beqz %0,1b\n\t" +- "/* End atomic add */" +- : "=&r"(__result), "=m"(*__mem) +- : "m" (*__mem), "r"(__val)); +- } ++ { __exchange_and_add(__mem, __val); } + } // namespace __gnu_cxx + + --- gcc-3.4-3.4.6.orig/debian/patches/ada-missing-lib.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-missing-lib.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: Diable usage auf addr2line library (currently not packaged for Debian) + +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/ada/adaint.c~ Sat Mar 2 00:38:10 2002 ++++ src/gcc/ada/adaint.c Fri Apr 5 18:36:10 2002 +@@ -2214,7 +2214,7 @@ + } + #endif + +-#if defined (CROSS_COMPILE) \ ++#if 1 || defined (CROSS_COMPILE) \ + || (! (defined (sparc) && defined (sun) && defined (__SVR4)) \ + && ! defined (linux) \ + && ! defined (sgi) \ +--- src/gcc/ada/Makefile.in~ Thu Mar 14 12:46:04 2002 ++++ src/gcc/ada/Makefile.in Fri Apr 5 18:39:51 2002 +@@ -1169,7 +1169,7 @@ + system.ads<5lsystem.ads + + MLIB_TGT=5lml-tgt +- MISCLIB=-laddr2line -lbfd ++ MISCLIB=-lbfd + THREADSLIB=-lpthread + GNATLIB_SHARED=gnatlib-shared-dual + GMEM_LIB=gmemlib --- gcc-3.4-3.4.6.orig/debian/patches/multiarch-lib.dpatch +++ gcc-3.4-3.4.6/debian/patches/multiarch-lib.dpatch @@ -0,0 +1,55 @@ +#! /bin/sh -e + +# DP: multiarch-include.dpatch by Stephen Frost +# DP: updated for gcc-3.4 by Matthias Klose +# DP: +# DP: Adds the multiarch include directory (/usr/include/TARGET_ALIAS) +# DP: to the system include paths. + +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 01:44:11.000000000 +0200 +@@ -6,7 +6,7 @@ + + MULTILIB_OPTIONS = m64/m32 + MULTILIB_DIRNAMES = 64 32 +-MULTILIB_OSDIRNAMES = ../lib64 ../lib ++MULTILIB_OSDIRNAMES = x86_64-linux-gnu i486-linux-gnu + + LIBGCC = stmp-multilib + INSTALL_LIBGCC = install-multilib +diff -urN gcc.old/config/t-linux gcc/config/t-linux +--- gcc.old/config/t-linux 2003-09-23 20:55:57.000000000 +0200 ++++ gcc/config/t-linux 2004-07-10 01:48:41.000000000 +0200 +@@ -11,3 +11,10 @@ + 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 gthr-gnat.c ++ ++MULTILIB_OPTIONS = m32 ++MULTILIB_DIRNAMES = 32 ++MULTILIB_OSDIRNAMES = $TARGET_ARCH ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib --- gcc-3.4-3.4.6.orig/debian/patches/m32r-fixes.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-fixes.dpatch @@ -0,0 +1,89 @@ +#! /bin/sh -e +# +# +# DP: fix for shared libgcc + +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 -p2 < $0;; + -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p2 < $0;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1;; +esac + +exit 0 + +--- gcc-3.4-3.4.2/src/gcc/config.gcc.orig 2004-04-22 00:12:35.000000000 +0900 ++++ gcc-3.4-3.4.2/src/gcc/config.gcc 2004-11-17 21:23:21.000000000 +0900 +@@ -1304,7 +1304,7 @@ + m32r-*-linux*) + tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} m32r/linux.h" + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" +- tmake_file="m32r/t-linux" ++ tmake_file="t-slibgcc-elf-ver m32r/t-linux" + gnu_ld=yes + use_fixproto=yes + if test x$enable_threads = xyes; then +@@ -1314,7 +1314,7 @@ + m32rle-*-linux*) + tm_file="dbxelf.h elfos.h svr4.h linux.h m32r/little.h ${tm_file} m32r/linux.h" + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" +- tmake_file="m32r/t-linux" ++ tmake_file="t-slibgcc-elf-ver m32r/t-linux" + gnu_ld=yes + use_fixproto=yes + if test x$enable_threads = xyes; then +--- gcc-3.4-3.4.2/src/gcc/config/m32r/t-linux.orig 2003-12-31 19:33:02.000000000 +0900 ++++ gcc-3.4-3.4.2/src/gcc/config/m32r/t-linux 2004-11-17 21:18:50.000000000 +0900 +@@ -23,7 +23,6 @@ + # to produce a shared library, but since we don't know ahead of time when + # we will be doing that, we just always use -fpic when compiling the + # routines in initfini.c. +-# -fpic currently isn't supported for the m32r. + + CRTSTUFF_T_CFLAGS_S = -fPIC + +@@ -40,3 +39,12 @@ + CROSS_LIBGCC1 = + LIBGCC1_TEST = + ++# Override t-slibgcc-elf-ver to export some libgcc symbols with ++# the symbol versions that glibc used. ++SHLIB_MAPFILES += $(srcdir)/libgcc-std.ver \ ++ $(srcdir)/config/m32r/libgcc-glibc.ver ++ ++# Use unwind-dw2-fde-glibc ++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 gthr-gnat.c +--- /dev/null 2004-11-01 19:04:23.000000000 +0900 ++++ gcc-3.4-3.4.2/src/gcc/config/m32r/libgcc-glibc.ver 2004-11-17 21:11:56.000000000 +0900 +@@ -0,0 +1,21 @@ ++# In order to work around the very problems that force us to now generally ++# create a libgcc.so, glibc reexported a number of routines from libgcc.a. ++# By now choosing the same version tags for these specific routines, we ++# maintain enough binary compatibility to allow future versions of glibc ++# to defer implementation of these routines to libgcc.so via DT_AUXILIARY. ++ ++# Note that we cannot use the default libgcc-glibc.ver file on m32r, ++# because GLIBC_2.0 does not exist on this architecture, as the first ++# ever glibc release on the platform was GLIBC_2.3. ++ ++%inherit GCC_3.0 GLIBC_2.3 ++GLIBC_2.3 { ++ __register_frame ++ __register_frame_table ++ __deregister_frame ++ __register_frame_info ++ __deregister_frame_info ++ __frame_state_for ++ __register_frame_info_table ++} ++ --- gcc-3.4-3.4.6.orig/debian/patches/hurd-changes.dpatch +++ gcc-3.4-3.4.6/debian/patches/hurd-changes.dpatch @@ -0,0 +1,52 @@ +#! /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. + +--- gcc/config/t-gnu.old 2003-04-27 15:01:15.000000000 -0400 ++++ gcc/config/t-gnu 2003-04-27 15:01:48.000000000 -0400 +@@ -1,2 +1,3 @@ + # In GNU, "/usr" is a four-letter word. +-NATIVE_SYSTEM_HEADER_DIR = /include ++# Overridden for Debian GNU/Hurd (hurd-i386) ++NATIVE_SYSTEM_HEADER_DIR = /usr/include + + + + + +--- gcc/config/gnu.h.orig 2005-08-24 19:11:28.000000000 +0200 ++++ gcc/config/gnu.h 2005-08-24 19:22:56.000000000 +0200 +@@ -10,7 +10,8 @@ + + /* Standard include directory. In GNU, "/usr" is a four-letter word. */ + #undef STANDARD_INCLUDE_DIR +-#define STANDARD_INCLUDE_DIR "/include" ++/* Overridden for Debian GNU/Hurd (hurd-i386). */ ++#define STANDARD_INCLUDE_DIR "/usr/include" + + /* Implicit library calls should use memcpy, not bcopy, etc. */ + #undef TARGET_MEM_FUNCTIONS --- gcc-3.4-3.4.6.orig/debian/patches/libffi-without-libgcj.dpatch +++ gcc-3.4-3.4.6/debian/patches/libffi-without-libgcj.dpatch @@ -0,0 +1,65 @@ +#! /bin/sh -e + +# DP: build libffi without building libgcj + +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 2004-08-03 00:53:36.000000000 +0200 ++++ configure.in 2004-08-03 00:52:35.000000000 +0200 +@@ -136,8 +136,7 @@ + host_tools="texinfo byacc flex bison binutils gas ld gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar" + + # libgcj represents the runtime libraries only used by gcj. +-libgcj="target-libffi \ +- target-boehm-gc \ ++libgcj="target-boehm-gc \ + target-zlib \ + target-qthreads \ + target-libjava" +@@ -150,6 +150,7 @@ + target-libstdc++-v3 \ + target-libf2c \ + ${libgcj} \ ++ target-libffi \ + target-libobjc" + + # these tools are built using the target libraries, and are intended to +--- configure~ 2004-08-28 02:31:04.000000000 +0200 ++++ configure 2004-08-28 10:55:28.000000000 +0200 +@@ -876,8 +876,7 @@ + host_tools="texinfo byacc flex bison binutils gas ld gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar" + + # libgcj represents the runtime libraries only used by gcj. +-libgcj="target-libffi \ +- target-boehm-gc \ ++libgcj="target-boehm-gc \ + target-zlib \ + target-qthreads \ + target-libjava" +@@ -891,6 +890,7 @@ + target-libstdc++-v3 \ + target-libf2c \ + ${libgcj} \ ++ target-libffi \ + target-libobjc" + + # these tools are built using the target libraries, and are intended to --- gcc-3.4-3.4.6.orig/debian/patches/libobjc.dpatch +++ gcc-3.4-3.4.6/debian/patches/libobjc.dpatch @@ -0,0 +1,31 @@ +#! /bin/sh -e + +# DP: Find gc.h header in /usr/include/gc for --enable-objc-gc enabled builds. + + +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 + +--- libobjc/Makefile.in~ Fri Jul 21 13:16:47 2000 ++++ libobjc/Makefile.in Fri Jul 21 13:20:23 2000 +@@ -76,7 +76,7 @@ + -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \ + -I$(srcdir)/$(MULTISRCTOP)../include + +-OBJC_GCFLAGS=-DOBJC_WITH_GC=1 ++OBJC_GCFLAGS=-I/usr/include/gc -DOBJC_WITH_GC=1 + OBJC_THREAD_FILE=thr-objc + + .SUFFIXES: --- gcc-3.4-3.4.6.orig/debian/patches/libgpc-shared.dpatch +++ gcc-3.4-3.4.6/debian/patches/libgpc-shared.dpatch @@ -0,0 +1,47 @@ +#! /bin/sh -e + +# DP: build shared libgpc (pascal runtime 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 + +--- gcc/p/Make-lang.in~ 2003-01-13 22:37:21.000000000 +0100 ++++ gcc/p/Make-lang.in 2003-01-13 22:42:48.000000000 +0100 +@@ -98,7 +98,7 @@ + GPCSOLIBSHORTNAME=libgpc.so + GPCSOLIBNAME=$(GPCSOLIBSHORTNAME).$(gpc_major).$(gpc_minor).$(rts_version) + GPCSOLIBDIR=lib +-WITH_SHARED=@with_shared@ ++WITH_SHARED=yes + + BISON=bison + BISONFLAGS= +--- gcc/p/rts/Makefile.in~ 2002-11-14 17:23:41.000000000 +0100 ++++ gcc/p/rts/Makefile.in 2003-01-13 22:43:00.000000000 +0100 +@@ -42,7 +42,7 @@ + WITH_SHARED=@with_shared@ + VERSION_FILENAME=$(srcdir)/rts-version + gpc_major=2 +-gpc_minor=0 ++gpc_minor=1 + rts_version=`cat $(VERSION_FILENAME)` + GPCSOLIBSHORTNAME=libgpc.so + GPCSOLIBNAME=$(GPCSOLIBSHORTNAME).$(gpc_major).$(gpc_minor).$(rts_version) --- gcc-3.4-3.4.6.orig/debian/patches/kbsd-gnu.dpatch +++ gcc-3.4-3.4.6/debian/patches/kbsd-gnu.dpatch @@ -0,0 +1,735 @@ +#! /bin/sh -e + +# Description: GNU/k*BSD support +# Author: Robert Millan +# Status: libtool bits are merged in upstream 3.5 branch, rest is pending. + +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 -Nur gcc-3.4.4.old/boehm-gc/configure gcc-3.4.4/boehm-gc/configure +--- gcc-3.4.4.old/boehm-gc/configure 2005-05-19 11:58:00.000000000 +0200 ++++ gcc-3.4.4/boehm-gc/configure 2005-06-23 16:09:42.000000000 +0200 +@@ -1879,7 +1879,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -1947,7 +1947,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +diff -Nur gcc-3.4.4.old/configure gcc-3.4.4/configure +--- gcc-3.4.4.old/configure 2005-03-08 18:31:40.000000000 +0100 ++++ gcc-3.4.4/configure 2005-06-23 16:09:40.000000000 +0200 +@@ -1935,7 +1935,7 @@ + powerpc-*-netware*) + target_makefile_frag="config/mt-netware" + ;; +- *-*-linux*) ++ *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu) + target_makefile_frag="config/mt-linux" + ;; + *-*-aix4.[3456789]* | *-*-aix[56789].*) +diff -Nur gcc-3.4.4.old/configure.in gcc-3.4.4/configure.in +--- gcc-3.4.4.old/configure.in 2005-03-08 18:31:40.000000000 +0100 ++++ gcc-3.4.4/configure.in 2005-06-23 16:09:40.000000000 +0200 +@@ -1174,7 +1174,7 @@ + powerpc-*-netware*) + target_makefile_frag="config/mt-netware" + ;; +- *-*-linux*) ++ *-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu) + target_makefile_frag="config/mt-linux" + ;; + *-*-aix4.[[3456789]]* | *-*-aix[[56789]].*) +diff -Nur gcc-3.4.4.old/gcc/config/i386/kfreebsd-gnu.h gcc-3.4.4/gcc/config/i386/kfreebsd-gnu.h +--- gcc-3.4.4.old/gcc/config/i386/kfreebsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-3.4.4/gcc/config/i386/kfreebsd-gnu.h 2005-06-23 16:09:40.000000000 +0200 +@@ -0,0 +1,26 @@ ++/* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format ++ Copyright (C) 2004 ++ Free Software Foundation, Inc. ++ Contributed by Robert Millan. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#undef LINK_EMULATION ++#define LINK_EMULATION "elf_i386_fbsd" ++#undef REG_NAME ++#define REG_NAME(reg) sc_ ## reg +diff -Nur gcc-3.4.4.old/gcc/config/i386/knetbsd-gnu.h gcc-3.4.4/gcc/config/i386/knetbsd-gnu.h +--- gcc-3.4.4.old/gcc/config/i386/knetbsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-3.4.4/gcc/config/i386/knetbsd-gnu.h 2005-06-23 16:09:41.000000000 +0200 +@@ -0,0 +1,24 @@ ++/* Definitions for Intel 386 running kNetBSD-based GNU systems with ELF format ++ Copyright (C) 2004 ++ Free Software Foundation, Inc. ++ Contributed by Robert Millan. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#undef REG_NAME ++#define REG_NAME(reg) sc_ ## reg +diff -Nur gcc-3.4.4.old/gcc/config/i386/linux.h gcc-3.4.4/gcc/config/i386/linux.h +--- gcc-3.4.4.old/gcc/config/i386/linux.h 2003-11-29 04:08:10.000000000 +0100 ++++ gcc-3.4.4/gcc/config/i386/linux.h 2005-06-23 16:09:41.000000000 +0200 +@@ -108,24 +108,30 @@ + + /* If ELF is the default format, we should not use /lib/elf. */ + ++#ifndef LINK_EMULATION ++# define LINK_EMULATION "elf_i386" ++#endif ++#ifndef DYNAMIC_LINKER ++# ifdef USE_GNULIBC_1 ++# define DYNAMIC_LINKER "/lib/ld-linux.so.1" ++# else ++# define DYNAMIC_LINKER "/lib/ld-linux.so.2" ++# endif ++#endif ++ ++#undef SUBTARGET_EXTRA_SPECS ++#define SUBTARGET_EXTRA_SPECS \ ++ { "link_emulation", LINK_EMULATION },\ ++ { "dynamic_linker", DYNAMIC_LINKER } ++ + #undef LINK_SPEC +-#ifdef USE_GNULIBC_1 +-#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ +- %{!shared: \ +- %{!ibcs: \ +- %{!static: \ +- %{rdynamic:-export-dynamic} \ +- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ +- %{static:-static}}}" +-#else +-#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ ++#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ + %{!shared: \ + %{!ibcs: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ +- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ ++ %{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} \ + %{static:-static}}}" +-#endif + + /* A C statement (sans semicolon) to output to the stdio stream + FILE the assembler definition of uninitialized global DECL named +@@ -217,6 +223,8 @@ + #include + #include + ++#define REG_NAME(reg) reg ++ + #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ + do { \ + unsigned char *pc_ = (CONTEXT)->ra; \ +@@ -245,28 +253,28 @@ + else \ + break; \ + \ +- new_cfa_ = sc_->esp; \ ++ new_cfa_ = sc_->REG_NAME(esp); \ + (FS)->cfa_how = CFA_REG_OFFSET; \ + (FS)->cfa_reg = 4; \ + (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ + \ + /* The SVR4 register numbering macros aren't usable in libgcc. */ \ + (FS)->regs.reg[0].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[0].loc.offset = (long)&sc_->eax - new_cfa_; \ ++ (FS)->regs.reg[0].loc.offset = (long)&sc_->REG_NAME(eax) - new_cfa_; \ + (FS)->regs.reg[3].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[3].loc.offset = (long)&sc_->ebx - new_cfa_; \ ++ (FS)->regs.reg[3].loc.offset = (long)&sc_->REG_NAME(ebx) - new_cfa_; \ + (FS)->regs.reg[1].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[1].loc.offset = (long)&sc_->ecx - new_cfa_; \ ++ (FS)->regs.reg[1].loc.offset = (long)&sc_->REG_NAME(ecx) - new_cfa_; \ + (FS)->regs.reg[2].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[2].loc.offset = (long)&sc_->edx - new_cfa_; \ ++ (FS)->regs.reg[2].loc.offset = (long)&sc_->REG_NAME(edx) - new_cfa_; \ + (FS)->regs.reg[6].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[6].loc.offset = (long)&sc_->esi - new_cfa_; \ ++ (FS)->regs.reg[6].loc.offset = (long)&sc_->REG_NAME(esi) - new_cfa_; \ + (FS)->regs.reg[7].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[7].loc.offset = (long)&sc_->edi - new_cfa_; \ ++ (FS)->regs.reg[7].loc.offset = (long)&sc_->REG_NAME(edi) - new_cfa_; \ + (FS)->regs.reg[5].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[5].loc.offset = (long)&sc_->ebp - new_cfa_; \ ++ (FS)->regs.reg[5].loc.offset = (long)&sc_->REG_NAME(ebp) - new_cfa_; \ + (FS)->regs.reg[8].how = REG_SAVED_OFFSET; \ +- (FS)->regs.reg[8].loc.offset = (long)&sc_->eip - new_cfa_; \ ++ (FS)->regs.reg[8].loc.offset = (long)&sc_->REG_NAME(eip) - new_cfa_; \ + (FS)->retaddr_column = 8; \ + goto SUCCESS; \ + } while (0) +diff -Nur gcc-3.4.4.old/gcc/config/kfreebsd-gnu.h gcc-3.4.4/gcc/config/kfreebsd-gnu.h +--- gcc-3.4.4.old/gcc/config/kfreebsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-3.4.4/gcc/config/kfreebsd-gnu.h 2005-06-23 16:09:41.000000000 +0200 +@@ -0,0 +1,36 @@ ++/* Definitions for kFreeBSD-based GNU systems with ELF format ++ Copyright (C) 2004 ++ Free Software Foundation, Inc. ++ Contributed by Robert Millan. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#undef LINUX_TARGET_OS_CPP_BUILTINS ++#define LINUX_TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__FreeBSD_kernel__"); \ ++ builtin_define ("__GLIBC__"); \ ++ builtin_define_std ("unix"); \ ++ builtin_assert ("system=unix"); \ ++ builtin_assert ("system=posix"); \ ++ } \ ++ while (0) ++ ++#undef DYNAMIC_LINKER ++#define DYNAMIC_LINKER "/lib/ld.so.1" +diff -Nur gcc-3.4.4.old/gcc/config/knetbsd-gnu.h gcc-3.4.4/gcc/config/knetbsd-gnu.h +--- gcc-3.4.4.old/gcc/config/knetbsd-gnu.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-3.4.4/gcc/config/knetbsd-gnu.h 2005-06-23 16:09:41.000000000 +0200 +@@ -0,0 +1,36 @@ ++/* Definitions for kNetBSD-based GNU systems with ELF format ++ Copyright (C) 2004 ++ Free Software Foundation, Inc. ++ Contributed by Robert Millan. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#undef LINUX_TARGET_OS_CPP_BUILTINS ++#define LINUX_TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__NetBSD_kernel__"); \ ++ builtin_define ("__GLIBC__"); \ ++ builtin_define_std ("unix"); \ ++ builtin_assert ("system=unix"); \ ++ builtin_assert ("system=posix"); \ ++ } \ ++ while (0) ++ ++#undef DYNAMIC_LINKER ++#define DYNAMIC_LINKER "/lib/ld.so.1" +diff -Nur gcc-3.4.4.old/gcc/config.gcc gcc-3.4.4/gcc/config.gcc +--- gcc-3.4.4.old/gcc/config.gcc 2005-04-25 06:47:59.000000000 +0200 ++++ gcc-3.4.4/gcc/config.gcc 2005-06-23 16:09:41.000000000 +0200 +@@ -434,21 +434,10 @@ + esac + fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h" + ;; +-*-*-kfreebsd*-gnu) +- # Must come before *-*-gnu* +- xm_defines=POSIX # needed for cross-compiling from FreeBSD? +- extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" +- # GNU tools are the only tools. +- gas=yes +- gnu_ld=yes +- case ${enable_threads} in +- "" | yes | posix) thread_file='posix' ;; +- esac +- ;; + *-*-linux*libc1* | *-*-linux*aout*) + # Avoid the generic linux case. + ;; +-*-*-linux*) ++*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu) + # Must come before *-*-gnu* (because of *-*-linux-gnu* systems). + extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" + gas=yes +@@ -998,23 +987,21 @@ + thread_file='single' + fi + ;; +-i[34567]86-*-linux*) # Intel 80386's running GNU/Linux ++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 +- # aka GNU/Linux C library 6 + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" + tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" ++ 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" ;; ++ esac + ;; + x86_64-*-linux*) + 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" + tmake_file="t-slibgcc-elf-ver t-linux i386/t-linux64" + ;; +-i[34567]86-*-kfreebsd*-gnu) # must be before i[34567]86-*-gnu* +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h kfreebsdgnu.h i386/kfreebsdgnu.h" +- tmake_file="t-slibgcc-elf-ver t-kfreebsd-gnu i386/t-crtstuff" +- float_format=i386 +- use_fixproto=no +- ;; + i[34567]86-*-gnu*) + ;; + i[34567]86-pc-msdosdjgpp*) +diff -Nur gcc-3.4.4.old/libf2c/configure gcc-3.4.4/libf2c/configure +--- gcc-3.4.4.old/libf2c/configure 2004-05-18 11:08:39.000000000 +0200 ++++ gcc-3.4.4/libf2c/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -1549,7 +1549,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -1617,7 +1617,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +diff -Nur gcc-3.4.4.old/libffi/configure gcc-3.4.4/libffi/configure +--- gcc-3.4.4.old/libffi/configure 2004-05-18 11:08:39.000000000 +0200 ++++ gcc-3.4.4/libffi/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -1264,7 +1264,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -1332,7 +1332,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +@@ -2818,16 +2818,16 @@ + i*86-*-linux*) TARGET=X86; TARGETDIR=x86;; + i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;; + i*86-*-beos*) TARGET=X86; TARGETDIR=x86;; +-i*86-*-freebsd*) TARGET=X86; TARGETDIR=x86;; +-i*86-*-netbsdelf*) TARGET=X86; TARGETDIR=x86;; ++i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;; ++i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;; + i*86-*-win32*) TARGET=X86_WIN32; TARGETDIR=x86;; + i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; + i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; + sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; + sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; +-sparc-*-linux* | sparc-*-netbsdelf*) TARGET=SPARC; TARGETDIR=sparc;; +-sparc64-*-linux* | sparc64-*-netbsd*) TARGET=SPARC; TARGETDIR=sparc;; +-alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-netbsd*) TARGET=ALPHA; TARGETDIR=alpha;; ++sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; ++sparc64-*-linux* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; ++alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;; + ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; + m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; + mips64*-*);; +@@ -2839,7 +2839,7 @@ + powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; + rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; + arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; +-arm*-*-netbsdelf*) TARGET=ARM; TARGETDIR=arm;; ++arm*-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=ARM; TARGETDIR=arm;; + s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; + s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; + x86_64-*-linux*) TARGET=X86_64; TARGETDIR=x86;; +diff -Nur gcc-3.4.4.old/libffi/configure.in gcc-3.4.4/libffi/configure.in +--- gcc-3.4.4.old/libffi/configure.in 2004-04-27 07:10:19.000000000 +0200 ++++ gcc-3.4.4/libffi/configure.in 2005-06-23 16:09:41.000000000 +0200 +@@ -60,16 +60,16 @@ + i*86-*-linux*) TARGET=X86; TARGETDIR=x86;; + i*86-*-solaris*) TARGET=X86; TARGETDIR=x86;; + i*86-*-beos*) TARGET=X86; TARGETDIR=x86;; +-i*86-*-freebsd*) TARGET=X86; TARGETDIR=x86;; +-i*86-*-netbsdelf*) TARGET=X86; TARGETDIR=x86;; ++i*86-*-freebsd* | i*86-*-kfreebsd*-gnu) TARGET=X86; TARGETDIR=x86;; ++i*86-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=X86; TARGETDIR=x86;; + i*86-*-win32*) TARGET=X86_WIN32; TARGETDIR=x86;; + i*86-*-cygwin*) TARGET=X86_WIN32; TARGETDIR=x86;; + i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; + sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; + sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; +-sparc-*-linux* | sparc-*-netbsdelf*) TARGET=SPARC; TARGETDIR=sparc;; +-sparc64-*-linux* | sparc64-*-netbsd*) TARGET=SPARC; TARGETDIR=sparc;; +-alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-netbsd*) TARGET=ALPHA; TARGETDIR=alpha;; ++sparc-*-linux* | sparc-*-netbsdelf* | sparc-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; ++sparc64-*-linux* | sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu) TARGET=SPARC; TARGETDIR=sparc;; ++alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu) TARGET=ALPHA; TARGETDIR=alpha;; + ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; + m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; + mips64*-*);; +@@ -81,7 +81,7 @@ + powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; + rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; + arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; +-arm*-*-netbsdelf*) TARGET=ARM; TARGETDIR=arm;; ++arm*-*-netbsdelf* | i*86-*-knetbsd*-gnu) TARGET=ARM; TARGETDIR=arm;; + s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; + s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; + x86_64-*-linux*) TARGET=X86_64; TARGETDIR=x86;; +diff -Nur gcc-3.4.4.old/libjava/configure gcc-3.4.4/libjava/configure +--- gcc-3.4.4.old/libjava/configure 2005-05-19 11:58:00.000000000 +0200 ++++ gcc-3.4.4/libjava/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -1975,7 +1975,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -2043,7 +2043,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +diff -Nur gcc-3.4.4.old/libjava/libltdl/configure gcc-3.4.4/libjava/libltdl/configure +--- gcc-3.4.4.old/libjava/libltdl/configure 2005-05-19 11:58:00.000000000 +0200 ++++ gcc-3.4.4/libjava/libltdl/configure 2005-06-23 16:09:42.000000000 +0200 +@@ -3558,7 +3558,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd*) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -3629,7 +3629,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else +@@ -7343,7 +7343,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) ++ freebsd* | kfreebsd*-gnu) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +@@ -7976,6 +7976,20 @@ + dynamic_linker=no + ;; + ++kfreebsd*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ++ soname_spec='${libname}${release}${shared_ext}$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ hardcode_into_libs=yes ++ dynamic_linker='GNU ld.so' ++ ;; ++ ++ + freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat +diff -Nur gcc-3.4.4.old/libobjc/configure gcc-3.4.4/libobjc/configure +--- gcc-3.4.4.old/libobjc/configure 2004-05-18 11:08:42.000000000 +0200 ++++ gcc-3.4.4/libobjc/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -1554,7 +1554,7 @@ + esac + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -1622,7 +1622,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +diff -Nur gcc-3.4.4.old/libstdc++-v3/configure gcc-3.4.4/libstdc++-v3/configure +--- gcc-3.4.4.old/libstdc++-v3/configure 2005-02-01 07:29:28.000000000 +0100 ++++ gcc-3.4.4/libstdc++-v3/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -3944,7 +3944,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -4012,7 +4012,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else +diff -Nur gcc-3.4.4.old/libtool.m4 gcc-3.4.4/libtool.m4 +--- gcc-3.4.4.old/libtool.m4 2004-05-18 11:08:37.000000000 +0200 ++++ gcc-3.4.4/libtool.m4 2005-06-23 16:09:41.000000000 +0200 +@@ -621,7 +621,7 @@ + lt_cv_deplibs_check_method=pass_all + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -689,7 +689,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] + else +diff -Nur gcc-3.4.4.old/ltcf-c.sh gcc-3.4.4/ltcf-c.sh +--- gcc-3.4.4.old/ltcf-c.sh 2003-11-19 06:29:32.000000000 +0100 ++++ gcc-3.4.4/ltcf-c.sh 2005-06-23 16:09:41.000000000 +0200 +@@ -175,7 +175,7 @@ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + +- netbsd*) ++ netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -442,7 +442,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) ++ freebsd* | kfreebsd*-gnu) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +@@ -489,7 +489,7 @@ + link_all_deplibs=yes + ;; + +- netbsd*) ++ netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +diff -Nur gcc-3.4.4.old/ltcf-cxx.sh gcc-3.4.4/ltcf-cxx.sh +--- gcc-3.4.4.old/ltcf-cxx.sh 2003-11-19 06:29:32.000000000 +0100 ++++ gcc-3.4.4/ltcf-cxx.sh 2005-06-23 16:09:41.000000000 +0200 +@@ -289,7 +289,7 @@ + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs=no + ;; +- freebsd*) ++ freebsd* | kfreebsd*-gnu) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs=yes +@@ -449,7 +449,7 @@ + ;; + esac + ;; +- netbsd*) ++ netbsd* | knetbsd*-gnu) + # NetBSD uses g++ - do we need to do anything? + ;; + osf3*) +@@ -804,7 +804,7 @@ + ;; + esac + ;; +- freebsd*) ++ freebsd* | kfreebsd*-gnu) + # FreeBSD uses GNU C++ + ;; + gnu*) +diff -Nur gcc-3.4.4.old/ltcf-gcj.sh gcc-3.4.4/ltcf-gcj.sh +--- gcc-3.4.4.old/ltcf-gcj.sh 2003-11-19 06:29:32.000000000 +0100 ++++ gcc-3.4.4/ltcf-gcj.sh 2005-06-23 16:09:41.000000000 +0200 +@@ -178,7 +178,7 @@ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + +- netbsd*) ++ netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= +@@ -445,7 +445,7 @@ + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd*) ++ freebsd* | kfreebsd*-gnu) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes +@@ -476,7 +476,7 @@ + link_all_deplibs=yes + ;; + +- netbsd*) ++ netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else +diff -Nur gcc-3.4.4.old/ltconfig gcc-3.4.4/ltconfig +--- gcc-3.4.4.old/ltconfig 2004-03-05 22:05:41.000000000 +0100 ++++ gcc-3.4.4/ltconfig 2005-06-23 16:09:41.000000000 +0200 +@@ -1168,6 +1168,17 @@ + hardcode_into_libs=yes + ;; + ++kfreebsd*-gnu | knetbsd*-gnu) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ hardcode_into_libs=yes ++ ;; ++ + hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. +diff -Nur gcc-3.4.4.old/zlib/configure gcc-3.4.4/zlib/configure +--- gcc-3.4.4.old/zlib/configure 2004-05-18 11:09:14.000000000 +0200 ++++ gcc-3.4.4/zlib/configure 2005-06-23 16:09:41.000000000 +0200 +@@ -1521,7 +1521,7 @@ + esac + ;; + +-freebsd* ) ++freebsd* | kfreebsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) +@@ -1589,7 +1589,7 @@ + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +-netbsd*) ++netbsd* | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else --- gcc-3.4-3.4.6.orig/debian/patches/m32r-gotoff.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-gotoff.dpatch @@ -0,0 +1,76 @@ +#! /bin/sh -e +# +# +# DP: Bug fix of static variable access with GOTOFF + +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 -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 + +--- gcc-3.4.1/gcc/config/m32r/m32r.c.orig 2004-09-09 18:26:50.000000000 +0900 ++++ gcc-3.4.1/gcc/config/m32r/m32r.c 2004-09-09 18:27:30.000000000 +0900 +@@ -2207,6 +2207,15 @@ + else + address = reg; + ++ current_function_uses_pic_offset_table = 1; ++ if (GET_CODE (orig) == LABEL_REF ++ || GET_CODE (orig) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (orig)) ++ { ++ emit_insn (gen_gotoff_load_addr (reg, orig)); ++ emit_insn (gen_addsi3 (reg, reg, pic_offset_table_rtx)); ++ return reg; ++ } ++ + emit_insn (gen_pic_load_addr (address, orig)); + + emit_insn (gen_addsi3 (address, address, pic_offset_table_rtx)); +@@ -2214,8 +2223,7 @@ + + RTX_UNCHANGING_P (pic_ref) = 1; + insn = emit_move_insn (reg, pic_ref); +- current_function_uses_pic_offset_table = 1; + #if 0 + /* Put a REG_EQUAL note on this insn, so that it can be optimized + by loop. */ + +--- gcc-3.4.1/gcc/config/m32r/m32r.md.orig 2004-09-09 18:26:50.000000000 +0900 ++++ gcc-3.4.1/gcc/config/m32r/m32r.md 2004-09-09 18:27:30.000000000 +0900 +@@ -31,7 +31,8 @@ + [(UNSPEC_LOAD_SDA_BASE 2) + (UNSPEC_SET_CBIT 3) + (UNSPEC_PIC_LOAD_ADDR 4) +- (UNSPEC_GET_PC 5)]) ++ (UNSPEC_GET_PC 5) ++ (UNSPEC_GOTOFF 6)]) + + ;; Insn type. Used to default other attribute values. + (define_attr "type" +@@ -2711,7 +2712,15 @@ + "ld24 %0,%#%1" + [(set_attr "type" "int4")]) + ++(define_insn "gotoff_load_addr" ++ [(set (match_operand:SI 0 "register_operand" "=r") ++ (unspec:SI [(match_operand 1 "" "")] UNSPEC_GOTOFF))] ++ "flag_pic" ++ "seth %0,%#shigh(%1@GOTOFF)\;add3 %0,%0,low(%1@GOTOFF)" ++ [(set_attr "type" "int4") ++ (set_attr "length" "8")]) ++ + ;; Load program counter insns. + + (define_insn "get_pc" --- gcc-3.4-3.4.6.orig/debian/patches/gpc-names.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-names.dpatch @@ -0,0 +1,119 @@ +#! /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.4: (gpc-2.1-3.4). The GNU Pascal Compiler. + @end direntry + @dircategory Individual utilities + @direntry +-* GPC: (gpc)Invoking GPC. The GNU Pascal Compiler. ++* GPC-2.1-3.4: (gpc-2.1-3.4)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,44 @@ + 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 ++iv=-3.4 ++ ++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 \ --- gcc-3.4-3.4.6.orig/debian/patches/gcc-textdomain.dpatch +++ gcc-3.4-3.4.6/debian/patches/gcc-textdomain.dpatch @@ -0,0 +1,58 @@ +#! /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~ 2004-07-21 22:42:58.000000000 +0200 ++++ gcc/Makefile.in 2004-07-21 22:43:37.000000000 +0200 +@@ -2311,6 +2311,7 @@ + intl.o: intl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h Makefile + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ + -DLOCALEDIR=\"$(localedir)\" \ ++ -DPACKAGE=\"$(PACKAGE)\" \ + -c $(srcdir)/intl.c $(OUTPUT_OPTION) + + # +@@ -3848,7 +3848,7 @@ + GMSGFMT = @GMSGFMT@ + MSGMERGE = msgmerge + +-PACKAGE = @PACKAGE@ ++PACKAGE = $(shell echo @PACKAGE@|sed '$(program_transform_name)') + CATALOGS = @CATALOGS@ + + .PHONY: build- install- build-po install-po update-po +--- gcc/intl.c~ 2004-07-21 22:42:58.000000000 +0200 ++++ gcc/intl.c 2004-07-21 22:43:37.000000000 +0200 +@@ -41,8 +41,8 @@ + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain (PACKAGE, LOCALEDIR); ++ (void) textdomain (PACKAGE); + } + + #if defined HAVE_WCHAR_H && defined HAVE_WORKING_MBSTOWCS && defined HAVE_WCSWIDTH --- gcc-3.4-3.4.6.orig/debian/patches/ada-driver.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-driver.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Look for gcc-3.3 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,7 @@ + ${ac_tool_prefix}$user_cc $user_cc \ + ${ac_tool_prefix}gcc gcc \ + ${ac_tool_prefix}cc cc \ ++ ${ac_tool_prefix}gcc-3.3 gcc-3.3 \ + ${ac_tool_prefix}gnatgcc gnatgcc \ + ${ac_tool_prefix}gnatcc gnatcc \ + ${ac_tool_prefix}adagcc adagcc \ --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-pic.dpatch +++ gcc-3.4-3.4.6/debian/patches/libstdc++-pic.dpatch @@ -0,0 +1,70 @@ +#! /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 + +--- libstdc++-v3/src/Makefile.am~ 2003-02-28 09:21:05.000000000 +0100 ++++ libstdc++-v3/src/Makefile.am 2003-02-28 09:28:50.000000000 +0100 +@@ -224,6 +224,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 GLIBCPP_BUILD_DEBUG + all-local: build_debug + +--- libstdc++-v3/src/Makefile.in~ 2004-02-21 09:55:48.000000000 +0100 ++++ libstdc++-v3/src/Makefile.in 2004-02-21 09:59:34.000000000 +0100 +@@ -585,7 +585,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 + +@@ -618,6 +618,7 @@ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-exec install-exec-am install-info install-info-am \ ++ install-exec-local \ + install-man install-strip install-toolexeclibLTLIBRARIES \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ +@@ -707,6 +708,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: --- gcc-3.4-3.4.6.orig/debian/patches/m68k-update.dpatch +++ gcc-3.4-3.4.6/debian/patches/m68k-update.dpatch @@ -0,0 +1,191 @@ +#! /bin/sh -e + +# DP: Add two m68k specfic patches backported from 4.0 concerning wrong code +# DP: generation (Richard Zidlicky). + +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/m68k/m68k.md.rz 2005-03-05 12:14:41.038411000 +0100 ++++ gcc/config/m68k/m68k.md 2005-03-05 12:15:19.580856855 +0100 +@@ -1454,11 +1454,20 @@ + "" + { + CC_STATUS_INIT; +- operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); +- if (TARGET_68020 || TARGET_COLDFIRE) +- return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0"; ++ if (ADDRESS_REG_P(operands[1])) ++ { ++ if (TARGET_68020 || TARGET_COLDFIRE) ++ return "move%.w %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0"; ++ else ++ return "move%.w %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi %0"; ++ } + else +- return "move%.b %1,%2\;ext%.w %0\;ext%.l %2\;move%.l %2,%0\;smi %0"; ++ { ++ if (TARGET_68020 || TARGET_COLDFIRE) ++ return "move%.b %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0"; ++ else ++ return "move%.b %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi %0"; ++ } + }) + + (define_insn "extendhidi2" +@@ -4834,8 +4843,8 @@ + (define_insn "" + [(set (match_operand:SI 0 "nonimmediate_operand" "=d") + (sign_extract:SI (match_operand:QI 1 "memory_operand" "o") +- (match_operand:SI 2 "general_operand" "di") +- (match_operand:SI 3 "general_operand" "di")))] ++ (match_operand:SI 2 "general_operand" "dn") ++ (match_operand:SI 3 "general_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + "bfexts %1{%b3:%b2},%0") + +@@ -4850,8 +4859,8 @@ + (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" "di,di") +- (match_operand:SI 3 "general_operand" "di,di")))] ++ (match_operand:SI 2 "general_operand" "dn,dn") ++ (match_operand:SI 3 "general_operand" "dn,dn")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (GET_CODE (operands[2]) == CONST_INT) +@@ -4868,8 +4877,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_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 +@@ -4883,8 +4892,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (const_int 0))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -4894,8 +4903,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (const_int -1))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -4913,8 +4922,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:QI 0 "memory_operand" "+o") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (match_operand:SI 3 "register_operand" "d"))] + "TARGET_68020 && TARGET_BITFIELD" + "bfins %3,%0{%b2:%b1}") +@@ -4925,16 +4934,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" "di") +- (match_operand:SI 3 "general_operand" "di")))] ++ (match_operand:SI 2 "general_operand" "dn") ++ (match_operand:SI 3 "general_operand" "dn")))] + "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" "di") +- (match_operand:SI 3 "general_operand" "di")))] ++ (match_operand:SI 2 "general_operand" "dn") ++ (match_operand:SI 3 "general_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (GET_CODE (operands[2]) == CONST_INT) +@@ -4951,8 +4960,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (const_int 0))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -4962,8 +4971,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (const_int -1))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -4973,8 +4982,8 @@ + + (define_insn "" + [(set (zero_extract:SI (match_operand:SI 0 "register_operand" "+d") +- (match_operand:SI 1 "general_operand" "di") +- (match_operand:SI 2 "general_operand" "di")) ++ (match_operand:SI 1 "general_operand" "dn") ++ (match_operand:SI 2 "general_operand" "dn")) + (match_operand:SI 3 "register_operand" "d"))] + "TARGET_68020 && TARGET_BITFIELD" + { +@@ -4996,7 +5005,7 @@ + [(set (cc0) + (zero_extract:SI (match_operand:QI 0 "memory_operand" "o") + (match_operand:SI 1 "const_int_operand" "n") +- (match_operand:SI 2 "general_operand" "di")))] ++ (match_operand:SI 2 "general_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (operands[1] == const1_rtx +@@ -5021,7 +5030,7 @@ + [(set (cc0) + (zero_extract:SI (match_operand:SI 0 "register_operand" "d") + (match_operand:SI 1 "const_int_operand" "n") +- (match_operand:SI 2 "general_operand" "di")))] ++ (match_operand:SI 2 "general_operand" "dn")))] + "TARGET_68020 && TARGET_BITFIELD" + { + if (operands[1] == const1_rtx --- gcc-3.4-3.4.6.orig/debian/patches/gpc-no-gpidump.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-no-gpidump.dpatch @@ -0,0 +1,40 @@ +#! /bin/sh -e + +# DP: Do not build gpidump due to PR optimization/9279. + +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/utils/Makefile~ 2006-06-10 23:11:43.995565704 +0000 ++++ gcc/p/utils/Makefile 2006-07-04 08:49:03.733107048 +0000 +@@ -41,9 +41,9 @@ + + # Internal variables + PFLAGS1=--executable-path=. --unit-path=$(GCC_DIR)/p/rts --unit-path=$(GCC_DIR)/p/units +-EXE=binobj$(exeext) gpidump$(exeext) +-EXE2=binobj gpidump +-DOC=binobj.1 gpidump.1 ++EXE=binobj$(exeext) ++EXE2=binobj ++DOC=binobj.1 + PC_WITH_FLAGS=$(PC) --automake --executable-file-name $(UTILS_WARN) $(CFLAGS) $(PFLAGS) $(PFLAGS1) + + all: $(EXE) $(DOC) --- gcc-3.4-3.4.6.orig/debian/patches/arm-tune.dpatch +++ gcc-3.4-3.4.6/debian/patches/arm-tune.dpatch @@ -0,0 +1,72 @@ +#! /bin/sh -e + +# DP: ARM patch for default tuning + +src=gcc +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + src=$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 --fuzz 10 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p1 --fuzz 10 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- src/gcc/config/arm/arm.c 2001/05/24 21:09:05 1.146 ++++ src/gcc/config/arm/arm.c 2001/06/17 19:10:22 +@@ -430,6 +430,32 @@ arm_override_options () + abort (); + + insn_flags = sel->flags; ++ ++#ifdef TARGET_TUNE_DEFAULT ++ /* If the user didn't specify tuning either, use the target's ++ preferred flags. */ ++ if (tune_flags == 0) ++ { ++ struct processors * tunesel; ++ struct cpu_default * tunedef; ++ ++ for (tunedef = cpu_defaults; tunedef->name; tunedef++) ++ if (tunedef->cpu == TARGET_TUNE_DEFAULT) ++ break; ++ ++ if (tunedef->name == NULL) ++ abort (); ++ ++ for (tunesel = all_cores; tunesel->name != NULL; tunesel++) ++ if (streq (tunedef->name, tunesel->name)) ++ break; ++ ++ if (tunesel->name == NULL) ++ abort (); ++ ++ tune_flags = tunesel->flags; ++ } ++#endif + + /* Now check to see if the user has specified some command line + switch that require certain abilities from the cpu. */ +--- src/gcc/config/arm/linux-elf.h~ 13 Dec 2001 00:27:30 -0000 1.30 ++++ src/gcc/config/arm/linux-elf.h Thu May 23 07:59:25 2002 +@@ -122,6 +122,9 @@ + #undef CC1_SPEC + #define CC1_SPEC "%{profile:-p}" + ++/* Tune for XScale. */ ++#define TARGET_TUNE_DEFAULT TARGET_CPU_xscale ++ + /* Copied from config/linux.h, needed for libstdc++v3. */ + #undef CPLUSPLUS_CPP_SPEC + #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" --- gcc-3.4-3.4.6.orig/debian/patches/hppa-libjava-update.dpatch +++ gcc-3.4-3.4.6/debian/patches/hppa-libjava-update.dpatch @@ -0,0 +1,255 @@ +#! /bin/sh -e + +# DP: MD_FALLBACK_FRAME_STATE_FOR definition for pa32-linux + +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 ${dir}gcc/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +From: "John David Anglin" +Sender: gcc-patches-owner@gcc.gnu.org +To: randolph@tausq.org +Cc: gcc-patches@gcc.gnu.org +Subject: Re: [patch/hppa-linux] MD_FALLBACK_FRAME_STATE_FOR definition +Date: Thu, 8 Jul 2004 23:44:54 -0400 (EDT) + +I committed the following, slightly revised version, of your patch. +The libjava portion was previously approved. + +Tested on hppa-unknown-linux-gnu. Installed to trunk. + +Thanks, +Dave +-- +J. David Anglin dave.anglin@nrc-cnrc.gc.ca +National Research Council of Canada (613) 990-0752 (FAX: 952-6602) + +2004-07-08 Randolph Chung + + * gcc/config/pa/pa32-linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define. + + * libjava/configure.in (SIGNAL_HANDLER): Use pa-signal.h for hppa. + * libjava/configure: Regenerate. + * libjava/configure.host: Set can_unwind_signal for hppa*-linux. + * libjava/pa-signal.h: New file. + +Index: gcc/config/pa/pa32-linux.h +=================================================================== +RCS file: /cvs/gcc/gcc/gcc/config/pa/pa32-linux.h,v +retrieving revision 1.12 +diff -u -3 -p -r1.12 pa32-linux.h +--- gcc/config/pa/pa32-linux.h 23 Aug 2003 01:32:59 -0000 1.12 ++++ gcc/config/pa/pa32-linux.h 9 Jul 2004 03:12:51 -0000 +@@ -35,3 +35,97 @@ Boston, MA 02111-1307, USA. */ + __attribute__ ((__unused__, section(".ctors"), \ + aligned(sizeof(func_ptr)))) \ + = { (func_ptr) (-1) } ++ ++/* Do code reading to identify a signal frame, and set the frame ++ state data appropriately. See unwind-dw2.c for the structs. */ ++ ++#ifdef IN_LIBGCC2 ++#include ++#include ++ ++/* Unfortunately, because of various bugs and changes to the kernel, ++ we have several cases to deal with. ++ ++ In 2.4, the signal trampoline is 4 words, and (CONTEXT)->ra should ++ point directly at the beginning of the trampoline and struct rt_sigframe. ++ ++ In <= 2.6.5-rc2-pa3, the signal trampoline is 9 words, and ++ (CONTEXT)->ra points at the 4th word in the trampoline structure. This ++ is wrong, it should point at the 5th word. This is fixed in 2.6.5-rc2-pa4. ++ ++ To detect these cases, we first take (CONTEXT)->ra, align it to 64-bytes ++ to get the beginning of the signal frame, and then check offsets 0, 4 ++ and 5 to see if we found the beginning of the trampoline. This will ++ tell us how to locate the sigcontext structure. ++ ++ Note that with a 2.4 64-bit kernel, the signal context is not properly ++ passed back to userspace so the unwind will not work correctly. */ ++#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ ++ do { \ ++ unsigned long sp = (unsigned long)(CONTEXT)->ra & ~63; \ ++ unsigned int *pc = (unsigned int *)sp; \ ++ unsigned long off; \ ++ _Unwind_Ptr new_cfa; \ ++ int i; \ ++ struct sigcontext *sc; \ ++ struct rt_sigframe { \ ++ struct siginfo info; \ ++ struct ucontext uc; \ ++ } *frame; \ ++ \ ++ /* rt_sigreturn trampoline: \ ++ 3419000x ldi 0, %r25 or ldi 1, %r25 (x = 0 or 2) \ ++ 3414015a ldi __NR_rt_sigreturn, %r20 \ ++ e4008200 be,l 0x100(%sr2, %r0), %sr0, %r31 \ ++ 08000240 nop */ \ ++ \ ++ if (pc[0] == 0x34190000 || pc[0] == 0x34190002) \ ++ off = 4*4; \ ++ else if (pc[4] == 0x34190000 || pc[4] == 0x34190002) \ ++ { \ ++ pc += 4; \ ++ off = 10 * 4; \ ++ } \ ++ else if (pc[5] == 0x34190000 || pc[5] == 0x34190002) \ ++ { \ ++ pc += 5; \ ++ off = 10 * 4; \ ++ } \ ++ else \ ++ break; \ ++ if (pc[1] != 0x3414015a \ ++ || pc[2] != 0xe4008200 \ ++ || pc[3] != 0x08000240) \ ++ break; \ ++ \ ++ frame = (struct rt_sigframe *)(sp + off); \ ++ sc = &frame->uc.uc_mcontext; \ ++ \ ++ new_cfa = sc->sc_gr[30]; \ ++ (FS)->cfa_how = CFA_REG_OFFSET; \ ++ (FS)->cfa_reg = 30; \ ++ (FS)->cfa_offset = new_cfa - (long) (CONTEXT)->cfa; \ ++ for (i = 1; i <= 31; i++) \ ++ { \ ++ (FS)->regs.reg[i].how = REG_SAVED_OFFSET; \ ++ (FS)->regs.reg[i].loc.offset = (long)&sc->sc_gr[i] - new_cfa; \ ++ } \ ++ for (i = 4; i <= 31; i++) \ ++ { \ ++ /* FP regs have left and right halves */ \ ++ (FS)->regs.reg[2*i+24].how = REG_SAVED_OFFSET; \ ++ (FS)->regs.reg[2*i+24].loc.offset \ ++ = (long)&sc->sc_fr[i] - new_cfa; \ ++ (FS)->regs.reg[2*i+24+1].how = REG_SAVED_OFFSET; \ ++ (FS)->regs.reg[2*i+24+1].loc.offset \ ++ = (long)&sc->sc_fr[i] + 4 - new_cfa; \ ++ } \ ++ (FS)->regs.reg[88].how = REG_SAVED_OFFSET; \ ++ (FS)->regs.reg[88].loc.offset = (long) &sc->sc_sar - new_cfa; \ ++ (FS)->regs.reg[2].how = REG_SAVED_OFFSET; \ ++ (FS)->regs.reg[2].loc.offset = (long) &sc->sc_iaoq[0] - new_cfa; \ ++ (FS)->retaddr_column = 2; \ ++ goto SUCCESS; \ ++ } while (0) ++ ++#endif /* IN_LIBGCC2 */ +Index: libjava/configure.host +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/configure.host,v +retrieving revision 1.59 +diff -u -3 -p -r1.59 configure.host +--- libjava/configure.host 7 Jul 2004 18:23:59 -0000 1.59 ++++ libjava/configure.host 9 Jul 2004 03:12:51 -0000 +@@ -169,6 +169,7 @@ case "${host}" in + sparc*-linux* | \ + ia64-* | \ + x86_64*-linux* | \ ++ hppa*-linux* | \ + sh-linux* | sh[34]*-linux*) + can_unwind_signal=yes + if test x$slow_pthread_self = xyes \ +Index: libjava/configure.in +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/configure.in,v +retrieving revision 1.186 +diff -u -3 -p -r1.186 configure.in +--- libjava/configure.in 1 Jul 2004 04:09:07 -0000 1.186 ++++ libjava/configure.in 9 Jul 2004 03:12:51 -0000 +@@ -1177,6 +1177,9 @@ case "${host}" in + # SYSDEP_SOURCES=sysdep/ia64.c + # test -d sysdep || mkdir sysdep + # ;; ++ hppa*-*-linux*) ++ SIGNAL_HANDLER=include/pa-signal.h ++ ;; + ia64-*-linux*) + SIGNAL_HANDLER=include/dwarf2-signal.h + ;; +--- libjava/include/pa-signal.h 2004-05-04 13:30:25.000000000 -0700 ++++ libjava/include/pa-signal.h 2004-05-04 13:30:25.000000000 -0700 +@@ -0,0 +1,61 @@ ++// pa-signal.h - Catch runtime signals and turn them into exceptions. ++ ++/* Copyright (C) 1998, 1999, 2000 Free Software Foundation ++ ++ This file is part of libgcj. ++ ++This software is copyrighted work licensed under the terms of the ++Libgcj License. Please consult the file "LIBGCJ_LICENSE" for ++details. */ ++ ++#ifndef JAVA_SIGNAL_H ++#define JAVA_SIGNAL_H 1 ++ ++#include ++#include ++#include ++ ++#define HANDLE_SEGV 1 ++#define HANDLE_FPE 1 ++ ++#define SIGNAL_HANDLER(_name) \ ++static void _Jv_##_name (int _dummy, siginfo_t *_info, void *arg) ++ ++#define MAKE_THROW_FRAME(_exception) \ ++do \ ++{ \ ++ struct ucontext *uc = (struct ucontext *)arg; \ ++ struct sigcontext *sc = &uc->uc_mcontext; \ ++ (void)_dummy; \ ++ (void)_info; \ ++ /* Advance the program counter so that it is after the start \ ++ of the instruction: the exception handler expects \ ++ the PC to point to the instruction after a call. */ \ ++ sc->sc_iaoq[0] = sc->sc_iaoq[1]; \ ++ sc->sc_iaoq[1] += 4; \ ++} \ ++while (0) ++ ++#define INIT_SEGV \ ++do \ ++ { \ ++ struct sigaction act; \ ++ act.sa_sigaction = _Jv_catch_segv; \ ++ sigemptyset (&act.sa_mask); \ ++ act.sa_flags = SA_SIGINFO; \ ++ syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, _NSIG / 8); \ ++ } \ ++while (0) ++ ++#define INIT_FPE \ ++do \ ++ { \ ++ struct sigaction act; \ ++ act.sa_sigaction = _Jv_catch_fpe; \ ++ sigemptyset (&act.sa_mask); \ ++ act.sa_flags = SA_SIGINFO; \ ++ syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, _NSIG / 8); \ ++ } \ ++while (0) ++ ++#endif /* JAVA_SIGNAL_H */ --- gcc-3.4-3.4.6.orig/debian/patches/alpha-ieee.dpatch +++ gcc-3.4-3.4.6/debian/patches/alpha-ieee.dpatch @@ -0,0 +1,53 @@ +#! /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_ 2003-12-23 15:08:11.000000000 -0500 ++++ src/gcc/config/alpha/alpha.c 2003-12-23 15:16:31.000000000 -0500 +@@ -337,4 +337,8 @@ + }; + ++ /* 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_ 2004-01-06 10:59:19.000000000 -0500 ++++ src/gcc/doc/invoke.texi 2004-01-06 11:26:11.000000000 -0500 +@@ -8571,4 +8571,11 @@ + 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 --- gcc-3.4-3.4.6.orig/debian/patches/fastjar-update.dpatch +++ gcc-3.4-3.4.6/debian/patches/fastjar-update.dpatch @@ -0,0 +1,1179 @@ +#! /bin/sh -e + +# DP: Implement fastjar -u (PR 7854). + +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 fastjar.old/Makefile.am fastjar/Makefile.am +--- fastjar.old/Makefile.am 2004-04-15 01:49:37.000000000 +0200 ++++ fastjar/Makefile.am 2004-05-30 17:30:34.000000000 +0200 +@@ -46,10 +46,11 @@ + LIBIBERTY = ../libiberty/libiberty.a + + bin_PROGRAMS = jar grepjar +-jar_SOURCES = jartool.c dostime.c compress.c pushback.c jartool.h \ +-zipfile.h dostime.h compress.h pushback.h ++jar_SOURCES = jartool.c dostime.c compress.c pushback.c shift.c jartool.h \ ++zipfile.h dostime.h compress.h pushback.h shift.h + jar_LDADD = $(ZLIBS) $(LIBIBERTY) + jar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) ++jar_CPPFLAGS = $(AM_CPPFLAGS) -DWITH_SHIFT_DOWN + + grepjar_SOURCES = jargrep.c dostime.c compress.c pushback.c jartool.h \ + zipfile.h dostime.h compress.h pushback.h +diff -urN fastjar.old/Makefile.in fastjar/Makefile.in +--- fastjar.old/Makefile.in 2004-04-19 04:23:04.000000000 +0200 ++++ fastjar/Makefile.in 2004-05-30 17:33:00.000000000 +0200 +@@ -165,11 +165,12 @@ + LIBIBERTY = ../libiberty/libiberty.a + + bin_PROGRAMS = jar grepjar +-jar_SOURCES = jartool.c dostime.c compress.c pushback.c jartool.h \ +-zipfile.h dostime.h compress.h pushback.h ++jar_SOURCES = jartool.c dostime.c compress.c pushback.c shift.c jartool.h \ ++zipfile.h dostime.h compress.h pushback.h shift.h + + jar_LDADD = $(ZLIBS) $(LIBIBERTY) + jar_DEPENDENCIES = $(ZDEPS) $(LIBIBERTY) ++jar_CPPFLAGS = -DWITH_SHIFT_DOWN + + grepjar_SOURCES = jargrep.c dostime.c compress.c pushback.c jartool.h \ + zipfile.h dostime.h compress.h pushback.h +@@ -217,8 +218,9 @@ + compress.$(OBJEXT) pushback.$(OBJEXT) + grepjar_OBJECTS = $(am_grepjar_OBJECTS) + grepjar_LDFLAGS = +-am_jar_OBJECTS = jartool.$(OBJEXT) dostime.$(OBJEXT) compress.$(OBJEXT) \ +- pushback.$(OBJEXT) ++am_jar_OBJECTS = jar-jartool.$(OBJEXT) jar-dostime.$(OBJEXT) \ ++ jar-compress.$(OBJEXT) jar-pushback.$(OBJEXT) \ ++ jar-shift.$(OBJEXT) + jar_OBJECTS = $(am_jar_OBJECTS) + jar_LDFLAGS = + +@@ -329,6 +331,36 @@ + .c.obj: + $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + ++jar-jartool.o: jartool.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-jartool.o `test -f 'jartool.c' || echo '$(srcdir)/'`jartool.c ++ ++jar-jartool.obj: jartool.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-jartool.obj `if test -f 'jartool.c'; then $(CYGPATH_W) 'jartool.c'; else $(CYGPATH_W) '$(srcdir)/jartool.c'; fi` ++ ++jar-dostime.o: dostime.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-dostime.o `test -f 'dostime.c' || echo '$(srcdir)/'`dostime.c ++ ++jar-dostime.obj: dostime.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-dostime.obj `if test -f 'dostime.c'; then $(CYGPATH_W) 'dostime.c'; else $(CYGPATH_W) '$(srcdir)/dostime.c'; fi` ++ ++jar-compress.o: compress.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-compress.o `test -f 'compress.c' || echo '$(srcdir)/'`compress.c ++ ++jar-compress.obj: compress.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-compress.obj `if test -f 'compress.c'; then $(CYGPATH_W) 'compress.c'; else $(CYGPATH_W) '$(srcdir)/compress.c'; fi` ++ ++jar-pushback.o: pushback.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-pushback.o `test -f 'pushback.c' || echo '$(srcdir)/'`pushback.c ++ ++jar-pushback.obj: pushback.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-pushback.obj `if test -f 'pushback.c'; then $(CYGPATH_W) 'pushback.c'; else $(CYGPATH_W) '$(srcdir)/pushback.c'; fi` ++ ++jar-shift.o: shift.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-shift.o `test -f 'shift.c' || echo '$(srcdir)/'`shift.c ++ ++jar-shift.obj: shift.c ++ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(jar_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o jar-shift.obj `if test -f 'shift.c'; then $(CYGPATH_W) 'shift.c'; else $(CYGPATH_W) '$(srcdir)/shift.c'; fi` ++ + .texi.info: + @rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9] + $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ +diff -urN fastjar.old/compress.c fastjar/compress.c +--- fastjar.old/compress.c 2002-01-03 05:57:56.000000000 +0100 ++++ fastjar/compress.c 2004-05-30 17:30:34.000000000 +0200 +@@ -74,6 +74,7 @@ + /* + compress.c - code for handling deflation + Copyright (C) 1999 Bryan Burns ++ Copyright (C) 2004 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 +@@ -109,8 +110,12 @@ + #include "jartool.h" + #include "pushback.h" + #include "compress.h" ++#include "shift.h" ++ ++int write_data (int, void *, size_t, struct zipentry *); + + extern int seekable; ++extern off_t end_of_entries; + + static z_stream zs; + +@@ -133,7 +138,36 @@ + } + } + +-int compress_file(int in_fd, int out_fd, struct zipentry *ze){ ++int ++write_data (int fd, void *buf, size_t len, struct zipentry *ze) ++{ ++#ifdef WITH_SHIFT_DOWN ++ struct zipentry *next = NULL; ++ off_t here = lseek (fd, 0, SEEK_CUR); ++ /* ++ * If we are updating and there is not enough space before the next ++ * entry, expand the file. ++ */ ++ if (ze) ++ { ++ next = ze->next_entry; ++ if (next && here + len >= next->offset) ++ { ++ if (shift_down (fd, next->offset, (here + len) - next->offset, next)) ++ { ++ perror ("can't expand file"); ++ exit (1); ++ } ++ } ++ } ++#endif /* WITH_SHIFT_DOWN */ ++ ++ return write (fd, buf, len); ++} ++ ++int compress_file(int in_fd, int out_fd, struct zipentry *ze, ++ struct zipentry *existing) ++{ + Bytef in_buff[RDSZ]; + Bytef out_buff[RDSZ]; + unsigned int rdamt, wramt; +@@ -183,10 +217,11 @@ + /* If the output buffer is full, dump it to disk */ + if(zs.avail_out == 0){ + +- if(write(out_fd, out_buff, RDSZ) != RDSZ){ +- perror("write"); +- exit(1); +- } ++ if (write_data (out_fd, out_buff, RDSZ, existing) != RDSZ) ++ { ++ perror("write"); ++ exit(1); ++ } + + /* clear the output buffer */ + zs.next_out = out_buff; +@@ -201,10 +236,11 @@ + + wramt = RDSZ - zs.avail_out; + +- if(write(out_fd, out_buff, wramt) != (int)wramt){ +- perror("write"); +- exit(1); +- } ++ if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) ++ { ++ perror("write"); ++ exit(1); ++ } + /* clear the output buffer */ + zs.next_out = out_buff; + zs.avail_out = (uInt)RDSZ; +@@ -215,10 +251,11 @@ + while(deflate(&zs, Z_FINISH) == Z_OK){ + wramt = RDSZ - zs.avail_out; + +- if(write(out_fd, out_buff, wramt) != (int)wramt){ +- perror("write"); +- exit(1); +- } ++ if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) ++ { ++ perror("write"); ++ exit(1); ++ } + + zs.next_out = out_buff; + zs.avail_out = (uInt)RDSZ; +@@ -228,10 +265,11 @@ + if(zs.avail_out != RDSZ){ + wramt = RDSZ - zs.avail_out; + +- if(write(out_fd, out_buff, wramt) != (int)wramt){ +- perror("write"); +- exit(1); +- } ++ if (write_data (out_fd, out_buff, wramt, existing) != (int)wramt) ++ { ++ perror("write"); ++ exit(1); ++ } + } + + /* update fastjar's entry information */ +diff -urN fastjar.old/compress.h fastjar/compress.h +--- fastjar.old/compress.h 2000-12-14 19:45:35.000000000 +0100 ++++ fastjar/compress.h 2004-05-30 17:30:34.000000000 +0200 +@@ -46,7 +46,7 @@ + void init_compression(void); + + /* Compresses the file specified by in_fd and appends it to out_fd */ +-int compress_file(int in_fd, int out_fd, struct zipentry *ze); ++int compress_file(int, int, struct zipentry *, struct zipentry *); + + /* Frees memory used by compression function */ + void end_compression(void); +diff -urN fastjar.old/fastjar.texi fastjar/fastjar.texi +--- fastjar.old/fastjar.texi 2003-08-13 23:04:12.000000000 +0200 ++++ fastjar/fastjar.texi 2004-05-30 17:32:33.000000000 +0200 +@@ -125,8 +125,7 @@ + Extract named (or all) files from archive. + + @item -u +-Update existing archive. This option is disabled due to bugs (currently +-fails with exit status 1 and does nothing). ++Update existing archive. Note: This is a Debian backport from GCC 4.0. In unpatched builds this option is disabled due to bugs (currently fails with exit status 1 and does nothing). + + @end table + +diff -urN fastjar.old/jartool.c fastjar/jartool.c +--- fastjar.old/jartool.c 2004-01-07 19:46:04.000000000 +0100 ++++ fastjar/jartool.c 2004-05-30 17:30:34.000000000 +0200 +@@ -1,6 +1,6 @@ + /* + jartool.c - main functions for fastjar utility +- Copyright (C) 2002 Free Software Foundation ++ Copyright (C) 2002, 2004 Free Software Foundation + Copyright (C) 1999, 2000, 2001 Bryan Burns + + This program is free software; you can redistribute it and/or +@@ -238,6 +238,7 @@ + #include "dostime.h" + #include "pushback.h" + #include "compress.h" ++#include "shift.h" + + /* Some systems have mkdir that takes a single argument. */ + #ifdef MKDIR_TAKES_ONE_ARG +@@ -273,15 +274,18 @@ + int consume(pb_file *, int); + int list_jar(int, char**, int); + int extract_jar(int, char**, int); +-int add_file_to_jar(int, int, const char*, struct stat*); +-int add_to_jar(int, const char*); +-int add_to_jar_with_dir(int, const char*, const char*); ++int add_file_to_jar(int, int, const char*, struct stat*, int); ++int add_to_jar(int, const char*, int); ++int add_to_jar_with_dir(int, const char*, const char*, int); + int create_central_header(int); +-int make_manifest(int, const char*); ++int make_manifest(int, const char*, int); ++int read_entries (int); + static void init_args(char **, int); + static char *get_next_arg (void); + static char *jt_strdup (char*); + static void expand_options (int *argcp, char ***argvp); ++static inline struct zipentry *find_entry (const char *); ++static inline int looks_like_dir (const char *); + + /* global variables */ + ub1 file_header[30]; +@@ -305,6 +309,12 @@ + + int number_of_entries; /* number of entries in the linked list */ + ++/* What we go by. */ ++const char *progname; ++ ++/* The offset of the end of the last zip entry. */ ++ub4 end_of_entries; ++ + /* This is used to mark options with no short value. */ + #define LONG_OPT(Num) ((Num) + 128) + +@@ -340,6 +350,8 @@ + int new_argc; + char **new_argv; + ++ progname = argv[0]; ++ + do_compress = TRUE; + verbose = FALSE; + +@@ -418,15 +430,11 @@ + new_argv[new_argc] = NULL; + + if(action == ACTION_NONE){ +- fprintf(stderr, "One of options -{ctxu} must be specified.\n"); ++ fprintf(stderr, "%s: one of options -{ctxu} must be specified.\n", ++ progname); + usage(argv[0]); + } + +- if(action == ACTION_UPDATE){ +- fprintf(stderr, "%s: `-u' mode unimplemented.\n", argv[0]); +- exit(1); +- } +- + /* Verify unsupported combinations and warn of the use of non + standard features */ + if(verbose && use_explicit_list_only) +@@ -435,7 +443,8 @@ + fprintf (stderr, "Warning: using non standard '-@' option\n"); + if(read_names_from_stdin + && (action != ACTION_CREATE && action != ACTION_UPDATE)){ +- fprintf(stderr, "Option '-@' is supported only with '-c' or '-u'.\n"); ++ fprintf(stderr, "%s: option '-@' is supported only with '-c' or '-u'.\n", ++ progname); + usage(argv[0]); + } + +@@ -445,8 +454,8 @@ + jarfd = open(jarfile, O_CREAT | O_BINARY | O_WRONLY | O_TRUNC, 0666); + + if(jarfd < 0){ +- fprintf(stderr, "Error opening %s for writing!\n", jarfile); +- perror(jarfile); ++ fprintf(stderr, "%s: error opening %s for writing: %s\n", progname, ++ jarfile, strerror (errno)); + exit(1); + } + +@@ -470,8 +479,8 @@ + jarfd = open(jarfile, O_RDONLY | O_BINARY); + + if(jarfd < 0){ +- fprintf(stderr, "Error opening %s for reading!\n", jarfile); +- perror(jarfile); ++ fprintf(stderr, "%s: error opening %s for reading: %s\n", progname, ++ jarfile, strerror (errno)); + exit(1); + } + +@@ -484,28 +493,51 @@ + } + } + ++ if (action == ACTION_UPDATE) ++ { ++ if (!jarfile) ++ { ++ fprintf (stderr, "%s: `-u' mode requires a file name\n", ++ argv[0]); ++ exit (1); ++ } ++ ++ if ((jarfd = open (jarfile, O_RDWR | O_BINARY)) < 0) ++ { ++ fprintf (stderr, "Error opening %s for reading!\n", jarfile); ++ perror (jarfile); ++ exit (1); ++ } ++ ++ /* Assert that jarfd is seekable. */ ++ if (lseek (jarfd, 0, SEEK_CUR) == -1) ++ { ++ fprintf (stderr, "%s: %s is not seekable\n", argv[0], jarfile); ++ exit (1); ++ } ++ ++ seekable = TRUE; ++ } ++ + if(action == ACTION_CREATE || action == ACTION_UPDATE){ + const char *arg; + init_headers(); + +- if((action == ACTION_UPDATE) && jarfile) { +- if((jarfd = open(jarfile, O_RDWR | O_BINARY)) < 0) { +- fprintf(stderr, "Error opening %s for reading!\n", jarfile); +- perror(jarfile); +- exit(1); +- } +- } +- + if(do_compress) + init_compression(); +- ++ ++ if (action == ACTION_UPDATE) ++ { ++ if (read_entries (jarfd)) ++ exit (1); ++ } + + /* Add the META-INF/ directory and the manifest */ + if(manifest && mfile) +- make_manifest(jarfd, mfile); +- else if(manifest) +- make_manifest(jarfd, NULL); +- ++ make_manifest(jarfd, mfile, action == ACTION_UPDATE); ++ else if(manifest && action == ACTION_CREATE) ++ make_manifest(jarfd, NULL, FALSE); ++ + init_args (new_argv, 0); + /* now we add the files to the archive */ + while ((arg = get_next_arg ())){ +@@ -514,17 +546,19 @@ + const char *dir_to_change = get_next_arg (); + const char *file_to_add = get_next_arg (); + if (!dir_to_change || !file_to_add) { +- fprintf(stderr, "Error: missing argument for -C.\n"); +- exit(1); +- } +- if (add_to_jar_with_dir(jarfd, dir_to_change, file_to_add)) { +- fprintf(stderr, +- "Error adding %s (in directory %s) to jar archive!\n", +- file_to_add, dir_to_change); ++ fprintf(stderr, "%s: error: missing argument for -C.\n", progname); + exit(1); + } ++ if (add_to_jar_with_dir(jarfd, dir_to_change, file_to_add, ++ action == ACTION_UPDATE)) ++ { ++ fprintf(stderr, ++ "Error adding %s (in directory %s) to jar archive!\n", ++ file_to_add, dir_to_change); ++ exit(1); ++ } + } else { +- if(add_to_jar(jarfd, arg)){ ++ if(add_to_jar(jarfd, arg, action == ACTION_UPDATE)){ + fprintf(stderr, "Error adding %s to jar archive!\n", arg); + exit(1); + } +@@ -533,11 +567,20 @@ + /* de-initialize the compression DS */ + if(do_compress) + end_compression(); ++ ++ if (action == ACTION_UPDATE) ++ lseek (jarfd, end_of_entries, SEEK_SET); + + create_central_header(jarfd); +- +- if (close(jarfd) != 0) { +- fprintf(stderr, "Error closing jar archive!\n"); ++ ++ /* Check if the file shrunk when we updated it. */ ++ if (action == ACTION_UPDATE) ++ ftruncate (jarfd, lseek (jarfd, 0, SEEK_CUR)); ++ ++ if (jarfd != STDIN_FILENO && close(jarfd) != 0) { ++ fprintf(stderr, "%s: error closing jar archive: %s\n", ++ progname, strerror (errno)); ++ exit (1); + } + } else if(action == ACTION_LIST){ + list_jar(jarfd, &new_argv[0], new_argc); +@@ -688,7 +731,175 @@ + number_of_entries++; + } + +-int make_manifest(int jfd, const char *mf_name){ ++static inline struct zipentry * ++find_entry (const char *fname) ++{ ++ struct zipentry *ze; ++ ++ for (ze = ziptail; ze; ze = ze->next_entry) ++ { ++ if (!strcmp (ze->filename, fname)) ++ return ze; ++ } ++ return NULL; ++} ++ ++ ++static inline int ++looks_like_dir (const char *fname) ++{ ++ struct zipentry *ze; ++ size_t len = strlen (fname); ++ ++ for (ze = ziptail; ze; ze = ze->next_entry) ++ { ++ if (strlen (ze->filename) > len ++ && !strncmp (fname, ze->filename, len) ++ && ze->filename[len] == '/') ++ return 1; ++ } ++ return 0; ++} ++ ++ ++/* ++ * Read the zip entries of an existing file, building `ziplist' as we go. ++ */ ++int read_entries (int fd) ++{ ++ struct zipentry *ze; ++ ub1 intbuf[4]; ++ ub1 header[46]; ++ ub2 len; ++ ub2 count, i; ++ off_t offset; ++ ++ if (lseek (fd, -22, SEEK_END) == -1) ++ { ++ fprintf (stderr, "%s: %s: can't seek file\n", progname, jarfile); ++ return 1; ++ } ++ ++ if (read (fd, intbuf, 4) < 4) ++ { ++ perror (progname); ++ return 1; ++ } ++ /* Is there a zipfile comment? */ ++ while (UNPACK_UB4(intbuf, 0) != 0x06054b50) ++ { ++ if (lseek (fd, -5, SEEK_CUR) == -1 || ++ read (fd, intbuf, 4) != 4) ++ { ++ fprintf (stderr, "%s: can't find end of central directory: %s\n", ++ progname, strerror (errno)); ++ return 1; ++ } ++ } ++ ++ /* Skip disk numbers. */ ++ if (lseek (fd, 6, SEEK_CUR) == -1) ++ { ++ perror (progname); ++ return 1; ++ } ++ ++ /* Number of entries in the central directory. */ ++ if (read (fd, intbuf, 2) != 2) ++ { ++ perror (progname); ++ return 1; ++ } ++ count = UNPACK_UB2(intbuf, 0); ++ ++ if (lseek (fd, 4, SEEK_CUR) == -1) ++ { ++ perror (progname); ++ return 1; ++ } ++ ++ /* Offset where the central directory begins. */ ++ if (read (fd, intbuf, 4) != 4) ++ { ++ perror (progname); ++ return 1; ++ } ++ offset = UNPACK_UB4(intbuf, 0); ++ end_of_entries = offset; ++ ++ if (lseek (fd, offset, SEEK_SET) != offset) ++ { ++ perror (progname); ++ return 1; ++ } ++ ++ if (read (fd, header, 46) != 46) ++ { ++ fprintf (stderr, "%s: %s: unexpected end of file\n", ++ progname, jarfile); ++ return 1; ++ } ++ ++ for (i = 0; i < count; i++) ++ { ++ if (UNPACK_UB4(header, 0) != 0x02014b50) ++ { ++ fprintf (stderr, "%s: can't find central directory header\n", ++ progname); ++ return 1; ++ } ++ ze = (struct zipentry *) malloc (sizeof (struct zipentry)); ++ if (!ze) ++ { ++ perror (progname); ++ return 1; ++ } ++ memset (ze, 0, sizeof (struct zipentry)); ++ ze->flags = UNPACK_UB2(header, CEN_FLAGS); ++ ze->mod_time = UNPACK_UB2(header, CEN_MODTIME); ++ ze->mod_date = UNPACK_UB2(header, CEN_MODDATE); ++ ze->crc = UNPACK_UB4(header, CEN_CRC); ++ ze->usize = UNPACK_UB4(header, CEN_USIZE); ++ ze->csize = UNPACK_UB4(header, CEN_CSIZE); ++ ze->offset = UNPACK_UB4(header, CEN_OFFSET); ++ ze->compressed = (header[CEN_COMP] || header[CEN_COMP+1]); ++ len = UNPACK_UB2(header, CEN_FNLEN); ++ ze->filename = (char *) malloc ((len+1) * sizeof (char)); ++ if (!ze->filename) ++ { ++ perror (progname); ++ return 1; ++ } ++ if (read (fd, ze->filename, len) != len) ++ { ++ fprintf (stderr, "%s: %s: unexpected end of file\n", ++ progname, jarfile); ++ return 1; ++ } ++ len = UNPACK_UB4(header, CEN_EFLEN); ++ len += UNPACK_UB4(header, CEN_COMLEN); ++ if (lseek (fd, len, SEEK_CUR) == -1) ++ { ++ perror (progname); ++ return 1; ++ } ++ add_entry (ze); ++ if (i < count - 1) ++ { ++ if (read (fd, header, 46) != 46) ++ { ++ fprintf (stderr, "%s: %s: unexpected end of file\n", ++ progname, jarfile); ++ return 1; ++ } ++ } ++ } ++ ++ lseek (fd, 0, SEEK_SET); ++ return 0; ++} ++ ++int make_manifest(int jfd, const char *mf_name, int updating){ + time_t current_time; + int nlen; /* length of file name */ + int mod_time; /* file modification time */ +@@ -812,7 +1023,7 @@ + exit(1); + } + +- if(add_file_to_jar(jfd, mfd, "META-INF/MANIFEST.MF", &statbuf)){ ++ if(add_file_to_jar(jfd, mfd, "META-INF/MANIFEST.MF", &statbuf, updating)){ + perror("error writing to jar"); + exit(1); + } +@@ -823,9 +1034,16 @@ + } + + /* Implements -C by wrapping add_to_jar. new_dir is the directory +- to switch to. */ ++ to switch to. ++ ++ `updating', if nonzero, will indicate that we are updating an ++ existing file, and will need to take special care. If set, we will ++ also expect that the linked list of zip entries will be filled in ++ with the jar file's current contents. ++ */ + int +-add_to_jar_with_dir (int fd, const char* new_dir, const char* file) ++add_to_jar_with_dir (int fd, const char* new_dir, const char* file, ++ const int updating) + { + int retval; + char old_dir[MAXPATHLEN]; +@@ -837,7 +1055,7 @@ + perror(new_dir); + return 1; + } +- retval=add_to_jar(fd, file); ++ retval=add_to_jar(fd, file, updating); + if (chdir(old_dir) == -1) { + perror(old_dir); + return 1; +@@ -846,11 +1064,13 @@ + } + + int +-add_to_jar (int fd, const char *file) { ++add_to_jar (int fd, const char *file, const int updating) ++{ + struct stat statbuf; + DIR *dir; + struct dirent *de; + zipentry *ze; ++ zipentry *existing = NULL; + int stat_return; + + /* This is a quick compatibility fix -- Simon Weijgers +@@ -917,9 +1137,6 @@ + PACK_UB2(file_header, LOC_FNLEN, nlen); + PACK_UB4(file_header, LOC_MODTIME, mod_time); + +- if(verbose) +- printf("adding: %s (in=%d) (out=%d) (stored 0%%)\n", fullname, 0, 0); +- + ze = (zipentry*)malloc(sizeof(zipentry)); + if(ze == NULL){ + perror("malloc"); +@@ -936,10 +1153,36 @@ + ze->mod_date = (ub2)((mod_time & 0xffff0000) >> 16); + ze->compressed = FALSE; + +- add_entry(ze); ++ if (updating) ++ { ++ if ((existing = find_entry (ze->filename)) != NULL) ++ { ++ if (existing->usize != 0) ++ { ++ /* XXX overwriting non-directory with directory? */ ++ fprintf (stderr, "%s: %s: can't overwrite non-directory with directory\n", ++ progname, fullname); ++ return 1; ++ } ++ } ++ if (lseek (fd, end_of_entries, SEEK_SET) == -1) ++ { ++ fprintf (stderr, "%s %d\n", __FILE__, __LINE__); ++ perror ("lseek"); ++ return 1; ++ } ++ } ++ ++ if (!existing) ++ { ++ add_entry (ze); ++ write (fd, file_header, 30); ++ write (fd, fullname, nlen); ++ end_of_entries = lseek (fd, 0, SEEK_CUR); + +- write(fd, file_header, 30); +- write(fd, fullname, nlen); ++ if (verbose) ++ printf ("adding: %s (in=%d) (out=%d) (stored 0%%)\n", fullname, 0, 0); ++ } + + while(!use_explicit_list_only && (de = readdir(dir)) != NULL){ + if(de->d_name[0] == '.') +@@ -953,7 +1196,7 @@ + + strcpy(t_ptr, de->d_name); + +- if (add_to_jar(fd, fullname)) { ++ if (add_to_jar(fd, fullname, updating)) { + fprintf(stderr, "Error adding file to jar!\n"); + return 1; + } +@@ -971,7 +1214,7 @@ + return 1; + } + +- if(add_file_to_jar(fd, add_fd, file, &statbuf)){ ++ if(add_file_to_jar(fd, add_fd, file, &statbuf, updating)){ + fprintf(stderr, "Error adding file to jar!\n"); + return 1; + } +@@ -982,8 +1225,9 @@ + return 0; + } + +-int add_file_to_jar(int jfd, int ffd, const char *fname, struct stat *statbuf){ +- ++int add_file_to_jar(int jfd, int ffd, const char *fname, struct stat *statbuf, ++ const int updating) ++{ + unsigned short file_name_length; + unsigned long mod_time; + ub1 rd_buff[RDSZ]; +@@ -991,6 +1235,18 @@ + off_t offset = 0; + int rdamt; + struct zipentry *ze; ++ struct zipentry *existing = NULL; ++ ++ if (updating) ++ { ++ existing = find_entry (fname); ++ if (existing && looks_like_dir (fname)) ++ { ++ fprintf (stderr, "%s: %s is a directory in the archive\n", ++ progname, fname); ++ return 1; ++ } ++ } + + mod_time = unix2dostime(&(statbuf->st_mtime)); + file_name_length = strlen(fname); +@@ -1045,13 +1301,29 @@ + + ze->csize = statbuf->st_size; + ze->usize = ze->csize; +- ze->offset = lseek(jfd, 0, SEEK_CUR); ++ ++ if (existing) ++ ze->offset = existing->offset; ++ else if (updating) ++ ze->offset = end_of_entries; ++ else ++ ze->offset = lseek(jfd, 0, SEEK_CUR); ++ + if(do_compress) + ze->compressed = TRUE; + else + ze->compressed = FALSE; +- +- add_entry(ze); ++ ++ if (!existing) ++ add_entry(ze); ++ if (updating && lseek (jfd, ze->offset, SEEK_SET) < 0) ++ { ++ perror ("lseek"); ++ return 1; ++ } ++ ++ /* We can safely write the header here, since it will be the same size ++ as before */ + + /* Write the local header */ + write(jfd, file_header, 30); +@@ -1061,14 +1333,31 @@ + + + if(verbose){ +- printf("adding: %s ", fname); ++ if (existing) ++ printf ("updating: %s ", fname); ++ else ++ printf("adding: %s ", fname); + fflush(stdout); + } + + if(do_compress){ + /* compress the file */ +- compress_file(ffd, jfd, ze); ++ compress_file(ffd, jfd, ze, existing); + } else { ++ /* If we are not writing the last entry, make space for it. */ ++ if (existing && existing->next_entry) ++ { ++ if (ze->usize > existing->usize) ++ { ++ if (shift_down (jfd, existing->next_entry->offset, ++ ze->usize - existing->usize, existing->next_entry)) ++ { ++ fprintf (stderr, "%s: %s\n", progname, strerror (errno)); ++ return 1; ++ } ++ } ++ } ++ + /* Write the contents of the file (uncompressed) to the zip file */ + /* calculate the CRC as we go along */ + ze->crc = crc32(0L, Z_NULL, 0); +@@ -1112,12 +1401,42 @@ + /* Sun's jar tool will only allow a data descriptor if the entry is + compressed, but we'll save 16 bytes/entry if we only use it when + we can't seek back on the file */ ++ /* Technically, you CAN'T have a data descriptor unless the data ++ part has an obvious end, which DEFLATED does. Otherwise, there ++ would not be any way to determine where the data descriptor is. ++ Store an uncompressed file that ends with 0x504b0708, and see. ++ -- csm */ + + if(write(jfd, data_descriptor, 16) != 16){ + perror("write"); + return 0; + } + } ++ ++ if (existing) ++ { ++ int dd = (existing->flags & (1 << 3)) ? 12 : 0; ++ if (existing->next_entry && ze->csize < existing->csize + dd) ++ { ++ if (shift_up (jfd, existing->next_entry->offset, ++ existing->csize + dd - ze->csize, ++ existing->next_entry)) ++ { ++ perror (progname); ++ return 1; ++ } ++ } ++ /* Replace the existing entry data with this entry's. */ ++ existing->csize = ze->csize; ++ existing->usize = ze->usize; ++ existing->crc = ze->crc; ++ existing->mod_time = ze->mod_time; ++ existing->mod_date = ze->mod_date; ++ free (ze->filename); ++ free (ze); ++ } ++ else if (updating) ++ end_of_entries = lseek (jfd, 0, SEEK_CUR); + + if(verbose) + printf("(in=%d) (out=%d) (%s %d%%)\n", +@@ -1890,7 +2209,7 @@ + { + printf("jar (%s) %s\n\n", PACKAGE, VERSION); + printf("Copyright 1999, 2000, 2001 Bryan Burns\n"); +- printf("Copyright 2002 Free Software Foundation\n"); ++ printf("Copyright 2002, 2004 Free Software Foundation\n"); + printf("\ + This is free software; see the source for copying conditions. There is NO\n\ + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"); +diff -urN fastjar.old/jartool.h fastjar/jartool.h +--- fastjar.old/jartool.h 2000-12-09 04:08:23.000000000 +0100 ++++ fastjar/jartool.h 2004-05-30 17:30:34.000000000 +0200 +@@ -52,6 +52,10 @@ + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + ++#ifndef __FASTJAR_JARTOOL_H__ ++#define __FASTJAR_JARTOOL_H__ ++ ++#include + #include "config.h" + + #define ACTION_NONE 0 +@@ -104,9 +108,12 @@ + ub4 usize; + ub4 offset; + ub1 compressed; ++ ub2 flags; + char *filename; + + struct zipentry *next_entry; + }; + + typedef struct zipentry zipentry; ++ ++#endif /* __FASTJAR_JARTOOL_H__ */ +diff -urN fastjar.old/shift.c fastjar/shift.c +--- fastjar.old/shift.c 1970-01-01 01:00:00.000000000 +0100 ++++ fastjar/shift.c 2004-05-30 17:30:34.000000000 +0200 +@@ -0,0 +1,166 @@ ++/* shift.c -- utilities to move regions of data in a file. ++ Copyright (C) 2004 Free Software Foundation, Inc. ++ ++This program is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2 of the License, or (at ++your option) any later version. ++ ++This program is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++USA. */ ++ ++ ++#include ++#include ++#include ++#include "jartool.h" ++#include "shift.h" ++ ++#define BUFFER_SIZE 1024 ++ ++#define MIN(a, b) ((a) < (b) ? (a) : (b)) ++ ++/* ++ * Shift the contents of a file up by `amount' bytes, starting at `begin'. ++ * The file is not truncated, data from `amount' to `begin - amount' is ++ * overwritten. The current file pointer of `fd' is preserved. Note that ++ * this might be past the new "end" of the file. ++ * ++ * If this function is passed a `struct zipentry', then all `offset' ++ * fields from that entry down the list that are greater than or equal ++ * to `begin' will be decreased by `amount'. ++ * ++ * fd - The file descriptor. ++ * begin - The offset of the first byte that should be shifted. ++ * amount - The number of bytes to shift by. ++ * ze - A pointer into a list of zip entries that should be updated ++ * to reflect the modified offset. ++ */ ++int ++shift_up (int fd, off_t begin, off_t amount, struct zipentry *ze) ++{ ++ extern off_t end_of_entries; ++ int len, moved = 0; ++ ub1 buffer[BUFFER_SIZE]; ++ off_t where, end, save; ++ ++ if (amount <= 0) ++ return 0; ++ ++ if ((save = lseek (fd, 0, SEEK_CUR)) == -1) ++ return 1; ++ if ((end = lseek (fd, 0, SEEK_END)) == -1) ++ return 1; ++ if (end < begin) ++ return 0; ++ ++ where = begin; ++ ++ do ++ { ++ if (lseek (fd, where, SEEK_SET) < 0) ++ return 1; ++ if ((len = read (fd, buffer, BUFFER_SIZE)) < 0) ++ return 1; ++ if (len == 0) ++ break; ++ if (lseek (fd, where - amount, SEEK_SET) < 0) ++ return 1; ++ if (write (fd, buffer, len) < 0) ++ return 1; ++ where += len; ++ } ++ while (where < end); ++ ++ for (; ze; ze = ze->next_entry) ++ { ++ if (ze->offset >= begin) ++ { ++ ze->offset -= amount; ++ moved = 1; ++ } ++ } ++ if (moved) ++ end_of_entries -= amount; ++ ++ if (lseek (fd, save, SEEK_SET) == -1) ++ return 1; ++ return 0; ++} ++ ++/* ++ * Shift the contents of this file down by `amount' bytes, extending the ++ * end of file, starting at `begin'. This function will preserve the ++ * current file pointer of `fd'. Naturally, this function will fail if ++ * `fd' is not seekable. ++ * ++ * If this function is passed a `struct zipentry', then all `offset' ++ * fields from that entry down the list that are greater than or equal ++ * to `begin' will be increased by `amount'. ++ * ++ * fd - The file descriptor. ++ * begin - The offset of the first byte that should be shifted. ++ * amount - The number of bytes to shift by. ++ * ze - A pointer into a list of zip entries that should be updated ++ * to reflect the modified offset. ++ */ ++int ++shift_down (int fd, off_t begin, off_t amount, struct zipentry *ze) ++{ ++ extern off_t end_of_entries; ++ int off, len, moved = 0; ++ ub1 buffer[BUFFER_SIZE]; ++ off_t where, save; ++ ++ if (amount <= 0) ++ return 0; ++ ++ if ((save = lseek (fd, 0, SEEK_CUR)) == -1) ++ return 1; ++ if ((where = lseek (fd, 0, SEEK_END)) == -1) ++ return 1; ++ if (where < begin) ++ return 0; ++ off = (where - begin) % BUFFER_SIZE; ++ if (off == 0) ++ where -= BUFFER_SIZE; ++ else ++ where -= off; ++ ++ do ++ { ++ if (lseek (fd, where, SEEK_SET) < 0) ++ return 1; ++ if ((len = read (fd, buffer, BUFFER_SIZE)) < 0) ++ return 1; ++ if (lseek (fd, where + amount, SEEK_SET) < 0) ++ return 1; ++ if (write (fd, buffer, len) < 0) ++ return 1; ++ where -= BUFFER_SIZE; ++ } ++ while (where >= begin); ++ ++ for (; ze; ze = ze->next_entry) ++ { ++ if (ze->offset >= begin) ++ { ++ ze->offset += amount; ++ moved = 1; ++ } ++ } ++ if (moved) ++ end_of_entries += amount; ++ ++ if (lseek (fd, save, SEEK_SET) == -1) ++ return 1; ++ ++ return 0; ++} +diff -urN fastjar.old/shift.h fastjar/shift.h +--- fastjar.old/shift.h 1970-01-01 01:00:00.000000000 +0100 ++++ fastjar/shift.h 2004-05-30 17:30:34.000000000 +0200 +@@ -0,0 +1,29 @@ ++/* shift.h -- utilities to move regions of data in a file. ++ Copyright (C) 2004 Free Software Foundation, Inc. ++ ++This program is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2 of the License, or (at ++your option) any later version. ++ ++This program is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with this program; if not, write to the Free Software ++Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ++USA. */ ++ ++ ++#ifndef __FASTJAR_SHIFT_H__ ++#define __FASTJAR_SHIFT_H__ ++ ++#include ++#include "jartool.h" ++ ++int shift_down (int, off_t, off_t, struct zipentry *); ++int shift_up (int, off_t, off_t, struct zipentry *); ++ ++#endif /* __FASTJAR_SHIFT_H__ */ +diff -urN fastjar.old/zipfile.h fastjar/zipfile.h +--- fastjar.old/zipfile.h 2000-12-09 04:08:23.000000000 +0100 ++++ fastjar/zipfile.h 2004-05-30 17:30:34.000000000 +0200 +@@ -47,6 +47,7 @@ + #define LOC_FNLEN 26 /* filename length */ + #define LOC_EFLEN 28 /* extra-field length */ + ++#define CEN_FLAGS 8 + #define CEN_COMP 10 /* compression method */ + #define CEN_MODTIME 12 + #define CEN_MODDATE 14 --- gcc-3.4-3.4.6.orig/debian/patches/libssp.dpatch +++ gcc-3.4-3.4.6/debian/patches/libssp.dpatch @@ -0,0 +1,92 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Hardened Debian SSP/ProPolice library (libssp). lorenzo@gnu.org + +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-11-11 01:11:56.000000000 +0100 ++++ gcc/Makefile.in 2004-11-11 01:10:15.000000000 +0100 +@@ -486,11 +486,11 @@ + INSTALL_LIBGCC = install-libgcc + + # Options to use when compiling libgcc2.a. + # + LIBGCC2_DEBUG_CFLAGS = -g +-LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@ ++LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@ -D_LIBSSP_PROVIDES_SSP_ + + # Additional options to use when compiling libgcc2.a. + # Some targets override this to -isystem include + LIBGCC2_INCLUDES = + +--- gcc/gcc.c 2004-11-14 21:17:58.585438344 -0500 ++++ gcc/gcc.c 2004-11-21 13:28:43.699379520 -0500 +@@ -711,7 +711,17 @@ + static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC; + static const char *asm_spec = ASM_SPEC; + static const char *asm_final_spec = ASM_FINAL_SPEC; ++ ++#if defined(_LIBSSP_PROVIDES_SSP_) ++#if defined(EFAULT_PIE_SSP) || defined(EFAULT_SSP) ++static const char *link_spec = LINK_SPEC " %{!fno-stack-protector|!fno-stack-protector-all:-lssp %{static: -lc}}"; ++#else ++static const char *link_spec = LINK_SPEC " %{fstack-protector|fstack-protector-all:-lssp %{static: -lc}}"; ++#endif // defined(EFAULT_PIE_SSP) || defined(EFAULT_SSP) ++#else + static const char *link_spec = LINK_SPEC; ++#endif // defined(_LIBSSP_PROVIDES_SSP_) ++ + static const char *lib_spec = LIB_SPEC; + static const char *libgcc_spec = LIBGCC_SPEC; + static const char *endfile_spec = ENDFILE_SPEC; +diff -Nru gcc-3.4.3-ssp/gcc/libgcc-std.ver gcc-3.4.3-ssp-libssp/gcc/libgcc-std.ver +--- gcc/libgcc-std.ver 2004-11-14 21:18:00.004222656 -0500 ++++ gcc/libgcc-std.ver 2004-11-15 19:22:11.802713352 -0500 +@@ -175,7 +175,7 @@ + _Unwind_SjLj_ForcedUnwind + _Unwind_SjLj_Resume + +-%if !defined(_LIBC_PROVIDES_SSP_) ++%if !defined(_LIBC_PROVIDES_SSP_) && !defined(_LIBSSP_PROVIDES_SSP_) + # stack smash handler symbols + __guard + __stack_smash_handler +diff -Nru gcc-3.4.3-ssp/gcc/libgcc2.c gcc-3.4.3-ssp-libssp/gcc/libgcc2.c +--- gcc/libgcc2.c 2004-11-14 21:18:00.004222656 -0500 ++++ gcc/libgcc2.c 2004-11-15 19:24:58.428382400 -0500 +@@ -1680,7 +1680,7 @@ + + + #ifdef L_stack_smash_handler +-#ifndef _LIBC_PROVIDES_SSP_ ++#if !defined(_LIBC_PROVIDES_SSP_) && !defined(_LIBSSP_PROVIDES_SSP_) + #include + #include + #include +@@ -1797,5 +1797,5 @@ + #endif + _exit (127); + } +-#endif /* _LIBC_PROVIDES_SSP_ */ ++#endif /* _LIBC_PROVIDES_SSP_ && _LIBSSP_PROVIDES_SSP_ */ + #endif /* L_stack_smash_handler */ --- gcc-3.4-3.4.6.orig/debian/patches/m32r-limits.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-limits.dpatch @@ -0,0 +1,32 @@ +#! /bin/sh -e +# +# +# DP: Author: NIIBE Yutaka +# DP: Status: experimental, only tested for Debian m32r + +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 -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 + +--- gcc-3.4.3/gcc/config/m32r/t-linux~ 2004-11-24 22:17:07.000000000 +0900 ++++ gcc-3.4.3/gcc/config/m32r/t-linux 2004-11-24 22:18:51.000000000 +0900 +@@ -48,3 +48,6 @@ SHLIB_MAPFILES += $(srcdir)/config/m32r/ + 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 gthr-gnat.c ++ ++# We're GNU system, where GNU C library is native C library. ++CROSS_SYSTEM_HEADER_DIR = $(gcc_tooldir)/include --- gcc-3.4-3.4.6.orig/debian/patches/amd64-specs.dpatch +++ gcc-3.4-3.4.6/debian/patches/amd64-specs.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: On x86-64 use 64bits mode assembly except with -m32. + +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/x86-64.h.old 2002-11-16 14:33:38.000000000 +0100 ++++ src/gcc/config/i386/x86-64.h 2003-11-26 22:54:35.000000000 +0100 +@@ -49,7 +49,7 @@ + + #undef ASM_SPEC + #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \ +- %{Wa,*:%*} %{m32:--32}" ++ %{Wa,*:%*} %{m32:--32} %{!m32:--64}" + + /* A C statement (sans semicolon) to output to the stdio stream + FILE the assembler definition of uninitialized global DECL named --- gcc-3.4-3.4.6.orig/debian/patches/hppa-toplevel.dpatch +++ gcc-3.4-3.4.6/debian/patches/hppa-toplevel.dpatch @@ -0,0 +1,51 @@ +#! /bin/sh -e + +# DP: For hppa-linux enable libgcj and dependent libs in the toplevel directory + +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~ 2004-02-22 16:12:01.000000000 +0100 ++++ configure.in 2004-02-22 16:22:19.000000000 +0100 +@@ -482,8 +482,9 @@ + # headers, crt*.o, etc., all of which are needed by these. + noconfigdirs="$noconfigdirs target-zlib" + ;; ++ parisc*-*-linux* | hppa*-*-linux*) ++ ;; + hppa*-*-*elf* | \ +- parisc*-*-linux* | hppa*-*-linux* | \ + hppa*-*-lites* | \ + hppa*-*-openbsd* | \ + hppa*64*-*-*) +--- configure~ 2004-02-21 20:43:26.000000000 +0100 ++++ configure 2004-02-22 16:24:31.000000000 +0100 +@@ -1243,8 +1243,9 @@ + # headers, crt*.o, etc., all of which are needed by these. + noconfigdirs="$noconfigdirs target-zlib" + ;; ++ parisc*-*-linux* | hppa*-*-linux*) ++ ;; + hppa*-*-*elf* | \ +- parisc*-*-linux* | hppa*-*-linux* | \ + hppa*-*-lites* | \ + hppa*-*-openbsd* | \ + hppa*64*-*-*) --- gcc-3.4-3.4.6.orig/debian/patches/amd64-biarch.dpatch +++ gcc-3.4-3.4.6/debian/patches/amd64-biarch.dpatch @@ -0,0 +1,86 @@ +#! /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 + ;; + -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/t-linux64~ 2002-11-28 14:47:02.000000000 +0000 ++++ gcc/config/i386/t-linux64 2004-07-24 07:40:21.716247432 +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 +--- config-ml.in~ 2003-07-04 19:53:34.000000000 +0000 ++++ config-ml.in 2004-07-24 14:13:02.871407408 +0000 +@@ -500,6 +500,46 @@ + ;; + 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 ++ 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}" ;; ++ *"libf2c" ) 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 ++ ;; + esac + + # Remove extraneous blanks from multidirs. --- gcc-3.4-3.4.6.orig/debian/patches/libjava-mips.dpatch +++ gcc-3.4-3.4.6/debian/patches/libjava-mips.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: libjava-mips patch from Thiemo Seufer + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- libjava/include/mips-signal.h.old 2003-10-22 18:35:16.000000000 +0200 ++++ libjava/include/mips-signal.h 2003-12-13 18:29:53.000000000 +0100 +@@ -80,7 +80,7 @@ + kact.k_sa_handler = catch_segv; \ + kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \ + sigemptyset (&kact.k_sa_mask); \ +- syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \ ++ syscall (__NR_sigaction, SIGSEGV, &kact, NULL); \ + } \ + while (0) + --- gcc-3.4-3.4.6.orig/debian/patches/m32r-stack.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-stack.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e +# +# +# DP: Author: NIIBE Yutaka +# DP: Status: Not yet in CVS +# DP: Stack protection support + +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 -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 + +2004-11-12 NIIBE Yutaka + + * config/m32r/linux.h (TARGET_ASM_FILE_END): Defined for stack + protection. + +--- gcc-3.4.2/gcc/config/m32r/linux.h.orig 2003-12-31 19:33:02.000000000 +0900 ++++ gcc-3.4.2/gcc/config/m32r/linux.h 2004-11-12 11:32:02.000000000 +0900 +@@ -102,3 +102,4 @@ + + #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() + ++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack --- gcc-3.4-3.4.6.orig/debian/patches/hppa-libjava.dpatch +++ gcc-3.4-3.4.6/debian/patches/hppa-libjava.dpatch @@ -0,0 +1,140 @@ +#! /bin/sh -e + +# All lines beginning with `# DPATCH:' are a description of the patch. +# DP: Enable libjava support for 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 -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 + +2004-02-10 Randolph Chung + + * configure.in: Build java for hppa target. + * libjava/configure.host (hppa-*): Add target. + * libjava/sysdeps/pa/lock.h: New file. + +diff -uNr src.orig/configure.in src/configure.in +--- src.orig/configure.in 2004-02-11 21:34:27.418499952 -0800 ++++ src/configure.in 2004-02-11 21:37:17.619625448 -0800 +@@ -487,7 +487,6 @@ + hppa*-*-lites* | \ + hppa*-*-openbsd* | \ + hppa*64*-*-*) +- noconfigdirs="$noconfigdirs ${libgcj}" + # Do configure ld/binutils/gas for this case. + ;; + hppa*-*-*) +diff -uNr src.orig/libjava/configure.host src/libjava/configure.host +--- src.orig/libjava/configure.host 2004-02-11 21:34:26.638618512 -0800 ++++ src/libjava/configure.host 2004-02-11 21:38:59.687108832 -0800 +@@ -115,6 +115,11 @@ + enable_hash_synchronization_default=yes + IEEESPEC=-mieee + ;; ++ hppa-*) ++ sysdeps_dir=pa ++ libgcj_interpreter=yes ++ enable_hash_synchronization_default=yes ++ ;; + powerpc64*-*) + sysdeps_dir=powerpc + libgcj_interpreter=yes +diff -uNr src.orig/libjava/sysdep/pa/locks.h src/libjava/sysdep/pa/locks.h +--- src.orig/libjava/sysdep/pa/locks.h 1969-12-31 16:00:00.000000000 -0800 ++++ src/libjava/sysdep/pa/locks.h 2004-02-11 21:40:03.542401352 -0800 +@@ -0,0 +1,78 @@ ++// locks.h - Thread synchronization primitives. PARISC implementation. ++ ++/* Copyright (C) 2002 Free Software Foundation ++ ++ This file is part of libgcj. ++ ++This software is copyrighted work licensed under the terms of the ++Libgcj License. Please consult the file "LIBGCJ_LICENSE" for ++details. */ ++ ++#ifndef __SYSDEP_LOCKS_H__ ++#define __SYSDEP_LOCKS_H__ ++ ++typedef size_t obj_addr_t; /* Integer type big enough for object */ ++ /* address. */ ++ ++// Atomically replace *addr by new_val if it was initially equal to old. ++// Return true if the comparison succeeded. ++// Assumed to have acquire semantics, i.e. later memory operations ++// cannot execute before the compare_and_swap finishes. ++inline static bool ++compare_and_swap(volatile obj_addr_t *addr, ++ obj_addr_t old, ++ obj_addr_t new_val) ++{ ++ /* FIXME: not atomic */ ++ obj_addr_t prev; ++ ++ if ((prev = *addr) == old) ++ { ++ *addr = new_val; ++ return true; ++ } ++ else ++ { ++ return false; ++ } ++} ++ ++// Set *addr to new_val with release semantics, i.e. making sure ++// that prior loads and stores complete before this ++// assignment. ++inline static void ++release_set(volatile obj_addr_t *addr, obj_addr_t new_val) ++{ ++ __asm__ __volatile__(" " : : : "memory"); ++ *(addr) = new_val; ++} ++ ++// Compare_and_swap with release semantics instead of acquire semantics. ++// On many architecture, the operation makes both guarantees, so the ++// implementation can be the same. ++inline static bool ++compare_and_swap_release(volatile obj_addr_t *addr, ++ obj_addr_t old, ++ obj_addr_t new_val) ++{ ++ return compare_and_swap(addr, old, new_val); ++} ++ ++// Ensure that subsequent instructions do not execute on stale ++// data that was loaded from memory before the barrier. ++inline static void ++read_barrier() ++{ ++ __asm__ __volatile__(" " : : : "memory"); ++} ++ ++// Ensure that prior stores to memory are completed with respect to other ++// processors. ++inline static void ++write_barrier() ++{ ++ __asm__ __volatile__(" " : : : "memory"); ++} ++ ++#endif ++ --- gcc-3.4-3.4.6.orig/debian/patches/libjava-no-rpath.dpatch +++ gcc-3.4-3.4.6/debian/patches/libjava-no-rpath.dpatch @@ -0,0 +1,102 @@ +#! /bin/sh -e + +# DP: work around libtool adding ld run path to gcj tools + +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/Makefile.am~ 2004-01-26 07:36:06.000000000 +0100 ++++ libjava/Makefile.am 2004-02-21 22:39:34.000000000 +0100 +@@ -719,7 +719,7 @@ + ## need this because we are explicitly using libtool to link using the + ## `.la' file. + jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + jv_convert_LINK = $(GCJLINK) + ## We don't explicitly link in the libraries we need; libgcj.la brings + ## in all dependencies. We need the -L so that gcj can find libgcj +@@ -738,7 +738,8 @@ + ## 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 $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++gij_LDFLAGS = $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) ++ + gij_LINK = $(GCJLINK) + ## See jv_convert_LDADD. + gij_LDADD = -L$(here)/.libs libgcj.la +@@ -750,7 +751,7 @@ + ## This is a dummy definition. + EXTRA_rmic_SOURCES = $(rmi_java_source_files) + rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + rmic_LINK = $(GCJLINK) + ## See jv_convert_LDADD. + rmic_LDADD = -L$(here)/.libs libgcj.la +@@ -762,7 +763,7 @@ + ## This is a dummy definition. + EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) + rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + rmiregistry_LINK = $(GCJLINK) + ## See jv_convert_LDADD. + rmiregistry_LDADD = -L$(here)/.libs libgcj.la +--- libjava/Makefile.in~ 2004-01-26 07:36:06.000000000 +0100 ++++ libjava/Makefile.in 2004-02-21 22:48:12.000000000 +0100 +@@ -499,7 +499,7 @@ + jv_convert_SOURCES = + EXTRA_jv_convert_SOURCES = $(convert_source_files) + jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + + jv_convert_LINK = $(GCJLINK) + jv_convert_LDADD = -L$(here)/.libs libgcj.la +@@ -508,7 +508,7 @@ + + + gij_SOURCES = gij.cc +-gij_LDFLAGS = -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++gij_LDFLAGS = $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + gij_LINK = $(GCJLINK) + gij_LDADD = -L$(here)/.libs libgcj.la + gij_DEPENDENCIES = libgcj.la libgcj.spec +@@ -516,7 +516,7 @@ + rmic_SOURCES = + EXTRA_rmic_SOURCES = $(rmi_java_source_files) + rmic_LDFLAGS = --main=gnu.java.rmi.rmic.RMIC \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + + rmic_LINK = $(GCJLINK) + rmic_LDADD = -L$(here)/.libs libgcj.la +@@ -525,7 +525,7 @@ + rmiregistry_SOURCES = + EXTRA_rmiregistry_SOURCES = $(rmi_java_source_files) + rmiregistry_LDFLAGS = --main=gnu.java.rmi.registry.RegistryImpl \ +- -rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) ++ $(shell test $(toolexeclibdir) = /usr/lib || echo -rpath $(toolexeclibdir)) -shared-libgcc $(THREADLDFLAGS) + + rmiregistry_LINK = $(GCJLINK) + rmiregistry_LDADD = -L$(here)/.libs libgcj.la --- gcc-3.4-3.4.6.orig/debian/patches/gccbug-manpage.dpatch +++ gcc-3.4-3.4.6/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 + --- gcc-3.4-3.4.6.orig/debian/patches/gccbug.dpatch +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/patches/libltdl.dpatch +++ gcc-3.4-3.4.6/debian/patches/libltdl.dpatch @@ -0,0 +1,182 @@ +#! /bin/sh -e + +# DP: * libltdl.dpatch: Search the versioned extension, when loading a shared +# DP: library (i.e. gij looks for .so.5 for loading additional libraries +# DP: like the GTK based AWT peers. + +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 + +Index: libltdl/acinclude.m4 +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/libltdl/acinclude.m4,v +retrieving revision 1.4.8.1 +diff -u -r1.4.8.1 acinclude.m4 +--- libjava/libltdl/acinclude.m4 24 Jun 2004 05:31:44 -0000 1.4.8.1 ++++ libjava/libltdl/acinclude.m4 7 Sep 2004 18:14:54 -0000 +@@ -6091,6 +6091,9 @@ + if test -n "$libltdl_cv_shlibext"; then + AC_DEFINE_UNQUOTED(LTDL_SHLIB_EXT, "$libltdl_cv_shlibext", + [Define to the extension used for shared libraries, say, ".so".]) ++ libltdl_cv_shlibversionext=.so.`grep -v '^\#' ${srcdir}/../libtool-version | awk -F: '{ print $'1' }'` ++ AC_DEFINE_UNQUOTED(LTDL_SHLIB_VERSION_EXT, "$libltdl_cv_shlibversionext", ++ [Define to the versioned extension used for shared libraries, say, ".so.5".]) + fi + ])# AC_LTDL_SHLIBEXT + +Index: libltdl/config-h.in +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/libltdl/config-h.in,v +retrieving revision 1.3.16.1 +diff -u -r1.3.16.1 config-h.in +--- libjava/libltdl/config-h.in 24 Jun 2004 05:31:45 -0000 1.3.16.1 ++++ libjava/libltdl/config-h.in 7 Sep 2004 18:14:54 -0000 +@@ -158,6 +158,10 @@ + /* Define to the extension used for shared libraries, say, ".so". */ + #undef LTDL_SHLIB_EXT + ++/* Define to the versioned extension used for shared libraries, say, ".so.5". ++ */ ++#undef LTDL_SHLIB_VERSION_EXT ++ + /* Define to the system default library search path. */ + #undef LTDL_SYSSEARCHPATH + +Index: libltdl/configure +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/libltdl/configure,v +retrieving revision 1.10.8.1 +diff -u -r1.10.8.1 configure +--- libjava/libltdl/configure 24 Jun 2004 05:31:46 -0000 1.10.8.1 ++++ libjava/libltdl/configure 7 Sep 2004 18:15:01 -0000 +@@ -19623,6 +19623,12 @@ + #define LTDL_SHLIB_EXT "$libltdl_cv_shlibext" + _ACEOF + ++ libltdl_cv_shlibversionext=.so.`grep -v '^\#' ${srcdir}/../libtool-version | awk -F: '{ print $'1' }'` ++ ++cat >>confdefs.h <<_ACEOF ++#define LTDL_SHLIB_VERSION_EXT "$libltdl_cv_shlibversionext" ++_ACEOF ++ + fi + + +Index: libltdl/ltdl.c +=================================================================== +RCS file: /cvs/gcc/gcc/libjava/libltdl/ltdl.c,v +retrieving revision 1.7 +diff -u -r1.7 ltdl.c +--- libjava/libltdl/ltdl.c 25 Dec 2003 19:33:06 -0000 1.7 ++++ libjava/libltdl/ltdl.c 7 Sep 2004 18:15:02 -0000 +@@ -859,6 +859,7 @@ + static const char objdir[] = LTDL_OBJDIR; + static const char archive_ext[] = LTDL_ARCHIVE_EXT; + #ifdef LTDL_SHLIB_EXT ++static const char shlib_version_ext[] = LTDL_SHLIB_VERSION_EXT; + static const char shlib_ext[] = LTDL_SHLIB_EXT; + #endif + #ifdef LTDL_SYSSEARCHPATH +@@ -2388,17 +2389,14 @@ + cur = *handle; + if (filename) + { +- /* Comment out the check of file permissions using access. +- This call seems to always return -1 with error EACCES. +- */ + /* We need to catch missing file errors early so that +- file_not_found() can detect what happened. ++ file_not_found() can detect what happened. */ + if (access (filename, R_OK) != 0) + { + LT_DLMUTEX_SETERROR (LT_DLSTRERROR (FILE_NOT_FOUND)); + ++errors; + goto done; +- } */ ++ } + + cur->info.filename = lt_estrdup (filename); + if (!cur->info.filename) +@@ -3425,10 +3423,11 @@ + return 0; + } + +-/* If FILENAME has an ARCHIVE_EXT or SHLIB_EXT extension, try to +- open the FILENAME as passed. Otherwise try appending ARCHIVE_EXT, +- and if a file is still not found try again with SHLIB_EXT appended +- instead. */ ++/* If FILENAME has an ARCHIVE_EXT, SHLIB_VERSION_EXT or SHLIB_EXT ++ extension, try to open the FILENAME as passed. Otherwise try ++ appending ARCHIVE_EXT, and if a file is still not found try again ++ with SHLIB_VERSION_EXT appended. If the file is still not found, ++ try again with SHLIB_EXT appended. */ + lt_dlhandle + lt_dlopenext (filename) + const char *filename; +@@ -3453,6 +3452,7 @@ + to try appending additional extensions. */ + if (ext && ((strcmp (ext, archive_ext) == 0) + #ifdef LTDL_SHLIB_EXT ++ || (strcmp (ext, shlib_version_ext) == 0) + || (strcmp (ext, shlib_ext) == 0) + #endif + )) +@@ -3460,6 +3460,29 @@ + return lt_dlopen (filename); + } + ++#ifdef LTDL_SHLIB_EXT ++ /* First try appending SHLIB_VERSION_EXT. */ ++ tmp = LT_EMALLOC (char, len + LT_STRLEN (shlib_version_ext) + 1); ++ if (!tmp) ++ return 0; ++ ++ strcpy (tmp, filename); ++ strcat(tmp, shlib_version_ext); ++ errors = try_dlopen (&handle, tmp); ++ ++ /* As before, if the file was found but loading failed, return now ++ with the current error message. */ ++ if (handle || ((errors > 0) && !file_not_found ())) ++ { ++ LT_DLFREE (tmp); ++ return handle; ++ } ++ else ++ { ++ LT_DLFREE (tmp); ++ } ++#endif ++ + /* First try appending ARCHIVE_EXT. */ + tmp = LT_EMALLOC (char, len + LT_STRLEN (archive_ext) + 1); + if (!tmp) +@@ -3482,7 +3505,7 @@ + + #ifdef LTDL_SHLIB_EXT + /* Try appending SHLIB_EXT. */ +- if (LT_STRLEN (shlib_ext) > LT_STRLEN (archive_ext)) ++ if (LT_STRLEN (shlib_ext) > LT_STRLEN (shlib_version_ext)) + { + LT_DLFREE (tmp); + tmp = LT_EMALLOC (char, len + LT_STRLEN (shlib_ext) + 1); --- gcc-3.4-3.4.6.orig/debian/patches/arm-gotoff.dpatch +++ gcc-3.4-3.4.6/debian/patches/arm-gotoff.dpatch @@ -0,0 +1,98 @@ +#! /bin/sh -e + +src=gcc +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + src=$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 -p0 --fuzz 10 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +# DP: use GOTOFF not GOT relocs for .LCn and other local symbols; +# DP: don't use gotoff for non-static functions, even if defined locally + +=================================================================== +RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.c,v +retrieving revision 1.243.2.5 +diff -u -r1.243.2.5 arm.c +--- gcc/config/arm/arm.c 14 Jun 2003 14:20:53 -0000 1.243.2.5 ++++ gcc/config/arm/arm.c 20 Sep 2003 14:18:02 -0000 +@@ -2364,6 +2364,40 @@ + return 1; + } + ++/* Return true if OP is a symbolic operand that resolves locally. */ ++ ++static int ++local_symbolic_operand (op, mode) ++ rtx op; ++ enum machine_mode mode ATTRIBUTE_UNUSED; ++{ ++ if (GET_CODE (op) == CONST ++ && GET_CODE (XEXP (op, 0)) == PLUS ++ && GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT) ++ op = XEXP (XEXP (op, 0), 0); ++ ++ if (GET_CODE (op) == LABEL_REF) ++ return 1; ++ ++ if (GET_CODE (op) != SYMBOL_REF) ++ return 0; ++ ++ /* These we've been told are local by varasm and encode_section_info ++ respectively. */ ++ if (CONSTANT_POOL_ADDRESS_P (op) || SYMBOL_REF_FLAG (op)) ++ return 1; ++ ++ /* There is, however, a not insubstantial body of code in the rest of ++ the compiler that assumes it can just stick the results of ++ ASM_GENERATE_INTERNAL_LABEL in a symbol_ref and have done. */ ++ /* ??? This is a hack. Should update the body of the compiler to ++ always create a DECL an invoke targetm.encode_section_info. */ ++ if (strncmp (XSTR (op, 0), ".L", 2) == 0) ++ return 1; ++ ++ return 0; ++} ++ + rtx + legitimize_pic_address (orig, mode, reg) + rtx orig; +@@ -2404,10 +2438,7 @@ + else + emit_insn (gen_pic_load_addr_thumb (address, orig)); + +- if ((GET_CODE (orig) == LABEL_REF +- || (GET_CODE (orig) == SYMBOL_REF && +- ENCODED_SHORT_CALL_ATTR_P (XSTR (orig, 0)))) +- && NEED_GOT_RELOC) ++ if (local_symbolic_operand (orig, Pmode) && NEED_GOT_RELOC) + pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, address); + else + { +@@ -8804,11 +8835,7 @@ + if (NEED_GOT_RELOC && flag_pic && making_const_table && + (GET_CODE (x) == SYMBOL_REF || GET_CODE (x) == LABEL_REF)) + { +- if (GET_CODE (x) == SYMBOL_REF +- && (CONSTANT_POOL_ADDRESS_P (x) +- || ENCODED_SHORT_CALL_ATTR_P (XSTR (x, 0)))) +- fputs ("(GOTOFF)", asm_out_file); +- else if (GET_CODE (x) == LABEL_REF) ++ if (local_symbolic_operand (x, Pmode)) + fputs ("(GOTOFF)", asm_out_file); + else + fputs ("(GOT)", asm_out_file); --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-doxygen-syntax.dpatch +++ gcc-3.4-3.4.6/debian/patches/libstdc++-doxygen-syntax.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: fix doxygen syntax error in header that causes segfaults with some +# DP: versions + +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 + +@DPATCH@ +diff -uNr src.orig/libstdc++-v3/include/bits/basic_string.h src/libstdc++-v3/include/bits/basic_string.h +--- src.orig/libstdc++-v3/include/bits/basic_string.h 2004-10-28 14:52:40.000000000 -0700 ++++ src/libstdc++-v3/include/bits/basic_string.h 2005-05-01 14:31:48.000000000 -0700 +@@ -248,7 +248,7 @@ + // Data Members (public): + // NB: This is an unsigned type, and thus represents the maximum + // size that the allocator can hold. +- /// @var ++ /// @var static const size_type npos + /// Value returned by various member functions when they fail. + static const size_type npos = static_cast(-1); + --- gcc-3.4-3.4.6.orig/debian/patches/sparc-biarch.dpatch +++ gcc-3.4-3.4.6/debian/patches/sparc-biarch.dpatch @@ -0,0 +1,59 @@ +#! /bin/sh -e +# 10_newpatch.dpatch by +# +# 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;; + -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/sparc/linux64.h 2003-03-13 08:40:33.000000000 +0000 ++++ gcc/config/sparc/linux64.h 2003-03-13 08:46:18.000000000 +0000 +@@ -37,8 +37,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" + + #ifdef SPARC_BI_ARCH + +--- gcc/config.gcc 2003-03-13 08:40:33.000000000 +0000 ++++ gcc/config.gcc 2003-03-13 08:48:27.000000000 +0000 +@@ -2383,8 +2383,18 @@ + gnu_ld=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" + tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm" ++ else ++ tmake_file="t-slibgcc-elf-ver t-linux sparc/t-linux64 sparc/t-crtfm" ++ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h" ++ float_format=sparc ++ need_64bit_hwint=yes ++ fi ++ #tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h" ++ #tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm" + ;; + sparc-*-lynxos*) + if test x$gas = xyes + --- gcc-3.4-3.4.6.orig/debian/patches/deb-protoize.dpatch +++ gcc-3.4-3.4.6/debian/patches/deb-protoize.dpatch @@ -0,0 +1,30 @@ +#! /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~ 2004-02-21 12:42:04.000000000 +0100 ++++ gcc/Makefile.in 2004-02-21 12:42:59.000000000 +0100 +@@ -121,7 +121,7 @@ + + # Selection of languages to be made. + CONFIG_LANGUAGES = @all_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@ --- gcc-3.4-3.4.6.orig/debian/patches/cross-configure.dpatch +++ gcc-3.4-3.4.6/debian/patches/cross-configure.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# DP: fix configure script to handle both --program-prefix and --program-suffix +# DP: and not to override binutils detected by autoconf + +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 + +--- configure.in.orig 2004-02-06 10:03:08.000000000 +0300 ++++ configure.in 2004-03-10 00:39:05.000000000 +0300 +@@ -2103,7 +2103,10 @@ + AC_SUBST(RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE) + + # Fix up target tools. +-if test "x${build}" = "x${host}" ; then ++# This is not needed for Debian: binutils are built separately, and ++# USUAL_*_FOR_TARGET macros do cause problems for cross-compiler build ++#if test "x${build}" = "x${host}" ; then ++if false; then + # In this case, the newly built tools can and should be used, + # so we override the results of the autoconf tests. + # This should really only happen when the tools are actually being built, +--- configure.orig 2004-02-06 10:03:08.000000000 +0300 ++++ configure 2004-03-10 00:39:18.000000000 +0300 +@@ -4006,7 +4006,10 @@ + + + # Fix up target tools. +-if test "x${build}" = "x${host}" ; then ++# This is not needed for Debian: binutils are built separately, and ++# USUAL_*_FOR_TARGET macros do cause problems for cross-compiler build ++#if test "x${build}" = "x${host}" ; then ++if false; then + # In this case, the newly built tools can and should be used, + # so we override the results of the autoconf tests. + # This should really only happen when the tools are actually being built, --- gcc-3.4-3.4.6.orig/debian/patches/netbsd-dynlinker.dpatch +++ gcc-3.4-3.4.6/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}}" --- gcc-3.4-3.4.6.orig/debian/patches/protector.uue +++ gcc-3.4-3.4.6/debian/patches/protector.uue @@ -0,0 +1,696 @@ +begin 644 protector-3.4-2.1.tar.gz +M'XL(`*_5WT$``^QOOCEJ-M^\?O4->_.U!+C\*F/@>OSP^G79_K]Z +M_?(U[#_\T3SZ`?Z%_7_U%E:0_2&+^/]\_U\\8\-QEUUOYG,>LN"&AW,ON&52 +M)=S`9_.-+_\(0G;9F[`VFP:KM>OQL,H8:P?K^]!=+&-6:]?92]@_=A%RSD;! +M/+YU0LXN@HT_>.V5==\K]B#,'),"6:,EG[/J>R%'^:H'\)XR[\#QDL$H1 +MKLC+!H/A:TZ,$L+JK9&J#F+=,\\!":J2,)E8(O^,N3Z-M@S6(.X2F,`$;EW/ +M8]><;2(^WW@-V)>8?>B,W_4G8];J?:I^:`V'K=[XTPE0QLL`GO(;+OBXJ[7G +M`EL0.G3\^!XG?V4-V^^`OG76Z7;>#:ZD5GW+-&(W;1'[(6&[2&XTY[TFT- +MV6`R'/1'UB%C(\YW+%MU3LL.JS/CL>-Z$OCAKL+(AB)+IJ58]>-IO-@^:KH[<--AFU +M8*!G+ZK5*AC(.9]ZR/5RTAJ>LQLG=)UKCPN";V=\[OKRF;VJ5`:@C5PW3WJ= +M\<@>6$.;""KT^6^PFZO6Q]I9Y_+2&HWM5K=SV;NR>F/V@ITI>NS98)?6V+[J +MGUOVJ/-?%JO)4>KU:O5;=P[*/F==&QS8]+,=K9QH:2_!)-`P4>P.K"G8EL,6 +M&R><:;E!O>:X<[`M2R=TIJ"GRORA,S;Z"['N08C6A!NW#EP?Z12/J)'K'%%O +M1>B$B\V*^W$DEY'?0:O/;@(7:$(.1L^EW(:G837H7#^AN>'4QD/+LMLP>YS- +MB#OA=)F2&A7]'GQ%L")QHS6?NG,T@?@>30HT(CTZ<`>=0C8V6J&_L'&4&A+" +MJ-]R']P(K9QUYZQP]VZ7G.R=S,M?@[5-`Q_TW4HULSQO&#JH']`&Z,U$H,=LD[B'S05NF`P +M`>D"A3\!P7#/(KZ9!6"&"_`YN#]3Z(1L<;T67G#M>#:Q28O\K@\:^:$#*M"17XLV/R'_E)X[_I5QEC*_Y[V7S3?/D*\=_+MV^:@`6/!/Y[ +M^Q?^^R,^?^&_O_#?7_BO'/^!?23JJJ-_!*N.$UAQ6(1[`B(`FA#P:'.)4#)I +M1A3AEK@D%/,E6B#`1/-+80FY3A3;L"/%:T=\/R"4!S"#.3%^)TS@>%&`A##8 +MC3OCD>"IK)8T2\H1Y8&!J$R.,,;E_PH +M>,*I$PEC%V.[A`I]O@`COD$8WXHB2"B(0K,3(Z]!/F$UMT$Z)[OH]OM#>]B? +M],YK[UO=B=6@3*O.:N)KG7W'_K=6DXT'K(EY%:8:[LJ%A$]XWY#61*Z%#QB4 +M+2':F2M"B[#B/";+0[G-"1ORM*U.MT"<2DW+\YR9TICB2>E0O%[@_YV'`7/G +MB95?RN6C$-H<3:QN2FP6SZFZ31Q;)5'\^!U^"N@9Y"&IT=,OY&@T(TR<,N6`.@#]HJ]-9<)3:IW0. +M1UQD%A?0$"7#):FG'A"$C`%,N,`6!LVFE%L&76^BI:T9RG'9*3LJ&YLRNM]O +M:'.ZR;`C,6:3.7-*$5($D3X4*KDB+R*9+#@N"JV=CY%7E#TE!D0"`$(\3 +MDH@6#BTEVIMZQJ=>;B[%Y,'<7GN;8M:Q9RO;+'O.P;N6/9<8$!?6IL)9H42( +MA&G+A((D698JJIC$PG#EWNG""H[=2*O\MGZN;RY0(UOY>`@?E/NQ;&`S2 +M'7Z41)`ZA8BB!2/TN<\>Q&\%"2].BXQ"[(/B)/_9UEN42JE_P;1*1=K.I6A6 +M^S,#].1"XL.%)"@2Z$W(YX4JKXGE@%ER.:(L]8VHO'JO'!]6`L%O*UPA,S]( +M7:52JTJCS%R8REP('TEH<<:G#LP9GV':J^K(D,!A)92\KHLETGCCB)1*C`WP +M!;GH8H7HV"`$`P[+`2@JY(L(DPGHI@3^X36[!J^N`HE$:+*8/IJ,!IUVIS\9 +MV6>3"RJZ:_16\(S]JZX:*ZK69-RWSUHC:S`>UC[6&=;Z:UC%QSHVPY;34S;H +M3D;L/]A'Z^,`FAKLJ,Z.V<=ZFDG_XF)DC7?Q`!4`[`B-BA?`1&!V!,PV-"7( +M\*_L06LTLLY!7^PKZZH__*1'*GQ:PU8:UACUW&IW@:3=OX(LW,::D2`C8:!? +M(CV5[=]W1IVQ=5[K06<$W/3_P8\07E>0!&U\\#+YN=;OVQ;`/,QI:()QEC\:M]D_PK3^VVN-.OUC-[!7ZTKJU*I +M-`7&'H@S"IWH"QTV_#6BDU`<<9"\5+<6<%+C/E12=YY.QP'$0MXOCR[P[TS= +MO)'H.!I3`JJSI0"6*04TJ)S@ZG,$C6,/J]AUC.<#%\+,W-0>`!IM]$) +M$M6:]4@>LT@1&]3\LB[`J@%X66#4]P75J_ILL_9<.@[(G0,A'@@R\UT$3N.[JM:>HY4(\2NYE^O_@)#8-1BU\#L'5=D:X(`?)*_O_N./4&,`0!.4'#L7P1%MR!CMAT(,H9N^+.[ID4R +ME;%`R?Q`3!>7%ZN40C,P;2?I-+%84%+4_$*8TZT3IRT!!L^*9`"LT^HARR=J +MT7_]=?MJ"O:B0D9SW3_1I)ZG.\'Q;O=0IX$+5V+[X`RG1]N?548QK5\D54%& +M"(*;"T<2,%8B17*6J*J,]6KEEVI%D-\ZH9\6(`CK53KQPD?H*VI/T3A_19T+BVV['/8_C.SS_H?>A];P/!'+['C, +M@AU)+F;9QADK3+9#AB+V6Q?IM;6HTU(]7,I?K391C&Y;'G5*1&-.V?"@IP5Y +M(ZN==7^BT\KLU8$&.VB25>%G,!'7`L#HC!*$NAV@J"`JV^_[W=:XT[7L@4D+ +M09LU3Y)+!!3]BE>T<#?2Q02%@?2:7.#I@/,9-2`,(&11Z4)>0H`(WV`1%J@P +M%`FUQ\@U=^_$I0-B"ON@JN2R'J[S'U5SO'80'^*YE%D^QQT<*>XSNK@AL2/P +MT5&D8$0U'O3?.6*N:&_N<$G69FY49FM1]2LE&@6RB)4CE<%\12/::X"P/EEU +M1HE-"P.WD$*3!!--68[J=?`1$CX6/$5$B2X`W91O0T(`>+`'"0A66FKO^YUS +MH:UY-<%9F_ARE`6"YW",*9R@$WX!<[@CPT+HR)-.YF4>$OC>/6FHXZV7 +MCE:?,BR[4S](/;:&OT+6,@B6*6XZ+)4K(."<*#ZRJ<1Q4#C0ED$,=UKL,>N$ +MDW)!L64D.*)`6);=B"X%!44!I8T;3F? +M+'##?$<#O)J$'FBZ6OGW.ODAQP4Y5+&E[(E@Y2464-WDD/)?\&PKAJ")=PN> +M-I2#S-=R0/3?,/6O,G754)Z3\\WJ,(P6I'`I47E2`P +M!Z^F#@>J>Q3]Y>BY5+>!1KRBY)[*]H+%6N>2#L()ARZK1*JJCU5SK*"1UYDZ +MTR6AX'FP==6\M.>DVRAQ&<]N+BBM+$X=3>/J1*_5XKX"J<% +M#B6?0L/F1]+?IY/S/9=6[9ZA(TG3;TI$-;F4?@JZ'-JX5O# +MRPE&W%'YTD,7#.6U$^D=-`-QX?I=JP,^BMKJ=6TTQ+Q''DH\PM6E#N-/@Z3Q +MR2GC80A(>>6$GR$XS+BR)\`6R*>PXIP,5R%"RJ/*U(/.)/7(JN>)Z)5>^TK! +M-E5$?!*[E43I7?8,N,C-9X]JA8T9 +M7IXN8"GO/J>;*J8IWRXI*E,OO5U8SA=-]=/3LVZ__5.F1H6J08P1R.%S^WUK +M.))=3N283%$D.B,ZU0T8J6N51B(NLNF0RU<&F+C5;2R8!I?`P`?D=2R&.D0> +MA]AP*(_A7<#S[HP5?00#X2I(<:V/8VO80W\DA*1ZK9`=S'#<::L'2F7,U=*= +M(&+`4MC(T:![H@QOW+D`4)$,8M`0Q7#\H"E:E!O +M,PC=3[+_15M!?"=>#CAEV3%.-'-L.T+G7S[.%CN^P#";2FT&_TX.= +MMY%X!D&F\72&$4-S/0[*Y$7Q(>"8IP^K9"G$[<.%3268,WY:ZFBXS5?NO*.K#B- +M8E%`A;U;+JZX!2)O=^XIA1#2&-E5NMZ7B9L5=%.5!X;]"F1VI-W*7JC:N1'O +M39F%`.W%A$L5GED'(`P]22V=8M9V[R_\\&AR1G^,I$^O:V>;&4&S%JY?^7$9 +MVJ4GUZD:(5$9W8A1-KI]R4M7^9"F[Q(1J1G%^.I$B2%\MB`H1.'1K1N#2+6, +M=ZZ;08PND^)-^4_D$8^3E+B--Y+4>9F8BFM65Y2R)UN8;!&R`J!V16M(8U+9 +M!)X#V8UAL_$(F!C)) +M+8&T\90BR,9#$TML40`5[O97@LKOH0$Y<+ME>E2NA#DN0NZ(```>M*`0DI_R +MPY1:[`B$-;L]&MO=_H<,$Y.'FM?S)BW(CZ>%E9FRB>Z;/&NG*&0T3EKT&QKX +M&@W$47WN*0\TZ%4>69^7Q7<11>-@G3*-J-C8I,@Y/YC3VA-Y`$2>:]+K]'N& +MYZ+&OTU:7;OPR=!J]P&%E'DZ[H"[!`]-[^5$6PO6`OKS%4X#-^FB8W7/1W*C +M3\A/,_G8R!2AQ03]_176K'G(92)$<4%<0=P`;*?@_=D/;@&+WN*B1IOU&K8+ +M%W=U:*A>RL/#$*C[0G4`O-931ITX/8((W&4IZ:/?7L;0 +MG7UKF05K$;'IO5H\!IR"1V7X#^7&0'&G$E&WP7ZFVA.6V44P>39?Q605=Z`\ +MP5K=#KF3!P^%D9X&.#4RH[MZ"@%,=7'!B/KZGYQUK6RS\7WTZ>JL +M#VF1=9$B.K?L;NO,ZJ;V[]+XUCH_'UJC4?_B.&WUR4PD(>1&AH'2&0NURQM; +M"WDL"?`C-MZ=3I`S'N_A.W%XA=FFQ77`^]TB@$9\&]$;@/-[NN)L@PILHMPM +M'Q7'13IR1ZG6:5FJ!JM7'2`5HH-6HX_FA?](=7K;%4I!-5%7.I=,U<]N^: +ML&OU+L?O%"%SGS]O(*OGSY/RV#-B?: +MLZ4YDYP_"SE_!CD_O@=79_4D8VA#R0H&!S(]/MAHD0B/<"H8*U/W(?+%K=QK +M!7],*O!5`ZI3=`GD\9'T3PZ!J9WZ@B"X+0]+HZ*RD?*XZ-'1U,"T0ZMUWN]U +M/^4*9W43RU#IQ4U>F\U=D%-/U,$B0)^"F_`:4J=GGGY])B>'L:CII?ZJR"`S +ML3)+SK_Z\X]ORA4AAGD_70^3G#O`.ETYX6=QTP:Q*]CX4MP/NN;<9_C.*@5I +M#Y9\9A9Z"AC+>W:*<;D/*5[WRJ-]B0Y%-/D"-T'<9$F;J)/R[DHDL +M_KX[^!&7_DMP<[*FOP\X3I\GJI4VMH[@*;@.F@@@YF,%/G(JE,/+^<-,+V-UN;T-\674Q'SP?$(4G>0=Z'FLS7"J[!`?I>R, +M7GS9\0A7Z+7P9PR9^K*%>I5-*L2+$KI7JM>"C5)K19.JQ2;]F+ +M--PE[\PL>6^0_8N@$&:NY6`RI/DA;+#[W!Q8.M5``QG +M981I\L):D3S+35.F7((ZN#4/7K>I7]F)Z\D#CE93!H.[7V`T&EWA1?0;\T)[ +M"H[M83OFCQLHW/6H`%`,KKX(5LF*)X^D":M[Y?A#;]X]Y,P._E`0Z/@M_L@. +MG^&=A5E`)26:9RSN",LW;5=)J>4?%*^92`VCF$&K0Y_97T4[HZW7'YN2T?@9 +MPI8PU11F5Y)<,4O9Q(DD-5E]0M!:U?5(]+RBF_%^/+.M"2I_=EV_>UL:5]`W/O_+U?(AC,D\B&8EH12S!M``FSHQU)5CJ/OM2IZI.U:^2O*\D>-K!2OHILUP8[M*[#+8WCM"B&5VTSY(.FWDT/(;SC*7L[=.WWM$Q6_N9!#\=_=CR +MO![L$HV2\&;[U+-S:IB`Y`MM,8HM\#[ZW<=AEG&[/\M!0_&+=[!_V/(.S]^^ +M:IW$TE"!GM8CO&KM%>++E\9#]5?DXUW`])9N4VN>X/O_X*!\5Y2`W;=D:[C9BI"9!6MK-@G)CM+#AK17D[7Y1#I864I_D;]Z +M1LX>:'<1_#8)^NU`^70S,IKE0`H\H88R+^JGYN@5^6/V`5OR..\2D^^@%XX] +M@NQAMZ04_#59(^S*A%\],D"=1..H3$SD29_M/&;.@&DK;*92..TW]1@4SL&8 +MLD1Y^G7I78(D$'A=_R+H;CHT2&C(.;21WE0"$SZ(D)]C7I!!"A"?U9-*"FTO +MGCF#TEWAS?9/+9E)[F+K27+OV%N&TW"KY3J@[SCO\ND-]34)$`B\%O>+49*?)!/V6=H9X\,V!_R6I#V!KS[H"D7D[#; +M429IZ*'2#?K)0XERYM$>KLA&X)DI<#*L&P9944'71,9=9/J(VDW;"A*Y[4W9 +M-BIM2S#BK3$IH:M8620RVX92=L.+D3^Z(R\J=!.=1KI3XE(L%8K*.P"FT:`' +M5(O/4A<-<[BJI2S]RPK2@2]B,X6:"F17I&VSDJP3,T;FX*J/%S!V(=ZVX'JA +M%?/)6C%R9\06R4-JME@B2Q?#OUNGYP>9W(OD=A`U3FY4?64R-^%&PA:G"RXQ +MC^\3FG3.FS=B57SD7%I!M/U>IS+SE/)0EKR&/(,19<15/$KL+%KU8<+4L2CA +M,\)QI/$UL)E.I`IEWLF/DO[?PT$4&H,J^_#.`(#,5F&ZJ*7*:UT>A/=2:<*@ +M9,%H)>`F0D0('H[Q%GH4C6=^Q+:%12C11FN:T&P?5PNI4;0]P9'L^32,]MS-;;GX_MGMXLCW,E^U)O=D>YL]& +M'FU&5:\=IQ)>SLH]*TXAD1Z1$\.6G+]\PM5`+F8.EJ56\[(+/4+0ZHH+2<+6 +MJ,;M8`R!42]0F(IR0YC&H3AEH.CGPSS)":L7#LZ.>EPT95J-T<30A%>ZE.VR +MP(#P](F(9O$]Y?"-Y$D5F7=2CLJ2[JO:KC3$FWI5,I8 +M"*V!@3ZV[8IL%8&+RJ*U!L`/JY-L81B$I+&AA/Y$1J-# +MX)T<,>YC8'$8-FX"'M=3C7-U3UP#0USHHRO:5+09MV91:%G*@A0ZEY/K+,*+ +M"F+VS5)QVJ?3]@>]$/A$E3C1$=)^Y7)IVJ]<3)ED"(EJ/3,`KCTD3:)_&=A& +MD/*?3-3P5%V7';4N7G51?(MUL$"?,],(S_3P48MRML82[Z,DQC)L:4;IY-!& +M.F`)Y,`.P!*1*K:XYI6K30R%U5.LF^Z=GE8+V#46*\1N +M1;S#R?F3J\4T)WNY88)9*^Z37+CD3!]HI.81S0H&:^LS1#U2,[Z/NT"+0#0R +M1]!OJH0$7J1(JF*]<&T:"">53>;4BK4-FU%JM+(45!J''IK7N([M(K-)',;! +M"]'5-GM7Z"&]/_W#.OYHFH=MN`^=^\/(G%PNSM19,8V1[QJ@2C<>OY7@2+%D +M>[4K+DW7DHYA3&UCVJ46@&(,K/E,I++T#N)O)EVI0@$-8L6,S6 +M_$NR"1\Q*&"Z4HH%X#50^8ZT6 +MQ5G.#"_KE'RV!E-[CBBEOMU\5SN4VH28@9WN1\SZ,E&NBF!CAB*EI)BEGNN6 +MGG#^O@_NNU26"%?--AOR/2/8UCP@F'S':P^'HY6*=7A69U2[39?F +M:CQ'^)I/[4*MG]'XM$``?-5AXMTD8P%PHS.G::%P`&D===G.U"B-V?WBCNUT +M`X1(0O,X:,SY:6L7HTJ1.D\&TXIDL`DKQ$%L67(W,]!4IYFFS[.V6+$VQ38V +M$U9_EI(6R3?2[[>H;J0X07)=ZGBQ#A\IYXW5T--5C.G1V`3/"&&0D`"`WT#V +MFTZ)OZ3%ERGQ<,^D6$-=^@PKC3N4C34^;9&X%^Y\8B?4R5P9>D1'L3IF'+%N +M:$)6N,=GU=F(1MA/2V0F?[Y[]H>[$/W14*F/Z""4>2M>4*IJHR>>XCC$X^*B +M2LQT'K(8[DO&C\3UDK:4=!,R[W5G^1D94Z7,ULXJ/W:_.PT^ARM`QM\)9"05 +M0D1@9*Q'"WU/6YXDI">2.6SNZ8X2TV)5[A!U#L1VME1S;K9V[ +MOM\+T1[PSHFM93!0EBVLQD +M;+>D.*6[8VM7%J81:B"S]\8"1()[AYFLK266%R<6D"]K4&=$EI)[0;7&Q)9B +M+2E>RTJMZ/1MH98:_CL/`4DGITDBHA9`[EY4!`O`@SN#BDP;-\X](RQ7RMP\ +M:.P^Q70ZQEPB@[/+L!PLZC%V)2VWF5SR_(88>?U9[!YO32;A!M'BN#6*8S9?/2S7N23=4F.WQSZC$S!ZOW&;FT +M>U%>PS(\A/C:A%<.LJ$?_YY\6RK-Y>SW);OW&SF'Y*H?&J*=-"\51'+J2T0W +MKI;2E?]C5<2!'LO5S>DVK0HJNN[EL""UW;XI#58(2=T?D4&-1&Y +M/V"[C4V]TJM0R.I(8U.;X9I!GUT]BM$232?1N9D$^HO#O(G-BN6N%S^O%+F3 +M6J5O74

:,WY;2=6>!):\]#M]33N8N,+]79BTF%/[<63NJJ(;^-](5#;,// +MN!DT,B?!GH72M@="OF!&(ZCA$I>VIF&!($XG7S +ML>:/#3P&')4<4SE[04M+4XOO#FXRFH:$3+==Z__OW/TVQY:R9]Q5N[X`$LG; +M9\KVFH/S0>QG+"L;C$3!E13%!P4VD<4FI8%+/R)@R=.!2:<#B3"^X2G:.!R? +MVP7C+9_W4VLG_FAW__7KV'/V7YV-5"U%<3OCG@,M9S,^8;^-)D%7;`LL,9V! +MGMU.$Z^S4DCE05:BP61\-9A55_O2ERQ8DE8F<1630"?`2!H`%:""J$.%-?9K +MC_Z9#/D8((!M?HK\!AH9X/-G.<14'7:#C6>Y/)F&D',[U+YQNB]N;X%IS%#R +MD/$L9\E((/)X*ZO.`@>^.P5`N^PX^6@UR"US>5,85W=<'@_*.^U*V887LW:` +M!34#Q\0;\A5%K3FJE3C)0`51UE96A$NB-&GW@C=?"(Q<8S+?.H+*U0`C&,`2 +M[0:*)W%XJ!SKS5.EE]N"CM?!QY6.,8J1HD5G<-/G4-%TY23Y-[7]E-H?A51U +MRJEC(^$IH*_H^(I%YHT&4K3&F%(JI!I=T[']!1=:$A455AKY.@*OP@,7S^&Q +M-&T:WA$K[*-ESN0B&H?CR1CW!]+SX`JMHI0!'(\APN.@5>+>R?89B)DXZ.KR +M`.E^J:('9G$Y+EN^`/'J@^7.9A[.$,,D)\89[R^(J1**:I8: +MG;/>.H($,V*YF;HO'J1*.:4N +M6XTR@A/^(,HX%W[4\_KZQC.M@*RQ@BI=MC:>!8EA53J,$^]EC'EE)&(B#MO=8"2) +MY!RG&,LH2(#A?6H@^;G/-47D9AW/\PS6!NQ?#-C3MP+%F`&,QSE_EANJVZ') +MB*"EX4A`+>J&X96$R&/'D47*P_K_GK_I1Y)[JC0+,E2[A]MFC3DF\Z"1Y(WF +M1J6+@[;5%,PK;6WI@J7OK!@H39\NP6]QRD+'==CD4D\B_"BQB-4M%8Z^F>10S#G&Y +M=Z"9F:V*@P=.;=LGJ%!JG$.M_RD@8=K9V +M(:[[,<-.OGH92C&7@4X0"\4)VF9[#U)))*^M>=FBVLX(W]]^&],S_)!RWVTR +M+O/J)A,=*U/:)3EOC;*QT5S6P!JE:75H@=156\QGQQ;325A%V,*XA#TPJN@D +ME\H_9FD,XXME$8WAHZR:^36*,N5S8=2)[GK+4!1^>8M/24*QO%MIM5J+,)>; +M=P$6_F#5F7KHW)5\DA/"O[(E7GS["%(O%A.3?',\P9EA]YQKC:P=LD1R#I!J +M.$3)T#-.7)=0][L_%KW`[T=LCTZZ9>MF4A[_E6ALN`-4$.,=2>=^VZSR;T2< +MT_7'GW=[T(J/:?06LCPV]CZN'C!1SQP;)7N)?AG*F4RYSA&FD\+,9]+%\/DF +MF7IG1#+D\+*6PZG',\4T6QHOLS2>TKE/UJ9-551+C3/5:28,RIO52F=N8,N& +MY"ON=[L!>S#)@(CTE197)AV@ZP-I\43P]2Q+:>D"GJ2)5*9C4\-^E578+PE8 +MIV72M&1LJI5X+AA>WD(88WT+_(ZEQ06.2SI>@GU7`BDJ-S@H<`86:=&2JW0A`A1.(4!& +M$?B3O/PQ*AJ-5Y`6+LEZ3T95^/]9/)XZPIN,!M)*-XN=&6,1:GZ +MPGXG&,)10?#0L2H)L&U6N\BX+1K$AH?B#R"LK,:^M@14822PNK +M_4`7NU">\SKY_I?)>A9E8F<>4PU-S4%$YXN9#ZC0TW.6-U[%>G,G%KV"-84% +M@N2C/<`M@S:/:;MAT$\Q<)S:_*21XS0]H50X6G?JKNXP34=H&SP^MK[P_#2A +M$OQ/UA[&-$*:5-&&O[LO8:Z21_`D77#II0SI +M$+WC%UC(^Q6B6+QEIE16$1Q2R8,I\M]1!>]7Y!9]5WV_TC,%R!@JUJ_;P;!L +M"W_(_L*SBOVLHCH@K5L<=J>GXK_*M7(X`+8CY'!YWT5X<--!$T2B,\`XA.C5 +M>J,$=T4TE1$=BI>D$^EQF!^#/1@I%SZUK)X#*S:MU[KB`O0!.E3DL2JP=RJ/ +MV_-8I!G\R,Z3&1Z(N?B.#%>HHQ4>'-U?CD>SUSKT7N\%*!`K$SW^V$E&"+"G7GA".OD(6I0I_!\)[&]5Y":"A,M!54W]Z$,.JX`U4J8O(1 +M!+H37K*]+WEN(FZ?"YX:41!`I5-A8!&/BN%IET]0]:^KKQQMR6GML6I9JK)%OE`5)N#GN*F(P^ +M&>U_''Q`EQL=;CUD)B`TR(6Q$6"/HI.`8Z'$4'3(M0<-$M';R,DGJ[B87!)^ +M"Z3SB2<50LI![3$MD\@:>(!#4(V!4AN^-'C"44PK/L.M5.6O+>"1U=$ +MY!'8*;ZU^8&RDD)E&!+]0XM"HH'1!&0R/LCD5BLJA'U-@P=62*D5 +MI7XRBJ6.)!8OSQ?UB7G"=(9< +MX[TF;6>*!J\T'FHWG9S\ZU^&X*33$TW6T["#^4;6PC.ER44&4^)ZD<^*C@XQ +M`P9/2>ZDM$QTS_^(Z]IV2!"3?CB./%AJM,J++)GAI0,E4T(_8^;AR<@!"X>3 +M$:H\%5IY,9'`/CBU^="4HU#R%!B(@0!?@:LPCY[+,3!/$IT/<)G9& +M-X0$-0W)*.PK%%Y%GEC9UR=';[WC\],W'`NH,*4>Y5^NGT3.(3[O!"-[-WU( +M8;Z?)TY[,J%H1QC7<(Q`RC!V06NNDG +MH+DL69":&`Z3^#XI&Z!FX#'$810QK/'!R!PR,`U?MFIU0O\JKDM06C-*$`W")H+E3!YV9:I&M"HQG';_`L,`.F/[N1%\'19 +M,Y^$1']*G/=4#<:\*.]"*1W5..B>/PG,>YK>9'Z0]_G;G@U(G=Y^;O9"8V]4 +M-BXW,$_S4E4K;"D:5Y*DUYRNFTFM.CNK98.9T>8Y-L(GI0W&T23U(!FP#2Y= +M3[>T!I.9R+1>VWMZ5E,LW2Y>%1*R#Z%4\YUZ6OW9:50SU,1]!I#]I\/7MY>G +M07//4DM+"W(T7KJ4@HPFIJ&K@^<>99'H&'U6!IPIZS;5%($O6;8.MH%,_[1_ +M_NG9ZV3Y0I?O/3\6US._8&\SE*<>UHM[\+W,1?#6S)524V)=Y1I +M]^\Z<'7ZI;H#`"R3I>$XFJ2\*U5L2^6=:U`=:%XUPY[FME*6!H+<->*P$F.M +M-_IG'&E5QZQQMM)EC?*4\;N]QZC=9HZ5I%W'R$(QM3+GM@/5F@@E@4%N_0]X +MU:(".F"ACL3E!OU+9T_F"CQ`R57$,FKY--[E:\2!1XPXD&+#.B7D0"X.%3LS +MWL#"$0=F0).G$J;LJ`,I#7Y@\3+\+-NI)Z%UT6HDL7DU8_>O?^FUC`DUZHK= +MRMQL*/M$!0;%7F\EA8$:0T"=AG]JT.$?/$H,9&_"SR^(8J^750+'_C$;*6'L +MIP3PF@I(+WNW`,I\-G"]7B$&">KEED7W./JF +M2NU_#<:-CFQN"$])>L*RG7&4M +M:P@R:N1W#,9]QB0"A7QDZOTN$@9CJ(6X1VGZ$ZO(%Y=#%@BDGE23(:-Z,==3 +M,7)CG8NSHGQEF=BD@G1;Q'0:G<'KFGXX%KH';#-H^I.G#A;$;5L*Q5)Z\M#B +M@2Z,H([!)=LQ,U;=%XK"@Z%+"8;'6@$&^)O0;XYM_3,W@HB#!9^88:*4CM63 +M?J*E5(4`X/-4D``+G[\*'!8!^^_$.P!I.!4')]6%)GZ*QUJDDWJOSP]WSO:/ +M#KWST^T]59HT@9G12E+"Q-Q4HO%=ER^74>M^D>)!AKXI1#BB08(H1-?*RD_Z +MA#%=1V`=3!HOBXJ)-\$:(VO):&$^3[%PMT!(O?.B81K)#@'`J3PH<$_>31;V6&QC*V@B8V$ORC5W$"PDU;(>KKC%CG.5*#_ +M@>,IP-.M%ZD,R[>C!@D/N,$D(M4Z,,E(2P9D?XM+<-1SHH;T@EX;LME%FA.' +M=SOYE'6"RP(BU,HWH_&DCY;/5+V[*>T]8IH8IZMB*SGUFY*=&2,38N&+39MT +MU0].+ET\3+5$-W=;!RV)U\QO8AR1F0:S1>2&5ULCOH.8SY*);'W&C(25]*!O +M5D'XVF81K:P26C93PG:23HWZ1O!C2AJ84@0.H6)5WD'O#H_2NOY>F&C8=K@= +M!ZS-(9?6J#/O(EF'F&I:WJ7TQ62HG2U0^LNK-ID;I71N\.*.W;K9^=8((J0N +MM*)52+NHZ>)G!IH;^8";N])[,8E*\8UES8XR\17R[0F=-EVGU"`-.52+F:C!2A1!B^KS9LNO%8A:E'D[@>N[VAJ7*PT6V61 +MA9NNEJ*T7=`"O*N\Y%3:W6Z>.4X_7SGE>X0ZG_9>VXW)QAV/!D/_"IG<1VH@ +M?69M63MA9G,KW!V*HY'L">*5I=XI<]FP,,@/&@_&BV"4/A8O)?S#K!&;VL18 +MR!=#X2V'Q=PC"Q, +MQ=6Z>%>^K9??SWW*9,Q!-BDX/7]ER!7_P.TYGWW*O^V\.1P)SISB&H1A-X:\ +M-^BRAM^OX*=`_\I$.@NS[J\0&S$^D]/H==IT3J':Z>1]UB&TT"RF3)BY#9E: +MTSUG]Y%F=!Y:1\Z(BN`55A+SKB?1F7&><+TH9.II$SW/\;+PV7Q\TOK)5H(Z +M[Y3.)I[(285*O=T6*OVRTULJC%N^*D]K:E(]F"PH'71&+T/%D\Y5U+UH38ZQ +M.N:I@#,^`C&*[8`X4NFC+&#:I;!XSZZMUWX7&(/.'3N3^?)V3R@'TU\1#(4N +M&@F@DHI^EK-T^8^RE!,=UU)%;(12A^'XH1%\\'C]7*%[4B\7'32@:>89TW-7 +M'I2[.LLTY$^+EI(.RYD4YU,8]5C4FU15H!7A9NH5G@.V.6VD'PMP,GSU9P= +M#:US.)(F_N,CV;;'5$?E;#V5?8D[Q6CI5EHLL2I67^(\3PK(?&N2:@RH1R67 +M8;&3TNP%^-)T`YU$+`G7.B>7PN];PYZ;1V26R9)D38[K`W40BVHA$B9'?!1%CDN3D`<0D[O/SAY&2>;PU1(9N#1C1S^NQ,0FSEU^%4=]]K=J27>;Y\'[0]I`-@&N5(B@!GS +M0G0HID"(*1>ST.AGTZ&:4JWUW,W]Q9G/3460<'BXN`64[EC!B$5._'B<$?E8 +M6N*ES(SV2Y3$ZA'F(G%ESF#ICWL-/O]UMS9#_'KI/3]2L1JTV&7W@ESI"S6/_'=A.QB_#Q25%@Y)^H765JG^,V-GH-'U70\0:SB&:@X#D=M4[&4 +M93%O497'*ZHZNZ@_O5YD/MKM:"_F.FX>0X6Q0/N2^HPIK4PY#27.RE^^?OX\ +MGZMV^_MQ$(VC23@.OO\\=93ATVPT\-]*LU&V_U6?OU3*E=5FL]YH-&M_*5=J +MC6;]+Z+Q>9KC?B8(?"7$7SJ##X-IZ6:]5QU1__Y)/N[\PZ^5SM5C+X/%Y[_> +MK%:^SO]3?%+G/XJ&I1M_U%]I/TH=.!ZK]7K6_,/4PYPWFS#U]>9JHPGSO[I: +M7_V+>))!_`^??V"H?A>=JU)G`"Q^;XB0%)^0D5+/!T/6,BR5+@FMK*11C)R +M-,K[)%1;+@97((DLH9>50LKM7VFUW@8BHRD\6A/L2C;3M+-*C9+!I]R:Y>^/ +M^*"?;(G@-_,V3#MU4\LXJJ'&T>@&_:OQM42'3[2QEH\UK_&0<>%*4`-AX$S7 +MQ,4=ACCI#OI7LOH_>BE^_?P!GR3][X51NT2/'HL/6/S\7ZU7JU_/_Z?X3)U_ +MY`."VZ`]&0>5!_`",\[_:JW2A/D'KJ_<`#8`YK]:@?7R]?Q_B@]>N<% +M?33N;HC\,MH9EMJ5@KDS?#%$)VG.R9P-18S*,^JC++3!A5:G%KK<2"VVD5UL +MJ<+EUC+*M=I;2F\SE)!9>GV=2Z]/;W5]/;5DR)TL6O(6I, +MTRK!P.E!-5\,;!'2LNPBNU'S@$+/"$5Z/`9_A\B7+?\V\Q/-:$[@(0]QE:4%E% +MZ$UBZZ\L7%;9].H[.+@;/Y7JN6O +MY_]3?&*G>5&>M[]RV)\/UNGNN^>V/JT)T!?%2/&BDW;PTZM`9:8L;%/CLRA; +MQ\<8J+1!N>'+*GY!:X@\YGU1:-).Y]1KBIYA,.!+#-0@I5N^_,$KD3Y?B?3% +M#P*6$7Q1ES@LUBM97A*@7^F&&VT07OR*I*B:I-"8C!NK[\+CKR^FO&M/>=>9 +M\B[(JE+2/:$(7XP^RHG\H(;[UW=U.?9L,B/@26T=QZ&*/Q"LKK:IZ"ID_)9> +M0P%?R>J__V=>^K\"!_I]ZYA!_VO5:IWI?Z.ZNEJK(_VO5^I?Z?]3?+X!RH*` +M-Z/PZAHHRDY!5&%&Q&N$!SD=7(YO$)W\-5T#FN!M,!%[48TQCC#9V,<%@W(1C^3T0:0X\"L7`(RA;1F\"-K07 +MJ2`B>X?G8B_H!R._*XXG%]VP+0["=M"/`L3&'.(3,IJ[P&(P0U:;-T40DG$' +MG!AH*B"JJ@I97E$,1E!&WA]CLT>"==X%:.N=Z!)O+'.N0*J4KIL>DLDM1U,= +MJOBL)OKJ)`HN)]TBE`!IQ<_[9V^.SL_$]N$OXN?MDY/MP[-?-@G$#^W$@H\* +M0+`W[(90\`W*X/WQ'6+:?R/>MDYVWD".[5?[!_MGOT`'Q.O]L\/6Z:EX?70B +MML4Q!E39.3_8/A''YR?'1Z>(VG8:D*$PY)\RN)2G?X%)E1B +ME9%CTRAH!^%'!"IE5*F9LP9E^,0+$$[AV!K#33SN^H-Q4=R,PK$.*./,)^2. +MK\*B:*R+LP"M=,0QA6`MB5,D8Z)6*Q?%JT$TQJ1OMP4RE)52I59N%L7YZ?8* +MNF-\PWH/TA-(3;G?#6E\5;LB=272X38GKD!P:"@J+.K;N^&'0`#EA%-Z,@KD +M(H+10V'K[.CD[/RDY1T=(^[FH+#Y-?5^9\;XZ\WWI +MV*Q+\=?Q"-99%S9GE]&U^$XKHL?V6V2E_@`7 +M9Q=S_!7>=L+1]W^-)A?XKW5LOUAIOW\O6_F-V+\4-\%WN#@QS!!61/B%"J;P +M,E2A<\8[A49[CTS5( +M&O+<6'(),P"JL90'1NZ//A/_DSYJG<."6($C^;/4,8/_:]1KJZC_;Y3A#]X% +MX$U`K?*5_WN*SSXP7[<;`L6`M_Z'`+?Q2MA_MO7PS[.3G5,B*1OB^_;':#08 +MC%&^T/];U14_/AL%P$(%'Y$>C>`?XM,J*Y5JM;927:G4G\':O!2EMB@!O1Z* +MTLAZ)^R&OWCQ(MZ97$5L#T?(U]9%976CWMQHU$4))REGUU`JE9(Y*U#X'6C*I\S]MY?;"]=PHUE:Z> +M/=?OS%,XX_^:5X_W#W<.SG=;IP5X!@]D,OQUMGV"1K!N_H*5U:Z-LI^].6EM +M[WKR06EW_U#EAA^>A\6_/CC:/D-42N^PU=IM[8K_"OO7X44XQJ.O_5^L?OE& +M;'BE^::RB`*^P!F^B/K@(X:5`3-`H[`9]:D+\41G?1.`#>O-_N3CH! +M3:T:>_A>^H\>>V!Q^H-2C,M!#NJ))R6^@5+'0FS1QFF4R\5&>77>C=,>C2^" +MJ[#_?=#O8-MV3LY.S\Y?OXY/D#L9]C2]/3\X`\GJE7Y=NBI+'A$Y3!K.$OIY +ME8#A0H,;D(AH7!/<)ST-;MN!;/$_8;T(?OJ_P0@SP&"#Y/&_00>^ERXBF04C +M>99\^*\T#GM!RMQ$(*JV`QJ":_;C,+5LJO'O!`3>J68%!.=^$'0"&A7H7G5[ +M=[?U!L;CKWGF(0O?3_HW8;]3ZMQ45]JICTN7G0!>_9-VE9J8.7?5O]_$++*; +M_O`9BV^Y\0!DYX\K`[&AOF(!.T>'K_?WO#_G)ZUWM(>K#1JU2+\65.[ +M$#Y=OW]U/1A\B%:NR?VO1%#)\*-]>=7U[P:3,7P'":8K'X%4`]]XNL0U".@J +M,U"\[<.]-T='/YX"S7N-E;=!!!]>T[N=HY]:)]M[+7Q,?KT@`0Z@3"@G!V]W +ML*5X]IHE0[^.CU.6$$YS#N9Y5](;C"^R]<^EO^9YQ+W^H-_VX0\&`RK\GQR=M7;.CDZ^_$GXH[GSS_\QNJS/)?W-D/\J]7H#WK']7Z/: +M(/OO6J/V]?[W23Y_$X.+7TMA;6T5!)7^Y/89/Y"@?/`KIB"PGHSD;Q2:S+-V +MXLFU?#+%S2`U1?9%U`+)*PL57J74P-=>5MO?PS^OF\WO_F6@RX*\ +M?M2#-Q_9S'*@KYO@6R_J7%QQ2V[;@\M+_FJ=R+(]B +M7$*=,WP;PC2/[X!-#?N8!MCL/3C';X*+E0%SJS2*O0YQE^0M>O$K;&'2[1;4 +M:W_4OD:F&M.T_G%VLNWA8SQ6D;GPL%;,5T"'A^LQQ8>2_6<.7#48)US-D.)N +MOLY0]@Q99/2L29\N/ZC4U]T,? +M+]RH1/EU,:[MKQCE;_OM:8R#DT.\(;\L6B9SQV]P.-VIV<@LR$F']1V?M,[. +M?@&N=__P#(M:MF<2NVN.S@5;A]%PZ0O%1'R#C/8R.89+B4`#'EW3[!^?<&I@ +MD[=?GC4B-$.XZ$3W"X]J&IH8B,BV^2.B-.)?]K'.M(S6'=/<:3+JC*/\UJE`6=M +M(^4PEV^$:JPZQN7O7*4!![$\PZNUC6IUHU[59[@J5IW@.E/B]&Z4,TYO8.G\ +M?L?#G#(N*3SAJ#`L$+(U8D@-J]:JE2+\T7J('+L6$O3']R_$Z\%(N]F1)J@C +M>*5$1:"DHH?XJQAMC8'#Z&+?E]6H4O`HXDM1"LM(UZ;PWXA,$U081$B"E[X# +M-M,@#9"XAC1%EG;I@]F,R41_(&Y\,C#XT!_(W'W +M([3!]L9!;RCR5O13&"*$T./_"M*BD7)2'%1,[R&LK#<&EJHO\AU*DY/WU9,V +MWKQZ9.=-R72TB0Y'-<;IE$-=JRHJ_6\TU)#5RGW&%]ZR?#DZF-TW8'02[H)[ +M2-?D:!&/E^1607[<:X;L:4RSE8,F6J9$`R[!RHY3!T,UB52D)9Y]"@$L+6Q^ +M;+6.35Q@Z%'C'LNF\;F6C4WZ!KT+9"&>AOBIRC+)7[U<7JFOK*:0/_E&F`9K +M`JB>Y*H5\3JXD&(,D,#Z!O(ND@2JHC4)U-E2B!6+;[X\]F9/#U`T-#%N! +M&:EZN5*$/ZL6(\6/*F5KB^+GVV_%I1"1QNA(@H6Z+K<%Y5-.MJ!+!PB%IH:38$' +M/UN5R%A#EH^R6<9H*H<7!F@M1:&@1#B^*QB)`VW6#P[H@I +MEH8D5%@^,#1HO"CC#4!@CQ$Q3W:RH%!K$4%)KA("4"*DHO9W!5JB,$SU8FVM7+.6Z&<<*\2:?RZ^ +M"2^!$EV*UR`4M+R]DZ.?3[W=HY\/?]X^V>5$\ORB\?/YJFH46'Z#5Z/!320F +MPQO@_\Q!DZ#D4,2'(!CR2!M?0U..-%;3)0P'44A#[3A3/5<#CJ3>*]0IPT_H4J%=6J_"H63=; +M#'H(/1TA*W0C"``,:"C"B=$ZMV'\9H51HS5&/<;30G58(AUZ>MO&-B^1X:F[ +M<%GD"/!WVH9*A%DFELR-/XX%XRAQ2$Y9[Q/KW) +M,IMJH0W:6'S@LJPV80U6F^OZ2/RD#EXI+NRH*SV0%$2^%_8GD=B6T7M>B9T" +MJB'4<_WZ50'>(!--9$#2S$@1S:GKUPKQ)XE.:^]D^\![BY"AD`2'B;B8M)%^ +MNW\X?:CM!#:X9>H(QZ(*0B+:MM7UU6*]5E[7V_9S#AG]HC\+[SG*%=]WCS<' +M3.$Q4OG4#0FI"3S+UOY +M$88IC*()[Q_<9%'/CZ[QIUG+I!6(!@2SZT=4`M3A3VY+&%M<-TR2MW#A/C*3,5_`UD).D>CMR'1 +M1F>O1D^EY8BF:3BJS3781VD*7OE&<$/U]HRD9L-6[I8K^I8U9XK46S/*T&K4 +M,W;EY:#;<=@&5Z-1KY9KP#24-=-@5!-XH/2#&\;-UW[0N9R$!'YN)86#DA6' +MR.\"]S]HASZ[MER'EV/#O$=%T1F@4TLW&!.C3P7B,NA,VABK2Z9G\0T5FNJ[ +M5/K!INVB^G*TPCE);=@FM>.@W9Z,F`+[@BU4VKC==S/.V*14QQ$;E>CGIM!]LT0\ +MJW.6GK4AFC40[IIU6[@#`@R/&@W+"M!2?W$8 +M00X",FS3C"AA+25*X"WS.@28CTCZM*XVE;:-$)8F8QFZ@`ZLH7_E*PKI$%=T +M_93J.Z.3PX_&K(XKY[#NWU$\(E*`JAR[_9M**+/B"52LN*FQ#EGA4V_MH.B2(M#BI1>&MH22"2(2KQEI!I%+Q\M' +M

<>!O4 +MLK5Z<;ULC*'IMC+H,;`I7E?BQC91A23HR'.1!`6Q55N\A-!&Q!^--]A*!NJI +MF+U_GWJTE$;7`MEG`KZGD!\?P]%XXG<]VO$>,,01A6B8V=X'#6AEK5&L0%?U +MD.+'B63QR>W:\C!A=J%@KX,2(NA9`*,N#%I;N,T +MDTU85J&U-9:S5X0A; +MMP^UU6*C7$D>:6ZQ>`K@J<85H_T%K;_]L +M_^W^_VLI+:=&18P5))$*9*]+G6`(C``H$DBL4#2#[D=871&A<\0]B.T`H +M;PS%4M2KK"%1M]`,,'(+*+EB@[4!>M'0"RGL1(%N,N"_2P0F9F^$` +M-@MJ%ZBX(H&?)'>,RZZ,GHQ9&4UA558K#60ITG@5]4K(QEJLRBB545G3C(HN +MU>)41NE\RFH&GY**S)."AL*T=ZW8J%F4%WX:-UCIC2F6@)/HKEPO.<_&/6^8 +M>$;F._ATV7IJF>@M\6F##'#0Q@,?A":ZE#2F--]%6G2(%*C,16!"/?(*IIB. +ME^$H(BN7KA^1@$9/Z0<:\^#;E:2XY??A!/H8>!=WWC#$!2ORD[Z$LK3X#N8Z +MRJOE(OQ9M500@BR16H>[Q[CLRXK?&0^*N)G5\XIZ+@/O^4S541;TNSX7`Z^& +M[2'L4WG_J/)68WE51M;AXUTDXK-3.<0R1&,L1EW;/2,J"G_CO23F<,#")8Y4 +M4:3U&_B";M#G.PCH>06ZWZQ86H@OMOMLM`6?GZ^#?NI=O)*)?"7$HJ5V0.-4 +M1&LKXE/Y',=G7)H53Y'7EW7,DP6*5%3BXN"/):?` +MBU<5U`G:HX"L7:SZ'GE&$TS:G*7Q3JA4:T7XLV:IR^$7/*HUW-4A#[7STY9W +M<+0-`O1)"^3XG9/6VQ;RG'2I@Z'#2".[G?##$QG +M:;!BZ"<H9P9MD.,\Z83E"#%`Z>BUH1QMS7O\*L.CQIZH^;FZ*)^JT.CFYD[ +M/3N":;O?U(T'GW?BH/WS3IM,FCUI<$Y,FS)Z/7O"O`I/6?X%2%QPD!7H9U&L +MK/"$5=?@%*D:A4`.AQ[54'[GUTDT-G(2MJ#TDF><11M^HN/=QC;9F^V?XK,D +MIZ?T,MZ1'Z0N->C1,U0XHGP(=5?E3\ZGQHSTKJB;U>)BR8WU7*!8MH78ZIF[ +M2;0=YFV4V7\+-H>K4ZK0FO6QH-*D38<<BMN4\5>060<@AJ:S/2A&9K(/[UK\QFEBKRPG[A5?8TZ^Q>/9,ES-VWE,7Z +M%,LU3J/(I-8E4KP(8F^(1E7KS4:Q6E^KN)SN0D="Z67B3"B]C!\*SQ6EU6M@ +M(4+..>/DW*HF1L^3BY0).MG3D!\#@O]4Z^OKF5S,8W8<=;)\UNF.;&J3T]2M +M;7A2FK4$/^I8G\[+E\YI5JK-*^E@WLHXF1\XHX\TE[-6?S7CB.;5WP#^J=IH +MZ-6?@ZV52>.1,_OR3V>11EC:>&4,@\"%T6SP8+@/\)?;.^ZQ18.G4*0V.@%( +M+Z'&:A4&MFF\A/ZH@?U\1R>MM"_U[/S#5T%\7[+^T@E:3U>7MDL?7WSJ/O,V=DN'EEGB]?P*#_-/^R=GY-EZ! +M[.V?GK5.M*GB[#)^P.N3E"+D6:$]%\A%:TLY09*M;8`&A8.AK?ZEPJ'DMK$] +MQ&6167]1#(955O'`UJS`(%?7+0>,?_=!MDQ*Y_"H@!V;60=>-4RYAWNRF;04 +MY-+W^BDTY+*J*1@AS:S;?'ZCO-%INULE3K<(5<4J%;G.-+^.'*UR1GUQ,1AT +M$3R][W6"X2A`=]*.AU:3FRRWTRUNQ48FP`>VOBM1$%I.MN%@ZX8^7M+):T@X +M?!YH!*K,:."_E#IQY>DS;9,-1M'9;M!GX\I+O`HF2R@$VL/[5SAQ.H0;<4GH +M>Y:J41:/G"J_#CP'1"3"@>X=P^A^W#G?A]/=.CLX/ +M=_9+&M/9CV6KP^/]Q!C#WO%6ZO[9-?4D0RZ'Y;[)W]DL_#\F*> +MT@8AF'RVI]15,0$B*3F,8KM'3&NK+,@S;58;=V:I!3'' +M_TAM4ED-[E#RKE='$,6M,MKQ6K%NG&&'\5JM6R.!"6G61:X6$I18@,C#0"R +M-O(E[@,.+ARV#(,@S1&4=$(.$2$O`>6NIIL5&3=']Z[L<@)SB]5KG_57SG22 +M)B4.Y*#.,7*QA:+9*L*J7U-\RT?=6BDTW^1[OFEFFPHQB!/J^A)F!G@56`?B +M;>MMA/?>PRB8=`;VZR&1E9^V3_!V]2XQ1Q(`@L\#-G-*M=&21&FMN%JWYFRU +MWBBN-FS[K)OK`9Q2W?`R(-Q;LHSNCQ$IBX+PB)V#UO;A^;%W?(1`1P@WA,-/ +M:!60MO9,2?;2CMN!]QC@24>```BLP;[<0H;9(+?.,06I[$"G)$]A.>E()Q(H +MZP/T<.5J!<9#G*+Z`!M16&&3*=60AFJ#JMP7/)`TIG0GK:=C10O4A)TA\4&( +M0!!@@178IQ/#^<#EIQFNJ5-#JQ4R,^%QIHBGI@Y38QMPK`*A7%VU#`_UA3!; +M@\)W%MX3N_3%L"A>7&"XCJ$R%&7!!=]NZ@6+"]_C-;\UPT&6Y"?@K=#,#@7` +M"OZ(`H0=\]C!R,.S)H]]LQ04;-%/&D88U%(%[\Z9$Z)QQ?5P,>C<"60).LY2 +M\37%NE,DP%%[$E'A@7_8J#?A7+9\64GI.RR]#/L>S+9\(L%N/`2Z0;7G91?E +M`A#V("&66Z2U4I"I\VKD9;Q!_EEZ263PI9#?E%"*!J)."C3OEU^A,/6*IIMS +MTU<#RR&A>E!7I=-!&?P%2K#*)?W1,PGO0TML#;D2@RGRY^D]%L".I-8JAM(@ +MA7ONDNWP0\?J04NL">=DTSXGFY7U8K/:B"&Y8(.DPE+N6?-B-`86!;B"Y!NJ +MK]=H\A!3#S0=3O>8J#$[3'IRU#]YBP+=GWY36UBI=9CG10\ +MQM))B??JX$?VRM:32Q=;:G=<^)$>X^78#&QA^58"]EJ3NTNAAOT=>X6!IBZ1 +MMSK>U$A!?V>OU6.-L9&3`TF%+U/AS+19[TSMG,!B[50J:S@JZNDGZI)V5?HM +MWJ_?8OT:SN[7L=.OOYM^'7.__N[VZS?3KZ'J%RYTF-#B^JJ+Y_1%32I4(CWZ +MTO8)I[:?_;LN`C4.N?N/PB,LF3C%&$[&>!?K87ZFM=HD0(N*+^`;$9`*^F54 +M+(L`ID*6NT@_N)&>2NRY0K]39`NT/$"MJL=W>[%;9/VFH"ZT\/X)(;?#CQ@V +M[F^B5$7R6:0V&CX14?WYW@&Z5$192-Y+X8NWYH4I7UKTR'[5[>-BCG[I$?J; +M=M1Y<%>QD*F]U55MI%6&9R3+?GS%;FJ6(XD59+>!0/D>,)KQY17RW7X(O+BG +M;D408$Z9Q[V`5N,U'RVOVGJM7(0_YG8O9T"99!A08/>5SXN%K:3.2.7@!`N: +M;O:/;4M!_%@8&Y`69G'3=7_^"#Q1X4)3=L-PWI"A7'/'5MO=Z$P3"V]U_\8!B_[>P[ +MM,\T8)9.^NK)T!6N9L`KK*VM5%?2P/#E&W'EXBM<28`%2P.-"/AU&SU7%:H4 +MT%>9"`MK6;B1."T)[W)6!:"+_J^3WC"2SN65YEJQ7EFKNRZ6B(07HM5^WX8; +M94D<8Q#A@F.C>C3BA]/JHQ]V"6(%ITY:2I`1D]+FD3+&Q1C#`Q,(+-3C47Y/ +M>4'WT:L`_=\W'2RAYT+Q62IVJ&/>,/2Q.$A"5A:C30F#IOKG2`E?;O]0,DV! +ML.0^%1;HO;5?S,W!DVP:J[HIT$%UC/*0BAU$;X3=:+5]K&>Y:DW\-TR?NL6I +MK6Z4RQ9\$!>O]I"=,64C9<60(',V.OOPS"7\>^P'`U+C\R(AXPMUM`$QM^YQ +M\$&]7(TKN?%B;W0526QBOWOCW\$"&PX#H`B,+524T:^E`C&TE-8$VWM^VMI% +M_,`A.CA*---E7;Y@G/Z.`UHD483]2.P?X@T.%0_L9'2#:KJ+.^MRT\)2G>J. +M3$UAYD$V90M5SVB==:``5_$[I#G>CS5X62O]3H.Q0F8O#6_"2]1+;I]LG>:@HIHB,34*3%&.5`Z^W*WV,\P..+UTT\V1>(XD:5H +MW%GY&(R>@BBY-6;3I5H:2:J)6(,507(?Y^J(SH64I28J90QL4V\8DE33U"B6 +M:P&"A/?TM94RZQE%!5>?[4)/#]8L5!COG$+^>:>_'OSJG?AA%+14?,'D^]=H +MH]?A)RFY@VC2"_C2\_]BH&^^%>[D,3[G#H9P^VE_MW7JG9X>>[S]O['M7*3[ +M[TA$=[V+03>B%)YW-?%''?F=91Q*[YRJBYV +MM*&U=]+^_B5U>;1?AC+RYZU%PSI@G:@*0_@&-E +M'\A)BVT!MD_?>D?'Q#SA.;.C*J"P@G#Z['I`MULGA]L'![](.Q]=UH&'M@F1 +MO"=;%O_'$,>#C"6B[!=25J)M^?`#;+APL'+],O80[Z3B3R_;Y/SL/IST0]RS +M]-2TRCL^.MW_AW=Z='ZRTW*+!L;25Z7P,E89A=H]9-1\^LOIP=%>P"C]]# +MIB6[_79'N@-8Z'(3OUM[#V?([^6B2/GOTZ:Q>D!EM2*?)UD8]52#$4,:N(7`K[1BX/'O^N+RLK.IN1G5T/)["1-C@\)SLDN, +MDS`88I0#[OT$[94'O276FFB^J(,EE"H%61,<]ZAZ\\9"7CN,`K^#R8K`]5S[ +MHQ>%;V7E14HQN%2-,6A1[2Y>ID.>@E"/L"K[DLG.IN\E[.9_4FS@/EZ`UG%E]_]L_]=QOL:OJ\V&OCZ$R\*O1I2Z`//`-&[=^^+`@,) +M[;\Z/P,N^I#X:%*D^SW_*M!+Q]J?N&KV#L^1LIQLG_SBR:--FMA1R2^@7AA& +MV.J]8-/>(*SDX\MST4.(C*O@'39^:2-N`0KK'G^'?:-O7#*W[Q>3R^A_J=.K +MY#C#;ZA8>/6.7K_?G$Y8I!/2X(H"(G$)RB\,B`GY[$SZ<#I''B;"WYML]2H",$)8'"]G9-]JV88T_;P3N1A4HIBZ8?J +MRZ7")L[95FUSKI4%^?MMD.6Y`+.RBG(5E*2[=$6VC=W*(!=^P4R%V!I$(L)9 +M7Y+3E>R]FHUXC7*=9E4G,JL4FOXL6".N^/M7IZ;C&*.KB6`T&NB]9B8%T6R! +MMIZ>[;9.3KS7^P>MPR.J4BR+6E'662O,WD+0L[S:0]@H.H9%7NX16&.P@KQ= +MD+'>LB\"GQ+6`)A%?8KK9^D2+X265(LUJ=4G+^IUKIUU;6W0E6C2]R[]'EKJ +M;:F-J@:'#T,::ER/B7Q8<-&<]D5EN\,'34:&@C,WJ4G>S2Z`"7SY.UT.#,5X +MH`>69H9FA9B'?(Q,"3A-[;*+4D!.J[>0L8-G$BDG@@1."23W)]VQ%F-0*2AQ +M1U4@JS0J))L>7OE,U2-?=5K^TPMZ3*0BGWHKS_EXQD(AE5)&_DKD>TPO#'JE];V`UO]_6!59]L>UYV$$@D-M8BD&JU?4#KM_Q5,!Z& +MG7PA3G*=20"!+[@%*2Y?J38+ZB@W4D`**V^?,RPHI)WVKO4ZQ3I_&BF0:IIB +MM8Y*_33E@GPC9%.U'$@_40@T0:;J&_75C;(59$H6J@5!F<>5`JOE#4352Y4" +MF3=$M-D.^SJB)Y-@QELM7BR5FK7:J-30`M0V5>='5**XTE9UV;!JS31`M::PFZIVAO4,D"J$U:%UXVN1_0`J`^U +MK8$>E?I:VQO#$L`5B2(U4&A@[3W_(OH885[\0H7`9,&3&G^!TBAG-+G@A_B% +MJH"Z^0E^4:W@HO`+%45:$\I_>1G1*_B7WW3_E_Y$\H=,+G^/^?=P,"1<8F_L +M7^`MKWX0V6\YJ0_LU%UDOL+3[U@Y]XW8#2.Z=OG]U6:8C59?E_V!"+ +MM//N\X^[13@&0VCY$X6N575E:^K+&"*DFJ:NYS="-U=1#O4@5S/7[^7R1KVA +M*4#.E*M(A\Z40C>R`H](=U_IYYL%@ZN.U>9:<77-MN:'!\URS3U2E8L\'PS\ +M"PU%^;`CL!KOMTDP"512'=N/E$;+BD +M1$BQ?+E&#!8P+E@-4<+^.WZ!8_=^A6ZD,(.1$^U1@M-9FL?P$Y.*#D/SVK&> +MD<8SR\(I\SD<[U0=0B*\HU:^7Y%(!N_*[U>&L&U"]$0H**,6-JM4'(+A//`M +MR80*EGZ^1L2`(?"^\K1U)O(_'>WO\DJB:DF`DQ=P+@2TL?_$4'2X\,KXIU*P +ML>J=.SM+OE;#0,N'81Q`9E$+\7?;I.)@X'=$9X((%^B8T1_T2Q\'77^,PK(< +ML(A0Z5DJ<2G+T]&5:52E`5QU*IO.+X1LJ$51B#1,QH"E>"%P<"EYHGJ# +M(0N[2J%/F`RDR:7!;JZO%3%PJ1[LM7*EN%8IN_9%::,-&UV/+7\T-+RZ`L"@ +MHT?'9][/L6':T+LT;1!-P3\&'?LGK7SM\>^BJCM=U0G_27)NE@PNI5:>6H\.C2&HR0L`4CW4X\D(7 +M#;FL!WD762LB,R\*9>;Y03.:>J0W)'YJ02BUZ`718H`ID<,Z2@9-W+4"_17 +MQTAO0!T_!C(Z3,<91;F>'[A(-#*"I^I0)L"J2^Q0Y-^FI3H.<(V-A +ME1M-',6FJ\;Z$XSB?&?:HP[O]'4^][C'%SM[^Y"/("G8>*V3JA`>RM6^7E]# +M=+MZDO=2"5%WAU8,!MF0T,K$A_[@IF^@4J(AWOYRN(.7:!)*`".$H0)RL`4^ +M?)OJ+FJKJJ_V][S6X>[^]J%V?>:PZFW$E@&F6%R$5R6\FO/[P""/1E+F0F87 +M+;2235^1S@#U=1S)E*"<3SN2"0?1/_'`VL(J&N0^B:"*%64+J74,*IGF\R?? +M"&ZH%E#Q5YIP:MWCRR*U<$I9%A!,I3DB6=:.QA^#MD?RF'?I0R\[C$F!\458 +M,&V"*-JT15-\8$&[2"6RYVEL-Z^PR:'@^`6LG4WQJ2"OZ*7=\,G9`4$(>CMO +M6CL_KN +MJ);QO#Y/YD;&\]5Y,CPLBF4+350NR+1Z\Y9M[`M"@2X*YY$F1GAHN>_4&6]L>0^/ +M3EIGYR>',W9&=D-X9ZRMP4:P=+L-A*(N:^.6]*6^.GNIPU308LTLHSG?=IE9 +MSMK\VZX@BWJT':Q;IAQVK%8B$MR)ASYHA#)*26'EQ&<+Q,[?>4WAK\9:K=@P +MP5]566ASB_?;IWF$>RQ0H$3Z6A3-@EMMW.F-ZY7;`GFT?'SXEN)9EHI,9XJ" +MJ]C9/CCPZ"O30UJA_WW^]I@?,@0E^KH4Q:OMDY/]U@GD01P&BIM:Y$O0(E5/ +M60^/SEH%]*63#JJ=0JS]L-W>;!_N[1_NQ=HODNVO9UQC$#2.'56WW+AE?+$'MH$66-_H +MP>5DORKY)3>]Z1?ZV%J-5EIXI]&H6U%H'I?HN8`(AL#R7ET!,PZM+HH@)"4+ +M6X#S`:??BG`Y:MT@`E0J&&*UO&8Y3%8=^/A8WA1F +MNY'!;*N<'H6VX?"4;..#5XYDQ,(X_IBX6FU4B_"G:6'?RD>6GA_%\KXW&*)= +M=A6E=(1LBOTD-H4,MXNB+W^9B.]2ER65(.8YR/R_\AUD#.YVJ""K5'AXS*&, +MT:%JRQA=P,]"ZLWY@D/1;$*_UZKV4#37\%'3@C9C/S211]P#*D(+D[^K+W2Y +MB=1Y0YK^S[1OLN)74[F#X?0HUBI+/,J%SIP1R!H_]M#"FY^V#])R;SJ=>;M_ +MB+T1MJ>_7!!;?'3F<2O0:6-E +M,'3[;&>BA]N'9P@L8&>K4K:D4DX'@"%_RU@U+BQ*['4_N!+_GXC5T4=U%AS; +MJDCXS5L$0<]4O'B.LF$*3[03[>G<<%6))$4]I5R:51RE*Y4,!\M(,9/P`VAWU>@VF:#6&)4YJQY?(X!QM1H9`22PENQR`["QM91=]V`08A9M:E,@`B@ +M3404&+@S"")TQT6,1K>#V@548K0P4:>L!#;.Q(4:[5ZM$&PAS8E+[-4XJOXF +M%\VFBF&UV!2I@DO2&@4>WF\FK,FTAM]LI(=OJ`<2R\8Z[D3+9JE:Q].L46LD +M-JP]DT:W\)X +M$EAWUBIVUW!$)QW>+>/(P>9)#X0D\DR$<$'?%@AR/2=>2\Z +MLP)Z@5^9`X,A&*'Y@2P=?EY8+Q6[2VF4*G0IE,JER=2RQ(U=EKBQB?+Y'$7#:=:CVB2BDD4FM,;5 +M)A65+'+!R7,SB(9J4"KA,&/AC*78,D$&:0A*9B0W%QS"9,Y/9J;U5YL:70ZZ +MW<$-`21(](&A/T:%K@5<+O)`(!`&X=7Y:\0Z?:\VMXSL&,E("#H*JIT5B0RT +M2Y1DYH)07^Q45:`Q.BG4-BH@J5%[-Z>/7J*[FOM7&"-3QCS>7ZX!!!/934.7 +M]$`@Z4SK??A^0X0;K$."WQNFK+`OGF<1#:N'_NAJ@N9@&TY(61A+5="L_F[- +M[*]ZJ4UAM6X.<7XMV#X9B&GE:D5L[_]#U%=N=6`W?4N@3S:03G9^ +M1)_OLQ8B1F7;N;J>L\I'F-`:@/!T0JP930UO"6"9[$=T'+G,1*)L6A4?(QU% +MQ5.\.4$,;,HQ62^NKUFLX?I:K;B^;AF^"&`OPQZPEIJSMV,7_3\3]*T_,&]D +M"*&V8F"EGH<<<%+;(N+04K'QY+C5SCN7(!2>/2CP'5.'J<'N%,A@9F@ZA4N@ +M.)19I97G+,VL%H34PM7"SNW/E`>3?;VHO=\IDF-"<&!/$TZ$H=?0>3X80A5H +M,,'.#S!S'JV-2J6!>O;5LM&R_+[4"WJE48"!#I<0;29`TQ#\580#_E.1$Z&U +MMS_\B`FH:_3+37#C)+BQ$CSG!/W@IC3R=0J$6D9%<9?PN"M$<3]M:G7UFX"# +M3?EB3*)J+)83A3GJK5P+1NCH`I=+0;DPQEJI)[5V\B(!<>(J34LR^G+Z+!,N +MT5(I::JB,Z2MLVD92U"TSAQ??Y]KE.-+.%226S)/K2-[-1L&=G?28Q9H-.YR +MJ%(3%ZP#[^A0'7>M@*5*I13T/4S`D#SYW=?[((AT&;&^D#2)0\0G1$=0^]0* +MG5*OKU6+\,=2U=?1`*#>J-A!SY0F"`/O$7XK1B-LM5H2<04;>N@?1D5!"@:, +MY-!%E[3Q-8*F"5S3-DJT'DR=V^L#V35&_7HG#%6(4HV@JR%_*?`:1HE@LUL6 +M5+&'O?!_\3XL)JY&Y$/7]H&T1W*Z?();'B&V%KN$<$D,I^2/,Z=31E)#E59G +M@-HLW&DW(AQ;\>YT#^-+80:*_++I?P;U/SLY;U'T/+V]]MF!`.W4;/<6<8$G +M%I#HA.,I^]0\":-(-66;E36RH.3E&R&;JEE$^IFS/4\K&XVJ8U?6<)'D998% +MF$,5+PY-4BDLDQW5L5)?6R]6ZNNV)Y]\9/NPW%P3S2.&AHSY-4.CF#)";-:RLC1GK&&UC![THO<6NO,,@UF?!(0S0.E.EK#.HB2A`J$#)#.&F^ +ME&,5#D-Y6ZPHIES.:8K>Z)K@NDE4"\>1-I)7P08I??R&V8*_5AU3K9O9IT0T +M9^R;,RQV?#PGFJFX`3Z->TLA`+%4/D)UC-"/H4_-_A]^^QUT[.X&@TM"-3O? +M[RPORZ":M/_4(<5R-:3_X%_)*^HHZ&'LCS9YE'TG"]O$.:?;;!@X4F*C"*L: +M1R$R&:$\C.R]B`'CPJOOQR5X.;E]BCWIUIA]0;V:=C>]*E1+U99TBT.$>@,' +MO;;1:.APP3DJ4VW+6+:4[9D199AW85&[S7TC=IC@B?9H?!%C/Y\"5?UK/O&\($J7Q_L[3A4*==BW +MBGPNSK9/4,]WL/]J;V>G*K/C#8',3T4<*=:"K-WHR-M$,2G@K9VMAN-$7F*E;(B$IMHUK?J%D;LE&/ +M[T@[:W)39B!K4_VUM7JY"'],F*,\L&[M:^6NLK&[#[+!DH)?DT^7Q-)2H?"> +M*.N27"NM_;,WK9,E?D8R"#)4\N79F_.WKY)0'*1Q[@](^I%!@FTO41E\B)MH +M>0]^EB9NG[Q5X:Q^MR]36QB]GB/\2A!7M)#:DG(U@7CB3_R+?/-%P&X"@1\A +MVF7,G\R^6F!WH'?E]W2I@!&M=%*A44@8@9B5*>0BL;NO,'ET`GVUSY?`I/%$ +J=ML:^A7X&%Y^@0GXR]?/U\_7S]?/U\_7S]?/U\\7]/G_`>FKZ(H`,`(` +` +end --- gcc-3.4-3.4.6.orig/debian/patches/netbsd-archs-gcc.dpatch +++ gcc-3.4-3.4.6/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" + ;; --- gcc-3.4-3.4.6.orig/debian/patches/libf2c-mxunit.dpatch +++ gcc-3.4-3.4.6/debian/patches/libf2c-mxunit.dpatch @@ -0,0 +1,36 @@ +#! /bin/sh -e + +# DP: libf2c/libI77/fio.c: Set MXUNIT to 1000. + +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 + +--- libf2c/libI77/fio.h~ 2002-06-01 14:38:29.000000000 +0200 ++++ libf2c/libI77/fio.h 2005-07-06 10:15:17.579613491 +0200 +@@ -86,7 +86,7 @@ + #define errfl(f,m,s) do {return err__fl((int)f,m,s);} while(0) + + /*Table sizes*/ +-#define MXUNIT 100 ++#define MXUNIT 1000 + + extern int f__recpos; /*position in current record */ + extern int f__cursor; /* offset to move to */ --- gcc-3.4-3.4.6.orig/debian/patches/gpc-profiled.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-profiled.dpatch @@ -0,0 +1,38 @@ +#! /bin/sh -e + +# DP: Do not build the gpc runtime using -fprofile-generate/-use. + +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 + +# append the patch here and adjust the -p? flag in the patch calls. + +--- gcc/p/rts/Makefile.in~ 2004-05-16 17:27:49.000000000 +0200 ++++ gcc/p/rts/Makefile.in 2004-05-16 18:24:47.000000000 +0200 +@@ -33,6 +33,7 @@ + CC=@CC@ + PC=`echo $(CC) | $(GCC2GPC)` + CFLAGS=-O2 ++override CFLAGS := $(shell echo $(CFLAGS) | sed 's/-fprofile[a-z-]*//') + PFLAGS= + AR=@AR@ + AR_FLAGS=rc + --- gcc-3.4-3.4.6.orig/debian/patches/reporting.dpatch +++ gcc-3.4-3.4.6/debian/patches/reporting.dpatch @@ -0,0 +1,170 @@ +#! /bin/sh -e + +# DP: Add Debian URL for bug reporting isntructions. + +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/gccbug.in~ Tue Nov 14 07:21:47 2000 ++++ gcc/gccbug.in Tue Nov 14 07:24:59 2000 +@@ -24,13 +24,13 @@ + 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. +-DEFAULT_RELEASE="@gcc_version_full@" ++DEFAULT_RELEASE="@gcc_version_full@ (Debian testing/unstable)" + + # The default organization. + DEFAULT_ORGANIZATION= + +--- gcc/java/gjavah.c~ 2003-03-28 23:18:48.000000000 +0100 ++++ gcc/java/gjavah.c 2004-05-14 07:26:44.000000000 +0200 +@@ -2320,6 +2320,8 @@ + printf ("\n"); + printf ("For 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); + exit (0); + } + +--- gcc/java/jcf-dump.c~ 2003-03-28 23:18:48.000000000 +0100 ++++ gcc/java/jcf-dump.c 2004-05-14 07:27:03.000000000 +0200 +@@ -893,6 +893,8 @@ + printf ("\n"); + printf ("For 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); + exit (0); + } + +--- gcc/java/jv-scan.c~ 2003-02-03 15:06:32.000000000 +0100 ++++ gcc/java/jv-scan.c 2004-05-14 07:27:26.000000000 +0200 +@@ -116,6 +116,8 @@ + printf ("\n"); + printf ("For 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); + exit (0); + } + +--- gcc/gcov.c~ 2002-10-08 21:45:17.000000000 +0200 ++++ gcc/gcov.c 2004-05-14 07:28:07.000000000 +0200 +@@ -350,6 +350,8 @@ + fnotice (file, " -p, --preserve-paths Preserve all pathname components\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~ 2002-10-08 19:27:39.000000000 +0200 ++++ gcc/version.h 2004-05-14 07:14:38.000000000 +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 */ + +--- gcc/diagnostic.c~ 2004-05-14 07:39:39.000000000 +0200 ++++ gcc/diagnostic.c 2004-05-14 07:42:06.000000000 +0200 +@@ -66,7 +66,9 @@ + #define bug_report_request \ + "Please submit a full bug report,\n\ + with preprocessed source if appropriate.\n\ +-See %s for instructions.\n" ++See %s for instructions.\n\ ++For Debian GNU/Linux specific bug reporting instructions,\n\ ++see %s.\n" + + + /* Return a malloc'd string containing MSG formatted a la printf. The +@@ -271,7 +273,7 @@ + if (context->abort_on_error) + real_abort (); + +- fnotice (stderr, bug_report_request, bug_report_url); ++ fnotice (stderr, bug_report_request, bug_report_url, debian_bug_report_url); + exit (FATAL_EXIT_CODE); + + case DK_FATAL: +@@ -570,7 +572,7 @@ + + fnotice (stderr, + "Internal compiler error: Error reporting routines re-entered.\n"); +- fnotice (stderr, bug_report_request, bug_report_url); ++ fnotice (stderr, bug_report_request, bug_report_url, debian_bug_report_url); + exit (FATAL_EXIT_CODE); + } + +--- gcc/gcc.c~ 2004-05-16 08:14:42.000000000 +0200 ++++ gcc/gcc.c 2004-05-16 08:19:13.000000000 +0200 +@@ -2829,9 +2829,11 @@ + fatal ("\ + 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[j].prog, +- bug_report_url); ++ bug_report_url, debian_bug_report_url); + signal_count++; + ret_code = -1; + } +@@ -6250,6 +6252,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); + } +@@ -6453,6 +6457,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-3.4-3.4.6.orig/debian/patches/libffi-soversion.dpatch +++ gcc-3.4-3.4.6/debian/patches/libffi-soversion.dpatch @@ -0,0 +1,59 @@ +#! /bin/sh -e + +# DP: Install libffi with soversion 3. + +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 libffi.old/Makefile.am libffi/Makefile.am +--- libffi.old/Makefile.am 2003-10-22 01:02:59.000000000 +0200 ++++ libffi/Makefile.am 2004-02-21 10:06:49.000000000 +0100 +@@ -175,7 +175,7 @@ + + AM_CFLAGS = -Wall -g -fexceptions + +-libffi_la_LDFLAGS = -release $(VERSION) ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` + + INCLUDES = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + +diff -urN libffi.old/Makefile.in libffi/Makefile.in +--- libffi.old/Makefile.in 2003-11-24 00:52:28.000000000 +0100 ++++ libffi/Makefile.in 2004-02-21 10:06:49.000000000 +0100 +@@ -226,7 +226,7 @@ + + AM_CFLAGS = -Wall -g -fexceptions + +-libffi_la_LDFLAGS = -release $(VERSION) ++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` + + INCLUDES = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +diff -urN libffi.old/libtool-version libffi/libtool-version +--- libffi.old/libtool-version 1970-01-01 01:00:00.000000000 +0100 ++++ libffi/libtool-version 2004-02-21 10:06:49.000000000 +0100 +@@ -0,0 +1,6 @@ ++# This file is used to maintain libtool version info for libffi. See ++# the libtool manual to understand the meaning of the fields. This is ++# a separate file so that version updates don't involve re-running ++# automake. ++# CURRENT:REVISION:AGE ++3:0:0 --- gcc-3.4-3.4.6.orig/debian/patches/ignore-comp-fail.dpatch +++ gcc-3.4-3.4.6/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 ;; \ --- gcc-3.4-3.4.6.orig/debian/patches/libffi-mips.dpatch +++ gcc-3.4-3.4.6/debian/patches/libffi-mips.dpatch @@ -0,0 +1,92 @@ +#! /bin/sh -e + +# DP: libffi mips update + +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/libffi/src/mips/ffi.c.old 2004-05-12 21:41:01.000000000 +0200 ++++ src/libffi/src/mips/ffi.c 2004-05-12 21:42:52.000000000 +0200 +@@ -27,6 +27,7 @@ + #include + + #include ++#include + + #if _MIPS_SIM == _ABIN32 + #define FIX_ARGP \ +@@ -91,7 +92,7 @@ static void ffi_prep_args(char *stack, + FIX_ARGP; + } + +-#if _MIPS_SIM == _ABIO32 ++#if _MIPS_SIM == _MIPS_SIM_ABI32 + #define OFFSET 0 + #else + #define OFFSET sizeof(int) +@@ -145,7 +146,7 @@ static void ffi_prep_args(char *stack, + } + else + { +-#if _MIPS_SIM == _ABIO32 ++#if _MIPS_SIM == _MIPS_SIM_ABI32 + memcpy(argp, *p_argv, z); + #else + { +@@ -266,7 +267,7 @@ ffi_status ffi_prep_cif_machdep(ffi_cif + { + cif->flags = 0; + +-#if _MIPS_SIM == _ABIO32 ++#if _MIPS_SIM == _MIPS_SIM_ABI32 + /* Set the flags necessary for O32 processing */ + + if (cif->rtype->type != FFI_TYPE_STRUCT) +@@ -440,7 +441,7 @@ void ffi_call(ffi_cif *cif, void (*fn)() + + switch (cif->abi) + { +-#if _MIPS_SIM == _ABIO32 ++#if _MIPS_SIM == _MIPS_SIM_ABI32 + case FFI_O32: + ffi_call_O32(ffi_prep_args, &ecif, cif->bytes, + cif->flags, ecif.rvalue, fn); +--- src/libffi/src/mips/ffitarget.h.old 2004-05-12 21:39:33.000000000 +0200 ++++ src/libffi/src/mips/ffitarget.h 2004-05-12 21:40:33.000000000 +0200 +@@ -26,9 +26,7 @@ + #ifndef LIBFFI_TARGET_H + #define LIBFFI_TARGET_H + +-#ifndef LIBFFI_ASM + #include +-#endif + + #if !defined(_MIPS_SIM) + -- something is very wrong -- +@@ -36,7 +34,7 @@ + # if (_MIPS_SIM==_ABIN32 && defined(_ABIN32)) || (_MIPS_SIM==_ABI64 && defined(_ABI64)) + # define FFI_MIPS_N32 + # else +-# if _MIPS_SIM==_ABIO32 && defined(_ABIO32) ++# if _MIPS_SIM==_MIPS_SIM_ABI32 + # define FFI_MIPS_O32 + # else + -- this is an unsupported platform -- --- gcc-3.4-3.4.6.orig/debian/patches/rename-info-files.dpatch +++ gcc-3.4-3.4.6/debian/patches/rename-info-files.dpatch @@ -0,0 +1,568 @@ +#! /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/f/ChangeLog: + * Make-lang.in: Allow transformations on info file names. + Pass macros of transformated info file defined in MAKEINFODEFS + names to makeinfo. + * g77.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. + + +diff -ur gcc.old/Makefile.in gcc/Makefile.in +--- gcc.old/Makefile.in 2004-02-06 08:03:12.000000000 +0100 ++++ gcc/Makefile.in 2004-02-21 13:28:52.000000000 +0100 +@@ -2615,8 +2615,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_G77_NAME = $(shell echo g77|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 'fng77 $(INFO_G77_NAME)' -D 'fngcj $(INFO_GCJ_NAME)' + + info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo + +@@ -2645,21 +2661,40 @@ + # patterns. To use them, put each of the specific target with with their + # 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 $(docdir) \ + -I $(docdir)/include -o $@ $<; \ + fi + +-# Duplicate entry to handle renaming of gccinstall.info +-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) ++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) + if [ x$(BUILD_INFO) = xinfo ]; then \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(docdir) \ ++ -I $(docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(docdir) \ ++ -I $(docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(docdir) \ ++ -I $(docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(docdir) \ ++ -I $(docdir)/include -o $@ $<; \ ++ fi ++ ++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(docdir) \ + -I $(docdir)/include -o $@ $<; \ + fi + +@@ -2935,11 +2970,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 + + $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs + rm -f $@ +@@ -3107,8 +3142,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. +diff -ur gcc.old/doc/cpp.texi gcc/doc/cpp.texi +--- gcc.old/doc/cpp.texi 2004-01-18 23:43:09.000000000 +0100 ++++ gcc/doc/cpp.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -54,7 +54,7 @@ + @ifinfo + @dircategory Programming + @direntry +-* Cpp: (cpp). The GNU C preprocessor. ++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. + @end direntry + @end ifinfo + +diff -ur gcc.old/doc/cppinternals.texi gcc/doc/cppinternals.texi +--- gcc.old/doc/cppinternals.texi 2002-03-02 00:38:51.000000000 +0100 ++++ gcc/doc/cppinternals.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -5,7 +5,7 @@ + @ifinfo + @dircategory Programming + @direntry +-* Cpplib: (cppinternals). Cpplib internals. ++* @value{fncppint}: (@value{fncppint}). Cpplib internals. + @end direntry + @end ifinfo + +diff -ur gcc.old/doc/extend.texi gcc/doc/extend.texi +--- gcc.old/doc/extend.texi 2004-01-22 00:41:23.000000000 +0100 ++++ gcc/doc/extend.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -7671,7 +7671,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 + * Min and Max:: C++ Minimum and maximum operators. +diff -ur gcc.old/doc/gcc.texi gcc/doc/gcc.texi +--- gcc.old/doc/gcc.texi 2004-01-02 12:27:45.000000000 +0100 ++++ gcc/doc/gcc.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -79,7 +79,7 @@ + @ifnottex + @dircategory Programming + @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 +@@ -131,7 +131,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. +diff -ur gcc.old/doc/gccint.texi gcc/doc/gccint.texi +--- gcc.old/doc/gccint.texi 2004-01-02 12:27:45.000000000 +0100 ++++ gcc/doc/gccint.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -65,7 +65,7 @@ + @ifnottex + @dircategory Programming + @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 +@@ -114,7 +114,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 +diff -ur gcc.old/doc/invoke.texi gcc/doc/invoke.texi +--- gcc.old/doc/invoke.texi 2004-02-18 09:17:23.000000000 +0100 ++++ gcc/doc/invoke.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -763,7 +763,7 @@ + Fortran source code which must be preprocessed with a RATFOR + preprocessor (not included with GCC)@. + +-@xref{Overall Options,,Options Controlling the Kind of Output, g77, ++@xref{Overall Options,,Options Controlling the Kind of Output, @value{fng77}, + Using and Porting GNU Fortran}, for more details of the handling of + Fortran input files. + +@@ -5045,7 +5045,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 +@@ -5053,7 +5053,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 +@@ -11211,7 +11211,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 +@@ -11363,7 +11363,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 +diff -ur gcc.old/doc/libgcc.texi gcc/doc/libgcc.texi +--- gcc.old/doc/libgcc.texi 2004-01-18 23:43:10.000000000 +0100 ++++ gcc/doc/libgcc.texi 2004-02-21 13:28:52.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 +diff -ur gcc.old/doc/makefile.texi gcc/doc/makefile.texi +--- gcc.old/doc/makefile.texi 2004-02-08 09:09:36.000000000 +0100 ++++ gcc/doc/makefile.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -121,7 +121,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}. + This is actually a target in the top-level directory, which then + recurses into the @file{gcc} subdirectory multiple times. + +diff -ur gcc.old/doc/passes.texi gcc/doc/passes.texi +--- gcc.old/doc/passes.texi 2003-11-24 00:52:07.000000000 +0100 ++++ gcc/doc/passes.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -45,7 +45,7 @@ + definition's compilation is entirely freed, unless it is an inline + function, or was deferred for some reason (this can occur in + templates, for example). +-(@pxref{Inline,,An Inline Function is As Fast As a Macro,gcc,Using the ++(@pxref{Inline,,An Inline Function is As Fast As a Macro,@value{fngcc},Using the + GNU Compiler Collection (GCC)}). + + Here is a list of all the passes of the compiler and their source files. +@@ -74,7 +74,7 @@ + C preprocessing, for language front ends, that want or require it, is + performed by cpplib, which is covered in separate documentation. In + particular, the internals are covered in @xref{Top, ,Cpplib internals, +-cppinternals, Cpplib Internals}. ++@value{fncppinternals}, Cpplib Internals}. + + The source files to parse C are found in the toplevel directory, and + by convention are named @file{c-*}. Some of these are also used by +diff -ur gcc.old/doc/standards.texi gcc/doc/standards.texi +--- gcc.old/doc/standards.texi 2004-01-18 23:43:10.000000000 +0100 ++++ gcc/doc/standards.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -185,8 +185,8 @@ + GNAT Reference Manual}, for information on standard + conformance and compatibility of the Ada compiler. + +-@xref{Language,,The GNU Fortran Language, g77, Using and Porting GNU ++@xref{Language,,The GNU Fortran Language, @value{fng77}, Using and Porting GNU + Fortran}, for details of the Fortran language supported by GCC@. + +-@xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj}, ++@xref{Compatibility,,Compatibility with the Java Platform, @value{fngcj}, GNU gcj}, + for details of compatibility between @command{gcj} and the Java Platform. +diff -ur gcc.old/doc/trouble.texi gcc/doc/trouble.texi +--- gcc.old/doc/trouble.texi 2004-02-04 22:12:40.000000000 +0100 ++++ gcc/doc/trouble.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -88,7 +88,7 @@ + as @code{REAL_VALUE_TYPE}. But doing so is a substantial amount of + work for each target machine. + @xref{Cross-compilation,,Cross Compilation and Floating Point, +-gccint, GNU Compiler Collection (GCC) Internals}. ++@value{fngccint}, GNU Compiler Collection (GCC) Internals}. + + @item + At present, the program @file{mips-tfile} which adds debug +diff -ur gcc.old/f/Make-lang.in gcc/f/Make-lang.in +--- gcc.old/f/Make-lang.in 2004-02-20 11:53:17.000000000 +0100 ++++ gcc/f/Make-lang.in 2004-02-21 13:28:52.000000000 +0100 +@@ -153,7 +153,8 @@ + cd $(srcdir)/f; etags -o TAGS.sub *.c *.h; \ + etags --include TAGS.sub --include ../TAGS.sub + +-f77.info: doc/g77.info ++INFO_G77_NAME = $(shell echo g77|sed '$(program_transform_name)') ++f77.info: doc/$(INFO_G77_NAME).info + dvi:: doc/g77.dvi + f77.man: doc/g77.1 + +@@ -166,10 +167,10 @@ + $(docdir)/include/gpl.texi $(docdir)/include/funding.texi \ + $(docdir)/include/gcc-common.texi $(srcdir)/f/intdoc.texi + +-doc/g77.info: $(TEXI_G77_FILES) ++doc/$(INFO_G77_NAME).info: $(TEXI_G77_FILES) + if test "x$(BUILD_INFO)" = xinfo; then \ + rm -f $(@)*; \ +- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -I$(srcdir)/f \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I$(docdir)/include -I$(srcdir)/f \ + -o$@ $<; \ + else true; fi + +@@ -264,7 +265,7 @@ + echo ''; \ + else true; fi + +-install-info:: $(DESTDIR)$(infodir)/g77.info ++install-info:: $(DESTDIR)$(infodir)/$(INFO_G77_NAME).info + + f77.install-man: installdirs $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext) + +@@ -280,7 +281,7 @@ + else : ; fi + rm -rf $(DESTDIR)$(bindir)/$(G77_INSTALL_NAME)$(exeext); \ + rm -rf $(DESTDIR)$(man1dir)/$(G77_INSTALL_NAME)$(man1ext); \ +- rm -rf $(DESTDIR)$(infodir)/g77.info* ++ rm -f $(DESTDIR)$(infodir)/$(INFO_G77_NAME).info* + # + # Clean hooks: + # A lot of the ancillary files are deleted by the main makefile. +diff -ur gcc.old/java/Make-lang.in gcc/java/Make-lang.in +--- gcc.old/java/Make-lang.in 2004-02-06 08:04:13.000000000 +0100 ++++ gcc/java/Make-lang.in 2004-02-21 13:28:52.000000000 +0100 +@@ -158,12 +158,23 @@ + --regex='/DEFTREECODE [(]\([A-Z_]+\)/\1/' java-tree.def; \ + etags --include TAGS.sub --include ../TAGS.sub + ++TEXI_GCJ_FILES = java/gcj.texi \ ++ $(docdir)/include/gpl.texi $(docdir)/include/funding.texi \ ++ $(docdir)/include/fdl.texi $(docdir)/include/gcc-common.texi ++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)') + +-java.info: doc/gcj.info ++java.info: doc/$(INFO_GCJ_NAME).info + +-java.srcinfo: doc/gcj.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$(docdir)/include -I$(srcdir)/f -o$@ $<; \ ++ else true; fi ++ + dvi:: doc/gcj.dvi + JAVA_MANFILES = doc/gcj.1 doc/gcjh.1 doc/jv-scan.1 doc/jcf-dump.1 doc/gij.1 \ + doc/jv-convert.1 doc/rmic.1 doc/rmiregistry.1 +@@ -224,8 +235,9 @@ + -rm -rf $(DESTDIR)$(man1dir)/jcf-dump$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/gij$(man1ext) + -rm -rf $(DESTDIR)$(man1dir)/jv-convert$(man1ext) ++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info* + +-install-info:: $(DESTDIR)$(infodir)/gcj.info ++install-info:: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info + + # + # Clean hooks: +diff -ur gcc.old/java/gcj.texi gcc/java/gcj.texi +--- gcc.old/java/gcj.texi 2003-08-29 23:25:30.000000000 +0200 ++++ gcc/java/gcj.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -52,7 +52,7 @@ + @format + @dircategory Programming + @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 +@@ -151,7 +151,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 +diff -ur gcc.old/treelang/Make-lang.in gcc/treelang/Make-lang.in +--- gcc.old/treelang/Make-lang.in 2004-01-31 07:53:34.000000000 +0100 ++++ gcc/treelang/Make-lang.in 2004-02-21 13:28:52.000000000 +0100 +@@ -146,17 +146,21 @@ + 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 + + dvi:: doc/treelang.dvi + +-doc/treelang.info: treelang/treelang.texi $(docdir)/include/gcc-common.texi \ ++doc/$(INFO_TREELANG_NAME).info: treelang/treelang.texi $(docdir)/include/gcc-common.texi \ + $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \ + $(docdir)/include/funding.texi +- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(docdir)/include -o $@ $< ++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) \ ++ $(TREELANG_MAKEINFODEFS) -I$(docdir)/include -o $@ $< + + doc/treelang.dvi: treelang/treelang.texi $(docdir)/include/gcc-common.texi \ + $(docdir)/include/gpl.texi $(docdir)/include/fdl.texi \ +@@ -189,7 +193,7 @@ + $(STAMP) treelang.install.common.done + + # We might not be able to build the info files +-install-info:: $(DESTDIR)$(infodir)/treelang.info ++install-info:: $(DESTDIR)$(infodir)/$(INFO_TREELANG_NAME).info + + treelang.install-man: + +@@ -202,6 +206,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 + + # +diff -ur gcc.old/treelang/treelang.texi gcc/treelang/treelang.texi +--- gcc.old/treelang/treelang.texi 2003-12-06 00:15:02.000000000 +0100 ++++ gcc/treelang/treelang.texi 2004-02-21 13:28:52.000000000 +0100 +@@ -106,7 +106,7 @@ + @ifnottex + @dircategory Programming + @direntry +-* treelang: (treelang). The GNU Treelang compiler. ++* @value{fntreelang}: (@value{fntreelang}). The GNU Treelang compiler. + @end direntry + @ifset INTERNALS + @ifset USING +@@ -278,7 +278,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 +@@ -885,7 +885,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}). +diff -ur gcc.old/f/g77.texi gcc/f/g77.texi +--- gcc.old/f/g77.texi 2003-05-16 17:08:37.000000000 +0200 ++++ gcc/f/g77.texi 2004-02-28 16:04:22.000000000 +0100 +@@ -88,7 +88,7 @@ + @ifinfo + @dircategory Programming + @direntry +-* g77: (g77). The GNU Fortran compiler. ++* * @value{fng77}: (@value{fng77}). The GNU Fortran compiler. + @end direntry + @ifset INTERNALS + @ifset USING --- gcc-3.4-3.4.6.orig/debian/patches/libjava-build.dpatch +++ gcc-3.4-3.4.6/debian/patches/libjava-build.dpatch @@ -0,0 +1,69 @@ +#! /bin/sh -e + +# DP: work around libtool to fix mips libgcj build, backport from HEAD + +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 + #rm ${dir}libjava/configure + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +2005-02-15 Richard Henderson + + * Makefile.am (libgcj_la_SOURCES): Move all sources ... + (libgcj0_convenience_la_SOURCES): ... here. + (libgcj_la_LIBADD): Add libgcj0_convenience.la. + (libgcj_la_DEPENDENCIES): Include libgcj_la_LIBADD. + * Makefile.in: Regenerate. + + +--- libjava/Makefile.am~ 2005-02-08 00:52:28.282758095 +0100 ++++ libjava/Makefile.am 2005-02-25 01:21:18.726320374 +0100 +@@ -150,18 +150,26 @@ + $(built_java_source_files:.java=.lo) + x_javao_files = $(x_java_source_files:.java=.lo) + +-libgcj_la_SOURCES = prims.cc jni.cc exception.cc \ ++# Work around libtool wanting to do piece-wise linking with -r. Using a ++# convenience library suddenly invokes the --whole-archive path instead. ++# This allows the build to succeed for targets that allocate multiple got ++# subsections in the linker, such as Alpha and MIPS. ++libgcj0_convenience_la_SOURCES = prims.cc jni.cc exception.cc \ + resolve.cc defineclass.cc interpret.cc verify.cc \ + $(nat_source_files) + EXTRA_libgcj_la_SOURCES = boehm.cc nogc.cc posix-threads.cc no-threads.cc \ + win32-threads.cc posix.cc win32.cc $(c_source_files) \ + $(extra_cc_source_files) $(java_source_files) $(built_java_source_files) +-libgcj_la_DEPENDENCIES = libgcj-@gcc_version@.jar $(javao_files) \ +- $(c_files) $(extra_cc_files) $(GCOBJS) $(THREADOBJS) \ +- $(PLATFORMOBJS) $(LIBLTDL) $(LIBFFI) $(ZLIBS) $(GCLIBS) ++noinst_LTLIBRARIES = libgcj0_convenience.la ++ ++libgcj_la_SOURCES = + + libgcj_la_LIBADD = $(javao_files) $(c_files) $(extra_cc_files) $(GCOBJS) \ ++ libgcj0_convenience.la \ + $(THREADOBJS) $(PLATFORMOBJS) ++libgcj_la_DEPENDENCIES = libgcj-@gcc_version@.jar \ ++ java/lang/fdlibm.h java/lang/ieeefp.h java/lang/mprec.h \ ++ $(libgcj_la_LIBADD) + # Include THREADLIBS here to ensure that the correct version of + # certain linuxthread functions get linked: + libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \ --- gcc-3.4-3.4.6.orig/debian/patches/template.dpatch +++ gcc-3.4-3.4.6/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. + --- gcc-3.4-3.4.6.orig/debian/patches/s390-biarch.dpatch +++ gcc-3.4-3.4.6/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 -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.gcc.bak 2003-02-25 09:24:14.000000000 +0000 ++++ src/gcc/config.gcc 2003-02-25 09:23:42.000000000 +0000 +@@ -2199,7 +2199,7 @@ + ;; + s390-*-linux*) + tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" +- tmake_file="t-slibgcc-elf-ver t-linux s390/t-crtstuff" ++ tmake_file="t-slibgcc-elf-ver t-linux s390/t-crtstuff s390/t-linux64" + ;; + s390x-*-linux*) + tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h" --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-baseline.dpatch +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/patches/ada-link-lib.dpatch +++ gcc-3.4-3.4.6/debian/patches/ada-link-lib.dpatch @@ -0,0 +1,64 @@ +#! /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. + +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/ada/Makefile.in~ Fri Apr 5 19:03:14 2002 ++++ src/gcc/ada/Makefile.in Sun Feb 15 16:30:14 2002 +@@ -133,7 +133,7 @@ + objext = .o + exeext = + arext = .a +-soext = .so ++soext = .so.1 + shext = + + HOST_CC=$(CC) +@@ -750,6 +750,11 @@ + LIBRARY_VERSION := $(strip $(shell grep Library_Version $(fsrcpfx)gnatvsn.ads | sed -e 's/.*GNAT Lib v\(.*\)[ "].*/\1/')) + endif + ++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) ++ GNATLIB_SHARED = gnatlib-shared-dual ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + ifeq ($(strip $(filter-out hppa% hp hpux10%,$(targ))),) + LIBGNAT_TARGET_PAIRS = \ + a-excpol.adb<4wexcpol.adb \ +--- src/gcc/ada/link.c~ 2004-03-26 00:14:55.000000000 +0100 ++++ src/gcc/ada/link.c 2004-03-26 00:17:13.000000000 +0100 +@@ -165,8 +165,8 @@ + + #elif defined (linux) + const char *object_file_option = ""; +-const char *run_path_option = "-Wl,-rpath,"; +-char shared_libgnat_default = STATIC; ++const char *run_path_option = ""; ++char shared_libgnat_default = SHARED; + int link_max = 8192; + unsigned char objlist_file_supported = 1; + unsigned char using_gnu_linker = 1; --- gcc-3.4-3.4.6.orig/debian/patches/disable-gnat-testsuite.dpatch +++ gcc-3.4-3.4.6/debian/patches/disable-gnat-testsuite.dpatch @@ -0,0 +1,39 @@ +#! /bin/sh -e + +# DP: disable the gnat testsuite. on ia64 the kernel "hangs" for unaligned +# DP: memory accesses. + +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/ada/Make-lang.in~ 2004-09-01 22:07:42.000000000 +0200 ++++ gcc/ada/Make-lang.in 2004-10-12 05:42:39.000000000 +0200 +@@ -915,9 +915,7 @@ + ACATSDIR = $(TESTSUITEDIR)/ada/acats + + check-gnat: +- test -d $(ACATSDIR) || mkdir -p $(ACATSDIR) +- testdir=`cd ${srcdir}/${ACATSDIR}; ${PWD_COMMAND}`; \ +- export testdir; cd $(ACATSDIR); $${testdir}/run_acats $(CHAPTERS) ++ echo "gnat testsuite disabled" + + .PHONY: check-gnat + --- gcc-3.4-3.4.6.orig/debian/patches/gpc-range-check.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-range-check.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: Fix spurious range-check failure in the gpc runtime. + +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/rts/move.pas.orig 2005-05-06 19:24:26.188617784 +0000 ++++ gcc/p/rts/move.pas 2005-05-06 18:43:23.418015824 +0000 +@@ -58,6 +58,7 @@ + PWords = ^TWords; + PConstWords = ^const TWords; + ++{$R-} + function Merge (w1, w2: TWord; Shift1, Shift2: Integer): TWord; attribute (inline); + begin + if BytesBigEndian then +@@ -66,7 +67,7 @@ + Merge := (w1 shr Shift1) or (w2 shl Shift2) + end; + +-{$pointer-arithmetic,R-} ++{$pointer-arithmetic} + + procedure MoveLeft (const Source; var Dest; Count: SizeType); + var + --- gcc-3.4-3.4.6.orig/debian/patches/autoreconf.dpatch +++ gcc-3.4-3.4.6/debian/patches/autoreconf.dpatch @@ -0,0 +1,40 @@ +#! /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) + patch $pdir -f --no-backup-if-mismatch -p0 < $0 + for i in libf2c libjava/libltdl libobjc libstdc++-v3 zlib; do + (cd ${dir}/${i} ; autoreconf --force) + done + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 + echo unable to unpatch autoreconf. + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- libtool.m4~ 2004-09-09 19:06:00.000000000 +0900 ++++ libtool.m4 2004-09-09 19:10:12.000000000 +0900 +@@ -680,7 +680,7 @@ + # This must be Linux ELF. + linux-gnu*) + case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) ++ alpha* | m32r* | mips* | hppa* | i*86 | ia64* | powerpc* | sh* | sparc* ) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM --- gcc-3.4-3.4.6.orig/debian/patches/gccbug-posix.dpatch +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/patches/netbsd-all-gcc.dpatch +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/patches/boehm-gc-nocheck.dpatch +++ gcc-3.4-3.4.6/debian/patches/boehm-gc-nocheck.dpatch @@ -0,0 +1,37 @@ +#! /bin/sh -e + +# DP: Disable the boehm-gc testsuite. Hangs forever on this architecture + +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 --- gcc-3.4-3.4.6.orig/debian/patches/configure-deplibs_check_method.dpatch +++ gcc-3.4-3.4.6/debian/patches/configure-deplibs_check_method.dpatch @@ -0,0 +1,145 @@ +#! /bin/sh -e + +# DP: In all configure scripts for libraries, generated with autoconf2.13, use +# DP: deplibs_check_method=pass_all unconditionally for all linux architectures. + +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 + +--- ./boehm-gc/configure~ 2005-05-11 01:22:34.000000000 +0200 ++++ ./boehm-gc/configure 2005-05-11 16:09:05.563271432 +0200 +@@ -1937,13 +1937,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./libf2c/configure~ 2004-05-18 11:08:39.000000000 +0200 ++++ ./libf2c/configure 2005-05-11 16:11:20.281791104 +0200 +@@ -1607,13 +1607,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./libffi/configure~ 2004-05-18 11:08:39.000000000 +0200 ++++ ./libffi/configure 2005-05-11 16:14:41.595186816 +0200 +@@ -1322,13 +1322,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./libjava/libltdl/configure~ 2005-05-11 01:22:34.000000000 +0200 ++++ ./libjava/libltdl/configure 2005-05-11 16:16:17.684579008 +0200 +@@ -3619,13 +3619,7 @@ + + # This must be Linux ELF. + linux*) +- case $host_cpu in +- alpha* | hppa* | i*86 | ia64* | m68* | mips | mipsel | powerpc* | sparc* | s390* | sh*) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./libjava/configure~ 2005-05-11 01:22:34.000000000 +0200 ++++ ./libjava/configure 2005-05-11 16:15:22.253005888 +0200 +@@ -2033,13 +2033,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./libobjc/configure~ 2004-05-18 11:08:42.000000000 +0200 ++++ ./libobjc/configure 2005-05-11 16:16:59.467227080 +0200 +@@ -1612,13 +1612,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +--- ./zlib/configure~ 2004-05-18 11:09:14.000000000 +0200 ++++ ./zlib/configure 2005-05-11 16:17:57.642383112 +0200 +@@ -1579,13 +1579,7 @@ + + # This must be Linux ELF. + linux-gnu*) +- case $host_cpu in +- alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) +- lt_cv_deplibs_check_method=pass_all ;; +- *) +- # glibc up to 2.1.1 does not perform some relocations on ARM +- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; +- esac ++ lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + --- gcc-3.4-3.4.6.orig/debian/patches/libstdc++-disable-run-check.dpatch +++ gcc-3.4-3.4.6/debian/patches/libstdc++-disable-run-check.dpatch @@ -0,0 +1,48 @@ +#! /bin/sh -e + +# DP: don't bogusly check if the ppc64 binaries also work, which did break on ppc32. + +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.orig 2005-05-26 21:03:35.000000000 +0200 ++++ libstdc++-v3/configure 2005-05-26 21:04:38.000000000 +0200 +@@ -2485,7 +2485,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. ++# Check disabled as it didn't catch building ppc64 biarch on ppc32. +-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 +--- libiberty/configure~ 2003-10-01 19:11:29.000000000 +0200 ++++ libiberty/configure 2005-11-28 21:43:46.157800992 +0100 +@@ -2145,7 +2145,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 --- gcc-3.4-3.4.6.orig/debian/patches/biarch-include.dpatch +++ gcc-3.4-3.4.6/debian/patches/biarch-include.dpatch @@ -0,0 +1,217 @@ +#! /bin/sh -e + +# DP: biarch-include.dpatch +# DP: +# DP: Adds biarch include directories +# DP: /usr/include/c++//-linux-gnu +# 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 + +--- gcc/cppdefault.h.orig 2005-08-20 16:47:56.400240680 +0000 ++++ gcc/cppdefault.h 2005-08-20 16:49:22.777109400 +0000 +@@ -43,6 +43,7 @@ + C++. */ + const char add_sysroot; /* FNAME should be prefixed by + cpp_SYSROOT. */ ++ const char biarch; /* 32/64 bit biarch include */ + }; + + extern const struct default_include cpp_include_defaults[]; +--- gcc/c-incpath.c.orig 2005-08-20 16:47:56.401240528 +0000 ++++ gcc/c-incpath.c 2005-08-20 16:49:22.877094200 +0000 +@@ -137,6 +137,13 @@ + now. */ + if (sysroot && p->add_sysroot) + continue; ++ if (p->biarch) ++ { ++ if (p->biarch == 64 && !(target_flags & MASK_64BIT)) ++ continue; ++ if (p->biarch == 32 && (target_flags & MASK_64BIT)) ++ continue; ++ } + if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len)) + { + char *str = concat (iprefix, p->fname + len, NULL); +@@ -148,6 +155,14 @@ + + for (p = cpp_include_defaults; p->fname; p++) + { ++ if (p->biarch) ++ { ++ if (p->biarch == 64 && !(target_flags & MASK_64BIT)) ++ continue; ++ if (p->biarch == 32 && (target_flags & MASK_64BIT)) ++ continue; ++ } ++ + if (!p->cplusplus || cxx_stdinc) + { + char *str; +--- gcc/cppdefault.c.orig 2005-08-20 16:47:56.454232472 +0000 ++++ gcc/cppdefault.c 2005-08-20 16:52:11.278493296 +0000 +@@ -29,6 +29,22 @@ + #define STANDARD_INCLUDE_DIR "/usr/include" + #endif + ++#ifndef STANDARD32_INCLUDE_DIR ++#define STANDARD32_INCLUDE_DIR STANDARD_INCLUDE_DIR "/" TARGET32_MACHINE ++#endif ++ ++#ifndef LOCAL32_INCLUDE_DIR ++#define LOCAL32_INCLUDE_DIR LOCAL_INCLUDE_DIR "/" TARGET32_MACHINE ++#endif ++ ++#ifndef STANDARD64_INCLUDE_DIR ++#define STANDARD64_INCLUDE_DIR STANDARD_INCLUDE_DIR "/" TARGET64_MACHINE ++#endif ++ ++#ifndef LOCAL64_INCLUDE_DIR ++#define LOCAL64_INCLUDE_DIR LOCAL_INCLUDE_DIR "/" TARGET64_MACHINE ++#endif ++ + #ifndef STANDARD_INCLUDE_COMPONENT + #define STANDARD_INCLUDE_COMPONENT 0 + #endif +@@ -37,6 +53,10 @@ + # undef LOCAL_INCLUDE_DIR + # undef SYSTEM_INCLUDE_DIR + # undef STANDARD_INCLUDE_DIR ++# undef STANDARD32_INCLUDE_DIR ++# undef LOCAL32_INCLUDE_DIR ++# undef STANDARD64_INCLUDE_DIR ++# undef LOCAL64_INCLUDE_DIR + #else + # undef CROSS_INCLUDE_DIR + #endif +@@ -52,12 +72,21 @@ + #endif + #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR + /* Pick up GNU C++ target-dependent include files. */ +- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0 }, ++ { GPLUSPLUS_INCLUDE_DIR "/" TARGET32_MACHINE, "G++", 1, 1, 0, 32 }, ++ { GPLUSPLUS_INCLUDE_DIR "/" TARGET64_MACHINE, "G++", 1, 1, 0, 64 }, + #endif + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR + /* Pick up GNU C++ backward and deprecated include files. */ + { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 }, + #endif ++#ifdef LOCAL32_INCLUDE_DIR ++ /* /usr/local/include/$target_alias comes before the fixincluded header files. */ ++ { LOCAL32_INCLUDE_DIR, 0, 0, 1, 1, 32 }, ++#endif ++#ifdef LOCAL64_INCLUDE_DIR ++ /* /usr/local/include/$target_alias comes before the fixincluded header files. */ ++ { LOCAL64_INCLUDE_DIR, 0, 0, 1, 1, 64 }, ++#endif + #ifdef LOCAL_INCLUDE_DIR + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1 }, +@@ -73,7 +102,7 @@ + /* One place the target system's headers might be. */ + { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0 }, + #endif +-#ifdef TOOL_INCLUDE_DIR ++#if defined(TOOL_INCLUDE_DIR) && !defined(STANDARD32_INCLUDE_DIR) && !defined(STANDARD64_INCLUDE_DIR) + /* Another place the target system's headers might be. */ + { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0 }, + #endif +@@ -81,6 +110,14 @@ + /* Some systems have an extra dir of include files. */ + { SYSTEM_INCLUDE_DIR, 0, 0, 0, 1 }, + #endif ++#ifdef STANDARD32_INCLUDE_DIR ++ /* /usr/include/$target_alias comes before the fixincluded header files. */ ++ { STANDARD32_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 1, 1, 32 }, ++#endif ++#ifdef STANDARD64_INCLUDE_DIR ++ /* /usr/include/$target_alias comes before the fixincluded header files. */ ++ { STANDARD64_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 1, 1, 64 }, ++#endif + #ifdef STANDARD_INCLUDE_DIR + /* /usr/include comes dead last. */ + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1 }, +--- gcc/Makefile.in.orig 2005-08-20 16:47:56.559216512 +0000 ++++ gcc/Makefile.in 2005-08-20 16:49:23.040069424 +0000 +@@ -2353,6 +2353,13 @@ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + ++ifneq (,$(TARGET32_MACHINE)) ++ PREPROCESSOR_DEFINES += -DTARGET32_MACHINE=\"$(strip $(TARGET32_MACHINE))\" ++endif ++ifneq (,$(TARGET64_MACHINE)) ++ PREPROCESSOR_DEFINES += -DTARGET64_MACHINE=\"$(strip $(TARGET64_MACHINE))\" ++endif ++ + LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \ + cpphash.o cpperror.o cppinit.o cppcharset.o \ + hashtable.o line-map.o mkdeps.o cpppch.o +--- libstdc++-v3/include/Makefile.am.orig 2004-09-27 19:26:45.000000000 +0200 ++++ libstdc++-v3/include/Makefile.am 2005-11-16 20:29:35.334986776 +0100 +@@ -335,6 +335,7 @@ + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits ++host_installdir = ./${host_alias}/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -601,10 +602,10 @@ + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir} + for file in ${debug_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done +- $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} ++ $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_installdir} + for file in ${host_headers} ${host_headers_extra} \ + ${thread_host_headers}; do \ +- $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done ++ $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_installddir}; done + + install-pch: + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pch_output_builddir} +--- libstdc++-v3/include/Makefile.in.orig 2004-09-27 19:26:45.000000000 +0200 ++++ libstdc++-v3/include/Makefile.in 2005-11-16 20:29:35.335986624 +0100 +@@ -534,6 +534,7 @@ + + host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) + host_builddir = ./${host_alias}/bits ++host_installdir = ./${host_alias}/bits + host_headers = \ + ${host_srcdir}/ctype_base.h \ + ${host_srcdir}/ctype_inline.h \ +@@ -953,10 +954,10 @@ + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir} + for file in ${debug_headers}; do \ + $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done +- $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} ++ $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_installdir} + for file in ${host_headers} ${host_headers_extra} \ + ${thread_host_headers}; do \ +- $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done ++ $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_installdir}; done + + install-pch: + $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pch_output_builddir} --- gcc-3.4-3.4.6.orig/debian/patches/gcc-version.dpatch +++ gcc-3.4-3.4.6/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 '/version_string/s/"\([^"]*\)"/"\1 ('"$dist$pkgversion"')"/' \ + $dir/version.c > $dir/version.c.new \ + && mv -f $dir/version.c.new $dir/version.c + ;; + -unpatch) + sed -e "s/ *($dist.*)//g" -e "s/$dist *//" \ + $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 --- gcc-3.4-3.4.6.orig/debian/patches/hppa-libffi.dpatch +++ gcc-3.4-3.4.6/debian/patches/hppa-libffi.dpatch @@ -0,0 +1,1132 @@ +#! /bin/sh -e + +# DP: libffi support for 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 + cd ${dir}libffi && 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 + +2004-03-13 Matthias Klose + + * Makefile.am: Update + * Makefile.in: Regenerate. + * src/pa/ffi.h.in: Remove. + * src/pa/ffitarget.h: New file. + +2004-02-10 Randolph Chung + + * Makefile.am: Add PA support. + * Makefile.in: Regenerate. + * include/Makefile.in: Regenerate. + * configure.in: Add PA target. + * configure: Regenerate. + * src/pa/ffi.c: New file. + * src/pa/ffi.h.in: Add PA support. + * src/pa/linux.S: New file. + * prep_cif.c: Add PA support. + +diff -urN libffi.old/Makefile.am libffi/Makefile.am +--- libffi.old/Makefile.am 2004-03-20 19:32:43.000000000 +0100 ++++ libffi/Makefile.am 2004-03-20 19:38:44.000000000 +0100 +@@ -10,6 +10,7 @@ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ ++ src/pa/ffi.c src/pa/linux.S src/pa/ffitarget.h \ + src/powerpc/ffi.c src/powerpc/sysv.S \ + src/powerpc/linux64.S src/powerpc/linux64_closure.S \ + src/powerpc/ppc_closure.S src/powerpc/asm.h \ +@@ -95,6 +96,7 @@ + TARGET_SRC_ALPHA = src/alpha/ffi.c src/alpha/osf.S + TARGET_SRC_IA64 = src/ia64/ffi.c src/ia64/unix.S + TARGET_SRC_M68K = src/m68k/ffi.c src/m68k/sysv.S ++TARGET_SRC_PA = src/pa/ffi.c src/pa/linux.S + TARGET_SRC_POWERPC = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S + TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S + TARGET_SRC_POWERPC_DARWIN = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S +@@ -172,6 +174,10 @@ + libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SH64) + libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SH64) + endif ++if PA ++libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_PA) ++libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_PA) ++endif + + AM_CFLAGS = -Wall -g -fexceptions + +diff -urN libffi.old/Makefile.in libffi/Makefile.in +--- libffi.old/Makefile.in 2003-11-24 00:52:28.000000000 +0100 ++++ libffi/Makefile.in 2004-03-20 19:47:00.000000000 +0100 +@@ -101,6 +101,7 @@ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ ++ src/pa/ffi.c src/pa/linux.S src/pa/ffitarget.h \ + src/powerpc/ffi.c src/powerpc/sysv.S \ + src/powerpc/linux64.S src/powerpc/linux64_closure.S \ + src/powerpc/ppc_closure.S src/powerpc/asm.h \ +@@ -179,6 +180,7 @@ + TARGET_SRC_ALPHA = src/alpha/ffi.c src/alpha/osf.S + TARGET_SRC_IA64 = src/ia64/ffi.c src/ia64/unix.S + TARGET_SRC_M68K = src/m68k/ffi.c src/m68k/sysv.S ++TARGET_SRC_PA = src/pa/ffi.c src/pa/linux.S + TARGET_SRC_POWERPC = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S src/powerpc/linux64.S src/powerpc/linux64_closure.S + TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S + TARGET_SRC_POWERPC_DARWIN = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S +@@ -199,6 +201,7 @@ + @ALPHA_TRUE@libffi_la_SOURCES = @ALPHA_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_ALPHA) + @IA64_TRUE@libffi_la_SOURCES = @IA64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_IA64) + @M68K_TRUE@libffi_la_SOURCES = @M68K_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_M68K) ++@PA_TRUE@libffi_la_SOURCES = @PA_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_PA) + @POWERPC_TRUE@libffi_la_SOURCES = @POWERPC_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC) + @POWERPC_AIX_TRUE@libffi_la_SOURCES = @POWERPC_AIX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX) + @POWERPC_DARWIN_TRUE@libffi_la_SOURCES = @POWERPC_DARWIN_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN) +@@ -215,6 +218,7 @@ + @ALPHA_TRUE@libffi_convenience_la_SOURCES = @ALPHA_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_ALPHA) + @IA64_TRUE@libffi_convenience_la_SOURCES = @IA64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_IA64) + @M68K_TRUE@libffi_convenience_la_SOURCES = @M68K_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_M68K) ++@PA_TRUE@libffi_convenience_la_SOURCES = @PA_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_PA) + @POWERPC_TRUE@libffi_convenience_la_SOURCES = @POWERPC_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC) + @POWERPC_AIX_TRUE@libffi_convenience_la_SOURCES = @POWERPC_AIX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX) + @POWERPC_DARWIN_TRUE@libffi_convenience_la_SOURCES = @POWERPC_DARWIN_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN) +@@ -260,6 +264,9 @@ + @ARM_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @ARM_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @ARM_TRUE@src/arm/sysv.lo src/arm/ffi.lo ++@PA_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ ++@PA_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ ++@PA_TRUE@src/pa/ffi.lo src/pa/linux.lo + @POWERPC_AIX_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ + @POWERPC_AIX_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ + @POWERPC_AIX_TRUE@src/java_raw_api.lo src/powerpc/ffi_darwin.lo \ +@@ -316,6 +323,9 @@ + @ARM_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ + @ARM_TRUE@src/raw_api.lo src/java_raw_api.lo src/arm/sysv.lo \ + @ARM_TRUE@src/arm/ffi.lo ++@PA_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ ++@PA_TRUE@src/raw_api.lo src/java_raw_api.lo src/pa/linux.lo \ ++@PA_TRUE@src/pa/ffi.lo + @POWERPC_AIX_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @POWERPC_AIX_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @POWERPC_AIX_TRUE@src/powerpc/ffi_darwin.lo src/powerpc/aix.lo \ +@@ -608,7 +618,7 @@ + mkdir $(distdir) + -chmod 777 $(distdir) + $(mkinstalldirs) $(distdir)/src/alpha $(distdir)/src/arm \ +- $(distdir)/src/m68k $(distdir)/src/mips \ ++ $(distdir)/src/m68k $(distdir)/src/mips $(distdir)/src/pa \ + $(distdir)/src/powerpc $(distdir)/src/s390 $(distdir)/src/sh \ + $(distdir)/src/sh64 $(distdir)/src/sparc $(distdir)/src/x86 + @for file in $(DISTFILES); do \ +diff -urN libffi.old/configure.in libffi/configure.in +--- libffi.old/configure.in 2004-03-20 19:32:43.000000000 +0100 ++++ libffi/configure.in 2004-03-20 19:33:57.000000000 +0100 +@@ -85,6 +85,7 @@ + x86_64-*-linux*) TARGET=X86_64; TARGETDIR=x86;; + sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; + sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; ++hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; + esac + + AC_SUBST(AM_RUNTESTFLAGS) +@@ -109,6 +110,7 @@ + AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64) + AM_CONDITIONAL(SH, test x$TARGET = xSH) + AM_CONDITIONAL(SH64, test x$TARGET = xSH64) ++AM_CONDITIONAL(PA, test x$TARGET = xPA) + + case x$TARGET in + xMIPS*) TARGET=MIPS ;; +diff -urN libffi.old/src/pa/ffi.c libffi/src/pa/ffi.c +--- libffi.old/src/pa/ffi.c 1970-01-01 01:00:00.000000000 +0100 ++++ libffi/src/pa/ffi.c 2004-03-20 19:33:57.000000000 +0100 +@@ -0,0 +1,603 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - (c) 2003-2004 Randolph Chung ++ ++ HPPA Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL 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. ++ ----------------------------------------------------------------------- */ ++ ++#include ++#include ++ ++#include ++ ++#define ROUND_UP(v, a) (((size_t)(v) + (a) - 1) & ~((a) - 1)) ++#define ROUND_DOWN(v, a) (((size_t)(v) - (a) + 1) & ~((a) - 1)) ++#define MIN_STACK_SIZE 64 ++#define FIRST_ARG_SLOT 9 ++#define DEBUG_LEVEL 0 ++ ++#define fldw(addr, fpreg) asm volatile ("fldw 0(%0), %%" #fpreg "L" : : "r"(addr) : #fpreg) ++#define fstw(fpreg, addr) asm volatile ("fstw %%" #fpreg "L, 0(%0)" : : "r"(addr)) ++#define fldd(addr, fpreg) asm volatile ("fldd 0(%0), %%" #fpreg : : "r"(addr) : #fpreg) ++#define fstd(fpreg, addr) asm volatile ("fstd %%" #fpreg "L, 0(%0)" : : "r"(addr)) ++ ++#define debug(lvl, x...) do { if (lvl <= DEBUG_LEVEL) { printf(x); } } while (0) ++ ++static inline int ffi_struct_type(ffi_type *t) ++{ ++ size_t sz = t->size; ++ ++ /* Small structure results are passed in registers, ++ larger ones are passed by pointer. */ ++ ++ if (sz <= 1) ++ return FFI_TYPE_UINT8; ++ else if (sz == 2) ++ return FFI_TYPE_UINT16; ++ else if (sz == 3) ++ return FFI_TYPE_SMALL_STRUCT1; ++ else if (sz == 4) ++ return FFI_TYPE_UINT32; ++ else if (sz <= 6) ++ return FFI_TYPE_SMALL_STRUCT2; ++ else if (sz <= 8) ++ return FFI_TYPE_UINT64; ++ else ++ return FFI_TYPE_STRUCT; /* else, we pass it by pointer. */ ++} ++ ++/* PA has a downward growing stack, which looks like this: ++ ++ Offset ++ [ Variable args ] ++ SP = (4*(n+9)) arg word N ++ ... ++ SP-52 arg word 4 ++ [ Fixed args ] ++ SP-48 arg word 3 ++ SP-44 arg word 2 ++ SP-40 arg word 1 ++ SP-36 arg word 0 ++ [ Frame marker ] ++ ... ++ SP-20 RP ++ SP-4 previous SP ++ ++ First 4 non-FP 32-bit args are passed in gr26, gr25, gr24 and gr23 ++ First 2 non-FP 64-bit args are passed in register pairs, starting ++ on an even numbered register (i.e. r26/r25 and r24+r23) ++ First 4 FP 32-bit arguments are passed in fr4L, fr5L, fr6L and fr7L ++ First 2 FP 64-bit arguments are passed in fr5 and fr7 ++ The rest are passed on the stack starting at SP-52, but 64-bit ++ arguments need to be aligned to an 8-byte boundary ++ ++ This means we can have holes either in the register allocation, ++ or in the stack. */ ++ ++/* ffi_prep_args is called by the assembly routine once stack space ++ has been allocated for the function's arguments ++ ++ The following code will put everything into the stack frame ++ (which was allocated by the asm routine), and on return ++ the asm routine will load the arguments that should be ++ passed by register into the appropriate registers ++ ++ NOTE: We load floating point args in this function... that means we ++ assume gcc will not mess with fp regs in here. */ ++ ++/*@-exportheader@*/ ++void ffi_prep_args_LINUX(UINT32 *stack, extended_cif *ecif, unsigned bytes) ++/*@=exportheader@*/ ++{ ++ register unsigned int i; ++ register ffi_type **p_arg; ++ register void **p_argv; ++ unsigned int slot = FIRST_ARG_SLOT - 1; ++ char *dest_cpy; ++ ++ debug(1, "%s: stack = %p, ecif = %p, bytes = %u\n", __FUNCTION__, stack, ecif, bytes); ++ ++ p_arg = ecif->cif->arg_types; ++ p_argv = ecif->avalue; ++ ++ for (i = 0; i < ecif->cif->nargs; i++) ++ { ++ int type = (*p_arg)->type; ++ ++ switch (type) ++ { ++ case FFI_TYPE_SINT8: ++ slot++; ++ *(SINT32 *)(stack - slot) = *(SINT8 *)(*p_argv); ++ break; ++ ++ case FFI_TYPE_UINT8: ++ slot++; ++ *(UINT32 *)(stack - slot) = *(UINT8 *)(*p_argv); ++ break; ++ ++ case FFI_TYPE_SINT16: ++ slot++; ++ *(SINT32 *)(stack - slot) = *(SINT16 *)(*p_argv); ++ break; ++ ++ case FFI_TYPE_UINT16: ++ slot++; ++ *(UINT32 *)(stack - slot) = *(UINT16 *)(*p_argv); ++ break; ++ ++ case FFI_TYPE_UINT32: ++ case FFI_TYPE_SINT32: ++ case FFI_TYPE_POINTER: ++ slot++; ++ debug(3, "Storing UINT32 %u in slot %u\n", *(UINT32 *)(*p_argv), slot); ++ *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); ++ break; ++ ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_SINT64: ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ ++ *(UINT32 *)(stack - slot) = (*(UINT64 *)(*p_argv)) >> 32; ++ *(UINT32 *)(stack - slot + 1) = (*(UINT64 *)(*p_argv)) & 0xffffffffUL; ++ break; ++ ++ case FFI_TYPE_FLOAT: ++ /* First 4 args go in fr4L - fr7L */ ++ slot++; ++ switch (slot - FIRST_ARG_SLOT) ++ { ++ case 0: fldw(*p_argv, fr4); break; ++ case 1: fldw(*p_argv, fr5); break; ++ case 2: fldw(*p_argv, fr6); break; ++ case 3: fldw(*p_argv, fr7); break; ++ default: ++ /* Other ones are just passed on the stack. */ ++ debug(3, "Storing UINT32(float) in slot %u\n", slot); ++ *(UINT32 *)(stack - slot) = *(UINT32 *)(*p_argv); ++ break; ++ } ++ break; ++ ++ case FFI_TYPE_DOUBLE: ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ switch (slot - FIRST_ARG_SLOT + 1) ++ { ++ /* First 2 args go in fr5, fr7 */ ++ case 2: fldd(*p_argv, fr5); break; ++ case 4: fldd(*p_argv, fr7); break; ++ default: ++ debug(3, "Storing UINT64(double) at slot %u\n", slot); ++ *(UINT64 *)(stack - slot) = *(UINT64 *)(*p_argv); ++ break; ++ } ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ ++ /* Structs smaller or equal than 4 bytes are passed in one ++ register. Structs smaller or equal 8 bytes are passed in two ++ registers. Larger structures are passed by pointer. */ ++ ++ if((*p_arg)->size <= 4) ++ { ++ slot++; ++ dest_cpy = (char *)(stack - slot); ++ dest_cpy += 4 - (*p_arg)->size; ++ memcpy((char *)dest_cpy, (char *)*p_argv, (*p_arg)->size); ++ } ++ else if ((*p_arg)->size <= 8) ++ { ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ dest_cpy = (char *)(stack - slot); ++ dest_cpy += 8 - (*p_arg)->size; ++ memcpy((char *)dest_cpy, (char *)*p_argv, (*p_arg)->size); ++ } ++ else ++ { ++ slot++; ++ *(UINT32 *)(stack - slot) = (UINT32)(*p_argv); ++ } ++ break; ++ ++ default: ++ FFI_ASSERT(0); ++ } ++ ++ p_arg++; ++ p_argv++; ++ } ++ ++ /* Make sure we didn't mess up and scribble on the stack. */ ++ { ++ int n; ++ ++ debug(5, "Stack setup:\n"); ++ for (n = 0; n < (bytes + 3) / 4; n++) ++ { ++ if ((n%4) == 0) { debug(5, "\n%08x: ", (unsigned int)(stack - n)); } ++ debug(5, "%08x ", *(stack - n)); ++ } ++ debug(5, "\n"); ++ } ++ ++ FFI_ASSERT(slot * 4 <= bytes); ++ ++ return; ++} ++ ++static void ffi_size_stack_LINUX(ffi_cif *cif) ++{ ++ ffi_type **ptr; ++ int i; ++ int z = 0; /* # stack slots */ ++ ++ for (ptr = cif->arg_types, i = 0; i < cif->nargs; ptr++, i++) ++ { ++ int type = (*ptr)->type; ++ ++ switch (type) ++ { ++ case FFI_TYPE_DOUBLE: ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_SINT64: ++ z += 2 + (z & 1); /* must start on even regs, so we may waste one */ ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ z += 1; /* pass by ptr, callee will copy */ ++ break; ++ ++ default: /* <= 32-bit values */ ++ z++; ++ } ++ } ++ ++ /* We can fit up to 6 args in the default 64-byte stack frame, ++ if we need more, we need more stack. */ ++ if (z <= 6) ++ cif->bytes = MIN_STACK_SIZE; /* min stack size */ ++ else ++ cif->bytes = 64 + ROUND_UP((z - 6) * sizeof(UINT32), MIN_STACK_SIZE); ++ ++ debug(3, "Calculated stack size is %u bytes\n", cif->bytes); ++} ++ ++/* Perform machine dependent cif processing. */ ++ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ++{ ++ /* Set the return type flag */ ++ switch (cif->rtype->type) ++ { ++ case FFI_TYPE_VOID: ++ case FFI_TYPE_FLOAT: ++ case FFI_TYPE_DOUBLE: ++ cif->flags = (unsigned) cif->rtype->type; ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ /* For the return type we have to check the size of the structures. ++ If the size is smaller or equal 4 bytes, the result is given back ++ in one register. If the size is smaller or equal 8 bytes than we ++ return the result in two registers. But if the size is bigger than ++ 8 bytes, we work with pointers. */ ++ cif->flags = ffi_struct_type(cif->rtype); ++ break; ++ ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_SINT64: ++ cif->flags = FFI_TYPE_UINT64; ++ break; ++ ++ default: ++ cif->flags = FFI_TYPE_INT; ++ break; ++ } ++ ++ /* Lucky us, because of the unique PA ABI we get to do our ++ own stack sizing. */ ++ switch (cif->abi) ++ { ++ case FFI_LINUX: ++ ffi_size_stack_LINUX(cif); ++ break; ++ ++ default: ++ FFI_ASSERT(0); ++ break; ++ } ++ ++ return FFI_OK; ++} ++ ++/*@-declundef@*/ ++/*@-exportheader@*/ ++extern void ffi_call_LINUX(void (*)(UINT32 *, extended_cif *, unsigned), ++ /*@out@*/ extended_cif *, ++ unsigned, unsigned, ++ /*@out@*/ unsigned *, ++ void (*fn)()); ++/*@=declundef@*/ ++/*@=exportheader@*/ ++ ++void ffi_call(/*@dependent@*/ ffi_cif *cif, ++ void (*fn)(), ++ /*@out@*/ void *rvalue, ++ /*@dependent@*/ void **avalue) ++{ ++ extended_cif ecif; ++ ++ ecif.cif = cif; ++ ecif.avalue = avalue; ++ ++ /* If the return value is a struct and we don't have a return ++ value address then we need to make one. */ ++ ++ if ((rvalue == NULL) && ++ (cif->rtype->type == FFI_TYPE_STRUCT)) ++ { ++ /*@-sysunrecog@*/ ++ ecif.rvalue = alloca(cif->rtype->size); ++ /*@=sysunrecog@*/ ++ } ++ else ++ ecif.rvalue = rvalue; ++ ++ ++ switch (cif->abi) ++ { ++ case FFI_LINUX: ++ /*@-usedef@*/ ++ debug(2, "Calling ffi_call_LINUX: ecif=%p, bytes=%u, flags=%u, rvalue=%p, fn=%p\n", &ecif, cif->bytes, cif->flags, ecif.rvalue, (void *)fn); ++ ffi_call_LINUX(ffi_prep_args_LINUX, &ecif, cif->bytes, ++ cif->flags, ecif.rvalue, fn); ++ /*@=usedef@*/ ++ break; ++ ++ default: ++ FFI_ASSERT(0); ++ break; ++ } ++} ++ ++#if FFI_CLOSURES ++/* This is more-or-less an inverse of ffi_call -- we have arguments on ++ the stack, and we need to fill them into a cif structure and invoke ++ the user function. This really ought to be in asm to make sure ++ the compiler doesn't do things we don't expect. */ ++UINT32 ffi_closure_inner_LINUX(ffi_closure *closure, UINT32 *stack) ++{ ++ ffi_cif *cif; ++ void **avalue; ++ void *rvalue; ++ UINT32 ret[2]; /* function can return up to 64-bits in registers */ ++ ffi_type **p_arg; ++ char *tmp; ++ int i, avn, slot = FIRST_ARG_SLOT - 1; ++ register UINT32 r28 asm("r28"); ++ ++ cif = closure->cif; ++ ++ /* If returning via structure, callee will write to our pointer. */ ++ if (cif->flags == FFI_TYPE_STRUCT) ++ rvalue = (void *)r28; ++ else ++ rvalue = &ret[0]; ++ ++ avalue = (void **)alloca(cif->nargs * FFI_SIZEOF_ARG); ++ avn = cif->nargs; ++ p_arg = cif->arg_types; ++ ++ for (i = 0; i < avn; i++) ++ { ++ int type = (*p_arg)->type; ++ ++ switch (type) ++ { ++ case FFI_TYPE_SINT8: ++ case FFI_TYPE_UINT8: ++ case FFI_TYPE_SINT16: ++ case FFI_TYPE_UINT16: ++ case FFI_TYPE_SINT32: ++ case FFI_TYPE_UINT32: ++ case FFI_TYPE_POINTER: ++ slot++; ++ avalue[i] = (char *)(stack - slot) + sizeof(UINT32) - (*p_arg)->size; ++ break; ++ ++ case FFI_TYPE_SINT64: ++ case FFI_TYPE_UINT64: ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ avalue[i] = (void *)(stack - slot); ++ break; ++ ++ case FFI_TYPE_FLOAT: ++ slot++; ++ switch (slot - FIRST_ARG_SLOT) ++ { ++ case 0: fstw(fr4, (void *)(stack - slot)); break; ++ case 1: fstw(fr5, (void *)(stack - slot)); break; ++ case 2: fstw(fr6, (void *)(stack - slot)); break; ++ case 3: fstw(fr7, (void *)(stack - slot)); break; ++ } ++ avalue[i] = (void *)(stack - slot); ++ break; ++ ++ case FFI_TYPE_DOUBLE: ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ switch (slot - FIRST_ARG_SLOT + 1) ++ { ++ case 2: fstd(fr5, (void *)(stack - slot)); break; ++ case 4: fstd(fr7, (void *)(stack - slot)); break; ++ } ++ avalue[i] = (void *)(stack - slot); ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ /* Structs smaller or equal than 4 bytes are passed in one ++ register. Structs smaller or equal 8 bytes are passed in two ++ registers. Larger structures are passed by pointer. */ ++ if((*p_arg)->size <= 4) { ++ slot++; ++ avalue[i] = (void *)(stack - slot) + sizeof(UINT32) - ++ (*p_arg)->size; ++ } else if ((*p_arg)->size <= 8) { ++ slot += 2; ++ if (slot & 1) ++ slot++; ++ avalue[i] = (void *)(stack - slot) + sizeof(UINT64) - ++ (*p_arg)->size; ++ } else { ++ slot++; ++ avalue[i] = (void *) *(stack - slot); ++ } ++ break; ++ ++ default: ++ FFI_ASSERT(0); ++ } ++ ++ p_arg++; ++ } ++ ++ /* Invoke the closure. */ ++ (closure->fun) (cif, rvalue, avalue, closure->user_data); ++ ++ debug(3, "after calling function, ret[0] = %d, ret[1] = %d\n", ret[0], ret[1]); ++ ++ /* Store the result */ ++ switch (cif->flags) ++ { ++ case FFI_TYPE_UINT8: ++ *(stack - FIRST_ARG_SLOT) = *(UINT8 *)&ret[0]; ++ break; ++ case FFI_TYPE_SINT8: ++ *(stack - FIRST_ARG_SLOT) = *(SINT8 *)&ret[0]; ++ break; ++ case FFI_TYPE_UINT16: ++ *(stack - FIRST_ARG_SLOT) = *(UINT16 *)&ret[0]; ++ break; ++ case FFI_TYPE_SINT16: ++ *(stack - FIRST_ARG_SLOT) = *(SINT16 *)&ret[0]; ++ break; ++ case FFI_TYPE_INT: ++ case FFI_TYPE_UINT32: ++ *(stack - FIRST_ARG_SLOT) = *(UINT32 *)&ret[0]; ++ break; ++ case FFI_TYPE_SINT32: ++ *(stack - FIRST_ARG_SLOT) = *(SINT32 *)&ret[0]; ++ break; ++ case FFI_TYPE_SINT64: ++ case FFI_TYPE_UINT64: ++ *(stack - FIRST_ARG_SLOT) = *(UINT32 *)&ret[0]; ++ *(stack - FIRST_ARG_SLOT - 1) = *(UINT32 *)&ret[1]; ++ break; ++ ++ case FFI_TYPE_DOUBLE: ++ fldd(rvalue, fr4); ++ break; ++ ++ case FFI_TYPE_FLOAT: ++ fldw(rvalue, fr4); ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ /* Don't need a return value, done by caller. */ ++ break; ++ ++ case FFI_TYPE_SMALL_STRUCT1: ++ tmp = (void*)(stack - FIRST_ARG_SLOT); ++ tmp += 4 - cif->rtype->size; ++ memcpy((void*)tmp, &ret[0], cif->rtype->size); ++ break; ++ ++ case FFI_TYPE_SMALL_STRUCT2: ++ *(stack - FIRST_ARG_SLOT) = ret[0]; ++ *(stack - FIRST_ARG_SLOT - 1) = ret[1]; ++ break; ++ ++ case FFI_TYPE_POINTER: ++ case FFI_TYPE_VOID: ++ break; ++ ++ default: ++ debug(0, "assert with cif->flags: %d\n",cif->flags); ++ FFI_ASSERT(0); ++ break; ++ } ++ return FFI_OK; ++} ++ ++/* Fill in a closure to refer to the specified fun and user_data. ++ cif specifies the argument and result types for fun. ++ The cif must already be prep'ed. */ ++ ++void ffi_closure_LINUX(void); ++ ++ffi_status ++ffi_prep_closure (ffi_closure* closure, ++ ffi_cif* cif, ++ void (*fun)(ffi_cif*,void*,void**,void*), ++ void *user_data) ++{ ++ UINT32 *tramp = (UINT32 *)(closure->tramp); ++ ++ FFI_ASSERT (cif->abi == FFI_LINUX); ++ ++ /* Make a small trampoline that will branch to our ++ handler function. Use PC-relative addressing. */ ++ ++ tramp[0] = 0xeaa00000; /* b,l .+8, %r21 ; %r21 <- pc+8 */ ++ tramp[1] = 0xd6a01c1e; /* depi 0,31,2, %r21 ; mask priv bits */ ++ tramp[2] = 0x4aa10028; /* ldw 20(%r21), %r1 ; load plabel */ ++ tramp[3] = 0x36b53ff1; /* ldo -8(%r21), %r21 ; get closure addr */ ++ tramp[4] = 0x0c201096; /* ldw 0(%r1), %r22 ; address of handler */ ++ tramp[5] = 0xeac0c000; /* bv %r0(%r22) ; branch to handler */ ++ tramp[6] = 0x0c281093; /* ldw 4(%r1), %r19 ; GP of handler */ ++ tramp[7] = ((UINT32)(ffi_closure_LINUX) & ~2); ++ ++ /* Flush d/icache -- have to flush up 2 two lines because of ++ alignment. */ ++ asm volatile ( ++ "fdc 0(%0)\n" ++ "fdc %1(%0)\n" ++ "fic 0(%%sr4, %0)\n" ++ "fic %1(%%sr4, %0)\n" ++ "sync\n" ++ : : "r"((unsigned long)tramp & ~31), "r"(32 /* stride */)); ++ ++ closure->cif = cif; ++ closure->user_data = user_data; ++ closure->fun = fun; ++ ++ return FFI_OK; ++} ++#endif +diff -urN libffi.old/src/pa/ffitarget.h libffi/src/pa/ffitarget.h +--- libffi.old/src/pa/ffitarget.h 1970-01-01 01:00:00.000000000 +0100 ++++ libffi/src/pa/ffitarget.h 2004-03-20 19:33:57.000000000 +0100 +@@ -0,0 +1,57 @@ ++/* -----------------------------------------------------------------*-C-*- ++ ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. ++ Target configuration macros for hppa. ++ ++ 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. ++ ++ ----------------------------------------------------------------------- */ ++ ++#ifndef LIBFFI_TARGET_H ++#define LIBFFI_TARGET_H ++ ++/* ---- System specific configurations ----------------------------------- */ ++ ++#ifndef LIBFFI_ASM ++typedef unsigned long ffi_arg; ++typedef signed long ffi_sarg; ++ ++typedef enum ffi_abi { ++ FFI_FIRST_ABI = 0, ++ ++#ifdef PA ++ FFI_LINUX, ++ FFI_DEFAULT_ABI = FFI_LINUX, ++#endif ++ ++ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 ++} ffi_abi; ++#endif ++ ++/* ---- Definitions for closures ----------------------------------------- */ ++ ++#define FFI_CLOSURES 1 ++#define FFI_NATIVE_RAW_API 0 ++ ++#define FFI_TRAMPOLINE_SIZE 32 ++ ++#define FFI_TYPE_SMALL_STRUCT1 -1 ++#define FFI_TYPE_SMALL_STRUCT2 -2 ++#endif ++ +diff -urN libffi.old/src/pa/linux.S libffi/src/pa/linux.S +--- libffi.old/src/pa/linux.S 1970-01-01 01:00:00.000000000 +0100 ++++ libffi/src/pa/linux.S 2004-03-20 19:33:57.000000000 +0100 +@@ -0,0 +1,281 @@ ++/* ----------------------------------------------------------------------- ++ linux.S - (c) 2003-2004 Randolph Chung ++ ++ HPPA Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL 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. ++ ----------------------------------------------------------------------- */ ++ ++#define LIBFFI_ASM ++#include ++#include ++ ++ .text ++ .align 4 ++ ++ /* void ffi_call_LINUX(void (*)(char *, extended_cif *), ++ extended_cif *ecif, ++ unsigned bytes, ++ unsigned flags, ++ unsigned *rvalue, ++ void (*fn)()); ++ */ ++ ++ .export ffi_call_LINUX,code ++ .import ffi_prep_args_LINUX,code ++ ++ .type ffi_call_LINUX, @function ++.LFB1: ++ffi_call_LINUX: ++ .proc ++ .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=4 ++ .entry ++ stw %rp, -20(%sp) ++ copy %r3, %r1 ++.LCFI11: ++ ++ copy %sp, %r3 ++.LCFI12: ++ ++ /* Setup the stack for calling prep_args... ++ We want the stack to look like this: ++ ++ [ Previous stack ] <- %r3 ++ ++ [ 64-bytes register save area ] <- %r4 ++ ++ [ Stack space for actual call, passed as ] <- %arg0 ++ [ arg0 to ffi_prep_args_LINUX ] ++ ++ [ Stack for calling prep_args ] <- %sp ++ */ ++ ++ stwm %r1, 64(%sp) ++ stw %r4, 12(%r3) ++.LCFI13: ++ copy %sp, %r4 ++ ++ addl %arg2, %r4, %arg0 /* arg stack */ ++ stw %arg3, -48(%r3) /* save flags; we need it later */ ++ ++ /* Call prep_args: ++ %arg0(stack) -- set up above ++ %arg1(ecif) -- same as incoming param ++ %arg2(bytes) -- same as incoming param */ ++ bl ffi_prep_args_LINUX,%r2 ++ ldo 64(%arg0), %sp ++ ldo -64(%sp), %sp ++ ++ /* now %sp should point where %arg0 was pointing. */ ++ ++ /* Load the arguments that should be passed in registers ++ The fp args were loaded by the prep_args function. */ ++ ldw -36(%sp), %arg0 ++ ldw -40(%sp), %arg1 ++ ldw -44(%sp), %arg2 ++ ldw -48(%sp), %arg3 ++ ++ /* in case the function is going to return a structure ++ we need to give it a place to put the result. */ ++ ldw -52(%r3), %ret0 /* %ret0 <- rvalue */ ++ ldw -56(%r3), %r22 /* %r22 <- function to call */ ++ bl $$dyncall, %r31 /* Call the user function */ ++ copy %r31, %rp ++ ++ /* Prepare to store the result; we need to recover flags and rvalue. */ ++ ldw -48(%r3), %r21 /* r21 <- flags */ ++ ldw -52(%r3), %r20 /* r20 <- rvalue */ ++ ++ /* Store the result according to the return type. */ ++ ++checksmst1: ++ comib,<>,n FFI_TYPE_SMALL_STRUCT1, %r21, checksmst2 ++ /* There is maybe a better way to handle 3 byte structs. */ ++ sh2add %ret0,0,%ret0 ++ sh2add %ret0,0,%ret0 ++ sh2add %ret0,0,%ret0 ++ sh2add %ret0,0,%ret0 ++ b done ++ stw %ret0, 0(%r20) ++ ++checksmst2: ++ comib,<>,n FFI_TYPE_SMALL_STRUCT2, %r21, checkint8 ++ /* Up to now I don't have a way to handle 6/7 byte structs. ++ The values are left bounded in the registers. In the struct ++ itself they are left bounded. */ ++ stw %ret0, 0(%r20) ++ b done ++ stw %ret1, 4(%r20) ++ ++checkint8: ++ comib,<>,n FFI_TYPE_UINT8, %r21, checkint16 ++ b done ++ stb %ret0, 0(%r20) ++ ++checkint16: ++ comib,<>,n FFI_TYPE_UINT16, %r21, checkint32 ++ b done ++ sth %ret0, 0(%r20) ++ ++checkint32: ++ comib,<>,n FFI_TYPE_UINT32, %r21, checkint ++ b done ++ stw %ret0, 0(%r20) ++ ++checkint: ++ comib,<>,n FFI_TYPE_INT, %r21, checkll ++ b done ++ stw %ret0, 0(%r20) ++ ++checkll: ++ comib,<>,n FFI_TYPE_UINT64, %r21, checkdbl ++ stw %ret0, 0(%r20) ++ b done ++ stw %ret1, 4(%r20) ++ ++checkdbl: ++ comib,<>,n FFI_TYPE_DOUBLE, %r21, checkfloat ++ b done ++ fstd %fr4,0(%r20) ++ ++checkfloat: ++ comib,<>,n FFI_TYPE_FLOAT, %r21, done ++ fstw %fr4L,0(%r20) ++ ++ /* structure returns are either handled by one of the ++ INT/UINT64 cases above, or, if passed by pointer, ++ is handled by the callee. */ ++ ++done: ++ /* all done, return */ ++ copy %r4, %sp /* pop arg stack */ ++ ldw 12(%r3), %r4 ++ ldwm -64(%sp), %r3 /* .. and pop stack */ ++ ldw -20(%sp), %rp ++ bv %r0(%rp) ++ nop ++ .exit ++ .procend ++.LFE1: ++ ++ /* void ffi_closure_LINUX(void); ++ Called with closure argument in %r21 */ ++ .export ffi_closure_LINUX,code ++ .import ffi_closure_inner_LINUX,code ++ ++ .type ffi_closure_LINUX, @function ++.LFB2: ++ffi_closure_LINUX: ++ .proc ++ .callinfo FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 ++ .entry ++ ++ stw %rp, -20(%sp) ++.LCFI20: ++ copy %r3, %r1 ++.LCFI21: ++ copy %sp, %r3 ++.LCFI22: ++ stwm %r1, 64(%sp) ++ ++ /* Put arguments onto the stack and call ffi_closure_inner. */ ++ stw %arg0, -36(%r3) ++ stw %arg1, -40(%r3) ++ stw %arg2, -44(%r3) ++ stw %arg3, -48(%r3) ++ ++ copy %r21, %arg0 ++ bl ffi_closure_inner_LINUX, %r2 ++ copy %r3, %arg1 ++ ++ ldwm -64(%sp), %r3 ++ ldw -20(%sp), %rp ++ ldw -36(%sp), %ret0 ++ bv %r0(%r2) ++ ldw -40(%sp), %ret1 ++ ++ .exit ++ .procend ++.LFE2: ++ ++ .section ".eh_frame",EH_FRAME_FLAGS,@progbits ++.Lframe1: ++ .word .LECIE1-.LSCIE1 ;# Length of Common Information Entry ++.LSCIE1: ++ .word 0x0 ;# CIE Identifier Tag ++ .byte 0x1 ;# CIE Version ++ .ascii "\0" ;# CIE Augmentation ++ .uleb128 0x1 ;# CIE Code Alignment Factor ++ .sleb128 4 ;# CIE Data Alignment Factor ++ .byte 0x2 ;# CIE RA Column ++ .byte 0xc ;# DW_CFA_def_cfa ++ .uleb128 0x1e ++ .uleb128 0x0 ++ .align 4 ++.LECIE1: ++.LSFDE1: ++ .word .LEFDE1-.LASFDE1 ;# FDE Length ++.LASFDE1: ++ .word .LASFDE1-.Lframe1 ;# FDE CIE offset ++ .word .LFB1 ;# FDE initial location ++ .word .LFE1-.LFB1 ;# FDE address range ++ ++ .byte 0x4 ;# DW_CFA_advance_loc4 ++ .word .LCFI11-.LFB1 ++ .byte 0x83 ;# DW_CFA_offset, column 0x3 ++ .uleb128 0x0 ++ .byte 0x11 ;# DW_CFA_offset_extended_sf; save r2 at [r30-20] ++ .uleb128 0x2 ++ .sleb128 -5 ++ ++ .byte 0x4 ;# DW_CFA_advance_loc4 ++ .word .LCFI12-.LCFI11 ++ .byte 0xd ;# DW_CFA_def_cfa_register = r3 ++ .uleb128 0x3 ++ ++ .byte 0x4 ;# DW_CFA_advance_loc4 ++ .word .LCFI13-.LCFI12 ++ .byte 0x84 ;# DW_CFA_offset, column 0x4 ++ .uleb128 0x3 ++ ++ .align 4 ++.LEFDE1: ++ ++.LSFDE2: ++ .word .LEFDE2-.LASFDE2 ;# FDE Length ++.LASFDE2: ++ .word .LASFDE2-.Lframe1 ;# FDE CIE offset ++ .word .LFB2 ;# FDE initial location ++ .word .LFE2-.LFB2 ;# FDE address range ++ .byte 0x4 ;# DW_CFA_advance_loc4 ++ .word .LCFI21-.LFB2 ++ .byte 0x83 ;# DW_CFA_offset, column 0x3 ++ .uleb128 0x0 ++ .byte 0x11 ;# DW_CFA_offset_extended_sf ++ .uleb128 0x2 ++ .sleb128 -5 ++ ++ .byte 0x4 ;# DW_CFA_advance_loc4 ++ .word .LCFI12-.LCFI11 ++ .byte 0xd ;# DW_CFA_def_cfa_register = r3 ++ .uleb128 0x3 ++ ++ .align 4 ++.LEFDE2: +diff -urN libffi.old/src/prep_cif.c libffi/src/prep_cif.c +--- libffi.old/src/prep_cif.c 2004-03-20 19:32:43.000000000 +0100 ++++ libffi/src/prep_cif.c 2004-03-20 19:33:57.000000000 +0100 +@@ -113,7 +113,7 @@ + FFI_ASSERT_VALID_TYPE(cif->rtype); + + /* x86-64 and s390 stack space allocation is handled in prep_machdep. */ +-#if !defined M68K && !defined __x86_64__ && !defined S390 ++#if !defined M68K && !defined __x86_64__ && !defined S390 && !defined PA + /* Make space for the return structure pointer */ + if (cif->rtype->type == FFI_TYPE_STRUCT + #ifdef SPARC +@@ -134,7 +134,7 @@ + check after the initialization. */ + FFI_ASSERT_VALID_TYPE(*ptr); + +-#if !defined __x86_64__ && !defined S390 ++#if !defined __x86_64__ && !defined S390 && !defined PA + #ifdef SPARC + if (((*ptr)->type == FFI_TYPE_STRUCT + && ((*ptr)->size > 16 || cif->abi != FFI_V9)) --- gcc-3.4-3.4.6.orig/debian/patches/ppc64-biarch.dpatch +++ gcc-3.4-3.4.6/debian/patches/ppc64-biarch.dpatch @@ -0,0 +1,131 @@ +#! /bin/sh -e + +# DP: biarch patches for powerpc/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 + #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 tmp/gcc/config/rs6000/t-linux64 src/gcc/config/rs6000/t-linux64 +--- tmp/gcc/config/rs6000/t-linux64 2004-03-17 15:16:48.000000000 +0000 ++++ src/gcc/config/rs6000/t-linux64 2004-11-22 07:56:52.681533760 +0000 +@@ -11,9 +11,9 @@ +-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 = m64/msoft-float ++#MULTILIB_EXCLUSIONS = m64/!m32/msoft-float ++MULTILIB_OSDIRNAMES = ../lib ../lib32 ++#MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT) + + # We want fine grained libraries, so use the new code to build the +@@ -37,8 +37,11 @@ + mklibgcc: bispecs + + bispecs: specs +- if [ x`$(GCC_FOR_TARGET) -print-multi-os-directory` = x../lib ]; then \ ++ touch f-test.c; \ ++ $(GCC_FOR_TARGET) -c f-test.c -o f-test.o; \ ++ if [ "x`file f-test.o | grep 64-bit`" = "x" ]; then \ + sed -e '/cc1_options/{ n; s/$$/ %{m64:-mlong-double-128}/; }' < specs > $@; \ + else \ + sed -e '/cc1_options/{ n; s/$$/ %{!m32:-mlong-double-128}/; }' < specs > $@; \ +- fi ++ fi; \ ++ rm f-test.c f-test.o; +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 gcc-3.4.3/config-ml.in src/config-ml.in +--- gcc-3.4.3/config-ml.in 2004-01-05 00:41:14.000000000 +0000 ++++ src/config-ml.in 2004-12-10 18:59:35.651141848 +0000 +@@ -400,7 +400,47 @@ + ;; + 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}" ;; ++ *"libf2c" ) 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}" --- gcc-3.4-3.4.6.orig/debian/patches/m32r-libffi.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-libffi.dpatch @@ -0,0 +1,580 @@ +#! /bin/sh -e +# +# +# DP: Author: Kazuhiro Inaoka +# DP: libffi implementation + +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 -p1 < $0 + cd ${dir}libffi && autoconf + ;; + -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 + +--- gcc-3.4.1/libffi/Makefile.am.orig 2004-11-02 22:25:42.000000000 +0900 ++++ gcc-3.4.1/libffi/Makefile.am 2004-11-12 12:20:22.000000000 +0900 +@@ -9,6 +9,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 \ + src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ ++ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ + src/pa/ffi.c src/pa/linux.S src/pa/ffitarget.h \ + src/powerpc/ffi.c src/powerpc/sysv.S \ +@@ -25,7 +26,6 @@ EXTRA_DIST = LICENSE ChangeLog.v1 \ + src/x86/ffi.c src/x86/sysv.S src/x86/win32.S \ + src/x86/ffi64.c src/x86/unix64.S src/x86/ffitarget.h + +- + VPATH = @srcdir@:@srcdir@/src:@srcdir@/src/@TARGETDIR@ + + ## ################################################################ +@@ -105,6 +105,7 @@ TARGET_SRC_S390 = src/s390/sysv.S src/s + TARGET_SRC_X86_64 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S + TARGET_SRC_SH = src/sh/sysv.S src/sh/ffi.c + TARGET_SRC_SH64 = src/sh64/sysv.S src/sh64/ffi.c ++TARGET_SRC_M32R = src/m32r/sysv.S src/m32r/ffi.c + + ##libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c $(TARGET_SRC_@TARGET@) + ## Work around automake deficiency +@@ -178,6 +179,10 @@ if PA + libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_PA) + libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_PA) + endif ++if M32R ++libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_M32R) ++libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_M32R) ++endif + + AM_CFLAGS = -Wall -g -fexceptions + +--- gcc-3.4.1/libffi/Makefile.in.orig 2004-11-12 16:52:34.000000000 +0900 ++++ gcc-3.4.1/libffi/Makefile.in 2004-11-12 16:57:15.000000000 +0900 +@@ -98,6 +98,7 @@ + EXTRA_DIST = LICENSE ChangeLog.v1 \ + src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \ + src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \ ++ src/m32r/ffi.c src/m32r/sysv.S src/m32r/ffitarget.h \ + src/mips/ffi.c src/mips/n32.S src/mips/o32.S \ + src/mips/ffitarget.h \ + src/m68k/ffi.c src/m68k/sysv.S src/m68k/ffitarget.h \ +@@ -187,6 +188,7 @@ + TARGET_SRC_X86_64 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S + TARGET_SRC_SH = src/sh/sysv.S src/sh/ffi.c + TARGET_SRC_SH64 = src/sh64/sysv.S src/sh64/ffi.c ++TARGET_SRC_M32R = src/m32r/sysv.S src/m32r/ffi.c + + libffi_la_common_SOURCES = src/debug.c src/prep_cif.c src/types.c \ + src/raw_api.c src/java_raw_api.c +@@ -207,6 +209,7 @@ + @X86_64_TRUE@libffi_la_SOURCES = @X86_64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) + @SH_TRUE@libffi_la_SOURCES = @SH_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH) + @SH64_TRUE@libffi_la_SOURCES = @SH64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH64) ++@M32R_TRUE@libffi_la_SOURCES = @M32R_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_M32R) + @MIPS_IRIX_TRUE@libffi_convenience_la_SOURCES = @MIPS_IRIX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_IRIX) + @MIPS_LINUX_TRUE@libffi_convenience_la_SOURCES = @MIPS_LINUX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_LINUX) + @X86_TRUE@libffi_convenience_la_SOURCES = @X86_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86) +@@ -223,6 +226,7 @@ + @X86_64_TRUE@libffi_convenience_la_SOURCES = @X86_64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) + @SH_TRUE@libffi_convenience_la_SOURCES = @SH_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH) + @SH64_TRUE@libffi_convenience_la_SOURCES = @SH64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH64) ++@M32R_TRUE@libffi_convenience_la_SOURCES = @M32R_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_M32R) + + AM_CFLAGS = -Wall -g -fexceptions + +@@ -242,6 +246,9 @@ + LIBS = @LIBS@ + libffi_convenience_la_LDFLAGS = + libffi_convenience_la_LIBADD = ++@M32R_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ ++@M32R_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ ++@M32R_TRUE@src/m32r/ffi.lo src/m32r/sysv.lo \ + @X86_64_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ + @X86_64_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ + @X86_64_TRUE@src/java_raw_api.lo src/x86/ffi64.lo src/x86/unix64.lo \ +@@ -299,6 +306,9 @@ + @IA64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @IA64_TRUE@src/ia64/ffi.lo src/ia64/unix.lo + libffi_la_LIBADD = ++@M32R_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ ++@M32R_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ ++@M32R_TRUE@src/m32r/ffi.lo src/m32r/sysv.lo \ + @X86_64_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @X86_64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @X86_64_TRUE@src/x86/ffi64.lo src/x86/unix64.lo src/x86/ffi.lo \ +--- gcc-3.4.1/libffi/configure.in.orig 2004-11-02 22:25:28.000000000 +0900 ++++ gcc-3.4.1/libffi/configure.in 2004-11-12 12:14:04.000000000 +0900 +@@ -88,6 +88,7 @@ x86_64-*-linux*) TARGET=X86_64; TARGETDI + sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; + sh64-*-linux* | sh5*-*-linux*) TARGET=SH64; TARGETDIR=sh64;; + hppa-*-linux* | parisc-*-linux*) TARGET=PA; TARGETDIR=pa;; ++m32r*-*-linux* ) TARGET=M32R; TARGETDIR=m32r;; + esac + + AC_SUBST(AM_RUNTESTFLAGS) +@@ -113,6 +114,7 @@ AM_CONDITIONAL(X86_64, test x$TARGET = x + AM_CONDITIONAL(SH, test x$TARGET = xSH) + AM_CONDITIONAL(SH64, test x$TARGET = xSH64) + AM_CONDITIONAL(PA, test x$TARGET = xPA) ++AM_CONDITIONAL(M32R, test x$TARGET = xM32R) + + case x$TARGET in + xMIPS*) TARGET=MIPS ;; +--- gcc-3.4.1/libffi/src/m32r/ffi.c 1970-01-01 09:00:00.000000000 +0900 ++++ gcc-3.4.1/libffi/src/m32r/ffi.c 2004-10-22 11:16:10.000000000 +0900 +@@ -0,0 +1,246 @@ ++/* ----------------------------------------------------------------------- ++ ffi.c - Copyright (c) 2004 Renesas Technology ++ ++ M32R Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL 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. ++ ----------------------------------------------------------------------- */ ++ ++#include ++#include ++ ++#include ++ ++/* ffi_prep_args is called by the assembly routine once stack space ++ has been allocated for the function's arguments */ ++ ++/*@-exportheader@*/ ++void ffi_prep_args(char *stack, extended_cif *ecif) ++/*@=exportheader@*/ ++{ ++ register unsigned int i; ++ register int tmp; ++ register unsigned int avn; ++ register void **p_argv; ++ register char *argp; ++ register ffi_type **p_arg; ++ ++ tmp = 0; ++ argp = stack; ++ ++ if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT && ecif->cif->rtype->size > 8 ) { ++ *(void **) argp = ecif->rvalue; ++ argp += 4; ++ } ++ ++ avn = ecif->cif->nargs; ++ p_argv = ecif->avalue; ++ ++ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; ++ (i != 0) && (avn != 0); ++ i--, p_arg++) ++ { ++ size_t z; ++ ++ /* Align if necessary */ ++ if (((*p_arg)->alignment - 1) & (unsigned) argp) { ++ argp = (char *) ALIGN(argp, (*p_arg)->alignment); ++ } ++ ++ if (avn != 0) ++ { ++ avn--; ++ z = (*p_arg)->size; ++ if (z < sizeof(int)) ++ { ++ z = sizeof(int); ++ switch ((*p_arg)->type) ++ { ++ case FFI_TYPE_SINT8: ++ *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); ++ break; ++ ++ case FFI_TYPE_UINT8: ++ *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); ++ break; ++ ++ case FFI_TYPE_SINT16: ++ *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); ++ break; ++ ++ case FFI_TYPE_UINT16: ++ *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ z = (*p_arg)->size; ++ if ( (*p_arg)->alignment != 1 ) ++ memcpy(argp, *p_argv, z); ++ else ++ memcpy(argp + 4 - z, *p_argv, z); ++ z = sizeof(int); ++ break; ++ ++ default: ++ FFI_ASSERT(0); ++ } ++ } ++ else if (z == sizeof(int)) ++ { ++ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); ++ } ++ else ++ { ++ if ( (*p_arg)->type == FFI_TYPE_STRUCT ) ++ { ++ if ( z > 8 ) ++ { ++ *(unsigned int *) argp = (unsigned int)(void *)(* p_argv); ++ z = sizeof(void *); ++ } ++ else ++ { ++ memcpy(argp, *p_argv, z); ++ z = 8; ++ } ++ } ++ else ++ { /* double or long long 64bit */ ++ memcpy(argp, *p_argv, z); ++ } ++ } ++ p_argv++; ++ argp += z; ++ } ++ } ++ ++ return; ++} ++ ++/* Perform machine dependent cif processing */ ++ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ++{ ++ /* Set the return type flag */ ++ switch (cif->rtype->type) ++ { ++ case FFI_TYPE_VOID: ++ cif->flags = (unsigned) cif->rtype->type; ++ break; ++ ++ case FFI_TYPE_STRUCT: ++ if (cif->rtype->size <= 4) ++ { ++ cif->flags = FFI_TYPE_INT; ++ } ++ else if (cif->rtype->size <= 8) ++ { ++ cif->flags = FFI_TYPE_DOUBLE; ++ } ++ else ++ { ++ cif->flags = (unsigned) cif->rtype->type; ++ } ++ break; ++ ++ case FFI_TYPE_SINT64: ++ case FFI_TYPE_UINT64: ++ case FFI_TYPE_DOUBLE: ++ cif->flags = FFI_TYPE_DOUBLE; ++ break; ++ ++ case FFI_TYPE_FLOAT: ++ default: ++ cif->flags = FFI_TYPE_INT; ++ break; ++ } ++ ++ return FFI_OK; ++} ++ ++/*@-declundef@*/ ++/*@-exportheader@*/ ++extern void ffi_call_SYSV(void (*)(char *, extended_cif *), ++ /*@out@*/ extended_cif *, ++ unsigned, unsigned, ++ /*@out@*/ unsigned *, ++ void (*fn)()); ++/*@=declundef@*/ ++/*@=exportheader@*/ ++ ++void ffi_call(/*@dependent@*/ ffi_cif *cif, ++ void (*fn)(), ++ /*@out@*/ void *rvalue, ++ /*@dependent@*/ void **avalue) ++{ ++ extended_cif ecif; ++ ++ ecif.cif = cif; ++ ecif.avalue = avalue; ++ ++ /* If the return value is a struct and we don't have a return */ ++ /* value address then we need to make one */ ++ ++ if ((rvalue == NULL) && ++ (cif->rtype->type == FFI_TYPE_STRUCT)) ++ { ++ /*@-sysunrecog@*/ ++ ecif.rvalue = alloca(cif->rtype->size); ++ /*@=sysunrecog@*/ ++ } ++ else ++ ecif.rvalue = rvalue; ++ ++ ++ switch (cif->abi) ++ { ++ case FFI_SYSV: ++ /*@-usedef@*/ ++ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, ++ cif->flags, ecif.rvalue, fn); ++ if ( cif->rtype->type == FFI_TYPE_STRUCT ) ++ { ++ int size = cif->rtype->size; ++ int align = cif->rtype->alignment; ++ if (size < 4) ++ { ++ if ( align == 1 ) ++ *(unsigned long *)(ecif.rvalue) <<= (4 - size)*8; ++ } ++ else if ( 4 < size && size < 8 ) ++ { ++ if ( align == 1 ) ++ { ++ memcpy(ecif.rvalue, ecif.rvalue + 8-size, size); ++ } ++ else if (align == 2) ++ { ++ if (size & 1) size += 1; ++ if (size != 8) ++ memcpy(ecif.rvalue, ecif.rvalue + 8-size, size); ++ } ++ } ++ } ++ /*@=usedef@*/ ++ break; ++ default: ++ FFI_ASSERT(0); ++ break; ++ } ++} +--- gcc-3.4.1/libffi/src/m32r/ffitarget.h 1970-01-01 09:00:00.000000000 +0900 ++++ gcc-3.4.1/libffi/src/m32r/ffitarget.h 2004-10-22 10:22:24.000000000 +0900 +@@ -0,0 +1,48 @@ ++/* -----------------------------------------------------------------*-C-*- ++ ffitarget.h - Copyright (c) 2004 Renesas Technology. ++ Target configuration macros for M32R. ++ ++ 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. ++ ++ ----------------------------------------------------------------------- */ ++ ++#ifndef LIBFFI_TARGET_H ++#define LIBFFI_TARGET_H ++ ++/* ---- Generic type definitions ----------------------------------------- */ ++ ++#ifndef LIBFFI_ASM ++typedef unsigned long ffi_arg; ++typedef signed long ffi_sarg; ++ ++typedef enum ffi_abi { ++ FFI_FIRST_ABI = 0, ++ FFI_SYSV, ++ FFI_DEFAULT_ABI = FFI_SYSV, ++ FFI_LAST_ABI = FFI_DEFAULT_ABI + 1 ++} ffi_abi; ++#endif ++ ++#define FFI_CLOSURES 0 ++#define FFI_TRAMPOLINE_SIZE 24 ++#define FFI_NATIVE_RAW_API 0 ++ ++#endif ++ +--- gcc-3.4.1/libffi/src/m32r/sysv.S 1970-01-01 09:00:00.000000000 +0900 ++++ gcc-3.4.1/libffi/src/m32r/sysv.S 2004-10-22 10:22:24.000000000 +0900 +@@ -0,0 +1,122 @@ ++/* ----------------------------------------------------------------------- ++ sysv.S - Copyright (c) 2004 Renesas Technology ++ ++ M32R Foreign Function Interface ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL 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. ++ ----------------------------------------------------------------------- */ ++ ++#define LIBFFI_ASM ++#include ++#include ++#ifdef HAVE_MACHINE_ASM_H ++#include ++#else ++/* XXX these lose for some platforms, I'm sure. */ ++#define CNAME(x) x ++#define ENTRY(x) .globl CNAME(x)! .type CNAME(x),%function! CNAME(x): ++#endif ++ ++.text ++ ++ /* R0: ffi_prep_args */ ++ /* R1: &ecif */ ++ /* R2: cif->bytes */ ++ /* R3: fig->flags */ ++ /* sp+0: ecif.rvalue */ ++ /* sp+4: fn */ ++ ++ /* This assumes we are using gas. */ ++ENTRY(ffi_call_SYSV) ++ /* Save registers */ ++ push fp ++ push lr ++ push r3 ++ push r2 ++ push r1 ++ push r0 ++ mv fp, sp ++ ++ /* Make room for all of the new args. */ ++ sub sp, r2 ++ ++ /* Place all of the ffi_prep_args in position */ ++ mv lr, r0 ++ mv r0, sp ++ /* R1 already set */ ++ ++ /* And call */ ++ jl lr ++ ++ /* move first 4 parameters in registers */ ++ ld r0, @(0,sp) ++ ld r1, @(4,sp) ++ ld r2, @(8,sp) ++ ld r3, @(12,sp) ++ ++ /* and adjust stack */ ++ ld lr, @(8,fp) ++ cmpi lr, #16 ++ bc adjust_stack ++ ldi lr, #16 ++adjust_stack: ++ add sp, lr ++ ++ /* call function */ ++ ld lr, @(28,fp) ++ jl lr ++ ++ /* Remove the space we pushed for the args */ ++ mv sp, fp ++ ++ /* Load R2 with the pointer to storage for the return value */ ++ ld r2, @(24,sp) ++ ++ /* Load R3 with the return type code */ ++ ld r3, @(12,sp) ++ ++ /* If the return value pointer is NULL, assume no return value. */ ++ beqz r2, epilogue ++ ++/* return INT */ ++ ldi r4, #FFI_TYPE_INT ++ bne r3, r4, return_double ++ st r0, @r2 ++ bra epilogue ++ ++return_double: ++/* return DOUBLE or LONGDOUBLE */ ++ ldi r4, #FFI_TYPE_DOUBLE ++ bne r3, r4, epilogue ++ st r0, @r2 ++ st r1, @(4,r2) ++ ++epilogue: ++ pop r0 ++ pop r1 ++ pop r2 ++ pop r3 ++ pop lr ++ pop fp ++ jmp lr ++ ++.ffi_call_SYSV_end: ++ .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) ++ +--- gcc-3.4.1/libffi/src/types.c 2004-03-12 10:35:31.000000000 +0900 ++++ gcc-3.4.1/libffi/src/types.c 2004-10-22 10:22:24.000000000 +0900 +@@ -53,7 +53,7 @@ FFI_INTEGRAL_TYPEDEF(pointer, 4, 4, FFI_ + + #endif + +-#if defined X86 || defined X86_WIN32 || defined ARM || defined M68K ++#if defined X86 || defined X86_WIN32 || defined ARM || defined M68K || defined M32R + + FFI_INTEGRAL_TYPEDEF(uint64, 8, 4, FFI_TYPE_UINT64); + FFI_INTEGRAL_TYPEDEF(sint64, 8, 4, FFI_TYPE_SINT64); +@@ -76,7 +76,7 @@ FFI_INTEGRAL_TYPEDEF(sint64, 8, 8, FFI_T + FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); + FFI_INTEGRAL_TYPEDEF(longdouble, 12, 4, FFI_TYPE_LONGDOUBLE); + +-#elif defined ARM || defined SH || defined POWERPC_AIX || defined POWERPC_DARWIN ++#elif defined ARM || defined SH || defined M32R || defined POWERPC_AIX || defined POWERPC_DARWIN + + FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); + FFI_INTEGRAL_TYPEDEF(longdouble, 8, 4, FFI_TYPE_LONGDOUBLE); --- gcc-3.4-3.4.6.orig/debian/patches/arm-bigendian.dpatch +++ gcc-3.4-3.4.6/debian/patches/arm-bigendian.dpatch @@ -0,0 +1,86 @@ +#! /bin/sh -e + +src=gcc +if [ $# -eq 3 -a "$2" = '-d' ]; then + pdir="-d $3" + src=$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 -p0 --fuzz 10 < $0 + ;; + -unpatch) + patch $pdir -f --no-backup-if-mismatch -R -p0 --fuzz 10 < $0 + ;; + *) + echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" + exit 1 +esac +exit 0 + +--- gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 ++++ gcc/config/arm/linux-elf.h 2004-07-02 14:46:29.225443757 +0200 +@@ -30,17 +30,34 @@ + /* Do not assume anything about header files. */ + #define NO_IMPLICIT_EXTERN_C + ++/* ++ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* ++ * (big endian) configurations. ++ */ ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END ++#define TARGET_ENDIAN_OPTION "mbig-endian" ++#define TARGET_LINKER_EMULATION "armelfb_linux" ++#else ++#define TARGET_ENDIAN_DEFAULT 0 ++#define TARGET_ENDIAN_OPTION "mlittle-endian" ++#define TARGET_LINKER_EMULATION "armelf_linux" ++#endif ++ + /* Default is to use APCS-32 mode. */ + #undef TARGET_DEFAULT +-#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) ++#define TARGET_DEFAULT \ ++ ( ARM_FLAG_APCS_32 | \ ++ ARM_FLAG_MMU_TRAPS | \ ++ TARGET_ENDIAN_DEFAULT ) + + #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 + +-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" ++#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" + + #undef MULTILIB_DEFAULTS + #define MULTILIB_DEFAULTS \ +- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } ++ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } + + #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" + +@@ -89,7 +106,7 @@ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ + -X \ +- %{mbig-endian:-EB}" \ ++ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ + SUBTARGET_EXTRA_LINK_SPEC + + #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() +--- gcc/config.gcc 2004-04-17 04:28:24.000000000 +0200 ++++ gcc/config.gcc 2004-07-02 14:44:40.045822542 +0200 +@@ -666,6 +666,11 @@ + ;; + arm*-*-linux*) # ARM GNU/Linux with ELF + tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" ++ case $target in ++ arm*b-*) ++ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" ++ ;; ++ esac + tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" + gnu_ld=yes --- gcc-3.4-3.4.6.orig/debian/patches/svn-updates.dpatch +++ gcc-3.4-3.4.6/debian/patches/svn-updates.dpatch @@ -0,0 +1,34 @@ +#! /bin/sh -e + +# DP: SVN updates from the 3.4 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 + ;; + -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 + --- gcc-3.4-3.4.6.orig/debian/patches/config-ml.dpatch +++ gcc-3.4-3.4.6/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" ++ # 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" ++ ++ 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 --- gcc-3.4-3.4.6.orig/debian/patches/i386-biarch.dpatch +++ gcc-3.4-3.4.6/debian/patches/i386-biarch.dpatch @@ -0,0 +1,329 @@ +#! /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 -p1 < $0 + cd ${dir}libjava && autoconf + ;; + -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 -Nurp src.orig/gcc/config/i386/biarch.h src/gcc/config/i386/biarch.h +--- src.orig/gcc/config/i386/biarch.h 1969-12-31 19:00:00.000000000 -0500 ++++ src/gcc/config/i386/biarch.h 2004-08-03 22:01:00.000000000 -0400 +@@ -0,0 +1,26 @@ ++/* Make configure files to produce biarch compiler defaulting to 32bit mode. ++ This file must be included very first, while the OS specific file later ++ to overwrite otherwise wrong defaults. ++ Copyright (C) 2001, 2004 Free Software Foundation, Inc. ++ Contributed by Bo Thorsen . ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++along with GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++#define TARGET_64BIT_DEFAULT 0 ++#define TARGET_BI_ARCH 1 ++#define DRIVER_SELF_SPECS "%{m64:%{!mtune:-mtune=x86-64}}" +diff -Nurp src.orig/gcc/config/i386/linux.h src/gcc/config/i386/linux.h +--- src.orig/gcc/config/i386/linux.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/gcc/config/i386/linux.h 2004-08-03 22:01:00.000000000 -0400 +@@ -182,6 +182,7 @@ Boston, MA 02111-1307, USA. */ + } \ + } while (0) + ++#ifdef __i386__ + /* Used by crtstuff.c to initialize the base of data-relative relocations. + These are GOT relative on x86, so return the pic register. */ + #ifdef __PIC__ +@@ -201,6 +202,7 @@ Boston, MA 02111-1307, USA. */ + "addl\t$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \ + : "=d"(BASE)) + #endif ++#endif + + #undef NEED_INDICATE_EXEC_STACK + #define NEED_INDICATE_EXEC_STACK 1 +diff -Nurp src.orig/gcc/config/i386/linux64.h src/gcc/config/i386/linux64.h +--- src.orig/gcc/config/i386/linux64.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/gcc/config/i386/linux64.h 2004-08-03 22:09:04.000000000 -0400 +@@ -19,8 +19,11 @@ along with GCC; see the file COPYING. I + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + ++#ifndef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (x86-64 Linux/ELF)"); ++#endif + ++#undef TARGET_OS_CPP_BUILTINS + #define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ +@@ -55,6 +58,7 @@ Boston, MA 02111-1307, USA. */ + done. */ + + #undef LINK_SPEC ++#if TARGET_64BIT_DEFAULT + #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ + %{shared:-shared} \ + %{!shared: \ +@@ -63,8 +67,22 @@ Boston, MA 02111-1307, USA. */ + %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ + %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ + %{static:-static}}" ++#else ++#define LINK_SPEC "%{m64:-m elf_x86_64} %{!m64:-m elf_i386} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ %{!m64:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ ++ %{m64:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ ++ %{static:-static}}" ++#endif + ++#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 +@@ -79,6 +97,7 @@ Boston, MA 02111-1307, USA. */ + #include + #endif + ++#undef MD_FALLBACK_FRAME_STATE_FOR + #ifdef __x86_64__ + #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ + do { \ +diff -Nurp src.orig/gcc/config/i386/x86-64.h src/gcc/config/i386/x86-64.h +--- src.orig/gcc/config/i386/x86-64.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/gcc/config/i386/x86-64.h 2004-08-03 22:01:00.000000000 -0400 +@@ -47,9 +47,15 @@ Boston, MA 02111-1307, USA. */ + #undef CC1_SPEC + #define CC1_SPEC "%(cc1_cpu) %{profile:-p}" + ++#if TARGET_64BIT_DEFAULT + #undef ASM_SPEC + #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \ + %{Wa,*:%*} %{m32:--32} %{!m32:--64}" ++#else ++#undef ASM_SPEC ++#define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \ ++ %{Wa,*:%*} %{!m64:--32} %{m64:--64}" ++#endif + + #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ + asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) +diff -Nurp src.orig/gcc/config.gcc src/gcc/config.gcc +--- src.orig/gcc/config.gcc 2004-08-03 22:07:21.000000000 -0400 ++++ src/gcc/config.gcc 2004-08-03 22:07:53.000000000 -0400 +@@ -991,8 +991,10 @@ i[34567]86-*-linux*libc1) # Intel 80386' + i[34567]86-*-linux*) # Intel 80386's running GNU/Linux + # with ELF format using glibc 2 + # aka GNU/Linux C library 6 +- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" +- tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" ++ tm_file="i386/biarch.h ${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h \ ++ svr4.h linux.h i386/linux.h i386/x86-64.h i386/linux64.h" ++ tmake_file="t-slibgcc-elf-ver t-linux i386/t-linux64" ++ need_64bit_hwint=yes + ;; + x86_64-*-linux*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \ +diff -Nurp src.orig/libffi/Makefile.am src/libffi/Makefile.am +--- src.orig/libffi/Makefile.am 2004-08-03 22:07:21.000000000 -0400 ++++ src/libffi/Makefile.am 2004-08-03 22:01:00.000000000 -0400 +@@ -90,7 +90,7 @@ noinst_LTLIBRARIES = libffi_convenience. + + TARGET_SRC_MIPS_IRIX = src/mips/ffi.c src/mips/o32.S src/mips/n32.S + TARGET_SRC_MIPS_LINUX = src/mips/ffi.c src/mips/o32.S +-TARGET_SRC_X86 = src/x86/ffi.c src/x86/sysv.S ++TARGET_SRC_X86 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S + TARGET_SRC_X86_WIN32 = src/x86/ffi.c src/x86/win32.S + TARGET_SRC_SPARC = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S + TARGET_SRC_ALPHA = src/alpha/ffi.c src/alpha/osf.S +diff -Nurp src.orig/libffi/Makefile.in src/libffi/Makefile.in +--- src.orig/libffi/Makefile.in 2004-08-03 22:07:21.000000000 -0400 ++++ src/libffi/Makefile.in 2004-08-03 22:01:00.000000000 -0400 +@@ -174,7 +174,7 @@ noinst_LTLIBRARIES = libffi_convenience. + + TARGET_SRC_MIPS_IRIX = src/mips/ffi.c src/mips/o32.S src/mips/n32.S + TARGET_SRC_MIPS_LINUX = src/mips/ffi.c src/mips/o32.S +-TARGET_SRC_X86 = src/x86/ffi.c src/x86/sysv.S ++TARGET_SRC_X86 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S + TARGET_SRC_X86_WIN32 = src/x86/ffi.c src/x86/win32.S + TARGET_SRC_SPARC = src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S + TARGET_SRC_ALPHA = src/alpha/ffi.c src/alpha/osf.S +@@ -301,7 +301,7 @@ libffi_convenience_la_LIBADD = + @MIPS_IRIX_TRUE@src/mips/n32.lo + @X86_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @X86_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ +-@X86_TRUE@src/x86/ffi.lo src/x86/sysv.lo ++@X86_TRUE@src/x86/ffi64.lo src/x86/unix64.lo src/x86/ffi.lo src/x86/sysv.lo + @IA64_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @IA64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @IA64_TRUE@src/ia64/ffi.lo src/ia64/unix.lo +@@ -357,8 +357,8 @@ libffi_la_LIBADD = + @MIPS_IRIX_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @MIPS_IRIX_TRUE@src/mips/ffi.lo src/mips/o32.lo src/mips/n32.lo + @X86_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ +-@X86_TRUE@src/raw_api.lo src/java_raw_api.lo src/x86/ffi.lo \ +-@X86_TRUE@src/x86/sysv.lo ++@X86_TRUE@src/raw_api.lo src/java_raw_api.lo src/x86/ffi64.lo src/x86/unix64.lo \ ++@X86_TRUE@src/x86/ffi.lo src/x86/sysv.lo + @IA64_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ + @IA64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ + @IA64_TRUE@src/ia64/ffi.lo src/ia64/unix.lo +diff -Nurp src.orig/libffi/Makefile.am src/libffi/Makefile.am +--- src.orig/libffi/src/x86/ffitarget.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/libffi/src/x86/ffitarget.h 2004-08-03 22:01:00.000000000 -0400 +@@ -33,6 +33,11 @@ + #define X86 + #endif + ++#if defined (X86) && defined (__x86_64__) ++#undef X86 ++#define X86_64 ++#endif ++ + /* ---- Generic type definitions ----------------------------------------- */ + + #ifndef LIBFFI_ASM +diff -Nurp src.orig/libjava/configure.in src/libjava/configure.in +--- src.orig/libjava/configure.in 2004-08-03 22:07:21.000000000 -0400 ++++ src/libjava/configure.in 2004-08-03 22:01:00.000000000 -0400 +@@ -674,16 +674,17 @@ else + AC_DEFINE(HAVE_DLADDR, 1, [Define if you have dladdr()]) + fi + ]) +- if test x"$build" = x"$host"; then +- AC_CHECK_FILES(/proc/self/exe, [ +- AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])]) +- else +- case $host in +- *-linux*) +- AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe]) +- ;; +- esac +- fi ++ case $host in ++ *-linux*) ++ AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe]) ++ ;; ++ *) ++ if test x"$build" = x"$host"; then ++ AC_CHECK_FILES(/proc/self/exe, [ ++ AC_DEFINE(HAVE_PROC_SELF_EXE, 1, [Define if you have /proc/self/exe])]) ++ fi ++ ;; ++ esac + + AM_ICONV + AM_LC_MESSAGES +diff -Nurp src.orig/libjava/include/i386-signal.h src/libjava/include/i386-signal.h +--- src.orig/libjava/include/i386-signal.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/libjava/include/i386-signal.h 2004-08-03 22:01:00.000000000 -0400 +@@ -11,6 +11,10 @@ details. */ + + + #ifndef JAVA_SIGNAL_H ++#ifdef __x86_64__ ++#include "x86_64-signal.h" ++#else ++ + #define JAVA_SIGNAL_H 1 + + #include +@@ -163,6 +167,6 @@ while (0) + * Also, there is at the present time no unwind info in the + * linuxthreads library's signal handlers and so we can't unwind + * through them anyway. */ +- ++#endif /* ! __x86_64__ */ + #endif /* JAVA_SIGNAL_H */ + +diff -Nurp src.orig/libjava/sysdep/i386/locks.h src/libjava/sysdep/i386/locks.h +--- src.orig/libjava/sysdep/i386/locks.h 2004-08-03 22:07:21.000000000 -0400 ++++ src/libjava/sysdep/i386/locks.h 2004-08-03 22:01:00.000000000 -0400 +@@ -24,10 +24,17 @@ compare_and_swap(volatile obj_addr_t *ad + obj_addr_t new_val) + { + char result; +- __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1" +- : "=m"(*addr), "=q"(result) ++#ifdef __x86_64__ ++ __asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1" ++ : "=m"(*(addr)), "=q"(result) + : "r" (new_val), "a"(old), "m"(*addr) + : "memory"); ++#else ++ __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1" ++ : "=m"(*(addr)), "=q"(result) ++ : "r" (new_val), "a"(old), "m"(*addr) ++ : "memory"); ++#endif + return (bool) result; + } + +diff -Nurp src.orig/libtool.m4 src/libtool.m4 +--- src.orig/libtool.m4 2004-08-03 22:07:21.000000000 -0400 ++++ src/libtool.m4 2004-08-03 22:01:00.000000000 -0400 +@@ -189,14 +189,14 @@ ia64-*-hpux*) + rm -rf conftest* + ;; + +-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) ++i[[3456]]86-*-linux*|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in +- x86_64-*linux*) ++ i[[3456]]86-*-linux*|x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) +@@ -212,7 +212,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*li + ;; + *64-bit*) + case $host in +- x86_64-*linux*) ++ i[[3456]]86-*-linux*|x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) --- gcc-3.4-3.4.6.orig/debian/patches/m32r-pie.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-pie.dpatch @@ -0,0 +1,77 @@ +#! /bin/sh -e +# +# +# DP: Author: Kazuhiro Inaoka +# DP: Status: in CVS 4.0-branch +# DP: PIE Support + +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 -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 + +--- gcc-3.4.4/gcc/config.gcc.org 2005-07-29 19:31:19.000000000 +0900 ++++ gcc-3.4.4/gcc/config.gcc 2005-07-29 19:30:07.000000000 +0900 +@@ -1313,7 +1313,6 @@ + ;; + m32r-*-linux*) + tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} m32r/linux.h" +- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" + tmake_file="t-slibgcc-elf-ver m32r/t-linux" + gnu_ld=yes + use_fixproto=yes +@@ -1323,7 +1322,6 @@ + ;; + m32rle-*-linux*) + tm_file="dbxelf.h elfos.h svr4.h linux.h m32r/little.h ${tm_file} m32r/linux.h" +- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" + tmake_file="t-slibgcc-elf-ver m32r/t-linux" + gnu_ld=yes + use_fixproto=yes +--- gcc-3.4.4/gcc/config/m32r/m32r.h.org 2005-07-29 19:22:12.000000000 +0900 ++++ gcc-3.4.4/gcc/config/m32r/m32r.h 2005-07-29 19:24:34.000000000 +0900 +@@ -191,7 +191,7 @@ + + /* Options to pass on to the assembler. */ + #undef ASM_SPEC +-#define ASM_SPEC "%{v} %(asm_cpu) %(relax) %{fpic:-K PIC} %{fPIC:-K PIC}" ++#define ASM_SPEC "%{v} %(asm_cpu) %(relax) %{fpic|fpie:-K PIC} %{fPIC|fPIE:-K PIC}" + + #define LINK_SPEC "%{v} %(link_cpu) %(relax)" + +--- gcc-3.4.4/gcc/config/m32r/linux.h.org 2005-07-29 19:22:21.000000000 +0900 ++++ gcc-3.4.4/gcc/config/m32r/linux.h 2005-07-29 19:24:50.000000000 +0900 +@@ -85,14 +85,20 @@ + %{profile:-lc_p} %{!profile: -lc}}" + + #undef STARTFILE_SPEC ++#if defined HAVE_LD_PIE ++#define STARTFILE_SPEC \ ++ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ ++ crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" ++#else + #define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" ++#endif + + #undef ENDFILE_SPEC + #define ENDFILE_SPEC \ +- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" ++ "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" + + #undef SUBTARGET_CPP_SPEC + #define SUBTARGET_CPP_SPEC "\ --- gcc-3.4-3.4.6.orig/debian/patches/gpc-3.x.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-3.x.dpatch @@ -0,0 +1,41 @@ +#! /bin/sh -e + +# DP: The gpc patch from the gpc tarball. + +if [ "x$gpc_gcc_patch" = "x" ] +then + gpc_gcc_patch=gcc-3.4.3.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-3.4.5.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 -p1 < ${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 -p1 < ${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 --- gcc-3.4-3.4.6.orig/debian/patches/kbsd-gnu-ada.dpatch +++ gcc-3.4-3.4.6/debian/patches/kbsd-gnu-ada.dpatch @@ -0,0 +1,581 @@ +#! /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-3.4.4.old/gcc/ada/Makefile.in 2005-06-25 01:07:05.000000000 +0200 ++++ gcc-3.4.4/gcc/ada/Makefile.in 2005-06-25 01:07:33.000000000 +0200 +@@ -851,6 +851,32 @@ + endif + endif + ++ifeq ($(strip $(filter-out %86 kfreebsd%,$(arch) $(osys))),) ++ LIBGNAT_TARGET_PAIRS = \ ++ a-intnam.ads<45intnam.ads \ ++ g-soccon.ads<35soccon.ads \ ++ a-numaux.adb<86numaux.adb \ ++ a-numaux.ads<86numaux.ads \ ++ s-inmaop.adb<7sinmaop.adb \ ++ s-intman.adb<7sintman.adb \ ++ s-mastop.adb<5omastop.adb \ ++ s-osinte.adb<5iosinte.adb \ ++ s-osinte.ads<57osinte.ads \ ++ s-osprim.adb<7sosprim.adb \ ++ s-taprop.adb<5itaprop.adb \ ++ s-taspri.ads<5itaspri.ads \ ++ s-tpopsp.adb<5atpopsp.adb \ ++ system.ads<56system.ads ++ ++ TOOLS_TARGET_PAIRS = mlib-tgt.adb<5lml-tgt.adb ++ SYMLIB = -laddr2line -lbfd -liberty $(LIBINTL) ++ THREADSLIB = -lpthread ++ GNATLIB_SHARED = gnatlib-shared-dual ++ GMEM_LIB = gmemlib ++ PREFIX_OBJS = $(PREFIX_REAL_OBJS) ++ LIBRARY_VERSION := $(LIB_VERSION) ++endif ++ + ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),) + LIBGNAT_TARGET_PAIRS = \ + a-intnam.ads<45intnam.ads \ +--- gcc-3.4.4.old/gcc/ada/57osinte.ads 2005-06-25 01:06:36.000000000 +0200 ++++ gcc-3.4.4/gcc/ada/57osinte.ads 2005-06-25 01:06:03.000000000 +0200 +@@ -0,0 +1,514 @@ ++------------------------------------------------------------------------------ ++-- -- ++-- GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS -- ++-- -- ++-- S Y S T E M . O S _ I N T E R F A C E -- ++-- -- ++-- S p e c -- ++-- -- ++-- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- ++-- -- ++-- GNARL is free software; you can redistribute it and/or modify it under -- ++-- terms of the GNU General Public License as published by the Free Soft- -- ++-- ware Foundation; either version 2, or (at your option) any later ver- -- ++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- -- ++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- ++-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- ++-- for more details. You should have received a copy of the GNU General -- ++-- Public License distributed with GNARL; see file COPYING. If not, write -- ++-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- ++-- MA 02111-1307, USA. -- ++-- -- ++-- 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. -- ++-- -- ++-- GNARL was developed by the GNARL team at Florida State University. -- ++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- ++-- -- ++------------------------------------------------------------------------------ ++ ++-- This is the GNU/kFreeBSD (GNU/LinuxThreads) version of this package. ++ ++-- This package encapsulates all direct interfaces to OS services ++-- that are needed by children of System. ++ ++-- PLEASE DO NOT add any with-clauses to this package ++-- or remove the pragma Elaborate_Body. ++-- It is designed to be a bottom-level (leaf) package. ++ ++with Interfaces.C; ++package System.OS_Interface is ++ pragma Preelaborate; ++ ++ pragma Linker_Options ("-lpthread"); ++ ++ subtype int is Interfaces.C.int; ++ subtype char is Interfaces.C.char; ++ subtype short is Interfaces.C.short; ++ subtype long is Interfaces.C.long; ++ subtype unsigned is Interfaces.C.unsigned; ++ subtype unsigned_short is Interfaces.C.unsigned_short; ++ subtype unsigned_long is Interfaces.C.unsigned_long; ++ subtype unsigned_char is Interfaces.C.unsigned_char; ++ subtype plain_char is Interfaces.C.plain_char; ++ subtype size_t is Interfaces.C.size_t; ++ ++ ----------- ++ -- Errno -- ++ ----------- ++ ++ function errno return int; ++ pragma Import (C, errno, "__get_errno"); ++ ++ EAGAIN : constant := 35; ++ EINTR : constant := 4; ++ EINVAL : constant := 22; ++ ENOMEM : constant := 12; ++ EPERM : constant := 1; ++ ETIMEDOUT : constant := 60; ++ ++ ------------- ++ -- Signals -- ++ ------------- ++ ++ Max_Interrupt : constant := 128; ++ type Signal is new int range 0 .. Max_Interrupt; ++ for Signal'Size use int'Size; ++ ++ SIGHUP : constant := 1; -- hangup ++ SIGINT : constant := 2; -- interrupt (rubout) ++ SIGQUIT : constant := 3; -- quit (ASCD FS) ++ SIGILL : constant := 4; -- illegal instruction (not reset) ++ SIGTRAP : constant := 5; -- trace trap (not reset) ++ SIGIOT : constant := 6; -- IOT instruction ++ SIGABRT : constant := 6; -- used by abort, replace SIGIOT in the future ++ SIGEMT : constant := 7; -- EMT instruction ++ SIGFPE : constant := 8; -- floating point exception ++ SIGKILL : constant := 9; -- kill (cannot be caught or ignored) ++ SIGBUS : constant := 10; -- bus error ++ SIGSEGV : constant := 11; -- segmentation violation ++ SIGSYS : constant := 12; -- bad argument to system call ++ SIGPIPE : constant := 13; -- write on a pipe with no one to read it ++ SIGALRM : constant := 14; -- alarm clock ++ SIGTERM : constant := 15; -- software termination signal from kill ++ SIGURG : constant := 16; -- urgent condition on IO channel ++ SIGSTOP : constant := 17; -- stop (cannot be caught or ignored) ++ SIGTSTP : constant := 18; -- user stop requested from tty ++ SIGCONT : constant := 19; -- stopped process has been continued ++ SIGCLD : constant := 20; -- alias for SIGCHLD ++ SIGCHLD : constant := 20; -- child status change ++ SIGTTIN : constant := 21; -- background tty read attempted ++ SIGTTOU : constant := 22; -- background tty write attempted ++ SIGIO : constant := 23; -- I/O possible (Solaris SIGPOLL alias) ++ SIGXCPU : constant := 24; -- CPU time limit exceeded ++ SIGXFSZ : constant := 25; -- filesize limit exceeded ++ SIGVTALRM : constant := 26; -- virtual timer expired ++ SIGPROF : constant := 27; -- profiling timer expired ++ SIGWINCH : constant := 28; -- window size change ++ SIGINFO : constant := 29; -- information request (NetBSD/FreeBSD) ++ SIGUSR1 : constant := 30; -- user defined signal 1 ++ SIGUSR2 : constant := 31; -- user defined signal 2 ++ SIGLTHRRES : constant := 32; -- GNU/LinuxThreads restart signal ++ SIGLTHRCAN : constant := 33; -- GNU/LinuxThreads cancel signal ++ SIGLTHRDBG : constant := 34; -- GNU/LinuxThreads debugger signal ++ ++ SIGADAABORT : constant := SIGABRT; ++ -- Change this if you want to use another signal for task abort. ++ -- SIGTERM might be a good one. ++ ++ type Signal_Set is array (Natural range <>) 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; ++ type pthread_t is private; ++ subtype Thread_Id is 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 pthread_t is new unsigned_long; ++ ++ 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; --- gcc-3.4-3.4.6.orig/debian/patches/cpu-default-i486.dpatch +++ gcc-3.4-3.4.6/debian/patches/cpu-default-i486.dpatch @@ -0,0 +1,55 @@ +#! /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.orig 2006-01-14 09:37:05.449714448 +0100 ++++ gcc/config/i386/i386.c 2006-01-14 09:41:48.031755448 +0100 +@@ -1232,7 +1232,7 @@ + ix86_tune_defaulted = 1; + } + if (!ix86_arch_string) +- ix86_arch_string = TARGET_64BIT ? "x86-64" : "i386"; ++ ix86_arch_string = TARGET_64BIT ? "x86-64" : "i486"; + + if (ix86_cmodel_string != 0) + { +--- gcc/config/i386/i386.h.orig 2005-05-10 03:16:52.000000000 +0200 ++++ gcc/config/i386/i386.h 2006-01-14 10:54:57.033525760 +0100 +@@ -94,13 +94,13 @@ + + /* Macros used in the machine description to test the flags. */ + +-/* configure can arrange to make this 2, to force a 486. */ ++/* configure can arrange to make this 1, to force a 486. */ + + #ifndef TARGET_CPU_DEFAULT + #ifdef TARGET_64BIT_DEFAULT + #define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_k8 + #else +-#define TARGET_CPU_DEFAULT 0 ++#define TARGET_CPU_DEFAULT TARGET_CPU_DEFAULT_i486 + #endif + #endif + --- gcc-3.4-3.4.6.orig/debian/patches/m32r-auto.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-auto.dpatch @@ -0,0 +1,97 @@ +#! /bin/sh -e +# +# +# DP: Author: Kazuhiro Inaoka +# DP: Fixed PR target/26775 target/26776 + +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 -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 + +--- gcc/gcc/config/m32r/m32r.c.orig 2006-03-01 16:28:44.000000000 +0900 ++++ gcc/gcc/config/m32r/m32r.c 2006-03-21 15:33:53.894564698 +0900 +@@ -2087,11 +2087,19 @@ m32r_output_function_epilogue (FILE * fi + else if (reg_offset < 32768) + fprintf (file, "\tadd3 %s,%s,%s%d\n", + sp_str, sp_str, IMMEDIATE_PREFIX, reg_offset); +- else ++ else if (reg_offset <= 0xffffff) + fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n", + reg_names[PROLOGUE_TMP_REGNUM], + IMMEDIATE_PREFIX, reg_offset, + sp_str, reg_names[PROLOGUE_TMP_REGNUM]); ++ else ++ fprintf (file, "\tseth %s,%shigh(%d)\n\tor3 %s,%s,%slow(%d)\n\tadd %s,%s\n", ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, reg_offset, ++ reg_names[PROLOGUE_TMP_REGNUM], ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, reg_offset, ++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]); + } + else if (frame_pointer_needed) + { +@@ -2102,10 +2110,20 @@ m32r_output_function_epilogue (FILE * fi + else if (reg_offset < 32768) + fprintf (file, "\tadd3 %s,%s,%s%d\n", + sp_str, fp_str, IMMEDIATE_PREFIX, reg_offset); ++ else if (reg_offset <= 0xffffff) ++ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n\tmv %s,%s\n", ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, reg_offset, ++ reg_names[PROLOGUE_TMP_REGNUM], fp_str, ++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]); + else +- fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n", ++ fprintf (file, "\tseth %s,%shigh(%d)\nor3 %s,%s,%slow(%d)\n\tadd %s,%s\n\tmv %s,%s\n", ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, reg_offset, ++ reg_names[PROLOGUE_TMP_REGNUM], + reg_names[PROLOGUE_TMP_REGNUM], + IMMEDIATE_PREFIX, reg_offset, ++ reg_names[PROLOGUE_TMP_REGNUM], fp_str, + sp_str, reg_names[PROLOGUE_TMP_REGNUM]); + } + else +@@ -2127,8 +2145,26 @@ m32r_output_function_epilogue (FILE * fi + + /* Remove varargs area if present. */ + if (current_frame_info.pretend_size != 0) +- fprintf (file, "\taddi %s,%s%d\n", +- sp_str, IMMEDIATE_PREFIX, current_frame_info.pretend_size); ++ if (current_frame_info.pretend_size < 128) ++ fprintf (file, "\taddi %s,%s%d\n", ++ sp_str, IMMEDIATE_PREFIX, current_frame_info.pretend_size); ++ else if (current_frame_info.pretend_size < 32768) ++ fprintf (file, "\tadd3 %s,%s,%s%d\n", ++ sp_str, sp_str, IMMEDIATE_PREFIX, ++ current_frame_info.pretend_size); ++ else if (current_frame_info.pretend_size <= 0xffffff) ++ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n", ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, current_frame_info.pretend_size, ++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]); ++ else ++ fprintf (file, "\tseth %s,%shigh(%d)\n\tor3 %s,%s,%slow(%d)\n\tadd %s,%s\n", ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, current_frame_info.pretend_size, ++ reg_names[PROLOGUE_TMP_REGNUM], ++ reg_names[PROLOGUE_TMP_REGNUM], ++ IMMEDIATE_PREFIX, current_frame_info.pretend_size, ++ sp_str, reg_names[PROLOGUE_TMP_REGNUM]); + + /* Emit the return instruction. */ + if (M32R_INTERRUPT_P (fn_type)) --- gcc-3.4-3.4.6.orig/debian/patches/m32r-remove-addsi3.dpatch +++ gcc-3.4-3.4.6/debian/patches/m32r-remove-addsi3.dpatch @@ -0,0 +1,134 @@ +#! /bin/sh -e +# +# +# DP: Author: Kazuhiro Inaoka +# DP: Fixed FAIL gcc.dg/2004013-1.c. + +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 -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 + +--- gcc-3.4.4/gcc/config/m32r/m32r.c (revision 109855) ++++ gcc-3.4.4/gcc/config/m32r/m32r.c (working copy) +@@ -1028,6 +1028,20 @@ + { + case EQ: + if (GET_CODE (y) == CONST_INT ++ && UINT16_P (INTVAL (y)) /* Reg equal to small const. */ ++ && y != const0_rtx) ++ { ++ rtx tmp = gen_reg_rtx (SImode); ++ ++ emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y)))); ++ x = tmp; ++ y = const0_rtx; ++ } ++#if 0 ++ /* ++ * Removed for miss optimizing at simplify_relational_operation(). ++ */ ++ else if (GET_CODE (y) == CONST_INT + && CMP_INT16_P (INTVAL (y)) /* Reg equal to small const. */ + && y != const0_rtx) + { +@@ -1037,6 +1051,7 @@ + x = tmp; + y = const0_rtx; + } ++#endif + else if (CONSTANT_P (y)) /* Reg equal to const. */ + { + rtx tmp = force_reg (GET_MODE (x), y); +@@ -1151,6 +1166,20 @@ + /* Reg/smallconst equal comparison. */ + if (compare_code == EQ + && GET_CODE (y) == CONST_INT ++ && UINT16_P (INTVAL (y))) ++ { ++ rtx tmp = gen_reg_rtx (SImode); ++ ++ emit_insn (gen_xorsi3 (tmp, x, GEN_INT (INTVAL (y)))); ++ return gen_rtx (code, CCmode, tmp, const0_rtx); ++ } ++ ++#if 0 ++ /* ++ * Removed for miss optimizing at simplify_relational_operation(). ++ */ ++ if (compare_code == EQ ++ && GET_CODE (y) == CONST_INT + && CMP_INT16_P (INTVAL (y))) + { + rtx tmp = gen_reg_rtx (SImode); +@@ -1158,6 +1187,7 @@ + emit_insn (gen_addsi3 (tmp, x, GEN_INT (-INTVAL (y)))); + return gen_rtx (code, CCmode, tmp, const0_rtx); + } ++#endif + + /* Reg/const equal comparison. */ + if (compare_code == EQ +Index: m32r.md +=================================================================== +--- gcc-3.4.4/gcc/config/m32r/m32r.md (revision 109855) ++++ gcc-3.4.4/gcc/config/m32r/m32r.md (working copy) +@@ -1690,7 +1691,7 @@ + DONE; + } + +- if (! reg_or_eq_int16_operand (op2, mode)) ++ if (! reg_or_uint16_operand (op2, mode)) + op2 = force_reg (mode, op2); + + emit_insn (gen_seq_insn (op0, op1, op2)); +@@ -1752,7 +1753,7 @@ + (define_insn "seq_insn" + [(set (match_operand:SI 0 "register_operand" "=r,r,??r,r") + (eq:SI (match_operand:SI 1 "register_operand" "r,r,r,r") +- (match_operand:SI 2 "reg_or_eq_int16_operand" "r,r,r,PK"))) ++ (match_operand:SI 2 "reg_or_uint16_operand" "r,r,r,K"))) + (clobber (reg:CC 17)) + (clobber (match_scratch:SI 3 "=1,2,&r,r"))] + "TARGET_M32R" +@@ -1763,7 +1764,7 @@ + (define_split + [(set (match_operand:SI 0 "register_operand" "") + (eq:SI (match_operand:SI 1 "register_operand" "") +- (match_operand:SI 2 "reg_or_eq_int16_operand" ""))) ++ (match_operand:SI 2 "reg_or_uint16_operand" ""))) + (clobber (reg:CC 17)) + (clobber (match_scratch:SI 3 ""))] + "TARGET_M32R && reload_completed" +@@ -1791,10 +1792,15 @@ + op1 = op3; + } + +- if (GET_CODE (op2) == CONST_INT && (value = INTVAL (op2)) != 0 +- && CMP_INT16_P (value)) +- emit_insn (gen_addsi3 (op3, op1, GEN_INT (-value))); +- else ++/* ++ * Removed for miss optimizing at simplify_relational_operation(). ++ * ++ * if (GET_CODE (op2) == CONST_INT && (value = INTVAL (op2)) != 0 ++ * && !(GET_CODE (op1) == REG && REG_POINTER (op1)) ++ * && CMP_INT16_P (value)) ++ * emit_insn (gen_addsi3 (op3, op1, GEN_INT (-value))); ++ * else ++ */ + emit_insn (gen_xorsi3 (op3, op1, op2)); + + emit_insn (gen_cmp_ltusi_insn (op3, GEN_INT (1))); --- gcc-3.4-3.4.6.orig/debian/patches/gpc-updates.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-updates.dpatch @@ -0,0 +1,73 @@ +#! /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 + +From: Waldek Hebisch +Sender: gpc-owner@gnu.de +To: gpc@gnu.de +Subject: Re: New (20060215) snapshot +Date: Sat, 25 Feb 2006 13:43:33 +0100 (CET) + + +Investigating Chief's report I have found that GPC parser may crash +due to undetected parser stack overflow. To avoid the problem you +can either apply the following patch to `parse.c' or patch `parse.y' +and `glr.c' from bison distribution. The second way is "better", +but requires you to have bison-2.1 and to patch its installotion. +If you do not want to mess with bison patch to `parse.c' should be +enough to avoid problems with GPC. Patches to `parse.y' and `glr.c' +are in attachement. Both patches increase size of GPC parser stack. + + +--- ../../../rr/gpc/p/parse.c 2006-02-15 03:05:20.000000000 +0100 ++++ gcc/p/parse.c 2006-02-25 14:06:37.639531864 +0100 +@@ -287,6 +287,7 @@ + /* Copy the first part of user declarations. */ + #line 63 "parse.y" + ++#define YYMAXDEPTH 200000 + #include "gpc.h" + + /* A few keywords of some dialects can be parsed as regular identifiers +@@ -8277,7 +8278,7 @@ + size_t yysize, yynewSize; + size_t yyn; + yysize = yystack->yynextFree - yystack->yyitems; +- if (YYMAXDEPTH <= yysize) ++ if (YYMAXDEPTH < yysize + YYHEADROOM) + yyMemoryExhausted (yystack); + yynewSize = 2*yysize; + if (YYMAXDEPTH < yynewSize) + +--- 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) --- gcc-3.4-3.4.6.orig/debian/patches/gpc-bison-2.2.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-bison-2.2.dpatch @@ -0,0 +1,162 @@ +#! /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: gpc fixes for bison-2.2 + +--- gcc/p/ChangeLog.orig Fri Mar 24 02:47:15 2006 ++++ gcc/p/ChangeLog Sat May 20 02:55:11 2006 +@@ -1,5 +1,22 @@ + ChangeLog -- Edit History for GPC, the GNU Pascal Compiler, since version 2.1 + ============================================================================= ++ ++2006-05-19 Frank Heckenbach ++ ++ * gpc.h: correct conditional check for including "parse.h" ++ (recent Bison versions output tokens as enum values, not ++ as #defines anymore) ++ ++ * parse.y: move most of the first section of C code below ++ the token declarations, so it doesn't appear in parse.h ++ with Bison 2.2, as it is parser-private stuff which would ++ cause some unused-warnings otherwise; correct "%expect-rr" ++ number as Bison 2.2 gives errors instead of warnings on ++ mismatch ++ ++ * utils/mk-t-inc: minor portability fix (some sed versions ++ require ";" before "}") ++ + 2006-03-09 Waldek Hebisch + + * predef.c: build_predef_call (): handle named exit from a method +--- gcc/p/gpc.h.orig Sat May 20 02:09:15 2006 ++++ gcc/p/gpc.h Sat May 20 02:12:07 2006 +@@ -887,7 +887,7 @@ + #define YYLTYPE_IS_DECLARED + + /* parse.c contains the same declarations again */ +-#ifndef LEX_ID ++#ifndef YYTOKENTYPE + #include "parse.h" + #endif + +--- gcc/p/parse.y.orig Fri Mar 24 02:47:15 2006 ++++ gcc/p/parse.y Sat May 20 02:37:44 2006 +@@ -66,38 +66,6 @@ + #ifdef GCC_4_0 + #include "cgraph.h" + #endif +- +-/* A few keywords of some dialects can be parsed as regular identifiers +- and checked from the parser actions => fewer special tokens. */ +-#define ASSERT_ID(id, location, pseudo_keyword) \ +- do if (!IDENTIFIER_IS_BUILT_IN (id, pseudo_keyword) || !PD_ACTIVE (IDENTIFIER_BUILT_IN_VALUE (id))) \ +- { yyerror_id (id, &location); YYERROR; } while (0) +- +-enum { od_none, od_uses, od_label, od_const, od_type, od_var, od_routine }; +-static int check_decl_order (int, int); +- +-extern int main_yyparse (void); +-#define yyparse main_yyparse +- +-union yyGLRStackItem; +-static void locations (YYLTYPE *, const union yyGLRStackItem *, int); +-#define YYLLOC_DEFAULT(DEST, SRC, N) locations (&DEST, SRC, N) +-#ifndef GCC_3_4 +-#define LOCATION_NOTE(LOC) if (current_function_decl) emit_line_note ((LOC).first_file, (LOC).first_line) +-#else +-#define LOCATION_NOTE(LOC) if (current_function_decl) \ +- { \ +- location_t loc_aux; \ +- loc_aux.file = (LOC).first_file; \ +- loc_aux.line = (LOC).first_line; \ +- emit_line_note (loc_aux); \ +- } +-#endif +-#define COPYLOC(D, S) /* @@ ? (* (YYLTYPE *) memcpy (&(D), &(S), sizeof (YYLTYPE))) */ (S) +- +-#define YYASSERT gcc_assert +-#define YYMALLOC (void *) xmalloc +-#define YYREALLOC (void *) xrealloc + %} + + %debug +@@ -106,7 +74,7 @@ + %glr-parser + %no-default-prec + %expect 62 +-%expect-rr 24 ++%expect-rr 25 + + /* The semantic values */ + %union { +@@ -206,6 +174,40 @@ + array_index_list remote_directive operator_symbol string_constant variant_list + rest_of_variant new_pointer_type conformant_array enumerated_type id_list1 err + optional_rename attrib id_list id optional_formal_parameter_list0 ++ ++%{ ++/* A few keywords of some dialects can be parsed as regular identifiers ++ and checked from the parser actions => fewer special tokens. */ ++#define ASSERT_ID(id, location, pseudo_keyword) \ ++ do if (!IDENTIFIER_IS_BUILT_IN (id, pseudo_keyword) || !PD_ACTIVE (IDENTIFIER_BUILT_IN_VALUE (id))) \ ++ { yyerror_id (id, &location); YYERROR; } while (0) ++ ++enum { od_none, od_uses, od_label, od_const, od_type, od_var, od_routine }; ++static int check_decl_order (int, int); ++ ++extern int main_yyparse (void); ++#define yyparse main_yyparse ++ ++union yyGLRStackItem; ++static void locations (YYLTYPE *, const union yyGLRStackItem *, int); ++#define YYLLOC_DEFAULT(DEST, SRC, N) locations (&DEST, SRC, N) ++#ifndef GCC_3_4 ++#define LOCATION_NOTE(LOC) if (current_function_decl) emit_line_note ((LOC).first_file, (LOC).first_line) ++#else ++#define LOCATION_NOTE(LOC) if (current_function_decl) \ ++ { \ ++ location_t loc_aux; \ ++ loc_aux.file = (LOC).first_file; \ ++ loc_aux.line = (LOC).first_line; \ ++ emit_line_note (loc_aux); \ ++ } ++#endif ++#define COPYLOC(D, S) /* @@ ? (* (YYLTYPE *) memcpy (&(D), &(S), sizeof (YYLTYPE))) */ (S) ++ ++#define YYASSERT gcc_assert ++#define YYMALLOC (void *) xmalloc ++#define YYREALLOC (void *) xrealloc ++%} + + %% + +--- gcc/p/utils/mk-t-inc.orig Sat May 20 02:48:14 2006 ++++ gcc/p/utils/mk-t-inc Sat May 20 02:48:16 2006 +@@ -71,6 +71,6 @@ + { + cat "$GCCDIR/tree.def" + echo 'DEFTREECODE (LAST_AND_UNUSED_C_TREE_CODE, "unused", '"'x', 0)" +- sed -e '/#ifdef EGCS/,${/#ifdef EGCS/d;/#else/,/#endif/d}' "$GCCDIR/p/p-tree.def" ++ sed -e '/#ifdef EGCS/,${/#ifdef EGCS/d;/#else/,/#endif/d;}' "$GCCDIR/p/p-tree.def" + } | sed -ne ':loop;/\\$/{N;b loop};/^DEFTREECODE/{s,/\*.*\*/,,;s/["'"'"']x["'"'"'].*/'"'x', 0)/;p;};/^#/p" + } > "$2" || { rm -f "$2"; false; } --- gcc-3.4-3.4.6.orig/debian/patches/gpc-20060215-20060322.dpatch +++ gcc-3.4-3.4.6/debian/patches/gpc-20060215-20060322.dpatch @@ -0,0 +1,5067 @@ +#! /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: gpc update 20060215-20060322 + +diff -urN gcc/p.old/ChangeLog gcc/p/ChangeLog +--- gcc/p.old/ChangeLog 2006-06-10 17:45:38.383386000 +0000 ++++ gcc/p/ChangeLog 2006-06-10 17:46:10.403386000 +0000 +@@ -1,5 +1,34 @@ + ChangeLog -- Edit History for GPC, the GNU Pascal Compiler, since version 2.1 + ============================================================================= ++2006-03-09 Waldek Hebisch ++ ++ * predef.c: build_predef_call (): handle named exit from a method ++ parse.y: allow qualified name as an argument for `Exit' ++ ++2006-03-05 Waldek Hebisch ++ ++ * parse.y: remove reduce-reduce conflict in `object_field_list' ++ ++2006-03-04 Waldek Hebisch ++ ++ * types.c: is_of_string_type (): check more strictly ++ ++2006-02-28 Waldek Hebisch ++ ++ * units/crtc.c: crt_Read (): add casts between `Char *' and ++ `char *'. ++ ++2006-02-28 Frank Heckenbach ++ ++ * types.c: select_integer_type (): Use at least integer ++ precision for arithmetic ++ ++2006-02-25 Waldek Hebisch ++ ++ * parse.y: increase YYMAXDEPTH ++ ++ * types.c: find_field (): remove `gcc_unreachable' ++ + 2006-02-14 Waldek Hebisch + + * predef.c: build_read (): in ISO mode require second argument +diff -urN gcc/p.old/Make-lang.in gcc/p/Make-lang.in +--- gcc/p.old/Make-lang.in 2006-06-10 17:45:38.383386000 +0000 ++++ gcc/p/Make-lang.in 2006-06-10 17:46:10.403386000 +0000 +@@ -52,14 +52,22 @@ + # `' for gcc-3.[0-3].x + # GCC_VERSION_FOR_GPC34 yields additionally: + # `34' for gcc-3.[4-9].x ++# GCC_VERSION_FOR_GPC40 yields additionally: ++# `40' for gcc-4.x + GPC_GCC_2_=2 + GPC_GCC_28_=8 + GPC_GCC_34_PPQ_=foo + GPC_GCC_34_PPP=$(GPC_GCC_34_PPQ_$(target_noncanonical)) + GPC_GCC_34_PP_=34 + GPC_GCC_34_=$(GPC_GCC_34_PP_$(GPC_GCC_34_PPP)) ++GPC_GCC_40_PPQ_=fallback_to_34 ++GPC_GCC_40_PPP=$(GPC_GCC_40_PPQ_$(TREE_GIMPLE_H)) ++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_GPC34=$(GCC_VERSION_FOR_GPC)$(GPC_GCC_34_) ++GCC_VERSION_FOR_GPC40=$(GCC_VERSION_FOR_GPC)$(GPC_GCC_40_) + GPC_GCC_VERSION_28=$(version) + GPC_GCC_VERSION_2=$(gcc_version) + GPC_GCC_VERSION_=$(gcc_version) +@@ -67,6 +75,8 @@ + GPC_GCC_VERSION_OBJS_28=pexecute.o + GPC_GCC_VERSION_OBJS_=intl.o + GPC_GCC_VERSION_OBJS=$(GPC_GCC_VERSION_OBJS_$(GCC_VERSION_FOR_GPC)) ++GPC_OBJS_FOR_40=p/gimplify.o ++GPC_OBJS_40=$(GPC_OBJS_FOR_$(GCC_VERSION_FOR_GPC40)) + GPC_GCC_VERSION_LINK_=p/diagnostic.o attribs.o main.o libbackend.a ../libiberty/libiberty.a + GPC_GCC_VERSION_LINK_2=`cat p/stamp-gbe` + GPC_GCC_VERSION_LINK_28=`cat p/stamp-gbe` choose-temp.o pexecute.o +@@ -575,7 +585,8 @@ + # Headers and flags for GPC specific files. + GPC_GBE_H=$(CONFIG_H) system.h tree.h input.h rtl.h flags.h output.h expr.h \ + except.h function.h convert.h toplev.h $(GPC_GCC_VERSION_H) +-P_H=$(GPC_GBE_H) p/gpc.h p/p-tree.def p/predef.def $(srcdir)/p/parse.h p/gbe.h ++P_H=$(GPC_GBE_H) p/gpc.h p/plant.h p/p-tree.def p/predef.def \ ++ $(srcdir)/p/parse.h p/gbe.h + ALL_GPC_FLAGS=$(ALL_CFLAGS) $(ALL_CPPFLAGS) $(GPC_ALL_WARNINGS) $(INCLUDES) \ + -DGPC -DGPC_UNITS_DIR=\"$(unitsubdir)\" -I$(srcdir)/p + +@@ -597,7 +608,7 @@ + p/typecheck.o p/types.o p/convert.o p/dbxout.o p/dwarf2out.o \ + p/expr.o p/fold-const.o p/function.o p/integrate.o p/optabs.o \ + p/stor-layout.o p/toplev.o p/tree.o p/stmt.o p/emit-rtl.o \ +- p/varasm.o p/version.o p/gpcpp.o ++ p/varasm.o p/version.o p/gpcpp.o p/plant.o $(GPC_OBJS_40) + + # Exclude patched files from language-independent object file list. + # Not necessary for gcc-3 since for a library (libbackend.a), the linker does this automatically. +@@ -620,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 +@@ -657,6 +668,9 @@ + p/parse.o: $(srcdir)/p/parse.c $(P_H) + $(CC) -o $@ -c $(ALL_GPC_FLAGS) $(BIG_SWITCHFLAG) $< + ++p/plant.o: $(srcdir)/p/plant.c $(P_H) ++ $(CC) -o $@ -c $(ALL_GPC_FLAGS) $< ++ + p/predef.o: p/predef.c $(P_H) $(RTSSRCDIR)/constants.def + $(CC) -o $@ -c $(ALL_GPC_FLAGS) $< + +@@ -693,6 +707,9 @@ + p/function.o: function.c $(GPC_BE_H) + $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< + ++p/gimplify.o: gimplify.c $(GPC_BE_H) ++ $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< ++ + p/integrate.o: integrate.c $(GPC_BE_H) + $(CC) -o $@ -c $(ALL_GPC_GBE_FLAGS) $< + +diff -urN gcc/p.old/config-lang.in gcc/p/config-lang.in +--- gcc/p.old/config-lang.in 2006-06-10 17:45:38.383386000 +0000 ++++ gcc/p/config-lang.in 2006-06-10 17:46:10.403386000 +0000 +@@ -26,7 +26,7 @@ + language="pascal" + compilers="gpc1\$(exeext)" + stagestuff="gpc\$(exeext) gpc-cross\$(exeext) gpc1\$(exeext) gpcpp\$(exeext) libgpc.a" +-gtfiles="\$(srcdir)/p/gpc.h \$(srcdir)/p/declarations.c \$(srcdir)/p/module.c \$(srcdir)/p/predef.c" ++gtfiles="\$(srcdir)/p/gpc.h \$(srcdir)/p/declarations.c \$(srcdir)/p/module.c \$(srcdir)/p/predef.c \$(srcdir)/p/plant.c" + + #echo "in p/config-lang.in" + #echo "srcdir=$srcdir" +@@ -51,33 +51,45 @@ + + srcdir="$MY_SRCDIR" + +-version=`grep version_string "$srcdir/version.c" | sed -e 's/[^"]*"//;s/[ "].*//'` ++if [ -r "$srcdir/BASE-VER" ]; then ++ version=`cat "$srcdir/BASE-VER"` ++else ++ version=`grep version_string "$srcdir/version.c" | sed -e 's/[^"]*"//;s/[ "].*//'` ++fi ++ + mainversion="$version" + gcc281=y + gcc3=n +-if echo $version | grep '^2\.9' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null; then ++if echo $version | grep '^2\.9' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null || echo $version | grep '^4\.[0-9]' > /dev/null; then + gcc281=n + echo '#define EGCS' > "$gcc_version_h" +- if echo $version | grep '^2\.95\.[3-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null; then ++ if echo $version | grep '^2\.95\.[3-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null || echo $version | grep '^4\.[0-9]' > /dev/null; then + echo '#define GCC_2_95_3' >> "$gcc_version_h" + fi +- if echo $version | grep '^2\.9[6-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null; then ++ if echo $version | grep '^2\.9[6-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null || echo $version | grep '^4\.[0-9]' > /dev/null; then + gcc3=y + echo '#define EGCS97' >> "$gcc_version_h" +- if echo $version | grep '^3\.[3-9]' > /dev/null; then ++ if echo $version | grep '^3\.[3-9]' > /dev/null || echo $version | grep '^4\.[0-9]' > /dev/null; then + echo '#define GCC_3_3' >> "$gcc_version_h" +- if echo $version | grep '^3\.[4-9]' > /dev/null; then ++ if echo $version | grep '^3\.[4-9]' > /dev/null || echo $version | grep '^4\.[0-9]' > /dev/null; then + echo '#define GCC_3_4' >> "$gcc_version_h" +- if echo $version | grep '^3\.[5-9]' > /dev/null; then +- echo '#define GCC_3_5' >> "$gcc_version_h" ++ if echo $version | grep '^4\.[0-9]' > /dev/null; then ++ echo '#define GCC_4_0' >> "$gcc_version_h" + echo "" >&2 + echo "***" >&2 + echo "*** Detected GCC version $mainversion." >&2 +- echo "*** The GPC port for GCC > 3.4.x is still in an early state." >&2 ++ if echo $version | grep '^4\.[1-9]' > /dev/null; then ++ echo '#define GCC_4_1' >> "$gcc_version_h" ++ ++ echo "*** The GPC port for GCC > 4.0.x does not work." >&2 + echo "*** You can proceed now if you want to work on it." >&2 + echo "***" >&2 ++ else ++ echo "*** The GPC port for GCC 4.0.x is still in an early state." >&2 ++ echo "*** You can proceed now if you want to test it." >&2 ++ fi + echo "*** For a \"production compiler\" we currently still" >&2 +- echo "*** recommend GPC based on gcc 2.95.x, 3.2.x or 3.3.x" >&2 ++ echo "*** recommend GPC based on gcc 3.3.x or gcc 3.4.x" >&2 + echo "***" >&2 + echo "*** Press ENTER to continue, Ctrl-C to abort." >&2 + echo "***" >&2 +@@ -90,6 +102,17 @@ + echo "/* empty */" > "$gcc_version_h" + fi + ++if echo $version | grep '^2\.[89]' > /dev/null || echo $version | grep '^3\.[1-2]' > /dev/null; then ++ echo "*** Detected GCC version $mainversion." >&2 ++ echo "*** Using GPC with 2.x or 3.2.x backends is depreciated." >&2 ++ echo "*** In the future support for those backends will be dropped." >&2 ++ echo "*** We encourage you to try GPC based on gcc 3.3.x or gcc 3.4.x" >&2 ++ echo "***" >&2 ++ echo "*** Press ENTER to continue, Ctrl-C to abort." >&2 ++ echo "***" >&2 ++ read junk ++fi ++ + for x in 2.95.1 2.95.2 2.95.3 2.95.3-5 2.95.3-6 2.95.3-8 2.95.4; do + if [ ! -r "$srcdir/p/diffs/gcc-$x.diff" ]; then + (cd "$srcdir/p/diffs"; ln -s "gcc-2.95.diff" "gcc-$x.diff") +@@ -106,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 -urN gcc/p.old/declarations.c gcc/p/declarations.c +--- gcc/p.old/declarations.c 2006-06-10 17:45:38.383386000 +0000 ++++ gcc/p/declarations.c 2006-06-10 17:46:10.403386000 +0000 +@@ -59,7 +59,7 @@ + tree current_function_decl; + #endif + +-tree pascal_global_trees[PTI_MAX]; ++tree pascal_global_trees[PTI_MAX] = {0}; + + /* Nonzero while defining an explicitly `packed' record. */ + int defining_packed_type = 0; +@@ -240,7 +240,8 @@ + static int resolve_forward_decl (tree); + static tree lookup_c_type (const char *); + static tree make_real (double); +-static tree gpc_builtin_routine (const char *, const char *, int, tree, tree); ++static tree gpc_builtin_routine (const char *, const char *, int, tree, ++ tree, tree); + #if defined (EGCS97) && !defined (GCC_3_3) + static void mark_binding_level (void *); + #endif +@@ -399,6 +400,8 @@ + + /* Output any nested inline functions within this block if not done yet. */ + for (t = decls; t; t = TREE_CHAIN (t)) ++ /* @@@@@@@@@@@@@@ */ ++#ifndef GCC_4_0 + if (TREE_CODE (t) == FUNCTION_DECL + && !TREE_ASM_WRITTEN (t) + && DECL_INITIAL (t) +@@ -415,8 +418,11 @@ + #endif + pop_function_context (); + } +- else if (TREE_CODE (t) == LABEL_DECL) ++ else ++#endif ++ if (TREE_CODE (t) == LABEL_DECL) + { ++ gcc_assert (DECL_CONTEXT (t)); + if (!PASCAL_LABEL_SET (t)) + { + error_with_decl (t, "label `%s' not set"); +@@ -488,6 +494,11 @@ + free (level); + #endif + ++#ifdef GCC_4_0 ++ if (current_function_decl) ++ plant_bind_block (block); ++#endif ++ + return block; + } + +@@ -571,7 +582,9 @@ + { + pushlevel (1); + current_binding_level->implicit = implicit; ++#ifndef GCC_4_0 + clear_last_expr (); ++#endif + expand_start_bindings (0); + } + +@@ -933,8 +946,10 @@ + TREE_THIS_VOLATILE (decl) |= TYPE_VOLATILE (type); + prediscriminate_schema (decl); + DECL_ARG_TYPE (decl) = TREE_TYPE (decl); ++#ifndef GCC_4_0 + if (PROMOTE_PROTOTYPES && ORDINAL_TYPE (TREE_CODE (type)) && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) + DECL_ARG_TYPE (decl) = integer_type_node; ++#endif + TREE_CHAIN (decl) = list; + return decl; + } +@@ -1091,7 +1106,12 @@ + if (!DECL_INITIAL (x)) + { + DECL_RESULT (x) = DECL_RESULT (t); ++#ifndef GCC_4_0 ++ /* @@@@@@@@@@@@@@@@@@@@@@ */ + DECL_SAVED_INSNS (x) = DECL_SAVED_INSNS (t); ++#else ++ DECL_STRUCT_FUNCTION (x) = DECL_STRUCT_FUNCTION (t); ++#endif + DECL_ARGUMENTS (x) = DECL_ARGUMENTS (t); + #ifndef EGCS97 + DECL_FRAME_SIZE (x) = DECL_FRAME_SIZE (t); +@@ -1130,7 +1150,8 @@ + if (p && (p->kind == bk_const || p->kind == bk_type || p->kind == bk_var)) + t2 = p->decl; + } +- if (t2 && TREE_CODE_CLASS (TREE_CODE (t2)) == 'd' && DECL_LANG_SPECIFIC (t2) ++ if (t2 && TREE_CODE_CLASS (TREE_CODE (t2)) == tcc_declaration ++ && DECL_LANG_SPECIFIC (t2) + && DECL_LANG_SPECIFIC (t2)->used_in_scope >= current_binding_level->scope) + error ("identifier `%s' redeclared in a scope where an outer value was used", IDENTIFIER_NAME (name)); + +@@ -1253,15 +1274,27 @@ + { + tree label = pushdecl (build_decl (LABEL_DECL, id, void_type_node)); + gcc_assert (!EM (label)); ++// fprintf(stderr, "declare_label\n"); + if (!current_function_decl || co->longjmp_all_nonlocal_labels) + /* Create a jmp_buf variable for non-local gotos to this label. + `jmp_buf' is in fact `unsigned[5]' (see ../builtins.c). */ +- DECL_LANG_LABEL_JMPBUF (label) = make_new_variable ("jmpbuf", +- build_simple_array_type (unsigned_type_node, build_index_type (build_int_2 (5, 0)))); ++ { ++ tree d = make_new_variable ("jmpbuf", ++ build_simple_array_type (ptr_type_node, ++ build_index_type (build_int_2 (5, 0)))); ++ DECL_LANG_LABEL_JMPBUF (label) = d; ++ TREE_SIDE_EFFECTS (d) = TREE_THIS_VOLATILE (d) = 1; ++// fprintf(stderr, "make_new_variable: jmpbuf\n"); ++ } + else + { ++#ifndef GCC_4_0 + label_rtx (label); + declare_nonlocal_label (label); ++#else ++// fprintf(stderr, "declare_nonlocal_label\n"); ++ // gcc_assert (0); ++#endif + } + return label; + } +@@ -1310,7 +1343,12 @@ + } + TREE_USED (decl) = 1; + if (DECL_CONTEXT (decl) != current_function_decl) +- PASCAL_LABEL_NONLOCAL (decl) = 1; ++ { ++ PASCAL_LABEL_NONLOCAL (decl) = 1; ++#ifdef GCC_4_0 ++ mark_decl_referenced (decl); ++#endif ++ } + else + { + struct binding_level *b; +@@ -1334,7 +1372,12 @@ + } + } + } ++#ifndef GCC_4_0 + if (DECL_RTL_SET_P (decl)) ++#else ++ if (DECL_CONTEXT (decl) == current_function_decl ++ || !DECL_LANG_LABEL_JMPBUF (decl)) ++#endif + expand_goto (decl); + else if (DECL_CONTEXT (decl) || current_module->main_program) + { +@@ -1379,11 +1422,21 @@ + b->names_end = tree_last (b->names); + } + for (d = current_binding_level->names; d; d = TREE_CHAIN (d)) +- if (TREE_CODE (d) == LABEL_DECL && !DECL_RTL_SET_P (d)) ++ if (TREE_CODE (d) == LABEL_DECL ++#ifndef GCC_4_0 ++ && !DECL_RTL_SET_P (d) ++#endif ++ ) + { ++#ifndef GCC_4_0 + label_rtx (d); ++#endif + /* Avoid calling `setjmp' for labels that are only used locally */ +- if (TREE_USED (DECL_LANG_LABEL_JMPBUF (d))) ++ if (DECL_LANG_LABEL_JMPBUF (d) ++#ifndef GCC_4_0 ++ && TREE_USED (DECL_LANG_LABEL_JMPBUF (d)) ++#endif ++ ) + { + expand_start_cond (build_routine_call (setjmp_routine_node, + build_tree_list (NULL_TREE, build_unary_op (ADDR_EXPR, DECL_LANG_LABEL_JMPBUF (d), 0))), 0); +@@ -1451,7 +1504,7 @@ + lookup_name (tree name) + { + tree t = peek_name (name); +- if (t && TREE_CODE_CLASS (TREE_CODE (t)) == 'd') ++ if (t && TREE_CODE_CLASS (TREE_CODE (t)) == tcc_declaration) + { + /* Record that the declaration was used in the current scope, thus the + identifier may not be redefined there. Ideally, we'd store the scope +@@ -1788,7 +1841,11 @@ + global_binding_level = current_binding_level; + + #ifdef EGCS97 ++#ifdef GCC_4_0 ++ build_common_tree_nodes (0, 0); ++#else + build_common_tree_nodes (0); ++#endif + #else + error_mark_node = make_node (ERROR_MARK); + TREE_TYPE (error_mark_node) = error_mark_node; +@@ -1930,8 +1987,13 @@ + long_long_boolean_type_node = build_boolean_type (TYPE_PRECISION (long_long_unsigned_type_node)); + cboolean_type_node = make_unsigned_type (BOOL_TYPE_SIZE); + TREE_SET_CODE (cboolean_type_node, BOOLEAN_TYPE); ++#ifndef GCC_4_0 + TYPE_MAX_VALUE (cboolean_type_node) = build_int_2 (1, 0); + TREE_TYPE (TYPE_MAX_VALUE (cboolean_type_node)) = cboolean_type_node; ++#else ++ TYPE_MAX_VALUE (cboolean_type_node) = ++ build_int_cst_wide (cboolean_type_node, 1, 0); ++#endif + TYPE_PRECISION (cboolean_type_node) = 1; + + /* Set alignment. */ +@@ -1961,8 +2023,12 @@ + TYPE_MODE (long_double_type_node))); + char_max_node = convert (char_type_node, TYPE_MAX_VALUE (char_type_node)); + complex_zero_node = build_complex (TREE_TYPE (real_zero_node), real_zero_node, real_zero_node); ++#ifndef GCC_4_0 + null_pointer_node = build_int_2 (0, 0); + TREE_TYPE (null_pointer_node) = ptr_type_node; ++#else ++ null_pointer_node = build_int_cst(ptr_type_node, 0); ++#endif + null_pseudo_const_node = build_indirect_ref (null_pointer_node, NULL); + + cstring_type_node = build_pointer_type (char_type_node); +@@ -1978,20 +2044,33 @@ + + #define dopar(type, next) tree_cons (NULL_TREE, type, next) + +- memcpy_routine_node = gpc_builtin_routine ("__builtin_memcpy", "memcpy", BUILT_IN_MEMCPY, +- ptr_type_node, dopar (ptr_type_node, dopar (const_ptr_type_node, dopar (sizetype, void_list_node)))); ++#define ATTR_NULL NULL_TREE ++#define ATTR_NORETURN_NOTHROW_LIST \ ++ tree_cons (get_identifier ("noreturn"), NULL_TREE, NULL_TREE) ++ /* tree_cons (get_identifier ("nothrow"), NULL_TREE, NULL_TREE) */ ++ ++ memcpy_routine_node = gpc_builtin_routine ("__builtin_memcpy", "memcpy", ++ BUILT_IN_MEMCPY, ++ ptr_type_node, dopar (ptr_type_node, dopar (const_ptr_type_node, dopar (sizetype, void_list_node))), ATTR_NULL); + memset_routine_node = gpc_builtin_routine ("__builtin_memset", "memset", BUILT_IN_MEMSET, +- ptr_type_node, dopar (ptr_type_node, dopar (integer_type_node, dopar (sizetype, void_list_node)))); ++ ptr_type_node, dopar (ptr_type_node, dopar (integer_type_node, dopar (sizetype, void_list_node))), ATTR_NULL); + strlen_routine_node = gpc_builtin_routine ("__builtin_strlen", "strlen", BUILT_IN_STRLEN, +- sizetype, dopar (build_pointer_type (p_build_type_variant (char_type_node, 1, 0)), void_list_node)); ++ sizetype, dopar (build_pointer_type (p_build_type_variant (char_type_node, 1, 0)), void_list_node), ATTR_NULL); + setjmp_routine_node = gpc_builtin_routine ("__builtin_setjmp", "setjmp", BUILT_IN_SETJMP, +- integer_type_node, dopar (ptr_type_node, void_list_node)); ++ integer_type_node, dopar (ptr_type_node, void_list_node), ATTR_NULL); + longjmp_routine_node = gpc_builtin_routine ("__builtin_longjmp", "longjmp", BUILT_IN_LONGJMP, +- void_type_node, dopar (ptr_type_node, dopar (integer_type_node, void_list_node))); ++ void_type_node, dopar (ptr_type_node, dopar (integer_type_node, void_list_node)), ATTR_NORETURN_NOTHROW_LIST); + return_address_routine_node = gpc_builtin_routine ("__builtin_return_address", NULL, BUILT_IN_RETURN_ADDRESS, +- ptr_type_node, dopar (unsigned_type_node, void_list_node)); ++ ptr_type_node, dopar (unsigned_type_node, void_list_node), ATTR_NULL); + frame_address_routine_node = gpc_builtin_routine ("__builtin_frame_address", NULL, BUILT_IN_FRAME_ADDRESS, +- ptr_type_node, dopar (unsigned_type_node, void_list_node)); ++ ptr_type_node, dopar (unsigned_type_node, void_list_node), ATTR_NULL); ++ ++#ifdef GCC_4_0 ++ build_common_builtin_nodes (); ++ (*targetm.init_builtins) (); ++ ++ main_identifier_node = get_identifier ("main"); ++#endif + + pedantic_lvalues = pedantic; + +@@ -2008,7 +2087,7 @@ + If LIBRARY_NAME is nonzero, use that as the name to be called if we + can't opencode the function. */ + static tree +-gpc_builtin_routine (const char *name, const char *library_name, int function_code, tree resulttype, tree args) ++gpc_builtin_routine (const char *name, const char *library_name, int function_code, tree resulttype, tree args, tree attributes) + { + tree decl = build_decl (FUNCTION_DECL, get_identifier (name), build_function_type (resulttype, args)); + DECL_EXTERNAL (decl) = 1; +@@ -2016,10 +2095,12 @@ + if (library_name) + SET_DECL_ASSEMBLER_NAME (decl, get_identifier (library_name)); + #ifdef EGCS97 ++#ifndef GCC_4_0 + make_decl_rtl (decl, NULL); ++#endif + DECL_BUILT_IN_CLASS (decl) = BUILT_IN_NORMAL; + DECL_FUNCTION_CODE (decl) = function_code; +- decl_attributes (&decl, NULL_TREE, 0); ++ decl_attributes (&decl, attributes, 0); + #else + make_decl_rtl (decl, NULL, 1); + DECL_BUILT_IN (decl) = 1; +@@ -2031,13 +2112,19 @@ + #ifdef EGCS97 + tree + #ifdef GCC_3_3 +-builtin_function (const char *name, tree type, int function_code, enum built_in_class class ATTRIBUTE_UNUSED, const char *library_name, tree dummy ATTRIBUTE_UNUSED) ++builtin_function (const char *name, tree type, int function_code, enum built_in_class class ATTRIBUTE_UNUSED, const char *library_name, tree attributes) + #else + builtin_function (const char *name, tree type, int function_code, enum built_in_class class ATTRIBUTE_UNUSED, const char *library_name) + #endif + { + return gpc_builtin_routine (name, library_name, function_code, +- TREE_TYPE (type), TYPE_ARG_TYPES (type)); ++ TREE_TYPE (type), TYPE_ARG_TYPES (type), ++#ifdef GCC_3_3 ++ attributes ++#else ++ NULL_TREE ++#endif ++ ); + } + #endif + +@@ -2212,7 +2299,7 @@ + check_id_redeclaration (tree name, const char * msg) + { + tree t = peek_name (name); +- if (t && TREE_CODE_CLASS (TREE_CODE (t)) == 'd' ++ if (t && TREE_CODE_CLASS (TREE_CODE (t)) == tcc_declaration + && DECL_LANG_SPECIFIC (t) + && DECL_LANG_SPECIFIC (t)->used_in_scope >= current_binding_level->scope) + { +@@ -2312,18 +2399,30 @@ + if (bits) + { + /* Explicit `packed' record, ordinal field (which can be bit-packed) */ ++#if 1 + if (uns != TYPE_UNSIGNED (type)) + { + TREE_TYPE (x) = type = build_type_copy (type); + new_main_variant (type); + TYPE_UNSIGNED (type) = uns; + } ++#else ++ /* @@@@ In principle we should do this, but it causes problems ++ in inipak1[lm].pas and sam9.pas */ ++ TREE_TYPE (x) = type = build_type_copy (type); ++ new_main_variant (type); ++ TYPE_UNSIGNED (type) = uns; ++ TYPE_PRECISION (type) = TREE_INT_CST_LOW (bits); ++#endif + #ifdef EGCS97 + DECL_SIZE (x) = bitsize_int (TREE_INT_CST_LOW (bits)); + #else + DECL_FIELD_SIZE (x) = TREE_INT_CST_LOW (bits); + #endif + DECL_BIT_FIELD (x) = 1; ++#ifdef GCC_4_0 ++ DECL_NONADDRESSABLE_P (x) = 1; ++#endif + #if 0 + DECL_PACKED (x) = 0; /* suppress warning with `-Wpacked' */ + #endif +@@ -2623,7 +2722,9 @@ + else + SET_DECL_ASSEMBLER_NAME (d, mangle_name (name)); + ++#ifndef GCC_4_0 + rest_of_decl_compilation (d, 0, !DECL_CONTEXT (d), 1 /* for GPC */); ++#endif + + /* Prevent the optimizer from removing it if it is public. */ + if (TREE_PUBLIC (d)) +@@ -2656,7 +2757,9 @@ + if (attributes & ER_CONST) + TREE_READONLY (d) = 1; + mark_addressable (d); ++#ifndef GCC_4_0 + rest_of_decl_compilation (d, NULL, 1, 1); ++#endif + return d; + } + +@@ -2979,8 +3082,10 @@ + #ifndef EGCS97 + make_function_rtl (decl); + #else ++#ifndef GCC_4_0 + make_decl_rtl (decl, NULL); + #endif ++#endif + immediate_size_expand = 0; + DECL_RESULT (decl) = build_decl (RESULT_DECL, NULL_TREE, + PROMOTING_INTEGER_TYPE (type) ? integer_type_node : type); +@@ -3119,8 +3224,10 @@ + make_function_rtl (decl); + temporary_allocation (); + #else ++#ifndef GCC_4_0 + make_decl_rtl (decl, NULL); + #endif ++#endif + #ifndef GCC_3_4 + init_function_start (decl, input_filename, lineno); + #else +@@ -3178,8 +3285,10 @@ + /* Obey `register' declarations if `setjmp' is called in this fn. */ + if (current_function_calls_setjmp) + { ++#ifndef GCC_4_0 + setjmp_protect (DECL_INITIAL (fndecl)); + setjmp_protect_args (); ++#endif + } + + /* Generate rtl for function exit. */ +@@ -3196,8 +3305,11 @@ + ggc_push_context (); + #endif + ++ + /* Run the optimizers and output the assembler code for this function. */ ++#ifndef GCC_4_0 + rest_of_compilation (fndecl); ++#endif + + if (DECL_LANG_RESULT_VARIABLE (fndecl)) + DECL_LANG_RESULT_VARIABLE (fndecl) = DECL_NAME (DECL_LANG_RESULT_VARIABLE (fndecl)); +@@ -3211,7 +3323,12 @@ + ggc_pop_context (); + #endif + ++#ifndef GCC_4_0 ++#ifndef GCC_4_0 + if (!DECL_SAVED_INSNS (fndecl)) ++#else ++ if (!DECL_STRUCT_FUNCTION (fndecl)) ++#endif + { + /* Stop pointing to the local nodes about to be freed. But DECL_INITIAL + must remain nonzero (unless rest_of_compilation set this to 0), +@@ -3220,6 +3337,7 @@ + DECL_INITIAL (fndecl) = error_mark_node; + DECL_ARGUMENTS (fndecl) = NULL_TREE; + } ++#endif + if (outer_function_chain) + pop_function_context (); + else +@@ -3373,7 +3491,9 @@ + tree type = TREE_TYPE (TREE_PURPOSE (scan)); + tree decl = pushdecl (TREE_PURPOSE (scan)); + gcc_assert (!EM (decl)); ++#ifndef GCC_4_0 + rest_of_decl_compilation (decl, NULL, !DECL_CONTEXT (decl), 0); ++#endif + handle_autoexport (TREE_VALUE (scan)); + if (TYPE_STUB_DECL (type)) + rest_of_type_compilation (type, current_binding_level == global_binding_level); +@@ -3515,14 +3635,21 @@ + && TREE_CODE (value) != FIX_TRUNC_EXPR) + error ("constant has non-constant value"); + if (!TREE_CONSTANT (value)) /* @@ Better: if contains SAVE_EXPR ... */ ++#ifndef GCC_4_0 + value = unsave_expr (value); ++#else ++ if (pascal_global_bindings_p () && !EM (TREE_TYPE (value))) ++ value = save_nonconstants (value); ++#endif + + value = set_exp_original_code (value, ERROR_MARK); + d = build_decl (CONST_DECL, name, TREE_TYPE (value)); + DECL_INITIAL (d) = value; + pushdecl (d); + handle_autoexport (name); ++#ifndef GCC_4_0 + rest_of_decl_compilation (d, NULL, pascal_global_bindings_p (), 0); ++#endif + return d; + } + +@@ -3845,17 +3972,25 @@ + + if (!DECL_ARTIFICIAL (d)) + d = pushdecl (d); ++#ifdef GCC_4_0 ++ else ++ pushdecl_nocheck (d); ++#endif + gcc_assert (!EM (d)); + + if (local_static) + DECL_CONTEXT (d) = NULL_TREE; /* for deferred initializers */ + + /* Output the assembler code and/or RTL code. */ ++#ifndef GCC_4_0 + rest_of_decl_compilation (d, NULL, !DECL_CONTEXT (d), 1 /* for GPC */); ++#endif + ++#ifndef GCC_4_0 + /* Compute and store the initial value. */ + if (DECL_CONTEXT (d)) + expand_decl_init (d); ++#endif + + /* d might be a pointer to an undiscriminated schema. At this point, + we can pre-discriminate it using its own contents. */ +@@ -3926,9 +4061,21 @@ + if (!model || PASCAL_TYPE_UNDISCRIMINATED_STRING (model)) + { + int isstring = is_string_compatible_type (data, 1); ++ tree slen, olen; + gcc_assert (isstring); ++ olen = PASCAL_STRING_LENGTH (data); ++#if 0 ++ /* @@@@@ this caused problem with cstrassign.pas */ ++ if (copy) ++ { ++ slen = make_new_variable ("string_len", TREE_TYPE (olen)); ++ expand_expr_stmt1 (build_modify_expr (slen, NOP_EXPR, olen)); ++ } ++ else ++#endif ++ slen = save_expr (olen); + type = build_pascal_string_schema ( +- build_pascal_binary_op (MAX_EXPR, integer_one_node, save_expr (PASCAL_STRING_LENGTH (data)))); ++ build_pascal_binary_op (MAX_EXPR, integer_one_node, slen)); + } + else + type = TYPE_MAIN_VARIANT (model); +diff -urN gcc/p.old/doc/en/news.texi gcc/p/doc/en/news.texi +--- gcc/p.old/doc/en/news.texi 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/doc/en/news.texi 2006-06-10 17:46:10.433386000 +0000 +@@ -39,6 +39,10 @@ + @samp{(@@)}. + + @itemize @bullet ++@item preliminary support for gcc-4.0.x ++@item handle named exit from a method ++@item check string parameters more strictly (@@) ++@item use at least integer precision for arithmetic (@@) + @item refuse @samp{--executable-file-name} on names without a suffix + @item do not create @samp{.gpi} files from incorrect input + @item @samp{CWordBool} type +diff -urN gcc/p.old/doc/en/todo.texi gcc/p/doc/en/todo.texi +--- gcc/p.old/doc/en/todo.texi 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/doc/en/todo.texi 2006-06-10 17:46:10.433386000 +0000 +@@ -197,6 +197,12 @@ + @ref{News}. + + @itemize @bullet ++@item 20060304: Do not allow passing strings to parameters of type array of ++char subrange (avoids passing out of range values). ++@item 20060228: Use at least integer precision for arithmetic (avoids ++loss of precision due to overflow) ++@item 20060225: Avoid ICE on some record types ++@item 20060225: Avoid segfault in bison parser + @item 20060214: Avoid ICE on unimplemented operators (ice4.pas) + @item 20060214: Avoid ICE on bad forward declaration (ice3.pas) + @item 20060214: ISO-10206 requires at least one output parameter +diff -urN gcc/p.old/expressions.c gcc/p/expressions.c +--- gcc/p.old/expressions.c 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/expressions.c 2006-06-10 17:46:10.403386000 +0000 +@@ -28,6 +28,11 @@ + + #include "gpc.h" + ++#ifdef GCC_4_0 ++#include "tree-gimple.h" ++#endif ++ ++ + static int implicit_comparison = 0; + int operators_defined = 0; + +@@ -55,6 +60,7 @@ + set_string_length (tree value, int wide_flag, int length) + { + gcc_assert (length >= 0); ++// length ++; + TREE_TYPE (value) = build_simple_array_type (p_build_type_variant ( + wide_flag ? wchar_type_node : char_type_node, 1, 0), + build_range_type (pascal_integer_type_node, integer_one_node, +@@ -196,9 +202,14 @@ + *q++ = 0; + else + *q = 0; ++#ifdef GCC_4_0 ++ value = build_string (length, p); ++ free (p); ++#else + value = make_node (STRING_CST); + TREE_STRING_POINTER (value) = p; + TREE_STRING_LENGTH (value) = length; ++#endif + PASCAL_CST_FRESH (value) = !!mode; + set_string_length (value, wide_flag, wide_flag ? length / wchar_bytes : length - 1); + return value; +@@ -217,7 +228,7 @@ + } + + tree +-build_range_check(tree min, tree max, tree expr, int is_io) ++build_range_check (tree min, tree max, tree expr, int is_io, int gimplifying) + { + int chklo = min != NULL_TREE; + int chkhi = max != NULL_TREE; +@@ -238,7 +249,15 @@ + #else + int side_effects = TREE_SIDE_EFFECTS (expr); + tree cond, tv, t; +- tree tmpvar = make_new_variable ("range_check", TREE_TYPE (expr)); ++ tree tmpvar = ++#ifdef GCC_4_0 ++ gimplifying ? ++ create_tmp_var (TREE_TYPE (expr), "range_check") : ++#endif ++ make_new_variable ("range_check", TREE_TYPE (expr)); ++#ifndef GCC_4_0 ++ gcc_assert(!gimplifying); ++#endif + tv = build (MODIFY_EXPR, TREE_TYPE (expr), tmpvar, expr); + TREE_SIDE_EFFECTS (tv) = 1; + PASCAL_VALUE_ASSIGNED (tmpvar) = 1; +@@ -250,7 +269,7 @@ + } + t = build (COMPOUND_EXPR, TREE_TYPE (tmpvar), + build_predef_call (is_io ? p_IORangeCheckError : p_RangeCheckError, +- NULL_TREE), tmpvar); ++ NULL_TREE), tmpvar /* min? min : max */); + t = build (COND_EXPR, TREE_TYPE (tmpvar), cond, t, tmpvar); + t = build (COMPOUND_EXPR, TREE_TYPE (t), tv, t); + return t; +@@ -309,7 +328,7 @@ + max = NULL_TREE; + + if (TREE_SIDE_EFFECTS (expr)) +- return build_range_check(min, max, expr, co->range_checking>1); ++ return build_range_check(min, max, expr, co->range_checking>1, 0); + else if (co->range_checking>1) + code = IO_RANGE_CHECK_EXPR; + else +@@ -374,8 +393,8 @@ + check_discriminants (tree x, tree y) + { + tree fx, fy, cond = NULL_TREE; +- tree tx = TREE_CODE_CLASS (TREE_CODE (x)) == 't' ? x : TREE_TYPE (x); +- tree ty = TREE_CODE_CLASS (TREE_CODE (y)) == 't' ? y : TREE_TYPE (y); ++ tree tx = TREE_CODE_CLASS (TREE_CODE (x)) == tcc_type ? x : TREE_TYPE (x); ++ tree ty = TREE_CODE_CLASS (TREE_CODE (y)) == tcc_type ? y : TREE_TYPE (y); + if (PASCAL_TYPE_SCHEMA (tx) && PASCAL_TYPE_SCHEMA (ty) + && TYPE_LANG_BASE (tx) == TYPE_LANG_BASE (ty)) + { +@@ -498,7 +517,8 @@ + + /* For "fresh" constants try the most basic and the longest type. + For Char constants try Char and String. */ +- if (TREE_CODE_CLASS (TREE_CODE (arg1)) == 'c' && PASCAL_CST_FRESH (arg1)) ++ if (TREE_CODE_CLASS (TREE_CODE (arg1)) == tcc_constant ++ && PASCAL_CST_FRESH (arg1)) + { + if (TREE_CODE (arg1) == INTEGER_CST && TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE) + { +@@ -518,13 +538,15 @@ + if (found) + return found; + } +- if (TREE_CODE_CLASS (TREE_CODE (arg1)) != 't' && is_string_compatible_type (arg1, 0)) ++ if (TREE_CODE_CLASS (TREE_CODE (arg1)) != tcc_type ++ && is_string_compatible_type (arg1, 0)) + { + found = get_operator (op_id, op_name, string_schema_proto_type, arg2, new); + if (found) + return found; + } +- if (TREE_CODE_CLASS (TREE_CODE (arg2)) == 'c' && PASCAL_CST_FRESH (arg2)) ++ if (TREE_CODE_CLASS (TREE_CODE (arg2)) == tcc_constant ++ && PASCAL_CST_FRESH (arg2)) + { + if (TREE_CODE (arg2) == INTEGER_CST && TREE_CODE (TREE_TYPE (arg2)) == INTEGER_TYPE) + { +@@ -544,7 +566,8 @@ + if (found) + return found; + } +- if (TREE_CODE_CLASS (TREE_CODE (arg2)) != 't' && is_string_compatible_type (arg2, 0)) ++ if (TREE_CODE_CLASS (TREE_CODE (arg2)) != tcc_type ++ && is_string_compatible_type (arg2, 0)) + { + found = get_operator (op_id, op_name, arg1, string_schema_proto_type, new); + if (found) +@@ -734,7 +757,8 @@ + } + + /* Flag constants in parentheses for ISO 7185. */ +- if ((TREE_CODE_CLASS (TREE_CODE (t)) == 'c' || TREE_CODE (t) == NON_LVALUE_EXPR) ++ if ((TREE_CODE_CLASS (TREE_CODE (t)) == tcc_constant ++ || TREE_CODE (t) == NON_LVALUE_EXPR) + && PASCAL_CST_PARENTHESES (t) != (code == NOP_EXPR)) + { + t = copy_node (t); +@@ -1059,7 +1083,8 @@ + } + + result = build_pascal_binary_op (code, exp1, exp2); +- if (TREE_CODE_CLASS (TREE_CODE (result)) == 'c' && TREE_OVERFLOW (result)) ++ if (TREE_CODE_CLASS (TREE_CODE (result)) == tcc_constant ++ && TREE_OVERFLOW (result)) + { + TREE_OVERFLOW (result) = 0; + error ("constant overflow in expression"); +@@ -1593,7 +1618,8 @@ + } + + result = build_binary_op (code, exp1, exp2); +- if (TREE_CODE_CLASS (TREE_CODE (result)) == 'c' && TREE_OVERFLOW (result)) ++ if (TREE_CODE_CLASS (TREE_CODE (result)) == tcc_constant ++ && TREE_OVERFLOW (result)) + error ("arithmetical overflow"); + return result; + } +@@ -1662,8 +1688,8 @@ + + /* -42 is still a simple constant, but -(42) is not. */ + if ((code == NEGATE_EXPR || code == CONVERT_EXPR) +- && TREE_CODE_CLASS (TREE_CODE (t)) == 'c' +- && TREE_CODE_CLASS (TREE_CODE (xarg)) == 'c') ++ && TREE_CODE_CLASS (TREE_CODE (t)) == tcc_constant ++ && TREE_CODE_CLASS (TREE_CODE (xarg)) == tcc_constant) + { + PASCAL_CST_FRESH (t) = PASCAL_CST_FRESH (xarg); + PASCAL_CST_PARENTHESES (t) = PASCAL_CST_PARENTHESES (xarg); +@@ -1820,10 +1846,14 @@ + { + tree length = convert (pascal_integer_type_node, + build_int_2 (TREE_STRING_LENGTH (factor) - 1, 0)); ++ tree st = build_pascal_string_schema (length); ++ tree capf = TYPE_FIELDS (st); ++ tree lenf = TREE_CHAIN (capf); ++ tree schf = TREE_CHAIN (lenf); + factor = build_constructor (build_pascal_string_schema (length), +- tree_cons (NULL_TREE, length, +- tree_cons (NULL_TREE, length, +- build_tree_list (NULL_TREE, factor)))); ++ tree_cons (capf, length, ++ tree_cons (lenf, length, ++ build_tree_list (schf, factor)))); + /* Make this a valid lvalue for taking addresses. */ + TREE_CONSTANT (factor) = 1; + TREE_STATIC (factor) = 1; +@@ -1839,7 +1869,7 @@ + if (TREE_CODE (t) == VAR_DECL) + PASCAL_VALUE_ASSIGNED (t) = 1; + +- if (TREE_CODE_CLASS (TREE_CODE (t)) == 'c') ++ if (TREE_CODE_CLASS (TREE_CODE (t)) == tcc_constant) + { + error ("trying to take the address of a constant"); + return error_mark_node; +@@ -2194,6 +2224,8 @@ + truthvalue_conversion (tree expr) + { + CHK_EM (expr); ++ /* @@@@@@@@@ Gimplifier puts error_mark_node as a type */ ++ CHK_EM (TREE_TYPE (expr)); + switch (TREE_CODE (expr)) + { + case EQ_EXPR: +@@ -2202,13 +2234,19 @@ + case GE_EXPR: + case LT_EXPR: + case GT_EXPR: ++ return convert (boolean_type_node, expr); ++ + case TRUTH_ANDIF_EXPR: + case TRUTH_ORIF_EXPR: + case TRUTH_AND_EXPR: + case TRUTH_OR_EXPR: + case TRUTH_XOR_EXPR: + case TRUTH_NOT_EXPR: +- gcc_assert (TREE_TYPE (expr) == boolean_type_node); ++ if (TREE_TYPE (expr) != boolean_type_node) ++ return fold (build (TREE_CODE (expr), boolean_type_node, ++ truthvalue_conversion (TREE_OPERAND (expr, 0)), ++ truthvalue_conversion (TREE_OPERAND (expr, 1)))); ++// gcc_assert (TREE_TYPE (expr) == boolean_type_node); + return expr; + + case INTEGER_CST: +@@ -2675,7 +2713,9 @@ + + /* dead code was here */ + case IN_EXPR: ++#ifndef GCC_4_0 + case CARD_EXPR: ++#endif + gcc_unreachable (); + + default: +@@ -2929,7 +2969,12 @@ + #else + t = size_binop (CEIL_DIV_EXPR, TYPE_SIZE (type), size_int (BITS_PER_UNIT)); + #endif ++#ifdef GCC_4_0 ++ if (TREE_CODE (t) == INTEGER_CST) ++ force_fit_type (t, 0, 0, 0); ++#else + force_fit_type (t, 0); ++#endif + return t; + } + +@@ -3152,7 +3197,7 @@ + to which the address will point. Note that you can't get a + restricted pointer by taking the address of something, so we + only have to deal with `const' and `volatile' here. */ +- if ((DECL_P (arg) || TREE_CODE_CLASS (TREE_CODE (arg)) == 'r') ++ if ((DECL_P (arg) || TREE_CODE_CLASS (TREE_CODE (arg)) == tcc_reference) + && (TREE_READONLY (arg) || TREE_THIS_VOLATILE (arg))) + argtype = c_build_type_variant (argtype, TREE_READONLY (arg), TREE_THIS_VOLATILE (arg)); + +@@ -3162,8 +3207,11 @@ + return error_mark_node; + + if (TREE_CODE (arg) == BIT_FIELD_REF && PASCAL_TYPE_PACKED (TREE_TYPE (TREE_OPERAND (arg, 0)))) +- error ("invalid use of component of packed array `%s'", ++ { ++ error ("invalid use of component of packed array `%s'", + IDENTIFIER_NAME (DECL_NAME (TREE_OPERAND (arg, 0)))); ++ return error_mark_node; ++ } + + if (TREE_CODE (arg) == COMPONENT_REF) + { +@@ -3239,7 +3287,8 @@ + + if (type == TREE_TYPE (value)) + { +- if (TREE_CODE_CLASS (TREE_CODE (value)) == 'c' && PASCAL_CST_FRESH (value)) ++ if (TREE_CODE_CLASS (TREE_CODE (value)) == tcc_constant ++ && PASCAL_CST_FRESH (value)) + { + value = copy_node (value); + PASCAL_CST_FRESH (value) = 0; +@@ -3767,8 +3816,15 @@ + } + lastfield = tree_last (field); + return build_memcpy ( ++#ifndef GCC_4_0 + build_unary_op (ADDR_EXPR, build (COMPONENT_REF, TREE_TYPE (field), lhs, field), 1), + build_unary_op (ADDR_EXPR, build (COMPONENT_REF, TREE_TYPE (field2), rhs, field2), 2), ++#else ++ build_unary_op (ADDR_EXPR, build3 (COMPONENT_REF, TREE_TYPE (field), ++ lhs, field, NULL_TREE), 1), ++ build_unary_op (ADDR_EXPR, build3 (COMPONENT_REF, TREE_TYPE (field2), ++ rhs, field2, NULL_TREE), 2), ++#endif + size_binop (CEIL_DIV_EXPR, + size_binop (MINUS_EXPR, size_binop (PLUS_EXPR, bit_position (lastfield), DECL_SIZE (lastfield)), bit_position (field)), + bitsize_int (TYPE_PRECISION (byte_integer_type_node)))); +diff -urN gcc/p.old/gbe.h gcc/p/gbe.h +--- gcc/p.old/gbe.h 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/gbe.h 2006-06-10 17:46:10.403386000 +0000 +@@ -44,11 +44,15 @@ + + #include "config.h" + +-#ifndef GCC_4 ++#ifndef GCC_4_0 + #define TYPE_UNSIGNED TREE_UNSIGNED + #define BIT_FIELD_REF_UNSIGNED TREE_UNSIGNED + #endif + ++#ifdef GCC_4_0 ++extern int immediate_size_expand; ++#endif ++ + #ifndef GCC_3_4 + #define build_constructor(type, elements) (build (CONSTRUCTOR, (type), NULL_TREE, (elements))) + #endif +diff -urN gcc/p.old/gpc-lex.c gcc/p/gpc-lex.c +--- gcc/p.old/gpc-lex.c 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/gpc-lex.c 2006-06-10 17:46:10.403386000 +0000 +@@ -512,7 +512,13 @@ + type = long_long_integer_type_node; + else + type = long_long_unsigned_type_node; ++#ifdef GCC_4_0 ++ t = build_int_cst_wide (type, ++ TREE_INT_CST_LOW (t), ++ TREE_INT_CST_HIGH (t)); ++#else + TREE_TYPE (t) = type; ++#endif + PASCAL_CST_FRESH (t) = 1; + yylval.ttype = t; + break; +diff -urN gcc/p.old/gpc.c gcc/p/gpc.c +--- gcc/p.old/gpc.c 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/gpc.c 2006-06-10 17:46:10.413386000 +0000 +@@ -207,7 +207,10 @@ + extern void pfatal_with_name (const char *) ATTRIBUTE_NORETURN; + extern void fatal (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN; + extern void error (const char *, ...); ++#ifndef GCC_4_0 + void fancy_abort (void); ++#endif ++ + #ifndef EGCS + static char *concat (const char *, ...); + extern char *xmalloc (size_t); +@@ -869,12 +872,23 @@ + /* config.h can define LIBGCC_SPEC to override how and when libgcc.a is + included. */ + #ifndef LIBGCC_SPEC ++#ifndef GCC_4_0 + #if defined(LINK_LIBGCC_SPECIAL) || defined(LINK_LIBGCC_SPECIAL_1) + /* Have gcc do the search for libgcc.a. */ + #define LIBGCC_SPEC "libgcc.a%s" + #else + #define LIBGCC_SPEC "-lgcc" + #endif ++#else ++#if defined(REAL_LIBGCC_SPEC) ++#define LIBGCC_SPEC REAL_LIBGCC_SPEC ++#elif defined(LINK_LIBGCC_SPECIAL_1) ++/* Have gcc do the search for libgcc.a. */ ++#define LIBGCC_SPEC "libgcc.a%s" ++#else ++#define LIBGCC_SPEC "-lgcc" ++#endif ++#endif + #endif + + /* config.h can define STARTFILE_SPEC to override the default crt0 files. */ +@@ -954,6 +968,7 @@ + #endif + + #ifndef LINK_LIBGCC_SPEC ++#ifndef GCC_4_0 + # ifdef LINK_LIBGCC_SPECIAL + /* Don't generate -L options for startfile prefix list. */ + # define LINK_LIBGCC_SPEC "" +@@ -961,6 +976,9 @@ + /* Do generate them. */ + # define LINK_LIBGCC_SPEC "%D" + # endif ++#else ++# define LINK_LIBGCC_SPEC "%D" ++#endif + #endif + + #ifndef STARTFILE_PREFIX_SPEC +@@ -1137,6 +1155,7 @@ + + /* This defines which multi-letter switches take arguments. */ + ++#ifndef DEFAULT_WORD_SWITCH_TAKES_ARG + #define DEFAULT_WORD_SWITCH_TAKES_ARG(STR) \ + (!strcmp (STR, "Tdata") || !strcmp (STR, "Ttext") \ + || !strcmp (STR, "Tbss") || !strcmp (STR, "include") \ +@@ -1146,6 +1165,7 @@ + || !strcmp (STR, "isystem") || !strcmp (STR, "-param") \ + || !strcmp (STR, "specs") \ + || !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ")) ++#endif + + #ifndef WORD_SWITCH_TAKES_ARG + #define WORD_SWITCH_TAKES_ARG(STR) DEFAULT_WORD_SWITCH_TAKES_ARG (STR) +@@ -5191,9 +5211,11 @@ + if (is_directory (buffer, multilib_dir, 1)) + { + do_spec_1 ("-L", 0, NULL); ++#ifndef GCC_4_0 + #ifdef SPACE_AFTER_L_OPTION + do_spec_1 (" ", 0, NULL); + #endif ++#endif + do_spec_1 (buffer, 1, NULL); + do_spec_1 (multilib_dir, 1, NULL); + /* Make this a separate argument. */ +@@ -5205,9 +5227,11 @@ + if (is_directory (pl->prefix, multi_dir, 1)) + { + do_spec_1 ("-L", 0, NULL); ++#ifndef GCC_4_0 + #ifdef SPACE_AFTER_L_OPTION + do_spec_1 (" ", 0, NULL); + #endif ++#endif + do_spec_1 (pl->prefix, 1, NULL); + do_spec_1 (multi_dir, 1, NULL); + /* Make this a separate argument. */ +@@ -5220,9 +5244,11 @@ + if (is_directory (pl->prefix, machine_suffix, 1)) + { + do_spec_1 ("-L", 0, NULL); ++#ifndef GCC_4_0 + #ifdef SPACE_AFTER_L_OPTION + do_spec_1 (" ", 0, NULL); + #endif ++#endif + do_spec_1 (pl->prefix, 1, NULL); + /* Remove slash from machine_suffix. */ + if (strlen (machine_suffix) >= bufsize) +@@ -5242,9 +5268,11 @@ + if (is_directory (pl->prefix, "", 1)) + { + do_spec_1 ("-L", 0, NULL); ++#ifndef GCC_4_0 + #ifdef SPACE_AFTER_L_OPTION + do_spec_1 (" ", 0, NULL); + #endif ++#endif + /* Remove slash from pl->prefix. */ + if (strlen (pl->prefix) >= bufsize) + bufsize = strlen (pl->prefix) * 2 + 1; +@@ -7560,10 +7588,15 @@ + pfatal_with_name (errmsg_fmt); + } + +-/* Output an error message and exit. */ + ++/* Output an error message and exit. */ ++#ifdef GCC_4_0 ++void ++fancy_abort (const char * file_name, int line_number, const char * fun_name) ++#else + void + fancy_abort (void) ++#endif + { + fatal ("internal gpc abort"); + } +diff -urN gcc/p.old/gpc.h gcc/p/gpc.h +--- gcc/p.old/gpc.h 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/gpc.h 2006-06-10 17:46:10.413386000 +0000 +@@ -26,7 +26,7 @@ + #ifndef _GPC_H_ + #define _GPC_H_ + +-/*#define PG__NEW_STRINGS*/ ++#define PG__NEW_STRINGS + + /* GPC compile time configuration switches */ + +@@ -49,6 +49,40 @@ + + #include "gbe.h" + ++#ifdef GCC_4_0 ++extern tree xnon_lvalue (tree x); ++// #define non_lvalue(x) (build1 (NON_LVALUE_EXPR, TREE_TYPE (x), x)) ++#define non_lvalue(x) (xnon_lvalue (x)) ++#define PASCAL_BIT_FIELD_REF_UNSIGNED(x) \ ++ (TREE_CHECK2(x, BIT_FIELD_REF, PASCAL_BIT_FIELD_REF)->common.unsigned_flag) ++#define fold(x) (pascal_fold1 (x)) ++#define build_int_cst_wide(x, y, z) (pascal_build_int_cst ((x), (y), (z))) ++#define usizetype sizetype ++#define ubitsizetype bitsizetype ++#define build_int_2(x, y) (build_int_cst_wide (integer_type_node, x, y)) ++#define build_type_copy(x) (build_variant_type_copy (x)) ++ ++extern tree ++pascal_build_int_cst (tree type, unsigned HOST_WIDE_INT low, HOST_WIDE_INT hi); ++extern tree pascal_fold1 (tree t); ++ ++extern int lvalue_or_else (tree ref, const char *string); ++extern tree builtin_function (const char *name, tree type, int function_code, ++ enum built_in_class class, const char *library_name, tree dummy); ++#include "plant.h" ++#else ++#define PASCAL_BIT_FIELD_REF_UNSIGNED(x) TREE_UNSIGNED (x) ++#define tcc_exceptional 'x' ++#define tcc_constant 'c' ++#define tcc_type 't' ++#define tcc_declaration 'd' ++#define tcc_reference 'r' ++#define tcc_comparison '<' ++#define tcc_unary '1' ++#define tcc_binary '2' ++#define tcc_expression 'e' ++#endif ++ + #undef abort + #define abort() USE_GCC_ASSERT_RATHER_THAN_ABORT + #undef assert +@@ -57,7 +91,7 @@ + /* GCC 4.0.0 and up have gcc_assert and gcc_unreachable. Timing data shows + that removing asserts, but keeping gcc_unreachable's speeds up the compile. + gcc_assert does not evaluate the expression if assertions are disabled. */ +-#ifndef GCC_4 ++#ifndef GCC_4_0 + #ifndef __GNUC__ + #define __PRETTY_FUNCTION__ NULL + #endif +@@ -101,10 +135,11 @@ + #define sbitsizetype ssizetype + #define ubitsizetype usizetype + #define TREE_CHECK(t, code) (t) +-#define TYPE_P(TYPE) (TREE_CODE_CLASS (TREE_CODE (TYPE)) == 't') +-#define DECL_P(DECL) (TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd') ++#define TYPE_P(TYPE) (TREE_CODE_CLASS (TREE_CODE (TYPE)) == tcc_type) ++#define DECL_P(DECL) (TREE_CODE_CLASS (TREE_CODE (DECL)) == tcc_declaration) + #define IS_EXPR_CODE_CLASS(CLASS) \ +- (CLASS == '<' || CLASS == '1' || CLASS == '2' || CLASS == 'e') ++ (CLASS == tcc_comparison || CLASS == tcc_unary || \ ++ CLASS == tcc_binary || CLASS == tcc_expression) + #define IDENTIFIER_NODE_CHECK(NODE) (TREE_CHECK (NODE, IDENTIFIER_NODE)) + #define INTERFACE_NAME_NODE_CHECK(NODE) (TREE_CHECK (NODE, INTERFACE_NAME_NODE)) + #define IMPORT_NODE_CHECK(NODE) (TREE_CHECK (NODE, IMPORT_NODE)) +@@ -349,7 +384,8 @@ + #define HAS_EXP_ORIGINAL_CODE_FIELD(exp) \ + (IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (exp))) && TREE_CODE (exp) != CONSTRUCTOR) + +-#define IS_EXPR_OR_REF_CODE_CLASS(c) (IS_EXPR_CODE_CLASS (c) || c == 'r') ++#define IS_EXPR_OR_REF_CODE_CLASS(c) (IS_EXPR_CODE_CLASS (c) || \ ++ c == tcc_reference) + + #define PROMOTING_INTEGER_TYPE(t) \ + (TREE_CODE (t) == INTEGER_TYPE && TYPE_PRECISION (t) < TYPE_PRECISION (integer_type_node)) +@@ -1296,7 +1332,7 @@ + extern tree build_caret_string_constant (int); + extern tree combine_strings (tree, int); + extern void constant_expression_warning (tree); +-extern tree build_range_check (tree min, tree max, tree expr, int is_io); ++extern tree build_range_check (tree min, tree max, tree expr, int is_io, int gimplifying); + extern tree range_check_2 (tree, tree, tree); + extern tree range_check (tree, tree); + extern tree convert_and_check (tree, tree); +@@ -1350,6 +1386,7 @@ + + /* typecheck.c */ + ++extern tree copy_expr (tree); + extern void cstring_inform (void); + extern void ptrarith_inform (void); + extern tree require_complete_type (tree); +@@ -1380,6 +1417,7 @@ + extern tree digest_init (tree, tree, int); + extern tree build_pascal_initializer (tree, tree, const char *, int); + extern tree find_variant (tree, tree); ++// extern int allow_packed_addresses; + + /* types.c */ + +@@ -1403,9 +1441,9 @@ + extern int is_string_type (tree, int); + extern int is_of_string_type (tree, int); + extern int is_variable_string_type (tree); +-extern tree build_discriminants (tree, tree); ++extern tree build_discriminants (tree, tree, tree); + extern tree maybe_schema_discriminant (tree); +-extern tree build_schema_type (tree, tree, tree); ++extern tree build_schema_type (tree, tree, tree, tree); + extern int number_of_schema_discriminants (tree); + extern void prediscriminate_schema (tree); + extern tree base_type (tree); +@@ -1647,42 +1685,55 @@ + #define return_address_routine_node PGT(57) + #define frame_address_routine_node PGT(58) + #define checkinoutres_routine_node PGT(59) ++#define setbits_routine_node PGT(60) + + /* Identifiers */ +-#define self_id PGT(60) +-#define schema_id PGT(61) +-#define vmt_id PGT(62) ++#define self_id PGT(61) ++#define schema_id PGT(62) ++#define vmt_id PGT(63) + + /* All the nodes above are once initialized and should not change afterwards. */ + + /* A list of all exported names in all modules seen so far. + TREE_VALUE is an IDENTIFIER_NODE of an exported interface name, TREE_PURPOSE + is a TREE_LIST of the names exported by this interface. */ +-#define exported_interface_list PGT(63) ++#define exported_interface_list PGT(64) + + /* A list of all initializers that were deferred. */ +-#define deferred_initializers PGT(64) ++#define deferred_initializers PGT(65) + + /* The types in the current `type' declaration part. */ +-#define current_type_list PGT(65) ++#define current_type_list PGT(66) + + /* While in a `case' statement, a TREE_LIST: + TREE_VALUE: current case expression + TREE_PURPOSE: list of case ranges seen (if needed) */ +-#define current_case_values PGT(66) ++#define current_case_values PGT(67) ++ ++/* While in a schema definition, (incomplete) type of the schema */ ++#define current_schema PGT(68) ++ ++#define cword_boolean_type_node PGT(69) + +-#define cword_boolean_type_node PGT(67) ++#define global_save_list PGT(70) ++ ++#define current_statement_list PGT(71) ++ ++/* #define global_var_type_list (72) */ ++ ++#define PTI_MAX 72 + +-#define PTI_MAX 68 + extern GTY(()) tree pascal_global_trees[PTI_MAX]; + + #define pascal_integer_type_node ptrsize_integer_type_node + #define pascal_cardinal_type_node ptrsize_unsigned_type_node + ++#ifndef GCC_3_3 + /* @@ gcc>3.2 defines size_type_node in tree.h. After dropping support for + gcc-3.2.x, we can remove pascal_size_type_node (or make it #ifndef EGCS97 + if gcc-2 support is still wanted), and remove the following definition. */ + #undef size_type_node + #define size_type_node pascal_size_type_node ++#endif + + #endif /* _GPC_H_ */ +diff -urN gcc/p.old/lang.c gcc/p/lang.c +--- gcc/p.old/lang.c 2006-06-10 17:45:38.393386000 +0000 ++++ gcc/p/lang.c 2006-06-10 17:46:10.413386000 +0000 +@@ -35,6 +35,10 @@ + #include "gtype-p.h" + #endif + ++#ifdef GCC_4_0 ++#include "tree-gimple.h" ++#endif ++ + /* The following functions are not called from GPC, but needed by + the backend. Depending on the GCC version, they're simply called + as extern, so we can't make them static (yet). */ +@@ -102,6 +106,7 @@ + #endif + #endif + { ++#ifndef GCC_4_0 + enum tree_code code = TREE_CODE (t); + if (code == PASCAL_BIT_FIELD_REF) + return expand_expr ( +@@ -117,8 +122,8 @@ + TREE_OPERAND (t, 0), + TREE_OPERAND (t, 1), + TREE_OPERAND (t, 2), +- code == IO_RANGE_CHECK_EXPR), +- r, mm, em); ++ code == IO_RANGE_CHECK_EXPR, 0), ++ r, mm, em); + else if (code == PASCAL_CONSTRUCTOR_CALL) + return expand_expr ( + build_predef_call (p_New, TREE_OPERAND (t, 0)), +@@ -132,9 +137,152 @@ + } + #endif + else ++#endif + gcc_unreachable (); + } + ++#ifdef GCC_4_0 ++int ++pascal_gimplify_expr (tree *expr_p, tree *pre_p ATTRIBUTE_UNUSED, ++ tree *post_p ATTRIBUTE_UNUSED) ++{ ++ tree t = *expr_p; ++ enum tree_code code = TREE_CODE (t); ++ tree res; ++ switch (code) ++ { ++ case PASCAL_BIT_FIELD_REF: ++ res = build_pascal_packed_array_ref ( ++ TREE_OPERAND (t, 0), ++ TREE_OPERAND (t, 1), ++ TREE_OPERAND (t, 2), ++ 1); ++ res = unshare_expr (res); ++ break; ++ ++ case RANGE_CHECK_EXPR: ++ case IO_RANGE_CHECK_EXPR: ++ res = build_range_check ( ++ TREE_OPERAND (t, 0), ++ TREE_OPERAND (t, 1), ++ TREE_OPERAND (t, 2), ++ code == IO_RANGE_CHECK_EXPR, 1); ++ res = unshare_expr (res); ++ break; ++ ++ case PASCAL_CONSTRUCTOR_CALL: ++ { ++ tree save_statement_list = current_statement_list; ++ current_statement_list = NULL_TREE; ++ res = build_predef_call (p_New, TREE_OPERAND (t, 0)); ++ res = build (COMPOUND_EXPR, TREE_TYPE (res), ++ current_statement_list, res); ++ current_statement_list = save_statement_list; ++ unshare_all_trees (res); ++ } ++ break; ++ ++ case ADDR_EXPR: ++ /* Case taken for Ada front end */ ++ /* If we're taking the address of a constant CONSTRUCTOR, force it to ++ be put into static memory. We know it's going to be readonly given ++ the semantics we have and it's required to be static memory in ++ the case when the reference is in an elaboration procedure. */ ++ if (TREE_CODE (TREE_OPERAND (t, 0)) == CONSTRUCTOR ++ && TREE_CONSTANT (TREE_OPERAND (t, 0))) ++ { ++ tree new_var ++ = create_tmp_var (TREE_TYPE (TREE_OPERAND (t, 0)), "constructor"); ++ ++ TREE_READONLY (new_var) = 1; ++ TREE_STATIC (new_var) = 1; ++ TREE_ADDRESSABLE (new_var) = 1; ++ DECL_INITIAL (new_var) = TREE_OPERAND (t, 0); ++ ++ TREE_OPERAND (t, 0) = new_var; ++ return GS_ALL_DONE; ++ } ++ return GS_UNHANDLED; ++ ++ case CONSTRUCTOR: ++ if (TREE_CODE (TREE_TYPE (t)) == SET_TYPE) ++ { ++ tree type = TREE_TYPE (t); ++ tree elt = 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)); ++ tree bitlength; ++ tree st; ++ tree dest; ++ res = create_tmp_var (type, "set_constructor"); ++ dest = build_unary_op (ADDR_EXPR, res, 0); ++ ++ /* Align the set. */ ++ if (set_alignment) ++ domain_min = size_binop (BIT_AND_EXPR, domain_min, sbitsize_int (-(int) ++set_alignment)); ++ ++ bitlength = size_binop (PLUS_EXPR, ++ size_binop (MINUS_EXPR, domain_max, domain_min), ++ sbitsize_int (1)); ++ ++ ++ if (TREE_INT_CST_HIGH (bitlength)) { ++ error ("set size too big for host integers"); ++ return GS_ERROR; ++ } ++ bitlength = convert (sizetype, bitlength); ++ ++ /* Clear storage */ ++ st = build_memset (dest, TYPE_SIZE_UNIT (type), integer_zero_node); ++ gimplify_and_add (st, pre_p); ++ /* Set bits */ ++ for (; elt != NULL_TREE; elt = TREE_CHAIN (elt)) ++ { ++ tree startbit = TREE_PURPOSE (elt); ++ tree endbit = TREE_VALUE (elt); ++ if (startbit == NULL_TREE) ++ { ++ startbit = save_expr (endbit); ++ endbit = startbit; ++ } ++ ++ startbit = convert (sizetype, startbit); ++ endbit = convert (sizetype, endbit); ++ if (! integer_zerop (domain_min)) ++ { ++ startbit = convert (sbitsizetype, startbit); ++ endbit = convert (sbitsizetype, endbit); ++ startbit = size_binop (MINUS_EXPR, startbit, domain_min); ++ endbit = size_binop (MINUS_EXPR, endbit, domain_min); ++ } ++ startbit = convert (sizetype, startbit); ++ endbit = convert (sizetype, endbit); ++ ++ st = build_routine_call (setbits_routine_node, ++ tree_cons (NULL_TREE, dest, ++ tree_cons (NULL_TREE, bitlength, ++ tree_cons (NULL_TREE, startbit, ++ build_tree_list (NULL_TREE, endbit))))); ++ gimplify_and_add (st, pre_p); ++ } ++ break; ++ } ++ else ++ { ++// fprintf(stderr, "pascal_gimplify_expr"); ++// debug_tree (t); ++ } ++ /* Falltrough */ ++ default: ++ return GS_UNHANDLED; ++ } ++ *expr_p = res; ++ return GS_OK; ++} ++#endif ++ + const char * + pascal_decl_name (tree decl, int verbosity ATTRIBUTE_UNUSED) + { +@@ -404,12 +552,19 @@ + + /* Tree code classes. */ + #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE, +- ++#ifdef GCC_4_0 ++const enum tree_code_class tree_code_type[] = { ++#include "tree.def" ++ tcc_exceptional, ++#include "p-tree.def" ++}; ++#else + const char tree_code_type[] = { + #include "tree.def" + 'x', + #include "p-tree.def" + }; ++#endif + #undef DEFTREECODE + + /* Table indexed by tree code giving number of expression +@@ -502,19 +657,23 @@ + return 0; + } + +-extern void cpp_define (void *, const char *); ++extern void gpc_cpp_define (void *, const char *); + void +-cpp_define (void *r ATTRIBUTE_UNUSED, const char *s) ++gpc_cpp_define (void *r ATTRIBUTE_UNUSED, const char *s) + { + builtin_define_std (s); + } + +-extern void cpp_assert (void *, const char *); ++#define cpp_define(r, s) gpc_cpp_define(r, s) ++ ++extern void gpc_cpp_assert (void *, const char *); + void +-cpp_assert (void *pfile ATTRIBUTE_UNUSED, const char *str ATTRIBUTE_UNUSED) ++gpc_cpp_assert (void *pfile ATTRIBUTE_UNUSED, const char *str ATTRIBUTE_UNUSED) + { + } + ++#define cpp_assert(pfile, str) gpc_cpp_assert(pfile, str) ++ + #define preprocessing_asm_p() 0 + #define preprocessing_trad_p() 0 + /* @@ Backend bug: TARGET_OS_CPP_BUILTINS on some targets uses them +@@ -591,9 +750,18 @@ + static int + pascal_handle_option (size_t scode, const char *arg, int value) + { ++#ifdef GCC_4_0 ++ if ((enum opt_code) scode == OPT_Werror) ++ { ++ global_dc->warning_as_error_requested = value; ++ return 1; ++ } ++#endif ++ + switch ((enum opt_code) scode) + { + #include "handle-opts.c" ++ + default: + break; + } +@@ -679,7 +847,9 @@ + (gcc-2 only), and it seems to cause a hard to reproduce memory management + problem (gcc-3 only, reported by David Wood ). + So we just turn it off here. */ ++#ifndef GCC_4_0 + debug_no_type_hash = 1; ++#endif + + #ifndef EGCS + init_gpc_lex (input_filename); +@@ -1354,8 +1524,12 @@ + #undef LANG_HOOKS_POST_OPTIONS + #define LANG_HOOKS_POST_OPTIONS pascal_post_options + #endif ++ ++#ifndef GCC_4_0 + #undef LANG_HOOKS_CLEAR_BINDING_STACK + #define LANG_HOOKS_CLEAR_BINDING_STACK pascal_clear_binding_stack ++#endif ++ + #undef LANG_HOOKS_DECODE_OPTION + #define LANG_HOOKS_DECODE_OPTION lang_decode_option + #undef LANG_HOOKS_INIT_OPTIONS +@@ -1388,7 +1562,7 @@ + #define LANG_HOOKS_TYPE_FOR_SIZE type_for_size + #define LANG_HOOKS_TYPE_FOR_MODE type_for_mode + +-#define LANG_HOOKS_MARK_ADDRESSABLE mark_addressable ++#define LANG_HOOKS_MARK_ADDRESSABLE pascal_mark_addressable + #define LANG_HOOKS_TRUTHVALUE_CONVERSION truthvalue_conversion + + #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL +@@ -1403,6 +1577,62 @@ + #undef LANG_HOOKS_HASH_TYPES + #define LANG_HOOKS_HASH_TYPES false + ++ ++#ifdef GCC_4_0 ++#undef LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION ++#define LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION pascal_expand_function ++ ++#undef LANG_HOOKS_GIMPLIFY_EXPR ++#define LANG_HOOKS_GIMPLIFY_EXPR pascal_gimplify_expr ++ ++#undef LANG_HOOKS_TYPES_COMPATIBLE_P ++#define LANG_HOOKS_TYPES_COMPATIBLE_P pascal_types_compatible_p ++ ++int ++pascal_types_compatible_p (tree t1, tree t2) ++{ ++ if (TREE_CODE (t1) == POINTER_TYPE && TREE_CODE (t2) == POINTER_TYPE) ++ { ++ t1 = TREE_TYPE (t1); ++ t2 = TREE_TYPE (t2); ++ } ++ if (PASCAL_TYPE_STRING (t1) && PASCAL_TYPE_STRING (t2)) ++ return 1; ++ else if (PASCAL_TYPE_SCHEMA (t1) && PASCAL_TYPE_SCHEMA (t2)) ++ { ++ tree base1 = t1, base2 = t2; ++ if (TYPE_LANG_BASE (t1)) ++ base1 = TYPE_LANG_BASE (t1); ++ if (TYPE_LANG_BASE (t2)) ++ base2 = TYPE_LANG_BASE (t2); ++ base1 = TYPE_MAIN_VARIANT (base1); ++ base2 = TYPE_MAIN_VARIANT (base2); ++ if (base1 == base2) ++ return 1; ++ } ++ return strictly_comp_types (TYPE_MAIN_VARIANT (t1), TYPE_MAIN_VARIANT (t2)); ++} ++ ++static void ++pascal_expand_function (tree fndecl) ++{ ++ /* We have nothing special to do while expanding functions for Pascal. */ ++ tree_rest_of_compilation (fndecl); ++} ++#endif ++ ++#ifdef GCC_3_3 ++bool ++#else ++int ++#endif ++pascal_mark_addressable (tree exp) ++{ ++ return mark_addressable2 (exp, 1); ++} ++ ++ ++ + static void + pascal_parse (int debug) + { +diff -urN gcc/p.old/module.c gcc/p/module.c +--- gcc/p.old/module.c 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/module.c 2006-06-10 17:46:10.413386000 +0000 +@@ -28,6 +28,9 @@ + + #include "gpc.h" + #include "p/p-version.h" ++#ifdef GCC_4_0 ++#include "version.h" ++#endif + + #ifdef EGCS + #define HOST_PTR_PRINTF_CAST_TYPE PTR +@@ -1816,6 +1819,8 @@ + STORE_ANY (n); + } + ++static int loading_module_interface; ++ + static tree + load_tree (MEMFILE *s, gpi_int start_of_nodes, gpi_int size_of_offsets, int module_interface) + { +@@ -1850,13 +1855,17 @@ + push_obstacks_nochange (); + end_temporary_allocation (); + #endif ++ loading_module_interface = module_interface ; + result = load_node (); + /* Do this here after all nodes have been loaded and are thus complete. */ + for (n = NUM_SPECIAL_NODES; n < nodes_count; n++) + { + tree t = rb.nodes[n]; + if (t && (TREE_CODE (t) == FUNCTION_DECL || (TREE_CODE (t) == VAR_DECL)) +- && !DECL_RTL_SET_P (t)) ++/* #ifndef GCC_4_0 */ ++ && !DECL_RTL_SET_P (t) ++/* #endif */ ++ ) + { + if (!module_interface) + { +@@ -1864,10 +1873,34 @@ + PASCAL_FORWARD_DECLARATION (t) = 0; + else + DECL_EXTERNAL (t) = 1; /* not for module interface so init_any won't ignore it */ ++#if 0 ++ if (TREE_CODE (t) == VAR_DECL) ++ DECL_INITIAL (t) = NULL_TREE; ++#endif + } ++#if 0 ++ else ++ { ++ 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); ++#else + rest_of_decl_compilation (t, NULL, 1, 1); ++#endif + } + /* Support `private' for object fields/methods */ + if (!module_interface +@@ -1930,7 +1963,11 @@ + + /* Storing/loading a node's flags. @@@@ Very much GCC version dependent. */ + #ifdef EGCS97 ++#ifdef GCC_4_0 ++#define DECL_FLAGS_SIZE 8 ++#else + #define DECL_FLAGS_SIZE 6 ++#endif + #define DECL_EXTRA_STORED(t) (t->decl.u1.i) + #else + #ifdef EGCS +@@ -1940,6 +1977,12 @@ + #endif + #define DECL_EXTRA_STORED(t) DECL_FRAME_SIZE (t) + #endif ++#ifndef GCC_4_0 ++#define FLAGS_OFFSET 2 ++#else ++#define FLAGS_OFFSET 3 ++#endif ++ + static void + store_flags (tree t) + { +@@ -1948,10 +1991,10 @@ + where it refers to debug info (see ../tree.h). */ + if (TYPE_P (t)) + TREE_ASM_WRITTEN (t) = 0; +- store_length ((tree *) t + 2, 4); ++ store_length ((tree *) t + FLAGS_OFFSET, 4); + TREE_ASM_WRITTEN (t) = save; + } +-#define load_flags(t) LOAD_LENGTH ((tree *) t + 2, 4) ++#define load_flags(t) LOAD_LENGTH ((tree *) t + FLAGS_OFFSET, 4) + + /* Store the fields of a node in a stream. */ + static void +@@ -2019,7 +2062,7 @@ + store_flags (t); + switch (TREE_CODE_CLASS (code)) + { +- case 't': ++ case tcc_type: + store_length (&TYPE_UID (t) + 1, 4 + sizeof (TYPE_ALIGN (t))); + store_node (TYPE_NAME (t)); + store_node (TYPE_SIZE (t)); +@@ -2030,7 +2073,7 @@ + store_node (TYPE_GET_INITIALIZER (t)); + store_node (TYPE_MAIN_VARIANT (t) == t ? NULL_TREE : TYPE_MAIN_VARIANT (t)); + break; +- case 'd': ++ case tcc_declaration: + { + gpi_int n; + store_length ((&DECL_SIZE (t)) + 1, DECL_FLAGS_SIZE); +@@ -2049,15 +2092,17 @@ + STORE_ANY (n); + break; + } +- case 'c': ++ case tcc_constant: + store_node (TREE_TYPE (t)); + break; +- case '1': +- case '2': ++ case tcc_unary: ++ case tcc_binary: ++#ifndef GCC_4_0 + case '3': +- case '<': +- case 'e': +- case 'r': ++#endif ++ case tcc_comparison: ++ case tcc_expression: ++ case tcc_reference: + { + int i, l = NUMBER_OF_OPERANDS (code); + store_node (TREE_TYPE (t)); +@@ -2282,7 +2327,11 @@ + + case VAR_DECL: + store_node (TREE_TYPE (t)); +- /* No need to store DECL_INITIAL. */ ++#if 1 ++ /* We need to store DECL_INITIAL to pass initial value from ++ interface to the implementation */ ++ store_node (DECL_INITIAL (t)); ++#endif + store_string (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (t))); + break; + +@@ -2295,7 +2344,11 @@ + break; + + default: ++#ifdef GCC_4_0 ++ gcc_assert (class_done); ++#else + gcc_assert (class_done && code != RTL_EXPR); ++#endif + } + } + +@@ -2475,16 +2528,33 @@ + t = get_identifier (id); + free (id); + } ++ else if (code == STRING_CST) ++ { ++ char *s; ++ struct {char c[4];} pp; ++ gpi_int l; ++ tree ty; ++ LOAD_ANY(pp); ++ ty = load_node (); ++ LOAD_ANY(l); ++ s = xmalloc (l + 1); ++ LOAD_LENGTH (s, l); ++ t = build_string (l, s); ++ memcpy ((tree *) t + FLAGS_OFFSET, &pp, 4); ++ TREE_TYPE (t) = ty; ++ free (s); ++ } + else + t = make_node (code); + itab_store_node (itab, original_uid, t); + gcc_assert (!rb.nodes[uid]); + rb.nodes[uid] = t; +- if (code != IDENTIFIER_NODE && code != INTERFACE_NAME_NODE) ++ if (code != IDENTIFIER_NODE && code != INTERFACE_NAME_NODE ++ && code != STRING_CST) + load_flags (t); + switch (TREE_CODE_CLASS (code)) + { +- case 't': ++ case tcc_type: + { + tree tmp; + LOAD_LENGTH (&TYPE_UID (t) + 1, 4 + sizeof (TYPE_ALIGN (t))); +@@ -2494,6 +2564,10 @@ + TYPE_SIZE_UNIT (t) = load_node (); + #endif + TYPE_POINTER_TO (t) = load_node (); ++#ifdef GCC_4_0 ++ TYPE_CACHED_VALUES_P (t) = 0; ++ TYPE_CACHED_VALUES (t) = NULL_TREE; ++#endif + tmp = load_node (); + if (tmp) + { +@@ -2510,7 +2584,7 @@ + } + break; + } +- case 'd': ++ case tcc_declaration: + { + gpi_int n; + char *s; +@@ -2533,15 +2607,18 @@ + DECL_IN_SYSTEM_HEADER (t) = 1; + break; + } +- case 'c': +- TREE_TYPE (t) = load_node (); ++ case tcc_constant: ++ if (code != STRING_CST) ++ TREE_TYPE (t) = load_node (); + break; +- case '1': +- case '2': ++ case tcc_unary: ++ case tcc_binary: ++#ifndef GCC_4_0 + case '3': +- case '<': +- case 'e': +- case 'r': ++#endif ++ case tcc_comparison: ++ case tcc_expression: ++ case tcc_reference: + { + int i, l = NUMBER_OF_OPERANDS (code); + TREE_TYPE (t) = load_node (); +@@ -2730,22 +2807,6 @@ + TREE_IMAGPART (t) = load_node (); + break; + +- case STRING_CST: +- { +- char *s; +- gpi_int l; +- LOAD_ANY(l); +- TREE_STRING_LENGTH (t) = l; +-#ifdef EGCS97 +- s = xmalloc (l + 1); +-#else +- s = oballoc (l + 1); +-#endif +- LOAD_LENGTH (s, l); +- TREE_STRING_POINTER (t) = s; +- break; +- } +- + case FUNCTION_DECL: + { + char *assembler_name_str; +@@ -2812,7 +2873,13 @@ + case VAR_DECL: + { + char *assembler_name_str; ++ tree init; + TREE_TYPE (t) = load_node (); ++#if 1 ++ init = load_node (); ++ if (loading_module_interface && itab == current_interface_table) ++ DECL_INITIAL (t) = init; ++#endif + assembler_name_str = load_string (rb.infile); + gcc_assert (*assembler_name_str); + SET_DECL_ASSEMBLER_NAME (t, get_identifier (assembler_name_str)); +diff -urN gcc/p.old/objects.c gcc/p/objects.c +--- gcc/p.old/objects.c 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/objects.c 2006-06-10 17:46:10.413386000 +0000 +@@ -67,7 +67,12 @@ + return build (COMPOUND_EXPR, TREE_TYPE (value), TREE_OPERAND (obj, 0), value); + } + vmt_field = TYPE_LANG_VMT_FIELD (TREE_TYPE (obj)); ++#ifndef GCC_4_0 + return build (COMPONENT_REF, TREE_TYPE (vmt_field), obj, vmt_field); ++#else ++ return build3 (COMPONENT_REF, TREE_TYPE (vmt_field), obj, vmt_field, ++ NULL_TREE); ++#endif + } + + static tree +@@ -199,7 +204,12 @@ + char *n = ACONCAT (("method_", IDENTIFIER_POINTER (DECL_NAME (fun)), NULL)); + method = simple_get_field (get_identifier (n), TREE_TYPE (TREE_TYPE (TYPE_LANG_VMT_FIELD (TREE_TYPE (obj)))), NULL); + type_save = TREE_TYPE (fun); ++#ifndef GCC_4_0 + fun = build (COMPONENT_REF, TREE_TYPE (method), vmt_deref, method); ++#else ++ fun = build3 (COMPONENT_REF, TREE_TYPE (method), vmt_deref, ++ method, NULL_TREE); ++#endif + /* In the VMT, only generic pointers are stored to avoid + confusion in GPI files. Repair them here. */ + TREE_TYPE (fun) = build_pointer_type (type_save); +@@ -510,7 +520,9 @@ + /* Push also abstract methods (for better error messages on attempts to implement them). */ + method = pushdecl (method); + gcc_assert (!EM (method)); ++#ifndef GCC_4_0 + rest_of_decl_compilation (method, 0, 1, 1); ++#endif + if (PASCAL_FORWARD_DECLARATION (method)) + { + set_forward_decl (method, 1); +@@ -801,8 +813,16 @@ + from being pushed as a regular declaration (which is unnecessary). */ + n = ACONCAT (("vmt_", IDENTIFIER_POINTER (object_type_name), NULL)); + TYPE_LANG_VMT_VAR (type) = declare_variable (get_identifier (n), vmt_type, +- build_tree_list (NULL_TREE, vmt_entry), VQ_IMPLICIT | VQ_CONST | (current_module->implementation ? VQ_STATIC : 0)); ++ build_tree_list (NULL_TREE, vmt_entry), VQ_IMPLICIT | VQ_CONST | ++ (current_module->implementation ? VQ_STATIC : 0)); + ++#ifdef 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 +diff -urN gcc/p.old/options.c gcc/p/options.c +--- gcc/p.old/options.c 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/options.c 2006-06-10 17:46:10.413386000 +0000 +@@ -26,6 +26,10 @@ + #include "gpc.h" + #include "gpc-options.h" + #include "p/p-version.h" ++#ifdef GCC_4_0 ++#include "version.h" ++#endif ++ + + #ifdef GCC_3_4 + #include "options.h" +diff -urN gcc/p.old/opts.sum gcc/p/opts.sum +--- gcc/p.old/opts.sum 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/opts.sum 2006-06-10 17:46:10.413386000 +0000 +@@ -9,6 +9,7 @@ + U:Joined Separate:-U Undefine + Wall:: + Wcomment:: ++Werror:: + Wmissing-declarations:: + Wmissing-prototypes:: + Wpointer-arith:: +diff -urN gcc/p.old/p-tree.def gcc/p/p-tree.def +--- gcc/p.old/p-tree.def 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/p-tree.def 2006-06-10 17:46:10.413386000 +0000 +@@ -22,6 +22,21 @@ + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + ++#ifdef GCC_4_0 ++DEFTREECODE (OPERATOR_DECL, "operator_decl", tcc_declaration, 0) ++/* The field `gpi_int checksum' might be larger than a pointer, so ++ reserve two pointer sizes for it. */ ++DEFTREECODE (INTERFACE_NAME_NODE, "interface_name_node", tcc_exceptional, 3) ++DEFTREECODE (IMPORT_NODE, "import_node", tcc_exceptional, 4) ++DEFTREECODE (PASCAL_BIT_FIELD_REF, "pascal_bit_field_ref", tcc_reference, 3) ++DEFTREECODE (PASCAL_CONSTRUCTOR_CALL, "pascal_constructor_call", tcc_binary, 2) ++DEFTREECODE (POWER_EXPR, "power_expr", tcc_binary, 2) ++DEFTREECODE (POW_EXPR, "pow_expr", tcc_binary, 2) ++DEFTREECODE (SYMDIFF_EXPR, "symdiff_expr", tcc_binary, 2) ++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) ++#else + #ifdef EGCS + DEFTREECODE (OPERATOR_DECL, "operator_decl", 'd', 0) + /* The field `gpi_int checksum' might be larger than a pointer, so +@@ -48,3 +63,4 @@ + DEFTREECODE (RANGE_CHECK_EXPR, "range_check_expr", "e", 3) + DEFTREECODE (IO_RANGE_CHECK_EXPR, "io_range_check_expr", "e", 3) + #endif ++#endif +diff -urN gcc/p.old/p-version.h gcc/p/p-version.h +--- gcc/p.old/p-version.h 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/p-version.h 2006-06-10 17:46:10.413386000 +0000 +@@ -3,5 +3,5 @@ + + #define GPC_MAJOR "2" + #define GPC_MINOR "1" +-#define GPC_VERSION_STRING "20060215" ++#define GPC_VERSION_STRING "20060325" + #define GPC_RELEASE_STRING GPC_VERSION_STRING +diff -urN gcc/p.old/parse.y gcc/p/parse.y +--- gcc/p.old/parse.y 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/parse.y 2006-06-10 17:46:10.413386000 +0000 +@@ -61,7 +61,11 @@ + token LEX_CONST_EQUAL. */ + + %{ ++#define YYMAXDEPTH 200000 + #include "gpc.h" ++#ifdef GCC_4_0 ++#include "cgraph.h" ++#endif + + /* A few keywords of some dialects can be parsed as regular identifiers + and checked from the parser actions => fewer special tokens. */ +@@ -102,7 +106,7 @@ + %glr-parser + %no-default-prec + %expect 62 +-%expect-rr 189 ++%expect-rr 24 + + /* The semantic values */ + %union { +@@ -722,7 +726,9 @@ + build_type_decl ($1, $4, $5); + } + } +- | new_identifier formal_schema_discriminants equals ++ | new_identifier ++ { current_schema = start_struct (RECORD_TYPE); } ++ formal_schema_discriminants equals + { + $$ = immediate_size_expand; + immediate_size_expand = 0; +@@ -730,35 +736,48 @@ + } + type_denoter_with_attributes optional_value_specification + { +- build_type_decl ($1, build_schema_type ($5, $2, $6), NULL_TREE); +- immediate_size_expand = $4; ++ build_type_decl ($1, build_schema_type ($6, $3, $7, current_schema), ++ NULL_TREE); ++ immediate_size_expand = $5; + size_volatile--; ++ current_schema = NULL_TREE; ++ } ++ | new_identifier ++ { current_schema = start_struct (RECORD_TYPE); } ++ formal_schema_discriminants error ++ { build_schema_type (error_mark_node, $3, NULL_TREE, current_schema); ++ current_schema = NULL_TREE; + } +- | new_identifier formal_schema_discriminants error +- { build_schema_type (error_mark_node, $2, NULL_TREE); } + | new_identifier enable_lce equals + { $$ = start_object_type ($1, 0); } +- optional_abstract p_object object_parent object_field_list p_end ++ optional_abstract p_object object_parent ++ { push_scope (); } ++ object_field_list p_end + { + lex_const_equal = -1; +- finish_object_type ($4, $7, $8, $5 != NULL_TREE); ++ finish_object_type ($4, $7, $9, $5 != NULL_TREE); + pop_record_level ($4); + yyerrok; + } ++ + | new_identifier enable_lce equals + { $$ = start_object_type ($1, 1); } +- optional_abstract p_class object_parent object_field_list p_end ++ optional_abstract p_class object_parent ++ { push_scope (); } ++ object_field_list p_end + { + lex_const_equal = -1; +- finish_object_type ($4, $7, $8, $5 != NULL_TREE); ++ finish_object_type ($4, $7, $9, $5 != NULL_TREE); + pop_record_level ($4); + yyerrok; + } +- | new_identifier enable_lce equals +- p_view p_of typename object_parent object_field_list p_end ++ ++ | new_identifier enable_lce equals p_view p_of typename object_parent ++ { push_scope (); } ++ object_field_list p_end + { + lex_const_equal = -1; +- finish_view_type ($1, $6, $7, $8); ++ finish_view_type ($1, $6, $7, $9); + pop_record_level (NULL_TREE); + yyerrok; + } +@@ -803,7 +822,7 @@ + + discriminant_specification: + id_list ':' typename +- { $$ = build_discriminants ($1, $3); } ++ { $$ = build_discriminants ($1, $3, current_schema); } + ; + + type_denoter_with_attributes: +@@ -1068,10 +1087,9 @@ + ; + + object_field_list: +- { push_scope (); } object_field_list_1 { $$ = $2; } +- | { push_scope (); } object_field_list_1 object_section +- { $$ = chainon ($2, $3); } +- | { push_scope (); } error ++ object_field_list_1 { $$ = $1; } ++ | object_field_list_1 object_section { $$ = chainon ($1, $2); } ++ | error + { $$ = error_mark_node; } + ; + +@@ -1497,6 +1515,8 @@ + { build_predef_call (p_Exit, build_tree_list (NULL_TREE, void_type_node)); } + | p_Exit '(' id ')' + { build_predef_call (p_Exit, build_tree_list (NULL_TREE, $3)); } ++ | p_Exit '(' id '.' id ')' ++ { build_predef_call (p_Exit, build_tree_list ($3, $5)); } + | builtin_procedure_statement + | p_with with_list p_do pushlevel optional_statement poplevel + { restore_identifiers ($2); } +@@ -1741,7 +1761,7 @@ + if (PEDANTIC (NOT_CLASSIC_PASCAL) + && ( PASCAL_CST_PARENTHESES ($$) + || !(TREE_CODE ($$) == STRING_CST +- || (TREE_CODE_CLASS (TREE_CODE ($$)) == 'c' ++ || (TREE_CODE_CLASS (TREE_CODE ($$)) == tcc_constant + && PASCAL_CST_FRESH ($$))))) + error ("ISO 7185 Pascal allows only simple constants"); + } +@@ -2475,6 +2495,23 @@ + int + yyparse (void) + { ++ int res; + init_predef (); +- return main_yyparse (); ++ res = main_yyparse (); ++#ifdef GCC_4_0 ++ /* @@@@@ cgraphunit do not notice if address of a routine is ++ referenced from static global variable */ ++ { ++ tree decl = getdecls(); ++ while (decl) ++ { ++ if (TREE_CODE (decl) == FUNCTION_DECL && TREE_ADDRESSABLE (decl)) ++ mark_decl_referenced (decl); ++ decl = TREE_CHAIN (decl); ++ } ++ } ++ cgraph_finalize_compilation_unit (); ++ cgraph_optimize (); ++#endif ++ return res; + } +diff -urN gcc/p.old/pascal-lex.l gcc/p/pascal-lex.l +--- gcc/p.old/pascal-lex.l 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/pascal-lex.l 2006-06-10 17:46:10.413386000 +0000 +@@ -347,13 +347,13 @@ + else + switch (*++c) + { +- case 'n': *d++ = TARGET_NEWLINE; break; +- case 't': *d++ = TARGET_TAB; break; +- case 'r': *d++ = TARGET_CR; break; +- case 'f': *d++ = TARGET_FF; break; +- case 'b': *d++ = TARGET_BS; break; +- case 'v': *d++ = TARGET_VT; break; +- case 'a': *d++ = TARGET_BELL; break; ++ case 'n': *d++ = '\n' /* TARGET_NEWLINE */; break; ++ case 't': *d++ = '\t' /* TARGET_TAB */; break; ++ case 'r': *d++ = '\r' /* TARGET_CR */; break; ++ case 'f': *d++ = '\f' /* TARGET_FF */; break; ++ case 'b': *d++ = '\b' /* TARGET_BS */; break; ++ case 'v': *d++ = '\v' /* TARGET_VT */; break; ++ case 'a': *d++ = '\a' /* TARGET_BELL */; break; + case 'e': + case 'E': *d++ = 27; break; + case 'x': { +diff -urN gcc/p.old/plant.c gcc/p/plant.c +--- gcc/p.old/plant.c 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/p/plant.c 2006-06-10 11:22:38.000000000 +0000 +@@ -0,0 +1,795 @@ ++/* Emulate old expand_* routines using Tree-SSA infrastructure. ++ ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ ++ Authors: Waldek Hebisch ++ ++ This file is part of GNU Pascal. ++ ++ GNU Pascal is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 2, or (at your ++ option) any later version. ++ ++ GNU Pascal is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU Pascal; see the file COPYING. If not, write to the ++ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#include ++ ++#ifdef GCC_3_3 ++#include ++ ++/* Made unconditional for 3.3 to avoid Makefile tricks */ ++typedef struct plant_nesting GTY(()) { ++ enum tree_code code; ++ int flags; ++ struct plant_nesting * next; ++ tree arg0; ++ tree arg1; ++ tree arg2; ++ tree statement_list; ++ location_t locus; ++} plant_nesting; ++ ++ ++/* static GGTY(()) tree current_statement_list = NULL_TREE; */ ++ ++static GTY(()) plant_nesting * plant_stack = NULL; ++ ++static GTY(()) varray_type gimplified_types = 0; ++static GTY(()) varray_type gimplified_sizes = 0; ++static GTY(()) varray_type gimplified_size_addrs = 0; ++#endif ++ ++#ifdef GCC_4_0 ++#include "cgraph.h" ++#include "tree-gimple.h" ++#include "tree-dump.h" ++ ++/* @@@@@@@@@@@@@@@@@@@@@@@@@@ */ ++int immediate_size_expand; ++#if 0 ++int set_words_big_endian; ++int set_word_size; ++#endif ++ ++location_t plant_locus; ++int plant_locus_initialized = 0; ++ ++#define LOOP_HAS_CONTINUE 1 ++ ++void ++clear_last_expr (void) ++{ ++ gcc_assert (0); ++} ++ ++void ++plant_decl_init (tree decl) ++{ ++ gcc_assert (0); ++} ++ ++void ++plant_decl (tree decl) ++{ ++ tree de = build (DECL_EXPR, void_type_node, decl); ++ { ++ tree id = DECL_NAME (decl); ++ const char * n = IDENTIFIER_POINTER (id); ++// fprintf(stderr, "var %s\n", n? n : "???"); ++ } ++ ++ plant_expr_stmt (de); ++} ++ ++void ++plant_line_note (location_t loc) ++{ ++ plant_locus = loc; ++ plant_locus_initialized = 1; ++} ++ ++void ++plant_asm (tree string, int vol) ++{ ++ gcc_assert (0); ++} ++ ++void ++plant_nop (void) ++{ ++ // gcc_assert (0); ++} ++ ++void ++plant_asm_operands (tree string, tree outputs, ++ tree inputs, tree clobbers, int vol, location_t loc_aux) ++{ ++// gcc_assert (0); ++ tree ae = build (ASM_EXPR, void_type_node, string, outputs, inputs, clobbers); ++ plant_expr_stmt (ae); ++} ++ ++void ++plant_function_start (tree decl, int i) ++{ ++ // gcc_assert (0); ++// fprintf (stderr, "plant_function_start\n"); ++ struct plant_nesting * nest = ggc_alloc (sizeof (*nest)); ++ nest->code = FUNCTION_DECL; ++ nest->arg0 = nest->arg1 = nest->arg2 = NULL_TREE; ++ nest->next = plant_stack; ++ nest->statement_list = current_statement_list; ++ nest->locus = plant_locus; ++ current_statement_list = NULL_TREE; ++ plant_stack = nest; ++} ++ ++static void ++pascal_remember_gimplified_type (tree t) ++{ ++ VARRAY_PUSH_TREE (gimplified_types, t); ++} ++ ++static void ++pascal_remember_gimplified_sizepos (tree * exp) ++{ ++ VARRAY_PUSH_TREE (gimplified_sizes, * exp); ++ VARRAY_PUSH_TREE_PTR (gimplified_size_addrs, exp); ++} ++ ++extern void (*lang_remember_gimplified_type)(tree); ++extern void (*lang_remember_gimplified_sizepos)(tree *); ++ ++static void ++pascal_gimplify_function (tree fndecl) ++{ ++ struct cgraph_node *cgn; ++ static long gimplifying = 0; ++ if (!gimplifying) ++ { ++ VARRAY_TREE_INIT (gimplified_types, 32, "gimplified_types"); ++ VARRAY_TREE_INIT (gimplified_sizes, 64, "gimplified_sizes"); ++ VARRAY_TREE_PTR_INIT (gimplified_size_addrs, 64, ++ "gimplified_size_addrs"); ++ lang_remember_gimplified_type = pascal_remember_gimplified_type; ++ lang_remember_gimplified_sizepos = pascal_remember_gimplified_sizepos; ++ } ++ gimplifying ++; ++ dump_function (TDI_original, fndecl); ++ gimplify_function_tree (fndecl); ++ dump_function (TDI_generic, fndecl); ++ ++ /* Convert all nested functions to GIMPLE now. We do things in this order ++ so that items like VLA sizes are expanded properly in the context of the ++ correct function. */ ++ cgn = cgraph_node (fndecl); ++ for (cgn = cgn->nested; cgn; cgn = cgn->next_nested) ++ pascal_gimplify_function (cgn->decl); ++ gimplifying --; ++ if (!gimplifying) ++ { ++ size_t i; ++#if 0 ++ /* Restore sizes */ ++ i = VARRAY_ACTIVE_SIZE (gimplified_sizes); ++ while (i > 0) ++ { ++ i--; ++ *VARRAY_TREE_PTR (gimplified_size_addrs, i) = ++ VARRAY_TREE (gimplified_sizes, i); ++ } ++ /* Restore types */ ++ i = VARRAY_ACTIVE_SIZE (gimplified_types); ++ while (i > 0) ++ { ++ tree type = VARRAY_TREE (gimplified_types, i - 1); ++ tree t = TYPE_NEXT_VARIANT (type); ++ i--; ++ TYPE_SIZES_GIMPLIFIED (type) = 0; ++ for (; t; t = TYPE_NEXT_VARIANT (t)) ++ { ++ TYPE_SIZE (t) = TYPE_SIZE (type); ++ TYPE_SIZE_UNIT (t) = TYPE_SIZE_UNIT (type); ++ TYPE_SIZES_GIMPLIFIED (t) = 0; ++ switch (TREE_CODE (type)) ++ { ++ case INTEGER_TYPE: ++ case ENUMERAL_TYPE: ++ case BOOLEAN_TYPE: ++ case CHAR_TYPE: ++ case REAL_TYPE: ++ TYPE_MIN_VALUE (t) = TYPE_MIN_VALUE (type); ++ TYPE_MAX_VALUE (t) = TYPE_MAX_VALUE (type); ++ break; ++ ++ default: ++ break; ++ } ++ } ++ } ++#endif ++ varray_type gimplified_types = 0; ++ varray_type gimplified_sizes = 0; ++ varray_type gimplified_size_addrs = 0; ++ } ++} ++ ++static void ++pascal_dump_tree (tree t, int indent) ++{ ++ int i; ++ enum tree_code code; ++ ++ for (i=0; i\n"); ++ return; ++ } ++ code = TREE_CODE (t); ++ fprintf(stdout, "<%s %p>\n", tree_code_name[code], t); ++ switch (code) { ++ case VAR_DECL: ++ case CONST_DECL: ++ case FUNCTION_DECL: ++ return; ++ case BIND_EXPR: ++ pascal_dump_tree (BIND_EXPR_BODY (t), indent+2); ++ return; ++ } ++ if (IS_EXPR_OR_REF_CODE_CLASS (TREE_CODE_CLASS (code))) ++ { ++ int i, l = NUMBER_OF_OPERANDS (code); ++ for (i = FIRST_OPERAND (code); i < l; i++) ++ pascal_dump_tree (TREE_OPERAND (t, i), indent+2); ++ } ++} ++ ++void ++plant_function_end (void) ++{ ++ // gcc_assert (0); ++ location_t loc_aux; ++ tree the_fun = current_function_decl; ++ loc_aux.file = input_filename; ++ loc_aux.line = lineno; ++ ++// fprintf (stderr, "plant_function_end\n"); ++// fflush (0); ++#if 1 ++ gcc_assert (plant_stack && plant_stack->code == FUNCTION_DECL ++ && current_statement_list && the_fun ++ && TREE_CODE (current_statement_list) == BIND_EXPR); ++#endif ++// pascal_dump_tree (current_statement_list, 0); ++ DECL_SAVED_TREE (current_function_decl) = current_statement_list; ++/* DECL_SOURCE_LOCATION (current_function_decl) = loc_aux; */ ++ cfun->function_end_locus = loc_aux; ++#if 0 ++ gimplify_function_tree (the_fun); ++ current_function_decl = NULL_TREE; ++ cfun = NULL; ++ (void)cgraph_node (the_fun); ++ cgraph_finalize_function (the_fun, false); ++#else ++ current_function_decl = DECL_CONTEXT (the_fun); ++ cfun = NULL; ++ ++ 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; ++// allow_packed_addresses = 1; ++ pascal_gimplify_function (the_fun); ++// allow_packed_addresses = 0; ++ cgraph_finalize_function (the_fun, false); ++ current_function_decl = NULL_TREE; ++ } ++ else ++ /* Register this function with cgraph just far enough to get it ++ added to our parent's nested function list. */ ++ (void) cgraph_node (the_fun); ++#endif ++ current_statement_list = plant_stack->statement_list; ++ plant_stack = plant_stack->next; ++} ++ ++void ++plant_return (tree result) ++{ ++ tree type = result? TREE_TYPE (result) : void_type_node; ++// fprintf (stderr, "plant_return_statement\n"); ++// fflush (0); ++ plant_expr_stmt (build1 (RETURN_EXPR, type, result)); ++} ++ ++void ++plant_null_return (void) ++{ ++ plant_return (NULL_TREE); ++} ++ ++void ++plant_start_cond (tree condition, int i) ++{ ++ // gcc_assert (0); ++ struct plant_nesting * nest = ggc_alloc (sizeof (*nest)); ++ nest->code = COND_EXPR; ++ nest->arg0 = condition; ++ nest->arg1 = nest->arg2 = NULL_TREE; ++ nest->next = plant_stack; ++ nest->statement_list = current_statement_list; ++ nest->locus = plant_locus; ++ current_statement_list = NULL_TREE; ++ plant_stack = nest; ++// fprintf (stderr, "plant_start_cond\n"); ++// fflush (0); ++} ++ ++void ++plant_end_cond (void) ++{ ++ // gcc_assert (0); ++ tree st1, st2; ++// fprintf (stderr, "plant_end_cond\n"); ++// fflush (0); ++ gcc_assert (plant_stack && plant_stack->code == COND_EXPR); ++ if (!current_statement_list) ++ current_statement_list = build_empty_stmt (); ++ if (plant_stack->arg1) ++ { ++ st1 = plant_stack->arg1; ++ st2 = current_statement_list; ++ } ++ else ++ { ++ st1 = current_statement_list; ++ st2 = build_empty_stmt (); ++ } ++ st1 = build3 (COND_EXPR, void_type_node, plant_stack->arg0, st1, st2); ++ SET_EXPR_LOCATION (st1, plant_stack->locus); ++ current_statement_list = plant_stack->statement_list; ++ plant_stack = plant_stack->next; ++ plant_expr_stmt (st1); ++} ++ ++void ++plant_start_else (void) ++{ ++ // gcc_assert (0); ++// fprintf (stderr, "plant_start_else\n"); ++// fflush (0); ++ gcc_assert (plant_stack && plant_stack->code == COND_EXPR); ++ gcc_assert (!plant_stack->arg1); ++ if (current_statement_list) ++ { ++ plant_stack->arg1 = current_statement_list; ++ current_statement_list = NULL_TREE; ++ } ++ else ++ plant_stack->arg1 = build_empty_stmt (); ++} ++ ++void ++plant_label (tree label) ++{ ++ tree st = build1 (LABEL_EXPR, void_type_node, label); ++ gcc_assert (DECL_CONTEXT (label) ++ && DECL_CONTEXT (label) == current_function_decl); ++// gcc_assert (0); ++ plant_expr_stmt (st); ++} ++ ++void ++plant_goto (tree label) ++{ ++ tree st = build1 (GOTO_EXPR, void_type_node, label); ++// gcc_assert (0); ++ plant_expr_stmt (st); ++} ++ ++/* pushcase */ ++void ++plant_exit_something (void) ++{ ++// gcc_assert (0); ++ tree jump_stmt; ++// fprintf (stderr, "plant_exit_something\n"); ++// fflush (0); ++ /* david3.pas, gale2a.pas */ ++ if (!plant_stack || plant_stack->code != SWITCH_EXPR) ++ return; ++ gcc_assert (plant_stack && (plant_stack->code == SWITCH_EXPR ++ /* || plant_stack->code == LOOP_EXPR */)); ++ if (!plant_stack->arg2) ++ { ++ tree id = get_unique_identifier ("exit_something"); ++ tree label = build_decl (LABEL_DECL, id, void_type_node); ++ plant_stack->arg2 = build1 (LABEL_EXPR, void_type_node, label); ++ } ++ gcc_assert (TREE_CODE (plant_stack->arg2) == LABEL_EXPR); ++ jump_stmt = build_and_jump (&LABEL_EXPR_LABEL (plant_stack->arg2)); ++ plant_expr_stmt (jump_stmt); ++} ++ ++ ++void ++plant_start_case (int exit_flag, tree expr, tree type, ++ const char *printname) ++{ ++// gcc_assert (0); ++ struct plant_nesting * nest = ggc_alloc (sizeof (*nest)); ++ nest->code = SWITCH_EXPR; ++ nest->arg0 = expr; ++ nest->arg1 = type; ++ nest->arg2 = NULL_TREE; ++ nest->next = plant_stack; ++ nest->statement_list = current_statement_list; ++ nest->locus = plant_locus; ++ current_statement_list = NULL_TREE; ++ plant_stack = nest; ++// fprintf (stderr, "plant_start_case\n"); ++// fflush (0); ++} ++ ++ ++void ++plant_end_case (tree expr) ++{ ++// gcc_assert (0); ++ tree st; ++ tree body = current_statement_list; ++ gcc_assert (plant_stack); ++ if (plant_stack->code != SWITCH_EXPR) ++ { ++ error ("unexpected end of case"); ++ return; ++ } ++ if (plant_stack->arg2) ++ { ++ tree label = LABEL_EXPR_LABEL (plant_stack->arg2); ++// body = build (COMPOUND_EXPR, void_type_node, plant_stack->arg2, body); ++ body = build (COMPOUND_EXPR, void_type_node, body, plant_stack->arg2); ++ pushdecl_nocheck (label); ++ PASCAL_LABEL_SET (label) = 1; ++ TREE_USED (label) = 1; ++ DECL_CONTEXT (label) = current_function_decl; ++// st = build1 (DECL_EXPR, void_type_node, ++// LABEL_EXPR_LABEL (plant_stack->arg2)); ++// body = build (COMPOUND_EXPR, void_type_node, st, body); ++ } ++ st = build3 (SWITCH_EXPR, void_type_node, plant_stack->arg0, ++ body, NULL_TREE); ++ SET_EXPR_LOCATION (st, plant_stack->locus); ++ current_statement_list = plant_stack->statement_list; ++ plant_stack = plant_stack->next; ++ plant_expr_stmt (st); ++// fprintf(stderr, "plant_end_case\n"); ++} ++ ++static void ++plant_case_label (tree low, tree high, tree label) ++{ ++ tree st = build3 (CASE_LABEL_EXPR, ++ void_type_node, ++ low, ++ high, ++ label); ++ if (!DECL_CONTEXT (label)) ++ DECL_CONTEXT (label) = current_function_decl; ++ plant_expr_stmt (st); ++// fprintf(stderr, "plant_case_label\n"); ++} ++ ++int ++pushcase (tree value, tree (*converter) (tree, tree), tree label, ++ tree *duplicate) ++{ ++// gcc_assert (0); ++ tree index_type; ++ tree nominal_type; ++ gcc_assert (plant_stack); ++ if (plant_stack->code != SWITCH_EXPR) ++ { ++ error("unexpected case label"); ++ return 0; ++ } ++ index_type = TREE_TYPE (plant_stack->arg0); ++ nominal_type = plant_stack->arg1; ++ if (index_type == error_mark_node) ++ return 0; ++ ++ /* Convert VALUE to the type in which the comparisons are nominally done. */ ++ if (value != 0) ++ value = (*converter) (nominal_type, value); ++ ++ plant_case_label (value, NULL_TREE, label); ++// plant_case_label (value, value, label); ++ return 0; ++} ++ ++int ++pushcase_range (tree value1, tree value2, tree (*converter) (tree, tree), ++ tree label, tree *duplicate) ++{ ++// gcc_assert (0); ++ tree index_type; ++ tree nominal_type; ++ gcc_assert (plant_stack); ++ if (plant_stack->code != SWITCH_EXPR) ++ { ++ error("unexpected case label"); ++ return 0; ++ } ++ index_type = TREE_TYPE (plant_stack->arg0); ++ nominal_type = plant_stack->arg1; ++ if (index_type == error_mark_node) ++ return 0; ++ ++ /* Convert VALUEs to type in which the comparisons are nominally done ++ and replace any unspecified value with the corresponding bound. */ ++ ++ if (value1 == 0) ++ value1 = TYPE_MIN_VALUE (index_type); ++ if (value2 == 0) ++ value2 = TYPE_MAX_VALUE (index_type); ++ ++ /* Fail if the range is empty. Do this before any conversion since ++ we want to allow out-of-range empty ranges. */ ++ if (value2 != 0 && tree_int_cst_lt (value2, value1)) ++ return 4; ++ ++ /* If the max was unbounded, use the max of the nominal_type we are ++ converting to. Do this after the < check above to suppress false ++ positives. */ ++ if (value2 == 0) ++ value2 = TYPE_MAX_VALUE (nominal_type); ++ ++ value1 = (*converter) (nominal_type, value1); ++ value2 = (*converter) (nominal_type, value2); ++ ++ plant_case_label (value1, value2, label); ++ ++ return 0; ++} ++ ++ ++ ++struct plant_nesting * ++plant_start_loop (int i) ++{ ++ // gcc_assert (0); ++ struct plant_nesting * nest = ggc_alloc (sizeof (*nest)); ++// fprintf (stderr, "plant_start_loop_continue_elsewhere(%d)\n", i); ++// fflush (0); ++ ++ nest->code = LOOP_EXPR; ++ nest->flags = 0; ++ nest->arg0 = nest->arg1 = nest->arg2 = NULL_TREE; ++ nest->next = plant_stack; ++ nest->statement_list = current_statement_list; ++ nest->locus = plant_locus; ++ current_statement_list = NULL_TREE; ++ plant_stack = nest; ++ return nest; ++} ++ ++void ++plant_loop_continue_here (void) ++{ ++ // gcc_assert (0); ++// fprintf (stderr, "plant_loop_continue_here\n"); ++// fflush (0); ++ plant_nesting * ll = plant_stack; ++ while (ll && ll->code == BIND_EXPR) ++ ll = ll->next; ++ gcc_assert (ll && ll->code == LOOP_EXPR); ++ gcc_assert (!(LOOP_HAS_CONTINUE & ll->flags)); ++ if (!ll->arg0) ++ ll->arg0 = build1 (LABEL_EXPR, void_type_node, NULL_TREE); ++ gcc_assert (TREE_CODE (ll->arg0) == LABEL_EXPR); ++ plant_expr_stmt (ll->arg0); ++ ll->flags |= LOOP_HAS_CONTINUE; ++} ++ ++int ++plant_continue_loop (struct plant_nesting * loop) ++{ ++ // gcc_assert (0); ++ tree jump_stmt; ++// fprintf (stderr, "plant_continue_loop\n"); ++// fflush (0); ++ if (!loop) ++ { ++ loop = plant_stack; ++ while (loop && loop->code != LOOP_EXPR) ++ loop = loop->next; ++ } ++ gcc_assert (loop && loop->code == LOOP_EXPR); ++ if (!loop->arg0) ++ loop->arg0 = build1 (LABEL_EXPR, void_type_node, NULL_TREE); ++ gcc_assert (TREE_CODE (loop->arg0) == LABEL_EXPR); ++ jump_stmt = build_and_jump (&LABEL_EXPR_LABEL (loop->arg0)); ++ plant_expr_stmt (jump_stmt); ++ return 1; ++} ++ ++int ++plant_exit_loop (struct plant_nesting * loop) ++{ ++ // gcc_assert (0); ++ tree exit_st; ++ gcc_assert (!loop); ++// fprintf (stderr, "plant_exit_loop\n"); ++// fflush (0); ++ if (!loop) ++ { ++ loop = plant_stack; ++ while (loop && loop->code != LOOP_EXPR) ++ loop = loop->next; ++ } ++ gcc_assert (loop && loop->code == LOOP_EXPR); ++ exit_st = build1 (EXIT_EXPR, void_type_node, boolean_true_node); ++ plant_expr_stmt (exit_st); ++ return 1; ++} ++ ++int ++plant_exit_loop_if_false (struct plant_nesting * loop, tree condition) ++{ ++ // gcc_assert (0); ++ tree exit_st; ++ gcc_assert (!loop); ++// fprintf (stderr, "plant_exit_loop_if_false\n"); ++// fflush (0); ++ condition = build1 (TRUTH_NOT_EXPR, TREE_TYPE (condition), condition); ++ exit_st = build1 (EXIT_EXPR, void_type_node, condition); ++ plant_expr_stmt (exit_st); ++ return 1; ++} ++ ++void ++plant_end_loop (void) ++{ ++ // gcc_assert (0); ++ tree body = current_statement_list; ++// fprintf (stderr, "plant_end_loop\n"); ++// fflush (0); ++ gcc_assert (plant_stack && plant_stack->code == LOOP_EXPR); ++ if (plant_stack->arg0 && LABEL_EXPR_LABEL (plant_stack->arg0) ++ && !(LOOP_HAS_CONTINUE & plant_stack->flags)) ++ body = build (COMPOUND_EXPR, void_type_node, plant_stack->arg0, body); ++ if (plant_stack->arg0 && !LABEL_EXPR_LABEL (plant_stack->arg0)) ++ LABEL_EXPR_LABEL (plant_stack->arg0) = create_artificial_label (); ++ body = build1 (LOOP_EXPR, void_type_node, body); ++ SET_EXPR_LOCATION (body, plant_stack->locus); ++ current_statement_list = plant_stack->statement_list; ++ plant_stack = plant_stack->next; ++ plant_expr_stmt (body); ++} ++ ++ ++void ++plant_start_bindings (int flags) ++{ ++#if 1 ++ // gcc_assert (0); ++ struct plant_nesting * nest = ggc_alloc (sizeof (*nest)); ++ nest->code = BIND_EXPR; ++ nest->arg0 = nest->arg1 = nest->arg2 = NULL_TREE; ++ nest->next = plant_stack; ++ nest->statement_list = current_statement_list; ++ nest->locus = plant_locus; ++ current_statement_list = NULL_TREE; ++ plant_stack = nest; ++ ++// fprintf (stderr, "plant_start_bindings\n"); ++ fflush (0); ++#endif ++} ++ ++void ++plant_end_bindings (tree vars, int mark_ends, int dont_jump_in) ++{ ++#if 1 ++ // gcc_assert (0); ++// fprintf (stderr, "plant_end_bindings\n"); ++// if (!vars) ++// fprintf (stderr, " no vars\n"); ++// else ++// debug_tree (vars); ++ fflush (0); ++#endif ++} ++ ++ ++void ++plant_expr_stmt (tree expr) ++{ ++// fprintf (stderr, "plant_expr_stmt\n"); ++// fflush (0); ++ if (EM (expr)) ++ return; ++ if (!EXPR_HAS_LOCATION (expr) ++ && TREE_CODE (expr) != LABEL_EXPR ++ && TREE_CODE (expr) != COMPOUND_EXPR ++ && plant_locus_initialized) ++ SET_EXPR_LOCATION (expr, plant_locus); ++ if (current_statement_list) ++ current_statement_list = build (COMPOUND_EXPR, ++ TREE_TYPE (expr), ++ current_statement_list, ++ expr); ++ else ++ current_statement_list = expr; ++} ++ ++ ++void ++plant_bind_block (tree block) ++{ ++ tree statement_list; ++#if 0 ++ fprintf (stderr, "plant_bind_block\n"); ++ if (block) ++ debug_tree(block); ++ else ++ fprintf (stderr, " no block\n"); ++ fflush (0); ++#endif ++ if (errorcount && !(plant_stack->code == BIND_EXPR ++ || plant_stack->code == FUNCTION_DECL)) ++ { ++ exit_compilation (); ++ } ++ gcc_assert (plant_stack->code == BIND_EXPR ++ || plant_stack->code == FUNCTION_DECL); ++ statement_list = current_statement_list; ++ if (block) ++ { ++ tree t; ++#if 0 ++ for (t = BLOCK_VARS (block); t ; t = TREE_CHAIN (t)) ++ { ++ tree id = DECL_NAME (t); ++ const char * n = IDENTIFIER_POINTER (id); ++ fprintf(stderr, "block var %s\n", n? n : "???"); ++ } ++#endif ++ ++ if (!statement_list) ++ statement_list = build_empty_stmt (); ++#if 1 ++ statement_list = build3 (BIND_EXPR, ++ void_type_node, ++ BLOCK_VARS (block), ++ statement_list, ++ block); ++#endif ++ } ++ if (plant_stack->code != FUNCTION_DECL) ++ { ++ current_statement_list = plant_stack->statement_list; ++ if (statement_list) ++ plant_expr_stmt (statement_list); ++ plant_stack = plant_stack->next; ++ } ++ else ++ current_statement_list = statement_list; ++} ++#endif ++#ifdef GCC_3_3 ++#include "gt-p-plant.h" ++#endif +diff -urN gcc/p.old/plant.h gcc/p/plant.h +--- gcc/p.old/plant.h 1970-01-01 00:00:00.000000000 +0000 ++++ gcc/p/plant.h 2006-03-03 02:36:35.000000000 +0000 +@@ -0,0 +1,127 @@ ++/* Compatibility macros: redirect expand_* calls to plant.c. ++ ++ Copyright (C) 2006 Free Software Foundation, Inc. ++ ++ Authors: Waldek Hebisch ++ ++ This file is part of GNU Pascal. ++ ++ GNU Pascal is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published ++ by the Free Software Foundation; either version 2, or (at your ++ option) any later version. ++ ++ GNU Pascal is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with GNU Pascal; see the file COPYING. If not, write to the ++ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA ++ 02111-1307, USA. */ ++ ++#define expand_goto(x) plant_goto (x) ++#define expand_label(x) plant_label (x) ++#define expand_decl(x) plant_decl (x) ++#define label_rtx(x) 0 ++#define emit_line_note(x) plant_line_note (x) ++#define emit_nop() plant_nop() ++#define expand_decl_init(x) plant_decl_init(x) ++#define expand_function_start(x, y) plant_function_start (x, y) ++#define expand_function_end() plant_function_end () ++#define expand_return(x) plant_return (x) ++#define expand_null_return() plant_null_return () ++#define expand_start_cond(x, y) plant_start_cond (x, y) ++#define expand_end_cond() plant_end_cond () ++#define expand_start_else() plant_start_else () ++#define expand_exit_something() plant_exit_something () ++#define expand_start_case(x, y, z, w) plant_start_case(x, y, z, w) ++#define expand_end_case(x) plant_end_case (x) ++#define expand_start_loop_continue_elsewhere(x) plant_start_loop (x) ++#define expand_loop_continue_here() plant_loop_continue_here () ++#define expand_continue_loop(x) plant_continue_loop(x) ++#define expand_exit_loop(x) plant_exit_loop(x) ++#define expand_exit_loop_if_false(x, y) plant_exit_loop_if_false (x, y) ++#define expand_end_loop() plant_end_loop () ++#define expand_start_loop(x) plant_start_loop (x) ++#define expand_start_bindings(x) plant_start_bindings (x) ++#define expand_end_bindings(x, y, z) plant_end_bindings (x, y, z) ++#define expand_expr_stmt(x) plant_expr_stmt (x) ++#define expand_asm plant_asm ++#define expand_asm_operands(x, y, z, u, v, w) plant_asm_operands(x, y, z, u, v, w) ++ ++/* #define pushcase(x, y, z, w) plant_case(x, y, z, w) */ ++ ++ ++extern void clear_last_expr (void); ++ ++extern int ++pushcase (tree value, tree (*converter) (tree, tree), tree label, ++ tree *duplicate); ++ ++extern int ++pushcase_range (tree value1, tree value2, tree (*converter) (tree, tree), ++ tree label, tree *duplicate); ++ ++extern void plant_line_note (location_t loc); ++ ++extern void plant_decl (tree decl); ++ ++extern void plant_decl_init (tree decl); ++ ++extern void plant_nop (void); ++ ++extern void plant_goto (tree label); ++ ++extern void plant_label (tree label); ++ ++/* extern void plant_decl (tree decl); */ ++ ++extern void plant_asm (tree string, int vol); ++ ++extern void plant_asm_operands (tree string, tree outputs, ++ tree inputs, tree clobbers, int vol, location_t loc_aux); ++ ++extern void plant_function_start (tree decl, int i); ++ ++extern void plant_function_end (void); ++ ++extern void plant_return (tree result); ++ ++extern void plant_null_return (void); ++ ++extern void plant_start_cond (tree condition, int i); ++ ++extern void plant_end_cond (void); ++ ++extern void plant_start_else (void); ++ ++extern void plant_exit_something (void); ++ ++extern void plant_start_case (int exit_flag, tree expr, tree type, ++ const char *printname); ++ ++extern void plant_end_case (tree expr); ++ ++extern struct plant_nesting * plant_start_loop_continue_elsewhere (int i); ++ ++extern struct plant_nesting * plant_start_loop (int i); ++ ++extern void plant_loop_continue_here (void); ++ ++extern int plant_continue_loop (struct plant_nesting * loop); ++ ++extern int plant_exit_loop (struct plant_nesting * loop); ++ ++extern int plant_exit_loop_if_false (struct plant_nesting * loop, tree condition); ++ ++extern void plant_end_loop (void); ++ ++extern void plant_start_bindings (int flags); ++ ++extern void plant_end_bindings (tree vars, int mark_ends, int dont_jump_in); ++ ++extern void plant_expr_stmt (tree expr); ++ ++extern void plant_bind_block (tree block); +diff -urN gcc/p.old/predef.c gcc/p/predef.c +--- gcc/p.old/predef.c 2006-06-10 17:45:38.403386000 +0000 ++++ gcc/p/predef.c 2006-06-10 17:46:10.413386000 +0000 +@@ -35,14 +35,16 @@ + /* Implementation-defined length of the `Name' field of `BindingType'. */ + #define BINDING_NAME_LENGTH 2048 + +-#ifndef EGCS +-static tree ++// #ifndef EGCS ++tree + xnon_lvalue (tree x) + { +- return TREE_CODE (x) == INTEGER_CST ? x : non_lvalue (x); ++ return TREE_CODE (x) == INTEGER_CST ? x : ++ build1 (NON_LVALUE_EXPR, TREE_TYPE (x), x); + } +-#define non_lvalue xnon_lvalue +-#endif ++// #undef non_lvalue ++// #define non_lvalue xnon_lvalue ++// #endif + + #undef EOF + #undef asm +@@ -279,6 +281,19 @@ + paramstr_variable_node = declare_variable (get_identifier ("_p_CParameters"), + build_pointer_type (cstring_type_node), NULL_TREE, VQ_EXTERNAL | VQ_IMPLICIT); + ++ /* routine to set bits to 1. Used in set constructors */ ++ temp = build_implicit_routine_decl (get_identifier ("__setbits"), ++ void_type_node, tree_cons (NULL_TREE, ptr_type_node, ++ tree_cons (NULL_TREE, long_integer_type_node, ++ tree_cons (NULL_TREE, long_integer_type_node, ++ tree_cons (NULL_TREE, long_integer_type_node, void_list_node)))), ++ ER_EXTERNAL); ++ DECL_ARTIFICIAL (temp) = 1; ++ setbits_routine_node = temp; ++/* ++build1 (ADDR_EXPR, build_pointer_type ( ++ p_build_type_variant (TREE_TYPE (temp), TREE_READONLY (temp), TREE_THIS_VOLATILE (temp))), temp); ++*/ + /* This procedure may return if InOutRes = 0. But it is called automatically + only if InOutRes <> 0 (more efficient, to save function calls in the + normal case). Declaring it noreturn here is thus correct in this +@@ -320,7 +335,7 @@ + tree v = *predef_table[i].value; + decl = build_decl (CONST_DECL, id, TREE_TYPE (v)); + DECL_INITIAL (decl) = v; +- if (TREE_CODE_CLASS (TREE_CODE (v)) == 'c') ++ if (TREE_CODE_CLASS (TREE_CODE (v)) == tcc_constant) + PASCAL_CST_FRESH (v) = 1; + } + if (kind == bk_type) +@@ -331,7 +346,9 @@ + TYPE_NAME (type) = decl = build_decl (TYPE_DECL, id, type); + DECL_ORIGINAL_TYPE (decl) = NULL_TREE /* orig @@ dwarf-2 and gcc-3.3 */; + /* necessary to get debug info (e.g. fjf910.pas, tested with gcc-2.8.1, stabs) */ ++#ifndef GCC_4_0 + rest_of_decl_compilation (decl, NULL, 1, 1); ++#endif + } + if (kind == bk_var) + decl = *predef_table[i].value; +@@ -492,7 +509,11 @@ + if (is_string_compatible_type (*str, 1)) + { + tree t = save_expr_string (*str); +- *str = build1 (ADDR_EXPR, cstring_type_node, PASCAL_STRING_VALUE (t)); ++ tree ptype = cstring_type_node; ++ if (TREE_CODE (TREE_TYPE (t)) == CHAR_TYPE) ++ ptype = build_pointer_type (TREE_TYPE (t)); ++ *str = build1 (ADDR_EXPR, ptype, PASCAL_STRING_VALUE (t)); ++ *str = convert (cstring_type_node, *str); + return PASCAL_STRING_LENGTH (t); + } + else if ((co->cstrings_as_strings || (co->pascal_dialect & B_D_M_PASCAL)) +@@ -621,12 +642,14 @@ + p = save_expr_string (p); + expand_expr_stmt (build_modify_expr (PASCAL_STRING_LENGTH (p), NOP_EXPR, + build_predef_call (p_Read_String, tree_cons (NULL_TREE, file, +- tree_cons (NULL_TREE, build1 (ADDR_EXPR, ptr_type_node, PASCAL_STRING_VALUE (p)), ++ tree_cons (NULL_TREE, convert (ptr_type_node, ++ build_unary_op (ADDR_EXPR, PASCAL_STRING_VALUE (p), 1)), + build_tree_list (NULL_TREE, PASCAL_STRING_CAPACITY (p))))))); + } + else + expand_expr_stmt (build_predef_call (p_Read_FixedString, +- tree_cons (NULL_TREE, file, tree_cons (NULL_TREE, build1 (ADDR_EXPR, ptr_type_node, p), ++ tree_cons (NULL_TREE, file, tree_cons (NULL_TREE, ++ convert (ptr_type_node, build_unary_op (ADDR_EXPR, p, 1)), + build_tree_list (NULL_TREE, pascal_array_type_nelts (type)))))); + continue; + } +@@ -1216,18 +1239,44 @@ + if (r_num == p_Exit && apar) + { + tree id = TREE_VALUE (apar); ++ tree obn = TREE_PURPOSE (apar); + apar = NULL_TREE; +- chk_dialect ("`Exit' with an argument is", U_M_PASCAL); ++ if (obn) ++ chk_dialect ("`Exit' with a qualified identifier as an argument is", ++ GNU_PASCAL); ++ else ++ chk_dialect ("`Exit' with an argument is", U_M_PASCAL); + if (id == void_type_node || (current_module->main_program && id == current_module->name)) + r_num = p_Halt; +- else if (!(current_function_decl && id == DECL_NAME (current_function_decl))) ++ else if (!(current_function_decl && !obn ++ && id == DECL_NAME (current_function_decl))) + { +- struct function *p; ++ struct function *p = outer_function_chain; ++ while (p) ++ { ++ if (!obn && DECL_NAME (p->decl) == id) ++ break; ++ if (PASCAL_METHOD (p->decl)) ++ { ++ tree ot = DECL_CONTEXT (p->decl); ++ tree on, mn; ++ gcc_assert (ot && PASCAL_TYPE_OBJECT (ot)); ++ if (TYPE_POINTER_TO (ot) && ++ PASCAL_TYPE_CLASS (TYPE_POINTER_TO (ot))) ++ ot = TYPE_POINTER_TO (ot); ++ on = DECL_NAME (TYPE_NAME (TYPE_MAIN_VARIANT (ot))); ++ if (obn && on != obn) ++ continue; ++ mn = get_method_name (on, id); ++ if (mn == DECL_NAME (p->decl)) ++ break; ++ } + #ifdef EGCS97 +- for (p = outer_function_chain; p && DECL_NAME (p->decl) != id; p = p->outer) ; ++ p = p->outer; + #else +- for (p = outer_function_chain; p && DECL_NAME (p->decl) != id; p = p->next) ; ++ p = p->next; + #endif ++ } + if (!p) + error ("invalid argument `%s' to `Exit'", IDENTIFIER_NAME (id)); + else if (DECL_LANG_SPECIFIC (p->decl) && DECL_LANG_NONLOCAL_EXIT_LABEL (p->decl)) +@@ -1938,7 +1987,28 @@ + schema_type = TYPE_LANG_BASE (schema_type); + gcc_assert (TREE_CODE (schema_type) != TYPE_DECL); + for (tmp = tags; tmp; tmp = TREE_CHAIN (tmp)) +- TREE_VALUE (tmp) = save_expr (TREE_VALUE (tmp)); ++ { ++ tree v1 = TREE_VALUE (tmp); ++ if (TREE_CODE (v1) == NON_LVALUE_EXPR) ++ v1 = TREE_OPERAND (v1, 0); ++ ++/* @@@@@@@@@@@@@@@@ ?????? ++ if (TREE_SIDE_EFFECTS (v1)) ++ var ++ else ++ save_expr ++*/ ++ if (TREE_CODE (v1) != INTEGER_CST ++ && TREE_CODE (v1) != STRING_CST) ++ { ++ tree v2 = make_new_variable ("new_disc", TREE_TYPE (v1)); ++ expand_expr_stmt (build_modify_expr (v2, NOP_EXPR, v1)); ++ TREE_VALUE (tmp) = v2; ++// TREE_VALUE (tmp) = save_expr (TREE_VALUE (tmp)); ++ } ++ else ++ TREE_VALUE (tmp) = v1; ++ } + type = build_discriminated_schema_type (schema_type, tags, 1); + CHK_EM (type); + type = build_pointer_type (type); +@@ -1963,6 +2033,11 @@ + chk_dialect_1 ("function-style `%s' call is", B_D_M_PASCAL, r_name); + result = make_new_variable ("new", type); + expand_expr_stmt (build_modify_expr (result, NOP_EXPR, retval)); ++#if 0 ++ result = build (COMPOUND_EXPR, type, ++ build_modify_expr (result, NOP_EXPR, retval), ++ result); ++#endif + retval = result; + /* @@ This would be easier (fjf226k.pas), but then init_any below must + return an expression and we have to use COMPOUND_EXPR's here +@@ -2422,7 +2497,8 @@ + /* If 3rd parameter is missing, pass MaxInt and let the RTS truncate */ + if (argcount == 2) + apar = chainon (apar, build_tree_list (NULL_TREE, pascal_maxint_node)); +- apar = tree_cons (NULL_TREE, build1 (ADDR_EXPR, ptr_type_node, PASCAL_STRING_VALUE (val)), ++ apar = tree_cons (NULL_TREE, convert (ptr_type_node, ++ build_unary_op (ADDR_EXPR, PASCAL_STRING_VALUE (val), 1)), + tree_cons (NULL_TREE, PASCAL_STRING_LENGTH (val), TREE_CHAIN (apar))); + apar = chainon (apar, tree_cons (NULL_TREE, actual_result, build_tree_list (NULL_TREE, + r_num == p_Copy ? integer_zero_node : argcount == 2 ? integer_one_node : build_int_2 (2, 0)))); +@@ -2624,8 +2700,15 @@ + else if (!integer_onep (val)) + errstr = "first argument to `%s' is False"; + if (argcount == 2) +- retval = val2; +- else ++ { ++ if (TREE_CODE (val2) == FUNCTION_DECL ++ || (TREE_CODE (TREE_TYPE (val2)) == REFERENCE_TYPE && ++ TREE_CODE (TREE_TYPE (TREE_TYPE (val2))) == FUNCTION_TYPE)) ++ errstr = "`%s' can not return a routine"; ++ else ++ retval = val2; ++ } ++ else + { + retval = copy_node (boolean_true_node); + PASCAL_CST_FRESH (retval) = 0; +@@ -2734,14 +2817,22 @@ + } + else if (r_num == p_SizeOf) + { ++#if 0 + #ifdef PG__NEW_STRINGS + /* @@@@@@ what if val is a TYPE_DECL ??? */ + if (PASCAL_TYPE_PREDISCRIMINATED_STRING (type)) ++#if 1 ++ // gcc_assert (0); ++ 0; ++// retval = SUBSTITUTE_PLACEHOLDER_IN_EXPR (retval, val); ++#else + retval = fold (non_lvalue ( + build (WITH_RECORD_EXPR, size_type_node, + convert (size_type_node, retval), val))); ++#endif + else + #endif ++#endif + #ifdef EGCS97 + retval = non_lvalue (build_pascal_binary_op (CEIL_DIV_EXPR, convert (size_type_node, TYPE_SIZE_UNIT (type)), + build_int_2 (TYPE_PRECISION (byte_integer_type_node) / BITS_PER_UNIT, 0))); +@@ -2749,6 +2840,13 @@ + retval = non_lvalue (build_pascal_binary_op (CEIL_DIV_EXPR, convert (size_type_node, TYPE_SIZE (type)), + build_int_2 (TYPE_PRECISION (byte_integer_type_node), 0))); + #endif ++ if (PASCAL_TYPE_PREDISCRIMINATED_STRING (type)) ++#ifdef GCC_4_0 ++ retval = SUBSTITUTE_PLACEHOLDER_IN_EXPR (retval, val); ++#else ++ retval = fold (non_lvalue (build (WITH_RECORD_EXPR, size_type_node, ++ convert (size_type_node, retval), val))); ++#endif + } + else if (r_num == p_BitSizeOf) + retval = non_lvalue (convert (long_long_integer_type_node, TYPE_SIZE (type))); +diff -urN gcc/p.old/rts/rts-version gcc/p/rts/rts-version +--- gcc/p.old/rts/rts-version 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/rts/rts-version 2006-06-10 17:46:10.433386000 +0000 +@@ -1 +1 @@ +-20060215 ++20060325 +diff -urN gcc/p.old/statements.c gcc/p/statements.c +--- gcc/p.old/statements.c 2006-06-10 17:45:38.413386000 +0000 ++++ gcc/p/statements.c 2006-06-10 17:46:10.423386000 +0000 +@@ -743,8 +743,13 @@ + tree comp_ref; + if (PASCAL_FIELD_SHADOWED (field)) + /* No need to recurse. Avoid `find_field' */ ++#ifndef GCC_4_0 + comp_ref = fold (build (COMPONENT_REF, TREE_TYPE (field), + base, field)); ++#else ++ comp_ref = fold (build3 (COMPONENT_REF, TREE_TYPE (field), ++ base, field, NULL_TREE)); ++#endif + else + comp_ref = build_component_ref_no_schema_dereference (base, + DECL_NAME (field), 1); +@@ -994,9 +999,9 @@ + { + tree field = TREE_VALUE (variant), init = TYPE_GET_INITIALIZER (TREE_TYPE (field)); + tree c = TREE_PURPOSE (variant); +- tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + if (!c) /* otherwise */ + { ++ tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + int r = pushcase (NULL_TREE, NULL, label, &duplicate); + gcc_assert (!r); + have_otherwise = 1; +@@ -1004,6 +1009,7 @@ + else + for (; c; c= TREE_CHAIN (c)) + { ++ tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); + int r = TREE_PURPOSE (c) + ? pushcase_range (TREE_VALUE (c), TREE_PURPOSE (c), convert_and_check, label, &duplicate) + : pushcase (TREE_VALUE (c), convert_and_check, label, &duplicate); +@@ -1062,7 +1068,12 @@ + if (TREE_CODE (t) == VAR_DECL && !DECL_EXTERNAL (t)) + { + if (global || !TREE_STATIC (t)) +- init_any (t, the_end, 1); ++ { ++ gcc_assert (the_end || !DECL_ARTIFICIAL (t) ++ || !PASCAL_TYPE_FILE (TREE_TYPE (t))); ++ if (!DECL_ARTIFICIAL (t) || !PASCAL_TYPE_FILE (TREE_TYPE (t))) ++ init_any (t, the_end, 1); ++ } + else if (!the_end) + #ifndef EGCS97 + { +@@ -1112,13 +1123,19 @@ + { + if (PASCAL_TREE_IGNORABLE (t)) + { +- if (TREE_CODE_CLASS (TREE_CODE (t)) == 'c') +- t = convert (void_type_node, t); ++ if (TREE_CODE_CLASS (TREE_CODE (t)) == tcc_constant) ++ return; + } + else if (!function_called) +- error ("expression used as a statement"); ++ { ++ error ("expression used as a statement"); ++ return; ++ } + else if (TREE_CODE (t) == FUNCTION_DECL) +- error ("missing arguments in routine call"); ++ { ++ error ("missing arguments in routine call"); ++ return; ++ } + else if (TREE_TYPE (t) != void_type_node + && !(TREE_CODE (t) == CALL_EXPR + && TREE_CODE (TREE_OPERAND (t, 0)) == ADDR_EXPR +@@ -1196,6 +1213,8 @@ + schema_target = undo_schema_dereference (target); + DEREFERENCE_SCHEMA (source); + DEREFERENCE_SCHEMA (target); ++ CHK_EM (source); ++ CHK_EM (target); + + /* Restricted types. @@@@ Maybe this needs further checking */ + if (TREE_CODE (source) == CALL_EXPR && PASCAL_TYPE_RESTRICTED (TREE_TYPE (source))) +@@ -1233,7 +1252,8 @@ + { + if (!lvalue_or_else (schema_target, "assignment") || !mark_lvalue (schema_target, "assignment", 1)) + return; +- stmt = build (MODIFY_EXPR, TREE_TYPE (schema_target), schema_target, schema_source); ++ stmt = build (MODIFY_EXPR, TREE_TYPE (schema_target), ++ schema_target, schema_source); + TREE_SIDE_EFFECTS (stmt) = 1; + if (TREE_CODE (schema_check) != INTEGER_CST) + stmt = build (COMPOUND_EXPR, TREE_TYPE (stmt), schema_check, stmt); +@@ -1343,6 +1363,7 @@ + length = integer_zero_node; + else + { ++#if 0 + /* Use save_expr, so the length is not computed twice (for the + number of chars to move and the assignment to the target length). */ + length = save_expr (fold (build_pascal_binary_op (MIN_EXPR, PASCAL_STRING_LENGTH (source), capacity))); +@@ -1350,6 +1371,21 @@ + be e.g. an array returned by a function or whatever. */ + expr1 = build_memcpy (build_unary_op (ADDR_EXPR, PASCAL_STRING_VALUE (target), 1), + build1 (ADDR_EXPR, cstring_type_node, PASCAL_STRING_VALUE (source)), length); ++#else ++ /* save_expr would cause problems */ ++ tree olen = PASCAL_STRING_LENGTH (source); ++ tree las; ++ length = make_new_variable ("str_len", TREE_TYPE (olen)); ++ las = build_pascal_binary_op (MIN_EXPR, olen, capacity); ++ las = build_modify_expr (length, NOP_EXPR, fold (las)); ++ expr1 = build_memcpy ( ++ build_unary_op (ADDR_EXPR, ++ PASCAL_STRING_VALUE (target), 1), ++ build1 (ADDR_EXPR, cstring_type_node, ++ PASCAL_STRING_VALUE (source)), ++ length); ++ expr1 = build (COMPOUND_EXPR, TREE_TYPE (expr1), las, expr1); ++#endif + } + } + break; +@@ -1505,6 +1541,8 @@ + tree decl_argv = add_parm_decl (decl_argc, cstring_ptr_type_node, get_identifier ("argv")); + tree decl_envp = add_parm_decl (decl_argv, cstring_ptr_type_node, get_identifier ("envp")); + start_implicit_routine (NULL_TREE, get_identifier (name), integer_type_node, decl_envp); ++ ++ TREE_USED (decl_argc) = TREE_USED (decl_argv) = TREE_USED (decl_envp) = 1; + + /* If it is called `main', let the backend do any necessary magic. */ + if (!strcmp (name, "main")) +@@ -1650,10 +1688,15 @@ + un_initialize_block (decls, 0, 1); + + if (!implicit || DECL_INITIAL (current_module->finalizer)) ++ { + expand_expr_stmt (build_routine_call ( + build_implicit_routine_decl (get_identifier ("_p_AtExit"), void_type_node, + tree_cons (NULL_TREE, ptr_type_node, void_list_node), ER_EXTERNAL), +- build_tree_list (NULL_TREE, build1 (ADDR_EXPR, ptr_type_node, current_module->finalizer)))); ++ build_tree_list (NULL_TREE, convert(ptr_type_node, ++ build_unary_op (ADDR_EXPR, current_module->finalizer, 0))) ++ )); ++// TREE_USED (current_module->finalizer) = 1; ++ } + if (current_module->main_program) + call_no_args (get_identifier ("_p_DoInitProc"), 1); + } +@@ -1684,7 +1727,7 @@ + implicit_module_structors (void) + { + const char *save_filename = start_dummy_file_name (); +- if (TREE_USED (current_module->finalizer) && !DECL_INITIAL (current_module->finalizer)) ++ if (/* 1 TREE_USED (current_module->finalizer) && */ !DECL_INITIAL (current_module->finalizer) ) + { + start_destructor (); + finish_destructor (); +diff -urN gcc/p.old/test/fjf597.pas gcc/p/test/fjf597.pas +--- gcc/p.old/test/fjf597.pas 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/test/fjf597.pas 2006-06-10 17:46:10.433386000 +0000 +@@ -3,7 +3,7 @@ + This test didn't reproduce the crash per se, but (before the fix) + it could be used to show with debug_tree() some obstack problems + (in finish_function() at the end of function f). } +- ++{$W-} + program fjf597; + + type +diff -urN gcc/p.old/test/fjf904j.pas gcc/p/test/fjf904j.pas +--- gcc/p.old/test/fjf904j.pas 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/test/fjf904j.pas 2006-06-10 17:46:10.433386000 +0000 +@@ -1,4 +1,4 @@ + program fjf904j; + begin +- CompilerAssert (True, 42) { WARN } ++ CompilerAssert (True, 42) { WRONG } + end. +diff -urN gcc/p.old/test/test_run gcc/p/test/test_run +--- gcc/p.old/test/test_run 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/test/test_run 2006-06-10 17:46:10.433386000 +0000 +@@ -93,14 +93,8 @@ + echo "program Dummy (Output); begin WriteLn ('1723') end." > dummy.pas + + if [ x"$GP" = x ]; then +- NEEDED_OPTIONS="`$PC $PFLAGS --print-needed-options dummy.pas 3>&2 2>&1 1>&3`" +- if $echon "$NEEDED_OPTIONS" | grep '^[^-]' > /dev/null; then +- echo "$0: fatal: \`--print-needed-options' yields:" >&2 +- echo "$NEEDED_OPTIONS" >&2 +- exit 1 +- fi + DEFAULT_UNIT_DIR="`$PC $PFLAGS --print-file-name=units`" +- INVOKE_PC1="$PC $NEEDED_OPTIONS --unit-path=$DEFAULT_UNIT_DIR -I $DEFAULT_UNIT_DIR" ++ INVOKE_PC1="$PC --unit-path=$DEFAULT_UNIT_DIR -I $DEFAULT_UNIT_DIR" + INVOKE_PC="$INVOKE_PC1" + PC_WITHOUT_GP="" + else +diff -urN gcc/p.old/typecheck.c gcc/p/typecheck.c +--- gcc/p.old/typecheck.c 2006-06-10 17:45:38.413386000 +0000 ++++ gcc/p/typecheck.c 2006-06-10 17:46:10.423386000 +0000 +@@ -33,8 +33,8 @@ + static tree decl_constant_value (tree); + static int is_discriminant_of (tree, tree); + static tree pascal_fold (tree); +-static tree re_fold (tree, tree, int *); +-static tree re_layout_type (tree, tree); ++static tree re_fold (tree, tree, tree, int *); ++static tree re_layout_type (tree, tree, tree); + static void assignment_error_or_warning (const char *, const char *, tree, int, int); + static void push_string (const char *); + static void push_member_name (tree); +@@ -59,6 +59,8 @@ + static void output_pending_init_elements (int); + static void process_init_element (tree); + ++int allow_packed_addresses = 0; ++ + void + cstring_inform (void) + { +@@ -623,7 +625,7 @@ + int constp = TYPE_READONLY (type), volatilep = TYPE_VOLATILE (type); + gcc_assert (TREE_CODE (type) == ARRAY_TYPE); + +- if (TREE_CODE_CLASS (TREE_CODE (exp)) == 'r' || DECL_P (exp)) ++ if (TREE_CODE_CLASS (TREE_CODE (exp)) == tcc_reference || DECL_P (exp)) + { + constp |= TREE_READONLY (exp); + volatilep |= TREE_THIS_VOLATILE (exp); +@@ -665,7 +667,7 @@ + adr = build1 (ADDR_EXPR, ptrtype, exp); + if (!mark_addressable (exp)) + return error_mark_node; +- TREE_CONSTANT (adr) = staticp (exp); ++ TREE_CONSTANT (adr) = staticp (exp) != 0; + TREE_SIDE_EFFECTS (adr) = 0; /* Default would be, same as EXP. */ + return adr; + } +@@ -1279,9 +1281,11 @@ + + parmval = convert_for_assignment (type, val, NULL, /* arg passing */ errc->fundecl, errc->parmnum); + ++#ifndef GCC_4_0 + if (PROMOTE_PROTOTYPES && ORDINAL_TYPE (TREE_CODE (type)) + && (TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node))) + parmval = default_conversion (parmval); ++#endif + } + return parmval; + } +@@ -1748,10 +1752,22 @@ + } + if (t && TREE_CODE (t) == IDENTIFIER_NODE) + t = TREE_PURPOSE (index) = check_identifier (t); +- if (t) +- t = probably_call_function (t); +- if (t2) +- t2 = probably_call_function (t2); ++ ++ /* @@@@@ We should use only one piece of code to verify ++ case-constant-list, so the code below should be common ++ to initializers, variant records and case instruction. */ ++ ++ if (t && TREE_CODE (t) == NON_LVALUE_EXPR) ++ t = TREE_OPERAND (t, 0); ++ if (t2 && TREE_CODE (t2) == NON_LVALUE_EXPR) ++ t2 = TREE_OPERAND (t2, 0); ++ ++ if ((t && TREE_CODE (t) != INTEGER_CST) ++ || (t2 && TREE_CODE (t2) != INTEGER_CST)) ++ { ++ error ("array indices in initializers must be constant"); ++ return 1; ++ } + if ((t && EM (t)) || (t2 && EM (t2))) + return 1; + if ((t && !comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (t)), domain)) +@@ -2058,6 +2074,9 @@ + return TREE_CODE (TREE_TYPE (TREE_VALUE (init))) != TREE_CODE (type); + } + ++/* Schema handling */ ++#if 0 ++ + /* Returns 1 if expr is the CONVERT_EXPR representing an unresolved + schema discriminant belonging to one of the given fields. */ + static int +@@ -2071,6 +2090,7 @@ + return 1; + return 0; + } ++#endif + + /* Returns 1 if type_or_expr contains somewhere in it an unresolved + schema discriminant. If fields is NULL, any discriminant is +@@ -2079,12 +2099,24 @@ + contains_discriminant (tree type_or_expr, tree fields) + { + enum tree_code code = TREE_CODE (type_or_expr); ++ gcc_assert (!fields || TREE_CODE_CLASS TREE_CODE ((fields)) == tcc_type); + switch (code) + { + case ERROR_MARK: + return 0; + ++ case COMPONENT_REF: ++ { ++ tree op0 = TREE_OPERAND (type_or_expr, 0); ++ if (TREE_CODE (op0) == PLACEHOLDER_EXPR) ++ return !fields || TREE_TYPE (op0) == fields; ++ break; /* Check operand below */ ++ } ++ + case VAR_DECL: ++#if 1 ++ return 0; ++#else + if (PASCAL_TREE_DISCRIMINANT (type_or_expr)) + { + tree field; +@@ -2101,6 +2133,7 @@ + && (!fields || is_discriminant_of (type_or_expr, fields))) + return 1; + break; /* Check operand below */ ++#endif + + case BOOLEAN_TYPE: + case CHAR_TYPE: +@@ -2139,8 +2172,10 @@ + } + break; + ++#ifndef GCC_4_0 + case RTL_EXPR: + return 0; ++#endif + + case TREE_LIST: + { +@@ -2166,12 +2201,14 @@ + return 0; + } + ++#if 1 + /* fold() doesn't know about our Boolean constants and constant array references. + Important: Do this *after* folding the operands! */ + static tree + pascal_fold (tree expr) + { + enum tree_code code = TREE_CODE (expr); ++ tree res; + if ((code == NON_LVALUE_EXPR || code == CONVERT_EXPR || code == NOP_EXPR) + && TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE) + { +@@ -2181,9 +2218,21 @@ + else if (integer_onep (op)) + return boolean_true_node; + } ++#if 0 + if (TREE_CODE (expr) == ARRAY_REF) + return fold_array_ref (expr); + return fold (expr); ++#else ++ if (TREE_CODE (expr) == ARRAY_REF) ++ res = fold_array_ref (expr); ++ else ++ res = fold (expr); ++ if (TREE_CODE (res) == INTEGER_CST) ++ { ++ res = copy_node (res); ++ } ++ return res; ++#endif + } + + /* fold() doesn't fold constants below (one or several) CONVERT_EXPR's +@@ -2199,12 +2248,38 @@ + prevents this!). p_foreign_discr can be NULL, otherwise the variable it + points to must have been initialized. + This function is slightly tricky. ;-) */ ++#endif ++ + static tree +-re_fold (tree expr, tree fields, int *p_foreign_discr) ++re_fold (tree expr, tree stype, tree fields, int *p_foreign_discr) + { + enum tree_code code = TREE_CODE (expr); +- int foreign_discr = 0; ++// int foreign_discr = 0; + CHK_EM (expr); ++ ++ if (code == COMPONENT_REF) ++ { ++ tree op0 = TREE_OPERAND (expr, 0); ++ tree field = TREE_OPERAND (expr, 1); ++ tree nf = fields; ++ if (TREE_CODE (op0) == PLACEHOLDER_EXPR && TREE_TYPE (op0) == stype) ++ /* Substitute value */ ++ { ++ tree val; ++ while (nf && TREE_PURPOSE (nf) != field) ++ nf = TREE_CHAIN (nf); ++ gcc_assert (nf); ++ val = TREE_VALUE (nf); ++ gcc_assert (TREE_CODE (val) != FUNCTION_DECL); ++ if (TREE_CODE (val) != VAR_DECL) ++ val = copy_node (val); ++ return pascal_fold (re_fold (val, ++ stype, fields, p_foreign_discr)); ++ } ++ if (TREE_CODE (op0) == PLACEHOLDER_EXPR && p_foreign_discr) ++ *p_foreign_discr = 1; ++ } ++#if 0 + if (code == CONVERT_EXPR && PASCAL_TREE_DISCRIMINANT (expr)) + { + if (!is_discriminant_of (expr, fields)) +@@ -2229,20 +2304,24 @@ + return pascal_fold (expr); + } + } +- else if (code == SAVE_EXPR) ++ else ++#endif ++ if (code == SAVE_EXPR) + /* Copying a SAVE_EXPR is no good idea. ;-) Therefore, we can't + modify its fields, i.e., we can't fold below it. This should only + happen in `New' (hopefully) when it doesn't matter that the type + can't be folded completely. */ +- ; ++ { ++ if (contains_discriminant (expr, stype)) ++ gcc_unreachable (); ++ } + else if (IS_EXPR_OR_REF_CODE_CLASS (TREE_CODE_CLASS (code))) + { + int i, l = NUMBER_OF_OPERANDS (code); + expr = copy_node (expr); + for (i = FIRST_OPERAND (code); i < l; i++) + if (TREE_OPERAND (expr, i)) +- CHK_EM (TREE_OPERAND (expr, i) = re_fold (TREE_OPERAND (expr, i), fields, &foreign_discr)); +- if (!foreign_discr) ++ CHK_EM (TREE_OPERAND (expr, i) = re_fold (TREE_OPERAND (expr, i), stype, fields, p_foreign_discr)); + return pascal_fold (expr); + } + else if (code == TREE_LIST) +@@ -2252,20 +2331,26 @@ + for (t = expr; t; t = TREE_CHAIN (t)) + { + if (TREE_VALUE (t)) +- CHK_EM (TREE_VALUE (t) = re_fold (TREE_VALUE (t), fields, &foreign_discr)); ++ CHK_EM (TREE_VALUE (t) = re_fold (TREE_VALUE (t), stype, fields, p_foreign_discr)); + if (TREE_PURPOSE (t)) +- CHK_EM (TREE_PURPOSE (t) = re_fold (TREE_PURPOSE (t), fields, &foreign_discr)); ++ CHK_EM (TREE_PURPOSE (t) = re_fold (TREE_PURPOSE (t), stype, fields, p_foreign_discr)); + } + } +- if (foreign_discr && p_foreign_discr) +- *p_foreign_discr = 1; + return expr; + } + ++tree ++copy_expr (tree expr) ++{ ++ return re_fold (expr, void_type_node, NULL_TREE, 0); ++} ++ ++#if 1 ++ + /* Recursive subroutine of build_discriminated_schema_type: + Re-build a type with actual discriminants replacing the formal ones. */ + static tree +-re_layout_type (tree type, tree fields) ++re_layout_type (tree type, tree stype, tree fields) + { + int was_packed = PASCAL_TYPE_PACKED (type); + +@@ -2273,7 +2358,7 @@ + that don't depend on the discriminants) is not only made for + efficiency, it also prevents the creation of incompatible types + (fjf590.pas). */ +- if (!contains_discriminant (type, fields)) ++ if (!contains_discriminant (type, stype)) + return build_type_copy (type); + + CHK_EM (type); +@@ -2289,8 +2374,8 @@ + copy_type_lang_specific (type); + new_main_variant (type); + +- CHK_EM (TYPE_MIN_VALUE (type) = re_fold (TYPE_MIN_VALUE (type), fields, &foreign_discr_min)); +- CHK_EM (TYPE_MAX_VALUE (type) = re_fold (TYPE_MAX_VALUE (type), fields, &foreign_discr_max)); ++ CHK_EM (TYPE_MIN_VALUE (type) = re_fold (TYPE_MIN_VALUE (type), stype, fields, &foreign_discr_min)); ++ CHK_EM (TYPE_MAX_VALUE (type) = re_fold (TYPE_MAX_VALUE (type), stype, fields, &foreign_discr_max)); + + /* size_volatile >= 2: prediscriminating (kludge?) */ + if (size_volatile < 2 && !foreign_discr_min && !foreign_discr_max && !check_subrange (TYPE_MIN_VALUE (type), TYPE_MAX_VALUE (type))) +@@ -2309,17 +2394,22 @@ + + /* Subrange type. */ + if (TREE_TYPE (type)) +- CHK_EM (TREE_TYPE (type) = re_layout_type (TREE_TYPE (type), fields)); ++ CHK_EM (TREE_TYPE (type) = re_layout_type (TREE_TYPE (type), stype, fields)); + + if (TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (TYPE_MAX_VALUE (type)))) + TYPE_PRECISION (type) = TYPE_PRECISION (TREE_TYPE (TYPE_MAX_VALUE (type))); + if (TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (TYPE_MIN_VALUE (type)))) + TYPE_PRECISION (type) = TYPE_PRECISION (TREE_TYPE (TYPE_MIN_VALUE (type))); ++#ifdef GCC_4_0 ++ TYPE_CACHED_VALUES_P (type) = 0; ++ TYPE_CACHED_VALUES (type) = NULL_TREE; ++#endif + break; + } + case ARRAY_TYPE: +- type = build_simple_array_type (re_layout_type (TREE_TYPE (type), fields), +- re_layout_type (TYPE_DOMAIN (type), fields)); ++ type = build_simple_array_type ( ++ re_layout_type (TREE_TYPE (type), stype, fields), ++ re_layout_type (TYPE_DOMAIN (type), stype, fields)); + CHK_EM (type); + break; + case RECORD_TYPE: +@@ -2327,13 +2417,17 @@ + if (PASCAL_TYPE_STRING (type)) + { + tree capacity = TYPE_LANG_DECLARED_CAPACITY (type); ++ int dummy = 0; + if (capacity) +- CHK_EM (type = build_pascal_string_schema (re_fold (capacity, fields, NULL))); ++ CHK_EM (type = build_pascal_string_schema ( ++ re_fold (capacity, stype, fields, &dummy))); + break; + } + else + { +- tree field, new_field, old_fields = TYPE_FIELDS (type), new_fields = NULL_TREE; ++ tree field, new_field, old_fields = TYPE_FIELDS (type); ++ tree new_fields = NULL_TREE; ++ tree old_type = type; + struct lang_type *lang_specific = TYPE_LANG_SPECIFIC (type); + int iv = PASCAL_TYPE_INITIALIZER_VARIANTS (type); + #ifndef EGCS97 +@@ -2342,7 +2436,8 @@ + int save_defining_packed_type; + for (field = old_fields; field; field = TREE_CHAIN (field)) + { +- tree f = build_field (DECL_NAME (field), re_layout_type (TREE_TYPE (field), fields)); ++ tree f = build_field (DECL_NAME (field), ++ re_layout_type (TREE_TYPE (field), stype, fields)); + CHK_EM (f); + new_fields = chainon (new_fields, f); + } +@@ -2364,7 +2459,8 @@ + tree tag = TYPE_LANG_VARIANT_TAG (type), t = TREE_VALUE (TREE_PURPOSE (tag)); + if (t) + { +- t = re_fold (t, fields, NULL); ++ int dummy; ++ t = re_fold (t, stype, fields, &dummy); + CHK_EM (t); + TYPE_LANG_VARIANT_TAG (type) = build_tree_list ( + build_tree_list (TREE_PURPOSE (TREE_PURPOSE (tag)), t), TREE_VALUE (tag)); +@@ -2382,7 +2478,12 @@ + the fields parameter which refers to the main record's fields, + but is actually passed for other purposes. But doing it like this + saves us from passing another parameter through the recursion. */ ++#if 0 + if (old_fields != fields && PASCAL_TYPE_SCHEMA (type)) ++#else ++ if (TYPE_MAIN_VARIANT (old_type) != stype ++ && PASCAL_TYPE_SCHEMA (type)) ++#endif + for (field = old_fields, new_field = TYPE_FIELDS (type); + field && new_field; + field = TREE_CHAIN (field), new_field = TREE_CHAIN (new_field)) +@@ -2391,12 +2492,14 @@ + /* Inner schemata must have been (formally) discriminated + before, i.e. PASCAL_TREE_DISCRIMINANT contains the + discriminant's initializer now. */ ++ int dummy; + tree fixup = DECL_LANG_FIXUPLIST (field); + gcc_assert (fixup && TREE_CODE (fixup) != TREE_LIST); + PASCAL_TREE_DISCRIMINANT (new_field) = 1; + gcc_assert (!DECL_LANG_SPECIFIC (new_field)); + allocate_decl_lang_specific (new_field); +- CHK_EM (DECL_LANG_FIXUPLIST (new_field) = re_fold (fixup, fields, NULL)); ++ CHK_EM (DECL_LANG_FIXUPLIST (new_field) = ++ re_fold (fixup, stype, fields, &dummy)); + } + break; + } +@@ -2417,6 +2520,7 @@ + + return type; + } ++#endif + + /* Return a discriminated schema type derived from TYPE (which must + be a schema type as returned by build_schema_type) using the +@@ -2425,6 +2529,7 @@ + build_discriminated_schema_type (tree type, tree discriminants, int prediscriminating) + { + tree type_template = type, field, disc, fix; ++ tree fix_list = NULL_TREE; + #ifndef EGCS97 + struct obstack *ambient_obstack; + #endif +@@ -2466,6 +2571,7 @@ + TREE_VALUE (disc) = val; + val = convert_for_assignment (TREE_TYPE (field), val, "schema discrimination", NULL_TREE, 0); + ++#if 0 + for (fix = DECL_LANG_FIXUPLIST (field); fix; fix = TREE_CHAIN (fix)) + { + tree target = TREE_VALUE (fix); +@@ -2479,11 +2585,16 @@ + TREE_PURPOSE (fix) = TREE_OPERAND (target, 0); + TREE_OPERAND (target, 0) = val; + } +- } ++#else ++ fix_list = tree_cons (field, val, fix_list); ++#endif ++ } ++ fix_list = nreverse (fix_list); ++ + if (!field || DECL_NAME (field) != schema_id || disc) + error ("number of discriminants does not match schema declaration"); + +- type = re_layout_type (type, TYPE_FIELDS (type)); ++ type = re_layout_type (type, TYPE_MAIN_VARIANT (type), fix_list); + CHK_EM (type); + + TYPE_LANG_SPECIFIC (type) = TYPE_LANG_SPECIFIC (type_template); +@@ -2492,7 +2603,9 @@ + + if (TYPE_LANG_INITIAL (type)) + { +- tree t = re_fold (TYPE_LANG_INITIAL (type), TYPE_FIELDS (type_template), NULL); ++ int dummy; ++ tree t = re_fold (TYPE_LANG_INITIAL (type), ++ TYPE_MAIN_VARIANT (type_template), fix_list, &dummy); + CHK_EM (t); + if (check_pascal_initializer (type, t)) + { +@@ -2509,6 +2622,7 @@ + if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (type_template)) + new_main_variant (type); + ++#if 0 + /* Restore the type template for future use. */ + for (field = TYPE_FIELDS (type_template); field; field = TREE_CHAIN (field)) + if (PASCAL_TREE_DISCRIMINANT (field)) +@@ -2517,6 +2631,7 @@ + TREE_OPERAND (TREE_VALUE (fix), 0) = TREE_PURPOSE (fix); + TREE_PURPOSE (fix) = NULL_TREE; + } ++#endif + + CHK_EM (type); + +@@ -2585,8 +2700,10 @@ + return TREE_CODE (TREE_TYPE (ref)) != FUNCTION_TYPE && TREE_CODE (TREE_TYPE (ref)) != METHOD_TYPE; + + case BIND_EXPR: ++#ifndef GCC_4_0 + case RTL_EXPR: + return TREE_CODE (TREE_TYPE (ref)) == ARRAY_TYPE; ++#endif + + case NOP_EXPR: + { +@@ -2689,11 +2806,14 @@ + error ("address of register variable `%s' requested", IDENTIFIER_NAME (DECL_NAME (x))); + return 0; + } ++ /* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */ ++#ifndef GCC_4_0 + #ifdef GCC_3_3 + put_var_into_stack (x, true); + #else + put_var_into_stack (x); + #endif ++#endif + /* FALLTHROUGH */ + case FUNCTION_DECL: + TREE_ADDRESSABLE (x) = 1; +@@ -2925,6 +3045,18 @@ + return error_mark_node; + } + ++#if 0 ++tree ++convert_for_assignment (tree type, tree rhs, const char *errtype, tree fundecl, int parmnum) ++{ ++ tree res = convert_for_assignment0 (type, rhs, errtype, fundecl, parmnum); ++ CHK_EM (res); ++ if (TYPE_MAIN_VARIANT (type) != TYPE_MAIN_VARIANT (TREE_TYPE (res))) ++ res = build (NOP_EXPR, type, res); ++ return res; ++} ++#endif ++ + /* Same as warn_for_assignment(), but as an error message. */ + static void + assignment_error_or_warning (const char *msg, const char *errtype, tree fundecl, int argnum, int error_flag) +@@ -3836,7 +3968,12 @@ + { + tree constructor = build_constructor (type, nreverse (el)); + if (constructor_constant) +- TREE_CONSTANT (constructor) = 1; ++ { ++ TREE_CONSTANT (constructor) = 1; ++#ifdef GCC_4_0 ++ TREE_INVARIANT (constructor) = 1; ++#endif ++ } + if (constructor_constant && constructor_simple) + TREE_STATIC (constructor) = 1; + return constructor; +@@ -4004,7 +4141,12 @@ + else + constructor = build_constructor (constructor_type, nreverse (constructor_elements)); + if (constructor_constant) +- TREE_CONSTANT (constructor) = 1; ++ { ++ TREE_CONSTANT (constructor) = 1; ++#ifdef GCC_4_0 ++ TREE_INVARIANT (constructor) = 1; ++#endif ++ } + if (constructor_constant && constructor_simple) + TREE_STATIC (constructor) = 1; + #ifndef EGCS97 +diff -urN gcc/p.old/types.c gcc/p/types.c +--- gcc/p.old/types.c 2006-06-10 17:45:38.413386000 +0000 ++++ gcc/p/types.c 2006-06-10 17:46:10.423386000 +0000 +@@ -37,6 +37,32 @@ + static int count_unsigned_bits (tree); + static void check_nonconstants (tree); + ++#ifdef GCC_4_0 ++tree ++pascal_build_int_cst (tree type, unsigned HOST_WIDE_INT low, HOST_WIDE_INT hi) ++{ ++ tree t = make_node (INTEGER_CST); ++ ++ TREE_INT_CST_LOW (t) = low; ++ TREE_INT_CST_HIGH (t) = hi; ++ TREE_TYPE (t) = type; ++ return t; ++} ++ ++tree ++pascal_fold1 (tree t) ++{ ++ /* Force call to original fold */ ++ tree res = (fold) (t); ++ if (TREE_CODE (res) == INTEGER_CST) ++ return copy_node (res); ++ else ++ return res; ++} ++ ++#endif ++ ++ + tree + check_result_type (tree type) + { +@@ -316,6 +342,9 @@ + TREE_TYPE (t) = empty_set_type_node; /* real type not yet known */ + CONSTRUCTOR_ELTS (t) = elements; + TREE_CONSTANT (t) = TREE_STATIC (t) = is_constant; ++#ifdef GCC_4_0 ++ TREE_INVARIANT (t) = is_constant; ++#endif + PASCAL_CONSTRUCTOR_INT_CST (t) = is_intcst; + TREE_SIDE_EFFECTS (t) = side_effects; + TREE_ADDRESSABLE (t) = 1; +@@ -625,8 +654,13 @@ + pedwarn ("assignment of empty string to a char yields a space"); + ch = ' '; + } ++#ifndef GCC_4_0 + t = build_int_2 (ch & ((1 << BITS_PER_UNIT) - 1), 0); + TREE_TYPE (t) = char_type_node; ++#else ++ t = build_int_cst_wide (char_type_node, ++ ch & ((1 << BITS_PER_UNIT) - 1), 0); ++#endif + PASCAL_CST_FRESH (t) = PASCAL_CST_FRESH (expr); + return t; + } +@@ -692,12 +726,18 @@ + #ifdef PG__NEW_STRINGS + if (!capacity) + { ++#ifdef GCC_4_0 ++ internal_capacity = build3 (COMPONENT_REF, pascal_cardinal_type_node, ++ build (PLACEHOLDER_EXPR, string), fields, NULL_TREE); ++#else + internal_capacity = build (COMPONENT_REF, pascal_cardinal_type_node, + build (PLACEHOLDER_EXPR, string), fields); ++#endif + #if 0 + capacity = integer_zero_node; + #else + capacity = pascal_maxint_node; /* @@@@ */ ++// capacity = internal_capacity; + #endif + } + size_volatile++; /* @@ Otherwise compilation of 'russ3a.pas' crashes */ +@@ -754,7 +794,8 @@ + if (PASCAL_TYPE_STRING (type)) + return 1; + +- if (TREE_CODE (type) != ARRAY_TYPE || TREE_CODE (TREE_TYPE (type)) != CHAR_TYPE) ++ if (TREE_CODE (type) != ARRAY_TYPE ++ || TYPE_MAIN_VARIANT (TREE_TYPE (type)) != char_type_node) + return 0; + + if (!PASCAL_TYPE_PACKED (type)) +@@ -767,7 +808,12 @@ + + /* String type low index must be one and nonvarying according to ISO */ + if (tree_int_cst_equal (TYPE_MIN_VALUE (TYPE_DOMAIN (type)), integer_one_node)) +- return 1; ++ if ((co->pascal_dialect & CLASSIC_PASCAL) && ++ tree_int_cst_equal (TYPE_MAX_VALUE (TYPE_DOMAIN (type)), ++ integer_one_node)) ++ return 0; ++ else ++ return 1; + + if (co->pascal_dialect & C_E_O_PASCAL) + return 0; +@@ -784,7 +830,7 @@ + } + + tree +-build_discriminants (tree names, tree type) ++build_discriminants (tree names, tree type, tree stype) + { + tree t; + if (!ORDINAL_TYPE (TREE_CODE (type))) +@@ -798,10 +844,23 @@ + Store the previous meanings of the identifiers + in the TREE_PURPOSE fields of the id_list. */ + tree id = TREE_VALUE (t); ++#if 0 + tree decl = TREE_VALUE (t) = build_decl (VAR_DECL, id, type); + SET_DECL_ASSEMBLER_NAME (decl, id); + allocate_decl_lang_specific (decl); + PASCAL_TREE_DISCRIMINANT (decl) = 1; ++#else ++ tree decl = build_decl (CONST_DECL, id, type); ++#endif ++ tree field = build_field (id, type); ++#ifdef GCC_4_0 ++ tree val = build3 (COMPONENT_REF, TREE_TYPE (field), ++ build (PLACEHOLDER_EXPR, stype), field, NULL_TREE); ++#else ++ tree val = build (COMPONENT_REF, TREE_TYPE (field), ++ build (PLACEHOLDER_EXPR, stype), field); ++#endif ++ DECL_INITIAL (decl) = val; + TREE_PURPOSE (t) = IDENTIFIER_VALUE (id); + IDENTIFIER_VALUE (id) = decl; + } +@@ -851,7 +910,7 @@ + has_side_effects (tree t, int had) + { + enum tree_code code = TREE_CODE (t); +- if (TREE_CODE_CLASS (code) == 't') ++ if (TREE_CODE_CLASS (code) == tcc_type) + { + tree i = TYPE_GET_INITIALIZER (t); + if (i && has_side_effects (i, 0)) +@@ -911,7 +970,7 @@ + its TYPE_LANG_CODE set accordingly, having as fields the discriminants plus a + `_p_Schema' field which contains the actual type. */ + tree +-build_schema_type (tree type, tree discriminants, tree init) ++build_schema_type (tree type, tree discriminants, tree init, tree stype) + { + tree fields = NULL_TREE, d, tmp, t; + chk_dialect ("schema types are", E_O_M_PASCAL); +@@ -922,10 +981,29 @@ + } + /* Release the identifiers of the discriminants. We must do this also in case + of a previous error, but check_pascal_initializer still needs them! */ ++#if 0 ++ t = stype; ++#endif + for (d = discriminants; d; d = TREE_CHAIN (d)) + { +- tree id = DECL_NAME (TREE_VALUE (d)); +- fields = chainon (fields, build_field (id, TREE_TYPE (TREE_VALUE (d)))); ++// tree id = DECL_NAME (TREE_VALUE (d)); ++#if 0 ++ tree field = build_field (id, TREE_TYPE (TREE_VALUE (d))); ++ tree val = build3 (COMPONENT_REF, TREE_TYPE (field), ++ build (PLACEHOLDER_EXPR, t), field, NULL_TREE); ++ tree fix = DECL_LANG_FIXUPLIST (TREE_VALUE (d)); ++ for (; fix; fix = TREE_CHAIN (fix)) ++ { ++ tree target = TREE_VALUE (fix); ++ gcc_assert (TREE_CODE (target) == CONVERT_EXPR && PASCAL_TREE_DISCRIMINANT (target)); ++ TREE_OPERAND (target, 0) = val; ++ } ++#else ++ tree id = TREE_VALUE (d); ++ tree val = DECL_INITIAL (IDENTIFIER_VALUE (id)); ++ tree field = TREE_OPERAND (val, 1); ++#endif ++ fields = chainon (fields, field); + IDENTIFIER_VALUE (id) = TREE_PURPOSE (d); + } + /* Do not return before this point! */ +@@ -936,7 +1014,7 @@ + for (t = fields; t && !has_side_effects (TREE_TYPE (t), 0); t = TREE_CHAIN (t)) ; + if (t || (init && has_side_effects (init, 0))) + error ("expressions with side-effects are not allowed in schema types"); +- t = finish_struct (start_struct (RECORD_TYPE), fields, 1); ++ t = finish_struct (stype, fields, 1); + CHK_EM (t); + TREE_USED (t) = TREE_USED (type); + allocate_type_lang_specific (t); +@@ -949,7 +1027,7 @@ + d && tmp; d = TREE_CHAIN (d), tmp = TREE_CHAIN (tmp)) + { + allocate_decl_lang_specific (tmp); +- DECL_LANG_FIXUPLIST (tmp) = DECL_LANG_FIXUPLIST (TREE_VALUE (d)); ++ DECL_LANG_FIXUPLIST (tmp) = NULL_TREE /* DECL_LANG_FIXUPLIST (TREE_VALUE (d)) */; + PASCAL_TREE_DISCRIMINANT (tmp) = 1; + } + return t; +@@ -990,9 +1068,9 @@ + if (PASCAL_TYPE_UNDISCRIMINATED_STRING (TREE_TYPE (TREE_TYPE (decl)))) + { + tree new_type, string_type = TREE_TYPE (TREE_TYPE (decl)); +-#ifndef PG__NEW_STRINGS ++/* #ifndef PG__NEW_STRINGS */ ++#if 1 + tree val = build_component_ref (build_indirect_ref (decl, NULL), get_identifier ("Capacity")); +- + size_volatile++; + new_type = build_pascal_string_schema (val); + size_volatile--; +@@ -1066,7 +1144,21 @@ + t = p_build_type_variant (t, 0, TYPE_VOLATILE (t)); + gcc_assert (!PASCAL_TYPE_UNDISCRIMINATED_STRING (t) && !PASCAL_TYPE_UNDISCRIMINATED_SCHEMA (t)); + if (PASCAL_TYPE_PREDISCRIMINATED_STRING (t)) ++#if 0 + t = build_pascal_string_schema (save_nonconstants (TYPE_LANG_DECLARED_CAPACITY (t))); ++#else ++ { ++// = build_component_ref (build_indirect_ref (decl, NULL), get_identifier ("Capacity")); ++// tree l = TYPE_LANG_DECLARED_CAPACITY (t); ++ tree l = build_component_ref (d, get_identifier ("Capacity")); ++#ifdef GCC_4_0 ++ l = SUBSTITUTE_PLACEHOLDER_IN_EXPR (l, d); ++#else ++ l = build (WITH_RECORD_EXPR, TREE_TYPE (l), l, d); ++#endif ++ t = build_pascal_string_schema (save_nonconstants (l)); ++ } ++#endif + else if (PASCAL_TYPE_PREDISCRIMINATED_SCHEMA (t)) + { + tree field, discr = NULL_TREE; +@@ -1169,8 +1261,17 @@ + if (!selector_field && TREE_CODE (selector_type) == IDENTIFIER_NODE) + { + tree decl = lookup_name (selector_type); ++#if 0 + if (decl && TREE_CODE (decl) == VAR_DECL && PASCAL_TREE_DISCRIMINANT (decl)) + selector_field = maybe_schema_discriminant (decl); ++#endif ++ if (decl && TREE_CODE (decl) == CONST_DECL ++ && TREE_CODE (DECL_INITIAL (decl)) == COMPONENT_REF ++ && TREE_CODE (TREE_OPERAND (DECL_INITIAL (decl), 0)) ++ == PLACEHOLDER_EXPR ++ && TREE_TYPE (TREE_OPERAND (DECL_INITIAL (decl), 0)) ++ == current_schema) ++ selector_field = DECL_INITIAL (decl); + else if (!(decl && TREE_CODE (decl) == TYPE_DECL)) + { + error ("selector type name or discriminant identifier expected, `%s' given", +@@ -1180,6 +1281,11 @@ + selector_type = TREE_TYPE (decl); + } + CHK_EM (selector_type); ++ ++ /* @@@@@ We should use only one piece of code to verify ++ case-constant-list, so the code below should be common ++ to initializers, variant records and case instruction. */ ++ + for (t = variant_list; t; t = TREE_CHAIN (t)) + { + tree f = TREE_VALUE (t), c; +@@ -1322,11 +1428,24 @@ + return type; + } + ++#if 1 + if (uns != TYPE_UNSIGNED (type)) + { + TREE_TYPE (type) = build_type_copy (TREE_TYPE (type)); + TYPE_UNSIGNED (TREE_TYPE (type)) = uns; + } ++#else ++ { ++ tree el_type = build_type_copy (TREE_TYPE (type)); ++ TYPE_UNSIGNED (el_type) = uns; ++ TYPE_PRECISION (el_type) = TREE_INT_CST_LOW (bits); ++ TYPE_SIZE (el_type) = NULL_TREE; ++#ifdef EGCS ++ TYPE_SIZE_UNIT (el_type) = NULL_TREE; ++#endif ++ layout_type (type); ++ } ++#endif + + TYPE_ALIGN (type) = TYPE_PRECISION (packed_array_unsigned_short_type_node); + align = bitsize_int (TYPE_ALIGN (type)); +@@ -1340,6 +1459,11 @@ + TYPE_SIZE_UNIT (type) = convert (sizetype, + size_binop (CEIL_DIV_EXPR, new_size, bitsize_int (BITS_PER_UNIT))); + #endif ++#ifdef GCC_4_0 ++ /* @@@@@@ Maybe */ ++ /* TYPE_NO_FORCE_BLK (type) = 1; */ ++ TYPE_MODE (type) = BLKmode; ++#endif + } + else if (ORDINAL_TYPE (TREE_CODE (type))) + { +@@ -1438,10 +1562,10 @@ + count_bits (tree type, int *punsigned) + { + int positive, lo_bits, hi_bits, bits; +- tree lo = TYPE_MIN_VALUE (type), hi = TYPE_MAX_VALUE (type), result; ++ tree lo, hi, result; + if (!ORDINAL_TYPE (TREE_CODE (type)) +- || !lo || TREE_CODE (lo) != INTEGER_CST +- || !hi || TREE_CODE (hi) != INTEGER_CST) ++ || !(lo = TYPE_MIN_VALUE (type)) || TREE_CODE (lo) != INTEGER_CST ++ || !(hi = TYPE_MAX_VALUE (type)) || TREE_CODE (hi) != INTEGER_CST) + return NULL_TREE; + positive = tree_int_cst_sgn (lo) >= 0 && tree_int_cst_sgn (hi) >= 0; + lo_bits = count_unsigned_bits (lo); +@@ -1558,6 +1682,9 @@ + val1 = val2; + val2 = tmp; + } ++ ++ if (why != NOP_EXPR && MAX (TYPE_PRECISION (TREE_TYPE (val1)), TYPE_PRECISION (TREE_TYPE (val2))) < TYPE_PRECISION (pascal_integer_type_node)) ++ return pascal_integer_type_node; + if (TREE_CODE (val1) == INTEGER_CST + && TREE_CODE (TREE_TYPE (val2)) == INTEGER_TYPE + && TYPE_MIN_VALUE (TREE_TYPE (val2)) +@@ -1566,7 +1693,8 @@ + && TREE_CODE (TYPE_MAX_VALUE (TREE_TYPE (val2))) == INTEGER_CST + && !const_lt (val1, TYPE_MIN_VALUE (TREE_TYPE (val2))) + && !const_lt (TYPE_MAX_VALUE (TREE_TYPE (val2)), val1)) +- return TREE_TYPE (val2); ++ return (why != NOP_EXPR && TYPE_PRECISION (TREE_TYPE (val2)) < TYPE_PRECISION (pascal_integer_type_node)) ++ ? pascal_integer_type_node : TYPE_MAIN_VARIANT (TREE_TYPE (val2)); + return common_type (TREE_TYPE (val1), TREE_TYPE (val2)); + } + +@@ -1583,14 +1711,16 @@ + min_val = val2; + max_val = val1; + } +- if (!(TREE_CODE_CLASS (TREE_CODE (val1)) == 'c' && PASCAL_CST_FRESH (val1))) ++ if (!(TREE_CODE_CLASS (TREE_CODE (val1)) == tcc_constant ++ && PASCAL_CST_FRESH (val1))) + { + if (const_lt (TYPE_MIN_VALUE (TREE_TYPE (val1)), min_val)) + min_val = TYPE_MIN_VALUE (TREE_TYPE (val1)); + if (const_lt (max_val, TYPE_MAX_VALUE (TREE_TYPE (val1)))) + max_val = TYPE_MAX_VALUE (TREE_TYPE (val1)); + } +- if (!(TREE_CODE_CLASS (TREE_CODE (val2)) == 'c' && PASCAL_CST_FRESH (val2))) ++ if (!(TREE_CODE_CLASS (TREE_CODE (val2)) == tcc_constant ++ && PASCAL_CST_FRESH (val2))) + { + if (const_lt (TYPE_MIN_VALUE (TREE_TYPE (val2)), min_val)) + min_val = TYPE_MIN_VALUE (TREE_TYPE (val2)); +@@ -1722,7 +1852,12 @@ + + /* Constant expressions are ok. Discriminants are substituted elsewhere. */ + if (TREE_CONSTANT (expr) ++#if 0 + || ((code == VAR_DECL || code == FIELD_DECL || code == CONVERT_EXPR) && PASCAL_TREE_DISCRIMINANT (expr))) ++#else ++ || (code == COMPONENT_REF ++ && TREE_CODE (TREE_OPERAND (expr, 0)) == PLACEHOLDER_EXPR)) ++#endif + return expr; + + if (code == COMPOUND_EXPR) +@@ -1884,7 +2019,6 @@ + tree field2 = sorted_fields[i], ret; + if (DECL_NAME (field2) == component) + { +- gcc_unreachable (); + field = field2; + break; + } +@@ -2000,11 +2134,22 @@ + { + tree ref1, ftype = TREE_TYPE (TREE_VALUE (field)); + CHK_EM (ftype); ++#ifndef GCC_4_0 + ref1 = build (COMPONENT_REF, ftype, ref, TREE_VALUE (field)); ++#else ++ ref1 = build3 (COMPONENT_REF, ftype, ref, TREE_VALUE (field), ++ NULL_TREE); ++#endif + if (TREE_READONLY (ref) || TREE_READONLY (TREE_VALUE (field))) + TREE_READONLY (ref1) = 1; + if (TREE_THIS_VOLATILE (ref) || TREE_THIS_VOLATILE (TREE_VALUE (field))) + TREE_THIS_VOLATILE (ref1) = 1; ++#if 0 ++ if (DECL_BIT_FIELD (TREE_VALUE (field)) ++ && TREE_INT_CST_LOW (DECL_SIZE (field)) ++ < TYPE_PRECISION (integer_type_node)) ++ ref1 = convert (integer_type_node, ref1); ++#endif + ref = fold (ref1); + } + return ref; +@@ -2045,7 +2190,11 @@ + tree + simple_component_ref (tree expr, tree field) + { ++#ifndef GCC_4_0 + tree ref = build (COMPONENT_REF, TREE_TYPE (field), expr, field); ++#else ++ tree ref = build3 (COMPONENT_REF, TREE_TYPE (field), expr, field, NULL_TREE); ++#endif + if (TREE_CODE (expr) == CONSTRUCTOR) + ref = save_expr (ref); + if (TREE_READONLY (expr) || TREE_READONLY (field)) +@@ -2383,8 +2532,13 @@ + + if (TREE_CODE (array) == STRING_CST && TREE_CODE (index) == INTEGER_CST) + { ++#ifndef GCC_4_0 + array = build_int_2 (TREE_STRING_POINTER (array)[TREE_INT_CST_LOW (index) - 1], 0); + TREE_TYPE (array) = char_type_node; ++#else ++ array = build_int_cst_wide (char_type_node, ++ TREE_STRING_POINTER (array)[TREE_INT_CST_LOW (index) - 1], 0); ++#endif + } + else if (!bits || TREE_INT_CST_LOW (bits) == TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (TREE_TYPE (array))))) + /* Not packed. Just a normal array reference. */ +@@ -2468,7 +2622,12 @@ + } + else + array = build (PASCAL_BIT_FIELD_REF, TREE_TYPE (array_type), array, bits, index); ++#if 1 ++ PASCAL_BIT_FIELD_REF_UNSIGNED (array) = ++ TYPE_UNSIGNED (TREE_TYPE (array_type)); ++#else + BIT_FIELD_REF_UNSIGNED (array) = TYPE_UNSIGNED (TREE_TYPE (array_type)); ++#endif + } + } + if (EM (array)) +@@ -2489,8 +2648,13 @@ + { + arg1 = range_check_2 (integer_one_node, build_int_2 (TREE_STRING_LENGTH (arg0) - 1, 0), arg1); + CHK_EM (arg1); ++#ifndef GCC_4_0 + t = build_int_2 (TREE_STRING_POINTER (arg0)[TREE_INT_CST_LOW (arg1) - 1], 0); + TREE_TYPE (t) = char_type_node; ++#else ++ t = build_int_cst_wide (char_type_node, ++ TREE_STRING_POINTER (arg0)[TREE_INT_CST_LOW (arg1) - 1], 0); ++#endif + } + else if (TREE_CODE (arg1) == INTEGER_CST && TREE_CODE (arg0) == CONSTRUCTOR) + { +@@ -2564,7 +2728,11 @@ + } + + type = TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (array))); ++#ifndef GCC_4_0 + rval = build (ARRAY_REF, type, array, index); ++#else ++ rval = build4 (ARRAY_REF, type, array, index, NULL_TREE, NULL_TREE); ++#endif + /* Array ref is const/volatile if the array elements are or if the array is. */ + TREE_READONLY (rval) |= (TYPE_READONLY (TREE_TYPE (TREE_TYPE (array))) | TREE_READONLY (array)); + TREE_SIDE_EFFECTS (rval) |= (TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (array))) | TREE_SIDE_EFFECTS (array)); +@@ -2612,6 +2780,10 @@ + if (type == TREE_TYPE (e) || EM (e) || EM (type)) + return e; + CHK_EM (TREE_TYPE (e)); ++/* ++ if (code = INTEGER_TYPE || code == ENUMERAL_TYPE) ++ e = copy_node (e); ++*/ + if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (e))) + return fold (build1 (NOP_EXPR, type, e)); + if (code == SET_TYPE && TREE_CODE (TREE_TYPE (e)) == SET_TYPE) +@@ -2631,8 +2803,10 @@ + expression here to avoid this bug in case there are other + references to it (as in fact there are in `case', casebool.pas). */ + enum tree_code c = TREE_CODE (e); +- tree e2 = (TREE_CODE_CLASS (c) == '<' || c == TRUTH_AND_EXPR || c == TRUTH_ANDIF_EXPR +- || c == TRUTH_OR_EXPR || c == TRUTH_ORIF_EXPR || c == TRUTH_XOR_EXPR || c == TRUTH_NOT_EXPR) ? copy_node (e) : e; ++ tree e2 = (TREE_CODE_CLASS (c) == tcc_comparison || c == TRUTH_AND_EXPR ++ || c == TRUTH_ANDIF_EXPR || c == TRUTH_OR_EXPR ++ || c == TRUTH_ORIF_EXPR || c == TRUTH_XOR_EXPR ++ || c == TRUTH_NOT_EXPR) ? copy_node (e) : e; + tree result = fold (convert_to_integer (type, e2)); + return result; + } +diff -urN gcc/p.old/units/crtc.c gcc/p/units/crtc.c +--- gcc/p.old/units/crtc.c 2006-06-10 17:45:38.423386000 +0000 ++++ gcc/p/units/crtc.c 2006-06-10 17:46:10.433386000 +0000 +@@ -2614,7 +2614,7 @@ + do + { + errno = 0; +- res = wgetnstr (crt_ActivePanel->w, crt_LineBuf, MAXLENGTH - 1); ++ res = wgetnstr (crt_ActivePanel->w, (char *)crt_LineBuf, MAXLENGTH - 1); + } + while + #ifdef EINTR +@@ -2630,12 +2630,12 @@ + { + do + { +- p = strchr (crt_LineBuf, 26); ++ p = (Char *)strchr ((char *)crt_LineBuf, 26); + if (p) *p = 0; + } + while (p); + } +- crt_LineBufCount = strlen (crt_LineBuf); ++ crt_LineBufCount = strlen ((char *)crt_LineBuf); + crt_LineBuf[crt_LineBufCount++] = '\n'; + } + crt_LineBufPos = crt_LineBuf; +diff -urN gcc/p.old/utils/Makefile gcc/p/utils/Makefile +--- gcc/p.old/utils/Makefile 2006-06-10 17:45:38.433386000 +0000 ++++ gcc/p/utils/Makefile 2006-06-10 17:46:10.433386000 +0000 +@@ -44,20 +44,14 @@ + EXE=binobj$(exeext) gpidump$(exeext) + EXE2=binobj gpidump + DOC=binobj.1 gpidump.1 +-PC_WITH_FLAGS=$(PC) --automake --executable-file-name $(UTILS_WARN) $(CFLAGS) $(PFLAGS) $(PFLAGS1) `cat needed-options` ++PC_WITH_FLAGS=$(PC) --automake --executable-file-name $(UTILS_WARN) $(CFLAGS) $(PFLAGS) $(PFLAGS1) + + all: $(EXE) $(DOC) + +-# The Pascal source is not used, but we have to provide any. +-# `-x Preprocessed-Pascal /dev/null' works as well, except on mingw. +-needed-options: binobj.pas $(GCC_DIR)/p/p-version.h +- $(PC) $(UTILS_WARN) $(CFLAGS) $(PFLAGS) $(PFLAGS1) --print-needed-options "$<" 2> "$@" || true +- if grep '^[^-]' "$@" > /dev/null; then echo "needed-options: `cat "$@"`" >&2; rm -f "$@"; false; else true; fi +- +-binobj$(exeext): binobj.pas needed-options ++binobj$(exeext): binobj.pas + $(PC_WITH_FLAGS) "$<" + +-gpidump$(exeext): gpidump.pas tree.inc needed-options ++gpidump$(exeext): gpidump.pas tree.inc + $(PC_WITH_FLAGS) -I. -I "$(GCC_DIR)/p" "$<" + + binobj.1: binobj +@@ -100,4 +94,4 @@ + done + + clean: +- rm -f *.o *.i *.s *.gpi *.gpd $(EXE) $(EXE2) $(DOC) tree.inc needed-options ++ rm -f *.o *.i *.s *.gpi *.gpd $(EXE) $(EXE2) $(DOC) tree.inc +diff -urN gcc/p.old/utils/gpidump.pas gcc/p/utils/gpidump.pas +--- gcc/p.old/utils/gpidump.pas 2006-06-10 17:45:38.433386000 +0000 ++++ gcc/p/utils/gpidump.pas 2006-06-10 17:46:10.443386000 +0000 +@@ -46,6 +46,17 @@ + + const + ExprClasses = ['e', '1', '2', '<', 's']; ++ tcc_type = 't'; ++ tcc_declaration = 'd'; ++ tcc_constant = 'c'; ++ tcc_unary = '1'; ++ tcc_binary = '2'; ++ tcc_comparison = '<'; ++ tcc_expression = 'e'; ++ tcc_reference = 'r'; ++ tcc_exceptional = 'x'; ++ tcc_statement = 's'; ++ + TreeCodes: array [TTreeCode] of record + Name: ^String; + CodeClass: Char; +@@ -361,7 +372,7 @@ + fprotected, + {$ifdef GCC_3_4} + deprecated, +- unused_flag_1, ++ invariant, + {$elif defined (EGCS97)} + bounded, + deprecated, +@@ -416,7 +427,8 @@ + if f.fprotected then OutputFlag ('protected'); + {$ifdef GCC_3_4} + if f.deprecated then OutputFlag ('!deprecated'); +- if f.unused_flag_1 then OutputFlag ('!unused_flag_1'); ++ if f.invariant then OutputFlag ( ++ {$ifdef GCC_4_0} 'invariant' {$else} '!unused_flag_1' {$endif}); + {$elif defined (EGCS97)} + if f.bounded then OutputFlag ('bounded'); + if f.deprecated then OutputFlag ('!deprecated'); +@@ -630,9 +642,12 @@ + thread_local, + declared_inline_flag: Boolean; + {$endif} ++ {$ifdef GCC_4_0} ++ seen_in_bind_expr: Boolean; ++ {$endif} + {$ifdef GCC_3_4} + visibility: 0 .. 3; +- unused: Boolean; ++ visibility_specified: Boolean; + {$endif} + {$endif} + unused_decl_flag_0, +@@ -643,6 +658,14 @@ + decl_flag_5, + decl_flag_6, + decl_flag_7: Boolean; ++ {$ifdef GCC_4_0} ++ possibly_inlined, ++ preserve_flag, ++ gimple_formal_temp, ++ debug_expr_is_from : Boolean; ++ sp1, sp2, sp3, sp4, sp5, sp6, sp7, ++ sp8, sp9, sp10, sp11 : Boolean; ++ {$endif} + {$if defined (EGCS) and not defined (EGCS97)} + non_addr_const_p, + no_instrument_function_entry_exit, +@@ -652,7 +675,11 @@ + Misc: TDeclMisc + end; + begin +- CompilerAssert (SizeOf (f) = {$ifdef EGCS97} 6 {$elif defined (EGCS)} 5 {$else} 4 {$endif} + SizeOf (TDeclMisc)); ++ CompilerAssert (SizeOf (f) = {$ifdef GCC_4_0} 8 ++ {$elif defined (EGCS97)} 6 ++ {$elif defined (EGCS)} 5 ++ {$else} 4 ++ {$endif} + SizeOf (TDeclMisc)); + GetSize (Pos1, f, SizeOf (f)); + Comma; + Write ('machine_mode ', Number (f.MachineMode, 0)); +@@ -692,7 +719,8 @@ + {$endif} + {$ifdef GCC_3_4} + OutputFlag2 ('visibility', f.visibility); +- if f.unused then OutputFlag ('!unused'); ++ if f.visibility_specified then OutputFlag ( ++ {$ifdef GCC_4_0} 'visibility_specified' {$else} '!unused' {$endif}); + {$endif} + {$endif} + if f.unused_decl_flag_0 then OutputFlag ('!unused_decl_flag_0'); +@@ -725,12 +753,15 @@ + case TreeCode of + VAR_DECL: OutputFlag ('initialized'); + PARM_DECL: OutputFlag ('procedural_parameter'); ++ FUNCTION_DECL: ++ OutputFlag ('reintroduce'); + else OutputFlag ('!lang_decl_flag_6') + end; + if f.decl_flag_7 then + case TreeCode of + FUNCTION_DECL: OutputFlag ('forward'); + CONST_DECL: OutputFlag ('principal'); ++ VAR_DECL: OutputFlag ('for_loop_counter'); + else OutputFlag ('!lang_decl_flag_7') + end; + {$if defined (EGCS) and not defined (EGCS97)} +@@ -1129,12 +1160,15 @@ + TYPE_DECL: Ref ('type'); + VAR_DECL: begin + Ref ('type'); ++ Ref ('initial'); + Discard (OptStr ('linker_name ')) + end; + OPERATOR_DECL: ; + PLACEHOLDER_EXPR: Ref ('type'); + NON_LVALUE_EXPR: if IsPackedAccess then Ref ('packed_info'); +- else if not ClassDone or (TreeCode = RTL_EXPR) then Error ('unknown tree code') ++ else if not ClassDone ++ {$ifndef GCC_4_0} or (TreeCode = RTL_EXPR) {$endif} ++ then Error ('unknown tree code') + end; + if not First then WriteLn; + if Pos1 <= Pos2 then +diff -urN gcc/p.old/utils/mk-t-inc gcc/p/utils/mk-t-inc +--- gcc/p.old/utils/mk-t-inc 2006-06-10 17:45:38.433386000 +0000 ++++ gcc/p/utils/mk-t-inc 2006-06-10 17:46:10.443386000 +0000 +@@ -61,22 +61,9 @@ + {\$define GCC_VERSION '$version'} + EOF + +-# Mostly copied from GPC's config-lang.in +-if echo $version | grep '^2\.9' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null || echo $version | grep egcs > /dev/null; then +- echo '{$define EGCS}' +- if echo $version | grep '^2\.95\.[3-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null; then +- echo '{$define GCC_2_95_3}' +- fi +- if echo $version | grep '^2\.9[6-9]' > /dev/null || echo $version | grep '^3\.[1-9]' > /dev/null; then +- echo '{$define EGCS97}' +- if echo $version | grep '^3\.[3-9]' > /dev/null; then +- echo '{$define GCC_3_3}' +- if echo $version | grep '^3\.[4-9]' > /dev/null; then +- echo '{$define GCC_3_4}' +- fi +- fi +- fi +-fi ++# Use result of GPC's config-lang.in ++sed -ne 's,#define\(.*\),{$define\1},p' ../../gcc-version.h ++ + sed -ne '/Start GPI info/,/End GPI info/{s,/\*.*\*/,,g;s/0x/$/g;s/#/{$/g;s/[^\]$/&}/;s/\\$//;p;}' "$GCCDIR/p/module.c" + echo '{$endif}' + echo "" +@@ -84,7 +71,6 @@ + { + cat "$GCCDIR/tree.def" + echo 'DEFTREECODE (LAST_AND_UNUSED_C_TREE_CODE, "unused", '"'x', 0)" +- sed -e '/#else/,/#endif/d' "$GCCDIR/p/p-tree.def" +-} | sed -ne '/^DEFTREECODE/{s,/\*.*\*/,,;s/["'"'"']x["'"'"'].*/'"'x', 0)/;p;}" +- ++ sed -e '/#ifdef EGCS/,${/#ifdef EGCS/d;/#else/,/#endif/d}' "$GCCDIR/p/p-tree.def" ++} | sed -ne ':loop;/\\$/{N;b loop};/^DEFTREECODE/{s,/\*.*\*/,,;s/["'"'"']x["'"'"'].*/'"'x', 0)/;p;};/^#/p" + } > "$2" || { rm -f "$2"; false; } +--- gcc/p/diffs/gcc-3.4.4.diff~ 2005-11-16 06:24:39.000000000 +0100 ++++ gcc/p/diffs/gcc-3.4.4.diff 2006-06-10 20:42:27.493386000 +0200 +@@ -496,7 +496,7 @@ + 02111-1307, USA. */ + + +-+ /* @@ PATCHED FOR GPC 20051114 @@ */ +++ /* @@ PATCHED FOR GPC 20060322 @@ */ + + + #include "config.h" + #include "system.h" --- gcc-3.4-3.4.6.orig/debian/patches/multiarch-include.dpatch +++ gcc-3.4-3.4.6/debian/patches/multiarch-include.dpatch @@ -0,0 +1,60 @@ +#! /bin/sh -e + +# DP: multiarch-include.dpatch +# DP: +# DP: Adds multiarch include directories +# DP: /usr/local/include/-linux-gnu +# DP: /usr/include/-linux-gnu +# DP: to the system include paths. + +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/cppdefault.c~ 2006-07-14 13:52:45.873955680 +0000 ++++ gcc/cppdefault.c 2006-07-14 14:00:13.684878072 +0000 +@@ -59,6 +59,8 @@ + { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0 }, + #endif + #ifdef LOCAL_INCLUDE_DIR ++ /* /usr/local/include/$target_alias comes before the fixincluded header files. */ ++ { LOCAL_INCLUDE_DIR "/" TARGET_NONCANONICAL, 0, 0, 1, 1 }, + /* /usr/local/include comes before the fixincluded header files. */ + { LOCAL_INCLUDE_DIR, 0, 0, 1, 1 }, + #endif +@@ -82,6 +84,8 @@ + { SYSTEM_INCLUDE_DIR, 0, 0, 0, 1 }, + #endif + #ifdef STANDARD_INCLUDE_DIR ++ /* /usr/include/$target_alias comes before the fixincluded header files. */ ++ { STANDARD_INCLUDE_DIR "/" TARGET_NONCANONICAL, STANDARD_INCLUDE_COMPONENT, 0, 1, 1 }, + /* /usr/include comes dead last. */ + { STANDARD_INCLUDE_DIR, STANDARD_INCLUDE_COMPONENT, 0, 0, 1 }, + #endif +--- gcc/Makefile.in~ 2006-07-14 13:52:45.877955072 +0000 ++++ gcc/Makefile.in 2006-07-14 13:58:11.596438336 +0000 +@@ -2351,6 +2351,7 @@ + -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ ++ -DTARGET_NONCANONICAL=\"$(target_noncanonical)\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ + + LIBCPP_OBJS = cpplib.o cpplex.o cppmacro.o cppexp.o cppfiles.o cpptrad.o \ --- gcc-3.4-3.4.6.orig/debian/patches/fastjar-doc.dpatch +++ gcc-3.4-3.4.6/debian/patches/fastjar-doc.dpatch @@ -0,0 +1,45 @@ +#! /bin/sh -e + +# DP: fastjar.texi: Directly define the gcctabopt and gccoptlist macros. + +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 + +--- fastjar/fastjar.texi~ 2006-02-08 05:55:47.000000000 +0000 ++++ fastjar/fastjar.texi 2006-08-29 19:31:40.590718000 +0000 +@@ -10,7 +10,16 @@ + @c When this manual is copyrighted. + @set copyrights-fastjar 2002 + +-@include gcc-common.texi ++@macro gcctabopt{body} ++@code{\body\} ++@end macro ++@macro gccoptlist{body} ++@smallexample ++\body\ ++@end smallexample ++@end macro ++ ++@include gcc-vers.texi + + @c Versions + @set which-gcj GCC-@value{version-GCC} --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libgcc-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libgcc-cross.mk @@ -0,0 +1,224 @@ +arch_binaries := $(arch_binaries) libgcc +ifeq ($(with_lib64gcc),yes) + arch_binaries := $(arch_binaries) lib64gcc +endif +ifeq ($(biarch32),yes) + arch_binaries := $(arch_binaries) lib32gcc +endif + +p_lgcc = libgcc$(GCC_SONAME)$(cross_lib_arch) +d_lgcc = debian/$(p_lgcc) + +p_l64gcc = lib32gcc$(GCC_SONAME)$(cross_lib_arch) +d_l64gcc = debian/$(p_l32gcc) + +p_l64gcc = lib64gcc$(GCC_SONAME)$(cross_lib_arch) +d_l64gcc = debian/$(p_l64gcc) + +ifeq ($(with_shared_libgcc),yes) +files_lgcc = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libgcc_s.so.$(GCC_SONAME) +files_l64gcc = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/libgcc_s.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +ifeq ($(DEB_TARGET_GNU_CPU),ia64) +$(binary_stamp)-libgcc: $(install_dependencies) $(binary_stamp)-libunwind +else +$(binary_stamp)-libgcc: $(install_dependencies) +endif + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lgcc) + dh_installdirs -p$(p_lgcc) \ + $(docdir)/$(p_lgcc) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib + +ifeq ($(with_shared_libgcc),yes) + DH_COMPAT=2 dh_movefiles -p$(p_lgcc) $(files_lgcc) +endif + + dh_installdocs -p$(p_lgcc) + dh_installchangelogs -p$(p_lgcc) + + debian/dh_rmemptydirs -p$(p_lgcc) +ifeq ($(with_shared_libgcc),yes) + ifeq ($(DEB_TARGET_GNU_CPU),ia64) + cp -a $(PWD)/$(d)-unwind/usr/lib/libunwind.so.* $(d_lgcc)/usr/$(DEB_TARGET_GNU_TYPE)/lib/ + dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= 1:3.4.3-6)' -n + sed s/$(cross_lib_arch)//g < debian/$(p_lgcc)/DEBIAN/shlibs > debian/$(p_lgcc)/DEBIAN/shlibs.fixed + mv debian/$(p_lgcc)/DEBIAN/shlibs.fixed debian/$(p_lgcc)/DEBIAN/shlibs + touch debian/$(p_lgcc).substvars + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lgcc) -Xlibgcc_s + sed s/$(cross_lib_arch)//g < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.fixed + mv debian/$(p_lgcc).substvars.fixed debian/$(p_lgcc).substvars + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.new + mv debian/$(p_lgcc).substvars.new debian/$(p_lgcc).substvars + else + dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= $(DEB_LIBGCC_SOVERSION))' -n + sed s/$(cross_lib_arch)//g < debian/$(p_lgcc)/DEBIAN/shlibs > debian/$(p_lgcc)/DEBIAN/shlibs.fixed + mv debian/$(p_lgcc)/DEBIAN/shlibs.fixed debian/$(p_lgcc)/DEBIAN/shlibs + touch debian/$(p_lgcc).substvars + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lgcc) + sed s/$(cross_lib_arch)//g < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.fixed + mv debian/$(p_lgcc).substvars.fixed debian/$(p_lgcc).substvars + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.new + mv debian/$(p_lgcc).substvars.new debian/$(p_lgcc).substvars + endif + cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local +endif + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lgcc) + dh_compress -p$(p_lgcc) + dh_fixperms -p$(p_lgcc) + dh_gencontrol -p$(p_lgcc) \ + -- -v$(DEB_LIBGCC_VERSION) $(common_substvars) + b=libgcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_lgcc) + dh_md5sums -p$(p_lgcc) + dh_builddeb -p$(p_lgcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l64gcc) + dh_installdirs -p$(p_l64gcc) \ + $(docdir)/$(p_l64gcc) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64 + +ifeq ($(with_shared_libgcc),yes) + DH_COMPAT=2 dh_movefiles -p$(p_l64gcc) $(files_l64gcc) +endif + + dh_installdocs -p$(p_l64gcc) + dh_installchangelogs -p$(p_l64gcc) + + debian/dh_rmemptydirs -p$(p_l64gcc) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_l64gcc) + dh_compress -p$(p_l64gcc) + dh_fixperms -p$(p_l64gcc) +ifeq ($(with_shared_libgcc),yes) + dh_makeshlibs -p$(p_l64gcc) \ + -V '$(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' -n + sed s/$(cross_lib_arch)//g < debian/$(p_l64gcc)/DEBIAN/shlibs > debian/$(p_l64gcc)/DEBIAN/shlibs.fixed + mv debian/$(p_l64gcc)/DEBIAN/shlibs.fixed debian/$(p_l64gcc)/DEBIAN/shlibs + cat debian/$(p_l64gcc)/DEBIAN/shlibs >> debian/shlibs.local +endif + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_l64gcc) + sed s/$(cross_lib_arch)//g < debian/$(p_l64gcc).substvars > debian/$(p_l64gcc).substvars.fixed + mv debian/$(p_l64gcc).substvars.fixed debian/$(p_l64gcc).substvars + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_l64gcc).substvars > debian/$(p_l64gcc).substvars.new + mv debian/$(p_l64gcc).substvars.new debian/$(p_l64gcc).substvars + dh_gencontrol -p$(p_l64gcc) \ + -- -v$(DEB_VERSION) $(common_substvars) + b=libgcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_l64gcc) + dh_md5sums -p$(p_l64gcc) + dh_builddeb -p$(p_l64gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-lib32gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l32gcc) + dh_installdirs -p$(p_l32gcc) \ + $(docdir)/$(p_l32gcc) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib32 + +ifeq ($(with_shared_libgcc),yes) + DH_COMPAT=2 dh_movefiles -p$(p_l32gcc) $(files_l32gcc) +endif + + dh_installdocs -p$(p_l32gcc) + dh_installchangelogs -p$(p_l32gcc) + + debian/dh_rmemptydirs -p$(p_l32gcc) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_l32gcc) + dh_compress -p$(p_l32gcc) + dh_fixperms -p$(p_l32gcc) +ifeq ($(with_shared_libgcc),yes) + dh_makeshlibs -p$(p_l32gcc) \ + -V '$(p_l32gcc) (>= $(DEB_LIBGCC_SOVERSION))' -n + sed s/$(cross_lib_arch)//g < debian/$(p_l32gcc)/DEBIAN/shlibs > debian/$(p_l32gcc)/DEBIAN/shlibs.fixed + mv debian/$(p_l32gcc)/DEBIAN/shlibs.fixed debian/$(p_l32gcc)/DEBIAN/shlibs + cat debian/$(p_l32gcc)/DEBIAN/shlibs >> debian/shlibs.local +endif + ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_l32gcc) + sed s/$(cross_lib_arch)//g < debian/$(p_l32gcc).substvars > debian/$(p_l32gcc).substvars.fixed + mv debian/$(p_l32gcc).substvars.fixed debian/$(p_l32gcc).substvars + sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_l32gcc).substvars > debian/$(p_l32gcc).substvars.new + mv debian/$(p_l32gcc).substvars.new debian/$(p_l32gcc).substvars + dh_gencontrol -p$(p_l32gcc) \ + -- -v$(DEB_VERSION) $(common_substvars) + b=libgcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_l32gcc) + dh_md5sums -p$(p_l32gcc) + dh_builddeb -p$(p_l32gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +unwind_dir = libunwind-0.98.3 +xxx: $(binary_stamp)-libunwind +$(binary_stamp)-libunwind: + rm -rf $(unwind_dir).tar.gz $(unwind_dir) $(d)-unwind + uudecode libunwind.uue + tar xfz $(unwind_dir).tar.gz + + : Below are several hacks to allow cross-build of libunwind unless + : related bugs both at unwind side and at gcc side are fixed + + : Put pre-built Gcursor_i.h and Lcursor_i.h into src/ ... + cp debian/cross-unwind/[GL]cursor_i.h $(unwind_dir)/src/ + touch $(unwind_dir)/src/[GL]cursor_i.h + + : ... and avoid rebuilding of those files + sed 's/\(@[GL]cursor_i.h\):/\1DISABLE:/g' $(unwind_dir)/src/Makefile.in > $(unwind_dir)/src/Makefile.in.tmp + mv -f $(unwind_dir)/src/Makefile.in.tmp $(unwind_dir)/src/Makefile.in + + : also, alter configure to disable REMOTE_ONLY mode of libunwind + : that is turned on with target!=build + : /manually checked that the following regexp affects only this/ + sed 's/test x\$$target_arch != x\$$build_arch/false/g' $(unwind_dir)/configure > $(unwind_dir)/configure.tmp + mv $(unwind_dir)/configure.tmp $(unwind_dir)/configure + chmod 755 $(unwind_dir)/configure + + : also, patch iseveral files to ensure PATH_MAX is defined + : /limits.h does not include it because of some problem/ + cd $(unwind_dir)/src && patch -p1 < ../../debian/cross-unwind/path_max.patch + + cd $(unwind_dir) && CC="$(PWD)/build/gcc/xgcc -B$(PWD)/build/gcc/" ./configure \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_TARGET_GNU_TYPE) \ + --prefix=/usr + $(MAKE) -C $(unwind_dir) + $(MAKE) -C $(unwind_dir) install DESTDIR=$(PWD)/$(d)-unwind + touch $(binary_stamp)-libunwind --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-ada.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-ada.mk @@ -0,0 +1,196 @@ +arch_binaries := $(arch_binaries) ada +ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) ada-doc +endif + +ifeq ($(with_libgnat),yes) + arch_binaries := $(arch_binaries) libgnat +endif + +p_gnat = gnat-$(GNAT_VERSION) +p_lgnat = libgnat-$(GNAT_VERSION) +p_gnatd = $(p_gnat)-doc + +d_gnat = debian/$(p_gnat) +d_lgnat = debian/$(p_lgnat) +d_gnatd = debian/$(p_gnatd) + +GNAT_TOOLS = gnat gnatbind gnatbl gnatchop gnatclean gnatfind gnatkr gnatlink \ + gnatls gnatmake gnatname gnatprep gnatxref gpr2make gprcmd + +dirs_gnat = \ + $(docdir)/$(p_base)/Ada \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(gcc_lib_dir) \ + $(gcc_lexec_dir) \ + $(PF)/$(libdir)/gnat + +files_gnat = \ + $(PF)/share/gnat \ + $(gcc_lexec_dir)/gnat1 \ + $(gcc_lib_dir)/{adalib,adainclude} \ + $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(i)) + +# $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(i)-$(GNAT_VERSION)) + +dirs_lgnat = \ + $(docdir) \ + $(PF)/lib +files_lgnat = \ + $(PF)/$(libdir)/lib{gnat,gnarl}-$(GNAT_VERSION).so.1 + +update-ada-files: + cd $(builddir) && tar cfj ada-generated.tar.bz2 \ + gcc/ada/{sinfo.h,einfo.h,nmake.ads,nmake.adb,treeprs.ads} + uuencode $(builddir)/ada-generated.tar.bz2 ada-generated.tar.bz2 \ + > debian/patches/ada-generated.uue + +$(binary_stamp)-libgnat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lgnat) + dh_installdirs -p$(p_lgnat) $(dirs_lgnat) + + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_VERSION); \ + mv $(d)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d)/$(PF)/$(libdir)/. ; \ + rm -f $(d)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ + done + + DH_COMPAT=2 dh_movefiles -p$(p_lgnat) $(files_lgnat) + + debian/dh_doclink -p$(p_lgnat) $(p_base) + + debian/dh_rmemptydirs -p$(p_lgnat) + + dh_strip -p$(p_lgnat) + dh_compress -p$(p_lgnat) + dh_fixperms -p$(p_lgnat) + b=libgnat; \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + v=$(GNAT_VERSION); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + + dh_makeshlibs -p$(p_lgnat) -V '$(p_lgnat) (>= $(DEB_SOVERSION))' + cat debian/$(p_lgnat)/DEBIAN/shlibs >> debian/shlibs.local + + mkdir -p debian/$(p_lgnat)/usr/share/lintian/overrides + cp -p debian/$(p_lgnat).overrides \ + debian/$(p_lgnat)/usr/share/lintian/overrides/$(p_lgnat) + + dh_shlibdeps -p$(p_lgnat) + dh_gencontrol -p$(p_lgnat) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_lgnat) + dh_md5sums -p$(p_lgnat) + dh_builddeb -p$(p_lgnat) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +ifeq ($(with_libgnat),yes) +$(binary_stamp)-ada: $(install_stamp) $(binary_stamp)-libgnat +else +$(binary_stamp)-ada: $(install_stamp) +endif + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnat) + dh_installdirs -p$(p_gnat) $(dirs_gnat) + + DH_COMPAT=2 dh_movefiles -p$(p_gnat) $(files_gnat) + +ifeq ($(with_libgnat),yes) + for lib in lib{gnat,gnarl}; do \ + vlib=$$lib-$(GNAT_VERSION); \ + dh_link -p$(p_gnat) \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/adalib/$$vlib.so \ + /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/adalib/$$lib.so; \ + done +endif + + debian/dh_doclink -p$(p_gnat) $(p_base) + + cp -p $(srcdir)/gcc/ada/ChangeLog \ + $(d_gnat)/$(docdir)/$(p_base)/Ada/changelog + + for i in $(GNAT_TOOLS); do \ + case "$$i" in \ + gnat) cp -p debian/gnat.1 $(d_gnat)/$(PF)/share/man/man1/ ;; \ + *) ln -sf gnat.1 $(d_gnat)/$(PF)/share/man/man1/$$i.1; \ + esac; \ + done + + ln -sf gcc$(pkg_ver) $(d_gnat)/$(PF)/bin/gnatgcc + ln -sf gcc$(pkg_ver).1.gz $(d_gnat)/$(PF)/share/man/man1/gnatgcc.1.gz + + mkdir -p $(d_gnat)/usr/share/lintian/overrides + cp -p debian/$(p_gnat).overrides \ + $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) + + debian/dh_rmemptydirs -p$(p_gnat) + + dh_strip -p$(p_gnat) + dh_compress -p$(p_gnat) + dh_fixperms -p$(p_gnat) +ifeq ($(with_libgnat),yes) + dh_shlibdeps -p$(p_gnat) -L $(p_lgnat) -l $(d_lgnat)/$(PF)/$(libdir) +else + dh_shlibdeps -p$(p_gnat) +endif + perl -pi -e 's/, *libgnat[^,]*//' debian/$(p_gnat).substvars + dh_gencontrol -p$(p_gnat) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gnat) + dh_md5sums -p$(p_gnat) + dh_builddeb -p$(p_gnat) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + +ada_info_dir = $(d_gnatd)/$(PF)/share/info + +$(binary_stamp)-ada-doc: $(build_html_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gnatd) + dh_installdirs -p$(p_gnatd) \ + $(docdir)/$(p_base)/Ada \ + $(PF)/share/info + + cd $(ada_info_dir) && \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -o gnat_ugn_unw-$(GNAT_VERSION).info \ + $(builddir)/gcc/doc/gnat_ugn_unw.texi + cd $(ada_info_dir) && \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -o gnat_rm-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/gnat_rm.texi + cd $(ada_info_dir) && \ + makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ + -o gnat-style-$(GNAT_VERSION).info \ + $(srcdir)/gcc/ada/gnat-style.texi + + debian/dh_doclink -p$(p_gnatd) $(p_base) + dh_installdocs -p$(p_gnatd) + rm -f $(d_gnatd)/$(docdir)/$(p_base)/copyright + cp -p html/gnat_ugn_unw.html html/gnat_rm.html html/gnat-style.html \ + $(d_gnatd)/$(docdir)/$(p_base)/Ada/ + + dh_compress -p$(p_gnatd) + dh_fixperms -p$(p_gnatd) + dh_installdeb -p$(p_gnatd) + dh_gencontrol -p$(p_gnatd) -- -v$(DEB_VERSION) $(common_substvars) + dh_md5sums -p$(p_gnatd) + dh_builddeb -p$(p_gnatd) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-cxx-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-cxx-cross.mk @@ -0,0 +1,42 @@ +arch_binaries := $(arch_binaries) cxx + +dirs_cxx = \ + $(docdir) \ + $(PF)/bin \ + $(gcc_lib_dir) \ + $(PF)/share/man/man1 +files_cxx = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver) \ + $(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1 \ + $(gcc_lib_dir)/cc1plus + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + DH_COMPAT=2 dh_movefiles -p$(p_cxx) $(files_cxx) +# g++ man page is a .so link + rm -f $(d_cxx)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1 + ln -sf $(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1.gz + + debian/dh_doclink -p$(p_cxx) $(p_base) + debian/dh_rmemptydirs -p$(p_cxx) + + dh_strip -p$(p_cxx) + dh_compress -p$(p_cxx) + dh_fixperms -p$(p_cxx) + dh_shlibdeps -p$(p_cxx) + dh_gencontrol -p$(p_cxx) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_cxx) + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g;s/gcc/g++/g' < debian/gcc-cross.postinst > debian/$(p_cxx)/DEBIAN/postinst + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g;s/gcc/g++/g' < debian/gcc-cross.prerm > debian/$(p_cxx)/DEBIAN/prerm + chmod 755 debian/$(p_cxx)/DEBIAN/{postinst,prerm} + dh_md5sums -p$(p_cxx) + dh_builddeb -p$(p_cxx) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-cross.mk @@ -0,0 +1,57 @@ +arch_binaries := $(arch_binaries) gcc-cross + +dirs_gcc = \ + $(docdir)/$(p_base)/gcc \ + $(PF)/bin \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 + +files_gcc = \ + $(PF)/bin/{$(GCC_TARGET)-linux-gcc,$(GCC_TARGET)-linux-cpp}$(pkg_ver) \ + $(PF)/share/man/man1/{$(GCC_TARGET)-linux-gcc}$(pkg_ver).1 \ + $(gcc_lib_dir) \ + + +files_gcc += \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) +ifeq ($(with_check),yes) + usr_doc_files += test-summary +endif +ifeq ($(DEB_HOST_ARCH),sparc) + usr_doc_files += debian/README.sparc +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-cross: $(install_stamp) + dh_testdir + dh_testroot + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + $(IS) debian/c89 $(d)/$(PF)/bin/ + $(IR) debian/c89.1 $(d)/$(PF)/share/man/man1/ + + rm -f $(d)/$(PF)/$(libdir)/libgcc_s.so + ln -sf /$(libdir)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s.so + + DH_COMPAT=2 dh_movefiles -p$(p_gcc) $(files_gcc) + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_base) + cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_base)/. + cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_base)/NEWS + dh_undocumented -p$(p_gcc) gccbug$(pkg_ver).1 + debian/dh_rmemptydirs -p$(p_gcc) + dh_strip -p$(p_gcc) + dh_compress -p$(p_gcc) + dh_fixperms -p$(p_gcc) + dh_shlibdeps -p$(p_gcc) + dh_gencontrol -p$(p_gcc) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gcc) + dh_md5sums -p$(p_gcc) + dh_builddeb -p$(p_gcc) + touch $@ + --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-fastjar.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-fastjar.mk @@ -0,0 +1,54 @@ +arch_binaries := $(arch_binaries) fastjar + +p_jar = fastjar +d_jar = debian/$(p_jar) + +dirs_jar = \ + $(docdir)/$(p_jar) \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(PF)/share/info + +files_jar = \ + $(PF)/bin/{fastjar,grepjar} \ + $(PF)/share/man/man1/{fastjar,grepjar}.1 \ + $(PF)/share/info/fastjar.info + +# ---------------------------------------------------------------------- +$(binary_stamp)-fastjar: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_jar) + dh_installdirs -p$(p_jar) $(dirs_jar) + +ifeq ($(versioned_packages),yes) + : # rename versioned files back to unversioned ones. + for i in jar grepjar; do \ + mv $(d)/$(PF)/bin/$$i$(pkg_ver) $(d)/$(PF)/bin/$$i; \ + mv $(d)/$(PF)/share/man/man1/$$i$(pkg_ver).1 \ + $(d)/$(PF)/share/man/man1/$$i.1; \ + done +endif + + mv $(d)/$(PF)/bin/jar $(d)/$(PF)/bin/fastjar + mv $(d)/$(PF)/share/man/man1/jar.1 $(d)/$(PF)/share/man/man1/fastjar.1 + + DH_COMPAT=2 dh_movefiles -p$(p_jar) $(files_jar) + + dh_installdocs -p$(p_jar) $(srcdir)/fastjar/{CHANGES,NEWS,README} + dh_installchangelogs -p$(p_jar) $(srcdir)/fastjar/ChangeLog + + debian/dh_rmemptydirs -p$(p_jar) + + dh_strip -p$(p_jar) + dh_compress -p$(p_jar) + dh_fixperms -p$(p_jar) + dh_shlibdeps -p$(p_jar) + dh_gencontrol -p$(p_jar) -- -v$(DEB_EVERSION) $(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) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libstdcxx-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libstdcxx-cross.mk @@ -0,0 +1,249 @@ +ifeq ($(with_libcxx),yes) + arch_binaries := $(arch_binaries) libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + arch_binaries := $(arch_binaries) lib64stdcxx +endif +ifeq ($(biarch_ia32),yes) + arch_binaries := $(arch_binaries) lib32stdcxx +endif + +ifeq ($(with_cxxdev),yes) + arch_binaries := $(arch_binaries) libstdcxx-dev +endif + +p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) +p_dev = $(p_lib:%$(cross_lib_arch)=%-dev$(cross_lib_arch)) +p_pic = $(p_lib:%$(cross_lib_arch)=%-pic$(cross_lib_arch)) +p_dbg = $(p_lib:%$(cross_lib_arch)=%-dbg$(cross_lib_arch)) +p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) +p_lib32 = lib32stdc++$(CXX_SONAME)$(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) + +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)/$(p_lib) \ + $(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 ($(with_lib64cxx),yes) + dirs_dev += $(gcc_lib_dir)/64/ + files_dev += $(gcc_lib_dir)/64/libstdc++.{a,so} \ + $(gcc_lib_dir)/64/libsupc++.a + dirs_dbg += $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/debug + files_dbg += $(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/debug/libstdc++.* + dirs_pic += $(gcc_lib_dir) + files_pic += $(gcc_lib_dir)/64/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) + + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lib) + 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/$(cross_lib_arch)//g < debian/$(p_lib).substvars > debian/$(p_lib).substvars.fixed + mv debian/$(p_lib).substvars.fixed debian/$(p_lib).substvars + 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_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_rmemptydirs -p$(p_lib64) + + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -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/$(cross_lib_arch)//g < debian/$(p_lib64).substvars > debian/$(p_lib64).substvars.fixed + mv debian/$(p_lib64).substvars.fixed debian/$(p_lib64).substvars + 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_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_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_rmemptydirs -p$(p_lib32) + + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lib32) + dh_compress -p$(p_lib32) + dh_fixperms -p$(p_lib32) + dh_makeshlibs -p$(p_lib32) -V '$(p_lib32) (>= $(DEB_STDCXX_SOVERSION))' -n + 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/$(cross_lib_arch)//g < debian/$(p_lib32).substvars > debian/$(p_lib32).substvars.fixed + mv debian/$(p_lib32).substvars.fixed debian/$(p_lib32).substvars + 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_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) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libstdcxx-dev: $(install_stamp) \ + $(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 ($(with_lib64cxx),yes) + mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/lib*c++*.a $(d)/$(gcc_lib_dir)/64/. + ln -sf ../../../../../lib64/libstdc++.so.$(CXX_SONAME) \ + $(d)/$(gcc_lib_dir)/64/libstdc++.so +endif + + 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) + + 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/ChangeLog \ + $(d_dev)/usr/share/doc/$(p_lib)/changelog + cp -p $(srcdir)/libstdc++-v3/config/linker-map.gnu \ + $(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) -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) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-gcc.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-gcc.mk @@ -0,0 +1,185 @@ +ifeq ($(with_cdev),yes) + arch_binaries := $(arch_binaries) gcc +endif +ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) gcc-doc +endif + +# gcc must be moved after g77 and g++ +# not all files $(PF)/include/*.h are part of gcc, +# but it becomes difficult to name all these files ... + +dirs_gcc = \ + $(docdir)/$(p_base)/gcc \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 $(libdir) + +files_gcc = \ + $(PF)/bin/{gcc,gcov,gccbug}$(pkg_ver) \ + $(PF)/share/man/man1/{gcc,gcov,gccbug}$(pkg_ver).1 \ + $(gcc_lexec_dir)/collect2 \ + $(gcc_lib_dir)/{specs,libgcc*,libgcov.a,*.o} \ + $(gcc_lib_dir)/include/README \ + $(gcc_lib_dir)/include/{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) + +ifeq ($(biarch),yes) + files_gcc += $(gcc_lib_dir)/64/{libgcc*,libgcov.a,*.o} +endif +ifeq ($(biarch32),yes) + files_gcc += $(gcc_lib_dir)/32/{libgcc*,*.o} +endif + +ifeq ($(with_nls),yes) + files_gcc += $(PF)/share/locale/*/*/gcc*.* +endif + +files_gcc += \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(DEB_HOST_ARCH),ia64) + files_gcc += $(gcc_lib_dir)/include/ia64intrin.h +endif + +ifeq ($(DEB_HOST_ARCH),i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif +ifeq ($(DEB_HOST_ARCH),amd64) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_HOST_ARCH),kfreebsd-i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_HOST_ARCH),hurd-i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_HOST_ARCH),m68k) + files_gcc += $(gcc_lib_dir)/include/math-68881.h +endif + +ifeq ($(DEB_HOST_ARCH),powerpc) + files_gcc += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h} +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) +ifeq ($(with_check),yes) + usr_doc_files += test-summary +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + + rm -f $(d)/$(PF)/$(libdir)/libgcc_s.so + ln -sf /$(libdir)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s.so +ifeq ($(biarch),yes) + rm -f $(d)/$(PF)/$(lib64)/libgcc_s.so + dh_link -p$(p_gcc) \ + /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(gcc_lib_dir)/libgcc_s_64.so \ + /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(gcc_lib_dir)/64/libgcc_s_64.so \ + /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(gcc_lib_dir)/64/libgcc_s.so +endif +ifeq ($(biarch32),yes) + mkdir -p $(d_gcc)/$(gcc_lib_dir) + mv $(d)/$(gcc_lib_dir)/32 $(d_gcc)/$(gcc_lib_dir)/ + dh_link -p$(p_gcc) \ + /$(lib32)/libgcc_s.so.$(GCC_SONAME) /$(gcc_lib_dir)/libgcc_s_32.so \ + /$(lib32)/libgcc_s.so.$(GCC_SONAME) /$(gcc_lib_dir)/32/libgcc_s_32.so \ + /$(lib32)/libgcc_s.so.$(GCC_SONAME) /$(gcc_lib_dir)/32/libgcc_s.so +endif + cp -p debian/gccbug.1 $(d)/$(PF)/share/man/man1/gccbug$(pkg_ver).1 + + DH_COMPAT=2 dh_movefiles -p$(p_gcc) $(files_gcc) + + ln -sf gcc$(pkg_ver) \ + $(d_gcc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver) + ln -sf gcc$(pkg_ver).1 \ + $(d_gcc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver).1 + ln -sf gcc$(pkg_ver) \ + $(d_gcc)/$(PF)/bin/$(TARGET_ALIAS)-gcc$(pkg_ver) + ln -sf gcc$(pkg_ver).1 \ + $(d_gcc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gcc$(pkg_ver).1 + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_base) + cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_base)/. + if [ -f testsuite-comparision ]; then \ + cp -p testsuite-comparision $(d_gcc)/$(docdir)/$(p_base)/. ; \ + fi + cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_base)/NEWS + cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_base)/NEWS.html + cp -p $(srcdir)/gcc/ChangeLog \ + $(d_gcc)/$(docdir)/$(p_base)/gcc/changelog + if [ -f $(builddir)/gcc/.bad_compare ]; then \ + ( \ + echo "The comparision of the stage2 and stage3 object files shows differences."; \ + echo "The Debian package was modified to ignore these differences."; \ + echo ""; \ + echo "The following files differ:"; \ + echo ""; \ + cat $(builddir)/gcc/.bad_compare; \ + ) > $(d_gcc)/$(docdir)/$(p_base)/BOOTSTRAP_COMPARISION_FAILURE; \ + else \ + true; \ + fi + debian/dh_rmemptydirs -p$(p_gcc) + dh_strip -p$(p_gcc) + dh_compress -p$(p_gcc) -X README.Bugs + dh_fixperms -p$(p_gcc) + dh_shlibdeps -p$(p_gcc) + dh_gencontrol -p$(p_gcc) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_gcc) + dh_md5sums -p$(p_gcc) + dh_builddeb -p$(p_gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + : # remove empty directories, when all components are in place + for d in `find $(d) -depth -type d -empty 2> /dev/null`; do \ + while rmdir $$d 2> /dev/null; do d=`dirname $$d`; done; \ + done + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_doc) + dh_installdirs -p$(p_doc) \ + $(docdir)/$(p_base) \ + $(PF)/share/info + DH_COMPAT=2 dh_movefiles -p$(p_doc) \ + $(PF)/share/info/gcc* + + debian/dh_doclink -p$(p_doc) $(p_base) + dh_installdocs -p$(p_doc) html/gcc.html html/gccint.html + rm -f $(d_doc)/$(docdir)/$(p_base)/copyright + debian/dh_rmemptydirs -p$(p_doc) + + dh_compress -p$(p_doc) + dh_fixperms -p$(p_doc) + dh_installdeb -p$(p_doc) + dh_gencontrol -p$(p_doc) -- -v$(DEB_VERSION) $(common_substvars) + dh_md5sums -p$(p_doc) + dh_builddeb -p$(p_doc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-fixincl.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-fixincl.mk @@ -0,0 +1,47 @@ +arch_binaries := $(arch_binaries) fixincl + +p_fix = fixincludes +d_fix = debian/$(p_fix) + +dirs_fix = \ + $(docdir)/$(p_base)/fixincludes \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir) +files_fix = \ + $(gcc_lexec_dir)/install-tools \ + $(gcc_lib_dir)/install-tools + +# ---------------------------------------------------------------------- +$(binary_stamp)-fixincl: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_fix) + dh_installdirs -p$(p_fix) $(dirs_fix) + DH_COMPAT=2 dh_movefiles -p$(p_fix) $(files_fix) + +# $(IP) $(builddir)/gcc/fixinc/fixincl $(d_fix)/$(PF)/lib/fixincludes/ +# sed -e "s,^FIXINCL=\(.*\),FIXINCL=/$(PF)/lib/fixincludes/fixincl," \ +# $(builddir)/gcc/fixinc.sh \ +# > $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh +# chmod 755 $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh + $(IR) $(srcdir)/gcc/fixinc/README \ + $(d_fix)/$(docdir)/$(p_base)/fixincludes + sed -e 's,@LIBEXECDIR@,$(gcc_lexec_dir),g' debian/fixincludes.in \ + > $(d_fix)/$(PF)/bin/fixincludes + chmod 755 $(d_fix)/$(PF)/bin/fixincludes + + debian/dh_doclink -p$(p_fix) $(p_base) + dh_strip -p$(p_fix) + dh_compress -p$(p_fix) + dh_fixperms -p$(p_fix) + dh_shlibdeps -p$(p_fix) + dh_gencontrol -p$(p_fix) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_fix) + dh_md5sums -p$(p_fix) + dh_builddeb -p$(p_fix) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-softfloat.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-softfloat.mk @@ -0,0 +1,33 @@ +arch_binaries := $(arch_binaries) softfloat + +p_softfloat = gcc$(pkg_ver)-soft-float +d_softfloat = debian/$(p_softfloat) + +dirs_softfloat = \ + $(PF)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +files_softfloat = \ + $(PF)/$(libdir)/soft-float \ + $(gcc_lib_dir)/soft-float + +# ---------------------------------------------------------------------- +$(binary_stamp)-softfloat: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_softfloat) + dh_installdirs -p$(p_softfloat) $(dirs_softfloat) + DH_COMPAT=2 dh_movefiles -p$(p_softfloat) $(files_softfloat) + debian/dh_doclink -p$(p_softfloat) $(p_base) + dh_strip -p$(p_softfloat) -Xlibgcj.a + dh_compress -p$(p_softfloat) + dh_fixperms -p$(p_softfloat) + dh_shlibdeps -p$(p_softfloat) + dh_gencontrol -p$(p_softfloat) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_softfloat) + dh_md5sums -p$(p_softfloat) + dh_builddeb -p$(p_softfloat) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-treelang.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-treelang.mk @@ -0,0 +1,55 @@ +arch_binaries := $(arch_binaries) treelang + +p_tree = treelang$(pkg_ver) +d_tree = debian/$(p_tree) + +dirs_tree = \ + $(docdir)/$(p_base)/treelang \ + $(gcc_lexec_dir) \ + $(PF)/bin \ + $(PF)/share/info + +files_tree = \ + $(PF)/bin/tree1$(pkg_ver) \ + $(gcc_lexec_dir)/tree1 + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_tree += \ + $(PF)/share/info/treelang* +endif + +$(binary_stamp)-treelang: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_tree) + dh_installdirs -p$(p_tree) $(dirs_tree) + DH_COMPAT=2 dh_movefiles -p$(p_tree) $(files_tree) + + debian/dh_doclink -p$(p_tree) $(p_base) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_tree) + rm -f $(d_tree)/$(docdir)/$(p_base)/copyright + cp -p html/treelang.html $(d_tree)/$(docdir)/$(p_base)/treelang/ +endif + cp -p $(srcdir)/gcc/treelang/README \ + $(d_tree)/$(docdir)/$(p_base)/treelang/. + cp -p $(srcdir)/gcc/treelang/ChangeLog \ + $(d_tree)/$(docdir)/$(p_base)/treelang/changelog + cp -p debian/README.treelang \ + $(d_tree)/$(docdir)/$(p_base)/treelang/README.Debian + + debian/dh_rmemptydirs -p$(p_tree) + + dh_strip -p$(p_tree) + dh_compress -p$(p_tree) + + dh_fixperms -p$(p_tree) + dh_shlibdeps -p$(p_tree) + dh_gencontrol -p$(p_tree) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_tree) + dh_md5sums -p$(p_tree) + dh_builddeb -p$(p_tree) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-hppa64.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-hppa64.mk @@ -0,0 +1,21 @@ +arch_binaries := $(arch_binaries) hppa64 + +# ---------------------------------------------------------------------- +$(binary_stamp)-hppa64: $(install_hppa64_stamp) + dh_testdir + dh_testroot + +# dh_installdirs -p$(p_hppa64) + debian/dh_doclink -p$(p_hppa64) $(p_base) + debian/dh_rmemptydirs -p$(p_hppa64) + + dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a + dh_compress -p$(p_hppa64) + dh_fixperms -p$(p_hppa64) + dh_shlibdeps -p$(p_hppa64) + dh_gencontrol -p$(p_hppa64) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_hppa64) + dh_md5sums -p$(p_hppa64) + dh_builddeb -p$(p_hppa64) + + touch $@ --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-cxx.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-cxx.mk @@ -0,0 +1,52 @@ +arch_binaries := $(arch_binaries) cxx + +dirs_cxx = \ + $(docdir)/$(p_base)/C++ \ + $(PF)/bin \ + $(PF)/share/info \ + $(gcc_lexec_dir) \ + $(PF)/share/man/man1 +files_cxx = \ + $(PF)/bin/g++$(pkg_ver) \ + $(PF)/share/man/man1/g++$(pkg_ver).1 \ + $(gcc_lexec_dir)/cc1plus + +# ---------------------------------------------------------------------- +$(binary_stamp)-cxx: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cxx) + dh_installdirs -p$(p_cxx) $(dirs_cxx) + DH_COMPAT=2 dh_movefiles -p$(p_cxx) $(files_cxx) +# g++ man page is a .so link + rm -f $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1 + ln -sf gcc$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz + + ln -sf g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver) + ln -sf g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1.gz + ln -sf g++$(pkg_ver) \ + $(d_cxx)/$(PF)/bin/$(TARGET_ALIAS)-g++$(pkg_ver) + ln -sf g++$(pkg_ver).1.gz \ + $(d_cxx)/$(PF)/share/man/man1/$(TARGET_ALIAS)-g++$(pkg_ver).1.gz + + debian/dh_doclink -p$(p_cxx) $(p_base) + cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_base)/C++/ + cp -p $(srcdir)/gcc/cp/ChangeLog \ + $(d_cxx)/$(docdir)/$(p_base)/C++/changelog + debian/dh_rmemptydirs -p$(p_cxx) + + dh_strip -p$(p_cxx) + dh_compress -p$(p_cxx) + dh_fixperms -p$(p_cxx) + dh_shlibdeps -p$(p_cxx) + dh_gencontrol -p$(p_cxx) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_cxx) + dh_md5sums -p$(p_cxx) + dh_builddeb -p$(p_cxx) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-pascal.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-pascal.mk @@ -0,0 +1,100 @@ +arch_binaries := $(arch_binaries) pascal +indep_binaries := $(indep_binaries) pascal-doc + +p_gpc = gpc$(gpc_pkg_ver) +p_gpcd = gpc$(gpc_pkg_ver)-doc + +d_gpc = debian/$(p_gpc) +d_gpcd = debian/$(p_gpcd) + +dirs_gpc = \ + $(docdir)/$(p_base)/pascal \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/{include,units} \ + $(PF)/share/man/man1 +ifeq ($(with_gpidump),yes) + files_gpc = \ + $(PF)/bin/{binobj,gpc,gpc-run,gpidump}$(gpc_pkg_ver) \ + $(PF)/share/man/man1/{binobj,gpc,gpc-run,gpidump}$(gpc_pkg_ver).1 \ + $(gcc_lexec_dir)/gpc1 \ + $(gcc_lib_dir)/{libgpc.a,units} \ + $(gcc_lib_dir)/include/gpc-in-c.h +else + files_gpc = \ + $(PF)/bin/{binobj,gpc,gpc-run}$(gpc_pkg_ver) \ + $(PF)/share/man/man1/{binobj,gpc,gpc-run}$(gpc_pkg_ver).1 \ + $(gcc_lexec_dir)/gpc1 \ + $(gcc_lib_dir)/{libgpc.a,units} \ + $(gcc_lib_dir)/include/gpc-in-c.h +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-pascal: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gpc) + dh_installdirs -p$(p_gpc) $(dirs_gpc) + + rm -f $(d)/$(PF)/bin/pc $(d)/$(PF)/share/man/man1/pc.1 + DH_COMPAT=2 dh_movefiles -p$(p_gpc) $(files_gpc) + + debian/dh_doclink -p$(p_gpc) $(p_base) + cp -p $(srcdir)/gcc/p/{AUTHORS,FAQ,NEWS,README} \ + $(d_gpc)/$(docdir)/$(p_base)/pascal/. + cp -p $(srcdir)/gcc/p/test/README \ + $(d_gpc)/$(docdir)/$(p_base)/pascal/README.gpc-test + cp -p $(srcdir)/gcc/p/ChangeLog \ + $(d_gpc)/$(docdir)/$(p_base)/pascal/changelog + +# ln -sf ../$(p_gpc)/examples $(d_gpcd)/$(docdir)/$(p_gpcd)/examples +# ln -sf ../$(p_gpc)/docdemos $(d_gpcd)/$(docdir)/$(p_gpcd)/docdemos + + dh_strip -p$(p_gpc) + dh_compress -p$(p_gpc) + dh_fixperms -p$(p_gpc) + dh_shlibdeps -p$(p_gpc) + dh_gencontrol -p$(p_gpc) -- -v$(DEB_GPC_VERSION) $(common_substvars) + dh_installdeb -p$(p_gpc) + dh_md5sums -p$(p_gpc) + dh_builddeb -p$(p_gpc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-pascal-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gpcd) + dh_installdirs -p$(p_gpcd) \ + $(docdir)/$(p_base)/pascal \ + $(PF)/share/info + DH_COMPAT=2 dh_movefiles -p$(p_gpcd) \ + $(PF)/share/info/gpc*$(gpc_pkg_ver)*info* + debian/dh_doclink -p$(p_gpcd) $(p_base) + dh_installdocs -p$(p_gpcd) + rm -f $(d_gpcd)/$(docdir)/$(p_base)/copyright + cp -p html/gpc.html html/gpcs.html \ + $(d_gpcd)/$(docdir)/$(p_base)/pascal/ + mv $(d)/$(PF)/doc/gpc/demos \ + $(d_gpcd)/$(docdir)/$(p_base)/pascal/examples + mv $(d)/$(PF)/doc/gpc/docdemos \ + $(d_gpcd)/$(docdir)/$(p_base)/pascal/. + +# -$(MAKE) -C $(builddir)/gcc gpc.ps +# cp -p $(builddir)/gcc/gpc.ps $(d_gpcd)/$(docdir)/$(p_base)/pascal/. + + debian/dh_rmemptydirs -p$(p_gpcd) + + dh_compress -p$(p_gpcd) + dh_fixperms -p$(p_gpcd) + dh_installdeb -p$(p_gpcd) + dh_gencontrol -p$(p_gpcd) -- -v$(DEB_GPC_VERSION) $(common_substvars) + dh_md5sums -p$(p_gpcd) + dh_builddeb -p$(p_gpcd) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-proto.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-proto.mk @@ -0,0 +1,43 @@ +arch_binaries := $(arch_binaries) proto + +p_proto = protoize +d_proto = debian/$(p_proto) + +dirs_proto = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin +files_proto = \ + $(PF)/bin/{protoize,unprotoize} \ + $(PF)/share/man/man1/{protoize,unprotoize}.1 + +# ---------------------------------------------------------------------- +$(binary_stamp)-proto: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_proto) + dh_installdirs -p$(p_proto) $(dirs_proto) + +ifeq ($(versioned_packages),yes) + : # rename versioned files back to unversioned ones. + for i in protoize unprotoize; do \ + mv $(d)/$(PF)/bin/$$i$(pkg_ver) $(d)/$(PF)/bin/$$i; \ + done +endif + $(IR) debian/protoize.1 $(d)/$(PF)/share/man/man1/ + ln -sf protoize.1 $(d)/$(PF)/share/man/man1/unprotoize.1 + DH_COMPAT=2 dh_movefiles -p$(p_proto) $(files_proto) + + debian/dh_doclink -p$(p_proto) $(p_base) + dh_strip -p$(p_proto) + dh_compress -p$(p_proto) + dh_fixperms -p$(p_proto) + dh_shlibdeps -p$(p_proto) + dh_gencontrol -p$(p_proto) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_proto) + dh_md5sums -p$(p_proto) + dh_builddeb -p$(p_proto) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libobjc.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libobjc.mk @@ -0,0 +1,67 @@ +ifeq ($(with_objcdev),yes) + arch_binaries := $(arch_binaries) libobjc +endif + +p_lobjc = libobjc$(OBJC_SONAME) +d_lobjc = debian/$(p_lobjc) + +dirs_lobjc = \ + $(docdir)/objc \ + $(PF)/$(libdir) +files_lobjc = \ + $(PF)/$(libdir)/libobjc.so.* +ifeq ($(with_objc_gc),yes) + files_lobjc += \ + $(PF)/$(libdir)/libobjc_gc.so.* +endif + +ifeq ($(with_lib64objc),yes) + dirs_lobjc += $(PF)/$(lib64) + files_lobjc += $(PF)/$(lib64)/libobjc.so.* + ifeq ($(with_objc_gc),yes) + files_lobjc += $(PF)/$(lib64)/libobjc_gc.so.* + endif +endif + + +$(binary_stamp)-libobjc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lobjc) + dh_installdirs -p$(p_lobjc) $(dirs_lobjc) +# mv $(d)/$(gcc_lib_dir)/libobjc.so.* $(d)/$(PF)/$(libdir)/. +#ifeq ($(with_objc_gc),yes) +# mv $(d)/$(gcc_lib_dir)/libobjc_gc.so.* $(d)/$(PF)/$(libdir)/. +#endif + DH_COMPAT=2 dh_movefiles -p$(p_lobjc) $(files_lobjc) + + dh_installdocs -p$(p_lobjc) + echo "See /$(docdir)/$(p_base) for more information" \ + > $(d_lobjc)/$(docdir)/$(p_lobjc)/README.Debian + dh_installchangelogs -p$(p_lobjc) $(srcdir)/libobjc/ChangeLog + + debian/dh_rmemptydirs -p$(p_lobjc) + + dh_strip -p$(p_lobjc) + dh_compress -p$(p_lobjc) + + dh_fixperms -p$(p_lobjc) + b=libobjc; \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev -dbg; do \ + v=$(OBJC_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + dh_makeshlibs -p$(p_lobjc) -V '$(p_lobjc) (>= $(DEB_SOEVERSION))' + dh_shlibdeps -p$(p_lobjc) + dh_gencontrol -p$(p_lobjc) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_lobjc) + dh_md5sums -p$(p_lobjc) + dh_builddeb -p$(p_lobjc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-cpp-cross.mk +++ gcc-3.4-3.4.6/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) + --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-nof-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-nof-cross.mk @@ -0,0 +1,46 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_arch)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(PF)/$(DEB_TARGET_GNU_TYPE)/lib/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + lib/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + ln -sf /$(PF)/$(DEB_TARGET_GNU_TYPE)/lib/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + DH_COMPAT=2 dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_base) + dh_strip -p$(p_nof) + dh_compress -p$(p_nof) + dh_fixperms -p$(p_nof) + dh_gencontrol -p$(p_nof) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_nof) + dh_md5sums -p$(p_nof) + dh_builddeb -p$(p_nof) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-base.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-base.mk @@ -0,0 +1,24 @@ +arch_binaries := base $(arch_binaries) + +# --------------------------------------------------------------------------- +# gcc-base + +$(binary_stamp)-base: $(install_dependencies) + dh_testdir + dh_testroot + rm -rf $(d_base) + dh_installdirs -p$(p_base) + dh_installdocs -p$(p_base) + cp -p debian/NEWS.sarge $(d_base)/usr/share/doc/$(p_base)/NEWS.Debian +ifeq ($(with_base_only),yes) + dh_installchangelogs -p$(p_base) +else + dh_installchangelogs -p$(p_base) $(srcdir)/ChangeLog +endif + dh_compress -p$(p_base) + dh_fixperms -p$(p_base) + dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_base) + dh_md5sums -p$(p_base) + dh_builddeb -p$(p_base) + touch $@ --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-objc.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-objc.mk @@ -0,0 +1,51 @@ +arch_binaries := $(arch_binaries) objc + +p_objc = gobjc$(pkg_ver) +d_objc = debian/$(p_objc) + +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,libobjc*.la} + +$(binary_stamp)-objc: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(PF)/$(libdir)/libobjc*.{a,la} $(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/. + + 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) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-java.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-java.mk @@ -0,0 +1,304 @@ +ifeq ($(with_java),yes) + arch_binaries := $(arch_binaries) java + indep_binaries := $(indep_binaries) gcjjar +endif + +ifeq ($(with_common_libs),yes) + indep_binaries := $(indep_binaries) libgcj-common +endif + +ifeq ($(with_javadev),yes) + arch_binaries := $(arch_binaries) javadev +endif + +p_gcj = gcj$(pkg_ver) +p_gij = gij$(pkg_ver) +p_jcom = libgcj-common +p_jlib = libgcj$(GCJ_SONAME) +p_jlibc = libgcj$(GCJ_SONAME)-common +p_jlibx = libgcj$(GCJ_SONAME)-awt +p_jdev = libgcj$(GCJ_SONAME)-dev + +d_gcj = debian/$(p_gcj) +d_gij = debian/$(p_gij) +d_jcom = debian/$(p_jcom) +d_jlib = debian/$(p_jlib) +d_jlibc = debian/$(p_jlibc) +d_jlibx = debian/$(p_jlibx) +d_jdev = debian/$(p_jdev) + +dirs_gcj = \ + $(docdir)/$(p_base)/java \ + $(PF)/bin \ + $(PF)/share/man/man1 \ + $(PF)/share/info \ + $(gcc_lexec_dir) +files_gcj = \ + $(PF)/bin/{gcj,gcjh,jv-convert,jv-scan,jcf-dump,rmic}$(pkg_ver) \ + $(PF)/share/man/man1/{gcj,gcjh,jv-convert,jv-scan,jcf-dump,rmic}$(pkg_ver).1 \ + $(gcc_lexec_dir)/{jc1,jvgenmain} + +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_gcj += \ + $(PF)/share/info/gcj* +endif + +dirs_gij = \ + $(docdir)/$(p_base)/java \ + $(PF)/bin \ + $(PF)/share/man/man1 + +files_gij = \ + $(PF)/bin/{gij,rmiregistry}$(pkg_ver) \ + $(PF)/share/man/man1/{gij,rmiregistry}$(pkg_ver).1 + +dirs_jcom = \ + $(PF)/$(libdir) + +files_jcom = \ + $(PF)/$(libdir)/security + +dirs_jlib = \ + $(docdir)/$(p_jlib) \ + $(PF)/$(libdir) + +files_jlib = \ + $(PF)/$(libdir)/libgcj*.so.* \ + $(PF)/$(libdir)/lib-org-*.so.* + +dirs_jlibc = \ + $(docdir)/$(p_jlib) \ + $(PF)/share/java + +files_jlibc = \ + $(PF)/share/java/libgcj-$(VER).jar + +dirs_jlibx = \ + $(docdir)/$(p_jlib) \ + $(PF)/$(libdir) \ + $(PF)/share/java + +files_jlibx = \ + $(PF)/lib/lib-gnu-java-awt*.so.* + +dirs_jdev = \ + $(docdir)/$(p_jlib)/examples \ + $(PF)/include \ + $(PF)/$(libdir) \ + $(gcc_lib_dir)/include/gcj + +files_jdev = \ + $(PF)/include/{gcj,java,javax,jni.h,jvmpi.h} \ + $(PF)/include/gnu/{awt,classpath,gcj,java,javax} \ + $(PF)/$(libdir)/libgcj*.{a,la} \ + $(PF)/$(libdir)/{libgcj*.so,libgcj.spec} \ + $(gcc_lib_dir)/include/gcj/libgcj-config.h \ + $(PF)/$(libdir)/pkgconfig/libgcj.pc \ + $(PF)/$(libdir)/lib-gnu-*.{a,la} \ + $(PF)/$(libdir)/lib-gnu-*.so \ + $(PF)/$(libdir)/lib-org-*.{a,la} \ + $(PF)/$(libdir)/lib-org-*.so + +ifeq ($(with_lib64gcj),yes) + dirs_jlib += $(PF)/$(lib64) + files_jlib += $(PF)/$(lib64)/libgcj*.so.* \ + $(PF)/$(lib64)/lib-org-*.so.* + + dirs_jlibx += $(PF)/$(lib64) + files_jlibx += $(PF)/$(lib64)/lib-gnu-java-awt-*.so.* + + dirs_jdev += $(PF)/$(lib64) + files_jdev += $(PF)/$(lib64)/libgcj*.{a,so,la} \ + $(PF)/$(lib64)/lib-gnu-*.{a,so,la} \ + $(PF)/$(lib64)/lib-org-*.{a,so,la} +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgcj-common: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + dh_installdirs -p$(p_jcom) $(dirs_jcom) + [ -d $(d)/$(PF)/$(libdir)/security ] \ + || mkdir -p $(d)/$(PF)/$(libdir)/security + [ -f $(d)/$(PF)/$(libdir)/security/classpath.security ] || \ + cp $(srcdir)/libjava/java/security/*.security \ + $(d)/$(PF)/$(libdir)/security/. + DH_COMPAT=2 dh_movefiles -p$(p_jcom) $(files_jcom) + debian/dh_doclink -p$(p_jcom) $(p_base) + debian/dh_rmemptydirs -p$(p_jcom) + dh_compress -p$(p_jcom) + dh_fixperms -p$(p_jcom) + dh_gencontrol -p$(p_jcom) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_jcom) + dh_md5sums -p$(p_jcom) + dh_builddeb -p$(p_jcom) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcjjar: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + dh_installdirs -p$(p_jlibc) $(dirs_jlibc) + DH_COMPAT=2 dh_movefiles -p$(p_jlibc) $(files_jlibc) + debian/dh_doclink -p$(p_jlibc) $(p_base) + debian/dh_rmemptydirs -p$(p_jlibc) + dh_compress -p$(p_jlibc) + dh_fixperms -p$(p_jlibc) + dh_gencontrol -p$(p_jlibc) -u-v$(DEB_VERSION) + cp -p debian/libgcj5-common.preinst.in debian/libgcj5-common.preinst + dh_installdeb -p$(p_jlibc) + dh_md5sums -p$(p_jlibc) + dh_builddeb -p$(p_jlibc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-java: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + dh_installdirs -p$(p_gij) $(dirs_gij) + dh_installdirs -p$(p_jlib) $(dirs_jlib) + dh_installdirs -p$(p_jlibx) $(dirs_jlibx) + + DH_COMPAT=2 dh_movefiles -p$(p_gij) $(files_gij) + DH_COMPAT=2 dh_movefiles -p$(p_jlib) $(files_jlib) + DH_COMPAT=2 dh_movefiles -p$(p_jlibx) $(files_jlibx) + + debian/dh_doclink -p$(p_gij) $(p_base) + dh_installdocs -p$(p_jlib) $(srcdir)/libjava/{NEWS,README,THANKS} + dh_installchangelogs -p$(p_jlib) + debian/dh_doclink -p$(p_jlibx) $(p_jlib) + + cp -p debian/gij-wrapper $(d_gij)/$(PF)/bin/gij-wrapper$(pkg_ver) + chmod 755 $(d_gij)/$(PF)/bin/gij-wrapper$(pkg_ver) + cp -p debian/gij-wrapper.1 \ + $(d_gij)/$(PF)/share/man/man1/gij-wrapper$(pkg_ver).1 + + debian/dh_rmemptydirs -p$(p_gij) + debian/dh_rmemptydirs -p$(p_jlib) + debian/dh_rmemptydirs -p$(p_jlibx) + + dh_makeshlibs -p$(p_jlib) -V '$(p_jlib) (>= $(DEB_SOVERSION))' + cat debian/$(p_jlib)/DEBIAN/shlibs >> debian/shlibs.local + + dh_makeshlibs -p$(p_jlibx) -V '$(p_jlibx) (>= $(DEB_SOVERSION))' + + dh_strip -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + dh_compress -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + dh_fixperms -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) +# the libstdc++ binary packages aren't built yet ... + echo 'libstdc++ $(CXX_SONAME) $(p_lib) (>= $(DEB_STDCXX_SOVERSION))' \ + >> debian/shlibs.local +# dh_shlibdeps finds libgcc in lib64gcc1 ... move it away for a moment ... + -[ -d $(d_l64gcc) ] && mv $(d_l64gcc) $(d_l64gcc).away + dh_shlibdeps \ + -L$(p_lgcc) \ + -L$(p_jlib) \ + -l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \ + -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + -[ -d $(d_l64gcc).away ] && mv $(d_l64gcc).away $(d_l64gcc) + sed -e 's/$(p_jlib)[^,]*//' -e 's/, *,/,/' debian/$(p_jlib).substvars \ + >> debian/$(p_jlib).substvars.tmp \ + && mv -f debian/$(p_jlib).substvars.tmp debian/$(p_jlib).substvars + dh_gencontrol \ + -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) \ + -- -v$(DEB_VERSION) $(common_substvars) + b=libgcj; \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -awt -dev; do \ + v=$(GCJ_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + dh_installdeb -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + dh_md5sums -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + dh_builddeb -p$(p_gij) -p$(p_jlib) -p$(p_jlibx) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-javadev: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcj) + dh_installdirs -p$(p_gcj) $(dirs_gcj) + dh_installdirs -p$(p_jdev) $(dirs_jdev) + + DH_COMPAT=2 dh_movefiles -p$(p_gcj) $(files_gcj) + DH_COMPAT=2 dh_movefiles -p$(p_jdev) $(files_jdev) + + ln -sf gcj$(pkg_ver) \ + $(d_gcj)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gcj$(pkg_ver) + ln -sf gcj$(pkg_ver).1 \ + $(d_gcj)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gcj$(pkg_ver).1 + ln -sf gcj$(pkg_ver) \ + $(d_gcj)/$(PF)/bin/$(TARGET_ALIAS)-gcj$(pkg_ver) + ln -sf gcj$(pkg_ver).1 \ + $(d_gcj)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gcj$(pkg_ver).1 + + debian/dh_doclink -p$(p_gcj) $(p_base) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_gcj) + rm -f $(d_gcj)/$(docdir)/$(p_base)/copyright + cp -p html/gcj.html $(d_gcj)/$(docdir)/$(p_base)/java/ +endif + cp -p $(srcdir)/libjava/doc/cni.sgml $(d_jdev)/$(docdir)/$(p_jlib)/. + debian/dh_doclink -p$(p_jdev) $(p_jlib) + cp -p debian/FAQ.gcj $(d_gcj)/$(docdir)/$(p_base)/java/. + cp -p $(srcdir)/gcc/java/ChangeLog \ + $(d_gcj)/$(docdir)/$(p_base)/java/changelog + cp -p $(srcdir)/libjava/ChangeLog \ + $(d_jdev)/$(docdir)/$(p_jlib)/changelog + + cp -p $(srcdir)/libjava/gnu/java/awt/peer/gtk/Test* \ + debian/testswing.java \ + $(d_jdev)/$(docdir)/$(p_jlib)/examples + + cp -p debian/gcj-wrapper $(d_gcj)/$(PF)/bin/gcj-wrapper$(pkg_ver) + chmod 755 $(d_gcj)/$(PF)/bin/gcj-wrapper$(pkg_ver) + cp -p debian/gcj-wrapper.1 \ + $(d_gcj)/$(PF)/share/man/man1/gcj-wrapper$(pkg_ver).1 + + cp -p debian/gcjh-wrapper $(d_gcj)/$(PF)/bin/gcjh-wrapper$(pkg_ver) + chmod 755 $(d_gcj)/$(PF)/bin/gcjh-wrapper$(pkg_ver) + cp -p debian/gcjh-wrapper.1 \ + $(d_gcj)/$(PF)/share/man/man1/gcjh-wrapper$(pkg_ver).1 + + debian/dh_rmemptydirs -p$(p_gcj) + debian/dh_rmemptydirs -p$(p_jdev) + + dh_strip -p$(p_gcj) -p$(p_jdev) + dh_compress -p$(p_gcj) -p$(p_jdev) -X.java + dh_fixperms -p$(p_gcj) -p$(p_jdev) + dh_shlibdeps \ + -L$(p_lgcc) \ + -l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \ + -p$(p_gcj) -p$(p_jdev) + dh_gencontrol \ + -p$(p_gcj) -p$(p_jdev) \ + -- -v$(DEB_VERSION) $(common_substvars) + b=libgcj; \ + for ext in preinst postinst prerm postrm; do \ + for t in '' -dev; do \ + v=$(GCJ_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + dh_installdeb -p$(p_gcj) -p$(p_jdev) + dh_md5sums -p$(p_gcj) -p$(p_jdev) + dh_builddeb -p$(p_gcj) -p$(p_jdev) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-cpp.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-cpp.mk @@ -0,0 +1,75 @@ +arch_binaries := $(arch_binaries) cpp +ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) cpp-doc +endif + +dirs_cpp = \ + $(docdir) \ + $(PF)/share/man/man1 \ + $(PF)/bin \ + $(gcc_lexec_dir) + +files_cpp = \ + $(PF)/bin/cpp$(pkg_ver) \ + $(PF)/share/man/man1/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) + + ln -sf cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver) + ln -sf cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver).1 + ln -sf cpp$(pkg_ver) \ + $(d_cpp)/$(PF)/bin/$(TARGET_ALIAS)-cpp$(pkg_ver) + ln -sf cpp$(pkg_ver).1 \ + $(d_cpp)/$(PF)/share/man/man1/$(TARGET_ALIAS)-cpp$(pkg_ver).1 + + 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) + dh_md5sums -p$(p_cpp) + dh_builddeb -p$(p_cpp) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_cppd) + dh_installdirs -p$(p_cppd) \ + $(docdir)/$(p_base) \ + $(PF)/share/info + DH_COMPAT=2 dh_movefiles -p$(p_cppd) \ + $(PF)/share/info/cpp* + + debian/dh_doclink -p$(p_cppd) $(p_base) + dh_installdocs -p$(p_cppd) html/cpp.html html/cppinternals.html + rm -f $(d_cppd)/$(docdir)/$(p_base)/copyright + debian/dh_rmemptydirs -p$(p_cppd) + + dh_compress -p$(p_cppd) + dh_fixperms -p$(p_cppd) + dh_installdeb -p$(p_cppd) + dh_gencontrol -p$(p_cppd) -- -v$(DEB_VERSION) $(common_substvars) + dh_md5sums -p$(p_cppd) + dh_builddeb -p$(p_cppd) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-nof.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-nof.mk @@ -0,0 +1,56 @@ +arch_binaries := $(arch_binaries) nof + +p_nof = gcc$(pkg_ver)-nof +d_nof = debian/$(p_nof) + +dirs_nof = \ + $(docdir) \ + $(PF)/$(libdir)/nof +ifeq ($(with_cdev),yes) + dirs_nof += \ + $(gcc_lib_dir)/nof +endif + +ifeq ($(with_cdev),yes) + files_nof = \ + $(libdir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(gcc_lib_dir)/libgcc_s_nof.so \ + $(PF)/$(libdir)/nof \ + $(gcc_lib_dir)/nof +else + files_nof = \ + $(libdir)/libgcc_s_nof.so.$(GCC_SONAME) +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-nof: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + mv $(d)/$(PF)/$(libdir)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libdir)/. + rm -f $(d)/$(PF)/$(libdir)/libgcc_s_nof.so + ln -sf /$(libdir)/libgcc_s_nof.so.$(GCC_SONAME) \ + $(d)/$(gcc_lib_dir)/libgcc_s_nof.so + + rm -rf $(d_nof) + dh_installdirs -p$(p_nof) $(dirs_nof) + DH_COMPAT=2 dh_movefiles -p$(p_nof) $(files_nof) + debian/dh_doclink -p$(p_nof) $(p_base) + dh_strip -p$(p_nof) + dh_compress -p$(p_nof) + dh_fixperms -p$(p_nof) + dh_shlibdeps -p$(p_nof) + + dh_makeshlibs -p$(p_nof) + : # Only keep the shlibs file for the libgcc_s_nof library + fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ + > debian/$(p_nof)/DEBIAN/shlibs.tmp + mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs + + dh_gencontrol -p$(p_nof) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_nof) + dh_md5sums -p$(p_nof) + dh_builddeb -p$(p_nof) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-gcc-cross.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-gcc-cross.mk @@ -0,0 +1,106 @@ +arch_binaries := $(arch_binaries) gcc + +# gcc must be moved after g77 and g++ +# not all files $(PF)/include/*.h are part of gcc, +# but it becomes difficult to name all these files ... + +dirs_gcc = \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include \ + $(PF)/share/man/man1 $(libdir) + +files_gcc = \ + $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver) \ + $(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gcc$(pkg_ver).1 \ + $(gcc_lexec_dir)/collect2 \ + $(gcc_lib_dir)/{specs,libgcc*,*.o} \ + $(gcc_lib_dir)/include/README \ + $(gcc_lib_dir)/include/{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) + +ifeq ($(biarch),yes) + files_gcc += $(gcc_lib_dir)/64/{libgcc*,*.o} +endif + +files_gcc += \ + $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ + && echo $(gcc_lib_dir)/SYSCALLS.c.X) + +ifeq ($(DEB_TARGET_ARCH),ia64) + files_gcc += $(gcc_lib_dir)/include/ia64intrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),hurd-i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),kfreebsd-i386) + files_gcc += $(gcc_lib_dir)/include/{,e,p,x}mmintrin.h +endif + +ifeq ($(DEB_TARGET_ARCH),m68k) + files_gcc += $(gcc_lib_dir)/include/math-68881.h +endif + +ifeq ($(DEB_TARGET_ARCH),powerpc) + files_gcc += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h} +endif + +usr_doc_files = debian/README.Bugs \ + $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) +ifeq ($(with_check),yes) + usr_doc_files += test-summary +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_gcc) + dh_installdirs -p$(p_gcc) $(dirs_gcc) + + rm -f $(d)/$(PF)/$(libdir)/libgcc_s.so + ln -sf /$(PF)/$(DEB_TARGET_GNU_TYPE)/$(libdir)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s.so +ifeq ($(biarch),yes) + rm -f $(d)/$(PF)/$(lib64)/libgcc_s.so + ln -sf /$(PF)/$(DEB_TARGET_GNU_TYPE)/$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s_64.so + ln -sf /$(PF)/$(DEB_TARGET_GNU_TYPE)/$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/64/libgcc_s.so +endif + + DH_COMPAT=2 dh_movefiles -p$(p_gcc) $(files_gcc) + +# dh_installdebconf + debian/dh_doclink -p$(p_gcc) $(p_base) + debian/dh_rmemptydirs -p$(p_gcc) + PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_gcc) + dh_compress -p$(p_gcc) + dh_fixperms -p$(p_gcc) + dh_shlibdeps -p$(p_gcc) + dh_gencontrol -p$(p_gcc) -- -v$(DEB_VERSION) $(common_substvars) + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g' < debian/gcc-cross.postinst > debian/$(p_gcc)/DEBIAN/postinst + sed 's/cross-/$(TP)/g;s/-ver/$(pkg_ver)/g' < debian/gcc-cross.prerm > debian/$(p_gcc)/DEBIAN/prerm + chmod 755 debian/$(p_gcc)/DEBIAN/{postinst,prerm} + dh_installdeb -p$(p_gcc) + dh_md5sums -p$(p_gcc) + dh_builddeb -p$(p_gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + + : # remove empty directories, when all components are in place + for d in `find $(d) -depth -type d -empty 2> /dev/null`; do \ + while rmdir $$d 2> /dev/null; do d=`dirname $$d`; done; \ + done + + @echo "Listing installed files not included in any package:" + -find $(d) ! -type d + --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libffi.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libffi.mk @@ -0,0 +1,72 @@ +arch_binaries := $(arch_binaries) libffi + +p_ffi = libffi$(FFI_SONAME) +p_ffid = libffi$(FFI_SONAME)-dev + +d_ffi = debian/$(p_ffi) +d_ffid = debian/$(p_ffid) + +dirs_ffi = \ + $(docdir)/$(p_ffi) \ + $(PF)/$(libdir) +files_ffi = \ + $(PF)/$(libdir)/libffi.so.* + +dirs_ffid = \ + $(docdir) \ + $(PF)/include \ + $(gcc_lib_dir)/include +files_ffid = \ + $(gcc_lib_dir)/include/libffi \ + $(PF)/include/{ffi.h,ffitarget.h} \ + $(PF)/$(libdir)/libffi.{a,so,la} + +ifeq ($(biarch),yes) + dirs_ffi += $(PF)/$(lib64) + files_ffi += $(PF)/$(lib64)/libffi.so.* + dirs_ffid += $(PF)/$(lib64) + files_ffid += $(PF)/$(lib64)/libffi.{a,so,la} +endif + +$(binary_stamp)-libffi: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_ffi) $(d_ffid) + dh_installdirs -p$(p_ffi) $(dirs_ffi) + dh_installdirs -p$(p_ffid) $(dirs_ffid) + + mv $(d)/$(gcc_lib_dir)/include/libffi/ffitarget.h $(d)/$(PF)/include/. + + DH_COMPAT=2 dh_movefiles -p$(p_ffi) $(files_ffi) + DH_COMPAT=2 dh_movefiles -p$(p_ffid) $(files_ffid) + + dh_installdocs -p$(p_ffi) $(srcdir)/libffi/README + dh_installchangelogs -p$(p_ffi) $(srcdir)/libffi/ChangeLog + cp -p $(srcdir)/libffi/LICENSE $(d_ffi)/$(docdir)/$(p_ffi)/copyright + cp -p $(srcdir)/libffi/ChangeLog.libgcj \ + $(d_ffi)/$(docdir)/$(p_ffi)/changelog.libgcj + debian/dh_doclink -p$(p_ffid) $(p_ffi) + + debian/dh_rmemptydirs -p$(p_ffi) + debian/dh_rmemptydirs -p$(p_ffid) + + dh_strip -p$(p_ffi) -p$(p_ffid) + dh_compress -p$(p_ffi) -p$(p_ffid) + dh_fixperms -p$(p_ffi) -p$(p_ffid) + dh_makeshlibs -p$(p_ffi) -V '$(p_ffi) (>= $(DEB_FFI_SOVERSION))' + dh_shlibdeps -p$(p_ffi) -p$(p_ffid) + dh_gencontrol -p$(p_ffi) -p$(p_ffid) \ + -- -v$(DEB_EVERSION) $(common_substvars) + b=libffi; v=$(FFI_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_ffi) -p$(p_ffid) + dh_md5sums -p$(p_ffi) -p$(p_ffid) + dh_builddeb -p$(p_ffi) -p$(p_ffid) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-fortran.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-fortran.mk @@ -0,0 +1,261 @@ +ifeq ($(with_libg2c),yes) + arch_binaries := $(arch_binaries) libg2c +endif +ifeq ($(with_lib32g2c),yes) + arch_binaries := $(arch_binaries) lib32g2c +endif +ifeq ($(with_lib64g2c),yes) + arch_binaries := $(arch_binaries) lib64g2c +endif + +ifeq ($(with_fdev),yes) + arch_binaries := $(arch_binaries) fdev + ifneq ($(GFDL_INVARIANT_FREE),yes) + indep_binaries := $(indep_binaries) fortran-doc + endif + arch_binaries := $(arch_binaries) libg2c-dev +endif + +p_g77 = g77$(pkg_ver) +p_g77d = g77$(pkg_ver)-doc +p_g2c = libg2c$(F77_SONAME) +p_g2c32 = lib32g2c$(F77_SONAME) +p_g2c64 = lib64g2c$(F77_SONAME) +p_g2cd = libg2c$(F77_SONAME)-dev + +d_g77 = debian/$(p_g77) +d_g77d = debian/$(p_g77d) +d_g2c = debian/$(p_g2c) +d_g2c32 = debian/$(p_g2c32) +d_g2c64 = debian/$(p_g2c64) +d_g2cd = debian/$(p_g2cd) + +dirs_g77 = \ + $(docdir)/$(p_base)/fortran \ + $(PF)/bin \ + $(gcc_lexec_dir) \ + $(gcc_lib_dir)/include \ + $(PF)/include \ + $(PF)/share/man/man1 +files_g77 = \ + $(PF)/bin/g77$(pkg_ver) \ + $(gcc_lexec_dir)/f771 +ifneq ($(GFDL_INVARIANT_FREE),yes) + files_g77 += $(PF)/share/man/man1/g77$(pkg_ver).1 +endif + +dirs_g2c = \ + $(docdir)/$(p_base)/fortran \ + $(PF)/$(libdir) \ + +files_g2c = \ + $(PF)/$(libdir)/libg2c.so.* + +dirs_g2cd = \ + $(docdir)/$(p_base)/fortran \ + $(PF)/$(libdir) \ + $(PF)/include \ + +files_g2cd = \ + $(PF)/$(libdir)/libg2c.{a,la,so} \ + $(PF)/$(libdir)/libfrtbegin.a \ + $(PF)/include/g2c.h + +ifeq ($(with_lib32g2c),yes) + dirs_g2cd += $(lib32) + files_g2cd += $(lib32)/{libg2c.{a,la,so},libfrtbegin.a} +endif +ifeq ($(with_lib64g2c),yes) + dirs_g2cd += $(PF)/lib64 + files_g2cd += $(PF)/lib64/{libg2c.{a,la,so},libfrtbegin.a} +endif + +# ---------------------------------------------------------------------- +$(binary_stamp)-libg2c: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g2c) + dh_installdirs -p$(p_g2c) $(dirs_g2c) + DH_COMPAT=2 dh_movefiles -p$(p_g2c) $(files_g2c) + debian/dh_doclink -p$(p_g2c) $(p_base) + cp -p debian/README.libf2c \ + $(d_g2c)/$(docdir)/$(p_base)/fortran/README.Debian + + dh_strip -p$(p_g2c) + dh_compress -p$(p_g2c) + dh_fixperms -p$(p_g2c) + dh_makeshlibs -p$(p_g2c) -V '$(p_g2c) (>= $(DEB_F2C_SOVERSION))' + dh_shlibdeps -p$(p_g2c) + dh_gencontrol -p$(p_g2c) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_g2c) + dh_md5sums -p$(p_g2c) + dh_builddeb -p$(p_g2c) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64g2c: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g2c64) + dh_installdirs -p$(p_g2c64) \ + $(PF)/lib64 + DH_COMPAT=2 dh_movefiles -p$(p_g2c64) \ + $(PF)/lib64/libg2c.so.* + + debian/dh_doclink -p$(p_g2c64) $(p_base) + + dh_strip -p$(p_g2c64) + dh_compress -p$(p_g2c64) + dh_fixperms -p$(p_g2c64) + dh_makeshlibs -p$(p_g2c64) -V '$(p_g2c64) (>= $(DEB_F2C_SOVERSION))' +# dh_shlibdeps -p$(p_g2c64) + dh_gencontrol -p$(p_g2c64) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_g2c64) + dh_md5sums -p$(p_g2c64) + dh_builddeb -p$(p_g2c64) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib32g2c: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g2c32) + dh_installdirs -p$(p_g2c32) \ + $(lib32) + DH_COMPAT=2 dh_movefiles -p$(p_g2c32) \ + $(lib32)/libg2c.so.* + + debian/dh_doclink -p$(p_g2c32) $(p_base) + + dh_strip -p$(p_g2c32) + dh_compress -p$(p_g2c32) + dh_fixperms -p$(p_g2c32) + dh_makeshlibs -p$(p_g2c32) -V '$(p_g2c32) (>= $(DEB_F2C_SOVERSION))' +# dh_shlibdeps -p$(p_g2c32) + dh_gencontrol -p$(p_g2c32) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_g2c32) + dh_md5sums -p$(p_g2c32) + dh_builddeb -p$(p_g2c32) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libg2c-dev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g2cd) + dh_installdirs -p$(p_g2cd) $(dirs_g2cd) + mv $(d)/$(gcc_lib_dir)/include/g2c.h $(d)/$(PF)/include/ + dh_movefiles -p$(p_g2cd) $(files_g2cd) + debian/dh_doclink -p$(p_g2cd) $(p_base) + + dh_strip -p$(p_g2cd) + dh_compress -p$(p_g2cd) + dh_fixperms -p$(p_g2cd) + dh_shlibdeps -p$(p_g2cd) + dh_gencontrol -p$(p_g2cd) -- -v$(DEB_EVERSION) $(common_substvars) + dh_installdeb -p$(p_g2cd) + dh_md5sums -p$(p_g2cd) + dh_builddeb -p$(p_g2cd) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fdev: $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + +# sed "s,^libdir=.*,libdir='/$(gcc_lib_dir)'," \ +# $(d)/$(PF)/$(libdir)/libg2c.la > $(d)/$(gcc_lib_dir)/libg2c.la +# rm -f $(d)/$(PF)/$(libdir)/libg2c.la +# mv $(d)/$(PF)/$(libdir)/libg2c.{a,so} $(d)/$(gcc_lib_dir)/ +# ln -sf ../../../libg2c.so.$(F77_SONAME) \ +# $(d)/$(gcc_lib_dir)/libg2c.so +# mv $(d)/$(PF)/$(libdir)/libfrtbegin.a $(d)/$(gcc_lib_dir)/ + +#ifeq ($(biarch),yes) +# ifeq ($(DEB_TARGET_GNU_CPU),i386) +# mv $(d)/$(PF)/$(lib64)/libg2c.{a,la,so} $(d)/$(gcc_lib_dir)/64 +# ln -sf ../../../../lib64/libg2c.so.$(F77_SONAME) \ +# $(d)/$(gcc_lib_dir)/64/libg2c.so +# mv $(d)/$(PF)/$(lib64)/libfrtbegin.a $(d)/$(gcc_lib_dir)/64 +# endif +#endif + rm -rf $(d_g77) + dh_installdirs -p$(p_g77) $(dirs_g77) + DH_COMPAT=2 dh_movefiles -p$(p_g77) $(files_g77) + +# dh_installdirs -p$(p_g2cd) $(dirs_g2cd) +# DH_COMPAT=2 dh_movefiles -p$(p_g2cd) $(files_g2cd) + + ln -sf g77$(pkg_ver) \ + $(d_g77)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-g77$(pkg_ver) + ln -sf g77$(pkg_ver).1 \ + $(d_g77)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g77$(pkg_ver).1 + ln -sf g77$(pkg_ver) \ + $(d_g77)/$(PF)/bin/$(TARGET_ALIAS)-g77$(pkg_ver) + ln -sf g77$(pkg_ver).1 \ + $(d_g77)/$(PF)/share/man/man1/$(TARGET_ALIAS)-g77$(pkg_ver).1 + + debian/dh_doclink -p$(p_g77) $(p_base) +# debian/dh_doclink -p$(p_g2cd) $(p_base) + +# #cp -p $(srcdir)/gcc/f/{NEWS,BUGS} \ +# # $(d_g77)/$(docdir)/$(p_base)/fortran/. + cp -p $(srcdir)/libf2c/README \ + $(d_g77)/$(docdir)/$(p_base)/fortran/README.libf2c + cp -p $(srcdir)/gcc/f/ChangeLog \ + $(d_g77)/$(docdir)/$(p_base)/fortran/changelog + debian/dh_rmemptydirs -p$(p_g77) +# debian/dh_rmemptydirs -p$(p_g2cd) + + dh_strip -p$(p_g77) + dh_compress -p$(p_g77) + dh_fixperms -p$(p_g77) + dh_shlibdeps -p$(p_g77) + dh_gencontrol -p$(p_g77) -- -v$(DEB_VERSION) $(common_substvars) + dh_installdeb -p$(p_g77) + dh_md5sums -p$(p_g77) + dh_builddeb -p$(p_g77) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_g77d) + dh_installdirs -p$(p_g77d) \ + $(docdir)/$(p_base)/fortran \ + $(PF)/share/info + DH_COMPAT=2 dh_movefiles -p$(p_g77d) \ + $(PF)/share/info/g77* + + debian/dh_doclink -p$(p_g77d) $(p_base) +ifneq ($(GFDL_INVARIANT_FREE),yes) + dh_installdocs -p$(p_g77d) + rm -f $(d_g77d)/$(docdir)/$(p_base)/copyright + cp -p html/g77.html $(d_g77d)/$(docdir)/$(p_base)/fortran/ +endif + + dh_compress -p$(p_g77d) + dh_fixperms -p$(p_g77d) + dh_installdeb -p$(p_g77d) + dh_gencontrol -p$(p_g77d) -- -v$(DEB_VERSION) $(common_substvars) + dh_md5sums -p$(p_g77d) + dh_builddeb -p$(p_g77d) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libgcc.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libgcc.mk @@ -0,0 +1,160 @@ +ifeq ($(with_libgcc),yes) + arch_binaries := $(arch_binaries) libgcc +endif +ifeq ($(with_lib32gcc),yes) + arch_binaries := $(arch_binaries) lib32gcc +endif +ifeq ($(with_lib64gcc),yes) + arch_binaries := $(arch_binaries) lib64gcc +endif + +p_lgcc = libgcc$(GCC_SONAME) +d_lgcc = debian/$(p_lgcc) + +p_l32gcc = lib32gcc$(GCC_SONAME) +d_l32gcc = debian/$(p_l32gcc) + +p_l64gcc = lib64gcc$(GCC_SONAME) +d_l64gcc = debian/$(p_l64gcc) + +# ---------------------------------------------------------------------- +$(binary_stamp)-libgcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_lgcc) + dh_installdirs -p$(p_lgcc) \ + $(docdir)/$(p_lgcc) \ + $(libdir) + +ifeq ($(with_shared_libgcc),yes) + mv $(d)/$(PF)/lib/libgcc_s.so.$(GCC_SONAME) $(d_lgcc)/$(libdir)/. +endif + + dh_installdocs -p$(p_lgcc) + dh_installchangelogs -p$(p_lgcc) + + debian/dh_rmemptydirs -p$(p_lgcc) +ifeq ($(with_shared_libgcc),yes) + dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= $(DEB_LIBGCC_SOVERSION))' + dh_shlibdeps -p$(p_lgcc) + cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local +endif + dh_strip -p$(p_lgcc) + dh_compress -p$(p_lgcc) + dh_fixperms -p$(p_lgcc) + dh_gencontrol -p$(p_lgcc) \ + -- -v$(DEB_LIBGCC_VERSION) $(common_substvars) + b=libgcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_lgcc) + dh_md5sums -p$(p_lgcc) + dh_builddeb -p$(p_lgcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- +$(binary_stamp)-lib64gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l64gcc) + dh_installdirs -p$(p_l64gcc) \ + $(docdir)/$(p_l64gcc) \ + lib64 + +ifeq ($(with_shared_libgcc),yes) + mv $(d)/$(PF)/lib64/libgcc_s.so.$(GCC_SONAME) $(d_l64gcc)/lib64/. +endif + + dh_installdocs -p$(p_l64gcc) + dh_installchangelogs -p$(p_l64gcc) + + debian/dh_rmemptydirs -p$(p_l64gcc) + dh_strip -p$(p_l64gcc) + dh_compress -p$(p_l64gcc) + dh_fixperms -p$(p_l64gcc) +ifeq ($(with_shared_libgcc),yes) + dh_makeshlibs -p$(p_l64gcc) \ + -V '$(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' +# this does not work ... shlibs.local doesn't distinguish 32/64 bit libs +# cat debian/$(p_l64gcc)/DEBIAN/shlibs >> debian/shlibs.local +endif +ifeq ($(DEB_TARGET_ARCH),s390) +# dh_shlibdeps -p$(p_l64gcc) +#/usr/bin/ldd: line 1: /lib/ld64.so.1: cannot execute binary file +#dpkg-shlibdeps: failure: ldd on `debian/lib64gcc1/lib64/libgcc_s.so.1' gave error exit status 1 + echo 'shlibs:Depends=libc6-s390x (>= 2.3.1-1)' \ + > debian/$(p_l64gcc).substvars +else + ifeq ($(DEB_TARGET_ARCH),i386) + echo 'shlibs:Depends=libc6-amd64' \ + > debian/$(p_l64gcc).substvars + else + ifeq ($(DEB_TARGET_ARCH),powerpc) + echo 'shlibs:Depends=libc6-ppc64' \ + > debian/$(p_l64gcc).substvars + else + ifeq ($(DEB_TARGET_ARCH),sparc) + echo 'shlibs:Depends=libc6-sparc64' \ + > debian/$(p_l64gcc).substvars + else + dh_shlibdeps -p$(p_l64gcc) + endif + endif + endif +endif + dh_gencontrol -p$(p_l64gcc) \ + -- -v$(DEB_LIBGCC_VERSION) $(common_substvars) + b=lib64gcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_l64gcc) + dh_md5sums -p$(p_l64gcc) + dh_builddeb -p$(p_l64gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) + +# ---------------------------------------------------------------------- + +$(binary_stamp)-lib32gcc: $(install_dependencies) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_l32gcc) + dh_installdirs -p$(p_l32gcc) \ + $(docdir)/$(p_l32gcc) \ + $(lib32) + mv $(d)/$(PF)/lib32/libgcc_s.so.$(GCC_SONAME) \ + $(d_l32gcc)/$(lib32)/. + + dh_installdocs -p$(p_l32gcc) + dh_installchangelogs -p$(p_l32gcc) + + debian/dh_rmemptydirs -p$(p_l32gcc) + dh_strip -p$(p_l32gcc) + dh_compress -p$(p_l32gcc) + dh_fixperms -p$(p_l32gcc) + dh_gencontrol -p$(p_l32gcc) \ + -- -v$(DEB_VERSION) $(common_substvars) + b=lib32gcc; v=$(GCC_SONAME); \ + for ext in preinst postinst prerm postrm; do \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done + dh_installdeb -p$(p_l32gcc) + dh_md5sums -p$(p_l32gcc) + dh_builddeb -p$(p_l32gcc) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/rules.d/binary-libstdcxx.mk +++ gcc-3.4-3.4.6/debian/rules.d/binary-libstdcxx.mk @@ -0,0 +1,439 @@ +ifeq ($(with_libcxx),yes) + arch_binaries := $(arch_binaries) libstdcxx +endif +ifeq ($(with_lib64cxx),yes) + arch_binaries := $(arch_binaries) lib64stdcxx +endif +ifeq ($(with_lib32cxx),yes) + arch_binaries := $(arch_binaries) lib32stdcxx +endif + +ifeq ($(with_cxxdev),yes) + arch_binaries := $(arch_binaries) libstdcxx-dev + indep_binaries := $(indep_binaries) libstdcxx-doc +endif + +p_lib = libstdc++$(CXX_SONAME) +p_dev = $(p_lib)-dev +p_pic = $(p_lib)-pic +p_dbg = $(p_lib)-dbg +p_lib64 = lib64stdc++$(CXX_SONAME) +p_lib32 = lib32stdc++$(CXX_SONAME) +p_libd = libstdc++6-doc + +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_libd = debian/$(p_libd) + +dirs_lib = \ + $(docdir) \ + $(PF)/$(libdir) + +dirs_lib64 = \ + $(docdir) \ + $(PF)/lib64 + +files_lib = \ + $(PF)/$(libdir)/libstdc++.so.* + +files_lib64 = \ + $(PF)/lib64/libstdc++.so.* + +dirs_dev = \ + $(docdir)/$(p_base)/C++ \ + $(PF)/$(libdir) \ + $(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)/$(libdir)/debug \ + $(gcc_lib_dir) +files_dbg = \ + $(PF)/$(libdir)/debug/libstdc++.* + +dirs_pic = \ + $(docdir) \ + $(gcc_lib_dir) +files_pic = \ + $(gcc_lib_dir)/libstdc++_pic.a + +ifeq ($(biarch),yes) + dirs_dev += $(gcc_lib_dir)/64/ + files_dev += $(gcc_lib_dir)/64/libstdc++.{a,so} \ + $(gcc_lib_dir)/64/libsupc++.a + dirs_dbg += $(PF)/lib64/debug + files_dbg += $(PF)/lib64/debug/libstdc++.* + dirs_pic += $(gcc_lib_dir) + files_pic += $(gcc_lib_dir)/64/libstdc++_pic.a +endif +ifeq ($(biarch32),yes) + dirs_dev += $(gcc_lib_dir)/32/ + files_dev += $(gcc_lib_dir)/32/libstdc++.{a,so} \ + $(gcc_lib_dir)/32/libsupc++.a + dirs_dbg += $(PF)/lib32/debug + files_dbg += $(PF)/lib32/debug/libstdc++.* + dirs_pic += $(gcc_lib_dir) + files_pic += $(gcc_lib_dir)/32/libstdc++_pic.a +endif + +# ---------------------------------------------------------------------- + +gxx_baseline_dir = $(shell \ + sed -n '/^baseline_dir *=/s,.*= *\(.*\)\$$.*$$,\1,p' \ + $(buildlibdir)/libstdc++-v3/testsuite/Makefile) +gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt + +debian/README.libstdc++-baseline: + cat debian/README.libstdc++-baseline.in \ + > debian/README.libstdc++-baseline + + baseline_name=`basename $(gxx_baseline_dir)`; \ + baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ + compat_baseline_name=""; \ + if [ -f "$(gxx_baseline_file)" ]; then \ + ( \ + echo "A baseline file for $$baseline_name was found."; \ + echo "Running the check-abi script ..."; \ + echo ""; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ + check-abi; \ + ) >> debian/README.libstdc++-baseline; \ + else \ + ( \ + echo "No baseline file found for $$baseline_name."; \ + echo "Generating a new baseline file ..."; \ + echo ""; \ + ) >> debian/README.libstdc++-baseline; \ + mkdir $(gxx_baseline_dir); \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ + cat $(gxx_baseline_file) >> debian/README.libstdc++-baseline; \ + fi + +# ---------------------------------------------------------------------- +$(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) + + dh_strip -p$(p_lib) + dh_compress -p$(p_lib) + dh_fixperms -p$(p_lib) + dh_makeshlibs -p$(p_lib) -V '$(p_lib) (>= $(DEB_STDCXX_SOVERSION))' + cat debian/$(p_lib)/DEBIAN/shlibs >> debian/shlibs.local + dh_shlibdeps \ + -L$(p_lgcc) -l:$(d)/$(PF)/lib:$(d_lgcc)/lib:\ + -p$(p_lib) + dh_gencontrol -p$(p_lib) -- -v$(DEB_VERSION) $(common_substvars) + + b=libstdc++; \ + for ext in preinst postinst prerm postrm; do \ + for t in ''; do \ + v=$(CXX_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + + 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) + install -d $(d)/lib64 + DH_COMPAT=2 dh_movefiles -p$(p_lib64) $(files_lib64) + 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_rmemptydirs -p$(p_lib64) + dh_strip -p$(p_lib64) + dh_compress -p$(p_lib64) + dh_fixperms -p$(p_lib64) + dh_makeshlibs -p$(p_lib64) -V '$(p_lib64) (>= $(DEB_STDCXX_SOVERSION))' +# pass explicit dependencies to dh_shlibdeps +ifeq ($(DEB_TARGET_GNU_CPU),s390) +# dh_shlibdeps -p$(p_lib64) -L $(p_l64gcc) -l $(d_l64gcc)/lib +#/usr/bin/ldd: line 1: /lib/ld64.so.1: cannot execute binary file +#dpkg-shlibdeps: failure: ldd on `debian/lib64gcc1/lib64/libgcc_s.so.1' gave error exit status 1 + echo 'shlibs:Depends=libc6-s390x (>= 2.3.1-1), $(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' \ + > debian/$(p_lib64).substvars +else + ifeq ($(DEB_TARGET_GNU_CPU),i386) + echo 'shlibs:Depends=libc6-amd64, $(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' \ + > debian/$(p_lib64).substvars + else + ifeq ($(DEB_TARGET_GNU_CPU),powerpc) + echo 'shlibs:Depends=libc6-ppc64, $(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' \ + > debian/$(p_lib64).substvars + else + ifeq ($(DEB_TARGET_GNU_CPU),sparc) + echo 'shlibs:Depends=libc6-sparc64 (>= 2.3.2.ds1-21), $(p_l64gcc) (>= $(DEB_LIBGCC_SOVERSION))' \ + > debian/$(p_lib64).substvars + else + dh_shlibdeps -p$(p_lib64) -L $(p_l64gcc) -l $(d_l64gcc)/lib + endif + endif + endif +endif + dh_gencontrol -p$(p_lib64) -- -v$(DEB_VERSION) $(common_substvars) + + b=lib64stdc++; \ + for ext in preinst postinst prerm postrm; do \ + for t in ''; do \ + v=$(CXX_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + + 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) \ + $(docdir)/$(p_lib32) \ + $(lib32) + mv $(d)/$(lib32)/libstdc++.so.* \ + $(d_lib32)/$(lib32)/. + + 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_rmemptydirs -p$(p_lib32) + dh_strip -p$(p_lib32) + dh_compress -p$(p_lib32) + dh_fixperms -p$(p_lib32) + dh_gencontrol -p$(p_lib32) -- -v$(DEB_VERSION) $(common_substvars) + + b=lib32stdc++; \ + for ext in preinst postinst prerm postrm; do \ + for t in ''; do \ + v=$(CXX_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + + 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 +ifeq ($(with_check),yes) + libcxxdev_deps += debian/README.libstdc++-baseline +endif +$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_dev) $(d_pic) + dh_installdirs -p$(p_dev) $(dirs_dev) + dh_installdirs -p$(p_pic) $(dirs_pic) + dh_installdirs -p$(p_dbg) $(dirs_dbg) + + : # - correct libstdc++-v3 file locations + mv $(d)/$(PF)/$(libdir)/libsupc++.a $(d)/$(gcc_lib_dir)/ + mv $(d)/$(PF)/$(libdir)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ + mv $(d)/$(PF)/$(libdir)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ + + rm -f $(d)/$(PF)/$(libdir)/debug/libstdc++_pic.a + rm -f $(d)/$(PF)/lib64/debug/libstdc++_pic.a + + : # remove precompiled headers + -find $(d) -type d -name '*.gch' | xargs rm -rf + +ifeq ($(biarch),yes) + mv $(d)/$(PF)/lib64/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/64/. + ifeq ($(DEB_TARGET_ARCH),i386) + mv $(d)/$(cxx_inc_dir)/x86_64-linux $(d)/$(cxx_inc_dir)/x86_64-linux-gnu + endif +endif +ifeq ($(biarch32),yes) + mv $(d)/$(lib32)/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/32/. +endif + + 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)/$(libdir)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/libstdc++.so +ifeq ($(biarch),yes) + dh_link -p$(p_dev) \ + /$(PF)/lib64/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/64/libstdc++.so +endif +ifeq ($(biarch32),yes) + dh_link -p$(p_dev) \ + /$(lib32)/libstdc++.so.$(CXX_SONAME) \ + /$(gcc_lib_dir)/32/libstdc++.so +endif + + debian/dh_doclink -p$(p_dev) $(p_base) + debian/dh_doclink -p$(p_pic) $(p_base) + debian/dh_doclink -p$(p_dbg) $(p_base) + cp -p $(srcdir)/libstdc++-v3/ChangeLog \ + $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ +ifeq ($(with_check),yes) + cp -p debian/README.libstdc++-baseline \ + $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline + if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ + then \ + cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ + $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt; \ + fi +endif + cp -p $(srcdir)/libstdc++-v3/config/linker-map.gnu \ + $(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 + + dh_strip -p$(p_dev) -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) +ifeq ($(biarch),yes) + dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib64 +else + dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) -Xlib32/debug +endif + dh_gencontrol -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ + -- -v$(DEB_VERSION) $(common_substvars) + + b=libstdc++; \ + for ext in preinst postinst prerm postrm; do \ + for t in -dev -dbg -pic; do \ + v=$(CXX_SONAME); \ + if [ -f debian/$$b$$t.$$ext ]; then \ + cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ + fi; \ + done; \ + done + + 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) + +# ---------------------------------------------------------------------- + +doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/docs/doxygen + +doxygen-docs: $(build_doxygen_stamp) +$(build_doxygen_stamp): + rm -rf $(doxygen_doc_dir)/html* + $(MAKE) -C $(buildlibdir)/libstdc++-v3 SHELL=/bin/bash doxygen; \ + $(MAKE) -C $(buildlibdir)/libstdc++-v3 SHELL=/bin/bash doxygen-man + if [ -f $(doxygen_doc_dir)/html_user/index.html ]; then \ + sed -e 's,http://gcc\.gnu\.org/onlinedocs/libstdc++,../html,g' \ + -e 's,Main Page,libstdc++-v3 Source: Main Index,' \ + $(doxygen_doc_dir)/html_user/index.html \ + > $(doxygen_doc_dir)/html_user/index.html.new; \ + mv -f $(doxygen_doc_dir)/html_user/index.html.new \ + $(doxygen_doc_dir)/html_user/index.html; \ + else \ + echo "unable to generate doxygen docs"; \ + exit 2; \ + fi + touch $@ + +$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs + dh_testdir + dh_testroot + mv $(install_stamp) $(install_stamp)-tmp + + rm -rf $(d_libd) + dh_installdirs -p$(p_libd) \ + $(docdir)/$(p_base)/libstdc++ \ + $(PF)/share/man + +# debian/dh_doclink -p$(p_libd) $(p_base) + dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) + dh_installdocs -p$(p_libd) + rm -f $(d_libd)/$(docdir)/$(p_base)/copyright + + cp -a $(srcdir)/libstdc++-v3/docs/html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + ln -sf documentation.html \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/html/index.html + -find $(d_libd)/$(docdir)/$(p_base)/libstdc++/ -name CVS -type d \ + | xargs rm -rf + + cp -a $(doxygen_doc_dir)/html_user \ + $(d_libd)/$(docdir)/$(p_base)/libstdc++/. + cp -a $(doxygen_doc_dir)/man/man3 \ + $(d_libd)/$(PF)/share/man/. + cp -p $(srcdir)/libstdc++-v3/docs/doxygen/Intro.3 \ + $(d_libd)/$(PF)/share/man/man3/C++Intro.3 + + mkdir -p $(d_libd)/usr/share/lintian/overrides + cp -p debian/$(p_libd).overrides \ + $(d_libd)/usr/share/lintian/overrides/$(p_libd) + + dh_compress -p$(p_libd) -Xhtml/17_intro -X.txt -X.tag + dh_fixperms -p$(p_libd) + dh_gencontrol -p$(p_libd) -- -v$(DEB_VERSION) $(common_substvars) + + dh_installdeb -p$(p_libd) + dh_md5sums -p$(p_libd) + dh_builddeb -p$(p_libd) + + trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) --- gcc-3.4-3.4.6.orig/debian/fixincludes.in +++ gcc-3.4-3.4.6/debian/fixincludes.in @@ -0,0 +1,8 @@ +#! /bin/sh + +PATH="/@LIBEXECDIR@/install-tools:$PATH" + +TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE` +export TARGET_MACHINE + +exec fixinc.sh "$@" --- gcc-3.4-3.4.6.orig/debian/gnat-BV-doc.prerm +++ gcc-3.4-3.4.6/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# --- gcc-3.4-3.4.6.orig/debian/rules.unpack +++ gcc-3.4-3.4.6/debian/rules.unpack @@ -0,0 +1,182 @@ +# -*- makefile -*- +# rules to unpack the source tarballs in $(srcdir); if the source dir already +# exists, the rule exits with an error to prevent deletion of modified +# source files. It has to be deleted manually. + +tarballs = $(gcc_tarball) +ifeq ($(with_check),yes) + tarballs += $(testsuite_tarball) +endif +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/c-tree.texi \ + gcc/doc/collect2.texi \ + gcc/doc/compat.texi \ + gcc/doc/configfiles.texi \ + gcc/doc/configterms.texi \ + gcc/doc/contrib.texi \ + gcc/doc/contribute.texi \ + gcc/doc/cpp.texi \ + gcc/doc/cppenv.texi \ + gcc/doc/cppinternals.texi \ + gcc/doc/cppopts.texi \ + gcc/doc/extend.texi \ + gcc/doc/fragments.texi \ + gcc/doc/frontends.texi \ + gcc/doc/gcc.texi \ + gcc/doc/gccint.texi \ + gcc/doc/gcov.texi \ + gcc/doc/gnu.texi \ + gcc/doc/gty.texi \ + gcc/doc/headerdirs.texi \ + gcc/doc/hostconfig.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/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/trouble.texi \ + gcc/doc/include/gcc-common.texi \ + gcc/doc/include/funding.texi \ + gcc/f/bugs.texi \ + gcc/f/bugs0.texi \ + gcc/f/ffe.texi \ + gcc/f/intdoc.texi \ + gcc/f/invoke.texi \ + gcc/f/news.texi \ + gcc/f/news0.texi \ + gcc/f/root.texi \ + libstdc++-v3/docs/html/17_intro/porting.texi \ + +gfdl_toplevel_texinfo_files = \ + gcc/doc/gcc.texi \ + gcc/doc/gcov.texi \ + gcc/java/gcj.texi \ + gcc/ada/gnat-style.texi \ + gcc/ada/gnat_rm.texi \ + gcc/ada/gnat_ugn.texi \ + gcc/f/g77.texi \ + gcc/treelang/treelang.texi \ + gcc/doc/include/funding.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_tarball) + : # 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_tarball);; \ + *.gz) tar -x --gzip -f $(gcc_tarball);; \ + *) 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)-$(gpc_tarball): $(gpc_tarball) + : # 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_tarball);; \ + *.gz) tar -x --gzip -f $(gpc_tarball);; \ + *) 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." > $@ + +# --------------------------------------------------------------------------- +$(unpack_stamp)-$(testsuite_tarball): $(testsuite_tarball) + : # unpack testsuite tarball + -mkdir $(stampdir) + rm -rf $(testsuite_srcdir) + case $(testsuite_tarball) in \ + *.bz2) tar -x -p --bzip2 -f $(testsuite_tarball);; \ + *.gz) tar -x -p --gzip -f $(testsuite_tarball);; \ + *) false; \ + esac + for t in gcc libjava libstdc++-v3; do \ + rm -rf $(srcdir)/$$t/testsuite; \ + mv $(testsuite_srcdir)/$$t/testsuite $(srcdir)/$$t/.; \ + done + rm -rf $(testsuite_srcdir) + echo "$(testsuite_tarball) unpacked." > $@ --- gcc-3.4-3.4.6.orig/debian/gij-wrapper.1 +++ gcc-3.4-3.4.6/debian/gij-wrapper.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-3.3(1) for a list of options that gij understands. + +.SH "SEE ALSO" +.BR gij-3.3(1) +, +.BR java(1) --- gcc-3.4-3.4.6.orig/debian/gcc-BV-hppa64.postinst +++ gcc-3.4-3.4.6/debian/gcc-BV-hppa64.postinst @@ -0,0 +1,13 @@ +#! /bin/sh -e + +prio=`echo @BV@ | sed 's/\.//g'` + +update-alternatives --quiet \ + --install /usr/bin/hppa64-linux-gnu-gcc \ + hppa64-linux-gnu-gcc \ + /usr/bin/hppa64-linux-gnu-gcc-@BV@ \ + $prio + +#DEBHELPER# + +exit 0 --- gcc-3.4-3.4.6.orig/debian/logwatch.sh +++ gcc-3.4-3.4.6/debian/logwatch.sh @@ -0,0 +1,104 @@ +#! /bin/sh + +# script to trick the build daemons and output something, if there is +# still test/build activity + +# $1: primary file to watch. if there is activity on this file, we do nothing +# $2+: files to watch to look for activity despite no output in $1 +# if the files are modified or are newly created, then the message +# is printed on stdout. +# if nothing is modified, don't output anything (so the buildd timeout +# hits). + +pidfile=logwatch.pid +timeout=3600 +message='\nlogwatch still running\n' + +usage() +{ + echo >&2 "usage: `basename $0` [-p ] [-t ] [-m ]" + echo >&2 " [ ...]" + exit 1 +} + +while [ $# -gt 0 ]; do + case $1 in + -p) + pidfile=$2 + shift + shift + ;; + -t) + timeout=$2 + shift + shift + ;; + -m) + message="$2" + shift + shift + ;; + -*) + usage + ;; + *) + break + esac +done + +[ $# -gt 0 ] || usage + +logfile="$1" +shift +otherlogs="$@" + +cleanup() +{ + rm -f $pidfile + exit 0 +} + +#trap cleanup 0 1 3 15 + +echo $$ > $pidfile + +update() +{ + _logvar=$1 + _othervar=$2 + + # logfile may not exist yet + if [ -r $logfile ]; then + _logtail="`tail -10 $logfile | md5sum` $f" + else + _logtail="does not exist: $logfile" + fi + eval $_logvar="'$_logtail'" + + _othertails='' + for f in $otherlogs; do + if [ -r $f ]; then + _othertails="$_othertails `tail -10 $f | md5sum` $f" + else + _othertails="$_othertails does not exist: $f" + fi + done + eval $_othervar="'$_othertails'" +} + +update logtail othertails +while true; do + sleep $timeout + update newlogtail newothertails + if [ "$logtail" != "$newlogtail" ]; then + # there is still action in the primary logfile. do nothing. + logtail="$newlogtail" + elif [ "$othertails" != "$newothertails" ]; then + # there is still action in the other log files, so print the message + /bin/echo -e $message + othertails="$newothertails" + else + # nothing changed in the other log files. maybe a timeout ... + : + fi +done --- gcc-3.4-3.4.6.orig/debian/gcj-wrapper +++ gcc-3.4-3.4.6/debian/gcj-wrapper @@ -0,0 +1,89 @@ +#!/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-3.4'; + +# 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 =~ /^-X/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-X'); + } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') { + # An unsupported option with a following argument. + $ignoreNextArg = 1; + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java compiler. +my @fullCommandLine = ( $javaCompiler, '-C' ); +push @fullCommandLine, $warnings if ($warnings); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-3.4-3.4.6.orig/debian/rename-pkgs.sh +++ gcc-3.4-3.4.6/debian/rename-pkgs.sh @@ -0,0 +1,32 @@ +#! /bin/bash + +rename_pkg() +{ + src=$1 + dest=$2 + for ext in preinst postinst prerm postrm doc-base; do + if [ -f $src.$ext ]; then + if [ -f $dest.ext ]; then + echo already exists: $dest.$ext + else + echo "$src.$ext --> $dest.$ext" + svn rename $src.$ext $dest.$ext + #mv $src.$ext $dest.$ext + fi + fi + done +} + +v_new=3.4 +v_old=3.3 + +for p in chill cpp gcc g++ g77 gpc gij gcj gobjc protoize treelang; do + rename_pkg $p-$v_old $p-$v_new +done + +for p in cpp gcc g77 gnat; do + rename_pkg $p-$v_old-doc $p-$v_new-doc +done + +rename_pkg gcc-$v_old-base gcc-$v_new-base +rename_pkg gcc-$v_old-sparc64 gcc-$v_new-sparc64 --- gcc-3.4-3.4.6.orig/debian/gcc-cross.postinst +++ gcc-3.4-3.4.6/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 15 \ + --slave /usr/share/man/man1/cross-gcc.1.gz cross-gcc.1.gz /usr/share/man/man1/cross-gcc-ver.1.gz + +exit 0 --- gcc-3.4-3.4.6.orig/debian/gij-BV.postinst +++ gcc-3.4-3.4.6/debian/gij-BV.postinst @@ -0,0 +1,11 @@ +#! /bin/sh -e + +update-alternatives --quiet \ + --install /usr/bin/java java /usr/bin/gij-wrapper-@BV@ 34 \ + --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/share/man/man1/gij-wrapper-@BV@.1.gz \ + --slave /usr/bin/rmiregistry rmiregistry /usr/bin/rmiregistry-@BV@ \ + --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/share/man/man1/rmiregistry-@BV@.1.gz + +#DEBHELPER# + +exit 0 --- gcc-3.4-3.4.6.orig/debian/compat +++ gcc-3.4-3.4.6/debian/compat @@ -0,0 +1 @@ +4 --- gcc-3.4-3.4.6.orig/debian/gcjh-wrapper.1 +++ gcc-3.4-3.4.6/debian/gcjh-wrapper.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-3.3(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcjh-3.3(1) +, +.BR javah(1) --- gcc-3.4-3.4.6.orig/debian/gnat.1 +++ gcc-3.4-3.4.6/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 3.4, a freely available Ada 95 compiler. +.PP +For accessing the full GNAT manuals, use +.B info gnat-ug-3.4 +and +.B info gnat-rm-3.4 +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-3.4 (1) +.SH AUTHOR +This manpage has been written by Samuel Tardieu , for the +Debian GNU/Linux project. --- gcc-3.4-3.4.6.orig/debian/dh_rmemptydirs +++ gcc-3.4-3.4.6/debian/dh_rmemptydirs @@ -0,0 +1,10 @@ +#! /bin/sh -e + +pkg=`echo $1 | sed 's/^-p//'` + +: # remove empty directories, when all components are in place +for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ + while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ +done + +exit 0 --- gcc-3.4-3.4.6.orig/debian/README.libf2c +++ gcc-3.4-3.4.6/debian/README.libf2c @@ -0,0 +1,8 @@ +Building libraries and executables dependent on libg2c +====================================================== + +The header file for the g2c library is specific to the compiler +version used and therefore is included in the g77-X.Y package. + +If you use the g2c header and libraries without using g77, +make sure you have the g77 package installed. --- gcc-3.4-3.4.6.orig/debian/gcc-BV-doc.postinst +++ gcc-3.4-3.4.6/debian/gcc-BV-doc.postinst @@ -0,0 +1,9 @@ +#! /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 + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gcc-BV-hppa64.prerm +++ gcc-3.4-3.4.6/debian/gcc-BV-hppa64.prerm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +if [ "$1" != "upgrade" ]; then + update-alternatives --quiet \ + --remove hppa64-linux-gnu-gcc /usr/bin/hppa64-linux-gnu-gcc-@BV@ +fi + +#DEBHELPER# + +exit 0 --- gcc-3.4-3.4.6.orig/debian/README.C++ +++ gcc-3.4-3.4.6/debian/README.C++ @@ -0,0 +1,47 @@ +libstdc++ is an implementation of the Standard C++ Library, including the +Standard Template Library (i.e. as specified by ANSI and ISO). + +Some notes on porting applications from libstdc++-2.90 (or earlier versions) +to libstdc++-v3 can be found in the libstdc++3-doc package. After the +installation of the package, look at: + +file://usr/share/doc/gcc-3.4-base/libstdc++/html/17_intro/porting-howto.html + +On Debian GNU/Linux you find additional documentation in the +libstdc++6-doc and stl-manual packages. After installing these packages, +point your browser to + + file://localhost/usr/share/doc/libstdc++6-doc/libstdc++/html/index.html + + file://localhost/usr/share/doc/stl-manual/html/index.html + +Other documentation can be found: + + http://www.cs.rpi.edu/~musser/stl.html + http://www.sgi.com/tech/stl/ + http://www.dinkumware.com/htm_cpl/ + +with a good, recent, book on C++. + +A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, +maintained by Marshall Cline . It can be found at the +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/ + +Germany: http://www.informatik.uni-konstanz.de/~kuehl/cpp/cppfaq.htm + +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. --- gcc-3.4-3.4.6.orig/debian/protoize.1 +++ gcc-3.4-3.4.6/debian/protoize.1 @@ -0,0 +1,42 @@ +.TH PROTOIZE 1 +.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection +.\" other parms are allowed: see man(7), man(1) +.SH NAME +protoize, unprotoize \- create/remove ANSI prototypes from C code +.SH SYNOPSIS +.B protoize +.I "[options] files ...." +.br +.B unprotoize +.I "[options] files ...." +.SH "DESCRIPTION" +This manual page documents briefly the +.BR protoize , +and +.B unprotoize +commands. +This manual page was written for the Debian GNU/Linux distribution +(but may be used by others), because the original program does not +have a manual page. +Instead, it has documentation in the GNU Info format; see below. +.PP +.B protoize +is an optional part of GNU C. You can use it to add prototypes to a +program, thus converting the program to ANSI C in one respect. The companion +program `unprotoize' does the reverse: it removes argument types from +any prototypes that are found. +.PP +When you run these programs, you must specify a set of source files +as command line arguments. +.SH OPTIONS +These programs are non-trivial to operate, and it is neither possible nor +desirable to properly summarize options in this man page. Read the info +documentation for more information. +.SH "SEE ALSO" +The programs are documented fully by +.IR "Gcc: The use and the internals of the GNU compiler", +available via the Info system. The documentation for protoize/unprotoize +can be found in the subsection "Invoking GCC", under "Running Protoize." +.SH AUTHOR +This manual page was written by Galen Hazelwood, +for the Debian GNU/Linux system. --- gcc-3.4-3.4.6.orig/debian/gcjh-wrapper +++ gcc-3.4-3.4.6/debian/gcjh-wrapper @@ -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-3.4'; + +# The command-line arguments to pass to the real Java compiler: +my @commandLine; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; +my $copyNextArg = 0; +my $ignoreNextArg = 0; +my $appendNextArg = ''; +foreach my $arg (@ARGV) { + # See if we already know what to do with this argument. + if ($ignoreNextArg) { + # Throw it away. + $ignoreNextArg = 0; + next; + } elsif ($copyNextArg or not $parsingOptions) { + # Copy it directly. + push @commandLine, $arg; + $copyNextArg = 0; + next; + } elsif ($appendNextArg) { + # Append it to $appendNextArg and then copy directly. + push @commandLine, ($appendNextArg . $arg); + $appendNextArg = ''; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-verbose') { + push @commandLine, '--verbose'; + } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') { + $appendNextArg = '--classpath='; + } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or + $arg eq '-extdirs') { + $appendNextArg = "-".$arg . '='; + } elsif ($arg eq '-d') { + push @commandLine, '-d'; + $copyNextArg = 1; + } elsif ($arg eq '-o') { + push @commandLine, '-o'; + $copyNextArg = 1; + } elsif ($arg eq '-stubs') { + push @commandLine, '-stubs'; + } elsif ($arg eq '-jni') { + push @commandLine, '-jni'; + } elsif ($arg =~ /^-old/) { + # An extended Sun option (which we don't support). + push @commandLine, '--help' if ($arg eq '-old'); + } elsif ($arg =~ /^-/) { + # An unsupported standalone option. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Was there a partial argument that was never completed? +push @commandLine, $appendNextArg if ($appendNextArg); + +# Call the real Java header generator. +my @fullCommandLine = ( $javaHeaderGen ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-3.4-3.4.6.orig/debian/reduce-test-diff.awk +++ gcc-3.4-3.4.6/debian/reduce-test-diff.awk @@ -0,0 +1,33 @@ +#! /usr/bin/gawk -f + +BEGIN { + skip=0 + warn=0 +} + +/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { + next +} + +# only compare gcc, g++, g77 and objc results +/=== treelang tests ===/ { + skip=1 +} + +# omit extra files appended to test-summary +/^\+Compiler version/ { + skip=1 +} + +skip == 0 { + print + next +} + +/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { + warn=1 +} + +END { + exit warn +} --- gcc-3.4-3.4.6.orig/debian/fastjar.postinst +++ gcc-3.4-3.4.6/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 34 \ + --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/fastjar.1.gz + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gccbug.1 +++ gcc-3.4-3.4.6/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>. --- gcc-3.4-3.4.6.orig/debian/libffi.preinst +++ gcc-3.4-3.4.6/debian/libffi.preinst @@ -0,0 +1,9 @@ +#! /bin/sh -e + +if [ -h /usr/share/doc/libffi2 ]; then + rm -f /usr/share/doc/libffi2 +else + true +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/changelog +++ gcc-3.4-3.4.6/debian/changelog @@ -0,0 +1,4749 @@ +gcc-3.4 (3.4.6-7ubuntu1) intrepid; urgency=low + + * Merge with Debian; remaining changes: + - Build from upstream source tarball, regenerate control file. + + -- Matthias Klose Fri, 02 May 2008 12:16:10 +0200 + +gcc-3.4 (3.4.6ds1-7) unstable; urgency=low + + * Don't build the following languages from the gcc-3.4 sources: + - Pascal, now based on the GCC-4.1 sources. + - Fortran 77, now superseded by GFortran built from the GCC-4.3 sources. + - C++, having a different ABI for g++ (>= 4.1) in lenny on four + release architectures. + - C for 64bit hppa, kernel builds use gcc-4.x. + * Don't build any package on hppa (allows removal of libgcc2 and the + gcc-4.0-source for lenny). + * Backport version checks for makeinfo and ld from the gcc-4_1-branch. + + -- Matthias Klose Sat, 29 Mar 2008 13:46:51 +0100 + +gcc-3.4 (3.4.6-6ubuntu4) hardy-proposed; urgency=low + + * Correct makeinfo version check. LP: #205348. + + -- Matthias Klose Fri, 02 May 2008 11:17:42 +0200 + +gcc-3.4 (3.4.6-6ubuntu3) hardy; urgency=low + + * Disable the testsuite on hppa (to demote expect-tcl8.3 to universe). + + -- Matthias Klose Thu, 03 Jan 2008 18:23:26 +0000 + +gcc-3.4 (3.4.6-6ubuntu2) gutsy; urgency=low + + * Trigger rebuild for hppa. + + -- LaMont Jones Tue, 02 Oct 2007 20:25:59 -0600 + +gcc-3.4 (3.4.6-6ubuntu1) gutsy; urgency=low + + * On lpia configure --with-cpu=i686 --with-tune=i586. + + -- Matthias Klose Sat, 28 Jul 2007 14:49:31 +0200 + +gcc-3.4 (3.4.6ds1-6) unstable; urgency=low + + * Build-depend on texlive-latex-base instead of tetex-bin. + * debian/rules2: Fix cross build targeting s390-linux. Closes: #407049. + * Don't install g77-3.4 man page when building without GFDL licensed docs. + Closes: #420533. + + -- Matthias Klose Sat, 28 Jul 2007 14:22:17 +0200 + +gcc-3.4 (3.4.6-5ubuntu1) feisty; urgency=low + + * Build using the original upstream tarball. + * Build the cpp-3.4-doc, gcc-3.4-doc, g77-3.4-doc packages. + + -- Matthias Klose Tue, 2 Jan 2007 14:15:40 +0000 + +gcc-3.4 (3.4.6ds1-5) unstable; urgency=low + + * Build without GFDL licensed docs. + - debian/*.texi, debian/porting.html: Add dummy documentation. + - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. + * Don't build cpp-3.4-doc, gcc-3.4-doc, g77-3.4-doc packages. + * Fix dependencies of cross library packages (Jim Heck). Closes: #399095. + + -- Matthias Klose Mon, 1 Jan 2007 13:56:09 +0100 + +gcc-3.4 (3.4.6-4) unstable; urgency=low + + * Add /usr/include/ to the standard include path for + non-biarch architectures as well. + * On powerpc, use /usr/include/powerpc64-linux-gnu instead of + /usr/include/ppc64-linux-gnu. Addresses: #374535. + + -- Matthias Klose Sat, 15 Jul 2006 14:56:19 +0200 + +gcc-3.4 (3.4.6-3) unstable; urgency=medium + + * Update gpc-no-gpidump patch for gpc 2.1 20060322. + + -- Matthias Klose Fri, 7 Jul 2006 22:26:22 +0000 + +gcc-3.4 (3.4.6-2) unstable; urgency=low + + * Configure --with-cpu=v8 on sparc. + * Force the termination of the logwatch script. + * m32r fixes (Kazuhiro Inaoka): + - debian/rules.patch: Do not apply autoreconf.dpatch for m32r. + - debian/patches/m32r-remove-addsi3.dpatch: Fixed FAIL gcc.dg/2004013-1.c. + - debian/patches/m32r-auto.dpatch: Fixed target/26775 target/26776. + - debian/rules.patch: Added m32r-remove-addsi3 and m32r-auto.dpatch. + Closes: #348972, #367448. + * libgcc1: Provide -dcv1 when cross-compiling. Closes: #357658. + * Do not build g++ on hppa (ABI incompatible with g++-4.1). + * lib64*: Remove references to amd64-libs + * Update Pascal to 2.1 20060322. + * Fix build error using bison-2.2, build-depend on bison (>= 2.3). + + -- Matthias Klose Sat, 10 Jun 2006 17:01:05 +0200 + +gcc-3.4 (3.4.6-1) unstable; urgency=low + + * GCC 3.4.6 release. + + -- Matthias Klose Tue, 7 Mar 2006 00:30:41 +0000 + +gcc-3.4 (3.4.5ds1-3) unstable; urgency=low + + * Update to SVN 20060302 (3.4.6 pre-release), taken from the gcc-3_4-branch. + * Update gpc to 20060215 snapshot. + * Force rebuild of pascal-lex.c with current flex. + * Disable builds of gnat and gobjc. + * Remove disabled binary packages from the control file. + * Drop build dependencies on amd64-libs (i386) and ia32-libs (amd64). + + -- Matthias Klose Thu, 2 Mar 2006 05:02:16 +0100 + +gcc-3.4 (3.4.5-2) unstable; urgency=low + + * Update to SVN 20060122, taken from the gcc-3_4-branch. + * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with + -mtune=pentium4). + * Fix version number in manuals. + * Apply patch for PR middle-end/25022. + * Update NEWS files for 3.4.5 release. + * debian/control.m4: Explicitely set Architecture for biarch packages. + * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc + headers, tighten glibc (build-)dependency. + * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where + available. + * Check for a working expect before starting the build. + + -- Matthias Klose Sun, 22 Jan 2006 16:38:58 +0100 + +gcc-3.4 (3.4.5-1) unstable; urgency=low + + * GCC 3.4.5 release. + * Remove java-gui-branch patch, java is not built anymore from the + 3.4 sources. + * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. + Closes: #341147. + * Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341222. + * Fix installation of biarch libstdc++ headers on amd64. + + -- Matthias Klose Thu, 1 Dec 2005 17:36:39 +0100 + +gcc-3.4 (3.4.4ds1-12) unstable; urgency=low + + * Add missing patch file. + + -- Matthias Klose Mon, 28 Nov 2005 07:18:35 +0100 + +gcc-3.4 (3.4.4ds1-11) unstable; urgency=low + + * Update to SVN 20051126, taken from the gcc-3_4-branch (post 3.4.5 + prerelease). + * Update gpc to 20051116 snapshot. + * Add patch m32r-pie (Kazuhiro Inaoka). Closes: #340255. + * Start the logwatch script for the ia64 build as well (Lamont Jones). + * Fix hppa64-linux-gnu-gcc alternative. + + -- Matthias Klose Sat, 26 Nov 2005 20:13:18 +0100 + +gcc-3.4 (3.4.4-10ubuntu1) dapper; urgency=low + + * Update to SVN 20051117, taken from the gcc-3_4-branch. + * Fix installation of biarch libstdc++ headers (Ubuntu #19655). + * Merge *-config-ml patches into one config-ml patch, configure the biarch + libs in debian/rules.defs. + * Remove obsolete patches: multiarch-include. + + -- Matthias Klose Thu, 17 Nov 2005 10:44:29 +0100 + +gcc-3.4 (3.4.4-10) unstable; urgency=low + + * Configure libstdc++ using the default allocator. + * g++-3.4: Depend on libstdc++6 (>= 4.0.2-4). + + * Update to SVN 20051112, taken from the gcc-3_4-branch. + * Build-depend on expect-tcl8.3 on all architectures. + + -- Matthias Klose Sat, 12 Nov 2005 14:52:13 +0100 + +gcc-3.4 (3.4.4-9) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20051015. + * Update hurd-changes.dpatch (Michael Banck). Closes: #322624. + * Add support for the ppc64 architecture (Andreas Jochens). + Closes: #326875. + * Fix java wrapper script, mishandles command line options with arguments. + * Fix some lintian warnings. + * Readd missing gpc info files (closes: #333137). + * Update for M32R's libffi patch (NIIBE Yutaka). Closes: #329893. + * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #331216. + * On i386, build-depend on libc6-dev-amd64. + * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. + * Fix more lintian warnings. + * Drop gnat-3.3 as an alternative build dependency. We'll stop building + gnat from the 3.3 sources soon. + * Add gpc updates by Waldek Habisch, disable patches included in the + updates (gpc-version-fix gpc-range-check). + + -- Matthias Klose Sat, 15 Oct 2005 21:25:20 +0200 + +gcc-3.4 (3.4.4-8) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20050821. + * Disable multiarch-includes; redo biarch-includes to include the paths + for the non-default biarch, when called with -m32/-m64. + * Add biarch include directories + /usr/include/c++//-linux-gnu + to the C++ include path, + /usr/local/include/-linux-gnu + /usr/include/-linux-gnu + to the system include paths, depending on 32/64 bit mode. + * Fix dpkg-architecture adjustments for the Hurd (closes: #322624). + * Tighten the dependencies between the compiler packages to the same + version and release. Use some substitution variables for control file + generation. + * Use gcc-3.4 as the bootstrap compiler, prefer gnat-3.4 over gnat-3.3 + as the ada bootstrap compiler. + * Make xlibs-dev a java only build dependency. + + -- Matthias Klose Sun, 21 Aug 2005 17:33:57 +0200 + +gcc-3.4 (3.4.4-7) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20050809. + * Synchronize with Ubuntu. + * Add build dependency on lib64gcc1 on powerpc. + * Bugs found in GCC-3.3.x, fixed in GCC-3.4.x: + - [m68k] ICE: in verify_local_live_at_start (closes: #245584). + - Segfault with C++ inheritance (closes: #223226). + * gpc docs: Fix hyperlinks to the example files (closes: #321249). + + -- Matthias Klose Tue, 9 Aug 2005 19:58:06 +0200 + +gcc-3.4 (3.4.4-6ubuntu3) breezy; urgency=low + + * Jeff Bailey + + i386 biarch update for glibc-2.3.5 (not yet enabled for unstable). + - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on + libc6-amd64. + - debian/control.m4: Suggest libc6-dev-amd64 rather than amd64-libs-dev. + - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] + Build-Dep on binutils >= 2.16.1-2ubuntu3 + + * Matthias Klose + + - Disable building the ffi, java and treelang packages from the gcc-3.4 + source. + - debian/control: Remove the ffi, java and treelang packages. + - Move biarch libg2c shared libraries to the libXXg2c0 package. + - Add build dependencies on libXXgcc1 for biarch builds. + - libgcj5{,-common}: Add dependency on gcc-3.4-base (closes: #319372). + + -- Matthias Klose Sun, 7 Aug 2005 10:53:21 +0200 + +gcc-3.4 (3.4.4-6ubuntu2) breezy; urgency=low + + * Fix packaging libg2c0-dev. + + -- Matthias Klose Fri, 29 Jul 2005 23:06:03 +0200 + +gcc-3.4 (3.4.4-6ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Fri, 29 Jul 2005 11:11:11 +0000 + +gcc-3.4 (3.4.4-6) unstable; urgency=low + + * Enable the biarch compiler for powerpc (closes: #268023). + * Updated to gcc-3.4 CVS 20050729. + * Fix FTBFS on GNU/kFreeBSD (Aurelien Jarno). Closes: #317965. + * Build libg2c biarch packages (closes: #316175). + * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. + + -- Matthias Klose Fri, 29 Jul 2005 13:07:14 +0200 + +gcc-3.4 (3.4.4-5ubuntu1) breezy; urgency=low + + * Synchronize with Debian. + + -- Matthias Klose Wed, 6 Jul 2005 15:49:36 +0200 + +gcc-3.4 (3.4.4-5) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20050706. + * amd64: Fix 32/libgcc symlinks to point to /usr/lib32, instead of /lib32. + Closes: #315751, #316141. + * arm: Don't change the libstdc++ soname anymore. + * libf2c/libI77/fio.c: Set MXUNIT to 1000. Closes: #290102. Require + libg2c0 (>= 1:3.4.4-5). + + -- Matthias Klose Wed, 6 Jul 2005 01:33:01 +0200 + +gcc-3.4 (3.4.4-4) unstable; urgency=low + + * Fix FTBFS of the hppa64-linux cross compiler. Don't add the + multiarch include dirs when cross compiling. + * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, + gcj-X.Y, g77-X.Y, gnat-X.Y, treelang-X.Y, gpc-X.Y, if a path component in + the gcc library path changes (i.e. version or target alias). + * libg2c-dev: Move g2c.h from the private include directory to /usr/include. + Conflict with g77-2.95, g77-2.96. + * For gcj-3.4, add a conflict to libgcj4-dev and libgcj6-dev. + + -- Matthias Klose Sat, 2 Jul 2005 12:00:27 +0200 + +gcc-3.4 (3.4.4-3) unstable; urgency=low + + * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. + Restore the /usr/lib32 symlink. Closes: #315751. + * debian/NEWS.*: Update for 3.4.4. + + -- Matthias Klose Mon, 27 Jun 2005 16:16:15 +0200 + +gcc-3.4 (3.4.4-2) unstable; urgency=medium + + * Remove the build dependencies on gxx-3.3, not used in the build for + running the testsuite against the installed compiler versions. + Fixes FTBFS on mips, mipsel. + * On arm, don't build libstdc++6 with a changed soname. The arm ABI change + will be handled in another way. + + -- Matthias Klose Fri, 24 Jun 2005 01:20:02 +0200 + +gcc-3.4 (3.4.4-1) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20050615. + * gij-3.4: Provide an rmiregistry alternative (using rmiregistry-3.4). + * gcj-3.4: Provide an rmic alternative (using rmic-3.4). + * Apply proposed patch for PR18421 and PR18719, backport to 3.4 (m68k only). + * Fix g++ dependency on libstdc++-dev on arm. + * Build libffi3{,-dev} packages again. + * Build libg2c{0,-dev} from the gcc-3.4 sources as well. Avoid using + g77-3.3 on mipsel. Not clear, if there are ABI incompatibilities. + * libg2c0: Require the shared library built from the gcc-3.4 sources. + * Build depend on dpkg-dev (>= 1.13.9), not dpkg (>= 1.13.7). + * (Build-)depend on binutils (>= 2.15-7). + * Build-depend on libunwind7-dev (>= 0.98.5-7) on ia64. + * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. + * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build files. + + -- Matthias Klose Wed, 15 Jun 2005 01:55:09 +0200 + +gcc-3.4 (3.4.4-0ubuntu6) breezy; urgency=low + + * Updated to gcc-3.4 CVS 20050613. + * Add build dependency on dpkg (>= 1.13.7). + * On linux systems, configure for -linux-gnu. + * Configure the hppa64 cross compiler to target hppa64-linux-gnu. + * (Build-)depend on binutils-2.16.1. + + -- Matthias Klose Mon, 13 Jun 2005 18:11:07 +0000 + +gcc-3.4 (3.4.4-0) unstable; urgency=low + + * Syncronise with Ubuntu. + * Disable powerpc biarch support, waiting for glibc. + + -- Matthias Klose Mon, 6 Jun 2005 23:34:30 +0200 + +gcc-3.4 (3.4.4-0ubuntu5) breezy; urgency=low + + * Loosen dependencies on packages of architecture `all' to not break + binary only uploads. + * g++-3.4 provides c++abi2-dev. + * Updated to gcc-3.4 CVS 20050605. + * Do not build lib64gcc1 and lib64stdc++6 on powerpc anymore, now built + from the gcc-4.0 sources. + + -- Matthias Klose Sun, 5 Jun 2005 15:10:21 +0200 + +gcc-3.4 (3.4.4-0ubuntu4) breezy; urgency=low + + * Enable powerpc biarch support, build lib64gcc1 on powerpc (Jeff Bailey). + * debian/rules.d/binary-gcc.mk: Fix syntax errors (Jeff Bailey). + * Add patch to disable libstdc++'s configure checking, if it can't run + 64bit binaries on 32bit kernels (Sven Luther). + * Run the testsuite with -m64, if we can execute 64bit binaries. + * Add libc6-dev-ppc64 as build dependency for powerpc. + * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested + by Ryan Murray). + * On hppa, build-depend on expect-tcl8.3 instead of expect. + * Updated to gcc-3.4 CVS 20050527. + + -- Matthias Klose Fri, 27 May 2005 14:25:13 +0000 + +gcc-3.4 (3.4.4-0ubuntu3) breezy; urgency=low + + * Adjust debian/rules conditionals to work with all dpkg versions. + * Use -linux as the target alias for the linux architecture, + independent of the dpkg-architecture version used for the build. + * Configure powerpc biarch builds using + --enable-targets=powerpc-linux,powerpc64-linux (disabled by default). + * Add conflicts/replaces for libstdc++-{dev,dbg,pic} with the version + built with the old C++ ABI (amd64 only). + + -- Matthias Klose Sun, 22 May 2005 15:38:21 +0200 + +gcc-3.4 (3.4.4-0ubuntu2) breezy; urgency=low + + * Configure for i486-linux*, not i386-linux*. + * Fix build failures for builds with disabled testsuite. + * debian/rules.d/binary-gcc.mk: Fix typo, on amd64, install symlinks for + shared 32bit libgcc. + + -- Matthias Klose Sat, 21 May 2005 08:36:43 +0000 + +gcc-3.4 (3.4.4-0ubuntu1) breezy; urgency=low + + * GCC 3.4.4 release. + * libgcj5-dev: Do not provide libgcj-dev. + * Adjust debian/rules conditionals to work with all dpkg versions. + * Remove the proposed patch for PR16676. + + -- Matthias Klose Fri, 20 May 2005 18:52:36 +0200 + +gcc-3.4 (3.4.3ds2-13ubuntu4) breezy; urgency=low + + * gcc-3.4.4 release candidate 1. + * Build libg2c0, libg2c-dev from gcc-3.4 sources. + * On amd64 disable the build of fixincludes, libobjc1, libgcj-common, + lib32stdc++6. + * Manually patch all `configure' files for libraries to use + deplibs_check_method=pass_all unconditionally for all linux architectures. + + -- Matthias Klose Wed, 11 May 2005 11:45:47 +0200 + +gcc-3.4 (3.4.3ds1-13ubuntu3) breezy; urgency=low + + * Really disable biarch on i386. + + -- Matthias Klose Mon, 9 May 2005 19:43:30 +0200 + +gcc-3.4 (3.4.3ds1-13ubuntu2) breezy; urgency=low + + * Updated to gcc-3.4 CVS 20050509. + * For powerpc, apply a proposed patch for PR16676, fixing the glibc build + with -g1 for powerpc NPTL + * Fix spurious range-check failure in the gpc runtime (Waldek Hebisch). + * Renable gpc on all architectures, where it was disabled before. + * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev + build dependency, add (build-)conflict (<= 1.1ubuntu1). + * Remove the note from the fastjar package description, stating, that + fastjar is incomplete compared to the "standard" jar utility. + + -- Matthias Klose Mon, 9 May 2005 17:40:07 +0200 + +gcc-3.4 (3.4.3ds1-13ubuntu1) breezy; urgency=low + + * Updated to gcc-3.4 CVS 20050505. + * Disable bootstrap comparision check. The check currently fails on + ada/b_gnatb.o. + * On amd64, build for the default C++ ABI version. + * Update gpc to 20050331 snapshot. + * Disable gpc for hppa and sparc. + + -- Matthias Klose Mon, 2 May 2005 21:04:34 +0200 + +gcc-3.4 (3.4.3-13) unstable; urgency=medium + + * Don't call dh_shlibdeps on 64bit libraries (closes: #307625). + * Append the GCC version to the fastjar/grepjar version string. + Closes: #296567. + * On powerpc, configure using --enable-targets to build a biarch compiler. + Disabled by default. + * Fixed java build for powerpc-biarch builds (Bastian Blank). + * Update to libunwind-0.98.5 to sync with libunwind source package. + * Fix build failure on hurd-i386 (closes: #301064). + * Update priority of java alternatives from 33 to 34. + * Fix gcc-3.4-hppa64, gij-3.4 and gcj-3.4 postinst, to not ignore errors + from update-alternatives. + * Fix gcc-3.4-hppa64, fastjar, gij-3.4 and gcj-3.4 prerm, + to not ignore errors from update-alternatives. + + -- Matthias Klose Wed, 4 May 2005 18:02:04 +0200 + +gcc-3.4 (3.4.3-12.1) unstable; urgency=high + + * Non-maintainer upload. + * High-urgency upload for sarge-targetted RC bugfix. + * Fix fastjar postinst, to not ignore errors from update-alternatives. + Closes: #302995. + * Patch away a doxygen syntax error in + libstdc++/include/bits/basic_string.h that was causing doxygen to + segfault. Closes: #307241. + + -- Steve Langasek Sun, 1 May 2005 14:36:39 -0700 + +gcc-3.4 (3.4.3-12ubuntu1) breezy; urgency=low + + * Updated to gcc-3.4 CVS 20050413. + * Synchronise with Debian -12. + + -- Matthias Klose Wed, 13 Apr 2005 11:44:20 +0200 + +gcc-3.4 (3.4.3-12) unstable; urgency=medium + + * Fix libunwind tarball name, fixing FTBFS on ia64. + * Updated to gcc-3.4 CVS 20050314. + - Remove fix for PR19311, applied upstream. + + -- Matthias Klose Mon, 14 Mar 2005 02:00:09 +0100 + +gcc-3.4 (3.4.3-11) unstable; urgency=medium + + * Include libstdc++6 package again. + + -- Matthias Klose Sat, 5 Mar 2005 23:47:56 +0100 + +gcc-3.4 (3.4.3-10) unstable; urgency=medium + + * Update to libunwind-0.98.4 (Fix a typo in _ReadSLEB.c which caused + hangs when throwing exceptions from Intel ICC-compiled programs). + * Add two m68k specfic patches concerning wrong code + generation (Richard Zidlicky). + * Updated to gcc-3.4 CVS 20050305. + * Apply proposed patch for PR19311, ICE compiling OOo2. + * Include {,e,p,x}mmintrin.h headers for amd64 as well (closes: #298174). + + -- Matthias Klose Sat, 5 Mar 2005 12:06:59 +0100 + +gcc-3.4 (3.4.3-9ubuntu4) hoary; urgency=low + + * Updated to gcc-3.4 CVS 20050314. + - Remove fix for PR19311, applied upstream. + * Include {,e,p,x}mmintrin.h headers for amd64 as well. + + -- Matthias Klose Mon, 14 Mar 2005 17:07:24 +0100 + +gcc-3.4 (3.4.3-9ubuntu3) hoary; urgency=low + + * Apply proposed patch for PR19311, seen as build failure in OOo2 on amd64. + * Updated to gcc-3.4 CVS 20050303. + + -- Matthias Klose Thu, 3 Mar 2005 11:07:56 +0100 + +gcc-3.4 (3.4.3-9ubuntu2) hoary; urgency=low + + * Build libstdc++6-0 on amd64. + + -- Matthias Klose Fri, 11 Feb 2005 11:56:10 +0100 + +gcc-3.4 (3.4.3-9ubuntu1) hoary; urgency=low + + * Do not build packages, now built from the gcc-4.0 source package: + libgcc1, lib32gcc1, lib64gcc1, libstdc++6, lib64stdc++6, fastjar. + * Remove the libunwind sources. + * Resynchronise with Debian. + + -- Matthias Klose Wed, 9 Feb 2005 11:15:56 +0100 + +gcc-3.4 (3.4.3-9) unstable; urgency=medium + + * Build-depend on graphviz (moved to main), remove the pregenerated + libstdc++ docs from the diff. + * Updated to gcc-3.4 CVS 20050207. + * Fix typo in gij-3.4 suggests (closes: #290483). + + -- Matthias Klose Sat, 29 Jan 2005 13:58:12 +0100 + +gcc-3.4 (3.4.3-8) unstable; urgency=low + + * Fix powerpc biarch build and package dependencies. + + -- Matthias Klose Mon, 10 Jan 2005 23:46:40 +0100 + +gcc-3.4 (3.4.3-7ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. + * On ia64, do not build the libunwind library from the gcc-3.4 source. + * For libgcc1 on ia64, set a hard dependency on libunwind7. + + -- Matthias Klose Sun, 9 Jan 2005 11:08:01 +0100 + +gcc-3.4 (3.4.3-7) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20050108. + * debian/patches/protector.uue: Update for gcc-3.4.3. + * Add debian/patches/libssp.dpatch: Hardened Debian SSP/ProPolice + library (libssp), not applied by default (Lorenzo Hernandez Garcia-Hierro). + * Update cross build patches (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 8 Jan 2005 10:57:39 +0100 + +gcc-3.4 (3.4.3-6ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. + + -- Matthias Klose Mon, 20 Dec 2004 21:23:09 +0100 + +gcc-3.4 (3.4.3-6) unstable; urgency=low + + * On ia64, configure --with-system-libunwind, build libunwind from the + libunwind-0.98.3 source to include the shared library in libgcc1. + Fixes FTBFS of libunwind on ia64. + * Updated to gcc-3.4 CVS 20041218. + - Fixes PR19005, 3.4 regression on valid code (closes: #285695). + + -- Matthias Klose Sun, 19 Dec 2004 00:20:03 +0100 + +gcc-3.4 (3.4.3-5ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. + + -- Matthias Klose Wed, 15 Dec 2004 09:54:45 +0000 + +gcc-3.4 (3.4.3-5) unstable; urgency=low + + * Updated to gcc-3.4 CVS 20041215. + + -- Matthias Klose Wed, 15 Dec 2004 09:54:45 +0000 + +gcc-3.4 (3.4.3-4) unstable; urgency=medium + + * Reupload witch fixed diff.gz. + + -- Matthias Klose Sun, 5 Dec 2004 11:37:23 +0100 + +gcc-3.4 (3.4.3-3) unstable; urgency=medium + + * Reenable fastjar package on mips/mipsel, left out in 3.4.3-2. + * On i386, libgcj5 doesn't depend on lib64gcc1 anymore. dh_shlibdeps found + the wrong library. Closes: #283741. + + -- Matthias Klose Sat, 4 Dec 2004 09:12:29 +0100 + +gcc-3.4 (3.4.3-2) unstable; urgency=high + + * Tighten dependency on binutils (>= 2.15-5). Add libunwind support + on ia64. Include the libunwind shared library in the libgcc1 package. + For sarge, we cannot introduce another required package; after the release + of sarge libgcc1 will depend on libunwind7 on ia64. + * Updated to gcc-3.4 CVS 20041127. + - Fix PR 14838, ICE on hppa. Addresses: #272673. + - Applies backport of patch to fix PR17813. + * Add M32R support (NIIBE Yutaka). Closes: #282880. + - debian/rules.patch: Added M32R support. + - debian/rules.defs: Disable Java and Ada for M32R. + - debian/patches/m32r-{fixes,gotoff,libffi,limits,stack}.dpatch: New files. + - debian/patches/autoreconf.dpatch: Enable again. + + -- Matthias Klose Thu, 25 Nov 2004 23:25:10 +0100 + +gcc-3.4 (3.4.3-1ubuntu1) hoary; urgency=low + + * Resynchronise with Debian. + + -- Scott James Remnant Mon, 22 Nov 2004 12:49:47 +0000 + +gcc-3.4 (3.4.3-0ubuntu0) hoary; urgency=low + + * New upstream version 3.4.3. + * Resync with Debian. + * For amd64, add missing 32bit libstdc++ files to 'libstdc++-dev' package. + * For amd64, move 32bit libs from /emul/ia32-linux to /lib32 and + /usr/lib32. + * Fix PR fortran/17541, data statements with double precision + constants fail. + * Remove fix for PR 17186, reverted upstream. + + -- Matthias Klose Mon, 1 Nov 2004 20:45:36 +0000 + +gcc-3.4 (3.4.3-1) unstable; urgency=medium + + * gcc-3.4.3 release. + - Doesn't reject valid C++ code (namespaces). Closes: #279185. + * Tightened dependencies on the gcc-3.4-base package. + * Don't build java on mips/mipsel, until the GOT handling is fixed. + Closes: #279850. + * Fix atomic stdc++ operations are broken on some MIPS machines. Patch + by Thiemo Seufer. Closes: #278409. + * Fixed empty libstdc++ manpages. Closes: #280913. + * README.Debian: Add a note, that lib64gcc1, amd64-libs and maybe other + library packages need to be installed when targeting 64bit on the i386 + platform. Closes: #272536. + * On ia64, the ACATS hangs in unaligned memory access. Start a shell + script, which kills these tests manually. + * README.Debian: Add note on gcc-3.4 -m64 code generation. Closes: #268757. + * Don't run the boehm-gc test, hangs at least on m68k. + + -- Matthias Klose Mon, 18 Oct 2004 07:04:37 +0200 + +gcc-3.4 (3.4.2-3) unstable; urgency=medium + + * Patches to fix wrong code regressions from the gcc-3.4 CVS branch: + - Fix PR fortran/17541, data statements with double precision constants + fail. Closes: #273755. + - Fix PR c++/17976, calling destructor twice. Closes: #260747. + - Fix PR 15526, -ftrapv aborts on 0 * (-1). Closes: #273564. + * For amd64, add missing 32bit libstdc++ files to 'libstdc++6-dev' package. + (Andreas Jochens). Closes: #274362. + * Update cross build patches (Nikita V. Youshchenko). + + -- Matthias Klose Fri, 15 Oct 2004 07:01:03 +0200 + +gcc-3.4 (3.4.2-2) unstable; urgency=medium + + * Updated to gcc-3.4.2: + - adding updated libstdc++-v3 baseline files for 3.4.0. + - C++ updates + - Fix references in cpp-3.4(1) and gcc-3.4(1) manpages. + - Fix bus errors with g77-3.4 on sparc (closes: #267703). + - Fix segfault with java example code from report (closes: #268991). + * Add some packaging corrections for amd64 (closes: #267049). + * Normalize pathes in .la and .lai files (closes: #268140, #268929). + * Fix building libffi without libgcj (closes: #267647). + * libltdl.dpatch: Search the versioned extension, when loading a shared + library (i.e. gij looks for .so.5 for loading additional libraries + like the GTK based AWT peers. Thanks to Michael Koch. Closes: #270030. + + -- Matthias Klose Tue, 7 Sep 2004 20:28:14 +0200 + +gcc-3.4 (3.4.2-2ubuntu1) warty; urgency=low + + * Built from the gcc-3.4.2 release tarball. + * lib64stdc++6: Fix versioned dependency on lib64gcc1. + + -- Matthias Klose Tue, 7 Sep 2004 20:06:40 +0000 + +gcc-3.4 (3.4.1ds1-7ubuntu4) warty; urgency=low + + * debian/rules2: Fix realpath usage. + + -- Matthias Klose Sun, 29 Aug 2004 09:37:05 +0000 + +gcc-3.4 (3.4.1ds1-7ubuntu3) warty; urgency=low + + * debian/rules2: Fix realpath usage. + + -- Matthias Klose Sun, 29 Aug 2004 09:37:05 +0000 + +gcc-3.4 (3.4.1ds1-7ubuntu2) warty; urgency=low + + * Fix dependencies on libgcc1 and ia32-libs. + * Updated to gcc-3.4 CVS 20040829 (3.4.2 release candidate): + - adding updated libstdc++-v3 baseline files for 3.4.0. + - C++ updates + - Fix references in cpp-3.4(1) and gcc-3.4(1) manpages. + * Normalize pathes in .la and .lai files. + * Fix building libffi without libgcj. + + -- Matthias Klose Sun, 29 Aug 2004 09:37:05 +0000 + +gcc-3.4 (3.4.1ds1-7ubuntu1) warty; urgency=low + + * Revert change to binutils dependencies. + * Depend and build depend on warty's glibc version. + * Set the C++ ABI version to 1 (compatible with gcc-3.3), rename + libstdc++ packages to libstdc++6-0{,-dev,-dbg}. + + -- Matthias Klose Thu, 19 Aug 2004 16:19:58 +0200 + +gcc-3.4 (3.4.1ds1-7) unstable; urgency=medium + + * Updated to gcc-3.4 CVS 20040819. + * On amd64, build a biarch compiler defaulting to 64 bit. + - build lib32gcc1 and lib32stdc++6 packages (closes: #257906). + * On i386, build a biarch compiler defaulting to 32bit (Dan Jacobowitz). + * Add proposed patch for 3.4 regression PR16706 (closes: #261051). + * Remove superfluous ')' in debian/rules.def (closes: #263951). + * debian/rules2: Correct typo for cross builds (closes: #263928). + * Update cross-configure.dpatch (closes: #263925). + * Tighten binutils build-dependency/dependency to (>= 2.15-2). + Closes: #263019. + * Tighten glibc dependency, needed at least for m68k to avoid + regressions with new binutils. + * libgcj.pc is included in libgcj5-dev package (closes: #264129). + * Replace 'lib64' hack by setting proper MULTILIB_OSDIRNAMES + (Andreas Metzler). Closes: #262892. + * Reenable the complete build of the libgcj5-awt package. + * Add /lib64 link to /lib for architecture powerpc64 (closes: #264857). + * Fix libgcj5-common doc dir symlink (closes: #265652). + + -- Matthias Klose Thu, 19 Aug 2004 11:35:04 +0200 + +gcc-3.4 (3.4.1ds1-4sarge1) testing-proposed-updates; urgency=low + + * Upload to testing-proposed-updates to avoid the dependency on + binutils-2.15. + * Add path of newly built libgcc to LD_LIBRARY_PATH for building the + shared gnat libraries (closes: #262860). + * Really fix build-dependencies for hurd systems (closes: #262459). + * Fix locations of Ada docs in gnat-doc's doc-base (closes: #262911). + * Fix build with java disabled, but libffi enabled (closes: #263013). + * Add epoch to libg2c-dev's version number (closes: #262884). + * On amd64, do not build-depend on g77-3.3, gobjc3.3, g++-3.3. + Closes: #262898. The dependencies only needed for running the testsuite + with the installed compilers. + * Build an empty libgcj5-awt package. + + -- Matthias Klose Wed, 4 Aug 2004 22:56:35 +0200 + +gcc-3.4 (3.4.1ds1-5) unstable; urgency=high + + * Fix gpc build failures on alpha, mips, mipsel (closes: #262208). + * Fix gcc-hppa64 build failure (closes: #262249). + * Don't build the GTK+ based peers to avoid dependency on libtiff. + * Fix build-dependencies for hurd systems (closes: #262459). + * Disable the testsuite, locales is currently not installable while + libc and libc-dev are out of date on many architectures. + + -- Matthias Klose Sat, 31 Jul 2004 06:34:04 +0200 + +gcc-3.4 (3.4.1ds1-4) unstable; urgency=high + + * Update gpc to gpc-2.1 20040516. + - Fixing about 1200 gpc testsuite failures on mips. + * Update to gcc-3.4 CVS 20040728. + * Remove --enable-threads=posix from the configure options, it's + the default for *-linux, but not for other archs (closes: #261361). + * Fix libgnat symlinks (closes: #261004). + + -- Matthias Klose Wed, 28 Jul 2004 08:04:34 +0200 + +gcc-3.4 (3.4.1-3) unstable; urgency=medium + + * Add missing closing parantheses in build dependencies. + * Fix libstdc++.so symlink (closes: #260523). + * Install language files with versioned package name. + + -- Matthias Klose Wed, 21 Jul 2004 23:54:06 +0200 + +gcc-3.4 (3.4.1-2) unstable; urgency=low + + * Update to gcc-3.4 CVS 20040717. + * Update the stack protector patch to 3.4-2, but don't apply it by default. + * On arm, build packages libstdc++6-0, libstdc++6-0-dev, ... gcc-3.5 + changes the ABI on arm, but likely keeping the soname. + + -- Matthias Klose Sat, 17 Jul 2004 10:54:41 +0200 + +gcc-3.4 (3.4.1-1) unstable; urgency=medium + + * gcc-3.4.1 final release. + - configured with --enable-libstdcxx-allocator=mt. + * Update to gcc-3.4 CVS 20040710. + * Fixes for generating cross compiler packages (Jeff Bailey). + * Make gccbug script POSIX compliant (David Weinehall). + * Disable the build of the libobjc, libg2c, libffi, libgcj-common, + fixincludes and protoize packages (still built from the gcc-3.3 package). + * Build fastjar, implemented -u option (closes: #116145). + * Integrated multiarch support. + * Lower priorities of all packages except libgcc1 to optional. + * Add notes on GCC 3.3 / 3.4 incompatinilities (NEWS.Debian, README.Debian). + * Split out the gcj-3.4 jar file to it's own binary indep package. + + -- Matthias Klose Sat, 10 Jul 2004 11:21:26 +0200 + +gcc-3.4 (3.4.0-4) experimental; urgency=low + + * gcc-3.4.1 release candidate 1. + * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). + * Don't build the libg2c0 package on mipsel-linux (no clear answer on + debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible + (post-sarge issue). + * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. + + -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 + +gcc-3.4 (3.4.0-3) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040613. + * On sparc, set the the build target to sparc64-linux, build with + switch defaulting to code generation for v7. To generate code for + sparc64, use the -m64 switch. + * Add missing doc-base files to -doc packages. + * Add portability patches and kbsd-gnu patch (Robert Millan). + Closes: #251293, #251294. + * Apply fixes for cross build (Nikita V. Youshchenko). + * Do not include the precompiled libstdc++ header files into the -dev + package (still experimental). Closes: #251707. + * Reflect renaming of Ada user's guide. + * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). + + -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 + +gcc-3.4 (3.4.0-2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040516. + * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, + migrated to libc6-dev. Adjust dependencies. + * Integrate gpc test results into the GCC test summary. + * gnatchop calls gcc-3.4 (closes: #245438). + * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. + * debian/copyright: Add libstdc++-v3's exception clause. + * Add libffi update for mips (Thiemo Seufer). + * Reference Debian specific bug reporting instructions. + * Update README.Bugs. + * Fix FTBFS for libstdc++-doc. + * Update libjava patch for hppa (Randolph Chung). + * Fix installation of ffitarget.h header file. + * On amd64-linux, configure --without-multilib, disable Ada. + + -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 + +gcc-3.4 (3.4.0-1) experimental; urgency=low + + * gcc-3.4.0 final release. + + * Why experimental? + - Do not interfer with packages currently built from gcc-3.3 sources, + i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. + - Biarch sparc compiler doesn't built yet. + - Use of configure flags affecting binary ABI's not yet determined. + - Several ABI bugs have been fixed. Unfortunately, these changes will break + binary compatibility with earlier releases on several architectures: + alpha, mips, sparc, + - hppa and m68k changed sjlj based exception handling to dwarf2 based + exception handling. + + See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more + specific information. + + -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 + +gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040403. + * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). + * Reenable sparc-biarch patches (closes: #239856). + * Build the shared libgnat library, needed to fix FTBFS for some + Ada library packages (Ludovic Brenta). + Currently enabled for hppa, i386, ia64. + + -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 + +gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low + + * Update to gcc-3.4 CVS 20040320. + * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). + * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). + * Reenable s390-biarch patches. + * Update the cross compiler build files (Nikita V. Youshchenko). + + -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 + +gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low + + * Start gcc-3.4 packaging, get rid of the epoch for most of the + packages. + + -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 + +gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040401. + - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). + - Fix PR 14755, miscompilation of loops with bitfield counter. + Closes: #241255. + - Fix PR 16040, crash in function initializing const data with + reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). + - Remove patches integrated upstream. + * Reenable build of gpidump on powerpc and s390. + + -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 + +gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium + + * Update to gcc-3_3-branch CVS 20040321. + - Fix PR target/13889 (ICE on valid code on m68k). + * Fix FTFBS on s390. Do not build gpc's gpidump on s390. + * Reenable gpc on arm. + + -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 + +gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040320. + - Revert patch for PR14640 (with this, at least mozilla-firefox was + miscompiled on x86 (closes: #238621). + * Update the gpc tarball (there were two releases with the same name ...). + * Reenable gpc on alpha and ia64. + + -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 + +gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040314. + - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). + - Fix ICE in dwarf-2 on code using altivec (closes: #203835). + * Update hurd-changes patch. + * Add libgcj4-dev as a recommendation for gcj (closes: #236547). + * debian/copyright: Added exemption to static linking of libgcc. + + * Phil Blundell: + - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. + + -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 + +gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low + + * Update to gcc-3_3-branch CVS 20040306. + - Fixes bootstrap comparision error on ia64. + - Allows ghc build with gcc-3.3. + - On amd64, don't imply 3DNow! for -m64 by default. + - Some arm specific changes + - Fix C++/13944: exception in constructor of a class to be thrown is not + caught. Closes: #228099. + * Enable the build of gcc-3.3-hppa64 on hppa. + Add symlinks for as and ld to point to hppa64-linux-{as,ld}. + * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. + * Fix libgc2c-pic compatibility links (closes: #234333). + The link will be removed for gcc-3.4. + * g77-3.3: Conflict with other g77-x.y packages. + * Tighten shlibs dependencies to latest released versions. + + * Phil Blundell: + - debian/patches/arm-233633.dpatch: New Fixes problems with half-word + loads on ARMv3 architecture. (Closes: #233633) + - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for + leaf functions in PIC code on ARM. + + -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 + +gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium + + * gcc-3.3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + + -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 + +gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). + * Fix title of libstdc++'s html main index (closes: #196381). + * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. + For g77-3.3 add conflicts to other g77 packages. Closes: #224848. + * Update the stack protector patch to 3.3-7, but don't apply it by default. + Closes: #230338. + * On arm, use arm6 as the cpu default (backport from mainline, PR12527). + * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. + + -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 + +gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20040125. + - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). + - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). + - Fixed PR13544, removed backport for PR12862. + - Integrated backport for PR12441. + * Fixed since 3.3: java: not implemented interface methods of abstract + classes not found (closes: #225438). + * Disable pascal on arm architecture (currently broken). + * Update the build files to build a cross compiler (Nikita V. Youshchenko). + See debian/README.cross in the source package. + * Apply revised patch to make -mieee the default on alpha-linux, + and add -mieee-disable switch to turn the default off (closes: #212912). + (Tyson Whitehead) + + -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 + +gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium + + * Update to gcc-3.3.3 CVS 20040110. + - Fixes compilation not terminating at -O1 on hppa (closes: #207516). + * Add backport to fix PR12441 (closes: #224576). + * Revert backport to 3.3 branch to fix PR12862, which introduced another + regression (PR13544). Closes: #225663. + * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). + * Disable treelang build for cross compiler build. + * Disable pascal on alpha and ia64 architectures (currently broken). + + -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 + +gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031229. + - Fixes bootstrap error on ia64-linux. + - Fix -pthread on mips{,el}-linux (closes: #224875). + - Fix -Wformat for C++ (closes: #217075). + * Backport from mainline: Preserve inline-ness when redeclaring + a function template (closes: #195264). + * Add missing intrinsics headers on ix86 (closes: #224593). + * Fix location of libg2c libdir in libg2c.la file (closes: #224848). + + -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high + + * NMU + * Fixed mips(el) spec file for -pthread: (Closes: #224875) + * [debian/patches/mips-pthread.dpatch] New. + * [debian/rules.patch] Added it to debian_patches. + + -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 + +gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low + + * Update to gcc-3.3.3 CVS 20031206. + - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. + - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. + Closes: #219949. + * Add missing unwind.h to gcc package (closes: #220846). + * Regenerate control file to fix build dependencies for m68k. + * More gpc only patches to fix test failures on m68k. + * Reenable gpc for the Hurd (closes: #189851). + + -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 + +gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low + + * Update libffi-dev package description (closes: #219508). + * For gij and libgcj fix dependency on the libstdc++ package, if + the latter isn't installed during the build. + * Apply patch to emit .note.GNU-stack section on linux arches + which by default need executable stack. + * Prefer gnat-3.3 over gnat-3.2 as a build dependency. + * Update the pascal tarball (different version released with the + same name). + * Add pascal patches to address various gpc testsuite failures. + On alpha and ia64, build gpc from the 20030830 version. Reenable + the build on m68k. + Remove the 20030507 gpc version from the tarball. + * Apply patch to build the shared ada libs and link the ada tools + against the shared libs. Not enabled by default, because gnat + and gnatlib are rebuilt during install. (Ludovic Brenta) + + -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 + +gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low + + * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. + + -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 + +gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium + + * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). + (Gerhard Tonn) + * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. + * Fix a wrong code generation bug on alpha. + (Falk Hueffner) + * Update NEWS files. + * Add Falk Hueffner to the Debian GCC maintainers. + * Enable ada on mips and mipsel, but don't build the gnatpsta tool. + + -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 + +gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium + + * Update to gcc-3.3.2. + * Update NEWS files. + * Miscompilation in the pari package at -O3 fixed (closes: #198172). + * On alpha-linux, revert -mieee as the default (Falk Hueffner). + Reopens: #212912. + * Add ia64-unwind patch (Jeff Bailey). + * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: + - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). + - Compilation failure of stlport (closes: #135224). + - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). + - Added missing some string::compare() members (closes: #141199). + - header declares std::pow (closes: #161853). + - does have at() method (closes: #59776). + - Fixed error in stl_deque.h (closes: #69530). + - Fixed problem with bastring (closes: #75759, #96539). + - bad_alloc and std:: namespace problem (closes: #75120). + - Excessive warnings from headers with -Weffc++ (closes: #76827). + + -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 + +gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20031005. + - Fixes cpp inserting a spurious newline (closes: #210478, #210482). + - Fixes generation of unrecognizable insn compiling kernel source + on alpha (closes: #202762). + - Fixes ICE in add_abstract_origin_attribute (closes: #212406). + - Fixes forward declaration in libstdc++ (closes: #209386). + - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). + * Make libgcj-common architecture all (closes: #211909). + * Build depend on: flex-old | flex (<< 2.5.31). + * Fix spec linking libraries with -pthread on powerpc (closes: #211054). + * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. + (Phil Blundell) + * debian/patches/arm-common.dpatch: fix excessive alignment of common + blocks causing binutils testsuite failures. + (Phil Blundell) + * Update priorities in debian/control to match the archive. + (Ryan Murray) + * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. + (Gerhard Tonn) + * On alpha-linux, make -mieee default and add -mieee-disable switch + to turn default off (closes: #212912). + (Tyson Whitehead) + * Add gpc upstream patch for memory corruption fix. + + -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 + +gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low + + * Add gcc-unsharing_lhs patch (closes: #210848) + + -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 + +gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030908. + * PR11716 (Michael Eager, Dan Jacobowitz): + Make GCC think that the maximum length of a short branch is + 64K instead of 128K. It's a big hammer, but it works. + Closes: #207915. + * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). + + -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 + +gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low + + * Update to gcc-3.3.2 CVS 20030831. + - Fix java NullPointerException detection with 2.6 kernels. + Closes: #206377. + - Fix bug in C++ typedef handling (closes: #205402). + - Fix -Wunreachable-code giving false complaints (closes: #196600). + * Update to gpc-20030830. + * Don't include /usr/share/java/repository into the class path according + to the new version of th Debian Java policy (closes: #205643). + * Build-Depend/Depend on libgc-dev. + + -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low + + * Remove the build dependency on locales for now. + + -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 + +gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.2 CVS 20030812. + - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation + and/or validation. Closes: #196090. + * Update NEWS files. + * Change ix86 default CPU type for code generation: + - i386-linux -> i486-linux + - i386-gnu -> i586-gnu + - i386-freebsd-gnu -> i486-freebsd-gnu + Use -march=i386 to target i386 CPUs. + + -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 + +gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low + + * gcc-3.3.1 (taken from CVS 20030805). + - C++: Fix declaration conflicts (closes: #203351). + - Fix ICE on ia64 (closes: #203840). + + -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 + +gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030728. + - Fix ICE in extract_insn, at recog.c:2148 on m68k. + Closes: #177840, #180375, #190818. + - Fix ICE while building libquicktime on alpha (closes: #192576). + - Fix failure to deal with using and private inheritance (closes: #202696). + * On sparc, /usr/lib was added to the library search path. Fix it. + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Fix error building the gcl package on arm (closes: #199835). + + -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 + +gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low + + * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). + - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). + - Remove documentation about multi-line strings (closes: #194391). + - Correctly document -falign-* parameters (closes: #198269). + - out-of-class specialization of a private nested template class. + Closes: #193830. + - Tighten shlibs dependency due to new symbols in libgcc. + * README.Debian for libg2c0, describing the need for g77-x.y when + working with the g2c header and library (closes: #189059). + * Call make with -j, if USE_NJOBS is set and non-empty + in the environment. + * Add another two m68k patches, partly replacing the workarounds provided + by Roman Zippel. + * Add the stack protector patch, but don't apply it by default. Edit + debian/rules.patch to apply it (closes: #171699, #189494). + * Remove wrong symlinks from gnat package (closes: #201882). + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - SMP kernel compilation on alpha (closes: #134197, #146883). + - ICE on arm while building imagemagick (closes: #173475). + * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: + - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). + + -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 + +gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium + + * Update to gcc-3.3.1 CVS 20030626. + - Fix ICE on arm compiling xfree86 (closes: #195424). + - Fix ICE on arm compiling fftw (closes: #186185). + - Fix ICE on arm in change_address_1, affecting a few packages. + Closes: #197099. + - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. + Closes: #195237. + - Do not warn about failing to inline functions declared in system headers. + Closes: #193049. + - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). + - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). + - Build crtbeginT.o on m68k (closes: #197613). + * Fix g++ man page symlink (closes: #196271). + * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. + * Disable treelang on powerpc (again). Closes: #196915. + * Pass -encoding in gcj-wrapper. + + -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 + +gcc-3.3 (1:3.3ds9-3) unstable; urgency=low + + * Closing more reports, fixed in 3.2/3.3: + - ICE building texmacs on m68k (closes: #177433). + - libstdc++: doesn't define trunc(...) (closes: #105285). + - libstdc++: setw is ignored for strings output (closes: #52382, #76645). + * Add build support to omit the manual pages and info docs from the + packages, disabled by default. Wait for a Debian statement, which can + be cited. Adresses: #193787. + * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. + Addresses ICEs (#177840, #190818). + * Update arm-xscale patch. + * libstdc++: use __attribute__(__unknown__), instead of (unknown). + Closes: #195796. + * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. + Request from Adrian Bunk. + * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. + * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). + * Make sure not to build using binutils-2.14.90.0.[12]. + + -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 + +gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium + + * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). + * Correct libgcc1 dependency (closes: #193689). + * Work around ldd/dpkg-shlibs failure on s390x. + + -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 + +gcc-3.3 (1:3.3ds9-1) unstable; urgency=low + + * gcc-3.3 final release. + See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. + * First merge of i386/x86-64 biarch support (Arnd Bergmann). + Disabled by default. Closes: #190066. + * New gpc-20030507 version. + * Upstream gpc update to fix netbsd build failure (closes: #191407). + * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied + from gcc-3.2 (Phil Blundell). + * Closing bug reports reported against older gcc versions (some of them + still present in Debian, but not anymore as the default compiler). + Usually, forwarded bug reports are linked to + http://gcc.gnu.org/PR + The upstream bug number usually can be found in the Debian reports. + + * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: + - General: + + GCC accepts multi-line strings without \ or " " &c (closes: #2910). + + -print-file-name sometimes fails (closes: #161615). + + ICE: reporting routines re-entered (closes: #179597, #180937). + + Misplaced paragraph in gcc documentation (closes: #179363). + + Error: suffix or operands invalid for `div' (closes: #150558). + + builtin memcmp() could be optimised (closes: #85535). + - Ada: + + Preelaborate, exceptions, and -gnatN (closes: #181679). + - C: + + Duplicate loop conditions even with -Os (closes: #94701). + + ICE (signal 11) (closes: #65686). + - C++: + + C++ error on virtual function which uses ... (closes: #165829). + + ICE when warning about cleanup nastiness in switch statements + (closes: #184108). + + Fails to compile virtual inheritance with variable number of + argument method (closes: #151357). + + xmmintrin.h broken for c++ (closes: #168310). + + Stack corruption with variable-length automatic arrays and virtual + destructors (closes: #188527). + + ICE on illegal code (closes: #184862). + + _attribute__((unused)) is ignored in C++ (closes: #45440). + + g++ handles &(void *)foo bizzarely (closes: #79225). + + ICE (with wrong code, though) (closes: #81122). + - Java: + + Broken zip file handling (closes: #180567). + - ObjC: + + @protocol forward definitions do not work (closes: #80468). + - Architecture specific: + - alpha + + va_start is off by one (closes: #186139). + + ICE while building kseg/ddd (closes: #184753). + + g++ -O2 optimization error (closes: #70743). + - arm + + ICE with -O2 in change_address_1 (closes: #180750). + + gcc optimization error with -O2, affecting bison (closes: #185903). + - hppa + + ICE in insn_default_length (closes: #186447). + - ia64 + + gcc-3.2 fails w/ optimization (closes: #178830). + - i386 + + unnecessary generation of instruction cwtl (closes: #95318). + + {athlon} ICE building mplayer (closes: #184800). + + {pentium4} ICE while compiling mozilla with -march=pentium4 + (closes: #187910). + + i386 optimisation: joining tests (closes: #105309). + - m68k + + ICE in instantiate_virtual_regs_1 (closes: #180493). + + gcc optimizer bug on m68k (closes: #64832). + - powerpc + + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). + + ICE with -O -Wunreachable-code (closes: #189702). + - s390 + + Operand out of range at assembly time when using -O2 + (closes: #178596). + - sparc + + gcc-3.2 regression (wrong code) (closes: #176387). + + ICE in mem_loc_descriptor when optimizing (closes: #178909). + + ICE in gen_reg_rtx when optimizing (closes: #178965). + + Optimisation leads to unaligned access in memcpy (closes: #136659). + + * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: + - General: + + Use mkstemp instead of mktemp (closed: #127802). + - Preprocessor: + + Fix redundant error message from cpp (closed: #100722). + - C: + + Optimization issue on ix86 (pointless moving) (closed: #97904). + + Miscompilation of allegro on ix86 (closed: #105741). + + Fix generation of ..ng references for static aliases (alpha-linux). + (closed: #108036). + + ICE compiling pari on hppa (closed: #111613). + + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). + + ICE in c-typeck.c (closed: #123687). + + ICE in gen_subprogram_die on alpha (closed: #127890). + + SEGV in initialization of flexible char array member (closed: #131399). + + ICE on arm compiling lapack (closed: #135967). + + ICE in incomplete_type_error (closed: #140606). + + Fix -Wswitch (also part of -Wall) (closed: #140995). + + Wrong code in mke2fs on hppa (closed: #150232). + + sin(a) * sin(b) gives wrong result (closed: #164135). + - C++: + + Error in std library headers on arm (closed: #107633). + + ICE nr. 19970302 (closed: #119635). + + std::wcout does not perform encoding conversions (closed: #128026). + + SEGV, when compiling iostream.h with -fPIC (closed: #134315). + + Fixed segmentation fault in included code for (closed: #137017). + + Fix with exception handling and -O (closed: #144232). + + Fix octave-2.1 build failure on ia64 (closed: #144584). + + nonstandard overloads in num_get facet (closed: #155900). + + ICE in expand_end_loop with -O (closed: #158371). + - Fortran: + + Fix blas build failure on arm (closed: #137959). + - Java: + + Interface members are public by default (closed: #94974). + + Strange message with -fno-bounds-check in combination with -W. + (closed: #102353). + + Crash in FileWriter using IOException (closed: #116128). + + Fix ObjectInputStream.readObject() calling constructors. + (closed: #121636). + + gij: better error reporting on `class not found' (closed: #125649). + + Lockup during .java->.class compilation (closed: #141899). + + Compile breaks using temporary inner class instance (closed: #141900). + + Default constructor for inner class causes broken bytecode. + (closed: #141902). + + gij-3.2 linked against libgcc1 (closed: #165180). + + gij-wrapper understands -classpath parameter (closed: #146634). + + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). + - ObjC: + + ICE on alpha (closed: #172353). + + * Closed reports reported against gcc-2.95 and fixed in newer versions: + - General: + + Undocumented option -pthread (closes: #165110). + + stdbool.h broken (closes: #167439). + + regparm/profiling breakage (closes: #20695). + + another gcc optimization error (closes: #51456). + + ICE in `output_fix_trunc' (closes: #55967). + + Fix "Unable to generate reloads for" (closes: #58219, #131890). + + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). + + Compiler error with -O2 (closes: #67631). + + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). + + Another ICE (closes: #90666). + + man versus info inconsistency (-W and -Wall) (closes: #93708). + + ICE on invalid extended asm (closes: #136630). + + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). + + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). + + ICE on __builtin_memset(s, 0, -1) (closes: #170994). + + -Q option to gcc appears twice in the documentation (closes: #137382). + + New options for specifying targets:- -MQ and -MT (closes: #27878). + + Configure using --enable-nls (closes: #51651). + + gcc -dumpspecs undocumented (closes: #65406). + - Preprocessor: + + cpp fails to parse macros with varargs correctly(closes: #154767). + + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is + empty (closes: #152709). + + gcc doesn't handle empty args in macro function if there is only + one arg(closes: #156450). + - C: + + Uncaught floating point exception causes ICE (closes: #33786). + + gcc -fpack-struct doesn't pack structs (closes: #64628). + + ICE in kernel (matroxfb) code (closes: #151196). + + gcc doesn't warn about unreachable code (closes: #158704). + + Fix docs for __builtin_return_address(closes: #165992). + + C99 symbols in limits.h not defined (closes: #168346). + + %zd printf spec generates warning, even in c9x mode (closes: #94891). + + Update GCC attribute syntax (closes: #12253, #43119). + - C++ & libstdc++-v3: + + template and virtual inheritance bug (closes: #152315). + + g++ has some troubles with nested templates (closes: #21255). + + vtable thunks implementation is broken (closes: #34876, #35477). + + ICE for templated friend (closes: #42662). + + ICE compiling mnemonic (closes: #42989). + + Deprecated: result naming doesn't work for functions defined in a + class (closes: #43170). + + volatile undefined ... (closes: #50529). + + ICE concerning templates (closes: #53698). + + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream + (closes: #56867). + + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). + + Another ICE (closes: #65687). + + ICE in `const_hash' (closes: #72933). + + ICE on illegal code (closes: #83221). + + Wrong code with -O2 (closes: #83363). + + ICE on template class (closes: #85934). + + No warning for missing return in non-void member func (closes: #88260). + + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by + shared libraries (closes: #118670). + + ICE using nested templates (closes: #118781). + + Another ICE with templates (closes: #127489). + + More ICEs (closes: #140427, #141797). + + ICE when template declared after use(closes: #148603). + + template function default arguments are not handled (closes: #157292). + + Warning when including stl.h (closes: #162074). + + g++ -pedantic-errors -D_GNU_SOURCE cannot #include + (closes: #151671). + + c++ error message improvement suggestion (closes: #46181). + + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). + + libstdc++ has no method at() in stl_= (closes: #68963). + - Fortran: + + g77 crash (closes: #130415). + - ObjC: + + ICE: program cc1obj got fatal signal 11 (closes: #62309). + + Interface to garbage collector is undocumented. (closes: #68987). + - Architecture specific: + - alpha + + Can't compile with define gnu_source with stdio and curses + (closes: #97603). + + Header conflicts on alpha (closes: #134558). + + lapack-dev: cannot link on alpha (closes: #144602). + + ICE `fixup_var_refs_1' (closes: #43001). + + Mutt segv on viewing list of attachments (closes: #47981). + + ICE building open-amulet (closes: #48530). + + ICE compiling hatman (closes: #55291). + + dead code removal in switch() broken (closes: #142844). + - arm + + Miscompilation using -fPIC on arm (closes: #90363). + + infinite loop with -O on arm (closes: #151675). + - i386 + + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). + - m68k + + Optimization (-O2) broken on m68k (closes: #146006). + - mips + + g++ exception catching does not work... (closes: #105569). + + update-menus gets Bus Error (closes: #120333). + - mipsel + + aspell: triggers ICE on mipsel (closes: #128367). + - powerpc + + -O2 produces wrong code (gnuchess example) (closes: #131454). + - sparc + + Misleading documentation for -malign-{jump,loop,function}s + (closes: #114029). + + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). + + flightgear: build failure on sparc (closes: #88694). + + -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 + +gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high + + * gcc-3.3 second prerelease. + - Fixing exception handling on s390 (urgency high). + * Reenabled gpc build (I had it disabled ...). Closes: #192347. + + -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 + +gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low + + * gcc-3.3 prerelease. + - Fixes gcj ICE (closes: #189545). + * For libstdc++ use the i486 atomicity implementation, introduced with + 0pre6, left out in 0pre7 (closes: #191684). + * Add README.Debian for treelang (closes: #190812). + * Apply NetBSD changes (Joel Baker). Closes: #191551. + * New symbols in libgcc1, tighten the shlibs dependency. + * Disable testsuite run on mips/mipsel because of an outdated libc-dev + package. + * Do not build libffi with debug information, although configuring + with --enable-debug. + + -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 + +gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). + * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, + #191149, #149159, #149151, and other reports). + Sorry for not detecting this before the upload, seems to be + broken on i386 "only". + * hurd-i386: Use /usr/include, not /include. + * Disable gpc on hurd-i386 (closes: #189851). + * Disable building the debug version of libstdc++ on powerpc-linux + (fixes about 200 java test cases). + * Install libstdc++v3 man pages (closes: #127263). + + -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 + +gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). + * libstdc++-doc: Fix index.html link (closes: #189424). + * Revert back to the i486 atomicity implementation, that was used + for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. + For this reason, tighten the libstdc++5 shlibs dependency. See + http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html + Don't build the ix86 specfic libstdc++ libs anymore. + + -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 + +gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). + * Disable treelang on powerpc. + * Disable gpc on m68k. + * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). + * Fix generated bits/atomicity.h (closes: #189183). + * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). + + -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 + +gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). + * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). + * Make the default sparc 32bit target v8 instead of v7. This mainly + enables hardmul, which should speed up v8 and v9 systems by a large + margin (Ben Collins). + * Tighten binutils dependency for sparc. + * On i386, build libstdc++ optimized for i486 and above. The library + in /usr/lib is built for i386. Closes: #184446, #185662. + * Add gpc build (from gcc-snapshot package). + * debian/control: Include all packages, that _can_ be built from + this source package (except the cross packages). + * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. + * Run the 3.3 testsuite a second time with the installed gcc-3.2 + to check for regressions (promised, only this time, and for the + final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). + + -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 + +gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). + * Reenable java on arm. + * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all + bprob/gcov testsuite failures. + * Enable C++ build on arm. + * Enable the sparc64 build. + + -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 + +gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). + * Disable building the gcc-3.3-nof package. + * Disable Ada on mips and mipsel. + * Remove the workaround to build Ada on powerpc. + * Add GNU Free documentation license to copyright file. + * Update the sparc64 build patches (Clint Adams). Not yet enabled. + * Disable C++ on arm (Not yet tested). + * Add fix for ICE on powerpc (see: #184684). + + -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 + +gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low + + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). + * Add gccbug manpage. + * Don't build libgnat package (no shared library). + * Configure with --enable-sjlj-exceptions on hppa and m68k for + binary compatibility with libstdc++ built with gcc-3.2. + * Disable Java on arm-linux (never seen it sucessfully bootstrap). + * Install non-conflicting baseline README. + * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several + compiler versions can be installed concurrently. + * Remove libstdc++-incdir patch applied upstream. + * libstdc++ 64 bit development files now handled in -dev target. + (Gerhard Tonn) + * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). + * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). + * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, + while gcc-3.2 doesn't. + + -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 + +gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low + + * First gcc-3.3 package, built for s390 only. All other architectures + build the gcc-3.3-base package only. + To build the package on other architectures, edit debian/rules.defs + (macro no_dummy_archs). + * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). + * Don't include the gcc locale files (would conflict with 3.2). + * Remove libffi-install-fix patch. + * Fix netbsd-i386 patches. + * Change priority of libstdc++5 and gcc-3.2-base to important. + * Install gcjh-wrapper for javah. + * gij suggests fastjar, gcj recommends fastjar. + * Allow builds using automake1.4 | automake (<< 1.5). + * Backport fix for to output more correct line numbers. + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Apply cross compilation patches submitted by Bastian Blank. + * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 + (Gerhard Tonn). + * Configure using --enable-debug. + * Add infrastructure to only build a subset of binary packages. + * Rename libstdc++-{dev,dbg,pic,doc} packages. + * Build treelang compiler. + + -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 + +gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030228) + - Fixes bootstrap failure on alpha-linux. + - Fixes ICE on m68k (closes: #177016). + * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and + sparc (due to wrong code generation for fwrite in glibc, + see PR optimization/9279). + * Apply cross compilation patches submitted by Bastian Blank. + + -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 + +gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium + + * gcc-3.2.3 prerelease (CVS 20030221) + - Fixes ICE on hppa (closes: #181813). + * Patch for ffitest in s390-java.dpatch deleted, since already fixed + upstream. (Gerhard Tonn) + * Build crtbeginT.o on m68k-linux (closes: #179807). + * Install gcjh-wrapper for javah (closes: #180218). + * gij suggests fastjar, gcj recommends fastjar (closes: #179298). + * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). + * Backport fix for to output more correct line numbers (closes: #153965). + * Add help2man to build dependencies needed for some gpc man pages. + * gpc: Install binobj and gpidump binaries and man pages. + * Disable gpc on arm due to wrong code generation for fwrite in + glibc (see PR optimization/9279). + + -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 + +gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low + + * gcc-3.2.3 prerelease (CVS 20030210) + - Fixes long millicode calls on hppa (closes: #180520) + * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch + as they are no longer needed. + * Fix netbsd-i386 patches (closes: #180129, #179931) + * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 + * Change priority of libstdc++5 and gcc-3.2-base to important. + + -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 + +gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low + + * gcc-3.2.2 release. + - Fixes ICE, regression from 2.95 (closes: #176117). + - Fixes ICE, regression from 2.95 (closes: #179161). + * libstdc++ for biarch installs now upstream to usr/lib64, + therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) + + -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 + +gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030130). + * update s390 libffi patch + * debian/control: add myself to uploaders and change libc12-dev depends to + libc-dev on i386 (closes: #179128) + * Build-Depend on procps so that ps is available for logwatch + + -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 + +gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low + + * gcc-3.2.2 prerelease (CVS 20030128). + - Update needed for hppa. + - Fixes ICE on arm, regression from 2.95.x (closes: #168086). + - Can use default bison (1.875). + * Apply netbsd build patches (closes: #177674, #178328, #178325, + #178326, #178327). + * Run the logwatch script on "slow" architectures (arm, m68k) only. + * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually + than libtool 1.4 (Ryan Murray). + * Apply autoreconf patch universally (Ryan Murray). + * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default + JNI search path (Ben Burton). Closes: #167932. + * Build crtbeginT.o on m68k (closes: #177036). + * Fixed libc-dev source dependency (closes: #178602). + * Tighten shlib dependency to the current package version; should be + 1:3.2.2-1 for the final release (closes: #178867). + + -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 + +gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). + * Build locales needed by the libstdc++ testsuite. + * Update config.{guess,sub} files from autotools-dev (closes: #177674). + * Disable Ada and Java on netbsd-i386 (closes: #177679). + * gnat: Add suggests for gnat-doc and ada-reference-manual. + + -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low + + * Readd build dependency `locales' on arm. locales is now installable + * Add autoreconf patch for mips{,el}. (closes: #176311) + + -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 + +gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low + + * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. + * Remove build dependency `locales' on arm. locales is uninstallable + on arm due to the missing glibc-2.3. + * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce + conflict in objc-parse.y. + + -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 + +gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low + + * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 + does not work for me. m68k-linux doesn't look good at all ... + * Fix s390 build error. + * Add locales to build dependencies. A still unsolved issue is the + presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, + or else some tests in the libstdc++ testsuite will fail. + * Put all -nof files in the -nof package (closes: #175253). + * Correctly exit logwatch script (closes: #175251). + * Install linker-map.gnu file for libstdc++_pic (closes: #175144). + * Install versioned gpcs docs only (closes: #173844). + * Include gpc test results in gpc package. + * Link local libstdc++ documentation to local source-level documentation. + * Clarify libstdc++ description (so version and library version). + Closes: #175799. + * Include library in libstdc++-dbg package (closes: #176005). + + -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 + +gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). + - Fix loop count computation for preconditioned unrolled loops. + Closes: #162919. + - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). + - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. + Closes: #166143. + * Watch the log files, which are written during the testsuite runs and print + out a message, if there is still activity. No more buildd timeouts on arm + and m68k ... + * Remove gpc's reference to librx1g-dev package (closes: #172953). + * Remove trailing dots on package descriptions. + * Fix external reference to cpp.info in gcc.info (closes: #174598). + + -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 + +gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium + + * Friday, 13th upload, so what do you expect ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). + * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 + (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building + gnatlib and gnattools). + * Really disable sparc64 support. + + -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 + +gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low + + * A candidate for the transition ... + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). + - doc/invoke.texi: Remove last reference to -a (closes: #171748). + * Disable sparc64 support. For now please use egcs64 to build sparc64 + kernels. + * Disable Pascal on the sparc architecture (doesn't bootstrap). + + -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 + +gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low + + * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). + - Should fix _Pragma expansion within macros (closes: #157416). + * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 + * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. + + -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 + +gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low + + * gcc-3.2.1 final release. + * Build gpc-20021111 for all architectures. hppa and i386 are + known to work. For the other architectures, send the usual FTBFS ... + WARNING: this gpc version is an alpha version, especially debug info + doesn't work well, so use -g0 for compiling. If you need a stable + gpc compiler, use gpc-2.95. + * Encode the gpc upstream version in the package name, the gpc release + date in the version number (requested by gpc upstream). + * Added libncurses5-dev and libgmp3-dev as build dependencies for the + gpc tests and runtime. + * Clean CVS files as well (closes: #169101). + * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). + * s390-config-ml.dpatch added, disables biarch for java, + libffi and boehm-gc on s390. They need a 64 bit runtime + during build which is not yet available on s390 (Gerhard Tonn). + * Biarch support for packaging adapted (Gerhard Tonn). + biarch variable added and with-sparc64 variable substituted in + most places by biarch. + dh_shlibdeps is applied only to 32 bit libraries on s390, since + ldd for 64 bit libraries don't work on 32 bit runtime. + Build dependency to libc6-dev-s390x added. + + -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 + +gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium + + * gcc-3.2.1 prerelease. + * Removed arm patch integrated upstream. + * Adjust gnat build dependency (closes: #167116). + * Always configure with --enable-clocale=gnu. The autobuilders do have + locales installed, but not generated the "de_DE" locale needed for + the autoconf test in libstdcc++-v3/aclocal.m4. + * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. + + -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 + +gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20021103). + * sparc64-build.dpatch: Updated. Lets sparc boostrap again. + * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). + * bison.dpatch: Removed, patch submitted upstream. + * backport-java-6865.dpatch: Apply again during build. + * Tighten glibc dependency (closes: #166703). + + -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 + +gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high + + * gcc-3.2.1 snapshot (CVS 20021020). + - Expansion of _Pragma within macros fixed (closes: #157416). + * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from + source on Debian unstable systems. This is fixed in gcc HEAD, but not on + the current release branch. + HELP NEEDED: + - check what is missing from the patches in debian/patches/bison.dpatch. + This is a backport of the bison related patches, but showing regressions + in the gcc testsuite, so it cannot be applied. + - build gcc using byacc (bootstrap currently fails using byacc). + - build bison-1.35 in it's own package (the current 1.35-3 package fails + to build form source). + - and finally ask upstream to backport the patch to the branch. It's not + helpful not beeing able to follow the stable branch. Maybe we should + just switch to gcc HEAD as BSD does ... + As a terrible workaround, build the sources from CVS first on a machine, + with bison-1.35 installed, then package the tarball, so the bison + generated files are not rebuilt. + + * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), + Therefore urgency high. + * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, + #164009). + * Point g++ manpage to correct g++ version (closes: #162843). + * Support for i386-freebsd-gnu (closes: #163883). + * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). + * Disable the testsuite run on the Hurd (closes: #159650). + * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). + * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. + Don't use it due to regressions. + * debian/patches/backport-java-6865.dpatch: Directly applied in the + included tarball because of bison problems. + * Make fixincludes priority optional, so linda can depend on it. + * Tighten binutils dependency. + + -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 + +gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020923). + * Run the libstdc++ check-abi script. Results are put into the file + /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev + package. This file contains a new baseline, if no baseline for this + architecture is included in the gcc sources. + * gcj-wrapper: Accept files starting with an underscore, accept + path names (closes: #160859, #161517). + * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). + * Let installed fixincludes script find files in /usr/lib/fixincludes. + * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are + applied sequentially (closes: #159395). + + -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 + +gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low + + * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! + * Fix arm-tune.dpatch (closes: #159354). + * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). + * --disable-__cxa_atexit on NetBSD (closes: #159620). + * Reenable installation of message catalogs (disabled in 3.2-0pre2). + Closes: #160175. + * Ben Collins + - Re-enable sparc64 build. This time, it's part of the default compiler. + I have disabled 64/alt libraries as they are too much overhead. All + libraries build 64bit, but currently only libgcc/libstdc++ include the + 64bit libraries. + Closes: #160404. + * Depend on autoconf2.13, instead of autoconf. + * Phil Blundell + - debian/patches/arm-update.dpatch: Fix python2.2 build failure. + + -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 + +gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium + + * gcc-3.2.1 snapshot (CVS 20020829). + New g++ option -Wabi: + Warn when G++ generates code that is probably not compatible with the + vendor-neutral C++ ABI. Although an effort has been made to warn about + all such cases, there are probably some cases that are not warned about, + even though G++ is generating incompatible code. There may also be + cases where warnings are emitted even though the code that is generated + will be compatible. + The current version of the ABI is 102, defined by the __GXX_ABI_VERSION + macro. + * debian/NEWS.*: Updated. + * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). + * Add versioned expect build dependency. + * Tighten binutils dependency to 2.13.90.0.4. + * debian/patches/arm-tune.dpatch: Increase stack limit for configure. + * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend + on gnat-3.2 now (closes: #156734). + * Remove bashism's in gcj-wrapper (closes: #157982). + * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). + * Add fastjar documentation. + + -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 + +gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low + + * Correct build dependency on gnat-3.1. + + -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 + +gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low + + * gcc-3.2 upstream prerelease. + * Disable all configure options, which are standard: + --enable-threads=posix --enable-long-long, --enable-clocale=gnu + + -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 + +gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020802). + * Fix g++-include dir. + * Don't install the locale files (temporarily, until we don't build + gcc-3.1 anymore). + * New package libgcj-common to avoid conflict with classpath package. + + -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 + +gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low + + * gcc-3.2 snapshot (CVS 20020729). + + -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 + +gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low + + * gcc-3.1.1 release. Following this release we will have a gcc-3.2 + release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once + gcc-3.2 hits the archives, gcc-3.1.1 will go away. + * Don't build the sparc64 compiler. The packaging/patches are + currently broken. + * Add missing headers on m68k and powerpc. + * Install libgcc_s_nof on powerpc. + * Install libffi's copyright and doc files (closes: #152198). + * Remove dangling symlink (closes: #149002). + * libgcj3: Add a conflict to the classpath package (closes: #148664). + * README.C++: Fix URLs. + * libstdc++-dbg: Install into /usr/lib/debug, document it. + * backport-java-6865.dpatch: backport from HEAD. + * Fix typo in gcj docs (closes: #148890). + * Change libstdc++ include dir: /usr/include/c++/3.1. + * libstdc++-codecvt.dpatch: New patch (closes: #149776). + * Build libstdc++-pic package. + * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). + * Tighten glibc dependency. + + -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 + +gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch). + * Updated s390-java patch (Gerhard Tonn). + * Don't use -O in STAGE1_FLAGS on m68k. + * Fix `-classpath' option in gcj-wrapper script (closes: #150142). + * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. + + -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 + +gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low + + * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. + * Welcome m68k to bootstrap land (thanks to Andreas Schwab). + * Add javac wrapper for gcj-3.1 (Michael Koch). + * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). + + -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 + +gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low + + * Updated to CVS 2002-05-31 (gcc-3_1-branch). + * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. + * Update arm-tune patch. + * Install xmmintrin.h header on i386 (closes: #148181). + * Install altivec.h header on powerpc. + * Call correct gij in gij-wrapper (closes: #148662, #148682). + + -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 + +gcc-3.1 (1:3.1ds2-2) unstable; urgency=low + + * Tighten binutils dependency. + * Fix libstdc include dir for multilibs (Dan Jacobowitz). + + -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 + +gcc-3.1 (1:3.1ds2-1) unstable; urgency=low + + * GCC 3.1 release. + * Ada cannot be built by the autobuilders for the first time. Do it by hand. + gnatgcc and gnatbind need to be in the PATH. + * Build with CC=gnatgcc, when building the Ada compiler. + * Hurd fixes. + * Don't build the sparc64 compiler; the hack isn't up to date and glibc + isn't converted to use /lib64 and /usr/lib64. + * m68k-linux shows bootstrap comparision failures. If you want to build + the compiler anyway and ignore the bootstrap comparision failure, edit + debian/rules.patch and uncomment the patch to ignore the failure. See + /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. + + -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 + +gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low + + * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). + * Build gnat-3.1-doc package. + * Build fastjar package without building java packages. + * Hurd fixes. + * Updated sparc64-build patch. + * Add s390-ada patch (Gerhard Tonn). + * Undo the dwarf2 support for hppa from -0pre5. + + -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 + +gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low + + * Use /usr/include/g++-v3-3.1 as C++ include dir. + * Update s390-java patch (Gerhard Tonn). + * Tighten binutils dependency (gas patch for m68k-linux). + * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * dwarf2 support hppa: a snapshot of the gcc/config/pa directory + from the trunk dated 2002-05-02. + + -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 + +gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low + + * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). + * Don't build the shared libgnat library. It assumes an existing shared + libiberty library. + * Don't install the libgcjgc library. + + -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 + +gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low + + * Build fastjar on all architectures. + * Update m68k patches. + * Update s390-java patch (Gerhard Tonn). + + -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 + +gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low + + * Add Ada support. To successfully build, a working gnatbind and gcc + driver with Ada support is needed. + * Apply needed arm patches from 3.0.4. + + -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 + +gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low + + * First try for gcc-3.1. + + -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 + +gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium + + * Second try at fixing sparc build problems. + + -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 + +gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium + + * Enable java on ARM. + * Create missing directory to fix sparc build. + + -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 + +gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low + + * Link with system zlib (closes: #136359). + + -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 + +gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low + + * Build libf2c (pic and non-pic) with -mieee on alpha-linux. + + -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 + +gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium + + * Apply hppa-build patch (Randolph Chung). Closes: #136731. + * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. + * gij-3.0 provides the `java' command. Closes: #128947. + * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a + again. Closes: #99307. + * Update README.cross pointing to the README of the toolchain-source + package. + + -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 + +gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low + + * Final gcc-3.0.4 release. + * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the + duplicate libgcj dependency and adding the gij-3.0 package. + Closes: #134005. + * New patch by Phil Blundell to fix scalapack build error on m68k. + + -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low + + * Make the base package dependent on the binary-arch target. Closes: #133433. + * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. + + -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 + +gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high + + * Update to CVS sources (20020209 gcc-3_0-branch). + * Apply patch to fix bootstrap error on arm-linux (submitted upstream + by Phil Blundell). Closes: #130422. + * Make base package architecture any. + * Decouple versioned shlib dependencies from release number for + libobjc as well. + + -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 + +gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium + + * One release critical bug outstanding: + - bootstrap error on arm. + * Update to CVS sources (20020203 gcc-3_0-branch). + * Fixed upstream: PR c/3504: Correct documentation of __alignof__. + Closes: #85445. + * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). + * Tighten binutils build dependency (to address #126162). + * Move jv-convert to gcj package (closes: #131985). + + -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 + +gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low + + * Two release critical bugs outstanding: + - bootstrap error on arm. + - bus errors for C++ and java executables on sparc (see the testsuite + results). + * Update to CVS sources (20020125 gcc-3_0-branch). + * Enable java support for s390 architecture (patch from Gerhard Tonn). + * Updated NEWS file for 3.0.3. + * Disable building the gcc-sparc64, but build a multilibbed compiler + for sparc as the default. + * Disabled the subreg-byte patch for sparc (request from Ben Collins). + * Fixed reference to libgcc1 package in README (closes: #126218). + * Do recommend libc-dev, not depend on it. For low-end or embedded systems + the dependency on libc-dev can make the difference between + having enough or having too little space to build a kernel. + * README.cross: Updated by Hakan Ardo. + * Decouple versioned shlib dependencies from release number. Closes: #118391. + * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), + unconditionally remove `sparc64-linux-gcc' alternative. + * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next + g77 version (3.1) does build a static and shared library (closes: #104250). + * Fix formatting errors in the synopsis of the java man pages. Maybe the + reason for #127571. Closes: #127571. + * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. + Add alternative for `jar' using priority 30 (closes: #118648). + * jv-convert: Add --help option and man page. Backport from HEAD branch. + * libgcj2-dev: Remove duplicate dependency (closes: #127805). + * Giving up and make just another new package gij-X.Y with only the gij-X.Y + binary for policy conformance (closes: #127111). + * gij: Provides an alternative for `java' (priority 30) using a wrapper + script (Stephen Zander) (closes: #128974). Added simple manpage. + + -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 + +gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low + + * Final gcc-3.0.3 release. + * Do not compress .txt files in libstdc++ docs referenced from html + pages (closes: #124136). + * libstdc++-dev suggests libstdc++-doc. + * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). + + -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 + +gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low + + * Update to CVS sources (011215). + * libstdc++ documentation updated upstream (closes: #123790). + * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error + on ia64 (#123685). + + -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 + +gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium + + * Update to CVS sources (011208). + * Supposed to fix powerpc build error (closes: #123155). + + -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 + +gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium + + * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. + * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to + fix PR c++/3145, the infamous "virtual inheritance" bug. This affected + especially KDE2 (eg. artsd). Franz Sirl + * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. + * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can + cause miscompiled userapps to crash the kernel. Closes: #121924. + * Reenable shared libgcc for powerpc. Fixed upstream. + http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html + debian/patches/libgcc-powerpc.dpatch: New patch. + * Add upstream changelogs. + * Remove gij alternative. Move to gij package. + + -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 + +gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium + + * Disable building of libffi on mips and mipsel. + (closes: #117503). + * Enable building of shared libgcc on s390 + (closes: #120452). + + -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 + +gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium + + * Fix logic to build libffi without java (closes: #117503). + + -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 + +gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium + + * Enable java for ia64 (Jeff Licquia). Closes: #116798. + * Allow building of libffi without gcj (Jeff Licquia). + New libffi packages for arm hurd-i386 mips mipsel, + still missing: hppa, s390. + * debian/NEWS.gcc: Add 3.0.2 release notes. + * debian/patches/hppa-align.dpatch: New patch from Alan Modra, + submitted by Randolph Tausq. + + -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 + +gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium + + * Final gcc-3.0.2 release. The source tarball is not the released + tarball, but taken from CVS 011024). + * Remove patch for s390, included upstream. + + -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 + +gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low + + * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. + Closes: #109351, #114099, #114216, #105741 (allegro3938). + * Added debian/patches/fastjar.dpatch, which makes fastjar extract + filenames correctly (previously, some had incorrect names on extract). + Closes: #113236. + * Priorities fixed in the past (closes: #94404). + + -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low + + * Bootstraps on powerpc again (closes: #112777). + + -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 + +gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low + + * Update to CVS sources (010922). + * Fixed upstream (closes: #111801). #105569 on hppa. + * Update hppa patch (Matt Taggart). + * Fix libstdc++-dev package description (closes: #112758). + * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). + * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). + + -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 + +gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low + + * Update to CVS sources (010908). + * Update hppa patch (Matt Taggart). + * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during + the freeze ...). However adds s390 support (closes: #110189). + * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). + Fixes #89023. + * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). + Fixes libstdc++ testsuite failures on sparc. + + -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low + + * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. + * debian/patches/gcj-without-rpath: New patch. + * Remove self dependency on libgcj package. + * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 + in gcc-3.0-sparc64 package. + * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. + Link with this library to avoid linking with non-pic code. + Use this library when building dynamically loadable objects (python + modules, gimp plugins, ...), which need to be linked against g2c or + a library which is linked against g2c (i.e. lapack). + Packages needing '-lg2c-pic' must have a build dependency on + 'g77-3.0 (>= 1:3.0.2-0pre010826). + + -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 + +gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low + + * Update to CVS sources (010825). + * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. + * Remove conflicts on egcc package (closes: #109718). + * Fix gcc-3.0-nof dependency. + * s390 patches against gcc-3.0.1 (Gerhard Tonn). + * debian/control: Require binutils (>= 2.11.90.0.27) + + -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 + +gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low + + * Final gcc-3.0.1 release. + * Changed upstream: default of -flimit-inline is 600 (closes: #106716). + * Add fastjar man page (submitted by "The Missing Man Pages Project", + http://www.netmeister.org/misc/m2p2i/) (closes: #103051). + * Fixed in last upload as well: #105246. + * debian/patches/cpp-memory-leak.dpatch: New patch + * Disable installation of shared libgcc on s390 (Gerhard Tonn). + + -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 + +gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high + + * Update to CVS sources (010811). Includes s390 support. + * Add xlibs-dev to Build-Depends (libgcj). + * Enable java for powerpc, disable java for ia64. + * Enable ObjC garbage collection for all archs, which have a libgc5-dev + package. + * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). + * Don't strip static libgcj library (work around binutils bug #107812). + * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package + (closes: #107569). + + -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 + +gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high + + * Update to CVS sources (010801). (closes: #107012). + * Remove build dependency on non-free graphviz and include pregenerated + docs (closes: #107124). + * Fixed in 3.0.1 (closes: #99307). + * Updated m68k-updates patch (Roman Zippel). + * Another fix for ia64 packaging bits (Randolph Chung). + + -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 + +gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high + + * Update to CVS sources (010727). + * Add epoch to source version. Change '.dsx' to 'dsx', so that + 3.1.1ds0 gt 3.1ds7 (closes: #106538). + + -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high + + * ia64 packaging bits (Randolph Chung) (closes: #106252). + + -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 + +gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high + + * Update to CVS sources (010721). + - Remove patches applied upstream: libstdc++-limits.dpatch, + objc-data-references + - Updated other patches. + * Fix gij alternative (closes: #103468, #103883). + * Patch to fix bootstrap on sparc (closes: #103568). + * Corrected (closes: #105371) and updated README.Debian. + * m68k patches for sucessful bootstrap (Roman Zippel). + * Add libstdc++v3 porting hints to README.Debian and README.C++. + * m68k md fix (#105622) (Roman Zippel). + * debian/rules2: Disable non-functional ulimit on Hurd (#105884). + * debian/control: Require binutils (>= 2.11.90.0.24) + * Java is enabled for alpha (closes: #87300). + + -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 + +gcc-3.0 (3.0.ds9-4) unstable; urgency=high + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. If sparc doesn't build, + then IMHO it's better to remove it from testing. + * debian/control.m4: Set uploaders field. Adjust description of + gcc-3.0 (binary) package (closes: #102271, #102620). + * Separate gij.1 in it's own pseudo man page (closes: #99523). + * debian/patches/java-manpages.dpatch: New patch. + * libgcj: Install unversioned gij. + + -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 + +gcc-3.0 (3.0.ds9-3) unstable; urgency=high + + * Reenable configuration with posix threads on i386 (lost in hurd-i386 + merge). + + -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 + +gcc-3.0 (3.0.ds9-2) unstable; urgency=medium + + * Move this version to testing ASAP. testing still has a prerelease + version with now incompatible ABI's. + * Add libgcc0 and libgcc300 to the build conflicts (#102041). + * debian/README.FIRST: Removed (#101534). + * Updated subreg-byte patch (doc files). + * Disable java for the Hurd, mips and mipsel (#101570). + * Patch for building on the Hurd (#101708) (Jeff Bailey ). + * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). + * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). + The current doxygen-1.2.8.1 segaults. + * C++: Enable -fuse-cxa-atexit by default (#101901). + * Correct mail address in gccbug (#101743). + * Make rules resumable after failure in binary-xxx targets (#101637). + + -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 + +gcc-3.0 (3.0.ds9-1) unstable; urgency=low + + * Final 3.0 release. + * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). + * Updated hppa-build patch (Matt Taggart ). + * Disable java for hppa. + * Updated subreg-byte patch for sparc (Ben Collins). + + -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 + +gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low + + * Update patches for recent (010613 23:13 +0200) CVS sources. + * Fix packaging bugs (#100459, #100447, #100483). + * Build-Depend on gawk, mawk doesn't work well with test_summary. + + -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 + +gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low + + * Fix build dependency for the hurd (#99164). + * Update patches for recent (010609) CVS sources. + * Disable java on powerpc (link error in libjava). + * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). + + -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 + +gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high + + * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which + now are incompatile due to the changed ABIs. + * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". + * Tighten dependencies to install only binary packages derived from + one source (#98851). Tighten libc6-dev dependency to match libc6. + + -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 + +gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low + + * ATTENTION: The ABI (exception handling) changed. No upgrade path from + earlier snapshots (you had been warned in the postinst ...) + Closing #93597, #94576, #96448, #96461. + You have to rebuild + * HELP is appreciated for scanning the Debian BTS and sending followups + to bug reports!!! + * Should we name debian gcc uploads? What about a "still seeking + g++ maintainer" upload? + * Fixed in gcc-3.0: #97030 + * Update patches for recent (010525) CVS sources. + * Make check depend on build target (fakeroot problmes). + * debian/rules.d/binary-libgcc.mk: new file, build first. + * Free memory detection on the hurd for running the testsuite. + * Update debhelper build dependency. + * libstdc++-doc: Include doxygen generated docs. + * Fix boring packaging bugs, too tired for appropriate changelogs ... + #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 + * Fixed bugs: #87000. + + -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 + +gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low + + * Update patches for recent (010506) CVS sources. + * New version of source, as of 2001-05-10 + * New version of gpc source, as of 2001-05-06 (disabled by default). + * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, + since it can build kernels just fine (it seems) + * Add hppa patch from Matt Taggart + * Fix objc info inclusion...now merged with gcc info + * Do not install the .la for libstdc++, since it confuses libtool linked + applications when libstdc++3-dev and libstdc++2.10-dev are both + installed (closes #97905). + * Fixed gcc-base and libgcc section/prio to match overrides + + -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 + +gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low + + * Fixed priority for fastjar from optional to extra + * New version of source, as of 2001-04-27 + * Fix description of libgcj-dev + * libffi-install: Make libffi installable + * Add libffi and libffi-dev packages. libffi is only enabled for java + targets right now. Perhaps more will be enabled later. + * Fixes to build cross compiler package (for avr) + (Hakan Ardo ). + * Better fixincludes description (#93157). + * Remove all remnants of libg++ + * Remove all hacks around libstdc++ version. Since we are strictly v3 now, + we can treat it like a normal shared lib, and not worry about all those + ABI changes. + * Remove all cruft control scripts. Note, debhelper will create scripts + that it needs to. It will do the doc link stuff and the ldconfig stuff + explicitly. + * Clean up the SONAME parsing stuff, make it a little more cleaner over + all the lib packages + * Make libffi install when built (IOW, whenever java is enabled). This + should obsolete the libffi package, which is old and broken + * Revert to normal sonames, except for ia64 (for now) + * Remove all references to dh_testversion, since they are deprecated for + Build-Depends + * Fix powerpc nof build + * Remove all references to the MULTILIB stuff, since the arches are + using specialized builds anyway (nof, softfloat). + * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) + * Removed obsolete shlibs.local file + + -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 + +gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low + + * debian/README: Updated for gcc-3.0 + * debian/rules.patch: Added subreg-byte patch for sparc + * debian/rules.unpack: Update to current CVS for gcc tarball name + * debian/patches/subreg-byte.dpatch: sparc subreg-byte support + * debian/patches/gcc-rawhide.dpatch: Removed + debian/patches/gpc-2.95.dpatch: Removed + debian/patches/sparc32-rfi.dpatch: Removed + debian/patches/temporary.dpatch: Removed + * Moving to unstable now + * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, + disables shared libgcc for powerpc target, since it isn't compatible + with the EABI objects. + * Create $(with_shared_libgcc) var + * debian/rules.d/binary-gcc.mk: Use this new variable to determine if + the libgcc package actually has any files + + -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 + +gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low + + * New snapshot. Use distinct shared object names for shared libraries: + we don't know if binary API's still change until the final release. + * Versioned package names. + * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, + libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. + Remove gcc-docs package. + * debian/gcov.1: Remove. + * debian/*: Remove 2.95.x support. Prepare for 3.0. + * debian/patches: Remove 2.95.x patches. + * Changed source package name. It's not allowed anymore to overwrite + source packages with different content. Introducing a 'debian source + element' (.ds), which is stripped again from the version number + for the binary packages. + * Fixed bugs and added functionality: + #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, + #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, + #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, + #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, + #75759, #76645, #76827, #83221, #87540 + * libgcj fixes: 42894, #51266, #68560, #71187, #79984 + + -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 + +gcc-2.95 (2.95.3-2.001222) experimental; urgency=low + + * New upstream version 2.95.3 experimental (CVS 20001222). + * debian/control.in: Versioned package names, removal of snapshot logic. + Remove fake gcc-docs package. + * Reserve -1 release numbers for woody. + * Updated to gpc-20001218. + + -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 + +gcc (2.95.2-20) unstable; urgency=low + + * Apply patch from gcc-2_95-branch; remove ulimit for make check. + + -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 + +gcc (2.95.2-19) unstable; urgency=low + + * Added testsuite-20001207 from current snapshots. We'll need results + for 2.95.2 to make sure there are no regressions against that release. + Dear build daemons and porters to other architectures, please send an + email to gcc-testresults@gcc.gnu.org. + You can do this by running "debian/rules mail-summary". + * Updated to gpc-20001206. + * Added S/390 patch prepared by Chu-yeon Park (#78983). + * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). + * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). + * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which + fixes a problem in "long long" on i[345]86 (i686 was not affected). + + -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 + +gcc (2.95.2-18) unstable; urgency=low + + * debian/control.in: Fix syntax errors (fixes #76146, #76458). + Disable gpc on the hurd by request (#75686). + * debian/patches/arm-various.dpatch: Patches from Philip Blundell + for ARM arch (fixes #75801). + * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis + for alpha arch. + * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). + * Update gpc to gpc-20001118. + * Reenable gpc for alpha. + * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information + provided by Matt Zimmermann. + * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. + Probably needs some adjustments ... + * Conditionalize for chill, fortran, java, objc and chill. + + * NOT APPLIED: + debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). + + -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 + +gcc (2.95.2-17) unstable; urgency=low + + * Disable gpc for alpha. + * Include gpc-cpp in gpc package (fixes #74492). + * Don't build gcc-docs compatibility package anymore. + + -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 + +gcc (2.95.2-16) unstable; urgency=low + + * Applied the emdebian/cross compiler patch and documentation + (Frank Smith ). + * Applied patch for avr target (Hakan Ardo ). + * debian/control.in: Add awk to Build-Depends. + Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, + #72531, #72534). + * Disable libobjc_gc for m68k again (fixes #74380). + * debian/patches/arm-namespace.dpatch: Apply patch from Philip + Blundell to fix name space pollution on arm + (fixes #70937). + * Fix more warnings in STL headers (fixes #69352, #71943). + + -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 + +gcc (2.95.2-15) unstable; urgency=low + + * debian/control.in: Add libgc5-dev to build depends (fixes #67015). + * debian/rules.def: Build GC enabled ObjC runtime for sparc. + * Bug #58741 fixed (in some version since 2.95.2-5). + * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev + (unit dependencies). + * Patches from Marcus Brinkmann for the hurd (fixes #67763): + - debian/rules.defs: Disable objc_gc on hurd-i386. + Disable libg++ on GNU systems. + - debian/rules2: Set correct names of libstdc++/libg++ + libraries on GNU systems. + Write out correct shlibs and shlibs.local file content. + - Keep _G_config.h for the Hurd. + * Apply patch for ObjC linker warnings. + * Don't apply gcj backport patch for sparc. + * Apply libio compatability patch + * debian/glibcver.sh: generate appropriate version for glibc + * debian/rules.conf: for everything after glibc 2.1, we always append + "-glibc$(ver)" to the C++ libs for linux. + * Back down gpc to -13 version (-14 wont compile on anything but i386 + and m68k becuase of gpc). + * Remove extraneous and obsolete sparc64 patches/files from debian/* + + -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 + +gcc-snapshot (20000901-2.2) experimental; urgency=low + + * New snapshot. + * debian/rules2: Move tradcpp0 to cpp package. + + -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 + +gcc-snapshot (20000802-2.1) experimental; urgency=low + + * New snapshot. + * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. + + -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 + +gcc-snapshot (20000720-2) experimental; urgency=low + + * New snapshot. + * Enable libstdc++-v3. + * debian/rules2: Don't use -D for /usr/bin/install. + + -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 + +gcc (2.95.2-14) unstable; urgency=low + + * Update gpc patch. + + -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 + +gcc (2.95.2-13) frozen unstable; urgency=low + + * Update debian/README: document how to compile 2.0.xx kernels; don't + register gcc272 as an alternative for gcc (closes #62419). + Clarify compiler setup (closes #65548). + * debian/control.in: Make libstdc++-dev depend on current version of g++. + * Undo CVS update from release -8 (problems on alpha, #55263). + + -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 + +gcc (2.95.2-12) frozen unstable; urgency=low + + * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). + * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). + + -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 + +gcc (2.95.2-11) frozen unstable; urgency=medium + + * Upload to unstable again (fixes critical #63784). + * Fix doc-base files (fixes important #63810). + * gpc wasn't built in -10 (fixes #63977). + * Make /usr/bin/pc an alternative (fixes #63888). + * Add SYSCALLS.c.X to gcc package. + + -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 + +gcc (2.95.2-10) frozen; urgency=low + + * debian/control.in: make gcc conflict on any version of egcc + (slink to potato upgrade problem, fixes grave #62084). + * Build protoize programs, separate out in new package (fixes #59436, + #62911). + * Create dummy gcc-docs package for smooth update from slink (fixes #62537). + * Add doc-base support for all -doc packages (fixes #63380). + + -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 + +gcc (2.95.2-9) frozen unstable; urgency=low + + * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built + for sparc as NMU 8.1) (fixes critical #61529 and #61511). + "Seems that when you compile gcc 2.95.x for sparc64-linux and compile + sparc32 programs, the code is not the same as sparc-linux compile for + sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." + * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for + encoding of input files. Patch from Tom Tromey + backported to 2.95.2 (fixes #42895). + Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. + * debian/control.in: gcc, g++ and gobjc suggest their corresponding + task packages (fixes #59623). + + -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 + +gcc (2.95.2-8) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. + * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes + gcj side of #60535. + * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but + alpha. Disable g++-is-tree patch ("just for 2.95.1"). + * debian/README: Update for gcc-2.95. + + -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 + +gcc (2.95.2-7) frozen unstable; urgency=low + + * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from + http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes + compilation of 2.3.4x kernels. + * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines + (backport from 2.96 CVS to fix #55263). + * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon + (backport from 2.96 CVS to fix #54951). + + -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 + +gcc (2.95.2-6) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. + * Remove dangling symlink probably left over from libstdc++2.9 + package (fixes #53661). + * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by + David Huggins-Daines (fixes #58486). + * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration + (fixes #58253). + * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). + * debian/rules2: Include some fixed headers (asm, bits, linux, ...). + * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. + Applied upstream. + * debian/patches/libstdc++-bastring.dpatch: Add patch from + sicard@bigruth.solsoft.fr (fixes #56715). + + -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 + +gcc (2.95.2-5) frozen unstable; urgency=low + + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. + * Add more build dependencies (fixes #53204). + * debian/patches/gcc-alpha-complex-float.dpatch: Patch from + Joel Klecker to compile glibc correctly on alpha. + "Should fix the g77 problems too." + * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches + applied upstream. + + -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 + +gcc (2.95.2-4) unstable; urgency=low + + * debian/patches/libio.dpatch: Patch from Martin v. Loewis. + (fixes: #35628). + * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. + (fixes: #52689). + * debian/control.in: Updated Build-Depends, removed outdated README.build. + Fixes #51246. + * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). + * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. + Fixes #51636. + * Apply updated sparc-bi-arch.dpatch from Ben Collins. + * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request + from the author of the War FTP Daemon for Linux ("Jarle Aase" + ). + * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). + + -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 + +gcc (2.95.2-3) unstable; urgency=low + + * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are + headers fixed for glibc-1.x (closes: #49434). + * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without + following LF (closes: #49186). + * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) + fixed in gcc-2.95.? (closes: #37358). + * Apply patch gcc-alpha-ev5-fix from Richard Henderson + (should fix #48527 and #46963). + * debian/README.Bugs: Documented non bug #44554. + * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. + Reenabled gpc on all architectures. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. + * Explicitely generate postinst/prerm chunks for usr/doc transition. + debhelper currently doesn't handle generation for packages with + symlinked directories. + * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h + and stl_rope.h (closes: #46444, #46720). + * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). + + -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 + +gcc (2.95.2-2) unstable; urgency=low + + * New gpc-19991030 snapshot. + * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. + * Reintegrated sparc patches (bcollins@debian.org), which were lost + in 2.95.2-1. + * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. + * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop + initialization in stor-layout.c. + * debian/NEWS.gcc: Updated for gcc-2.95.2. + * debian/bugs/bug-...: Removed testcases for fixed bugs. + * debian/patches/...dpatch: Removed patches applied upstream. + * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. + * debian/changelog: Merged gcc272, egcs and snapshot changelogs. + + -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 + +gcc (2.95.2-1.1) unstable; urgency=low + + * Most of the powerpc patches have been applied upstream. Remove all + but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. + * mulilib-install.dpatch was definitely a bad idea. Fix it properly + by using install -D. + * Also, don't make directories before installing any more. Simplifies + rules a (tiny) bit. + * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by + dh_strip -a -X_debug; so leave the binaries in the build tree with + debugging symbols for simplified debugging of the packages. + + -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 + +gcc (2.95.2-1) unstable; urgency=low + + * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing + is disabled upstream. + + -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 + +gcc (2.95.2-0pre4) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991021. + * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). + Enable gpc for all architectures ... + * Document gcc exit codes (closes: #43863). + * According to the bug submitter (Sergey V Kovalyov ) + the original source of these CERN librarties is outdated now. The latest + version of cernlibs compiles and works fine with slink (closes #31546). + * According to the bug submitter (Gergely Madarasz ), + the problem triggered on i386 cannot be reproduced with the current + jade and php3 versions anymore (closes: #35215). + * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab + and apply to + all architectures (closes: #48011). + * According to the bug submitter (Herbert Xu ) + this bug "probably has been fixed". Setting it to severity "fixed" + (fixes: #39616), will close it later ... + * debian/README.Bugs: Document throwing C++ exceptions "through" C + libraries (closes: #22769). + + -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre3) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19991019. + * Apply NMU patches (closes: #46217). + * debian/control.in: Fix egcs64 conflict-dependency for sparc + architecture (closes: #47088). + * debian/rules2: dbg-packages share doc dir with lib packages + (closes #45067). + * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane + Bortzmeyer to conform to Debian policy (closes: #44463). + * debian/bugs/bug-*: Added test cases for new bug reports. + * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell + (closes #46550). + * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). + * debian/README: Fix typo (closes: #45253). + * debian/control.in: Remove primary/secondary distinction; + dbg-packages don't provide their normal counterparts (closes #45206). + * debian/rules.patch: gcc-combine patch applied upstream. + * debian/rules2: Only use mail if with_check is set (off by default). + * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. + + -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 + +gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for another bug; the patch + is in CVS already, too. + * Applied another patch by Andreas Schwab to fix %a5 restauration in + some cases. + + -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 + +gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) + + * Binary-only NMU for m68k as quick fix for serious bugs; the patches + are already checked into gcc CVS and should be in the next official + version, too. + * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. + + -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 + +gcc (2.95.2-0pre2) unstable; urgency=low + + * Fixed in 2.95.2 (closes: #43478). + * Previous version had Pascal examples missing in doc directory. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.2-0pre1) unstable; urgency=low + + * Updated to cvs updates of the gcc-2_95-branch until 19990828. + * Apply work around memory corruption (just for 2.95.1) by + Daniel Jacobowitz . + * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard + to fix some warnings (closes: #44670). + * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani + to fix a bug in valarray_array.h. + * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches + already in the gcc-2_95-branch (closes: #44690). + * Conform to debian-java policy (closes: #44463). + * Move docs to /usr/share/doc (closes: #44782). + * Remove debian/patches/gcc-align.dpatch applied upstream. + * debian/*.postinst: Call install-info only, when configuring. + * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle + /usr/doc -> /usr/share/doc transition. + + -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 + +gcc (2.95.1-2.1) unstable; urgency=low + + * Non-maintainer upload. + * ARM platform no longer needs library-prefix patch. + * Updated patches from Philip Blundell. + + -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 + +gcc (2.95.1-2) unstable; urgency=low + + * debian/gcc.{postinst,prerm}: gcc provides an alternative for + sparc64-linux-gcc. + * Applied patch from Ben Collins to enable bi-architecture (32/64) + support for sparc. + * Rebuild debian/control and debian/rules.parameters after unpacking. + * debian/rules2: binary-indep. Conditionalize on with_pascal. + + -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 + +gcc (2.95.1-1) unstable; urgency=low + + * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch + until 19990828. + * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. + * debian/README.java: New file. + * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC + for alpha. + * debian/rules [clean]: Remove debian/rules.parameters. + * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set + to installation dir of libstdc++. Why isn't this the default? + * debian/control.in: *-dev packages do not longer conflict with + libg++272-dev package. + * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. + * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). + * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. + * New version of 68060 build patch. + * debian/rules.conf: For m68k, depend on binutils version 2.9.1. + + -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 + +gcc (2.95.1-0pre2) unstable; urgency=medium + + * gpc is back again (fixes grave #43022). + * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. + * Work around the fatal dependtry assertion failure bug in dpkg (hint + from "Antti-Juhani Kaijanaho" , fixes important #43072). + + -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 + +gcc (2.95.1-0pre1) unstable; urgency=low + + * Updated to cvs 19990815 gcc-2_95-branch; included install docs and + FAQ from 2.95 release; upload source package as well. + * Source package contains tarballs only (gcc, libg++, installdocs). + * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. + * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from + pre 2.95 version; reference /usr/doc, not /usr/share/doc. + * Checked syntax for attributes of functions; checked for #35068; + checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and + binutils 2.9.1.0.25-2 the problem doesn't show up anymore). + * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. + * gcc is primary compiler for all platforms but m68k. Setting + severity of #22513 to fixed. + * debian/patches/gcc-default-arch.dpatch: New patch to enable generation + of i386 instruction as default (fixes #42743). + * debian/rules: Removed outdated gcc NEWS file (fixes #42742). + * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead + of aborting when out of memory (fixes #42622). + * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after + DOS newlines (fixes #29240). + * Fixed in gcc-2.95.1: #43001. + * Bugs closed in this version: + Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, + #42602, #42622, #42742 #42743, #43001, #43002. + + -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 + +gcc (2.95-3) unstable; urgency=high + + * Provide /lib/cpp again (fixes important bug #42524). + * Updated to cvs 19990805 gcc-2_95-branch. + * Build with the default scheduler. + * Apply install-multilib patch from Dan Jacobowitz. + * Apply revised cpp-A- patch from Dan Jacobowitz. + + -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 + +gcc (2.95-2) unstable; urgency=low + + * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. + * The following bugs are fixed (compared to egcs-1.1.2). + Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, + #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, + #41290, #41302, #41313. + * The following by Joel Klecker: + - Adopt dpkg-architecture variables. + - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. + - Disabled the testsuite, it is not included in the gcc 2.95 release. + + -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 + +gcc (2.95-1) unstable; urgency=low + + * Update for official gcc-2.95 release. + * Built without gpc. + * debian/rules: Remove g++FAQ from rules, which is outdated. + For ix86, build for i386, not i486. + * Apply patch from Jim Pick for building multilib package on arm. + + -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 + +gcc (2.95-0pre10) unstable; urgency=low + + * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream + strongly advises configuring outside of the source tree, and it makes + some things much easier. + * Add patch to prevent @local branches to weak symbols on powerpc (fixes + apt compilation). + * Add patch to make cpp -A- work as expected. + * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; + apply on all architectures. + * debian/control.in: Remove snapshot dependencies. + * debian/*.postinst: Reflect use of /usr/share/{info,man}. + + -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 + +gcc (2.95-0pre9) unstable; urgency=low + + * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, + #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, + #40991, #41117, #41290. + * Updated to CVS gcc-19990718 snapshot. + * debian/control.in: Removed references to egcs in descriptions. + Changed gcj's Recommends libgcj-dev to Depends. + * debian/rules: Apply ppc-library-prefix for alpha as well. + * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. + + -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 + +gcc (2.95-0pre8) unstable; urgency=low + + * Updated CVS. + * debian/copyright: s%doc/copyright%share/common-licenses% + * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ + * debian/patches/reporting.dpatch: Remake diff for current sources. + * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. + * debian/rules: Current dejagnu snapshot reports a framework version + of 1.3.1. + + -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 + +gcc-snapshot (19990714-0pre6) experimental; urgency=low + + * Updated to CVS gcc-19990714 snapshot. + * Applied ARM patch (#40515). + * Converted DOS style linefeeds in debian/patches/ppc-* files. + * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: + for some obscure reason, bash -e doesn't work. + * Reflect version change for libstdc++ (2.10). Remove libg++-name + patch; libg++ now has version 2.8.1.3. Removed libc version from + the package name. + + -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 + +gcc-snapshot (19990625-0pre5.1) experimental; urgency=low + + * Non-maintainer upload. + * Added ARM specific patch. + + -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 + +gcc-snapshot (19990625-0pre5) experimental; urgency=low + + * Updated to CVS gcc-19990625 snapshot. + + -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 + +gcc-snapshot (19990609-0pre4.1) experimental; urgency=low + + * Added and re-added a few last PPC patches. + + -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 + +gcc-snapshot (19990609-0pre4) experimental; urgency=low + + * Updated to CVS egcs-19990611 snapshot. + + -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 + +gcc-snapshot (19990609-0pre3) experimental; urgency=low + + * CVS gcc-19990609 snapshot. + * New gpc-19990607 snapshot. + + -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 + +gcc-snapshot (19990524-0pre1) experimental; urgency=low + + * egcs-19990524 snapshot. + * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, + which is now the "official" successor to gcc-2.8.1. The full version + name is: gcc-2.95 19990521 (prerelease). + * debian/control.in: Changed maintainers to `Debian GCC maintainers'. + * Moved all version numbers to epoch 1. + * debian/rules: Major changes. The support for secondary compilers + was already removed for the egcs-1.2 snapshots. Many fixes by + Joel Klecker . + - Send mail to Debian maintainers for successful builds. + - Fix VER and VERNO sed expressions. + - Replace remaining GNUARCH occurrences. + * New gpc snapshot (but don't build). + * debian/patches/valarray.dpatch: Backport from libstdc++-v3. + * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). + * Use cpp driver provided by the package. + * New script c89 (fixes #28261). + + -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 + +egcs (1.1.2-2) unstable; urgency=low + + * Integrate NMU's for arm and sparc (fixes #37582, #36857). + * Apply patch for the Hurd (fixes #37753). + * Describe open bugs in TODO.Debian. Please have a look if you can help. + * Update README / math functions section (fixes #35906). + * Done by J.H.M. Dassen (Ray) : + - At Richard Braakman's request, made -dbg packages for libstdc++ + and libg++. + - Provide egcc(1) (fixes lintian error). + + -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 + +egcs-snapshot (19990502-1) experimental; urgency=low + + * New snapshot. + + -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 + +egcs-snapshot (19990418-2) experimental; urgency=low + + * Merged Rays changes to build debug packages. + + -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 + +egcs-snapshot (19990418-1) experimental; urgency=low + + * New snapshot. + * Disable cpplib. + + -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 + +egcs (1.1.2-1.2) unstable; urgency=low + + * NMU for arm + * Added arm-optimizer.dpatch with optimizer workaround for ARM + + -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 + +egcs (1.1.2-1.1) unstable; urgency=low + + * NMU for sparc + * Included dpatch to modify the references to gcc/crtstuff.c so that + __register_frame_info is not a weak reference. This allows potato to + remain binary compatible with slink, while still retaining compatibility + with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has + been sent to the maintainer with a note it may not be needed for 1.1.3. + + -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 + +egcs (1.1.2-1) unstable; urgency=low + + * Final egcs-1.1.2 release built for potato as primary compiler + for all architectures except m68k. + + -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 + +egcs-snapshot (19990321-1) experimental; urgency=low + + * New snapshot. + * Disable gpc. + * debian/rules: Simplified (no secondary compiler, bumped all versions + to same epoch, libapi patch is included upstream). + * Separated out cpp documentation to cpp-doc package. + * Fixed in this version: #28417. + + -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 + +egcs (1.1.2-0slink2) stable; urgency=low + + * Applied H.J.Lu's egcs-19990315.linux patch. + * Install faq.html and egcs-1.1.2 announcment. + + -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 + +egcs (1.1.2-0slink1) stable; urgency=low + + * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. + * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. + * Fixes #30767, #32278, #34252, #34352. + * Don't build the libstdc++.so.2.9 library on architectures, which have + switched to glibc-2.1. + + -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 + +egcs (1.1.1.63-2.2) unstable; urgency=low + + * Non-maintainer upload. + * Incorporate patch from Joel Klecker to fix snapshot packages + by moving/removing the application of libapi. + * Disable the new libstdc++-dev-config and the postinst message in + glibc 2.1 versions. + + -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 + +egcs (1.1.1.63-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Compile with glibc 2.1 release version. + * New upstream version egcs-1.1.2 pre3. + * Miscellaneous rules updates (see changelog.snapshot). + * New set of powerpc-related patches from Franz Sirl, + . + * Disable libgcc.dpatch (new solution implemented upstream). Remove it. + * Also pass $target to config.if. + * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No + loss in -backwards- compatibility as far as I can tell, so add a + compatibility symlink, and add to shlibs file. + * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, + to prevent bogus .orig's in diffs. + * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from + Matthias Klose . + * Stop adding a backwards compatibility link for egcs-nof on powerpc. + To my knowledge, nothing uses it. Do add the libstdc++ API change + link, though. + + -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 + +egcs (1.1.1.63-2) stable; urgency=low + + * Provide a libstdc++ with a shared object name, which is compatible + to other distributions. Documented the change in README.Debian, + the libstdc++-2.9.postinst and the libstdc++-dev-config script. + + -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 + +egcs (1.1.1.63-1.1) unstable; urgency=low + + * Non-Maintainer release. + * Build against glibc 2.1. + * Make egcs the primary compiler on i386. + * Also confilct with egcc (<< FIRST_PRIMARY) + if FIRST_PRIMARY is defined. + (this tells dpkg that gcc completely obsoletes egcc) + * Remove hjl-12 patch again, HJL says it should not be + necessary with egcs 1.1.2. + (as per forwarded reply from Christopher Chimelis) + * Apply libapi patch in clean target before regenerating debian/control + and remove the patch afterward. Otherwise, the libstdc++ and libg++ + package names are generated wrong on a glibc 2.1 system. + + -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 + +egcs (1.1.1.63-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre3. + * Applied improved libstdc++ warning patch from Rob Browning. + + -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 + +egcs (1.1.1.62-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre2. + * New upstream version libg++-2.8.1.3. + * Readded ARM support + * Readded hjl-12 per request from Christopher C Chimelis + + + -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 + +egcs-snapshot (19990224-0.1) experimental; urgency=low + + * New snapshot. + * Add the ability to disable CPPLIB by setting CPPLIB=no in + the environment. + * Disable gpc for powerpc; I spent a long time getting it to + make correctly, and then it goes and ICEs. + + -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 + +egcs (1.1.1.61-1) unstable; urgency=low + + * New upstream version egcs-1.1.1-pre1. + * debian/control.in: Applied patch from bug report #32987. + * Split up H.J.Lu's hjl-19990115-linux patch into several small + chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux + aren't included in the separate chunks. Please refer to the + unmodified hjl-19990115-linux patch file in the egcs source pkg. + * Apply warning patch to fix the annoying spew you get if you try to + use ropes or deques with -Wall (which makes -Wall mostly useless for + spotting errors in your own code). Fixes #32996. + * debian/rules: Unapply patches in the exact reverse order they were + applied. + + -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 + +egcs (1.1.1-5) frozen unstable; urgency=medium + + * Move libgcc.map file to g++ package, where gcc is the secondary + compiler (fixes #32329, #32605, #32631). + * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). + * Apply NMU patch for arm architecure (fixes #32367). + * Don't apply hjl-12 patch for alpha architectures (requested by the + alpha developers, Christopher C Chimelis ). + * Call makeinfo with --no-validate to fix obscure build failure on alpha. + * Build gpc info files in doc subdirectory. + * Remove c++filt diversion (C++ name demangling patch is now in binutils, + fixes #30820 and #32502). + + -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 + +egcs (1.1.1-4.1) unstable; urgency=low + + * Non-maintainer upload. + * Pascal doesn't build for ARM. + + -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 + +egcs (1.1.1-4) frozen unstable; urgency=high + + * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a + * Move Pascal examples to the right place (fixes #32149, part 1). + * Add dependencies for switching from secondary to primary compiler, + if FIRST_PRIMARY is defined (fixes #32149, part 2). + + -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 + +egcs (1.1.1-3) frozen unstable; urgency=low + + * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the + __register_frame_info problems, mips and arm port included). + * Update gpc to 19990118 (beta release candidate). + * Strip static libraries (fixes #31247 and #31248). + * Changed maintainer address. + + -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 + +egcs (1.1.1-2) frozen unstable; urgency=low + + * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. + * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies + (for archs, where egcs is the primary compiler). + * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. + * Applied one more alpha patch: + ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz + * Applied PPro optimization patch. + * Apply emit-rtl-nan patch. + * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. + * Upgraded to gpc-19981218. + * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. + + -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 + +egcs-snapshot (19981211-1) experimental; urgency=low + + * New snapshot. + * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). + * New libg++-2.8.1.2a-19981209.tar.gz. + * debian/rules: new target mail-summary. + + -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 + +egcs (1.1.1-1) frozen unstable; urgency=high + + * Final egcs-1.1.1 release. + * The last version depended on a versioned libc6 again. + * Add lost dependency for libg++ on libstdc++. + * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux + system, which doesn't use the libapi patch. + + -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 + +egcs (1.1.0.91.59-2) frozen unstable; urgency=high + + * Fixes bugs from libc6 2.0.7u-6 upload without dependency line + Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. + * debian/copyright: Updated URLs. + * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. + * Install README.Debian and include information about patches applied. + * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used + on a hamm system. + + -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 + +egcs (1.1.0.91.59-1) frozen unstable; urgency=low + + * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. + * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). + * Package g77 provides f77 (fixes #29817). + * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. + * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: + #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. + * Upgraded libg++ to libg++-2.8.1.2a-19981114. + * Upgraded gpc to gpc-19981124. + * Close #25869: egcs and splay maintainers are unable to reproduce this + bug with the current Debian packages. Bug submitter doesn't respond. + * Close #25407: egcs maintainer cannot reproduce this bug with the current + Debian compiler. Bug submitter doesn't respond. + * Use debhelper 1.2.7 for building. + * Replace the libstdc++ and libg++ compatibility links with fake libraries. + + -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 + +egcs (1.1.0.91.58-5) frozen unstable; urgency=low + + * Applied patch to build on the m68060. + * Added c++filt and c++filt.1 to the g++ package. + * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. + * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. + * Closed bugs (#22158). + * Close #20248; on platforms where gas and gld are the default versions, + it makes no difference to configure with or without enable-ld. + * Close #24349. The bugs are in the amulet source. + See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x + * Rename gcc.info* files to egcs.info* (fixes #24088). + * Documented known bugs (and workarounds) in BUGS.Debian. + * Fixed demangling of C++ names (fixes #28787). + * Applied patch form aspell to libstdc++/stl/stl_rope.h. + * Updated from cvs 16 Nov 1998. + + -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 + +egcs-snapshot (19981115-2) experimental; urgency=low + + * New snapshot. Disabled gpc. + * New packages g77-doc and gpc-doc. + + -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 + +egcs (1.1.0.91.58-3) frozen unstable; urgency=low + + * Previous version installed in potato, not slink. + * Updated from cvs 3 Nov 1998. + + -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 + +egcs (1.1.0.91.58-2) unstable; urgency=low + + * [debian/rules]: added targets to apply and unapply patches. + * [debian/README.patches]: New file. + * Moved patches dir to debian/patches. debian/rules has to select + the patches to apply. + * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). + * Apply egcs-1.1-reload patch needed for powerpc architecture. + * Fixed bugs (#17768, #20252, #25508, #27788). + * Reapplied alpha patch (#20875). + * Fixes first part of #22513, extended README.Debian (combining C & C++). + * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, + #20640, #22450, #24244, #24288, #28520. + + -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 + +egcs (1.1.0.91.58-1) experimental; urgency=low + + * New upstream version. That's the egcs-1.1.1 prerelease plus patches from + the cvs archive upto 29 Oct 1998. + * Merged files from the egcs and snapshot packages. + * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still + 2.8.2). + * Moved patches dir to patches-1.1. + * Dan Jacobowitz: + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this branch). + * Fake snapshots drop the -snap-main. + + -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 + +egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low + + * This is a snapshot from the egcs_1_1_branch, with + libapi, reload, builtin-apply, and egcs patches from + the debian/patches/ dir applied, along with the egcs-gpc-patches + and gcc/p/diffs/gcc-egcs-2.91.55.diff. + * Conditionalize gcj and chill (since they aren't in this + branch). + * Fake snapshots drop the -snap-main. + + -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 + +egcs (1.1b-5) unstable; urgency=low + + * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). + + -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 + +egcs (1.1b-4) unstable; urgency=low + + * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from + `Recommends' to `Depends'. + * Updated README.Debian for egcs-1.1. + * Updated TODO. + + -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 + +egcs-snapshot (19981005-0.1) experimental; urgency=low + + * Make libstdc++2.9-snap-main and libg++-snap-main provide + their mainstream equivalents and put those equivalents into + their shlibs file. + * Package gcj, the GNU Compiler for Java(TM). + + * New upstream version of egcs (The -regcs_latest_snapshot branch). + * Build without libg++ entirely. + * Leave out gpc for now - the internals are sufficiently different + that it does not trivially compile. + * Include an experimental reload patch for powerpc - this is, + in the words of its author, not release quality, but it allows + powerpc linuxthreads to function. + * On architectures where we are the primary compiler, let snapshots + build with --prefix=/usr and conflict with the stable versions. + * Package chill, a front end for the language Chill. + * Other applied patches from debian/patches/: egcs-patches and + builtin-apply-patch. + * Use reload.c revision 1.43 to avoid a nasty bug. + + -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 + +egcs (1.1b-3.1) unstable; urgency=low + + * NMU to fix the egcc -> gcc link once and for all + + -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 + +egcs (1.1b-3) unstable; urgency=low + + * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. + Thanks to Chris Chimelis for pointing this out. + + -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 + +egcs (1.1b-2) unstable; urgency=low + + * New upstream spellfix release (Debian revision is 2 as the internal + version numbers didn't change). + * Added egcc -> gcc symlink on architectures where egcc is the primary C + compiler. Thus, maintainers of packages that require egcc, can now + simply use "egcc" without conditionals. + * Porters: we hope/plan to make egcs's gcc the default C compiler on all + platforms once the 2.2.x kernels are available. Please test this version + thoroughly, and give us a GO / NO GO for your architecture. + * Some symbols cpp used to predefine were removed upstream in order to clean + up the cpp namespace, but imake requires them for determining the proper + settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), + thus we put them back. Thanks to Paul Slootman for reporting his imake + problems on Alpha. + * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . + Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed + this already. + * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . + * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . + * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . + * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . + * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . + * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . + * Small fixes and updates in README. + * Changes affecting the source package only: + * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] + Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get + properly regenerated with multilib. + * [debian/TODO] Created. + * [INSTALL/index.html] Fixed broken link. + + -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 + +egcs (1.1a-1) unstable; urgency=low + + * New upstream release. + * Added README.libstdc++ . + * Updated Standards-Version. + * Matthias: + * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . + * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. + + -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 + +egcs (1.1-1) unstable; urgency=low + + * egcs-1.1 prerelease (from the last Debian package only the version file + changed). + * "Final" gpc Beta 2.1 gpc-19980830. + * Included libg++ and gpc in the .orig tarball. so that diffs are getting + smaller. + * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. + * debian/copyright: Updated URLs. + + -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 + +egcs (1.0.99.56-0.1) unstable; urgency=low + + * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). + * New libg++ snapshot 980828. + * Put all patches patches subdirectory; see patches/README in the source. + * debian/control.in: readded for libg++2.8.2-dev: + Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) + * Renamed libg++2.9 package to libg++2.8.2. + * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. + * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. + * debian/rules: New configuration flag for building with and without + libstdc++api patch; untested without ... + + -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 + +egcs (1.0.99-0.6) unstable; urgency=low + + * PowerPC fixes. + * On powerpc, generate the -msoft-float libs and package them + as egcs-nof. + * Fix signed char error in gpc. + * Create a libg++.so.2.9 compatibility symlink. + + -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 + +egcs (1.0.99-0.5) unstable; urgency=low + + * New upstream snapshot 19980824. + * New gpc snapshot gpc-980822; reenabled gpc for alpha. + + -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 + +egcs (1.0.99-0.4) unstable; urgency=low + + * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. + + -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 + +egcs (1.0.99-0.3) unstable; urgency=low + + * New upstream snapshot 19980816. + * debian/rules: build correct debian/control and debian/*.shlibs + * Enabled Haifa scheduler for ix86. + + -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 + +egcs (1.0.99-0.2) unstable; urgency=low + + * New upstream snapshot: egcs-19980812, minor changes only. + * Fixes for building on `primary' targets. + * Disabled gpc on `alpha' architecture. + * Uses debhelper 1.1.6 + * debian/control.in: Replace older snapshot versions in favor of newer + normal versions. + * debian/rules: Fixes building of binary-arch target only. + + -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 + +egcs (1.0.99-0.1) unstable; urgency=low + + * New upstream version: pre egcs-1.1 version. + * Many changes ... for details see debian/changelog.snapshot in the + source package. + * New packages libstdc++2.9 and libstdc++2.9-dev. + * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. + * New gpc snapshot gpc-980729: new package gpc. + * Uses debhelper 1.1 + + -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 + +egcs-snapshot (19980803-4) experimental; urgency=low + + * rebuilt debian/control. + + -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 + +egcs-snapshot (19980803-3) experimental; urgency=low + + * debian/rules: fix installation locations of NEWS, header and + `undocumented' files. + * man pages aren't compressed for the snapshot package. + + -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 + +egcs-snapshot (19980803-2) experimental; urgency=low + + * debian/rules: Uses debhelper. Old in debian/rules.old. + renamed postinst, prerm files for use with debhelper. + * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, + when called for configure. + * egcs-docs is architecture independent package. + * new libg++ snapshot 980731. + * installed libstdc++ api patch (still buggy). + + -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 + +egcs-snapshot (19980729-1) experimental; urgency=low + + * New snapshot version 19980729 from CVS archive. + * New gpc snapshot gpc-980729. + * Let gcc/configure decide about using the Haifa scheduler. + * Remove -DDEBIAN. That was needed for the security improvements with + regard to the /tmp problem. egcs-1.1 chooses another approach. + * Save test-protocol and extract gpc errors to gpc-test-summary. + * Tighten binutils dependency to 2.9.1. + * debian/rules: new build-info target + * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. + * debian/rules: add dependency for debian/control. + * debian/rules: remove bin/c++filt + * TODO: next version will use debhelper; the unorganized moving of + files becomes unmanageable ... + * TODO: g++ headers in stdc++ package? check! + + -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 + +egcs-snapshot (19980721-1) experimental; urgency=low + + * Unreleased. Infinite loops in executables made by gpc. + + -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 + +egcs-snapshot (19980715-1) experimental; urgency=low + + * New snapshot version from CVS archive. + * New gpc snapshot gpc-980715. + * New libg++ version libg++-2.8.2-980708. Changed versioning + schema for library. The major versions of libc, libstdc++ and the + g++ interface are coded in the library name. Use this new schema, + but provide a symlink to our previous schema, since the library + seems to be binary compatible. + * [debian/rules]: Fixed bug in build target, when bootstrap returns + with an error + + -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 + +egcs-snapshot (19980701-1) experimental; urgency=low + + * New snapshot version from CVS archive. + Two check programs in libg++ had to be manually killed to finish the + testsuite (tBag and tSet). + * New gpc snapshot gpc-980629. + * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove + gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c + gcc/objc/objc-parse.y, since these files are part of the release). + * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the + snapshot. egcs-1.1 will have another solution. + * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler + error :-( + * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and + have moved again into the gcc-lib dir. They are installed under + libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? + * debian/rules: reflect change of build dir of libraries. + + -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 + +egcs-snapshot (19980628-0.1) experimental; urgency=low + + * New upstream snapshot version. + * Non-maintainer upload; Matthias appears to be absent currently. + * Updated shlibs. + * Merged changes from regular egcs: + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, + so the .diff.gz becomes smaller. + * [debian/rules] Partial sync/update with the one for the regular egcs + version. + * [debian/rules] Make gcc/p/configure executable. + + -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 + +egcs (1.0.3a-0.6) frozen unstable; urgency=low + + * Some libg++ development files were in libstdc++2.8-dev rather than + libg++2.8-dev. Fixed this and dealt with upgrading from the earlier + versions (fixes #23908; this bug is not marked release-critical, but + is annoying and can be quite confusing for users. Therefore, I think + this fix should go in 2.0). + + -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 + +egcs (1.0.3a-0.5) frozen unstable; urgency=low + + * Fixed location of .hP files (Fixes #23448). + * [debian/rules] simplified extraction of the files for libg++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 + +egcs (1.0.3a-0.4) frozen unstable; urgency=low + + * [gcc/gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created + as a side effect. (fixes #23123 for egcs). + * [gcc/collect2.c] There's still a vulnerability here; I don't see how + I can fix it without leaving behind tempfiles though. + * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or + newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) + need this. + * [debian/rules] Clean up some generated files outside builddir, so the + .diff.gz becomes smaller. + + -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 + +egcs-snapshot (19980608-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 + +egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) + + * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. + This works around #17768 which is considered release-critical. + * Changes by Matthias: + * [debian/README] Documentation of the compiler situation for Objective C. + * [debian/rules, debian/control.*] Generate control file from a master + file. + * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync + with the one for the egcs snapshots. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 + for egcs). + * [gcc/gcc.c] A couple of temp files weren't marked for deletion. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 + +egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for egcs). + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled + -DUSE_MKSTEMP . + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc/gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [gcc/f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + * Run the testsuite (this requires the dejagnu package in experimental; + unfortunately, it is difficult to distinguish this version from the one + in frozen). + if possible, and log the results in warn_summary and bootstrap-summary. + * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in + comment. + * Added notes on the Debian compiler setup [debian/README] to the + development packages. + * Matthias: + * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". + * [debian/rules] Updated so it can be used for both egcs releases and + snapshots easily; added support for the GNU Pascal Compiler gpc. + * [contrib/test_summary, contrib/warn_summary] Added from CVS. + * Run compiler checks and include results in /usr/doc/. + * Updates to the README. + * [debian/rules] Use assignments to speed up startup. + * [debian/rules] Show the important variables at the start of the build + process. + * [debian/control.secondary] Added a dependency of gobjc on egcc on + architectures where egcs provides the secondary compiler, as + /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). + * [debian/control.*] Bumped Standards-Version; used shorter version + numbers in the dependency relationships (esthetic difference only); + fixed typo. + + -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 + +egcs-snapshot (19980525-1) experimental; urgency=low + + * New snapshot version. + + -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 + +egcs-snapshot (19980517-1) experimental; urgency=low + + * "Initial" release of the egcs-snapshot package; many debian/* files + derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood + , NMU's by J.H.M. Dassen (Ray) ) + * The egcs-snapshot packages can coexist with the packages of the + egcs release. Package names have a '-ss' appended. + * All packages are installed in a separate tree (/usr/lib/egcs-ss following + the FHSS). + * Made all snapshot packages extra, all snapshot packages conflict + with correspondent egcs packages, which are newer than the snapshot. + * Included libg++-2.8.1-980505. + * Included GNU Pascal (gpc-980511). + * Haifa scheduler enabled for all snapshot packages. + * Run compiler checks and include results in /usr/doc/. + * Further information in /usr/doc//README.snapshot. + + -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 + +egcs (1.0.3a-0.1) frozen unstable; urgency=low + + * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) + (we were using 1.0.3-prerelease). This includes the Haifa patches + we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had + since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches + we had is negligable. + * iostream info documentation was in the wrong package (libg++2.8-dev). + Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing + this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, + I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed + already know enough to use --force-overwrite. + * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that + demangles Objective C method names in gcc error messages. + * Explicitly disable Haifa scheduling on Alpha, to make it easier to use + this package's diff with egcs snapshots, which may turn on Haifa + scheduling even though it is still unstable. (Requested by Chris Chimelis) + * Don't run "configure" again if builddir already exists (makes it faster + to restart builds in case one is hacking internals). Requested by + Johnnie Ingram. + * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 + and higher (the prototype has probably changed; having the declaration + broke Sparc compiles). + * [debian/rules] Determine all version number automatically (from the + version string in gcc/version.c). + * [debian/copyright] Updated FTP locations; added text about libg++ (fixes + #22465). + + -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 + +egcs (1.0.3-0.3) frozen unstable; urgency=low + + * Made an "egcs-doc" package containing documentation for egcs (e)gcc, + g++, gobjc, so that administrators can choose whether to have this + documenation or the documentation that comes with the GNU gcc package. + Dependency on this is Recommends: on architectures where egcs provides + the primary C compiler; Suggests: on the others (where GNU gcc is still + the primary C compiler). + * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more + up to date. + * Added iostream info documentation to libstdc++2.8-dev. + + -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 + +egcs (1.0.3-0.2) frozen unstable; urgency=low + + * Added libg++ that works with egcs, found at + ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz + (fixes #20587 (Severity: important)). + * The "libg++" and "libg++-dev" virtual packages now refer to the GNU + extensions. + * Added the g++ FAQ that comes with libg++ to the g++ package. + * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it + builds OK in builddir. + * Added -D__i386__ to the cpp predefines on intel. + * Patches Matthias supplied me with: + * Further 1.0.3 prerelease patches from CVS. + This includes patches to the Haifa scheduler. Alpha porters, please + check if this makes the Haifa scheduler OK again. + * Objective C patches from CVS. + + -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 + +egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) + + * bug fixes only in new upstream version + * Applied patches from egcs CVS archive (egcs_1_03_prerelease) + (see gcc/ChangeLog in the egcs source package). + * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). + * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), + libg++272-dev (hamm) [regular packages] rather than + Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" + to be used as a virtual package for a new libg++ package (i.e. an up to + date one, which not longer contains libstdc++, but only the GNU + extensions) that is compatible with the egcs g++ packages. Such a package + isn't available yet. Joel Klecker tried building libg++2.8.1.1a within + egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . + * Filed Severity: important bugs against wxxt1-dev (#21707) because these + still depend on libg++-dev, which is removed in this version. + A fixed libsidplay1-dev has already been uploaded. + * libstdc++2.8 is now Section: base and Priority: required (as dselect is + linked against it). + * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported + that this caused problems on some machines. + * [gcc/extend.texi] + ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; + use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . + (fixes the egcs part of #20002). + * Updated Standards-Version. + * Changed chmod in debian/rules at Johnie Ingram's request. + * Rather than hardwire the Debian part of the packages' version number, + extract it from debian/changelog . + * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. + (Fixes #21192). + * Applied workaround for the GNUstep packages on sparc systems. + See README.sparc (on sparc packages only) in the doc directory. + This affects the other compilers as well. + * Already done in 1.0.2-0.7: the gobjc package now provides a virtual + package objc-compiler. + + -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 + +egcs (1.0.2-0.7) frozen unstable; urgency=low + + * Separated out Objective-C compiler. + * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html + + -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 + +egcs (1.0.2-0.6) frozen unstable; urgency=low + + * Due to upstream changes (libg++ is now only the GNU specific C++ + classes, and is no longer maintained; libstdc++ contains the C++ + standard library, including STL), the virtual "libg++-dev" + package's meaning has become confusing. Therefore, new or updated + packages should no longer use the virtual "libg++-dev" package. + * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). + The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) + which doesn't work, as libstc++-dev is a virtual package. + * Bumped Standards-Version. + + -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 + +egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) + + * Modified shlibs file for libstdc++ to generate versioned dependencies, + as it is not link compatible with the 1.0.1-x versions in + project/experimental. (Fixes #20247, #20033) + Packages depending on libstd++ should be recompiled to fix their + dependencies. + * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or + newer. + * Fixed problems with the unknown(7) symlink for gcov. + * Reordering links now works. + + -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 + +egcs (1.0.2-0.4) frozen unstable; urgency=low + + * Unreleased. This is the version Adam Heath received from me. + * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc + packages (including bo's gcc_2.7.2.1-8) is handled properly + (fixes #19931, #19672, #20217, #20593). + * Alpha architecture (fixes #20875): + * Patched gcc/config/alpha/linux.h for the gmon functions to operate + properly. + * Made egcs the primary C compiler. + * Enabled Hafia scheduling. + * Lintian-detected problems: + * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 + * E: egcc: binary-without-manpage gcov + Reported as wishlist bug; added link to undocumented(7). + * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 + * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 + + -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 + +egcs (1.0.2-0.3) frozen unstable; urgency=low + + * Really fixed dependencies. + + -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 + +egcs (1.0.2-0.2) frozen unstable; urgency=low + + * Fixed dependencies. + + -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 + +egcs (1.0.2-0.1) frozen unstable; urgency=low + + * New upstream version; it now has -Di386 in CPP_PREDEFINES. + * Only used the debian/* patches from 1.0.1-2; the rest of it appears + to be in 1.0.2 already. + + -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 + +egcs (1.0.1-2) unstable; urgency=low + + * Integrated pre-release 1.0.2 patches + * Split out g++ + * egcs may now provide either the primary or secondary C compiler + + -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 + +egcs (1.0.1-1) unstable; urgency=low + + * New upstream version + * egcs is now the standard Debian gcc! + * gcc now provides c-compiler (#15248 et al.) + * g77 now provides fortran77-compiler + * g77 dependencies now correct (#16991) + * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) + + -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 + +egcs (1.0-1) experimental; urgency=low + + * First official release + + From late September until the release, I was unable to get any snapshot to + compile... + + -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 + +egcs (970917-1) experimental; urgency=low + + * New upstream snapshot (There's a lot of stuff here as well, including + a new libstdc++, but it _still_ won't build...) + * eg77 driver now works properly + + -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 + +egcs (970904-1) experimental; urgency=low + + * New upstream snapshot + + -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 + +egcs (ss-970814-1) experimental; urgency=low + + * Initial packaging (of initial snapshot!) + + -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 + +gcc272 (2.7.2.3-12) unstable; urgency=low + + * Compiled on a glibc-2.0 based system. + * Reflect move of manpage to /usr/share in gcc.postinst as well. + * Moved gcc272-docs to section doc, priority optional. + + -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 + +gcc272 (2.7.2.3-11) unstable; urgency=low + + * Follow Debian policy for GNU system type (fixes #42657). + * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 + complaining about obsolete spec operators (using gcc -V 2.7.2.3). + Patch suggested by Zack Weinberg . + + -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 + +gcc272 (2.7.2.3-10) unstable; urgency=low + + * Renamed source package to gcc272. The egcs source package is renamed + to gcc, because it's now the "official" GNU C compiler. + * Changed maintainer address to "Debian GCC maintainers". + * Install info and man stuff to /usr/share. + + -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 + +gcc (2.7.2.3-9) unstable; urgency=low + + * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. + Fixes #36306. + + -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 + +gcc (2.7.2.3-8) unstable; urgency=low + + * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. + On i386, sparc and m68k, this package is compiled against glibc2.0. + * The cpp package is built from the egcs source package. + + -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 + +gcc (2.7.2.3-7) frozen unstable; urgency=low + + * Separated out ObjC compiler to gobjc27 package. + * Changed maintainer address. + * Synchronized README.Debian with egcs-1.1.1-3. + + -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 + +gcc (2.7.2.3-6) frozen unstable; urgency=low + + * Link with -lc on i386, m68k, sparc, when building shared libraries + (fixes #25122). + + -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 + +gcc (2.7.2.3-5) frozen unstable; urgency=low + + * Updated maintainer info. + * Updated Standards-Version; made lintian-clean. + * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to + the Conflicts. + * Updated the README and renamed it to README.Debian . + * Put a reference to /usr/doc/gcc/README.Debian in the info docs. + * Updated description of g++272 . + * Clean up generated info files, to keep the diff small. + + -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 + +gcc (2.7.2.3-4.8) frozen unstable; urgency=high + + * Non-maintainer release + * Fix type in extended description + * Removed wrong test in postinst + * Add preinst to clean up some stuff from an older gcc package properly + and stop man complaining about dangling symlinks + + -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 + +gcc (2.7.2.3-4.7) frozen unstable; urgency=high + + * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' + becomes installable. + + -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 + +gcc (2.7.2.3-4.6) frozen unstable; urgency=high + + * [gcc.c] There is one call to choose_temp_base for determining the + tempdir to be used only; + #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. + (fixes #23123 for gcc). + * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). + * [debian/control] description for gcc-docs said `egcs' where it should have + said `gcc' (fixes #23396). + + -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 + +gcc (2.7.2.3-4.5) frozen unstable; urgency=high + + * The previous version left temporary files behind, as they were not + marked for deletion afterwards. + + -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 + +gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) + + * Security improvements with regard to the /tmp problem + (gcc opens predictably named files in TMPDIR which can be abused via + symlinks) (Fixes #19453 for gcc): + * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly + every time; affects gcc/gcc.c . + * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) + rather than mktemp(3). + * Security improvements: don't use the result of choose_temp_base in a + predictable fashion. + [gcc.c]: + * @c, @objective-c: use random name rather then tempbasename.i for + intermediate preprocessor output (%g.i -> %d%u). + * @c, @objective-c: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched + "as [-o output file] " to + "as [-o output file]". + * @c, @objective-c, @assembler-with-cpp: use previous random name + (cc1|cpp output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U) + [f/lang-specs.h]: + * @f77-cpp-input: use random name rather then tempbasename.i for + intermediate cpp output (%g.i -> %d%u). + * @f77-cpp-input: use previous random name (cpp output) rather than + tempbasename.i for f771 input (%g.i -> %U). + * @f77-cpp-input: switched + "as [-o output file] " to + "as [-o output file]". + * @f77-cpp-input: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: use random name rather then tempbasename.i for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate ratfor output (%g.f -> %d%u). + * @ratfor: use previous random name (ratfor output) rather than + tempbasename.i for f771 input (%g.f -> %U). + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @ratfor: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use previous random name + (ratfor output) rather then tempbasename.s for intermediate assembler + input (%g.s -> %U). + * @f77: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %d%u). + * @f77: switched + "as [-o output file] " to + "as [-o output file]". + * @ratfor: use random name rather then tempbasename.s for + intermediate compiler output (%g.s -> %U). + + -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 + +gcc (2.7.2.3-4.3) frozen unstable; urgency=high + + * The "alpha" patches from -4 affected a lot more than alpha support, + and in all likeliness broke compilation of libc6 2.0.7pre3-1 + and 2.0.7pre1-4 . I removed them by selective application of the + diff between -4 and -4. (should fix #22292). + * Fixed reference to the trampolines paper (fixes #20002 for Debian; + this still needs to be forwarded). + * This is for frozen too. (obsoletes #22390 (request to move -4.2 to + frozen)). + * Split of gcc-docs package, so that the gcc can be succesfully installed + on systems that have egcs-docs installed. + * Added the README on the compiler situation that's already in the egcs + packages. + * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. + + -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 + +gcc (2.7.2.3-4.2) unstable; urgency=low + + * Still for unstable, as I have received no feedback about the g++272 + package yet. + * gcc now Provides: objc-compiler . + * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. + (fixes #19765, #20563) + + -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 + +gcc (2.7.2.3-4.1) unstable; urgency=low + + * Bumped Standards-Version. + * Forked off a g++272 package (e.g. for code that uses the GNU extensions + in libg++); for now this is in "unstable" only; feedback appreciated. + * Some cleanup (lintian): permissions, absolute link, gzip manpage. + + -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 + +gcc (2.7.2.3-4) unstable; urgency=low + + * Added alpha patches + * Only build C and objective-c compilers, split off g++ + + -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 + +gcc (2.7.2.3-3) unstable; urgency=low + + * Added patches for m68k + * Added patches for sparc (#13968) + + -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 + +gcc (2.7.2.3-2) unstable; urgency=low + + * Added g77 support (g77 0.5.21) + + -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 + +gcc (2.7.2.3-1) unstable; urgency=low + + * New upstream version + * Now using pristine source + * Removed misplaced paragraph in cpp.texi (#10877) + * Fix security bug for temporary files (#5298) + * Added Suggests: libg++-dev (#12335) + * Patched objc/thr-posix.c to support conditions (#12502) + + -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 + +gcc (2.7.2.2-7) unstable; urgency=low + + * Made cc and c++ managed through alternates mechanism (for egcs) + + -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 + +gcc (2.7.2.2-6) unstable; urgency=low + + * Tweaked Objective-C thread support (#11069) + + -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 + +gcc (2.7.2.2-5) unstable; urgency=low + + * More updated m68k patches + * Now conflicts with libc5-dev (#10006, #10112) + * More strict Depends: cpp, prevents version mismatch (#9954) + + -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 + +gcc (2.7.2.2-4) unstable; urgency=low + + * Moved to unstable + * Temporarily removed fortran support (waiting for new g77) + * Updated m68k patches + + -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 + +gcc (2.7.2.2-3) experimental; urgency=low + + * Built against libc6 (fixes bug #8511) + + -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 + +gcc (2.7.2.2-2) experimental; urgency=low + + * Fixed configure to build crt{begin,end}S.o on i386 + + -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 + +gcc (2.7.2.2-1) experimental; urgency=low + + * Built for use with libc6-dev (experimental purposes only!) + * Added m68k patches from Andreas Schwab + + -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 + +gcc (2.7.2.1-7) unstable; urgency=low + + * Patched to support g77 0.5.20 + + -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 + +gcc (2.7.2.1-6) unstable; urgency=low + + * Added (small) manpage for protoize/unprotoize (fixes bug #6904) + * Removed -lieee from specs file (fixes bug #7741) + * No longer builds aout-gcc + + -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 + +gcc (2.7.2.1-5) unstable; urgency=low + + * debian/control now lists cpp in section "interpreters" + * Re-added Objective-c patches for unstable + + -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 + +gcc (2.7.2.1-4) stable unstable; urgency=low + + * Changed original source file so dpkg-source -x works + * Removed Objective-c patches (unsafe for stable) + * Built against rex's libc, so fixes placed in -3 are available to + those still using rex + + -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 + +gcc (2.7.2.1-3) unstable; urgency=low + + * New (temporary) maintainer + * Updated to new standards and source format + * Integrated aout-gcc into gcc source package + * Demoted aout-gcc to Priority "extra" + * cpp package description more clear (fixes bug #5428) + * Removed cpp "Replaces: gcc" (fixes bug #5762) + * Minor fix to invoke.texi (fixes bug #2909) + * Added latest Objective-C patches for GNUstep people (fixes bug #4657) + + -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 --- gcc-3.4-3.4.6.orig/debian/gnat-BV-doc.doc-base.ug +++ gcc-3.4-3.4.6/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/gcc-@BV@-base/Ada/gnat_ugn_unw.html +Files: /usr/share/doc/gcc-@BV@-base/Ada/gnat_ugn_unw.html + +Format: info +Index: /usr/share/info/gnat_ugn_unw-@BV@.info.gz +Files: /usr/share/info/gnat_ugn_unw-@BV@* --- gcc-3.4-3.4.6.orig/debian/gcj-wrapper.1 +++ gcc-3.4-3.4.6/debian/gcj-wrapper.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-3.3(1) for a list of options that gcj understands. + +.SH "SEE ALSO" +.BR gcj-3.3(1) +, +.BR javac(1) --- gcc-3.4-3.4.6.orig/debian/README.patches +++ gcc-3.4-3.4.6/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". --- gcc-3.4-3.4.6.orig/debian/control.m4 +++ gcc-3.4-3.4.6/debian/control.m4 @@ -0,0 +1,725 @@ +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) +Maintainer: MAINTAINER +Uploaders: Matthias Klose , Gerhard Tonn +Standards-Version: 3.6.2 +ifdef(`TARGET',`dnl cross +Build-Depends: dpkg-dev (>= 1.13.9), LIBC_BUILD_DEP, m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), bison (>= 1:2.3), flex (>= 2.5.33), realpath (>= 1.9.12), lsb-release`'TARGETBD +',`dnl native +Build-Depends: dpkg-dev (>= 1.13.9), LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP libunwind7-dev (>= 0.98.5-7) [ia64], libatomic-ops-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 (>= BINUTILSV) [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:2.3), flex (>= 2.5.33), gettext, texinfo (>= 4.3), zlib1g-dev, gcc-3.4, locales [locale_no_archs !hurd-i386], procps [check_no_archs], sharutils, PASCAL_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP realpath (>= 1.9.12), lsb-release +Build-Depends-Indep: doxygen (>= 1.4.2), graphviz (>= 2.2), gsfonts-x11 +')dnl + +ifdef(`TARGET', `', ` +Package: gcc`'PV-base +Architecture: any +Section: devel +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 native + +ifenabled(`libgcc',` +Package: libgcc1`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',required) +Depends: ${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',`hppa m68k') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(required)) +Depends: ${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(`lib64gcc',` +Package: lib64gcc1`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: ${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 +Architecture: biarch32_archs +Section: libs +Priority: optional +Depends: ${dep:libcbiarch} +ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 +',`')`'dnl +Conflicts: ia32-libs-openoffice.org (<= 1ubuntu2) +Replaces: ia32-libs-openoffice.org (<= 1ubuntu2) +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 + +ifenabled(`cdev',` +Package: gcc`'PV`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(standard)') +Depends: gcc`'PV-base (= ${gcc:Version}), cpp`'PV`'TS (= ${gcc:Version}), binutils`'TS (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libunwinddev}, ${shlibs:Depends} +Recommends: ${dep:libcdev} +Conflicts: gcc-3.2`'TS (<= 1:3.2.3-0pre8) +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), ${dep:libcbiarchdev}, ${dep:libgccbiarch} +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. + . + ABIs changed between gcc-3.3 and gcc-3.4 on some architectures (hppa, m68k, + mips, mipsel, sparc). Please read /usr/share/doc/gcc-3.4/README.Debian + for more details. +ifdef(`TARGET', `dnl + . + This package contains C cross-compiler for TARGET architecture. +')`'dnl +')`'dnl cdev + +ifenabled(`cdev',` +ifenabled(`hppa64',` +ifdef(`TARGET', `', ` +Package: gcc`'PV-hppa64 +Architecture: hppa +Section: devel +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends} +Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.5-hppa64 (<= 3.5-0pre1) +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 hppa64 +')`'dnl cdev + +ifenabled(`cdev',` +Package: cpp`'PV`'TS +Architecture: any +Section: ifdef(`TARGET',`devel',`interpreters') +Priority: ifdef(`TARGET',`extra',`PRI(standard)') +Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +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}) +Replaces: cpp (<= 1:2.93.12) +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info `format'. +')`'dnl gfdldoc +')`'dnl native +')`'dnl cdev + +ifenabled(`c++',` +ifenabled(`c++dev',` +Package: g++`'PV`'TS +Architecture: any +Section: devel +Priority: ifdef(`TARGET',`extra',`PRI(standard)') +Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO-dev`'LS (= ${gcc:Version}), ${shlibs:Depends}, libstdc++6 (>= 4.0.2-4) +Replaces: gcc`'TS (<= 2.7.2.3-3) +Provides: c++-compiler`'TS, c++abi2-dev +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), ${dep:libcxxbiarch} +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++. + . + ABIs changed between gcc-3.3 and gcc-3.4 on some architectures (hppa, m68k, + mips, mipsel, sparc). Please read /usr/share/doc/gcc-3.4/README.Debian + for more details. Do not mix code compiled with g++-3.3 and g++-3.4. +ifdef(`TARGET', `dnl + . + This package contains C++ cross-compiler for TARGET architecture. +')`'dnl +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`proto',` +Package: protoize +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base ((= ${gcc:Version}), 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(`objc',` +ifenabled(`objcdev',` +Package: gobjc`'PV +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, libobjc`'OBJC_SO (>= ${gcc:EpochVersion}) +Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}) +Provides: objc-compiler +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. +')`'dnl objcdev + +ifenabled(`libobjc',` +Package: libobjc`'OBJC_SO +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +Description: Runtime library for GNU Objective-C applications + Library needed for GNU ObjC applications linked against the shared library. +')`'dnl libobjc +')`'dnl objc + +ifenabled(`f77',` +ifenabled(`fdev',` +Package: g77`'PV +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), libg2c`'G2C_SO-dev (>= ${gcc:EpochVersion}), ${shlibs:Depends} +Provides: fortran77-compiler +Suggests: g77`'PV-doc +Conflicts: g77-2.95 (<= 1:2.95.4-19), g77-3.0 (<= 1:3.0.4-16), g77-3.2 (<= 1:3.2.3-9), g77-3.3 (<= 1:3.3.4-3) +Description: The GNU Fortran 77 compiler + This is the GNU g77 Fortran compiler, which compiles + Fortran 77 on platforms supported by the gcc compiler. It uses the + gcc backend to generate optimized code. + +ifenabled(`gfdldoc',` +Package: g77`'PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}) +Replaces: g77 (<= 1:2.91.58-3) +Description: Documentation for the GNU Fortran compiler (g77) + Documentation for the GNU Fortran 77 compiler in info `format'. +')`'dnl gfdldoc +')`'dnl fdev + +ifenabled(`libg2c',` +Package: libg2c`'G2C_SO +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +Description: Runtime library for GNU Fortran 77 applications + Library needed for GNU Fortran 77 applications linked against the + shared library. + +Package: libg2c`'G2C_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), libg2c`'G2C_SO (= ${gcc:EpochVersion}), ${shlibs:Depends} +Conflicts: g77-2.95, g77-2.96, g77-3.0 (<= 1:3.0.4-16), g77-3.2 (<= 1:3.2.3-9), g77-3.3 (<= 1:3.3.3-0pre3) +Description: GNU Fortran 77 library development + Headers and static libraries for g2c. +')`'dnl libg2c + +ifenabled(`lib64g2c',` +Package: lib64g2c`'G2C_SO +Section: libs +Architecture: biarch64_archs +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libg2c0 (<< 1:3.4.4-7) +Description: Runtime library for GNU Fortran 77 applications (64bit) + Library needed for GNU Fortran 77 applications linked against the + shared library. +')`'dnl lib64g2c + +ifenabled(`lib32g2c',` +Package: lib32g2c`'G2C_SO +Section: libs +Architecture: biarch32_archs +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends} +Replaces: libg2c0 (<< 1:3.4.4-7) +Description: Runtime library for GNU Fortran 77 applications (32bit) + Library needed for GNU Fortran 77 applications linked against the + shared library. +')`'dnl lib32g2c +')`'dnl f77 + +ifenabled(`java',` +ifenabled(`javadev',` +Package: gcj`'PV +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), libgcj`'GCJ_SO-common (>= ${gcc:SoftVersion}), ${shlibs:Depends}, java-common +Recommends: fastjar, gij`'PV (>= ${gcc:Version}), libgcj`'GCJ_SO-dev (>= ${gcc:Version}) +Provides: java-compiler +Suggests: libgcj`'GCJ_SO-awt (>= ${gcc:Version}) +Conflicts: libgcj4-dev, libgcj6-dev, libgcj7-dev +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 javadev + +ifenabled(`libgcj',` +Package: gij`'PV +Priority: optional +Architecture: any +Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +Suggests: fastjar, gcj`'PV (= ${gcc:Version}), libgcj`'GCJ_SO-awt (= ${gcc:Version}) +Provides: java-virtual-machine, java1-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-common +Section: libs +Architecture: all +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}) +Conflicts: classpath (<= 0.04-4), libgcj3 (<< 1:3.2-0pre2) +Description: Java runtime library (common files) + This package contains files shared by classpath and libgcj libraries. + +Package: libgcj`'GCJ_SO +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), libgcj-common (>= ${gcc:SoftVersion}), ${shlibs:Depends} +Recommends: libgcj`'GCJ_SO-common (>= ${gcc:SoftVersion}) +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. + +Package: libgcj`'GCJ_SO-common +Section: libs +Architecture: all +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), libgcj`'GCJ_SO (>= ${gcc:SoftVersion}) +Conflicts: libgcj5 (<< 3.4.0-1) +Replaces: libgcj5 (<< 3.4.0-1) +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: libgcj`'GCJ_SO-awt +Section: libs +Architecture: any +Priority: PRI(optional) +Depends: libgcj`'GCJ_SO (= ${gcc:Version}), ${shlibs:Depends} +Conflicts: libgcj5 (<< 3.4.0-2), libgcj-awt5 +Replaces: libgcj5 (<< 3.4.0-2), libgcj-awt5 +Description: AWT peer runtime libraries for use with gcj + These are runtime libraries holding the AWT peer implementations + for libgcj (currently only the GTK based peer library). +')`'dnl libgcj + +ifenabled(`javadev',` +Package: libgcj`'GCJ_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcj`'PV (= ${gcc:Version}), libgcj`'GCJ_SO (>= ${gcc:Version}), libgcj`'GCJ_SO-common (>= ${gcc:SoftVersion}), libgcj`'GCJ_SO-awt (>= ${gcc:Version}), zlib1g-dev, ${shlibs:Depends} +Conflicts: libgcj2-dev, libgcj3-dev, libgcj4-dev +Description: Java development headers and static library for use with gcj + This is 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. +')`'dnl javadev +')`'dnl java + +ifenabled(`fastjar',` +Package: fastjar +Section: devel +Architecture: any +Priority: PRI(optional) +Depends: ${shlibs:Depends} +Description: Jar creation utility + Replacement for Suns .jar creation program. It is written in C + instead of java and is tons faster. +')`'dnl fastjar + +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: libffi`'FFI_SO-dev +Section: libdevel +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV`'-base (= ${gcc:Version}), libffi`'FFI_SO (>= ${gcc:EpochVersion}) +Recommends: gcc-3.4 +Conflicts: libffi1-dev, libffi2-dev +Description: Foreign Function Interface library (development files) + This package contains the headers and static library files necessary for + building building programs which use libffi. + . + Use this package together with gcc-3.4. + . + 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: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +ifdef(`TARGET',`Provides: libstdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +Conflicts: libstdc++6-0 +Replaces: libstdc++6-0 +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 + +Package: lib32stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`all',`biarch32_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(optional)) +Depends: gcc`'PV-base (= ${gcc:Version}), lib32gcc`'GCC_SO`'LS +ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +Description: The GNU Standard C++ Library v3 (ia32) + 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 libcxx + +ifenabled(`lib64cxx',` +Package: lib64stdc++CXX_SO`'LS +Architecture: ifdef(`TARGET',`all',`biarch64_archs') +Section: ifdef(`TARGET',`devel',`libs') +Priority: ifdef(`TARGET',`extra',PRI(important)) +Depends: gcc`'PV-base (= ${gcc:Version}), ${shlibs:Depends} +ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 +',`')`'dnl +Description: The GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (64bit) + This package contains an additional runtime library for C++ programs + built with the GNU compiler. + . + libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which + was included up to g++-2.95. The first version of libstdc++-v3 appeared + in g++-3.0. +ifdef(`TARGET', `dnl + . + This package contains files for TARGET architecture, for use in cross-compile + environment. +')`'dnl +')`'dnl lib64cxx + +ifenabled(`c++dev',` +Package: libstdc++CXX_SO-dev`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: ifdef(`TARGET',`extra',PRI(standard)) +Depends: gcc`'PV-base (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), ${dep:libcdev} +ifdef(`TARGET',`',`dnl +Conflicts: libstdc++6-0-dev, 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 +Replaces: libstdc++6-0-dev +Suggests: libstdc++CXX_SO-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++. Be advised that this only works + with the GNU C++ compiler (version 3.0), and no earlier library will work it. + . + 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-pic`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: gcc`'PV-base (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}), libstdc++CXX_SO-dev`'LS (= ${gcc:Version}) +ifdef(`TARGET',`Provides: libstdc++CXX_SO-pic-TARGET-dcv1 +',`')`'dnl +Conflicts: libstdc++6-0-pic +Replaces: libstdc++6-0-pic +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-dbg`'LS +Architecture: ifdef(`TARGET',`all',`any') +Section: ifdef(`TARGET',`devel',`libdevel') +Priority: extra +Depends: gcc`'PV-base (= ${gcc:Version}), libstdc++CXX_SO`'LS (>= ${gcc:Version}) +ifdef(`TARGET',`Provides: libstdc++CXX_SO-dbg-TARGET-dcv1 +',`')`'dnl +Recommends: libstdc++CXX_SO-dev`'LS (= ${gcc:Version}) +Conflicts: libstdc++6-0-dbg, libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-4.0-dbg`'LS +Replaces: libstdc++6-0-dbg +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++6-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}) +Conflicts: libstdc++5-doc, libstdc++5-3.3-doc +Description: The GNU Standard C++ Library v3 (documentation files) + This package contains documentation files for the GNU stdc++ library. + . + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +')`'dnl native +')`'dnl c++dev +')`'dnl c++ + +ifenabled(`ada',` +Package: gnat`'-GNAT_V +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${dep:libgnat}, ${shlibs:Depends} +Suggests: gnat`'PV-doc, ada-reference-manual +Provides: ada-compiler +Conflicts: gnat, gnat-3.1, gnat-3.2, gnat-3.3 +Provides: gnat +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: gcc`'PV-base (= ${gcc:Version}), ${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) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}) +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: gcc`'PV-base (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${shlibs:Depends} +Recommends: libgmp3-dev, libncurses5-dev +Suggests: gpc`'GPC_PV-doc (>= ${gcc: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-3.x is still in an experimental + stage. For production use, please use gpc or gpc-2.95. + +Package: gpc`'GPC_PV-doc +Architecture: all +Section: doc +Priority: PRI(optional) +Depends: gcc`'PV-base (>= ${gcc:SoftVersion}) +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-3.x is still in an experimental + stage. For production use, please use gpc or gpc-2.95. +')`'dnl pascal + +ifenabled(`treelang',` +Package: treelang`'PV +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), 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 + +ifenabled(`fixincl',` +Package: fixincludes +Architecture: any +Priority: PRI(optional) +Depends: gcc`'PV-base (= ${gcc:Version}), 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 at gcc's build time, so + we make fixincludes available at build time of other packages, such that + checking tools like lintian can make use of it. +')`'dnl proto + +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: gcc`'PV-base (= ${gcc:Version}), ${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 +dnl +dnl last line in file --- gcc-3.4-3.4.6.orig/debian/gpc-PV-BV-doc.doc-base.gpc +++ gcc-3.4-3.4.6/debian/gpc-PV-BV-doc.doc-base.gpc @@ -0,0 +1,15 @@ +Document: gpc-@PV@-@BV@-doc +Title: The GNU Pascal Compiler +Author: Various +Abstract: This manual documents how to run, install and maintain the + GNU Pascal compiler (GPC), as well as its new features and + incompatibilities, and how to report bugs. +Section: Apps/Programming + +Format: html +Index: /usr/share/doc/gcc-@BV@-base/pascal/gpc.html +Files: /usr/share/doc/gcc-@BV@-base/pascal/gpc.html + +Format: info +Index: /usr/share/info/gpc-@PV@-@BV@.info.gz +Files: /usr/share/info/gpc-@PV@-@BV@* --- gcc-3.4-3.4.6.orig/debian/rules.patch +++ gcc-3.4-3.4.6/debian/rules.patch @@ -0,0 +1,211 @@ +# -*- makefile -*- +# rules to patch the unpacked files in the source directory +# --------------------------------------------------------------------------- +# various rules to unpack addons and (un)apply patches. +# - patch / apply-patches +# - unpatch / reverse-patches + +.NOTPARALLEL: + +patchdir = debian/patches + +# which patches should be applied? +debian_patches = \ + gcc-textdomain \ + +ifneq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + rename-info-files +endif + +debian_patches += \ + libstdc++-pic \ + libstdc++-doclink \ + libstdc++-doxygen-syntax \ + amd64-specs \ + gccbug \ + gccbug-posix \ + hppa-toplevel hppa-libffi hppa-libjava hppa-libjava-update \ + fastjar-update \ + fastjar-version \ + boehm-gc-nocheck \ + libltdl \ + m68k-update \ + libf2c-mxunit \ + arm-bigendian \ + tool-version-checks \ + +ifneq ($(DEB_TARGET_ARCH),lpia) + debian_patches += cpu-default-i486 +endif + +ifeq ($(GFDL_INVARIANT_FREE),yes) + debian_patches += \ + fastjar-doc +endif + +# svn-updates \ +# disable-gnat-testsuite \ + +ifeq ($(with_multiarch_lib),yes) + debian_patches += multiarch-lib +endif + +ifeq ($(with_java),yes) + debian_patches += gcj-without-rpath +endif + +debian_patches += libffi-soversion # package disabled, but patch needed +ifeq ($(with_libffi),yes) + #debian_patches += libffi-soversion + ifneq ($(with_java),yes) + debian_patches += libffi-without-libgcj + endif +endif + +ifeq ($(with_proto),yes) + debian_patches += deb-protoize +endif + +ifeq ($(with_objc),yes) + debian_patches += # libobjc +endif + +ifeq ($(with_ada),yes) + ifeq ($(with_libgnat),yes) + debian_patches += ada-link-lib + endif + debian_patches += ada-gcc-name #ada-names + #debian_patches += ignore-comp-fail +endif + +ifeq ($(with_pascal),yes) + debian_patches += gpc-20060215-20060322 gpc-3.x gpc-doc gpc-updates gpc-bison-2.2 + debian_patches += gpc-names + ifneq ($(with_gpidump),yes) + debian_patches += gpc-no-gpidump + endif +endif + +ifeq ($(DEB_TARGET_ARCH_OS),hurd) + debian_patches += hurd-changes +endif + +ifeq ($(DEB_TARGET_GNU_CPU),m32r) + debian_patches += m32r-gotoff m32r-stack m32r-libffi \ + m32r-fixes m32r-limits m32r-pie m32r-remove-addsi3 m32r-auto +endif +ifeq ($(DEB_TARGET_ARCH),alpha) + debian_patches += alpha-ieee +endif + +ifeq (,$(findstring /$(DEB_TARGET_ARCH)/,/mips/mipsel/)) + debian_patches += libffi-mips libjava-mips libstdc++-mips-atomic +endif + +ifeq ($(biarch),yes) + debian_patches += biarch-include config-ml + + ifeq ($(DEB_TARGET_ARCH),i386) + debian_patches += i386-biarch + endif + ifeq ($(DEB_TARGET_ARCH),s390) + debian_patches += s390-biarch + endif + ifeq ($(DEB_TARGET_ARCH),sparc) + debian_patches += sparc-biarch + endif + ifneq ($(with_64bit_check),yes) + debian_patches += libstdc++-disable-run-check + endif +endif + +ifeq ($(biarch32),yes) + debian_patches += biarch-include config-ml + + ifeq ($(DEB_TARGET_ARCH),amd64) + debian_patches += amd64-biarch + endif + ifeq ($(DEB_TARGET_ARCH),ppc64) + debian_patches += ppc64-biarch + endif + ifneq ($(with_32bit_check),yes) + debian_patches += libstdc++-disable-run-check + endif +endif + +ifeq (,$(findstring yes, $(biarch)$(biarch32))) + debian_patches += multiarch-include +endif + +ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd) + debian_patches += kbsd-gnu kbsd-gnu-ada +endif +ifeq ($(DEB_TARGET_ARCH_OS),knetbsd) + debian_patches += kbsd-gnu +endif +ifeq ($(DEB_TARGET_ARCH_OS),netbsd) + debian_patches += # netbsd-all-gcc netbsd-archs-gcc +endif + +ifdef DEB_CROSS + debian_patches += cross-configure +endif + +# not applied by default +#debian_patches += protector + +debian_patches += link-libs reporting gcc-version + +ifeq ($(DEB_TARGET_ARCH_OS),linux) + debian_patches += configure-deplibs_check_method # applied last +endif + + +patch: $(patch_stamp) +$(patch_stamp): $(unpack_stamp) pre-patch \ + $(foreach p,$(debian_patches),$(patch_stamp)-$(p)) + echo -e "\nPatches that $(distribution) applied in this version:" > pxxx + for i in $(debian_patches); do \ + echo -e "\n$$i:" >> pxxx; \ + sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.dpatch >> pxxx; \ + done + mv -f pxxx $@ + +pre-patch: + @if [ -x /usr/bin/automake-1.4 ]; then \ + : ; \ + else \ + mkdir -p $(PWD)/bin; \ + ln -sf /usr/bin/automake $(PWD)/bin/automake-1.4; \ + fi + +unpatch: + for stamp in none `ls -1t $(patch_stamp)-*`; do \ + case "$$stamp" in none|patched-stamp|patched-\*) continue; esac; \ + patch=`echo $$stamp | sed -e 's,$(patch_stamp)-,,'`; \ + echo "trying to revert patch $$patch ..."; \ + if [ -x $(patchdir)/$$patch.dpatch ]; then true; else \ + chmod +x $(patchdir)/$$patch.dpatch; fi; \ + if $(patchdir)/$$patch.dpatch -unpatch -d $(srcdir); then \ + echo "reverted $$patch patch."; \ + rm -f $$stamp; \ + else \ + echo "error in reverting $$patch patch."; \ + exit 1; \ + fi; \ + done + rm -f patched-stamp + +# debian/rules.conf isn't yet sourced +SOURCE_VERSION := $(shell dpkg-parsechangelog | awk '/^Version:/ {print $$NF}') +DEB_VERSION := $(shell echo $(SOURCE_VERSION) | sed 's/ds[0-9]*//') + +$(patch_stamp)-%: $(patchdir)/%.dpatch + if [ -x $< ]; then true; else chmod +x $<; fi + if [ -f $@ ]; then \ + echo "$* patches already applied."; exit 1; \ + fi + DEB_VERSION='$(DEB_VERSION)'; export DEB_VERSION; \ + $< -patch -d $(srcdir) + echo "$* patches applied." > $@ --- gcc-3.4-3.4.6.orig/debian/libstdc++6-doc.doc-base +++ gcc-3.4-3.4.6/debian/libstdc++6-doc.doc-base @@ -0,0 +1,13 @@ +Document: libstdc++6-doc +Title: The GNU Standard C++ Library v3 (gcc-3.4) +Author: Various +Abstract: This package contains documentation files for the GNU stdc++ library. + One set is the distribution documentation, the other set is the + source documentation including a namespace list, class hierarchy, + alphabetical list, compound list, file list, namespace members, + compound members and file members. +Section: Apps/Programming + +Format: html +Index: /usr/share/doc/libstdc++6-doc/libstdc++/html_user/index.html +Files: /usr/share/doc/libstdc++6-doc/libstdc++/html*/* --- gcc-3.4-3.4.6.orig/debian/copyright +++ gcc-3.4-3.4.6/debian/copyright @@ -0,0 +1,522 @@ +This is the Debian GNU/Linux prepackaged version of the GCC compiler +collection, containing C, C++, Objective-C, Fortran-77, Java, Chill +and Pascal compilers, and the libstdc++ support library. + +The compilers are split into several binary packages: gcc (which has +support for C, g++ (which supports C++), gobjc (which supports +Objective C), g77 (supports Fortran77), gij, gcj (supports Java), chill +(supports Chill) and gpc (supports Pascal). A version of libstdc++-v3 +is also provided. + +Documentation is provided in the packages cpp-3.4-doc, gcc-3.4-doc, +gcj-3.4-doc, g77-3.4-doc and gpc-2.1-3.4-doc. + +This package was put together by the Debian GCC maintainers +, with sources obtained from: + + [NOTE: the current prereleases obtained from the CVS archive] + ftp://gcc.gnu.org/pub/gcc/releases/gcc-3.4.0.tar.bz2 + + http://gnu-pascal.de/alpha/ + +Changes: See changelog.Debian.gz + +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 can be found 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. + +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 libgcj library is licensed under the terms of the GNU General +Public License, with this special exception: + + As a special exception, if you link this library with other files + 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. + +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 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. --- gcc-3.4-3.4.6.orig/debian/fastjar.prerm +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/lib32gcc1.preinst +++ gcc-3.4-3.4.6/debian/lib32gcc1.preinst @@ -0,0 +1,8 @@ +#! /bin/sh -e + +if [ ! -h /usr/lib32 -a -d /usr/lib32 ]; then + rm -rf /usr/lib32 + ln -s /emul/ia32-linux/usr/lib /usr/lib32 +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/rules.conf +++ gcc-3.4-3.4.6/debian/rules.conf @@ -0,0 +1,350 @@ +# -*- makefile -*- +# rules.conf +# - used to build debian/control and debian/rules.parameters +# - assumes unpacked sources + +include debian/rules.defs + +# 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.16.1-3 +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.3.5-10 +ifeq ($(findstring linux, $(DEB_TARGET_GNU_SYSTEM)),linux) + ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),alpha ia64)) + LIBC_DEV_DEP = libc6.1-dev$(LS) (>= $(libc_ver)) + else + LIBC_DEV_DEP = libc6-dev$(LS) (>= $(libc_ver)) + endif +else + ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) + LIBC_DEV_DEP = libc0.3-dev$(LS) + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),kfreebsd-gnu) + LIBC_DEV_DEP = libc0.1-dev + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),knetbsd-gnu) + LIBC_DEV_DEP = libc0.1-dev$(LS) + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM),netbsd-elf-gnu) + LIBC_DEV_DEP = libc12-dev$(LS) + endif +endif + +LIBC_BUILD_DEP := libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_ver)) [kfreebsd-i386 knetbsd-gnu] | libc12-dev (>= $(libc_ver)) [netbsd-elf-gnu] | libc6-dev (>= $(libc_ver)) +LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc1 [amd64 ppc64], lib64gcc1 [powerpc i386 sparc s390], + +#GNAT_BUILD_DEP := gnat-3.4 [ada_no_archs], +#JAVA_BUILD_DEP := libxtst-dev [java_no_archs], libgtk2.0-dev (>= 2.4.4-2) [java_no_archs], libart-2.0-dev [java_no_archs], +PASCAL_BUILD_DEP := libncurses5-dev [pascal_no_archs], texlive-latex-base [pascal_no_archs], libgmp3-dev [pascal_no_archs], help2man [pascal_no_archs], + +ifeq ($(PKGSOURCE),gcc-snapshot) + LIBC_BIARCH_BUILD_DEP = +endif + +LIBC_BIARCH_DEP := +LIBC_BIARCH_DEV_DEP := +LIBCXX_BIARCH_DEP := +ifeq ($(biarch),yes) + ifeq ($(DEB_TARGET_ARCH),i386) + LIBC_BIARCH_DEP := libc6-amd64 (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-amd64 + endif + ifeq ($(DEB_TARGET_ARCH),powerpc) + LIBC_BIARCH_DEP := libc6-ppc64 (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-ppc64 (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),sparc) + LIBC_BIARCH_DEP := libc6-sparc64 (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-sparc64 (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),s390) + LIBC_BIARCH_DEP := libc6-s390x (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-s390x (>= $(libc_ver)) + endif + LIBCXX_BIARCH_DEP = lib64stdc++$(CXX_SONAME) +endif +ifeq ($(biarch32),yes) + ifeq ($(DEB_TARGET_ARCH),amd64) + LIBC_BIARCH_DEV_DEP := libc6-dev-i386 (>= $(libc_ver)) + LIBC_BIARCH_DEP := libc6-i386 (>= $(libc_ver)) + endif + ifeq ($(DEB_TARGET_ARCH),ppc64) + LIBC_BIARCH_DEP := libc6-powerpc (>= $(libc_ver)) + LIBC_BIARCH_DEV_DEP := libc6-dev-powerpc (>= $(libc_ver)) + endif + LIBCXX_BIARCH_DEP = lib32stdc++$(CXX_SONAME) +endif + +LIBUNWIND_DEV_DEP := +ifeq ($(DEB_TARGET_ARCH),ia64) + LIBUNWIND_DEV_DEP := libunwind7-dev (>= 0.98.5-6) +endif + +ifdef DEB_CROSS + # When building a cross compiler, the libc-dev build dependancy must be + # sensitive to the target architecture; the host architecture is irrelevant. + LIBC_BUILD_DEP = $(LIBC_DEV_DEP) + LIBC_BIARCH_BUILD_DEP = + LIBUNWIND_DEV_DEP = +endif + +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) +DEB_VERSION_NOREL := $(shell echo $(DEB_VERSION) | sed 's/-[^-]*$$//') +BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([1-9]\.[0-9]\).*-.*/\1/') + +# The version number can be found in gcc/version.c e.g. +# char *version_string = "2.95 19990710 (prerelease)"; +VER := $(strip $(shell grep version_string $(srcdir)/gcc/version.c \ + | sed -e 's/^.*= *"//' -e 's/ .*$$//' -e 's/".*$$//')) +# The numeric part of the gcc version number (x.yy.zz) +NEXTVER := $(shell echo $(VER) | \ + 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) +BREAKS_VERSION = 3.4.4-1 +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/') +# semiautomatic ... +DEB_SOVERSION := $(VER)-1 +DEB_SOVERSION := $(DEB_VERSION) +DEB_SOVERSION := 3.4.4 +DEB_SOEVERSION := $(EPOCH):3.4.4 +DEB_STDCXX_SOVERSION := 3.4.4 +DEB_FFI_SOVERSION := $(DEB_SOVERSION) +DEB_F2C_SOVERSION := 1:3.4.4-5 + +# manual ... +ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) + GCC_SONAME := 2 + 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) (>= $(DEB_LIBGCC_VERSION)) +LIBGCC_BIARCH_DEP := +ifeq ($(biarch),yes) + LIBGCC_BIARCH_DEP := lib64gcc$(GCC_SONAME) (>= $(DEB_LIBGCC_VERSION)) +endif +ifeq ($(biarch32),yes) + LIBGCC_BIARCH_DEP := lib32gcc$(GCC_SONAME) (>= $(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 '/^LIBOBJC_VERSION/ \ + {split($$3,v,":"); print v[1]}' \ + $(srcdir)/libobjc/Makefile.in)) + +F77_SONAME := $(strip $(shell awk -F= \ + '/^VERSION_MAJOR/ {split($$2,v,":"); print v[1]}' \ + $(srcdir)/libf2c/Makefile.in)) + +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 }' )) + +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) + +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 += -DG2C_CEV=1:3.3.4-4 + +ctrl_flags += \ + -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ + -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ + -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ + -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ + -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ + -DJAVA_BUILD_DEP="$(JAVA_BUILD_DEP)" \ + -DPASCAL_BUILD_DEP="$(PASCAL_BUILD_DEP)" \ + -DTP=$(TP) \ + -DTS=$(TS) \ + -DLS=$(LS) + +ifdef DEB_CROSS + ifeq ($(DEB_TARGET_ARCH),sparc) + TARGETBD = , libc6-dev-sparc64-sparc-cross + endif + ifeq ($(DEB_TARGET_ARCH),s390) + TARGETBD = , libc6-dev-s390x-s390-cross + endif + ifeq ($(DEB_TARGET_ARCH),ia64) + TARGETBD = , libunwind7-dev-ia64-cross (>= 0.98.3-3), libatomic-ops-dev-ia64-cross + endif + ctrl_flags += \ + -DTARGET=$(DEB_TARGET_ARCH) \ + -DTARGETBD="$(TARGETBD)" +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++ + addons = libgcc lib64gcc libcxx lib64cxx cdev c++dev +else + languages = c #c++ f77 pascal + addons = cdev libs # hppa64 c++dev fdev libg2c lib64g2c lib32g2c libs \ + # libcxx lib64cxx \ + # lib64objc lib64gcc libgcc objcdev proto # libnof + #languages += java treelang ada objc + #addons += fixincl fastjar javadev libffi libgcj lib64ffi lib64gcj + #addons += libgnat libobjc +endif + +ifneq ($(GFDL_INVARIANT_FREE),yes) + addons += gfdldoc +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) \ + -DG2C_SO=$(F77_SONAME) \ + -DGCJ_SO=$(GCJ_SONAME) \ + -DGNAT_SO=$(GNAT_SONAME) \ + -DGNAT_V=$(GNAT_VERSION) \ + -DFFI_SO=$(FFI_SONAME) \ + -Denabled_languages="$(languages) $(addons)" \ + -Dada_no_archs="$(foreach arch,$(ada_no_cpus) $(ada_no_systems),!$(arch))" \ + -Djava_no_archs="$(foreach arch,$(java_no_cpus) $(java_no_systems),!$(arch))" \ + -Dpascal_no_archs="$(foreach arch,$(pascal_no_cpus) $(pascal_no_systems),!$(arch))" \ + -Dlibgc_no_archs="$(foreach arch,$(libgc_no_cpus) $(libgc_no_systems),!$(arch))" \ + -Dcheck_no_archs="$(foreach arch,$(check_no_cpus) $(check_no_systems),!$(arch))" \ + -Dlocale_no_archs="$(foreach arch,$(locale_no_cpus) $(locale_no_systems),!$(arch))" \ + -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32_archs)))" \ + -Dbiarch64_archs="$(strip $(subst /, ,$(biarch_archs)))" \ + debian/control.m4 > debian/control.tmp2 + uniq debian/control.tmp2 > 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_VERSION)'; \ + echo 'gcc:SoftVersion=$(DEB_VERSION_NOREL)'; \ + echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ + echo 'gpc:Version=$(DEB_GPC_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:libgnat=$(LIBGNAT_DEP)'; \ + ) > debian/substvars.local.tmp + [ -e debian/substvars.local ] \ + && cmp -s debian/substvars.local debian/substvars.local.tmp \ + && rm -f debian/substvars.local.tmp && exit 0; \ + mv debian/substvars.local.tmp debian/substvars.local; \ + touch $(control_stamp) + +parameters-file: + rm -f debian/rules.parameters.tmp + ( \ + echo '# configuration parameters taken from upstream source files'; \ + echo 'VER := $(VER)'; \ + echo 'BASE_VERSION := $(BASE_VERSION)'; \ + echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ + echo 'DEB_VERSION := $(DEB_VERSION)'; \ + echo 'DEB_VERSION_NOREL := $(DEB_VERSION_NOREL)'; \ + 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_FFI_SOVERSION := $(DEB_FFI_SOVERSION)'; \ + echo 'DEB_F2C_SOVERSION := $(DEB_F2C_SOVERSION)'; \ + echo 'GCC_SONAME := $(GCC_SONAME)'; \ + echo 'CXX_SONAME := $(CXX_SONAME)'; \ + echo 'F77_SONAME := $(F77_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 '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: + for f in debian/*-BV*; do \ + f2=$$(echo $$f \ + | sed 's/BV/$(BASE_VERSION)/;s/PV/$(GPC_BASE_VERSION)/'); \ + sed -e 's/@BV@/$(BASE_VERSION)/g' \ + -e 's/@PV@/$(GPC_BASE_VERSION)/g' \ + -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ + $$f > $$f2; \ + touch -r $$f $$f2; \ + done --- gcc-3.4-3.4.6.orig/debian/gcc-BV-doc.doc-base.gcc +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/g77-BV-doc.prerm +++ gcc-3.4-3.4.6/debian/g77-BV-doc.prerm @@ -0,0 +1,5 @@ +#! /bin/sh -e + +install-info --quiet --remove g77-@BV@ + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/rules +++ gcc-3.4-3.4.6/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 + +default: build + +include debian/rules.defs +include debian/rules.unpack +include debian/rules.patch + +pre-build: +ifneq (,$(filter $(DEB_TARGET_ARCH), hppa)) + @echo "The package is not built anymore for $(DEB_TARGET_ARCH)" + @exit 42 +endif + +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: pre-build $(build_dependencies) +$(build_stamp): $(unpack_stamp) $(patch_stamp) $(configure_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_dummy_stamp): $(configure_dummy_stamp) + $(MAKE) -f debian/rules2 $@ +$(build_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 rm -f + chmod 644 debian/patches/* + dh_clean + +install: $(install_dependencies) +$(install_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 xxx: + $(MAKE) -f debian/rules2 $@ + +binary-indep binary-arch binary: install + $(MAKE) -f debian/rules2 $@ + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +release: + foo=$(shell basename $(CURDIR)); \ + if [ "$$foo" != "gcc-3.4" ]; then \ + find -name CVS -o -name .cvsignore -o -name '.#*' | \ + xargs rm -rf; \ + fi + +.PHONY: build clean binary-indep binary-arch binary release --- gcc-3.4-3.4.6.orig/debian/treelang-BV.doc-base +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/g77-BV-doc.doc-base +++ gcc-3.4-3.4.6/debian/g77-BV-doc.doc-base @@ -0,0 +1,14 @@ +Document: g77-@BV@ +Title: The GNU Fortran 77 Compiler +Author: Various +Abstract: This manual documents how to run, install and port `g77', 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/fortran/g77.html +Files: /usr/share/doc/gcc-@BV@-base/fortran/g77.html + +Format: info +Index: /usr/share/info/g77-@BV@.info.gz +Files: /usr/share/info/g77-@BV@* --- gcc-3.4-3.4.6.orig/debian/rules.defs +++ gcc-3.4-3.4.6/debian/rules.defs @@ -0,0 +1,688 @@ +# -*- makefile -*- +# definitions used in more than one Makefile / rules file + +SHELL = /bin/bash -e # brace expansion used in rules file +PWD := $(shell pwd) +srcdir = $(PWD)/src +builddir = $(PWD)/build +builddir_hppa64 = $(PWD)/build-hppa64 +stampdir = stamps +distribution := $(shell lsb_release -is) + +# version of default gcc compiler (e.g. 3.3 or 3.4) +BUILD_CC_VERSION:= $(shell gcc -dumpversion | sed 's/\([0-9]*\.[0-9]*\)\(.*\)/\1/') + +# architecture dependent variables +DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) +DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU) +DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) +DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) + +# allow debian/target to be used instead of GCC_TARGET - this was requested +# by toolchain-source maintainer +ifndef GCC_TARGET +DEBIAN_TARGET_FILE := $(strip $(shell cat debian/target 2>/dev/null)) +ifneq ($(DEBIAN_TARGET_FILE),) +GCC_TARGET := $(DEBIAN_TARGET_FILE) +endif +endif + +DEB_TARGET_ARCH := $(shell dpkg-architecture -f \ + -a$(GCC_TARGET) -qDEB_HOST_ARCH 2>/dev/null) +DEB_TARGET_ARCH_OS := $(shell dpkg-architecture -f \ + -a$(GCC_TARGET) -qDEB_HOST_ARCH_OS 2>/dev/null) +DEB_TARGET_ARCH_CPU := $(shell dpkg-architecture -f \ + -a$(GCC_TARGET) -qDEB_HOST_ARCH_CPU 2>/dev/null) + +DEB_TARGET_GNU_CPU := $(shell dpkg-architecture -f \ + -a$(DEB_TARGET_ARCH) -qDEB_HOST_GNU_CPU 2>/dev/null) +DEB_TARGET_GNU_SYSTEM := $(shell dpkg-architecture -f \ + -a$(DEB_TARGET_ARCH) -qDEB_HOST_GNU_SYSTEM 2>/dev/null) +DEB_TARGET_GNU_TYPE := $(shell dpkg-architecture -f \ + -a$(DEB_TARGET_ARCH) -qDEB_HOST_GNU_TYPE 2>/dev/null) + +# --------------------------------------------------------------------------- +# which binary packages are built? + +# cross compiler support. If GCC_TARGET is set, then it's the architecture +# we build for. + +ifeq ($(DEB_TARGET_ARCH),) +$(error GCC_TARGET value "$(GCC_TARGET)" is not a valid Debian architecture) +endif + +ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) + DEB_CROSS = yes + # TP: Target Prefix. Used primarily as a prefix for cross tool + # names (e.g. powerpc-linux-gcc). + # TS: Target Suffix. Used primarily at the end of cross compiler + # package names (e.g. gcc-powerpc). + # LS: Library Suffix. Used primarily at the end of cross compiler + # library package names (e.g. libgcc-powerpc-cross). + DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) + TP = $(DEB_TARGET_GNU_TYPE)- + TS = -$(DEB_TARGET_ALIAS) + LS = -$(DEB_TARGET_ARCH)-cross +endif + +ifeq ($(DEB_CROSS),yes) + TARGET_ALIAS := $(DEB_TARGET_ALIAS) +else + TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) + + # old target for the Hurd in sarge + ifeq ($(TARGET_ALIAS),i386-gnu) + TARGET_ALIAS := i586-gnu + endif + + # for compatibility with older dpkg versions. + TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) + + # configure as linux-gnu, not linux + #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) + # TARGET_ALIAS := $(TARGET_ALIAS)-gnu + #endif + + # configure as linux, not linux-gnu + #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) +endif + +printarch: + @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) + @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) + @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) + @echo DEB_TARGET_GNU_CPU: $(DEB_TARGET_GNU_CPU) + @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) + @echo DEB_TARGET_GNU_TYPE: $(DEB_TARGET_GNU_TYPE) + @echo TARGET_ALIAS: $(TARGET_ALIAS) + @echo TP: $(TP) + @echo TS: $(TS) + +# The name of the source package +PKGSOURCE := $(shell dpkg-parsechangelog | awk '/^Source:/ {print $$2;exit 0}') + +gcc_tarball := $(firstword $(wildcard gcc-*.tar.*)) +gcc_srcdir := $(shell echo $(gcc_tarball) | sed 's/\.tar.*//;s/-dfsg//') + +gpc_tarball := gpc-20060215.tar.bz2 +gpc_srcdir := gpc-20060215 + +#testsuite_srcdir := testsuite-3.3-20030118 +#testsuite_tarball := $(testsuite_srcdir).tar.bz2 + + +versioned_packages := yes + +ifdef DEB_CROSS + cross_bin_arch := -$(TARGET_ALIAS) + cross_lib_arch := -$(DEB_TARGET_ARCH)-cross +endif + +# Don't include docs with GFDL invariant sections -------------------- +GFDL_INVARIANT_FREE := no +ifeq ($(distribution),Debian) + GFDL_INVARIANT_FREE := yes +endif + +# -------------------- +# Configuration of components + +# common things -------------------- +# build common packages, where package names don't differ in different +# gcc versions (fastjar, fixincludes, libgcj-common) ... +with_common_pkgs := no + +# ... and some libraries, which do not change (libffi2, libg2c, libobjc1). +with_common_libs := built from gcc-3.3 + +#no_common_libs := s390 +#ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(no_common_libs))) +# with_common_libs := no +#endif + +with_dev := yes + +#no_dummy_cpus := ia64 i386 i486 hppa s390 sparc +#with_base_only := yes +#ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) +# with_base_only := no +# with_common_libs := yes +# with_common_pkgs := yes +#else +# with_common_libs := no +# with_common_pkgs := no +# with_dev := no +#endif + +# multiarch -------------------- +with_multiarch_inc := no +with_multiarch_lib := no + +# C -------------------- +enabled_languages := c +# Build all packages needed for C development +ifeq ($(with_base_only),yes) + with_cdev := no +else + ifeq ($(with_dev),yes) + with_cdev := yes + else + with_cdev := no + endif +endif + +# C++ -------------------- +ifeq ($(with_base_only),yes) + with_cxx := no +else + with_cxx := yes +endif +no_cxx_cpus := avr hppa +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(no_cxx_cpus))) + with_cxx := disabled for architecture $(DEB_TARGET_ARCH_CPU) +endif +ifeq (c++, $(findstring c++,$(WITHOUT_LANG))) + with_cxx := disabled by environment +endif +with_cxx := disabled for the gcc-3.4 build + +# Build all packages needed for C++ development +ifeq ($(with_cxx)-$(with_dev),yes-yes) + with_cxxdev := yes +else + with_cxxdev := no +endif + +ifeq ($(with_cxx),yes) + enabled_languages += c++ +endif + +ifeq ($(with_common_pkgs)-$(with_cxx),yes-yes) + with_libcxx := yes +else + with_libcxx := no +endif + +# debugging versions of libstdc++ +ifeq ($(with_cxxdev),yes) + with_debug := yes +else + with_debug := no +endif +debug_no_cpus := +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(debug_no_cpus))) + with_debug := disabled for architecure $(DEB_TARGET_ARCH_CPU) +endif + +# __cxa_atexit ------------- +# The __cxa_atexit API does not exist in some libc version (NetBSD) +with_cxa_atexit := yes + +no_cxa_systems := netbsd-elf-gnu +ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(no_cxa_systems))) + with_cxa_atexit := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif + +# Java -------------------- +# java converted for V3 C++ ABI for some archs +ifeq ($(with_base_only),yes) + with_java := no +else + with_java := yes +endif + +java_no_cpus := mips mipsel m32r +java_no_systems := hurd-i386 kfreebsd-gnu knetbsd-gnu netbsd-elf-gnu +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(java_no_cpus))) + with_java := disabled for architecture $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(java_no_systems))) + with_java := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq ($(DEB_TARGET_ARCH),hurd-i386) + with_java := disabled for architecure $(DEB_TARGET_ARCH) +endif +ifdef DEB_CROSS + with_java := disabled for cross compiler package +endif +ifeq (java, $(findstring java,$(WITHOUT_LANG))) + with_java := disabled by environment +endif +ifneq ($(with_cxx),yes) + with_java := disabled, because C++ disabled: $(with_cxx) +endif +with_java := disabled for the gcc-3.4 build + +# Build all packages needed for Java development (gcj, libgcj-dev) +ifeq ($(with_java)-$(with_dev),yes-yes) + with_javadev := yes +else + with_javadev := no +endif +ifeq ($(with_java),yes) + with_libgcj := yes +else + with_libgcj := no +endif + +ifeq ($(with_java),yes) + enabled_languages += java +endif + +# fastjar ------------------- +#ifeq ($(with_common_pkgs)-$(with_java),yes-yes) +#ifeq ($(with_java),yes) +# ifdef DEB_CROSS +# with_fastjar := disabled for cross compiler package +# else +# with_fastjar := yes +# endif +#else +# with_fastjar := no +#endif + +ifdef DEB_CROSS + with_fastjar := disabled for cross compiler package +else + with_fastjar := yes +endif +with_fastjar := built from gcc-4.0 sources + +# libffi ------------------- +with_libffi := yes +no_ffi_cpus := +no_ffi_systems := hurd-i386 kfreebsd-gnu knetbsd-gnu netbsd-elf-gnu +ifneq ($(with_java),yes) + ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(no_ffi_cpus))) + with_libffi := disabled for architecure $(DEB_TARGET_ARCH_CPU) + endif + ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(no_ffi_systems))) + with_libffi := disabled for $(DEB_TARGET_GNU_SYSTEM) + endif + ifeq ($(DEB_TARGET_ARCH),hurd-i386) + with_libffi := disabled for architecure $(DEB_TARGET_ARCH) + endif +endif +ifdef DEB_CROSS + with_libffi := disabled for cross compiler package +endif +ifeq (ffi, $(findstring ffi,$(WITHOUT_LANG))) + with_libffi := disabled by environment +endif + +with_libffi := disabled for the gcc-3.4 build + +# Fortran -------------------- +ifeq ($(with_base_only),yes) + with_fortran := no +else + with_fortran := yes +endif + +ifdef DEB_CROSS + with_fortran := disabled for cross compiler package +endif +ifeq (f77, $(findstring f77,$(WITHOUT_LANG))) + with_fortran := disabled by environment +endif +with_fortran := disabled for the gcc-3.4 build + +# Build all packages needed for Fortran development +ifeq ($(with_fortran)-$(with_dev),yes-yes) + with_fdev := yes +else + with_fdev := no +endif + +ifeq ($(with_fortran),yes) + with_libg2c := yes +else + with_libg2c := no +endif + +ifeq ($(with_fortran),yes) + enabled_languages += f77 +endif + +# protoize -------------------- +ifeq ($(with_common_pkgs),yes) + with_proto := yes + ifdef DEB_CROSS + with_proto := disabled for cross compiler package + endif +else + with_proto := no +endif +#ifeq ($(with_proto),yes) +# enabled_languages += proto +#endif + +# fixincludes -------------------- +ifeq ($(with_common_pkgs),yes) + with_fixincl := yes + ifdef DEB_CROSS + with_fixincl := disabled for cross compiler package + endif +else + with_fixincl := no +endif + +# Pascal -------------------- +with_pascal := yes +ifneq ($(with_dev),yes) + with_pascal := no +endif + +pascal_no_systems := netbsd-elf-gnu +pascal_no_cpus := +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(pascal_no_cpus))) + with_pascal := disabled for architecture $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(DEB_TARGET_GNU_SYSTEM),$(findstring $(DEB_TARGET_GNU_SYSTEM),$(pascal_no_systems))) + with_pascal := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif +with_gpidump := yes +ifeq ($(DEB_TARGET_ARCH_CPU),$(findstring $(DEB_TARGET_ARCH_CPU),mips mipsel)) + with_gpidump := disabled for architecture $(DEB_TARGET_ARCH_CPU) +endif +pascal_version := 20030830 +ifeq (pascal, $(findstring pascal,$(WITHOUT_LANG))) + with_pascal := disabled by environment +endif +ifdef DEB_CROSS + with_pascal := disabled for cross compiler package +endif +with_pascal := disabled for the gcc-3.4 build +ifeq ($(with_pascal),yes) + enabled_languages += pascal +endif + +# ObjC -------------------- +ifeq ($(with_base_only),yes) + with_objc := no +else + with_objc := yes +endif +# the ObjC runtime with garbage collection enabled needs the Boehm GC +with_objc_gc := yes + +# disable ObjC garbage collection library (needs libgc) +libgc_no_cpus := avr +libgc_no_systems := knetbsd-gnu +ifeq ($(DEB_TARGET_ARCH_CPU),$(findstring $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) + with_objc_gc := disabled for architecture $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(DEB_TARGET_GNU_SYSTEM),$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libgc_no_systems))) + with_objc_gc := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif +with_objc_gc := disabled for gcc-3.4 +ifdef DEB_CROSS + with_objc := disabled for cross compiler package +endif +ifeq (objc, $(findstring objc,$(WITHOUT_LANG))) + with_objc := disabled by environment +endif +with_objc := disabled for the gcc-3.4 build + +ifneq ($(with_objc),yes) + with_objc_gc := $(with_objc) +endif + +# Build all packages needed for Objective-C development +ifeq ($(with_objc)-$(with_dev),yes-yes) + with_objcdev := yes +else + with_objcdev := no +endif +ifeq ($(with_common_libs)-$(with_objc),yes-yes) + with_libobjc := yes +else + with_libobjc := no +endif + +ifeq ($(with_objc),yes) + enabled_languages += objc +endif + +# Ada -------------------- +with_ada := yes +ifneq ($(with_dev),yes) + with_ada := no +endif + +with_libgnat := yes +ada_no_cpus := arm armeb m32r m68k ppc64 +ada_no_systems := hurd-i386 knetbsd-gnu netbsd-elf-gnu +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) + with_ada := disabled for architecure $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(DEB_TARGET_ARCH),hurd-i386) + with_ada := disabled for architecure $(DEB_TARGET_ARCH) +endif +ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) + with_ada := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif +ifeq (ada, $(findstring ada,$(WITHOUT_LANG))) + with_ada := disabled by environment +endif +ifdef DEB_CROSS + with_ada := disabled for cross compiler package +endif +with_ada := disabled for the gcc-3.4 build + +# needed for 3.4 on alpha, but not for release tarballs +ifeq ($(DEB_HOST_GNU_CPU),$(findstring $(DEB_HOST_GNU_CPU),alpha)) + with_ada_bootstrap_workaround := yes +endif + +ifeq ($(with_ada),yes) + enabled_languages += ada + libada_no_cpus := alpha mips mipsel powerpc s390 sparc m32r + ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(libada_no_cpus))) + with_libgnat := disabled for architecure $(DEB_TARGET_ARCH_CPU) + endif +else + with_libgnat := $(with_ada) +endif + +# treelang -------------------- +ifeq ($(with_base_only),yes) + with_treelang := no +else + ifeq ($(with_dev),yes) + with_treelang := yes + else + with_treelang := no + endif +endif +tl_no_cpus := powerpc +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(tl_no_cpus))) + with_treelang := disabled for architecure $(DEB_TARGET_ARCH_CPU) +endif +ifdef DEB_CROSS + with_treelang := disabled for cross compiler package +endif +ifeq (treelang, $(findstring treelang,$(WITHOUT_LANG))) + with_treelang := disabled by environment +endif + +with_treelang := disabled for the gcc-3.4 build + +ifeq ($(with_treelang),yes) + enabled_languages += treelang +endif + +# Shared libgcc -------------------- +with_libgcc := yes +with_shared_libgcc := yes + +#ifeq ($(with_common_libs),yes) +# with_libgcc := yes +#else +# with_libgcc := no +# with_shared_libgcc := no +#endif + +with_libgcc := built from gcc-4.0 sources + +# run testsuite -------------------- +with_check := yes +# If you don't want to run the gcc testsuite, set `with_check' to `no' +#with_check := disabled by hand +ifeq ($(with_base_only),yes) + with_check := no +endif +ifdef DEB_CROSS + with_check := disabled for cross compiler package +endif +check_no_systems := hurd-i386 knetbsd-gnu +ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) + with_check := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif +check_no_cpus := hppa # arm armeb m68k +ifeq ($(DEB_TARGET_ARCH_CPU), $(findstring $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) + with_check := disabled for architecure $(DEB_TARGET_ARCH_CPU) +endif +ifeq ($(DEB_TARGET_ARCH),hurd-i386) + with_check := disabled for architecure $(DEB_TARGET_ARCH) +endif +ifneq ($(WITHOUT_CHECK),) + with_check := disabled by environment +endif + +# powerpc nof libraries -------------------- +with_libnof := no + +biarch := no + +with_lib64gcc := no +with_lib64cxx := no +with_lib64objc := no +with_lib64ffi := no +with_lib64gcj := no +with_lib64g2c := no + +biarch_map := i486=x86_64 powerpc=powerpc64 sparc=sparc64 s390=s390x \ + x86_64=i486 powerpc64=powerpc +biarch_cpu := $(patsubst $(DEB_TARGET_GNU_CPU)=%, %, \ + $(filter $(DEB_TARGET_GNU_CPU)=%, $(biarch_map))) + +biarch_archs := /i386/powerpc/sparc/s390/ +ifeq (biarch, $(findstring biarch,$(WITHOUT_LANG))) + biarch_archs := +endif +ifeq (/$(DEB_TARGET_ARCH)/, $(findstring /$(DEB_TARGET_ARCH)/,$(biarch_archs))) + biarch := yes + with_lib64gcc := built from the gcc-4.0 sources + with_lib64cxx := built from the gcc-4.0 sources + with_lib64g2c := yes + + biarch_multidir_names = libiberty libstdc++-v3 libf2c libffi libobjc + biarch_multidir_names += boehm-gc libjava zlib + export biarch_multidir_names + + # These should be included but are postponed until after Sarge. + #with_lib64objc:= yes + #with_lib64ffi := yes + #with_lib64gcj := yes + + TARGET32_MACHINE := $(TARGET_ALIAS) + TARGET64_MACHINE := $(strip $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu), \ + $(TARGET_ALIAS))) + export TARGET32_MACHINE + export TARGET64_MACHINE +endif + +biarch32_archs := /amd64/ppc64/ +ifeq (biarch, $(findstring biarch,$(WITHOUT_LANG))) + biarch32_archs := +endif +ifeq (/$(DEB_TARGET_ARCH)/, $(findstring /$(DEB_TARGET_ARCH)/,$(biarch32_archs))) + biarch32 := yes + with_lib32gcc := built from the gcc-4.0 sources + with_lib32cxx := built from the gcc-4.0 sources + with_lib32g2c := yes + + biarch_multidir_names = libiberty libstdc++-v3 libf2c libffi libobjc + biarch_multidir_names += boehm-gc libjava zlib + export biarch_multidir_names + + TARGET32_MACHINE := $(strip $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu), \ + $(TARGET_ALIAS))) + TARGET64_MACHINE := $(TARGET_ALIAS) + export TARGET32_MACHINE + export TARGET64_MACHINE +endif + +#ifeq ($(DEB_TARGET_ARCH),ia64) +# biarch32 := yes +#endif + +# hppa64 build -------------------- +with_hppa64 := no +ifeq ($(DEB_TARGET_ARCH),hppa) + ifneq ($(DEB_CROSS),yes) + with_hppa64 := yes + endif +endif +with_hppa64 := disabled for the gcc-3.4 build + +ifeq ($(biarch32),yes) + with_32bit_check := $(shell CC="gcc -m32" sh debian/runcheck.sh) +endif + +ifeq ($(biarch),yes) + with_64bit_check := $(shell CC="gcc -m64" sh debian/runcheck.sh) +endif + +# GNU locales +force_gnu_locales := yes +locale_no_systems := knetbsd-gnu netbsd-elf-gnu +ifeq ($(DEB_TARGET_GNU_SYSTEM), $(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) + force_gnu_locales := disabled for $(DEB_TARGET_GNU_SYSTEM) +endif + +unpack_stamp := $(stampdir)/01-unpack-stamp +patch_stamp := $(stampdir)/02-patch-stamp +control_stamp := $(stampdir)/03-control-stamp +configure_stamp := $(stampdir)/04-configure-stamp +build_stamp := $(stampdir)/05-build-stamp +build_html_stamp := $(stampdir)/05-build-html-stamp +build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp +check_stamp := $(stampdir)/06-check-stamp +check_inst_stamp := $(stampdir)/06-check-inst-stamp +install_stamp := $(stampdir)/07-install-stamp +binary_stamp := $(stampdir)/08-binary-stamp + +configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp +build_dummy_stamp := $(stampdir)/05-build-dummy-stamp +install_dummy_stamp := $(stampdir)/07-install-dummy-stamp + +configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp +build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp +install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp + +ifeq ($(with_base_only),yes) + control_dependencies = $(patch_stamp) + configure_dependencies = $(configure_dummy_stamp) + build_dependencies = $(build_dummy_stamp) + install_dependencies = $(install_dummy_stamp) +else + control_dependencies = $(patch_stamp) + configure_dependencies = $(configure_stamp) + build_dependencies = $(build_stamp) + ifeq ($(with_check),yes) + build_dependencies += check + endif + install_dependencies = $(install_stamp) +endif + +ifeq ($(with_hppa64),yes) + build_dependencies += $(build_hppa64_stamp) + install_dependencies += $(install_hppa64_stamp) +endif + +stamp-dir: + mkdir -p $(stampdir) --- gcc-3.4-3.4.6.orig/debian/libgcj-common.preinst +++ gcc-3.4-3.4.6/debian/libgcj-common.preinst @@ -0,0 +1,9 @@ +#! /bin/sh -e + +if [ -d /usr/share/doc/libgcj-common ]; then + rm -rf /usr/share/doc/libgcj-common +else + true +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gcc-cross.prerm +++ gcc-3.4-3.4.6/debian/gcc-cross.prerm @@ -0,0 +1,5 @@ +#!/bin/sh + +update-alternatives --quiet --remove cross-gcc /usr/bin/cross-gcc-ver + +exit 0 --- gcc-3.4-3.4.6.orig/debian/gcc-BV-doc.doc-base.gccint +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/FAQ.gcj +++ gcc-3.4-3.4.6/debian/FAQ.gcj @@ -0,0 +1,494 @@ +The GCJ FAQ +=========== + + The latest version of this document is always available at + http://gcc.gnu.org/java/faq.html. + + General Questions + + What license is used for libgcj? + How can I report a bug in libgcj? + How can I contribute to libgcj + Is libgcj part of GCC? + Will gcj and libgcj work on my machine? + How can I debug my Java program? + Can I interface byte-compiled and native java code? + + + Java Feature Support + + What Java API's are supported? How complete is + the support? + Does GCJ support using straight C native methods + ala JNI? + Why does GCJ use CNI? + What is the state of AWT support? + How about support for Swing ? + What support is there for RMI ? + Can I use any code from other OpenSource projects + to supplement libgcj's current features ? + What features of the Java language are/arn't supported + + + Build Issues + + I need something more recent than the last release; how + should I build it? + Linker bug on Solaris + Can I configure/build in the source tree? + My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + + Gcj Compile/Link Questions + + Why do I get undefined reference to `main' errors? + Can GCJ only handle source code? + "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + Where does GCJ look for files? + How does gcj resolve wether to compile .class or .java files? + I'm getting link errors! + I'm getting 'undefined symbol: __dso_handle' + + + Runtime Questions + + My program is dumping core! What's going on? + When I run the debugger I get a SEGV in the GC! What's going on? + I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + Can I profile Garbage Collection? + How do I increase the runtime's initial and maximum heap sizes? + How can I profile my application? + My program seems to hang and doesn't produce any output + + + Programming Issues + + Are there any examples of how to use CNI? + Is it possible to invoke GCJ compiled Java code from a + C++ application? + +General Questions +================= + + 1.1 What license is used for libgcj? + + libgcj is distributed under the GPL, with the 'libgcc exception'. + This means that linking with libgcj does not by itself cause + your program to fall under the GPL. See LIBGCJ_LICENSE in + the source tree for more details. + + 1.2 How can I report a bug in libgcj? + + libgcj has a corresponding Gnats bug database which you can + browse. You can also submit new bug reports from the Gnats + page. + + 1.3 How can I contribute to libgcj? + + You can send simple bug fixes in as patches. Please follow + the GCC guidelines for submitting patches. For more complex + changes, you must sign copyright over to the Free Software + Foundation. See the contribution page for details. + + 1.4 Is libgcj part of GCC? + + Yes, libgcj is now part of GCC. It can be downloaded, + configured and built as one single tree. + + 1.5 Will gcj and libgcj work on my machine? + + Gcj and libgcj are known to work more or less with IA-32 and + Sparc Solaris, Tru64 Unix, as well as IA-32, IA-64, Alpha, + and PowerPC Linux. They might work on other + systems. Generally speaking, porting to a new system should + not be hard. This would be a good way to volunteer. + + 1.6 How can I debug my Java program? + + gdb 5.0 includes support for debugging gcj-compiled Java + programs. For more information please read Java Debugging + with gdb. + + 1.7 Can I interface byte-compiled and native java code + + libgcj has a bytecode interpreter that allows you to mix + .class files with compiled code. It works pretty + transparently: if a compiled version of a class is not found + in the application binary or linked shared libraries, the + class loader will search for a bytecode version in your + classpath, much like a VM would. Be sure to build libgcj + with the --enable-interpreter option to enable this + functionality. + + The program "gij" provides a front end to the interpreter + that behaves much like a traditional virtual machine. You + can even use "gij" to run a shared library which is compiled + from java code and contains a main method: + + $ gcj -shared -o lib-HelloWorld.so HelloWorld.java + $ gij HelloWorld + + This works because gij uses Class.forName, which knows how + to load shared objects. + +Java Feature Support +==================== + + 2.1 What Java API's are supported? How complete is + the support? + + Matt Welsh writes: + + Just look in the 'libjava' directory of libgcj and see + what classes are there. Most GUI stuff isn't there yet, + that's true, but many of the other classes are easy to add + if they don't yet exist. + + I think it's important to stress that there is a big + difference between Java and the many libraries which Java + supports. Unfortunately, Sun's promise of "write once, run + everywhere" assumes much more than a JVM: you also need + the full set of JDK libraries. Considering that new Java + APIs come out every week, it's going to be impossible to + track everything. + + To make things worse, you can't simply run Sun's JDK + classes on any old JVM -- they assume that a bunch of + native methods are also defined. Since this native method + requirement isn't defined by the JDK specs, you're + effectively constrained to using Sun's JVMs if you want to + use Sun's JDK libraries. Oh yes -- you could also + reimplement all of those native methods yourself, and make + sure they behave exactly as Sun's do. Note that they're + undocumented! + + 2.2 Does GCJ support using straight C native methods + ala JNI? + + Yes. libgcj now has experimental support for JNI, in + addition to its native Compiled Native Interface (CNI). gcjh + will generate JNI stubs and headers using the "-jni" + option. However, we do prefer CNI: it is more efficient, + easier to write, and (at least potentially) easier to debug. + + 2.3 Why does GCJ use CNI? + + Per Bothner explains: + + We use CNI because we think it is a better solution, + especially for a Java implementation that is based on the + idea that Java is just another programming language that + can be implemented using standard compilation + techniques. Given that, and the idea that languages + implemented using Gcc should be compatible where it makes + sense, it follows that the Java calling convention should + be as similar as practical to that used for other + languages, especially C++, since we can think of Java as a + subset of C++. CNI is just a set of helper functions and + conventions built on the idea that C++ and Java have the + *same* calling convention and object layout; they are + binary compatible. (This is a simplification, but close + enough.) + + 2.4 What is the state of AWT support? + + Work is in progress to implement AWT and Java2D. We intend + to support both GTK and xlib peers written using CNI. Some + components are already working atop the xlib peers. + + 2.5 How about support for Swing? + + Once AWT support is working then Swing support can be + considered. There is at least one free-software partial + implementations of Swing that may be usable. + + 2.6 What support is there for RMI? + + RMI code exists on the CVS trunk (aka gcc 3.1), but it has + not been heavily tested. This code was donated by + Transvirtual Technologies. + + 2.7 Can I use any code from other OpenSource + projects to supplement libgcj's current features? + + Certainly. However, in many cases, if you wanted to + contribute the code back into the official libgcj + distribution, we would require that the original author(s) + assign copyright to the Free Software Foundation. As of + March 6, 2000, libgcj has been relicenced, and copyright + has been assigned to the FSF. This allows us to share and + merge much of the libgcj codebase with the Classpath + project. Our eventual goal is for Classpath to be an + upstream source provider for libgcj, however it will be + some time before this becomes reality: libgcj and Classpath + have different implementations of many core java + classes. In order to merge them, we need to select the best + (most efficient, cleanest) implementation of each + method/class/package, resolve any conflicts created by the + merge, and test the final result. Needless to say, this is + a lot of work. If you can help out, please let us know! + + 2.8 What features of the Java language are/aren't supported. + + GCJ supports all Java language constructs as per the Java + language Specification. Recent GCJ snapshots have added + support for most JDK1.1 (and beyond) language features, + including inner classes. + +Build Issues +============ + + 3.1 I need something more recent than the last release. + How should I build it? + + Please read here: http://gcc.gnu.org/java/build-snapshot.html + + 3.2 Linker bug on Solaris + + There is a known problem with the native Solaris linker when + using gcc/gcj. A good indication you've run into this + problem is if you get an error that looks like the following + when building libgcj: + +ld: warning: option -o appears more than once, first setting taken +ld: fatal: file libfoo.so: cannot open file: No such file or directory +ld: fatal: File processing errors. No output written to .libs/libfoo.so +collect2: ld returned 1 exit status + + A known workaround for this and other reported link problems + on the various releases of Solaris is to build gcc/gcj with + the latest GNU binutils instead of the native Solaris + ld. The most straightforward way to do this is to build and + install binutils, and then reference it in the configure for + gcc via --with-ld=/path_to_binutils_install/bin/ld + (--with-as may also be similarly specified but is not + believed to be required). + + Please note, gcc/gcj must be built using GNU ld prior to + doing a clean build of libgcj! + + 3.3 Can I configure/build in the source tree? + + No. You cannot configure/build in the source tree. If you + try, you'll see something like: + + $ ./configure [...] + Configuring for a i686-pc-linux-gnu host. + *** Cannot currently configure in source tree. + + Instead, you must build in another directory. E.g.: + + $ mkdir build + $ cd build + $ ../configure [...] + + 3.4 My libgcj build fails with "invalid use of undefined type + struct sigcontext_struct" + + If you're using Linux, this probably means you need to + upgrade to a newwer, glibc (libc6) based Linux + distribution. libgcj does not support the older linux libc5. + It might be possible to get a working libgcj by changing + occurances of "sigcontext_struct" to "sigcontext", however + this has not been tested. Even if it works, it is likely + that there are other issues with older libc versions that + would prevent libgcj from working correctly (threads bugs, + for example). + +Gcj Compile/Link Questions +========================== + + 4.1 Why do I get undefined reference to `main' errors? + + When using gcj to link a Java program, you must use the --main= + option to indicate the class that has the desired main method. + This is because every Java class can have a main method, thus + you have to tell gcj which one to use. + + 4.2 Can GCJ only handle source code? + + GCJ will compile both source (.java) and bytecode (.class) + files. However, in many cases the native code produced by + compiling from source is better optimized than that compiled + from .class files. + + Per Bothner explains: + + The reason is that when you compile to bytecode you lose a + lot of information about program structure etc. That + information helps in generating better code. We can in + theory recover the information we need by analysing the + structure of the bytecodes, but it is sometimes difficult + - or sometimes it just that no-one has gotten around to + it. Specific examples include loop structure (gcc + generates better code with explicit loops rather than with + the equivalent spaghetti code), array initializers, and + the JDK 1.1 `CLASS.class' syntax, all of which are + represented using more low-level constructs in bytecode. + + 4.3 "gcj -C" Doesn't seem to work like javac/jikes. Whats going on? + + The behavior of "gcj -C" is not at all like javac or jikes, + which will compile (not just scan) all .java's which are out + of date with regard to their .class's. + + 4.4 Where does GCJ look for files? + + GCJ looks for classes to compile based on the CLASSPATH + environment variable. libgcj.jar and other files are found + relative to the path of the compiler itself, so it is safe + to move the entire compiler tree to a different path, and + there is no need to include libgcj.jar in your CLASSPATH. + + 4.5 How does gcj resolve whether to compile .class or .java files? + + GCJ compiles only the files presented to it on the command + line. However, it also needs to scan other files in order to + determine the layout of other classes and check for errors + in your code. For these dependencies, GCJ will favour + .class files if they are available because it is faster to + parse a class file than source code. + + 4.6 I'm getting link errors + + If you get errors at link time that refer to 'undefined + reference to `java::lang::Object type_info function', verify + that you have compiled any CNI C++ files with the -fno-rtti + option. This is only required for versions of GCJ earlier + than 3.0. + + 4.7 I'm getting 'undefined symbol: __dso_handle' + + Some versions of the GNU linker have broken support for the + '.hidden' directive, which results in problems with shared + libraries built with recent versions of gcc. + + There are three solutions: + + - downgrade to binutils that don't support .hidden at all, + - upgrade to a recent binutils, or + - undef the HAVE_GAS_HIDDEN definition in gcc's auto-host.h + (and rebuild gcc). + +Runtime Questions +================= + + 5.1 My program is dumping core! What's going on? + + It could be any number of things. One common mistake is + having your CLASSPATH environment variable pointing at a + third party's java.lang and friends. Either unset CLASSPATH, + or make sure it does not refer to core libraries other than + those found in libgcj.jar.Note that newwer versions of GCJ + will reject the core class library if it wasn't generated by + GCJ itself. + + 5.2 When I run the debugger I get a SEGV in the GC! What's going on? + + This is "normal"; the Garbage Collector (GC) uses it to + determine stack boundaries. It is ordinarily caught and + handled by the GC -- you can see this in the debugger by + using cont to continue to the "real" segv. + + 5.3 I have just compiled and benchmarked my Java application + and it seems to be running slower than than XXX JIT JVM. Is there + anything I can do to make it go faster? + + A few things: + + - If your programs allocate many small, short lived objects, + the heap could be filling and triggering GC too + regularly. Try increasing the initial and maximum heap sizes + as per 5.5 How do I increase the runtime's initial and + maximum heap size? + - RE - array accesses. We have sub-optimal runtime checking + code, and the compiler is still not so smart about + automatically removing array checks. If your code is ready, + and it doesn't rely on them, try compiling with + --no-bounds-check. + - Try static linking. On many platforms, dynamic (PIC) + function calls are more expensive than static ones. In + particular, the interaction with boehm-gc seems to incur + extra overhead when shared libraries are used. + - If your Java application doesn't need threads, try + building libgcj using --enable-threads=none. Portions of the + libgcj runtime are still more efficient when + single-threaded. + + 5.4 Can I profile Garbage Collection? + + It is possible to turn on verbose GC output by supressing + the -DSILENT flag during build. One way to do this is to + comment out the line with #define SILENT 1 from + boehm-gc/configure before configuring libgcj. The GC will + print collection statistics to stdout. (Rebuilding boehm-gc + alone without this flag doesn't seem to work.) + + 5.5 How do I increase the runtime's initial and maximum heap sizes? + + Some programs that allocate many small, short-lived objects + can cause the default-sized heap to fill quickly and GC + often. With the 2.95.1 release there is no means to adjust + the heap at runtime. Recent snapshots provide the -ms and + -mx arguments to gij to specify the initial and maximum heap + sizes, respectively. + + 5.6 How can I profile my application? + + Currently, only single threaded Java code may be used by the + profiler (gprof). POSIX threads seem to be incompatible with + the gmon stuff. A couple of other tools that have been + mentioned on the GCJ mailing list are sprof and cprof. The + former is part of GNU libc. + + 5.7 My program seems to hang and doesn't produce any output + + Some versions had a bug in the iconv support. You can work + around it by setting LANG=en_US.UTF-8 at runtime, or give + the following option during compile time + -Dfile.encoding=UTF-8. This problem should no longer occur + as of November 1, 2000. + +Programming Issues +================== + + 6.1 Are there any examples of how to use CNI? + + Glenn Chambers has created a couple of trivial examples for + version 2.95 and version 3.0. As a comparison, here is the + same example as a JNI application using Kaffe. The same + code will work with GCJ, as shown here. + + Note that for version 2.95, you must compile the C++ files + used for CNI with the -fno-rtti option. This constraint + does not apply in version 3.0 and later. + + The primary source of documentation for CNI is at + http://gcc.gnu.org/java/papers/cni/t1.html + + 6.2 Is it possible to invoke GCJ compiled Java code from a + C++ application? + + Yes, GCJ 3.1 supports a CNI-based invocation interface as + well as the traditional JNI invocation API. See the GCJ + Manual for more details on how to use the CNI interface. + +Please send FSF & GNU inquiries & questions tognu@gnu.org.There are +also other waysto contact the FSF. + +These pages are maintained by The GCC team. + +Please send comments on these web pages and GCC to our publicmailing +list at gcc@gnu.org orgcc@gcc.gnu.org, send other questions to +gnu@gnu.org. + +Copyright (C) Free Software Foundation, Inc., +59 Temple Place - Suite 330, Boston, MA 02111, USA. + +Verbatim copying and distribution of this entire article is permitted +in any medium, provided this notice is preserved. + +Last modified 2003-04-30 --- gcc-3.4-3.4.6.orig/debian/gij-BV.prerm +++ gcc-3.4-3.4.6/debian/gij-BV.prerm @@ -0,0 +1,7 @@ +#! /bin/sh -e + +update-alternatives --quiet --remove java /usr/bin/gij-wrapper-@BV@ + +#DEBHELPER# + +exit 0 --- gcc-3.4-3.4.6.orig/debian/README.cross +++ gcc-3.4-3.4.6/debian/README.cross @@ -0,0 +1,134 @@ +Building cross-compiler Debian packages +--------------------------------------- + +It is possible to build C and C++ cross compilers and support libraries +from gcc-3.4 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 + +Before you start, you should probably check available pre-built +cross-toolchain debs. At the time of writing (Jul 2004) those are +available from + http://zigzag.lvk.cs.msu.su/~nikita/debian/ +If they are no longer there, you may check EmDebian web site at + http://emdebian.sf.net/ +or ask debian-embedded@lists.debian.org for newer location. + + +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-3.4 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. + +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, libdb1-compat, 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-3.4 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. + +Build the package using dpkg-buildpackage. + + +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 --- gcc-3.4-3.4.6.orig/debian/testswing.java +++ gcc-3.4-3.4.6/debian/testswing.java @@ -0,0 +1,312 @@ +import java.awt.*; +import java.awt.geom.*; +import java.awt.image.*; +import java.awt.event.*; +import java.awt.font.*; +import java.util.*; +import javax.swing.*; + +public class testswing +{ + final JFrame frame; + + protected static class ButtonModelStatePrinter + implements javax.swing.event.ChangeListener + { + final String title; + public ButtonModelStatePrinter(final String t) + { + title = t; + } + public void stateChanged(javax.swing.event.ChangeEvent e) + { + if (e.getSource() instanceof ButtonModel) + { + ButtonModel b = (ButtonModel) e.getSource(); + String state = new String(); + state += (" " + (b.isArmed() ? "+" : "-") + "armed"); + state += (" " + (b.isPressed() ? "+" : "-") + "pressed"); + state += (" " + (b.isRollover() ? "+" : "-") + "rollover"); + state += (" " + (b.isSelected() ? "+" : "-") + "selected"); + System.err.println("[" + title + "] button state: " + state); + } + else + { + System.err.println("got weird changevent from " + e.getSource()); + } + } + } + + public static JCheckBox mkCheckbox(String label) + { + JCheckBox c = new JCheckBox(label); + c.setFont(new Font("Luxi", Font.PLAIN, 14)); + c.addChangeListener(new ButtonModelStatePrinter(label)); + return c; + } + + public static JRadioButton mkRadio(String label) + { + JRadioButton c = new JRadioButton(label); + c.setFont(new Font("Luxi", Font.PLAIN, 14)); + c.addChangeListener(new ButtonModelStatePrinter(label)); + return c; + } + + public static JSlider mkSlider() + { + JSlider a = new JSlider(); + a.setPaintTrack(true); + a.setPaintTicks(true); + a.setMajorTickSpacing(30); + a.setInverted(false); + return a; + } + + public static JList mkList(Object[] elts) + { + JList list = new JList(elts); + list.setFont(new Font("Luxi", Font.PLAIN, 14)); + return list; + } + + public static JTabbedPane mkTabs(String[] names) + { + JTabbedPane tabs = new JTabbedPane(); + for (int i = 0; i < names.length; ++i) + { + tabs.addTab(names[i], mkButton(names[i])); + } + return tabs; + } + + + public static JButton mkButton(String title) + { + JButton b = new JButton(title); + b.setMargin(new Insets(5,5,5,5)); + b.setFont(new Font("Luxi", Font.PLAIN, 14)); + b.addChangeListener(new ButtonModelStatePrinter(title)); + return b; + } + + public static JToggleButton mkToggle(String title) + { + JToggleButton b = new JToggleButton(title); + b.setMargin(new Insets(5,5,5,5)); + b.setFont(new Font("Luxi", Font.PLAIN, 14)); + b.getModel().addChangeListener(new ButtonModelStatePrinter(title)); + return b; + } + + public static JPanel mkPanel(JComponent[] inners) + { + JPanel p = new JPanel(); + for (int i = 0; i < inners.length; ++i) + { + p.add(inners[i]); + } + return p; + } + + private static class CheckCellRenderer + extends JCheckBox implements ListCellRenderer + { + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + setSelected(isSelected); + setText(value.toString()); + setFont(new Font("Luxi", Font.PLAIN, 14)); + return this; + } + } + + private static class LabelCellRenderer + extends DefaultListCellRenderer + { + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + Component c = super.getListCellRendererComponent(list, value, index, + isSelected, cellHasFocus); + c.setFont(new Font("Luxi Mono", Font.PLAIN, 10)); + return c; + } + } + + public static JScrollBar mkScrollBar() + { + JScrollBar scrollbar = new JScrollBar(); + return scrollbar; + } + + public static JPanel mkViewportBox(final JComponent inner) + { + final JViewport port = new JViewport(); + port.setView(inner); + JButton left = mkButton("left"); + JButton right = mkButton("right"); + + left.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + Point p = port.getViewPosition(); + port.setViewPosition(new Point(p.x - 10, p.y)); + } + }); + + right.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + Point p = port.getViewPosition(); + port.setViewPosition(new Point(p.x + 10, p.y)); + } + }); + + return mkPanel(new JComponent[] {port, left, right}); + } + + public static JScrollPane mkScrollPane(JComponent inner) + { + return new JScrollPane(inner, + JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); + } + + public static JPanel mkListPanel(Object[] elts) + { + final DefaultListModel mod = new DefaultListModel(); + final JList list1 = new JList(mod); + final JList list2 = new JList(mod); + + list2.setSelectionModel(list1.getSelectionModel()); + for (int i = 0; i < elts.length; ++i) + mod.addElement(elts[i]); + list1.setCellRenderer(new LabelCellRenderer()); + list2.setCellRenderer(new CheckCellRenderer()); + + JButton add = mkButton("add element"); + add.addActionListener(new ActionListener() + { + int i = 0; + public void actionPerformed(ActionEvent e) + { + mod.addElement("new element " + i); + ++i; + } + }); + + JButton del = mkButton("delete selected"); + del.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + for (int i = 0; i < mod.getSize(); ++i) + if (list1.isSelectedIndex(i)) + mod.remove(i); + } + }); + + return mkPanel(new JComponent[] {list1, //mkScrollPane(list1), + list2, //mkScrollPane(list2), + mkPanel(new JComponent[] {add, del})}); + } + + + public static JButton mkDisposerButton(final JFrame c) + { + JButton close = mkButton("close"); + close.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + c.dispose(); + } + }); + return close; + } + + public void addCase(testcase c) + { + c.connectTo(this); + } + + class testcase + implements ActionListener + { + JFrame frame; + JComponent inner; + String name; + + testcase(String n, JComponent i) + { + frame = null; + name = n; + inner = i; + } + + public void connectTo(testswing t) + { + JButton b = mkButton(name); + b.addActionListener(this); + t.frame.getContentPane().add(b); + } + + public void actionPerformed(ActionEvent e) + { + frame = new JFrame(); + frame.getContentPane().setLayout(new BorderLayout()); + frame.getContentPane().add(inner, BorderLayout.CENTER); + frame.getContentPane().add(mkDisposerButton(frame), BorderLayout.SOUTH); + frame.pack(); + frame.show(); + } + } + + public testswing () + { + frame = new JFrame (); + Container cp = frame.getContentPane(); + cp.setLayout(new FlowLayout()); + this.addCase(new testcase("Buttons", mkPanel(new JComponent[] {mkButton("mango"), + mkButton("guava"), + mkButton("lemon")}))); + this.addCase(new testcase("Toggles", mkToggle("cool and refreshing"))); + this.addCase(new testcase("Checkbox", mkCheckbox("ice cold"))); + this.addCase(new testcase("Radio", mkRadio("delicious"))); + this.addCase(new testcase("Slider", mkSlider())); + this.addCase(new testcase("List", mkListPanel(new String[] { "hello", "this", "is", "a", "list"}))); + this.addCase(new testcase("Scrollbar", mkScrollBar())); + this.addCase(new testcase("Viewport", mkViewportBox(mkButton("View Me!")))); + this.addCase(new testcase("ScrollPane", mkScrollPane(mkButton("Scroll Me!")))); + this.addCase(new testcase("TabPane", mkTabs(new String[] {"happy", "sad", "indifferent"}))); + + JButton exitDisposer = mkDisposerButton(frame); + exitDisposer.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + System.exit(1); + } + }); + + frame.getContentPane().add(exitDisposer); + frame.pack (); + frame.show (); + } + + public static void main(String args[]) + { + testswing t = new testswing (); + } + +} --- gcc-3.4-3.4.6.orig/debian/README +++ gcc-3.4-3.4.6/debian/README @@ -0,0 +1,66 @@ + 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. + + +Notes on GCC 3.4 in the sarge distribution +------------------------------------------ + +[package maintainers: when using GCC 3.4 for package building, please + check that your packages still work on platforms with GCC changes + specific for these platforms (hppa, m68k, mips, mipsel, sparc). ] + +GCC 3.4 is included in sarge as a newer compiler version, the system +compiler for sarge is GCC 3.3 (the transition to a newer system compiler +is a post sarge issue). Due to some incompatibilities between +3.3 and 3.4 care should be taken, when some code built by both versions +is linked together (most likely linking against a shared library found +in Debian): + +- C++ code compiled by g++-3.3 and g++-3.4 is not compatible. Applications + using C++ libraries have to make sure that these libraries are rebuilt. + +- On i386, the compiler is built as a biarch compiler (can generated code + for amd64). To use it, call gcc-3.4 -m64. Packages containing the 64bit + versions of libraries and library development files need to be installed + separately (i.e. lib64gcc1, amd64-libs, ...). + gcc-3.4 -m64 turns on the common subset for all x86-64 architectures, + specifying -march=k8 turns on k8/opteron specific features, -march=nocona + turns on some P4/64 Nocona specific features. + +- On hppa and m68k the exception handling changed from SJLJ to Dwarf2 based + exception handling. This affects C++ and code, which implements it's own + handling. If a library or binary ends up linked against libgcc1 _and_ + libgcc2, something probably won't work. + +- The implementation of the MIPS ABIs has changed. As a result, the code + generated for certain MIPS targets will not be binary compatible with + earlier releases. See http://gcc.gnu.org/gcc-3.4/mips-abi.html + +- The implementation of the SPARC ABIs has changed. As a result, the code + generated will not be binary compatible with earlier releases in certain + cases. See http://gcc.gnu.org/gcc-3.4/sparc-abi.html + +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) +Ryan Murray (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Ludovic Brenta (gnat) + +=============================================================================== --- gcc-3.4-3.4.6.orig/debian/gcj-BV.postinst +++ gcc-3.4-3.4.6/debian/gcj-BV.postinst @@ -0,0 +1,19 @@ +#! /bin/sh -e + +update-alternatives --quiet \ + --install /usr/bin/javac javac /usr/bin/gcj-wrapper-@BV@ 34 \ + --slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/gcj-wrapper-@BV@.1.gz \ + --slave /usr/bin/javah javah /usr/bin/gcjh-wrapper-@BV@ \ + --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/share/man/man1/gcjh-wrapper-@BV@.1.gz \ + --slave /usr/bin/rmic rmic /usr/bin/rmic-@BV@ \ + --slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/share/man/man1/rmic-@BV@.1.gz + +if [ -f /usr/share/info/gcj-@BV@.info.gz ]; then + install-info --quiet --section "Development" "Development" \ + /usr/share/info/gcj-@BV@.info.gz +else + # GFDL invariant free + true +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/NEWS.html +++ gcc-3.4-3.4.6/debian/NEWS.html @@ -0,0 +1,2093 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GCC 3.4 Release Series — Changes, New Features, and Fixes +- GNU Project - Free Software Foundation (FSF) + + + + + + + + + +

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

+ +

The latest release in the 3.4 release series is +GCC 3.4.5.

+ +

GCC 3.4 has many improvements in the C++ +frontend. Before reporting a bug, please make sure it's really GCC, +and not your code, that is broken.

+ +

Caveats

+ +
    +
  • GNU Make is now required to build GCC.
  • +
  • With -nostdinc the preprocessor used to ignore + both standard include paths and include paths + contained in environment variables. It was neither documented + nor intended that environment variable paths be ignored, so + this has been corrected.
  • +
  • GCC no longer accepts the options -fvolatile, + -fvolatile-global and -fvolatile-static. + It is unlikely that they worked correctly in any 3.x release.
  • +
  • GCC no longer ships <varargs.h>. Use + <stdarg.h> instead.
  • +
  • Support for all the systems obsoleted in + GCC 3.3 has been removed from GCC 3.4. See below for a + list of systems which are obsoleted + in this release.
  • +
  • GCC now requires an ISO C90 (ANSI C89) C compiler to build. + K&R C compilers will not work.
  • +
  • The implementation of the MIPS ABIs has + changed. As a result, the code generated for certain MIPS + targets will not be binary compatible with earlier releases.
  • +
  • In previous releases, the MIPS port had a fake "hilo" register + with the user-visible name accum. This register + has been removed.
  • +
  • The implementation of the SPARC ABIs has + changed. As a result, the code generated will not be binary + compatible with earlier releases in certain cases.
  • +
  • The configure option --enable-threads=pthreads has + been removed; use --enable-threads=posix instead, + which should have the same effect.
  • +
  • Code size estimates used by inlining heuristics for C, Objective-C, C++ + and Java have been redesigned significantly. As a result the parameters + of -finline-insns, + --param max-inline-insns-single + and --param max-inline-insns-auto need to be + reconsidered.
  • +
  • --param max-inline-slope + and --param min-inline-insns + have been removed; they are not needed for the new bottom-up inlining + heuristics.
  • +
  • The new unit-at-a-time compilation scheme has several compatibility + issues: +
      +
    • The order in which functions, variables, and top-level + asm statements are emitted may have changed. Code + relying on some particular ordering needs to be updated. The + majority of such top-level asm statements can be replaced by section + attributes.
    • +
    • Unreferenced static variables and functions are removed. + This may result in undefined references when an asm + statement refers to the variable/function directly. In that + case either the variable/function shall be listed in asm statement + operand or in the case of top-level asm statements the attribute + used shall be used to force function/variable to be + always output and considered as a possibly used by unknown code. + +

      For variables the attribute is accepted only by GCC 3.4 and newer, + while for earlier versions it is sufficient to use + unused to silence warnings about the variables not being + referenced. + To keep code portable across different GCC versions, you can use + appropriate preprocessor conditionals.

    • +
    • Static functions now can use non-standard passing conventions that may + break asm statements calling functions directly. Again + the attribute used shall be used to prevent this + behavior.
    • +
    + As a temporary workaround, -fno-unit-at-a-time can be used, + but this scheme may not be supported by future releases of GCC. +
  • +
  • GCC 3.4 automatically places zero-initialized variables in + the .bss section on some operating systems. + Versions of GNU Emacs up to (and including) 21.3 will not work + correctly when using this optimization; you can use + -fno-zero-initialized-in-bss to disable it.
  • +
  • If GCC 3.4 is configured with --enable-threads=posix + (the default on most targets that support pthreads) then + _REENTRANT will be defined unconditionally by + some libstdc++ headers. C++ code which relies on that macro to + detect whether multi-threaded code is being compiled might + change in meaning, possibly resulting in linker errors for + single-threaded programs. + Affected users of Boost should + compile single-threaded code with -DBOOST_DISABLE_THREADS. + See Bugzilla for + more + information. +
  • +
+ +

General Optimizer Improvements

+ +
    +
  • Usability of the profile feedback and coverage testing has been improved. +
      +
    • Performance of profiled programs has been improved by faster profile + merging code.
    • +
    • Better use of the profile feedback for optimization (loop unrolling + and loop peeling).
    • +
    • File locking support allowing fork() calls and parallel + runs of profiled programs.
    • +
    • Coverage file format has been redesigned.
    • +
    • gcov coverage tool has been improved.
    • +
    • make profiledbootstrap available to build a faster + compiler. + +

      Experiments made on i386 hardware showed an 11% speedup on + -O0 and a 7.5% speedup on -O2 compilation of a + large C++ + testcase.

    • +
    • New value profiling pass enabled via + -fprofile-values
    • +
    • New value profile transformations pass enabled via -fvpt + aims to optimize some code sequences by exploiting knowledge about + value ranges or other properties of the operands. At the moment a + conversion of expensive divisions into cheaper operations has been + implemented.
    • +
    • New -fprofile-generate and -fprofile-use + command line options to simplify the use of profile feedback.
    • +
    +
  • +
  • A new unit-at-a-time compilation scheme for C, Objective-C, C++ and + Java which is enabled via -funit-at-a-time (and implied by + -O2). In this scheme a whole file is parsed first and + optimized later. The following basic inter-procedural optimizations + are implemented: +
      +
    • Removal of unreachable functions and variables
    • +
    • Discovery of local functions (functions with static linkage whose + address is never taken)
    • +
    • On i386, these local functions use register parameter passing + conventions.
    • +
    • Reordering of functions in topological order of the call graph to + enable better propagation of optimizing hints (such as the stack + alignments needed by functions) in the back end.
    • +
    • Call graph based out-of-order inlining heuristics which allows to + limit overall compilation unit growth (--param + inline-unit-growth).
    • +
    + Overall, the unit-at-a-time scheme produces a 1.3% improvement for the + SPECint2000 benchmark on the i386 architecture (AMD Athlon CPU). +
  • +
  • More realistic code size estimates used by inlining for C, Objective-C, + C++ and Java. The growth of large functions can now be limited via + --param large-function-insns + and --param large-function-growth.
  • +
  • A new cfg-level loop optimizer pass replaces the old loop unrolling + pass and adds two other loop transformations -- loop peeling and loop + unswitching -- and also uses the profile feedback to limit code growth. + (The three optimizations are enabled by -funroll-loops, + -fpeel-loops and -funswitch-loops flags, + respectively). + +

    The old loop unroller still can be enabled by + -fold-unroll-loops and may produce better code in some + cases, especially when the webizer optimization pass is not + run.

  • +
  • A new web construction pass enabled via -fweb (and implied + by -O3) improves the quality of register allocation, CSE, + first scheduling pass and some other optimization passes by avoiding + re-use of pseudo registers with non-overlapping live ranges. The pass + almost always improves code quality but does make debugging difficult + and thus is not enabled by default by -O2 +

    The pass is especially effective as cleanup after code duplication + passes, such as the loop unroller or the tracer.

  • +
  • Experimental implementations of superblock or trace scheduling in the + second scheduling pass can be enabled via + -fsched2-use-superblocks and + -fsched2-use-traces, respectively.
  • +
+ + +

New Languages and Language specific improvements

+ +

Ada

+
    +
  • The Ada front end has been updated to include numerous + bug fixes and enhancements. These include: +
      +
    • Improved project file support
    • +
    • Additional set of warnings about potential wrong code
    • +
    • Improved error messages
    • +
    • Improved code generation
    • +
    • Improved cross reference information
    • +
    • Improved inlining
    • +
    • Better run-time check elimination
    • +
    • Better error recovery
    • +
    • More efficient implementation of unbounded strings
    • +
    • Added features in GNAT.Sockets, + GNAT.OS_Lib, GNAT.Debug_Pools, ...
    • +
    • New GNAT.xxxx packages (e.g. GNAT.Strings, + GNAT.Exception_Action)
    • +
    • New pragmas
    • +
    • New -gnatS switch replacing gnatpsta
    • +
    • Implementation of new Ada features (in particular limited with, + limited aggregates)
    • +
    +
  • +
+ +

C/Objective-C/C++

+ +
    + +
  • Precompiled headers are now supported. Precompiled headers + can dramatically speed up compilation of some projects. There + are some known defects in the current precompiled header + implementation that will result in compiler crashes in + relatively rare situations. Therefore, precompiled headers + should be considered a "technology preview" in this + release. Read the manual for details about how to use + precompiled headers.
  • +
  • File handling in the preprocessor has been rewritten. GCC no + longer gets confused by symlinks and hardlinks, and now has + a correct implementation of #import and + #pragma once. + These two directives have therefore been un-deprecated.
  • +
  • The undocumented extension that allowed C programs to have a + label at the end of a compound statement, which has been + deprecated since GCC 3.0, has been removed.
  • +
  • The cast-as-lvalue extension has been removed for C++ and + deprecated for C and Objective-C. In particular, + code like this: +
    +        int i;
    +        (char) i = 5;
    +        
    +

    or this:

    +
    +        char *p;
    +        ((int *) p)++;
    +        
    +

    is no longer accepted for C++ and will not be accepted for + C and Objective-C in a future version.

  • +
  • The conditional-expression-as-lvalue extension has been + deprecated for C and Objective-C. In particular, code like + this: +
    +        int a, b, c;
    +        (a ? b : c) = 2;
    +        
    +

    will not be accepted for C and Objective-C in a future + version.

  • +
  • The compound-expression-as-lvalue extension has been + deprecated for C and Objective-C. In particular, code like + this: +
    +        int a, b;
    +        (a, b) = 2;
    +        
    +

    will not be accepted for C and Objective-C in a future + version. A possible non-intrusive workaround is the following:

    +
    +        (*(a, &b)) = 2;
    +        
  • +
  • Several + + built-in functions such as __builtin_popcount + for counting bits, finding the highest and lowest bit in a + word, and parity have been added.
  • +
  • The -fwritable-strings option has been deprecated + and will be removed.
  • +
  • Many C math library functions are now recognized as built-ins and + optimized.
  • +
  • The C, C++, and Objective-C compilers can now handle source files + written in any character encoding supported by the host C library. + The default input character set is taken from the current locale, + and may be overridden with the -finput-charset command + line option. In the future we will add support for inline encoding + markers.
  • +
+ +

C++

+ +
    +
  • G++ is now much closer to full conformance to + the ISO/ANSI C++ standard. This means, among other things, that a lot + of invalid constructs which used to be accepted in previous versions + will now be rejected. It is very likely that existing C++ code will + need to be fixed. This document lists some of the most common + issues.
  • + +
  • A hand-written recursive-descent C++ parser has replaced the + YACC-derived C++ parser from previous GCC releases. The new + parser contains much improved infrastructure needed for better + parsing of C++ source codes, handling of extensions, and clean + separation (where possible) between proper semantics analysis + and parsing. The new parser fixes many bugs that were found + in the old parser.
  • + +
  • You must now use the typename and + template keywords to disambiguate dependent names, + as required by the C++ standard. + +
    +	struct K {
    +	  typedef int mytype_t;
    +	};
    +	
    +	template <class T1> struct A {
    +	  template <class T2> struct B { 
    +	      void callme(void);
    +	    };
    +
    +	  template <int N> void bar(void) 
    +	  {
    +	    // Use 'typename' to tell the parser that T1::mytype_t names
    +	    //  a type. This is needed because the name is dependent (in
    +	    //  this case, on template parameter T1).
    +	    typename T1::mytype_t x;
    +	    x = 0;
    +	  }
    +	};
    +
    +	template <class T> void template_func(void)
    +	{
    +	  // Use 'template' to prefix member templates within 
    +	  //  dependent types (a has type A<T>, which depends on
    +	  //  the template parameter T).
    +	  A<T> a;
    +	  a.template bar<0>();
    +
    +	  // Use 'template' to tell the parser that B is a nested 
    +	  //  template class (dependent on template parameter T), and 
    +	  //  'typename' because the whole A<T>::B<int> is 
    +	  //  the name of a type (again, dependent).
    +	  typename A<T>::template B<int> b;
    +	  b.callme();
    +	}
    +	
    +	void non_template_func(void)
    +	{
    +	  // Outside of any template class or function, no names can be
    +	  //  dependent, so the use of the keyword 'typename' and 'template'
    +	  //  is not needed (and actually forbidden).
    +	  A<K> a;
    +	  a.bar<0>();
    +	  A<K>::B<float> b;
    +	  b.callme();
    +	}
  • + + + +
  • In a template definition, unqualified names will no longer + find members of a dependent base (as specified by [temp.dep]/3 + in the C++ standard). For example, +
    +	template <typename T> struct B {
    +	  int m;
    +	  int n;
    +	  int f ();
    +	  int g ();
    +	};
    +	int n;
    +	int g ();
    +	template <typename T> struct C : B<T> {
    +	  void h ()
    +	  {
    +	    m = 0; // error
    +	    f ();  // error
    +	    n = 0; // ::n is modified
    +	    g ();  // ::g is called
    +	  }
    +	};
    +

    You must make the names dependent, e.g. by prefixing them + with this->. Here is the corrected definition + of C<T>::h,

    +
    +	template <typename T> void C<T>::h ()
    +	{
    +	  this->m = 0;
    +	  this->f ();
    +	  this->n = 0
    +	  this->g ();
    +	}
    +

    As an alternative solution (unfortunately not backwards + compatible with GCC 3.3), you may use using + declarations instead of this->:

    +
    +	template <typename T> struct C : B<T> {
    +	  using B<T>::m;
    +	  using B<T>::f;
    +	  using B<T>::n;
    +	  using B<T>::g;
    +	  void h ()
    +	  {
    +	    m = 0;
    +	    f ();
    +	    n = 0;
    +	    g ();
    +	  }
    +	};
  • + +
  • In templates, all non-dependent names are now looked up and bound + at definition time (while parsing the code), instead of later when + the template is instantiated. For instance: + +
    +	void foo(int);
    +
    +	template <int> struct A {
    +	  static void bar(void){
    +	    foo('a');
    +	  }
    +	};
    +
    +	void foo(char);
    +
    +	int main()
    +	{
    +	  A<0>::bar();    // Calls foo(int), used to call foo(char).
    +	}
    +	
  • + +
  • In an explicit instantiation of a class template, you must use + class or struct before the template-id: + +
    +	template <int N>
    +	class A {};
    +	
    +	template A<0>;         // error, not accepted anymore
    +	template class A<0>;   // OK
  • + +
  • The "named return value" and "implicit typename" + extensions have been removed.
  • + +
  • Default arguments in function types have been deprecated and + will be removed.
  • + +
  • ARM-style name-injection of friend declarations has been + deprecated and will be removed. For example: + + struct S { + friend void f(); + }; + + void g() { f(); } + + will not be accepted by future versions of G++; instead a + declaration of "f" will need to be present outside of the + scope of "S".
  • + +
  • Covariant returns are implemented for all but varadic + functions that require an adjustment.
  • + +
  • When -pedantic is used, G++ now issues errors about spurious + semicolons. For example, +
    +        namespace N {}; // Invalid semicolon.
    +        void f() {}; // Invalid semicolon.
  • + +
  • G++ no longer accepts attributes for a declarator after the + initializer associated with that declarator. For example, +
    +        X x(1) __attribute__((...));
    + is no longer accepted. Instead, use: +
    +        X x __attribute__((...)) (1);
  • + +
  • Inside the scope of a template class, the name of the class + itself can be treated as either a class or a template. So + GCC used to accept the class name as argument of type template, + and template template parameter. However this is not C++ standard + compliant. Now the name is not treated as a valid template template + argument unless you qualify the name by its scope. For example, + the code below no longer compiles. +
    +        template <template <class> class TT> class X {};
    +        template <class T> class Y {
    +          X<Y> x; // Invalid, Y is always a type template parameter.
    +        };
    +

    The valid code for the above example is

    +
    +          X< ::Y> x; // Valid.
    +

    (Notice the space between < and : to + prevent GCC to interpret this as a digraph for + [.)

  • + +
  • Friend declarations that refer to template specializations are + rejected if the template has not already been declared. For example, +
    +	template <typename T>
    +	class C {
    +	  friend void f<> (C&);
    +	};
    +

    is rejected. You must first declare f as a + template,

    +
    +	template <typename T>
    +	void f(T);
  • + +
  • In case of friend declarations, every name used in the friend + declaration must be accessible at the point of that declaration. + Previous versions of G++ used to be less strict about this and + allowed friend declarations for private class members, + for example. See the ISO C++ Standard Committee's defect + report #209 for details.
  • + +
  • Declaration of member functions of class templates as friends are + supported. For example, +
    +	template <typename T> struct A {
    +	  void f();
    +	};
    +	class C {
    +	  template <typename T> friend void A<T>::f();
    +	};
  • + +
  • You must use template <> to introduce template + specializations, as required by the standard. For example, +
    +	template <typename T>
    +	struct S;
    +
    +	struct S<int> { };
    +

    is rejected. You must write,

    +
    +	template <> struct S<int> {};
  • + +
  • G++ used to accept code like this, +
    +	struct S {
    +	  int h();
    +	  void f(int i = g());
    +	  int g(int i = h());
    +	};
    +

    This behavior is not mandated by the standard. Now G++ issues + an error about this code. To avoid the error, you must move + the declaration of g before the declaration of + f. The default arguments for g must + be visible at the point where it is called.

  • + +
  • The C++ ABI Section 3.3.3 specifications for the array + construction routines __cxa_vec_new2 and + __cxa_vec_new3 were changed to return + NULL when the allocator argument returns + NULL. These changes are incorporated into the + libstdc++ runtime library.
  • + +
  • Using a name introduced by a typedef in a friend declaration or in an + explicit instantiation is now rejected, as specified by the ISO C++ + standard. +
    +	class A;
    +	typedef A B;
    +	class C { 
    +	  friend class B;      // error, no typedef name here
    +	  friend B;            // error, friend always needs class/struct/enum
    +	  friend class A;      // OK
    +	};
    +	
    +	template <int> class Q {};
    +	typedef Q<0> R;
    +	template class R;      // error, no typedef name here
    +	template class Q<0>;   // OK
  • + +
  • When allocating an array with a new expression, GCC used to allow + parentheses around the type name. This is actually ill-formed and it is + now rejected: +
    +	int* a = new (int)[10];    // error, not accepted anymore
    +	int* a = new int[10];      // OK
  • + +
  • When binding an rvalue of class type to a reference, the copy + constructor of the class must be accessible. For instance, consider + the following code: +
    +	class A 
    +	{
    +	public:
    +	  A();
    +	  
    +	private:
    +	  A(const A&);   // private copy ctor
    +	};
    +	
    +	A makeA(void);
    +	void foo(const A&);
    +	
    +	void bar(void)
    +	{
    +	  foo(A());       // error, copy ctor is not accessible
    +	  foo(makeA());   // error, copy ctor is not accessible
    +	  
    +	  A a1;
    +	  foo(a1);        // OK, a1 is a lvalue
    +	}
    + +

    This might be surprising at first sight, especially since most + popular compilers do not correctly implement this rule + (further details).

  • + +
  • When forming a pointer to member or a pointer to member function, + access checks for class visibility (public, protected, private) + are now performed using the qualifying scope of the name itself. + This is better explained with an example: + +
    +	class A
    +	{
    +	public:
    +	  void pub_func();
    +	protected:
    +	  void prot_func();
    +	private:
    +	  void priv_func();
    +	};
    +
    +	class B : public A
    +	{
    +	public:
    +	  void foo()
    +	  {
    +	    &A::pub_func;   // OK, pub_func is accessible through A
    +	    &A::prot_func;  // error, cannot access prot_func through A
    +	    &A::priv_func;  // error, cannot access priv_func through A
    +
    +	    &B::pub_func;   // OK, pub_func is accessible through B
    +	    &B::prot_func;  // OK, can access prot_func through B (within B)
    +	    &B::priv_func;  // error, cannot access priv_func through B
    +	  }
    +	};
  • +
+ +

Runtime Library (libstdc++)

+ +
    +
  • Optimization work: +
      +
    • Streamlined streambuf, filebuf, separate + synched with C Standard I/O streambuf.
    • +
    • All formatted I/O now uses cached locale information.
    • +
    • STL optimizations (memory/speed for list, red-black trees as used + by sets and maps).
    • +
    • More use of GCC builtins.
    • +
    • String optimizations (avoid contention on increment/decrement-and-test + of the reference count in the empty-string object, constructor from + input_iterators speedup).
    • +
  • +
  • Static linkage size reductions.
  • +
  • Large File Support (files larger than 2 GB on 32-bit systems).
  • +
  • Wide character and variable encoding filebuf work + (UTF-8, Unicode).
  • +
  • Generic character traits.
  • +
  • Also support wchar_t specializations on Mac OS 10.3.x, + FreeBSD 5.x, Solaris 2.7 and above, AIX 5.x, Irix 6.5.
  • +
  • The allocator class is now standard-conformant, and two additional + extension allocators have been added, mt_alloc and bitmap_allocator.
  • +
  • PCH support: -include bits/stdc++.h (2x compile speedup).
  • +
  • Rewrote __cxa_demangle with support for C++ style + allocators.
  • +
  • New debug modes for STL containers and iterators.
  • +
  • Testsuite rewrite: five times as many tests, plus increasingly + sophisticated tests, including I/O, MT, multi-locale, wide and + narrow characters.
  • +
  • Use current versions of GNU "autotools" for build/configuration.
  • +
+ +

Objective-C

+ +
    +
  • The Objective-C front end has been updated to include the numerous + bug fixes and enhancements previously available only in Apple's + version of GCC. These include: +
      +
    • Structured exception (@try... @catch... + @finally, @throw) and synchronization + (@synchronized) support. These are accessible via + the -fobjc-exceptions switch; as of this writing, + they may only be used in conjunction with -fnext-runtime + on Mac OS X 10.3 and later. See Options Controlling Objective-C Dialect for more + information.
    • +
    • An overhaul of @encode logic. The C99 _Bool + and C++ bool type may now be encoded as + 'B'. In addition, the back-end/codegen dependencies + have been removed.
    • +
    • An overhaul of message dispatch construction, ensuring that the + various receiver types (and casts thereof) are handled properly, + and that correct diagnostics are issued.
    • +
    • Support for "Zero-Link" (-fzero-link) and + "Fix-and-Continue" (-freplace-objc-classes) debugging + modes, currently available on Mac OS X 10.3 and later. See Options Controlling Objective-C Dialect for more + information.
    • +
    • Access to optimized runtime entry points (-fno-nil-receivers + ) on the assumption that message receivers are never + nil. This is currently available on Mac OS X 10.3 and + later. See Options Controlling Objective-C Dialect for more + information.
    • +
  • +
+ +

Java

+ +
    +
  • Compiling a .jar file will now cause non-.class entries to be + automatically compiled as resources.
  • +
  • libgcj has been ported to Darwin.
  • +
  • Jeff Sturm has adapted Jan Hubicka's call graph optimization + code to gcj.
  • +
  • libgcj has a new gcjlib URL type; this + lets URLClassLoader load code from shared + libraries.
  • +
  • libgcj has been much more completely merged with GNU Classpath.
  • +
  • Class loading is now much more correct; in particular the + caller's class loader is now used when that is required.
  • +
  • Eclipse 2.x will run + out of the box using gij.
  • +
  • Parts of java.nio have been implemented. + Direct and indirect buffers work, as do fundamental file and + socket operations.
  • +
  • java.awt has been improved, though it is still + not ready for general use.
  • +
  • The HTTP protocol handler now uses HTTP/1.1 and can handle + the POST method.
  • +
  • The MinGW port has matured. Enhancements include socket + timeout support, thread interruption, improved + Runtime.exec() handling and support for accented + characters in filenames.
  • +
+ +

Fortran

+ + + +

New Targets and Target Specific Improvements

+ +

Alpha

+
    +
  • Several + built-in + functions have been added such as __builtin_alpha_zap to + allow utilizing the more obscure instructions of the CPU.
  • + +
  • Parameter passing of complex arguments has changed to match the + + ABI. This change is incompatible with previous GCC versions, but + does fix compatibility with the Tru64 compiler and several corner cases + where GCC was incompatible with itself.
  • +
+ +

ARM

+
    +
  • Nicolas Pitre has contributed his hand-coded floating-point support + code for ARM. It is both significantly smaller and faster than the + existing C-based implementation, even when building applications for + Thumb. The arm-elf configuration has been converted to use + the new code.
  • + +
  • Support for the Intel's iWMMXt architecture, a second + generation XScale processor, has been added. + Enabled at run time with the -mcpu=iwmmxt command + line switch.
  • + +
  • A new ARM target has been added: arm-wince-pe. This is + similar to the arm-pe target, but it defaults to using the + APCS32 ABI.
  • + +
  • The existing ARM pipeline description has been converted to + the use the DFA + processor pipeline model. There is not much change in code + performance, but the description is now easier + to understand.
  • + +
  • Support for the Cirrus EP9312 Maverick floating point + co-processor added. Enabled at run time with the + -mcpu=ep9312 command line switch. Note however that + the multilibs to support this chip are currently disabled in + gcc/config/arm/t-arm-elf, so if you want to enable their + production you will have to uncomment the entries in that + file.
  • +
+ +

H8/300

+
    +
  • Support for long long has been added.
  • + +
  • Support for saveall attribute has been added.
  • + +
  • Pavel Pisa contributed hand-written 32-bit-by-32-bit division + code for H8/300H and H8S, which is much faster than the previous + implementation.
  • + +
  • A lot of small performance improvements.
  • +
+ +

IA-32/AMD64 (x86-64)

+
    +
  • Tuning for K8 (AMD Opteron/Athlon64) core is available via + -march=k8 and -mcpu=k8.
  • +
  • Scalar SSE code generation carefully avoids reformatting penalties, + hidden dependencies and minimizes the number of uops generated on + both Intel and AMD CPUs.
  • +
  • Vector MMX and SSE operands are now passed in registers to improve + performance and match the argument passing convention used by the Intel + C++ Compiler. As a result it is not possible to call functions + accepting vector arguments compiled by older GCC version.
  • +
  • Conditional jump elimination is now more aggressive on modern CPUs.
  • +
  • The Athlon ports has been converted to use the DFA + processor pipeline description.
  • +
  • Optimization of indirect tail calls is now possible in a similar + fashion as direct sibcall optimization.
  • +
  • Further small performance improvements.
  • +
  • -m128bit-long-double is now less buggy.
  • +
  • __float128 support in 64-bit compilation.
  • +
  • Support for data structures exceeding 2GB in 64-bit mode.
  • +
  • -mcpu has been renamed to -mtune.
  • +
+ +

IA-64

+
    +
  • Tuning code for the Itanium 2 processor has been added. The + generation of code tuned for Itanium 2 (option + -mtune=itanium2) is enabled by default now. To + generate code tuned for Itanium 1 the option + -mtune=itanium1 should be used.
  • + +
  • DFA + processor pipeline descriptions for the IA-64 processors + have been added. This resulted in about 3% improvement on the + SPECInt2000 benchmark for Itanium 2.
  • + +
  • Instruction bundling for the IA-64 processors has been + rewritten using the DFA pipeline hazard recognizer. It + resulted in about 60% compiler speedup on the SPECInt2000 C + programs.
  • +
+ +

M32R

+
    +
  • Support for the M32R/2 processor has been added by Renesas.
  • +
  • Support for an M32R Linux target and PIC code generation has + been added by Renesas.
  • +
+ +

M68000

+
    +
  • Bernardo Innocenti (Develer S.r.l.) has contributed + the m68k-uclinux target, based on former work done + by Paul Dale (SnapGear Inc.). Code generation for the + ColdFire processors family has been enhanced and extended + to support the MCF 53xx and MCF 54xx cores, integrating + former work done by Peter Barada (Motorola).
  • +
+ +

MIPS

+

Processor-specific changes

+
    +
  • Support for the RM7000 and RM9000 processors has been added. + It can be selected using the -march compiler option + and should work with any MIPS I (mips-*) or MIPS III + (mips64-*) configuration.
  • +
  • Support for revision 2 of the MIPS32 ISA has been added. + It can be selected with the command-line option + -march=mips32r2.
  • +
  • There is a new option, -mfix-sb1, to work around + certain SB-1 errata.
  • +
+

Configuration

+
    +
  • It is possible to customize GCC using the following configure-time + options: +
      +
    • --with-arch, which specifies the default + value of the -march option.
    • +
    • --with-tune, which specifies the default + value of the -mtune option.
    • +
    • --with-abi, which specifies the default ABI.
    • +
    • --with-float=soft, which tells GCC to + use software floating point by default.
    • +
    • --with-float=hard, which tells GCC to + use hardware floating point by default.
    • +
  • +
  • A 64-bit GNU/Linux port has been added. The associated + configurations are mips64-linux-gnu and + mips64el-linux-gnu.
  • +
  • The 32-bit GNU/Linux port now supports Java.
  • +
  • The IRIX 6 configuration now supports the o32 ABI and will + build o32 multilibs by default. This support is compatible with + both binutils and the SGI tools, but note that several features, + including debugging information and DWARF2 exception handling, + are only available when using the GNU assembler. Use of the + GNU assembler and linker (version 2.15 or above) is strongly + recommended.
  • +
  • The IRIX 6 configuration now supports 128-bit long doubles.
  • +
  • There are two new RTEMS-specific configurations, + mips-rtems and mipsel-rtems.
  • +
  • There are two new *-elf configurations, + mipsisa32r2-elf and mipsisa32r2el-elf.
  • +
+

General

+
    +
  • Several ABI bugs have been fixed. + Unfortunately, these changes will break binary compatibility + with earlier releases.
  • +
  • GCC can now use explicit relocation operators when generating + -mabicalls code. This behavior is controlled by + -mexplicit-relocs and can have several performance + benefits. For example: +
      +
    • It allows for more optimization of GOT accesses, including + better scheduling and redundancy elimination.
    • +
    • It allows sibling calls to be implemented as jumps.
    • +
    • n32 and n64 leaf functions can use a call-clobbered + global pointer instead of $28.
    • +
    • The code to set up $gp can be removed from + functions that don't need it.
    • +
  • +
  • A new option, -mxgot, allows the GOT to be bigger + than 64k. This option is equivalent to the assembler's + -xgot option and should be used instead of + -Wa,-xgot.
  • +
  • Frame pointer elimination is now supported when generating 64-bit + MIPS16 code.
  • +
  • Inline block moves have been optimized to take more account of + alignment information.
  • +
  • Many internal changes have been made to the MIPS port, mostly + aimed at reducing the reliance on assembler macros.
  • +
+ +

PowerPC

+
    +
  • GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64 + ABI incompatibilities + regarding the way parameters are passed during functions calls. + These changes may result in incompatibility between code compiled + with GCC 3.3 and GCC 3.4.
  • +
+ +

PowerPC Darwin

+
    +
  • Support for shared/dylib gcc libraries has been added. It is + enabled by default on powerpc-apple-darwin7.0.0 + and up.
  • + +
  • Libgcj is enabled by default. On systems older than + powerpc-apple-darwin7.0.0 you need to install dlcompat. +
  • + +
  • 128-bit IBM extended precision format support added for + long double.
  • +
+ +

PowerPC64 GNU/Linux

+
    +
  • By default, PowerPC64 GNU/Linux now uses natural alignment of + structure elements. The old four byte alignment for + double, with special rules for a struct + starting with a double, can be chosen with + -malign-power. This change may result in + incompatibility between code compiled with GCC 3.3 and GCC 3.4.
  • + +
  • -mabi=altivec is now the default rather than + -mabi=no-altivec.
  • + +
  • 128-bit IBM extended precision format support added for + long double.
  • +
+ +

S/390 and zSeries

+
    +
  • New command-line options allow to specify the intended execution + environment for generated code: +
      +
    • -mesa/-mzarch allows to specify + whether to generate code running in ESA/390 mode or in + z/Architecture mode (this is applicable to 31-bit code + only).
    • +
    • -march allows to specify a minimum processor + architecture level (g5, g6, + z900, or z990).
    • +
    • -mtune allows to specify which processor to tune + for.
    • +
  • +
  • It is possible to customize GCC using the following configure-time + options: +
      +
    • --with-mode, which specifies whether to + default to assuming ESA/390 or z/Architecture mode.
    • +
    • --with-arch, which specifies the default + value of the -march option.
    • +
    • --with-tune, which specifies the default + value of the -mtune option.
    • +
  • +
  • Support for the z990 processor has been added, and can be selected + using -march=z990 or -mtune=z990. This + includes instruction scheduling tuned for the superscalar instruction + pipeline of the z990 processor as well as support for all new + instructions provided by the long-displacement facility.
  • +
  • Support to generate 31-bit code optimized for zSeries processors + (running in ESA/390 or in z/Architecture mode) has been added. + This can be selected using -march=z900 and + -mzarch respectively.
  • +
  • Instruction scheduling for the z900 and z990 + processors now uses the DFA pipeline hazard recognizer.
  • +
  • GCC no longer generates code to maintain a stack backchain, + previously used to generate stack backtraces for debugging + purposes. As replacement that does not incur runtime overhead, + DWARF-2 call frame information is provided by GCC; + this is supported by GDB 6.1. The old behavior can + be restored using the -mbackchain option.
  • +
  • The stack frame size of functions may now exceed 2 GB in 64-bit + code.
  • +
  • A port for the 64-bit IBM TPF operating system has been added; + the configuration is s390x-ibm-tpf. This + configuration is supported as cross-compilation target only.
  • +
  • Various changes to improve the generated code have been implemented, + including: +
      +
    • GCC now uses the MULTIPLY AND ADD and + MULTIPLY AND SUBTRACT instructions to + significantly speed up many floating-point applications.
    • +
    • GCC now uses the ADD LOGICAL WITH CARRY and + SUBTRACT LOGICAL WITH BORROW instructions to + speed up long long arithmetic.
    • +
    • GCC now uses the SEARCH STRING instruction to + implement strlen().
    • +
    • In many cases, function call overhead for 31-bit code has + been reduced by placing the literal pool after the function + code instead of after the function prolog.
    • +
    • Register 14 is no longer reserved in 64-bit code.
    • +
    • Handling of global register variables has been improved.
    • +
  • +
+ +

SPARC

+
    +
  • The option -mflat is deprecated.
  • + +
  • Support for large (> 2GB) frames has been added to the + 64-bit port.
  • + +
  • Several ABI bugs have been fixed. + Unfortunately, these changes will break binary compatibility with + earlier releases.
  • + +
  • The default debugging format has been switched from STABS to + DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already + the default debugging format for 64-bit code on Solaris.
  • +
+ +

SuperH

+
    +
  • Support for the SH2E processor has been added. + Enabled at run time with the -m2e command line + switch, or at configure time by specifying sh2e as the machine + part of the target triple.
  • +
+ +

V850

+
    +
  • Support for the Mitsubishi V850E1 processor has been added. + This is a variant of the V850E processor with some additional + debugging instructions.
  • +
+ +

Xtensa

+
    +
  • Several ABI bugs have been fixed. Unfortunately, these changes + break binary compatibility with earlier releases. +
      +
    • For big-endian processors, the padding of aggregate return values + larger than a word has changed. If the size of an aggregate return + value is not a multiple of 32 bits, previous versions of GCC inserted + padding in the most-significant bytes of the first return value + register. Aggregates larger than a word are now padded in the + least-significant bytes of the last return value register used. + Aggregates smaller than a word are still padded in the most-significant + bytes. The return value padding has not changed for little-endian + processors.
    • +
    • Function arguments with 16-byte alignment are now properly + aligned.
    • +
    • The implementation of the va_list type has changed. + A va_list value created by va_start from a + previous release cannot be used with va_arg from this + release, or vice versa.
    • +
  • +
  • More processor configuration options for Xtensa processors are + supported: +
      +
    • the ABS instruction is now optional;
    • +
    • the ADDX* and SUBX* instructions are + now optional;
    • +
    • an experimental CONST16 instruction can be used to + synthesize constants instead of loading them from constant pools.
    • +
    + These and other Xtensa processor configuration options can no longer + be enabled or disabled by command-line options; the processor + configuration must be specified by the xtensa-config.h + header file when building GCC. Additionally, the + -mno-serialize-volatile option is no longer supported.
  • +
+ +

Obsolete Systems

+ +

Support for a number of older systems has been declared obsolete in + GCC 3.4. Unless there is activity to revive them, the next release of + GCC will have their sources permanently removed.

+ +

All configurations of the following processor architectures have + been declared obsolete:

+ +
    +
  • Mitsubishi D30V, d30v-*
  • +
  • AT&T DSP1600 and DSP1610, dsp16xx-*
  • +
  • Intel 80960, i960
  • +
+ +

Also, some individual systems have been obsoleted:

+ +
    +
  • ARM Family +
      +
    • Support for generating code for operation in APCS/26 mode + (-mapcs-26).
    • +
  • +
  • IBM ESA/390 +
      +
    • "Bigfoot" port, i370-*. (The other port, + s390-*, is actively maintained and + supported.)
    • +
  • +
  • Intel 386 family +
      +
    • MOSS, i?86-moss-msdos and + i?86-*-moss*
    • +
    • NCR 3000 running System V r.4, i?86-ncr-sysv4*
    • +
    • FreeBSD with a.out object format, i?86-*-freebsd*aout* + and i?86-*-freebsd2*
    • +
    • Linux with a.out object format, i?86-linux*aout*
    • +
    • Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
    • +
    • Interix versions before Interix 3, i?86-*-interix
    • +
    • Mach microkernel, i?86-mach*
    • +
    • SCO UnixWare with UDK, i?86-*-udk*
    • +
    • Generic System V releases 1, 2, and 3, + i?86-*-sysv[123]*
    • +
    • VSTa microkernel, i386-*-vsta
    • +
  • +
  • Motorola M68000 family +
      +
    • HPUX, m68k-hp-hpux* and + m68000-hp-hpux*
    • +
    • NetBSD with a.out object format (before NetBSD 1.4), + m68k-*-*-netbsd* except + m68k-*-*-netbsdelf*
    • +
    • Generic System V r.4, m68k-*-sysv4*
    • +
  • +
  • VAX +
      +
    • Generic VAX, vax-*-* (This is generic VAX only; + we have not obsoleted any VAX triples for specific operating + systems.)
    • +
  • +
+ + +

Documentation improvements

+ + +

Other significant improvements

+ +
    +
  • The build system has undergone several significant cleanups. + Subdirectories will only be configured if they are being built, + and all subdirectory configures are run from the make + command. The top level has been autoconfiscated.
  • +
  • Building GCC no longer writes to its source directory. This + should help those wishing to share a read-only source directory + over NFS or build from a CD. The exceptions to this feature are + if you configure with either --enable-maintainer-mode + or --enable-generated-files-in-srcdir.
  • +
  • The -W warning option has been renamed to + -Wextra, which is more easily understood. The older + spelling will be retained for backwards compatibility.
  • +
  • Substantial improvements in compile time have been made, particularly + for non-optimizing compilations.
  • +
+ +
+

GCC 3.4.0

+ +

Bug Fixes

+ +

+A vast number of bugs have been fixed in 3.4.0, too many to publish a +complete list here. +Follow +this link to query the Bugzilla database for the list of over 900 bugs +fixed in 3.4.0. This is the list of all bugs marked as resolved and fixed +in 3.4.0 that are not flagged as 3.4 regressions.

+ +
+

GCC 3.4.1

+ + +

Bug Fixes

+ +

This section lists the problem reports (PRs) from GCC's bug tracking +system that +are known to be fixed in the 3.4.1 release. This list might not be complete +(that is, it is possible that some PRs that have been fixed are not listed +here).

+ +

Bootstrap failures

+
    +
  • 10129 Ada bootstrap fails on PPC-Darwin - invalid assembler emitted - PIC related
  • +
  • 14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
  • +
  • 14760 A bug in configure.in prevents using both --program-suffix and --program-prefix
  • +
  • 14671 [hppa64] bootstrap fails: ICE in save_call_clobbered_regs, in caller_save.c
  • +
  • 15093 [alpha][Java] make bootstrap fails to configure libffi on Alpha
  • +
  • 15178 Solaris 9/x86 fails linking after stage 3
  • +
+

Multi-platform internal compiler errors (ICEs)

+
    +
  • 12753 (preprocessor) Memory corruption in preprocessor on bad input
  • +
  • 13985 ICE in gcc.c-torture/compile/930621-1.c
  • +
  • 14810 (c++) tree check failures with invalid code involving templates
  • +
  • 14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in cp/parser.c
  • +
  • 15044 (c++) ICE on syntax error, template header
  • +
  • 15057 (c++) Compiling of conditional value throw constructs cause a segmentation violation
  • +
  • 15064 (c++) typeid of template parameter gives ICE
  • +
  • 15142 (c++) ICE when passing a string where a char* is expected in a throw statement
  • +
  • 15159 ICE in rtl_verify_flow_info_1
  • +
  • 15165 (c++) ICE in instantiate_template
  • +
  • 15193 Unary minus using pointer to V4SF vector causes -fforce-mem to exhaust all memory
  • +
  • 15209 (c++) Runs out of memory with packed structs
  • +
  • 15227 (c++) Trouble with invalid function definition
  • +
  • 15285 (c++) instantiate_type ICE when forming pointer to template function
  • +
  • 15299 (c++) ICE in resolve_overloaded_unification
  • +
  • 15329 (c++) ICE on constructor of member template
  • +
  • 15550 ICE in extract_insn, in recog.c
  • +
  • 15554 (c++) ICE in tsubst_copy, in cp/pt.c
  • +
  • 15640 (c++) ICE on invalid code in arg_assoc, in cp/name-lookup.c
  • +
  • 15666 [unit-at-a-time] Gcc abort on valid code
  • +
  • 15696 (c++) ICE with bad pointer-to-member code
  • +
  • 15701 (c++) ICE with friends and template template parameter
  • +
  • 15761 ICE in do_SUBST, in combine.c
  • +
  • 15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
  • +
+

Ada

+
    +
  • 14538 All RTEMS targets broken for gnat
  • +
+

C front end

+
    +
  • 12391 missing warning about assigning to an incomplete type
  • +
  • 14649 atan(1.0) should not be a constant expression
  • +
  • 15004 [unit-at-a-time] no warning for unused paramater in static function
  • +
  • 15749 --pedantic-errors behaves differently from --pedantic with C-compiler on GNU/Linux
  • +
+

C++ compiler and library

+
    +
  • 10646 non-const reference is incorrectly matched in a "const T" partial specialization
  • +
  • 12077 wcin.rdbuf()->in_avail() return value too high
  • +
  • 13598 enc_filebuf doesn't work
  • +
  • 14211 const_cast returns lvalue but should be rvalue
  • +
  • 14220 num_put::do_put() undesired float/double behavior
  • +
  • 14245 problem with user-defined allocators in std::basic_string
  • +
  • 14340 libstdc++ Debug mode: failure to convert iterator to const_iterator
  • +
  • 14600 __gnu_cxx::stdio_sync_filebuf should expose internal FILE*
  • +
  • 14668 no warning anymore for reevaluation of declaration
  • +
  • 14775 LFS (large file support) tests missing
  • +
  • 14821 Duplicate namespace alias declaration should not conflict
  • +
  • 14930 Friend declaration ignored
  • +
  • 14932 cannot use offsetof to get offsets of array elements in g++ 3.4.0
  • +
  • 14950 [non unit-at-a-time] always_inline does not mix with templates and -O0
  • +
  • 14962 g++ ignores #pragma redefine_extname
  • +
  • 14975 Segfault on low-level write error during imbue
  • +
  • 15002 Linewise stream input is unusably slow (std::string slow)
  • +
  • 15025 compiler accepts redeclaration of template as non-template
  • +
  • 15046 [arm] Math functions misdetected by cross configuration
  • +
  • 15069 a bit test on a variable of enum type is miscompiled
  • +
  • 15074 g++ -lsupc++ still links against libstdc++
  • +
  • 15083 spurious "statement has no effect" warning
  • +
  • 15096 parse error with templates and pointer to const member
  • +
  • 15287 combination of operator[] and operator .* fails in templates
  • +
  • 15317 __attribute__ unused in first parameter of constructor gives error
  • +
  • 15337 sizeof on incomplete type diagnostic
  • +
  • 15361 bitset<>::_Find_next fails
  • +
  • 15412 _GLIBCXX_ symbols symbols defined and used in different namespaces
  • +
  • 15427 valid code results in incomplete type error
  • +
  • 15471 Incorrect member pointer offsets in anonymous structs/unions
  • +
  • 15503 nested template problem
  • +
  • 15507 compiler hangs while laying out union
  • +
  • 15542 operator & and template definitions
  • +
  • 15565 SLES9: leading + sign for unsigned int with showpos
  • +
  • 15625 friend defined inside a template fails to find static function
  • +
  • 15629 Function templates, overloads, and friend name injection
  • +
  • 15742 'noreturn' attribute ignored in method of template functions.
  • +
  • 15775 Allocator::pointer consistently ignored
  • +
  • 15821 Duplicate namespace alias within namespace rejected
  • +
  • 15862 'enum yn' fails (confict with undeclared builtin)
  • +
  • 15875 rejects pointer to member in template
  • +
  • 15877 valid code using templates and anonymous enums is rejected
  • +
  • 15947 Puzzling error message for wrong destructor declaration in template class
  • +
  • 16020 cannot copy __gnu_debug::bitset
  • +
  • 16154 input iterator concept too restrictive
  • +
  • 16174 deducing top-level consts
  • +
+

Java

+
    +
  • 14315 Java compiler is not parallel make safe
  • +
+

Fortran

+
    +
  • 15151 [g77] incorrect logical i/o in 64-bit mode
  • +
+

Objective-C

+
    +
  • 7993 private variables cannot be shadowed in subclasses
  • +
+

Optimization bugs

+
    +
  • 15228 useless copies of floating point operands
  • +
  • 15345 [non-unit-at-a-time] unreferenced nested inline functions not optimized away
  • +
  • 15945 Incorrect floating point optimization
  • +
  • 15526 ftrapv aborts on 0 * (-1)
  • +
  • 14690 Miscompiled POOMA tests
  • +
  • 15112 GCC generates code to write to unchanging memory
  • +
+

Preprocessor

+
    +
  • 15067 Minor glitch in the source of cpp
  • +
+

Main driver program bugs

+
    +
  • 1963 collect2 interprets -oldstyle_liblookup as -o ldstyle_liblookup
  • +
+

x86-specific (Intel/AMD)

+
    +
  • 15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND* section}
  • +
+

HPPA-specific

+
    +
  • 14782 GCC produces an unaligned data access at -O2
  • +
  • 14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
  • +
  • 15202 ICE in reload_cse_simplify_operands, in postreload.c
  • +
+

IA64-specific

+
    +
  • 14610 __float80 constants incorrectly emitted
  • +
  • 14813 init_array sections are initialized in the wrong order
  • +
  • 14857 GCC segfault on duplicated asm statement
  • +
  • 15598 Gcc 3.4 ICE on valid code
  • +
  • 15653 Gcc 3.4 ICE on valid code
  • +
+

MIPS-specific

+
    +
  • 15189 wrong filling of delay slot with -march=mips1 -G0 -mno-split-addresses -mno-explicit-relocs
  • +
  • 15331 Assembler error building gnatlib on IRIX 6.5 with GNU as 2.14.91
  • +
  • 16144 Bogus reference to __divdf3 when -O1
  • +
  • 16176 Miscompilation of unaligned data in MIPS backend
  • +
+

PowerPC-specific

+
    +
  • 11591 ICE in gcc.dg/altivec-5.c
  • +
  • 12028 powerpc-eabispe produces bad sCOND operation
  • +
  • 14478 rs6000 geu/ltu patterns generate incorrect code
  • +
  • 14567 long double and va_arg complex args
  • +
  • 14715 Altivec stack layout may overlap gpr save with stack temps
  • +
  • 14902 (libstdc++) Stream checking functions fail when -pthread option is used.
  • +
  • 14924 Compiler ICE on valid code
  • +
  • 14960 -maltivec affects vector return with -mabi=no-altivec
  • +
  • 15106 vector varargs failure passing from altivec to non-altivec code for -m32
  • +
  • 16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 & half-word operation
  • +
  • 15191 -maltivec -mabi=no-altivec results in mis-aligned lvx and stvx
  • +
  • 15662 Segmentation fault when an exception is thrown - even if try and catch are specified
  • +
+

s390-specific

+
    +
  • 15054 Bad code due to overlapping stack temporaries
  • +
+

SPARC-specific

+
    +
  • 15783 ICE with union assignment in 64-bit mode
  • +
  • 15626 GCC 3.4 emits "ld: warning: relocation error: R_SPARC_UA32"
  • +
+

x86-64-specific

+
    +
  • 14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
  • +
  • 14723 Backported -march=nocona from mainline
  • +
  • 15290 __float128 failed to pass to function properly
  • +
+

Cygwin/Mingw32-specific

+
    +
  • 15250 Option -mms-bitfields support on GCC 3.4 is not conformant to MS layout
  • +
  • 15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe worker on windows32 targets
  • +
+

Bugs specific to embedded processors

+
    +
  • 8309 [m68k] -m5200 produces erroneous SImode set of short varaible on stack
  • +
  • 13250 [SH] Gcc code for rotation clobbers the register, but gcc continues to use the register as if it was not clobbered
  • +
  • 13803 [coldfire] movqi operand constraints too restrictivefor TARGET_COLDFIRE
  • +
  • 14093 [SH] ICE for code when using -mhitachi option in SH
  • +
  • 14457 [m6811hc] ICE with simple c++ source
  • +
  • 14542 [m6811hc] ICE on simple source
  • +
  • 15100 [SH] cc1plus got hang-up on libstdc++-v3/testsuite/abi_check.cc
  • +
  • 15296 [CRIS] Delayed branch scheduling causing invalid code on cris-*
  • +
  • 15396 [SH] ICE with -O2 -fPIC
  • +
  • 15782 [coldfire] m68k_output_mi_thunk emits wrong code for ColdFire
  • +
+

Testsuite problems (compiler not affected)

+
    +
  • 11610 libstdc++ testcases 27_io/* don't work properly remotely
  • +
  • 15488 (libstdc++) possibly insufficient file permissions for executing test suite
  • +
  • 15489 (libstdc++) testsuite_files determined incorrectly
  • +
+

Documentation bugs

+
    +
  • 13928 (libstdc++) no whatis info in some man pages generated by doxygen
  • +
  • 14150 Ada documentation out of date
  • +
  • 14949 (c++) Need to document method visibility changes
  • +
  • 15123 libstdc++-doc: Allocators.3 manpage is empty
  • +
+ +
+

GCC 3.4.2

+ + +

Bug Fixes

+ +

This section lists the problem reports (PRs) from GCC's bug tracking +system that +are known to be fixed in the 3.4.2 release. This list might not be complete +(that is, it is possible that some PRs that have been fixed are not listed +here).

+ +

Bootstrap failures and issues

+
    +
  • 16469 [mips-sgi-irix5.3] bootstrap fails in libstdc++-v3/testsuite
  • +
  • 16344 [hppa-linux-gnu] libstdc++'s PCH built by profiledbootstrap does not work with the built compiler
  • +
  • 16842 [Solaris/x86] mkheaders can not find mkheaders.conf
  • +
+

Multi-platform internal compiler errors (ICEs)

+
    +
  • 12608 (c++) ICE: expected class 't', have 'x' (error_mark) in cp_parser_class_specifier, in cp/parser.c
  • +
  • 14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
  • +
  • 15461 (c++) ICE due to NRV and inlining
  • +
  • 15890 (c++) ICE in c_expand_expr, in c-common.c
  • +
  • 16180 ICE: segmentation fault in RTL optimization
  • +
  • 16224 (c++) ICE in write_unscoped_name (template/namespace)
  • +
  • 16408 ICE: in delete_insn, in cfgrtl.c
  • +
  • 16529 (c++) ICE for: namespace-alias shall not be declared as the name of any other entity
  • +
  • 16698 (c++) ICE with exceptions and declaration of __cxa_throw
  • +
  • 16706 (c++) ICE in finish_member_declaration, in cp/semantics.c
  • +
  • 16810 (c++) Legal C++ program with cast gives ICE in build_ptrmemfunc
  • +
  • 16851 (c++) ICE when throwing a comma expression
  • +
  • 16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
  • +
  • 16904 (c++) ICE in finish_class_member_access_expr, in cp/typeck.c
  • +
  • 16905 (c++) ICE (segfault) with exceptions
  • +
  • 16964 (c++) ICE in cp_parser_class_specifier due to redefinition
  • +
  • 17068 (c++) ICE: tree check: expected class 'd', have 'x' (identifier_node) in dependent_template_p, in cp/pt.c
  • +
+

Preprocessor bugs

+
    +
  • 16366 Preprocessor option -remap causes memory corruption
  • +
+

Optimization

+
    +
  • 15345 unreferenced nested inline functions not optimized away
  • +
  • 16590 Incorrect execution when compiling with -O2
  • +
  • 16693 Bitwise AND is lost when used within a cast to an enum of the same precision
  • +
  • 17078 Jump into if(0) substatement fails
  • +
+

Problems in generated debug information

+
    +
  • 13956 incorrect stabs for nested local variables
  • +
+

C front end bugs

+
    +
  • 16684 GCC should not warn about redundant redeclarations of built-ins
  • +
+

C++ compiler and library

+
    +
  • 12658 Thread safety problems in locale::global() and locale::locale()
  • +
  • 13092 g++ accepts invalid pointer-to-member conversion
  • +
  • 15320 Excessive memory consumption
  • +
  • 16246 Incorrect template argument deduction
  • +
  • 16273 Memory exhausted when using nested classes and virtual functions
  • +
  • 16401 ostringstream in gcc 3.4.x very slow for big data
  • +
  • 16411 undefined reference to __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >::file()
  • +
  • 16489 G++ incorrectly rejects use of a null constant integral expression as a null constant pointer
  • +
  • 16618 offsetof fails with constant member
  • +
  • 16637 syntax error reported for valid input code
  • +
  • 16717 __attribute__((constructor)) broken in C++
  • +
  • 16813 compiler error in DEBUG version of range insertion std::map::insert
  • +
  • 16853 pointer-to-member initialization from incompatible one accepted
  • +
  • 16889 ambiguity is not detected
  • +
  • 16959 Segmentation fault in ios_base::sync_with_stdio
  • +
+

Java compiler and library

+
    +
  • 7587 direct threaded interpreter not thread-safe
  • +
  • 16473 ServerSocket accept() leaks file descriptors
  • +
  • 16478 Hash synchronization deadlock with finalizers
  • +
+

Alpha-specific

+
    +
  • 10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
  • +
  • 16974 could not split insn (ice in final_scan_insn, in final.c)
  • +
+

x86-specific

+
    +
  • 16298 ICE in output_operand
  • +
  • 17113 ICE with SSE2 intrinsics
  • +
+

x86-64 specific

+
    +
  • 14697 libstdc++ couldn't find 32bit libgcc_s
  • +
+

MIPS-specific

+
    +
  • 15869 [mips64] No NOP after LW (with -mips1 -O0)
  • +
  • 16325 [mips64] value profiling clobbers gp on mips
  • +
  • 16357 [mipsisa64-elf] ICE copying 7 bytes between extern char[]s
  • +
  • 16380 [mips64] Use of uninitialised register after dbra conversion
  • +
  • 16407 [mips64] Unaligned access to local variables
  • +
  • 16643 [mips64] verify_local_live_at_start ICE after crossjumping & cfgcleanup
  • +
+

ARM-specific

+
    +
  • 15927 THUMB -O2: strength-reduced iteration variable ends up off by 1
  • +
  • 15948 THUMB: ICE with non-commutative cbranch
  • +
  • 17019 THUMB: bad switch statement in md code for addsi3_cbranch_scratch
  • +
+

IA64-specific

+
    +
  • 16130 ICE on valid code: in bundling, in config/ia64/ia64.c (-mtune=merced)
  • +
  • 16142 ICE on valid code: in bundling, in config/ia64/ia64.c (-mtune=itanium)
  • +
  • 16278 Gcc failed to build Linux kernel with -mtune=merced
  • +
  • 16414 ICE on valid code: typo in comparison of asm_noperands result
  • +
  • 16445 ICE on valid code: don't count ignored insns
  • +
  • 16490 ICE (segfault) while compiling with -fprofile-use
  • +
  • 16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
  • +
+

PowerPC-specific

+
    +
  • 16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
  • +
  • 16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions issue)
  • +
+

SPARC-specific

+
    +
  • 16199 ICE while compiling apache 2.0.49
  • +
  • 16416 -m64 doesn't imply -mcpu=v9 anymore
  • +
  • 16430 ICE when returning non-C aggregates larger than 16 bytes
  • +
+

Bugs specific to embedded processors

+
    +
  • 16379 [m32r] can't output large model function call of memcpy
  • +
  • 17093 [m32r] ICE with -msdata=use -O0
  • +
  • 17119 [m32r] ICE at switch case 0x8000
  • +
+

DJGPP-specific

+
    +
  • 15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
  • +
+

Alpha Tru64-specific

+
    +
  • 16210 libstdc++ gratuitously omits "long long" I/O
  • +
+

Testsuite, documentation issues (compiler is not affected):

+
    +
  • 15488 (libstdc++) possibly insufficient file permissions for executing test suite
  • +
  • 16250 ada/doctools runs makeinfo even in release tarball
  • +
+ +
+

GCC 3.4.3

+ +

This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 3.4.3 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).

+ +

Bootstrap failures

+
    +
  • 17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
  • +
  • 17850 [arm-elf] bootstrap failure - libstdc++ uses strtold when undeclared
  • +
+

Internal compiler errors (ICEs) affecting multiple platforms

+
    +
  • 13948 (java) GCJ segmentation fault while compiling GL4Java .class files
  • +
  • 14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
  • +
  • 16301 (c++) ICE when "strong" attribute is attached to a using directive
  • +
  • 16566 ICE with flexible arrays
  • +
  • 17023 ICE with nested functions in parameter declaration
  • +
  • 17027 ICE with noreturn function in loop at -O2
  • +
  • 17524 ICE in grokdeclarator, in cp/decl.c
  • +
  • 17826 (c++) ICE in cp_tree_equal
  • +
+

C and optimization bugs

+
    +
  • 15526 -ftrapv aborts on 0 * (-1)
  • +
  • 16999 #ident stopped working
  • +
  • 17503 quadratic behaviour in invalid_mode_change_p
  • +
  • 17581 Long long arithmetic fails inside a switch/case statement when compiled with -O2
  • +
  • 18129 -fwritable-strings doesn't work
  • +
+

C++ compiler and library bugs

+
    +
  • 10975 incorrect initial ostringstream::tellp()
  • +
  • 11722 Unbuffered filebuf::sgetn is slow
  • +
  • 14534 Unrecognizing static function as a template parameter when its return value is also templated
  • +
  • 15172 Copy constructor optimization in aggregate initialization
  • +
  • 15786 Bad error message for frequently occuring error.
  • +
  • 16162 Rejects valid member-template-definition
  • +
  • 16612 empty basic_strings can't live in shared memory
  • +
  • 16715 std::basic_iostream is instantiated when used, even though instantiations are already contained in libstdc++
  • +
  • 16848 code in /ext/demangle.h appears broken
  • +
  • 17132 GCC fails to eliminate function template specialization when argument deduction fails
  • +
  • 17259 One more _S_leaf incorrectly qualified with _RopeRep:: in ropeimpl.h
  • +
  • 17327 use of `enumeral_type' in template type unification
  • +
  • 17393 "unused variable '._0'" warning with -Wall
  • +
  • 17501 Confusion with member templates
  • +
  • 17537 g++ not passing -lstdc++ to linker when all command line arguments are libraries
  • +
  • 17585 usage of unqualified name of static member from within class not allowed
  • +
  • 17821 Poor diagnostic for using "." instead of "->"
  • +
  • 17829 wrong error: call of overloaded function is ambiguous
  • +
  • 17851 Misleading diagnostic for invalid function declarations with undeclared types
  • +
  • 17976 Destructor is called twice
  • +
  • 18020 rejects valid definition of enum value in template
  • +
  • 18093 bogus conflict in namespace aliasing
  • +
  • 18140 C++ parser bug when using >> in templates
  • +
+

Fortran

+
    +
  • 17541 data statements with double precision constants fail
  • +
+

x86-specific

+
    +
  • 17853 -O2 ICE for MMX testcase
  • +
+

SPARC-specific

+
    +
  • 17245 ICE compiling gsl-1.5 statistics/lag1.c
  • +
+

Darwin-specific

+
    +
  • 17167 FATAL:Symbol L_foo$stub already defined.
  • +
+

AIX-specific

+
    +
  • 17277 could not catch an exception when specified -maix64
  • +
+

Solaris-specific

+
    +
  • 17505 <cmath> calls acosf(), ceilf(), and other functions missing from system libraries
  • +
+

HP/UX specific:

+
    +
  • 17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
  • +
+

ARM-specific

+
    +
  • 17384 ICE with mode attribute on structures
  • +
+

MIPS-specific

+
    +
  • 17770 No NOP after LWL with -mips1
  • +
+

Other embedded target specific

+
    +
  • 11476 [arc-elf] gcc ICE on newlib's vfprintf.c
  • +
  • 14064 [avr-elf] -fdata-sections triggers ICE
  • +
  • 14678 [m68hc11-elf] gcc ICE
  • +
  • 15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
  • +
  • 15790 [i686-coff] Alignment error building gcc with i686-coff target
  • +
  • 15886 [SH] Miscompilation with -O2 -fPIC
  • +
  • 16884 [avr-elf] [fweb related] bug while initializing variables
  • +
+

Bugs relating to debugger support

+
    +
  • 13841 missing debug info for _Complex function arguments
  • +
  • 15860 [big-endian targets] No DW_AT_location debug info is emitted for formal arguments to a function that uses "register" qualifiers
  • +
+

Testsuite issues (compiler not affected)

+
    +
  • 17465 Testsuite in libffi overrides LD_LIBRARY_PATH
  • +
  • 17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
  • +
  • 18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit testsuite
  • +
+

Documentation

+
    +
  • 15498 typo in gcc manual: non-existing locale example en_UK, should be en_GB
  • +
  • 15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap: document broken shell
  • +
  • 16406 USE_LD_AS_NEEDED undocumented
  • +
+ +
+ +

GCC 3.4.4

+ +

This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 3.4.4 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).

+ +
+ +

GCC 3.4.5

+ +

This is the list +of problem reports (PRs) from GCC's bug tracking system that are +known to be fixed in the 3.4.5 release. This list might not be +complete (that is, it is possible that some PRs that have been fixed +are not listed here).

+

Bootstrap issues

+
    +
  • 24688 sco_math fixincl breaks +math.h
  • +
+

C compiler bugs

+
    +
  • 17188 struct Foo { } +redefinition
  • +
  • 20187 wrong code for +((unsigned char)(unsigned long long)((a?a:1)&(a*b)))?0:1)
  • +
  • 21873 infinite warning loop on bad +array initializer
  • +
  • 21899 enum definition accepts +values to be overriden
  • +
  • 22061 ICE in +find_function_data, in function.c
  • +
  • 22308 Failure to diagnose +violation of constraint 6.516p2
  • +
  • 22458 ICE on missing brace
  • +
  • 22589 ICE casting to long +long
  • +
  • 24101 Segfault with preprocessed source
  • +
+

C++ compiler and library bugs

+
    +
  • 10611 operations on vector mode +not recognized in C++
  • +
  • 13377 unexpected behavior of +namespace usage directive
  • +
  • 16002 Strange error message with +new parser
  • +
  • 17413 local classes as template argument
  • +
  • 17609 spurious error message after +using keyword
  • +
  • 17618 ICE in +cp_convert_to_pointer, in cp/cvt.c
  • +
  • 18124 ICE with invalid template +template parameter
  • +
  • 18155 typedef in +template declaration not rejected
  • +
  • 18177 ICE with +const_cast for undeclared variable
  • +
  • 18368 C++ error message +regression
  • +
  • 16378 ICE when returning a copy of +a packed member
  • +
  • 18466 int ::i; +accepted
  • +
  • 18512 ICE on invalid usage of +template base class
  • +
  • 18454 ICE when returning undefined +type
  • +
  • 18738 typename not +allowed with non-dependent qualified name
  • +
  • 18803 rejects access to +operator() in template
  • +
  • 19004 ICE in +uses_template_parms, in cp/pt.c
  • +
  • 19208 Spurious error about +variably modified type
  • +
  • 18253 bad error message / ICE for +invalid template parameter
  • +
  • 19608 ICE after friend function +definition in local class
  • +
  • 19884 ICE on explicit +instantiation of a non-template constructor
  • +
  • 20153 ICE when C++ template +function contains anonymous union
  • +
  • 20563 Infinite loop in diagnostic +(and ice after error message)
  • +
  • 20789 ICE with incomplete type in +template
  • +
  • 21336 Internal compiler error when +using custom new operators
  • +
  • 21768 ICE in error message due to +violation of coding conventions
  • +
  • 21853 constness of pointer to data +member ignored
  • +
  • 21903 Default argument of template +function causes a compile-time error
  • +
  • 21983 multiple diagnostics
  • +
  • 21987 New testsuite failure +g++.dg/warn/conversion-function-1.C
  • +
  • 22153 ICE on invalid template +specialization
  • +
  • 22172 Internal compiler error, seg +fault.
  • +
  • 21286 filebuf::xsgetn +vs pipes
  • +
  • 22233 ICE with wrong number of +template parameters
  • +
  • 22508 ICE after invalid +operator new
  • +
  • 22545 ICE with pointer to class +member & user defined conversion operator
  • +
  • 23528 Wrong default allocator in +ext/hash_map
  • +
  • 23550 char_traits +requirements/1.cc test bad math
  • +
  • 23586 Bad diagnostic for invalid +namespace-name
  • +
  • 23624 ICE in +invert_truthvalue, in fold-const.c
  • +
  • 23639 Bad error message: not a +member of '<declaration error>'
  • +
  • 23797 ICE on typename +outside template
  • +
  • 23965 Bogus error message: no +matching function for call to 'foo(<type error>)'
  • +
  • 24052 +&#`label_decl' not supported by +dump_expr#<expression error>
  • +
  • 24580 virtual base class cause +exception not to be caught
  • +
+

Problems in generated debug information

+
    +
  • 24267 Bad DWARF for altivec vectors
  • +
+

Optimizations issues

+
    +
  • 17810 ICE in +verify_local_live_at_start
  • +
  • 17860 Wrong generated code for +loop with varying bound
  • +
  • 21709 ICE on compile-time complex +NaN
  • +
  • 21964 broken tail call at -O2 or +more
  • +
  • 22167 Strange optimization bug +when using -Os
  • +
  • 22619 Compilation failure for +real_const_1.f and real_const_2.f90
  • +
  • 23241 Invalid code generated for +comparison of uchar to 255
  • +
  • 23478 Miscompilation due to +reloading of a var that is also used in EH pad
  • +
  • 24470 segmentation fault in +cc1plus when compiling with -O
  • +
  • 24950 ICE in +operand_subword_force
  • +
+

Precompiled headers problems

+
    +
  • 14400 Cannot compile qt-x11-free-3.3.0
  • +
  • 14940 PCH largefile test fails on +various platforms
  • +
+

Preprocessor bugs

+
    +
  • 20239 ICE on empty preprocessed +input
  • +
  • 15220 "gcc -E -MM -MG" reports +missing system headers in source directory
  • +
+

Testsuite issues

+
    +
  • 19275 gcc.dg/20020919-1.c fails +with -fpic/-fPIC on i686-pc-linux-gnu
  • +
+

Alpha specific

+
    +
  • 21888 bootstrap failure with +linker relaxation enabled
  • +
+

ARM specific

+
    +
  • 15342 [arm-linux]: ICE +in verify_local_live_at_start
  • +
  • 23985 Memory aliasing information +incorrect in inlined memcpy
  • +
+

ColdFile specific

+
    +
  • 16719 Illegal move of byte into +address register causes compiler to ICE
  • +
+

HPPA specific

+
    +
  • 21723 ICE while building +libgfortran
  • +
  • 21841 +-mhp-ld/-mgnu-ld documentation
  • +
+

IA-64 specific

+
    +
  • 23644 IA-64 hardware models and +configuration options documentation error
  • +
  • 24718 Shared libgcc not used for +linking by default
  • +
+

M68000 specific

+
    +
  • 18421 ICE in +reload_cse_simplify_operands, in postreload.c
  • +
+

MIPS specific

+
    +
  • 20621 ICE in +change_address_1, in emit-rtl.c
  • +
+

PowerPC and PowerPC64 specific

+
    +
  • 18583 error on valid code: +const __attribute__((altivec(vector__))) doesn't work in +arrays
  • +
  • 20191 ICE in +reload_cse_simplify_operands
  • +
  • 22083 AIX: +TARGET_C99_FUNCTIONS is wrongly defined
  • +
  • 23070 +CALL_V4_CLEAR_FP_ARGS flag not properly set
  • +
  • 23404 gij trashes args of +functions with more than 8 fp args
  • +
  • 23539 C & C++ compiler +generating misaligned references regardless of compiler flags
  • +
  • 24102 +floatdisf2_internal2 broken
  • +
  • 24465 -mminimal-toc +miscompilation of __thread vars
  • +
+

Solaris specific

+
    +
  • 19933 Problem with define of +HUGE_VAL in math_c99
  • +
  • 21889 Native Solaris assembler +cannot grok DTP-relative debug symbols
  • +
+

SPARC specific

+
    +
  • 19300 PCH failures on +sparc-linux
  • +
  • 20301 Assembler labels have a +leading "-"
  • +
  • 20673 C PCH testsuite assembly +comparison failure
  • +
+

x86 and x86_64 specific

+
    +
  • 18582 ICE with arrays of type +V2DF
  • +
  • 19340 Compilation SEGFAULTs with +-O1 -fschedule-insns2 -fsched2-use-traces
  • +
  • 21716 ICE in +reg-stack.c's swap_rtx_condition
  • +
  • 24315 amd64 fails +-fpeephole2
  • +
+ + + + +
+ +

Please send FSF & GNU inquiries & questions to +gnu@gnu.org. +There are also other ways +to contact the FSF.

+ +

These pages are maintained by +the GCC team.

+ +
For questions related to the use of GCC, please consult these web +pages and the GCC manuals. If +that fails, the gcc-help@gcc.gnu.org +mailing list might help.
+Please send comments on these web pages and the development of GCC to our +developer mailing list at gcc@gnu.org +or gcc@gcc.gnu.org. All of our lists +have public archives. +
+ +

Copyright (C) Free Software Foundation, Inc., +51 Franklin St, Fifth Floor, Boston, MA 02110, USA.

+

Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved.

+ +
+ Last modified 2005-12-07 + + + Valid XHTML 1.0 + + +
+ + + + + --- gcc-3.4-3.4.6.orig/debian/cpp-BV-doc.doc-base.cpp +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/rules.parameters +++ gcc-3.4-3.4.6/debian/rules.parameters @@ -0,0 +1,25 @@ +# configuration parameters taken from upstream source files +VER := 3.4.6 +BASE_VERSION := 3.4 +SOURCE_VERSION := 3.4.6-7ubuntu1 +DEB_VERSION := 3.4.6-7ubuntu1 +DEB_VERSION_NOREL := 3.4.6 +DEB_EVERSION := 1:3.4.6-7ubuntu1 +GPC_BASE_VERSION := 2.1 +DEB_GPC_VERSION := 3.4.6-7ubuntu1 +DEB_SOVERSION := 3.4.4 +DEB_SOEVERSION := 1:3.4.4 +DEB_LIBGCC_SOVERSION := 1:3.4.4 +DEB_LIBGCC_VERSION := 1:3.4.6-7ubuntu1 +DEB_STDCXX_SOVERSION := 3.4.4 +DEB_FFI_SOVERSION := 3.4.4 +DEB_F2C_SOVERSION := 1:3.4.4-5 +GCC_SONAME := 1 +CXX_SONAME := 6 +F77_SONAME := 0 +OBJC_SONAME := 1 +GCJ_SONAME := 5 +GNAT_VERSION := 3.4 +GNAT_SONAME := 3.4 +FFI_SONAME := 3 +LIBC_DEP := --- gcc-3.4-3.4.6.orig/debian/gcc-BV-doc.prerm +++ gcc-3.4-3.4.6/debian/gcc-BV-doc.prerm @@ -0,0 +1,6 @@ +#! /bin/sh -e + +install-info --quiet --remove gcc-@BV@ +install-info --quiet --remove gccint-@BV@ + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/watch +++ gcc-3.4-3.4.6/debian/watch @@ -0,0 +1,2 @@ +version=2 +ftp://gcc.gnu.org/pub/gcc/releases/gcc-(3\.4[\d\.]*) 3.4.1 uupdate --- gcc-3.4-3.4.6.orig/debian/relink +++ gcc-3.4-3.4.6/debian/relink @@ -0,0 +1,74 @@ +#! /bin/sh +# +# Relink GNAT utilities using the shared library +# + +set -e + +pwd=`pwd` + +# why? +chmod a-w build/gcc/ada/rts/*.ali + +rm -rf tmp +ln -s $pwd/build/gcc/ada/rts/libgnat.so.1 tmp/libgnat.so + +LD_LIBRARY_PATH=$pwd/tmp +export LD_LIBRARY_PATH + +PATH=$pwd/debian:$pwd/tmp:$PATH +export PATH + +echo "#! /bin/sh" > tmp/dgcc +echo "$pwd/build/gcc/xgcc -B$pwd/build/gcc/ "'"$@"' >> tmp/dgcc +chmod 755 tmp/dgcc + +echo "#! /bin/sh" > tmp/dgnatlink +echo "$pwd/build/gcc/gnatlink --GCC=dgcc "'"$@"' >> tmp/dgnatlink +chmod 755 tmp/dgnatlink + +GMCMD="$pwd/build/gcc/gnatmake -I- -Irts -I. -a -m --GNATBIND=$pwd/build/gcc/gnatbind --GNATLINK=dgnatlink --GCC=dgcc" + +#cd $pwd/build/gcc/ada +#make CFLAGS="-O2" CC="../xgcc -B../" STAGE_PREFIX=../ a-link.o a-gmem.o +#cd $pwd + +[ -f build/gcc/gnatmake.old ] || cp -p build/gcc/gnatmake build/gcc/gnatmake.old +[ -f build/gcc/gnatlink.old ] || cp -p build/gcc/gnatlink build/gcc/gnatlink.old + +make -C build/gcc/ada \ + CFLAGS='-gnatp -gnata -O2 ' \ + ADA_INCLUDES="-I." \ + CC="../xgcc -B../" \ + STAGE_PREFIX=../ \ + ../gnatmake ../gnatlink + +mv gnatmake bgnatmake +mv gnatlink bgnatlink +exit 0 + +cd build/gcc/ada +for i in ../gnatchop ../gnatcmd \ + ../gnatkr ../gnatlbr \ + ../gnatls ../gnatmake \ + ../gnatprep ../gnatpsys \ + ../gnatxref ../gnatfind +do + rm -f $i + $GMCMD -O2 -gnatp -o $i `basename $i`.adb -largs -L.. +done + +rm -f ../gnatmem +$GMCMD -O2 -gnatp -o ../gnatmem gnatmem.adb -largs -L.. a-gmem.o +$GMCMD -O2 -gnatp -o ../gnatlink gnatlink -largs -L.. a-link.o +rm -f ../gnatpsta + +make CFLAGS="-O2" CC="../xgcc -B../" a-gettty.o a-deftar.o +$GMCMD -O2 -gnatp -o ../gnatpsta gnatpsta -largs -L.. a-gettty.o a-deftar.o +rm -f ../gnatbl + +make CFLAGS="-O2" CC="../xgcc -B../" gnatbl.o +../xgcc -B../ -o ../gnatbl gnatbl.o -L.. -lgnat +rm -f ../bgnatmake ../bgnatlink ../debian/dgcc ../debian/dgnatlink + +chmod +w rts/*.ali --- gcc-3.4-3.4.6.orig/debian/gpc-PV-BV-doc.prerm +++ gcc-3.4-3.4.6/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# --- gcc-3.4-3.4.6.orig/debian/treelang-BV.prerm +++ gcc-3.4-3.4.6/debian/treelang-BV.prerm @@ -0,0 +1,10 @@ +#! /bin/sh -e + +if [ -f /usr/share/info/treelang-@BV@.info.gz ]; then + install-info --quiet --remove treelang-@BV@ +else + # GFDL invariant free + true +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gcj-BV.prerm +++ gcc-3.4-3.4.6/debian/gcj-BV.prerm @@ -0,0 +1,12 @@ +#! /bin/sh -e + +update-alternatives --quiet --remove javac /usr/bin/gcj-wrapper-@BV@ + +if [ -f /usr/share/info/gcj-@BV@.info.gz ]; then + install-info --quiet --remove gcj-@BV@ +else + # GFDL invariant free + true +fi + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gij-wrapper +++ gcc-3.4-3.4.6/debian/gij-wrapper @@ -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-3.4'; + +# The debian JNI module directory: +my $debianJNIDir = '/usr/lib/jni'; + +# The command-line arguments to pass to the real Java runtime: +my @commandLine; + +# The full JNI search path to use: +my $JNIPath = ''; + +# Build the command-line from the arguments given. +my $parsingOptions = 1; + +# Flag used to copy argument to -classpath or -cp. +my $copyNext = 0; +foreach my $arg (@ARGV) { + if (not $parsingOptions) { + # We're done parsing options; just copy all remaining arguments directly. + push @commandLine, $arg; + next; + } + if ($copyNext) { + push @commandLine, $arg; + $copyNext = 0; + next; + } + + # Try to interpret Sun-style options. + if ($arg eq '-version') { + push @commandLine, '--version'; + } elsif ($arg eq '-h' or $arg eq '-help') { + push @commandLine, '--help'; + } elsif ($arg eq '-cp' or $arg eq '--cp') { + push @commandLine, '-cp'; + $copyNext = 1; + } elsif ($arg eq '-classpath' or $arg eq '--classpath') { + push @commandLine, '-classpath'; + $copyNext = 1; + } elsif ($arg =~ /^-Djava.library.path=(.+)$/) { + # A component of the JNI search path has been given. + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $1; + } else { + $JNIPath = $1; + } + } elsif ($arg eq '-jar' or $arg =~ /^-D/) { + # Copy the argument directly. + push @commandLine, $arg; + } elsif ($arg =~ /^-/) { + # An unrecognised option has been passed - just drop it. + } else { + # Some non-option argument has been given. + # Stop parsing options at this point. + push @commandLine, $arg; + $parsingOptions = 0; + } +} + +# Add the debian JNI module directory to the JNI search path if it's not +# already there. +if ($JNIPath !~ /(^|:)$debianJNIDir($|:)/) { + if ($JNIPath) { + $JNIPath = $JNIPath . ':' . $debianJNIDir; + } else { + $JNIPath = $debianJNIDir; + } +} + +# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path, +# since gij uses libltdl to dlopen JNI modules. +if ($ENV{LTDL_LIBRARY_PATH}) { + $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':' . $JNIPath; +} else { + $ENV{LTDL_LIBRARY_PATH} = $JNIPath; +} + +# Call the real Java runtime. +my @fullCommandLine = ( $javaRuntime ); +push @fullCommandLine, @commandLine; +exec @fullCommandLine or exit(1); --- gcc-3.4-3.4.6.orig/debian/README.Bugs +++ gcc-3.4-3.4.6/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 ...] --- gcc-3.4-3.4.6.orig/debian/gcj-BV.doc-base +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/TODO +++ gcc-3.4-3.4.6/debian/TODO @@ -0,0 +1,19 @@ +#94955: recheck on mips and 3.3 +#177303: clarify and forward +#180486: update info for 3.3.1 and 3.4 and forward + +- 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. + +- Build the shared Ada libraries. Be sure, that you they can be used at all... + +- Link the Ada tools with the shared Ada library. + +- The following bugs are still open; please step forward and have a look + at http://bugs.debian.org/debian-gcc@lists.debian.org + Never finished. + +Help needed for the following reports: + +[Needs to be updated] --- gcc-3.4-3.4.6.orig/debian/README.treelang +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/acats-killer.sh +++ gcc-3.4-3.4.6/debian/acats-killer.sh @@ -0,0 +1,34 @@ +#! /bin/sh + +# on ia64 systems, the acats hangs in unaligned memory accesses. +# kill these testcases. + +logfile=$1 +stopfile=$2 +interval=30 + +while true; do + if [ -f "$stopfile" ]; then + echo "`basename $0`: finished." + 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 15 + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill: $pids + kill $pids + sleep 1 + pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }') + if [ "$pids" = "$pids2" ]; then + #echo kill -9: $pids + kill -9 $pids + fi + fi + fi +done --- gcc-3.4-3.4.6.orig/debian/g77-BV-doc.postinst +++ gcc-3.4-3.4.6/debian/g77-BV-doc.postinst @@ -0,0 +1,10 @@ +#! /bin/sh -e + +case "$1" in + configure) + install-info --quiet --section "Development" "Development" \ + --description="The GNU Fortran 77 compiler (Version @BV@)." \ + /usr/share/info/g77-@BV@.info +esac + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/gnat-BV-doc.postinst +++ gcc-3.4-3.4.6/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# --- gcc-3.4-3.4.6.orig/debian/NEWS.sarge +++ gcc-3.4-3.4.6/debian/NEWS.sarge @@ -0,0 +1,38 @@ +gcc-3.4 (3.4.1-1) unstable; urgency=medium + + Notes on GCC 3.4 in the sarge distribution + ------------------------------------------ + + [package maintainers: when using GCC 3.4 for package building, please + check that your packages still work on platforms with GCC changes + specific for these platforms (hppa, m68k, mips, mipsel, sparc). ] + + GCC 3.4 is included in sarge as a newer compiler version, the system + compiler for sarge is GCC 3.3 (the transition to a newer system compiler + is a post sarge issue). Due to some incompatibilities between + 3.3 and 3.4 care should be taken, when some code built by both versions + is linked together (most likely linking against a shared library found + in Debian): + + - C++ code compiled by g++-3.3 and g++-3.4 is not compatible. Applications + using C++ libraries have to make sure that these libraries are rebuilt. + + - On hppa and m68k the exception handling changed from SJLJ to Dwarf2 based + exception handling. This affects C++ and code, which implements it's own + handling. If a library or binary ends up linked against libgcc1 _and_ + libgcc2, something probably won't work. + + - The implementation of the MIPS ABIs has changed. As a result, the code + generated for certain MIPS targets will not be binary compatible with + earlier releases. See http://gcc.gnu.org/gcc-3.4/mips-abi.html + + - The implementation of the SPARC ABIs has changed. As a result, the code + generated will not be binary compatible with earlier releases in certain + cases. See http://gcc.gnu.org/gcc-3.4/sparc-abi.html + + - On i386, the compiler is built as a biarch compiler (can generated code + for amd64). To use it, call gcc-3.4 -m64. Packages containing the 64bit + versions of libraries and library development files need to be installed + separately (i.e. lib64gcc1, amd64-libs, ...). + + -- Matthias Klose Sat, 10 Jul 2004 11:21:26 +0200 --- gcc-3.4-3.4.6.orig/debian/cpp-BV-doc.postinst +++ gcc-3.4-3.4.6/debian/cpp-BV-doc.postinst @@ -0,0 +1,12 @@ +#! /bin/sh -e + +case "$1" in + configure) + install-info --quiet --section "Development" "Development" \ + /usr/share/info/cpp-@BV@.info.gz + + install-info --quiet --section "Development" "Development" \ + /usr/share/info/cppinternals-@BV@.info.gz +esac + +#DEBHELPER# --- gcc-3.4-3.4.6.orig/debian/runcheck.sh +++ gcc-3.4-3.4.6/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 --- gcc-3.4-3.4.6.orig/debian/gpc-PV-BV-doc.doc-base.gpcs +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/dh_doclink +++ gcc-3.4-3.4.6/debian/dh_doclink @@ -0,0 +1,12 @@ +#! /bin/sh + +pkg=`echo $1 | sed 's/^-p//'` +target=$2 + +[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc +if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] +then + echo "WARNING: removing doc directory $pkg" + rm -rf debian/$pkg/usr/share/doc/$pkg +fi +ln -sf $target debian/$pkg/usr/share/doc/$pkg --- gcc-3.4-3.4.6.orig/debian/gnat-BV-doc.doc-base.rm +++ gcc-3.4-3.4.6/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/gcc-@BV@-base/Ada/gnat_rm.html +Files: /usr/share/doc/gcc-@BV@-base/Ada/gnat_rm.html + +Format: info +Index: /usr/share/info/gnat_rm-@BV@.info.gz +Files: /usr/share/info/gnat_rm-@BV@* --- gcc-3.4-3.4.6.orig/debian/libgcj5-common.preinst.in +++ gcc-3.4-3.4.6/debian/libgcj5-common.preinst.in @@ -0,0 +1,13 @@ +#! /bin/sh -e + +# replace libgcjX-common doc dir by symlink + +p=libgcj5-common +if [ -d /usr/share/doc/$p -a ! -h /usr/share/doc/$p ]; then + rm -rf /usr/share/doc/$p + ln -s gcc-3.4-base /usr/share/doc/$p +fi + +#DEBHELPER# + +exit 0 --- gcc-3.4-3.4.6.orig/debian/README.libstdc++-baseline.in +++ gcc-3.4-3.4.6/debian/README.libstdc++-baseline.in @@ -0,0 +1,2 @@ +The libstdc++ baseline file is a list of symbols exported by the +libstdc++ library. --- gcc-3.4-3.4.6.orig/debian/treelang-BV.postinst +++ gcc-3.4-3.4.6/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# --- gcc-3.4-3.4.6.orig/debian/cpp-BV-doc.doc-base.cppint +++ gcc-3.4-3.4.6/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@* --- gcc-3.4-3.4.6.orig/debian/dummy-man.1 +++ gcc-3.4-3.4.6/debian/dummy-man.1 @@ -0,0 +1,29 @@ +.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" +.SH NAME +@name@ \- A program with a man page covered by the GFDL with invariant sections +.SH SYNOPSIS +@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] + +.SH DESCRIPTION + +\fB@name@\fR is documented by a man page, which is covered by the "GNU +Free Documentation License" (GFDL) containing invariant sections. +.P +In November 2002, version 1.2 of the GNU Free Documentation License (GNU +FDL) was released by the Free Software Foundation after a long period +of consultation. Unfortunately, some concerns raised by members of the +Debian Project were not addressed, and as such the GNU FDL can apply +to works that do not pass the Debian Free Software Guidelines (DFSG), +and may thus only be included in the non-free component of the Debian +archive, not the Debian distribution itself. + +.SH "SEE ALSO" +.BR http://gcc.gnu.org/onlinedocs/ +for the complete documentation, +.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html +for a proposed statement of Debian with respect to the GFDL, +.BR gfdl(7) + +.SH AUTHOR +This manual page was written by the Debian GCC maintainers, +for the Debian GNU/Linux system. --- gcc-3.4-3.4.6.orig/debian/gpc-PV-BV-doc.postinst +++ gcc-3.4-3.4.6/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# --- gcc-3.4-3.4.6.orig/debian/README.Debian +++ gcc-3.4-3.4.6/debian/README.Debian @@ -0,0 +1,192 @@ + 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. + + +Notes on GCC 3.4 in the sarge distribution +------------------------------------------ + +[package maintainers: when using GCC 3.4 for package building, please + check that your packages still work on platforms with GCC changes + specific for these platforms (hppa, m68k, mips, mipsel, sparc). ] + +GCC 3.4 is included in sarge as a newer compiler version, the system +compiler for sarge is GCC 3.3 (the transition to a newer system compiler +is a post sarge issue). Due to some incompatibilities between +3.3 and 3.4 care should be taken, when some code built by both versions +is linked together (most likely linking against a shared library found +in Debian): + +- C++ code compiled by g++-3.3 and g++-3.4 is not compatible. Applications + using C++ libraries have to make sure that these libraries are rebuilt. + +- On i386, the compiler is built as a biarch compiler (can generated code + for amd64). To use it, call gcc-3.4 -m64. Packages containing the 64bit + versions of libraries and library development files need to be installed + separately (i.e. lib64gcc1, amd64-libs, ...). + gcc-3.4 -m64 turns on the common subset for all x86-64 architectures, + specifying -march=k8 turns on k8/opteron specific features, -march=nocona + turns on some P4/64 Nocona specific features. + +- On hppa and m68k the exception handling changed from SJLJ to Dwarf2 based + exception handling. This affects C++ and code, which implements it's own + handling. If a library or binary ends up linked against libgcc1 _and_ + libgcc2, something probably won't work. + +- The implementation of the MIPS ABIs has changed. As a result, the code + generated for certain MIPS targets will not be binary compatible with + earlier releases. See http://gcc.gnu.org/gcc-3.4/mips-abi.html + +- The implementation of the SPARC ABIs has changed. As a result, the code + generated will not be binary compatible with earlier releases in certain + cases. See http://gcc.gnu.org/gcc-3.4/sparc-abi.html + +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) +Ryan Murray (mips*-linux) +Matt Taggart (hppa-linux) +Gerhard Tonn (s390-linux) +Roman Zippel (m68k-linux) +Ludovic Brenta (gnat) + +=============================================================================== + +Patches that Ubuntu applied in this version: + +gcc-textdomain: + Set gettext's domain and textdomain to the versioned package name. + +rename-info-files: + Allow transformations on info file names. Reference the + transformed info file names in the texinfo files. + +libstdc++-pic: + Build and install libstdc++_pic.a library. + +libstdc++-doclink: + adjust hrefs to point to the local documentation + +libstdc++-doxygen-syntax: + fix doxygen syntax error in header that causes segfaults with some + versions + +amd64-specs: + On x86-64 use 64bits mode assembly except with -m32. + +gccbug: + Use sensible-editor instead of vi as fallback editor + +gccbug-posix: + Make gccbug POSIX compliant (patch by David Weinehall) + http://www.opengroup.org/onlinepubs/009695399/utilities/test.html + +hppa-toplevel: + For hppa-linux enable libgcj and dependent libs in the toplevel directory + +hppa-libffi: + libffi support for hppa + +hppa-libjava: + Enable libjava support for hppa + +hppa-libjava-update: + MD_FALLBACK_FRAME_STATE_FOR definition for pa32-linux + +fastjar-update: + Implement fastjar -u (PR 7854). + +fastjar-version: + Append GCC version to the fastjar version string. + +boehm-gc-nocheck: + Disable the boehm-gc testsuite. Hangs forever on this architecture + +libltdl: + * libltdl.dpatch: Search the versioned extension, when loading a shared + library (i.e. gij looks for .so.5 for loading additional libraries + like the GTK based AWT peers. + +m68k-update: + Add two m68k specfic patches backported from 4.0 concerning wrong code + generation (Richard Zidlicky). + +libf2c-mxunit: + libf2c/libI77/fio.c: Set MXUNIT to 1000. + +arm-bigendian: + +makeinfo-version-check: + Correct makeinfo version check. + +cpu-default-i486: + set default 32bit ix86 architecture to i486 + +libffi-soversion: + Install libffi with soversion 3. + +gpc-20060215-20060322: + gpc update 20060215-20060322 + +gpc-3.x: + The gpc patch from the gpc tarball. + +gpc-doc: + gpc documentation: Fix hyperlinks to the example files. + +gpc-updates: + +gpc-bison-2.2: + gpc fixes for bison-2.2 + +gpc-names: + versioned gpc names + +libffi-mips: + libffi mips update + +libjava-mips: + libjava-mips patch from Thiemo Seufer + +libstdc++-mips-atomic: + Fix libstdc++ atomic ops for mips/mipsel + +biarch-include: + biarch-include.dpatch + + Adds biarch include directories + /usr/include/c++//-linux-gnu + /usr/local/include/-linux-gnu + /usr/include/-linux-gnu + to the system include paths, depending on 32/64 bit mode. + +config-ml: + disable some biarch libraries for biarch builds + +amd64-biarch: + biarch patches for i386/x86_64 + +link-libs: + +reporting: + Add Debian URL for bug reporting isntructions. + +gcc-version: + Add package identification to the gcc version string + +configure-deplibs_check_method: + In all configure scripts for libraries, generated with autoconf2.13, use + deplibs_check_method=pass_all unconditionally for all linux architectures. --- gcc-3.4-3.4.6.orig/debian/locale-gen +++ gcc-3.4-3.4.6/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 < +Uploaders: Matthias Klose , Gerhard Tonn +Standards-Version: 3.6.2 +Build-Depends: dpkg-dev (>= 1.13.9), libc6.1-dev (>= 2.3.5-10) [alpha ia64] | libc0.3-dev (>= 2.3.5-10) [hurd-i386] | libc0.1-dev (>= 2.3.5-10) [kfreebsd-i386 knetbsd-gnu] | libc12-dev (>= 2.3.5-10) [netbsd-elf-gnu] | libc6-dev (>= 2.3.5-10), libc6-dev-amd64 [i386], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc1 [amd64 ppc64], lib64gcc1 [powerpc i386 sparc s390], libunwind7-dev (>= 0.98.5-7) [ia64], libatomic-ops-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [!hppa !hurd-i386 !knetbsd-gnu], bzip2, binutils (>= 2.16.1-3) | binutils-multiarch (>= 2.16.1-3), binutils-hppa64 (>= 2.16.1-3) [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:2.3), flex (>= 2.5.33), gettext, texinfo (>= 4.3), zlib1g-dev, gcc-3.4, locales [!knetbsd-gnu !netbsd-elf-gnu !hurd-i386], procps [!hppa !hurd-i386 !knetbsd-gnu], sharutils, libncurses5-dev [!netbsd-elf-gnu], texlive-latex-base [!netbsd-elf-gnu], libgmp3-dev [!netbsd-elf-gnu], help2man [!netbsd-elf-gnu], realpath (>= 1.9.12), lsb-release +Build-Depends-Indep: doxygen (>= 1.4.2), graphviz (>= 2.2), gsfonts-x11 + +Package: gcc-3.4-base +Architecture: any +Section: devel +Priority: optional +Description: The GNU Compiler Collection (base package) + This package contains files common to all languages and libraries + contained in the GNU Compiler Collection (GCC). + +Package: gcc-3.4 +Architecture: any +Section: devel +Priority: optional +Depends: gcc-3.4-base (= ${gcc:Version}), cpp-3.4 (= ${gcc:Version}), binutils (>= ${binutils:Version}), ${dep:libgcc}, ${dep:libunwinddev}, ${shlibs:Depends} +Recommends: ${dep:libcdev} +Conflicts: gcc-3.2 (<= 1:3.2.3-0pre8) +Suggests: gcc-3.4-doc (>= ${gcc:SoftVersion}), ${dep:libcbiarchdev}, ${dep:libgccbiarch} +Provides: c-compiler +Description: The GNU C compiler + This is the GNU C compiler, a fairly portable optimizing compiler for C. + . + ABIs changed between gcc-3.3 and gcc-3.4 on some architectures (hppa, m68k, + mips, mipsel, sparc). Please read /usr/share/doc/gcc-3.4/README.Debian + for more details. + +Package: cpp-3.4 +Architecture: any +Section: interpreters +Priority: optional +Depends: gcc-3.4-base (= ${gcc:Version}), ${shlibs:Depends} +Description: The GNU C preprocessor + A macro processor that is used automatically by the GNU C compiler + to transform programs before actual compilation. + . + This package has been separated from gcc for the benefit of those who + require the preprocessor but not the compiler. + +Package: cpp-3.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-3.4-base (>= ${gcc:SoftVersion}) +Replaces: cpp (<= 1:2.93.12) +Description: Documentation for the GNU C preprocessor (cpp) + Documentation for the GNU C preprocessor in info format. + +Package: gcc-3.4-doc +Architecture: all +Section: doc +Priority: optional +Depends: gcc-3.4-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. + --- gcc-3.4-3.4.6.orig/debian/libstdc++6-doc.overrides +++ gcc-3.4-3.4.6/debian/libstdc++6-doc.overrides @@ -0,0 +1 @@ +libstdc++6-doc: extra-license-file --- gcc-3.4-3.4.6.orig/debian/libgnat-BV.overrides +++ gcc-3.4-3.4.6/debian/libgnat-BV.overrides @@ -0,0 +1 @@ +libgnat-@BV@: package-name-doesnt-match-sonames --- gcc-3.4-3.4.6.orig/debian/gnat-BV.overrides +++ gcc-3.4-3.4.6/debian/gnat-BV.overrides @@ -0,0 +1 @@ +gnat-@BV@: bad-permissions-for-ali-file --- gcc-3.4-3.4.6.orig/debian/NEWS.gcc +++ gcc-3.4-3.4.6/debian/NEWS.gcc @@ -0,0 +1,2007 @@ + +GCC 3.4 Release Series - Changes, New Features, and Fixes +========================================================= + +The latest release in the 3.4 release series is GCC 3.4.5. + +Caveats +======= + +- GNU Make is now required to build GCC. + +- With -nostdinc the preprocessor used to ignore both standard include + paths and include paths contained in environment variables. It was + neither documented nor intended that environment variable paths be + ignored, so this has been corrected. + +- GCC no longer accepts the options -fvolatile, -fvolatile-global and + -fvolatile-static. It is unlikely that they worked correctly in any + 3.x release. + +- GCC no longer ships . Use instead. + +- Support for all the systems obsoleted in GCC 3.3 has been removed + from GCC 3.4. See below for a list of systems which are obsoleted in + this release. + +- GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C + compilers will not work. + +- The implementation of the MIPS ABIs has changed. As a result, the + code generated for certain MIPS targets will not be binary compatible + with earlier releases. + +- In previous releases, the MIPS port had a fake "hilo" register with + the user-visible name accum. This register has been removed. + +- The implementation of the SPARC ABIs has changed. As a result, the + code generated will not be binary compatible with earlier releases in + certain cases. + +- The configure option --enable-threads=pthreads has been removed; use + --enable-threads=posix instead, which should have the same effect. + +- Code size estimates used by inlining heuristics for C, Objective-C, + C++ and Java have been redesigned significantly. As a result the + parameters of -finline-insns, --param max-inline-insns-single and + --param max-inline-insns-auto need to be reconsidered. + +- --param max-inline-slope and --param min-inline-insns have been + removed; they are not needed for the new bottom-up inlining + heuristics. + +- The new unit-at-a-time compilation scheme has several compatibility + issues: + + - The order in which functions, variables, and top-level asm + statements are emitted may have changed. Code relying on some + particular ordering needs to be updated. The majority of such + top-level asm statements can be replaced by section attributes. + + - Unreferenced static variables and functions are removed. This may + result in undefined references when an asm statement refers to the + variable/function directly. In that case either the + variable/function shall be listed in asm statement operand or in the + case of top-level asm statements the attribute used shall be used to + force function/variable to be always output and considered as a + possibly used by unknown code. + + For variables the attribute is accepted only by GCC 3.4 and newer, + while for earlier versions it is sufficient to use unused to silence + warnings about the variables not being referenced. To keep code + portable across different GCC versions, you can use appropriate + preprocessor conditionals. + + - Static functions now can use non-standard passing conventions that + may break asm statements calling functions directly. Again the + attribute used shall be used to prevent this behavior. + + As a temporary workaround, -fno-unit-at-a-time can be used, but this + scheme may not be supported by future releases of GCC. + +- GCC 3.4 automatically places zero-initialized variables in the .bss + section on some operating systems. Versions of GNU Emacs up to (and + including) 21.3 will not work correctly when using this optimization; + you can use -fno-zero-initialized-in-bss to disable it. + + +General Optimizer Improvements +============================== + +- Usability of the profile feedback and coverage testing has been + improved. + + - Performance of profiled programs has been improved by faster + profile merging code. + - Better use of the profile feedback for optimization (loop + unrolling and loop peeling). + - File locking support allowing fork() calls and parallel runs of + profiled programs. + - Coverage file format has been redesigned. + - gcov coverage tool has been improved. + - make profiledbootstrap available to build a faster compiler. + + Experiments made on i386 hardware showed an 11% speedup on -O0 and + a 7.5% speedup on -O2 compilation of a large C++ testcase. + + - New value profiling pass enabled via -fprofile-values + - New value profile transformations pass enabled via -fvpt aims to + optimize some code sequences by exploiting knowledge about value + ranges or other properties of the operands. At the moment a + conversion of expensive divisions into cheaper operations has been + implemented. + - New -fprofile-generate and -fprofile-use command line options to + simplify the use of profile feedback. + +- A new unit-at-a-time compilation scheme for C, Objective-C, C++ and + Java which is enabled via -funit-at-a-time (and implied by -O2). In + this scheme a whole file is parsed first and optimized later. The + following basic inter-procedural optimizations are implemented: + + - Removal of unreachable functions and variables + - Discovery of local functions (functions with static linkage whose + address is never taken) + - On i386, these local functions use register parameter passing + conventions. + - Reordering of functions in topological order of the call graph to + enable better propagation of optimizing hints (such as the stack + alignments needed by functions) in the back end. + - Call graph based out-of-order inlining heuristics which allows to + limit overall compilation unit growth (--param inline-unit-growth). + + Overall, the unit-at-a-time scheme produces a 1.3% improvement for + the SPECint2000 benchmark on the i386 architecture (AMD Athlon CPU). + +- More realistic code size estimates used by inlining for C, + Objective-C, C++ and Java. The growth of large functions can now be + limited via --param large-function-insns and --param + large-function-growth. + +- A new cfg-level loop optimizer pass replaces the old loop unrolling + pass and adds two other loop transformations -- loop peeling and loop + unswitching -- and also uses the profile feedback to limit code + growth. (The three optimizations are enabled by -funroll-loops, + -fpeel-loops and -funswitch-loops flags, respectively). + + The old loop unroller still can be enabled by -fold-unroll-loops and + may produce better code in some cases, especially when the webizer + optimization pass is not run. + +- A new web construction pass enabled via -fweb (and implied by -O3) + improves the quality of register allocation, CSE, first scheduling + pass and some other optimization passes by avoiding re-use of pseudo + registers with non-overlapping live ranges. The pass almost always + improves code quality but does make debugging difficult and thus is + not enabled by default by -O2 + + The pass is especially effective as cleanup after code duplication + passes, such as the loop unroller or the tracer. + +- Experimental implementations of superblock or trace scheduling in + the second scheduling pass can be enabled via -fsched2-use-superblocks + and -fsched2-use-traces, respectively. + + +New Languages and Language specific improvements +================================================ + +Ada +--- + +- The Ada front end has been updated to include numerous bug fixes and + enhancements. These include: + + - Improved project file support + - Additional set of warnings about potential wrong code + - Improved error messages + - Improved code generation + - Improved cross reference information + - Improved inlining + - Better run-time check elimination + - Better error recovery + - More efficient implementation of unbounded strings + - Added features in GNAT.Sockets, + - GNAT.OS_Lib, GNAT.Debug_Pools, ... + - New GNAT.xxxx packages (e.g. GNAT.Strings, + - GNAT.Exception_Action) + - New pragmas + - New -gnatS switch replacing gnatpsta + - Implementation of new Ada features (in particular limited with, + limited aggregates) + + +C/Objective-C/C++ +----------------- + +- Precompiled headers are now supported. Precompiled headers can + dramatically speed up compilation of some projects. There are some + known defects in the current precompiled header implementation that + will result in compiler crashes in relatively rare situations. + Therefore, precompiled headers should be considered a "technology + preview" in this release. Read the manual for details about how to + use precompiled headers. + +- File handling in the preprocessor has been rewritten. GCC no longer + gets confused by symlinks and hardlinks, and now has a correct + implementation of #import and #pragma once. These two directives have + therefore been un-deprecated. + +- The undocumented extension that allowed C programs to have a label + at the end of a compound statement, which has been deprecated since + GCC 3.0, has been removed. + +- The cast-as-lvalue extension has been removed for C++ and deprecated + for C and Objective-C. In particular, code like this: + + int i; + (char) i = 5; + + or this: + + char *p; + ((int *) p)++; + + is no longer accepted for C++ and will not be accepted for C and + Objective-C in a future version. + +- The conditional-expression-as-lvalue extension has been deprecated + for C and Objective-C. In particular, code like this: + + int a, b, c; + (a ? b : c) = 2; + + will not be accepted for C and Objective-C in a future version. + +- The compound-expression-as-lvalue extension has been deprecated for + C and Objective-C. In particular, code like this: + + int a, b; + (a, b) = 2; + + will not be accepted for C and Objective-C in a future version. A + possible non-intrusive workaround is the following: + + (*(a, &b)) = 2; + +- Several built-in functions such as __builtin_popcount for counting + bits, finding the highest and lowest bit in a word, and parity have + been added. + +- The -fwritable-strings option has been deprecated and will be + removed. + +- Many C math library functions are now recognized as built-ins and + optimized. + +- The C, C++, and Objective-C compilers can now handle source files + written in any character encoding supported by the host C library. + The default input character set is taken from the current locale, and + may be overridden with the -finput-charset command line option. In + the future we will add support for inline encoding markers. + + +C++ +--- + +- G++ is now much closer to full conformance to the ISO/ANSI C++ + standard. This means, among other things, that a lot of invalid + constructs which used to be accepted in previous versions will now be + rejected. It is very likely that existing C++ code will need to be + fixed. This document lists some of the most common issues. + +- A hand-written recursive-descent C++ parser has replaced the + YACC-derived C++ parser from previous GCC releases. The new parser + contains much improved infrastructure needed for better parsing of C++ + source codes, handling of extensions, and clean separation (where + possible) between proper semantics analysis and parsing. The new + parser fixes many bugs that were found in the old parser. + +- You must now use the typename and template keywords to disambiguate + dependent names, as required by the C++ standard. + + struct K { + typedef int mytype_t; + }; + + template struct A { + template struct B { + void callme(void); + }; + + template void bar(void) + { + // Use 'typename' to tell the parser that T1::mytype_t names + // a type. This is needed because the name is dependent (in + // this case, on template parameter T1). + typename T1::mytype_t x; + x = 0; + } + }; + + template void template_func(void) + { + // Use 'template' to prefix member templates within + // dependent types (a has type A, which depends on + // the template parameter T). + A a; + a.template bar<0>(); + + // Use 'template' to tell the parser that B is a nested + // template class (dependent on template parameter T), and + // 'typename' because the whole A::B is + // the name of a type (again, dependent). + typename A::template B b; + b.callme(); + } + + void non_template_func(void) + { + // Outside of any template class or function, no names can be + // dependent, so the use of the keyword 'typename' and 'template' + // is not needed (and actually forbidden). + A a; + a.bar<0>(); + A::B b; + b.callme(); + } + +- In a template definition, unqualified names will no longer find + members of a dependent base. For example, + + template struct B { + int m; + int n; + int f (); + int g (); + }; + int n; + int g (); + template struct C : B { + void g () + { + m = 0; // error + f (); // error + n = 0; // ::n is modified + g (); // ::g is called + } + }; + + You must make the names dependent by prefixing them with + this->. Here is the corrected definition of C::g, + + template void C::g () + { + this->m = 0; + this->f (); + this->n = 0 + this->g (); + } + +- In templates, all non-dependent names are now looked up and bound at + definition time (while parsing the code), instead of later when the + template is instantiated. For instance: + + void foo(int); + + template struct A { + static void bar(void) { + foo('a'); + } + }; + + void foo(char); + + int main() + { + A<0>::bar(); // Calls foo(int), used to call foo(char). + } + + +- In an explicit instantiation of a class template, you must use class + or struct before the template-id: + + + template + class A {}; + + template A<0>; // error, not accepted anymore + template class A<0>; // OK + +- The "named return value" and "implicit typename" extensions have + been removed. + +- Default arguments in function types have been deprecated and will be + removed. + +- ARM-style name-injection of friend declarations has been deprecated + and will be removed. For example: + + struct S { + friend void f(); + }; + + void g() { f(); } + + will not be accepted by future versions of G++; instead a + declaration of "f" will need to be present outside of the scope of "S". + +- Covariant returns are implemented for all but varadic functions that + require an adjustment. + +- When -pedantic is used, G++ now issues errors about spurious + semicolons. For example, + + namespace N {}; // Invalid semicolon. + void f() {}; // Invalid semicolon. + +- G++ no longer accepts attributes for a declarator after the + initializer associated with that declarator. For example, + + X x(1) __attribute__((...)); + is no longer accepted. Instead, use: + + X x __attribute__((...)) (1); + +- Inside the scope of a template class, the name of the class itself + can be treated as either a class or a template. So GCC used to accept + the class name as argument of type template, and template template + parameter. However this is not C++ standard compliant. Now the name + is not treated as a valid template template argument unless you + qualify the name by its scope. For example, the code below no longer + compiles. + + template

There are two types of documentation for libstdc++-v3. 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-3.4/libstdc++/html/documentation.html. +