gcc 4.4.1 source, extravagantly patched

Stuff that has yet to be sorted into a category.
Post Reply
Message
Author
User avatar
Sit Heel Speak
Posts: 2595
Joined: Fri 31 Mar 2006, 03:22
Location: downwind

gcc 4.4.1 source, extravagantly patched

#1 Post by Sit Heel Speak »

Download (user is puppy and password is linux):
http://puppylinux.asia/tpp/SitHeelSpeak ... ed-SHS.tgz
http://puppylinux.asia/tpp/SitHeelSpeak ... HS.tgz.md5
or
http://puppylinux.ca/tpp/SitHeelSpeak/g ... ed-SHS.tgz
http://puppylinux.ca/tpp/SitHeelSpeak/g ... HS.tgz.md5

Size: 97,845,575 bytes.
md5sum:
360073de63a9b75ccc9cd3f65002b73e gcc-4.4.1-source-patched-SHS.tgz

This is source code for gcc 4.4.1. To the source, I have applied every x86-32 (ia32) and x86-64 (ia64) patch I could find in the current Gentoo, Fedora 12-alpha (I think!--as explained below), Ubuntu 9.10-rc, and Slackware 13.0 repositories.

The patches are in the input subdirectory above gcc proper. They are all edited to adjust where they look for source files, to the gcc subdirectory. The patch utility was run from the gcc subdirectory.

I include a complete log of the rxvt output of the patches, GCC_4.4.1_patching_log.txt. People who have a healthy distrust of strange Weimaraners will not simply compile from my source code, but rather will download the source and patches and do it all yourselves, checking to make sure I did not leave any useful patches out, and omitting the dec alpha, s390, powerpc and other non-Puppy-machine patches which I absent-mindedly applied at 3 AM in the morning half-asleep. You will use this log merely as a guide to the patching sequence, and maybe as confirmation of what you see when you do it yourself!

More-trusting souls will find that this gcc source compiles acceptably. I promise, I did not add any backdoors or other sneakiness, and it generates not even a single warning in make check! --and the gcc created from it creates executeables that run well. At least, it has so far, for me, on my ia32 machine. I do not have an ia64 machine to try it on. If it doesn't work on your ia64 machine. because I forgot a crucial ia64 patch...well, at least I will show you (below) where to obtain the patches, so you can fill-in any I missed...

I have renamed the 86 Ubuntu patches with the prefix "ubuntu-"
and the one Slackware patch with "slackware-".
The 9 Gentoo patches have two digits and an underscore as a prefix.
The remaining 24 patches (fastjar-segfault, and the gcc44- patches) are from Fedora.

The gcc source and the Gentoo patches are from an official Gentoo mirror at Oregon State University
http://gentoo.osuosl.org/distfiles/gcc-4.4.1.tar.bz2 23-Jul-2009 01:10 60M
http://gentoo.osuosl.org/distfiles/gcc- ... .0.tar.bz2 23-Jul-2009 01:10 11K
http://gentoo.osuosl.org/distfiles/gcc- ... .1.tar.bz2 23-Jul-2009 06:11 2.2K

The Fedora patches are from (yes, I know, it says F11 and mingw32, but I am informed, hopefully reliably, that this is indeed where the Fedora developers are stashing its current gcc patches):
http://cvs.fedora.redhat.com/viewvc/F-11/mingw32-gcc/
http://cvs.fedoraproject.org/viewvc/rpm ... sortby=log

The Ubuntu patches are also from OSU:
http://debian.osuosl.org/debian/pool/ma ... u4_all.deb 25-Sep-2009 22:05 50M
The above appears to be the only .deb needed from this download directory.
The patches are in the unpacked gcc-4.4-source_4.4.1-4ubuntu4_all.deb/usr/src/gcc-4.4/patches

THE TWO PATCHES WHICH I DID NOT WIN THE HEARTS AND MINDS OF:

I do not know what to do (edited: see amigo's post, below) with ubuntu-gcc-4.4_4.4.1-4ubuntu4.diff
It is a huge patch which creates several large files. It looks like it is relevant not to gcc but maybe to the Debian/Ubuntu buildsystem,
so I did not apply it. But it is included here.

IF YOU KNOW what to do with ubuntu-gcc-4.4_4.4.1-4ubuntu4.diff, please inform me. (amigo tells what it is, below)

The only other patch I am not reasonably certain of, in the entire collection, is ubuntu-fix-warnings.diff, see the note in GCC_4.4.1_patching_log.txt. I suspect there is a mistake in the gcc source and am not sure if I guessed right in correcting it.

I looked in
http://debian.osuosl.org/debian/pool/ma ... 4_i386.deb 25-Sep-2009 22:05 110K
http://debian.osuosl.org/debian/pool/ma ... u4_all.deb 25-Sep-2009 22:05 2.0M
http://debian.osuosl.org/debian/pool/ma ... 4_i386.deb 25-Sep-2009 22:05 2.2M
http://debian.osuosl.org/debian/pool/ma ... buntu4.dsc 25-Sep-2009 17:04 3.6K
http://debian.osuosl.org/debian/pool/ma ... 4_i386.deb 25-Sep-2009 22:05 2.9M

but there is no gcc patch nor source in these, rather they appear to be just compiled output and docs.

The one Slackware patch (Slackware believes in not very much patching, I am informed) is from:
ftp://ftp.slackware.at/slackware-current/source/d/gcc

You will need to add gmp and mpfr and ppl to Puppy, before compiling gcc. Download these from their respective websites, and apply the cumulative patch to mpfr.
See
http://www.murga-linux.com/puppy/viewtopic.php?t=48136
for the configure lines for gmp and mpfr.

Then, to compile gcc, load the devx.sfs for your Puppy...shift into /mnt/sda2/input/gcc (or wherever you put it), open rxvt, and run the standard configure-make-make check-make install sequence. Do not allow spaces in the full pathnames of the input and output subdirectories, or else make will fail.

You can see the configure line for Puppy's gcc by issuing the command

gcc --ver

Actually, I modified it slightly, I already had pam and gcj, so I used:

UPDATE November 15 2009: for the build with which I am now compiling kernels, and with which playdayz has succeeded in compiling the ATi fglrx driver, this is the configure line:

Code: Select all

./configure --prefix=/usr --build=i486-t2-linux-gnu --host=i486-t2-linux-gnu --target=i486-t2-linux-gnu --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib --datadir=/usr/share --includedir=/usr/include --infodir=/usr/info --mandir=/usr/man --sysconfdir=/etc --localstatedir=/var --enable-debug --enable-__cxa_atexit --enable-checking --enable-bootstrap --enable-libstdcxx-pch --enable-multilib --enable-languages=c,c++,fortran,java,objc,obj-c++ --with-python-dir=/lib/python2.5/site-packages --enable-libmudflap --enable-threads=posix --enable-tls --with-cpu32=i486 --with-arch=i486 --with-tune=i586 --enable-targets=x86-linux --enable-nls --enable-libgcj
If you wish to "Puppify" gcc, i.e make it as small as possible, you can designate --prefix=some_scratch_directory for a first trial compile of gcc, so that you can meticulously compare against the files in Puppy's current gcc, and see what needs stripping (and is safe to delete). Then, run make distclean, and do the compile over again for real, this time using --prefix=/usr. Me, I don't bother to do this. I have a lot of diskspace and ram.

On my rig, the make of gcc takes about three hours. The rest, just a few minutes.

***Added, later:

For 'make check' to succeed on gcc 4.4.1, you must first download, configure, make, make check, and make install, in this order, using the same configure line as for gmp:

guile 1.4.1 (an old version, but newer ones fail to make)
gperf 3.0.4
autogen 5.9.8
(***edited: you will also need runtest, latest version. Works OK if you don't have runtest, but you'll get a warning in make check***)

Here's to strong cigarettes, obedient beautiful daughters, world-class opera, and insomnia,
Free Schapelle Corby, De miei bollenti spiriti
--*clink*--
SHS
Last edited by Sit Heel Speak on Sun 15 Nov 2009, 18:11, edited 11 times in total.

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#2 Post by technosaurus »

I recently compiled gcc-4.4.2 (and latest binutils, mpc, gmp, mpfr, ppl, cloog and libelf) if anyone is interested I can make several pets or a single sfs (minus docs and nls unless someone specifically needs them)

Edit - just to clarify no patches applied to this build - I did manually patch binutils to use a shared libiberty but did not set up gcc to use so it is a little bigger (part oversight and part being overwhelmed by the gcc build structure)
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

amigo
Posts: 2629
Joined: Mon 02 Apr 2007, 06:52

#3 Post by amigo »

RE: ubuntu-gcc-4.4_4.4.1-4ubuntu4.diff
This patch or its' debian counterpart (you can usually tell them because of the '_' in the name) are the patches used to 'debianize' sources. They create the debain dir inside the sources -and if applicable, they also create the debain/patches dir and populate it with all the debian patches for that source.
When properly done, these patches don't dirrectly patch any source files. They ma directly patch configuration files like acloal.m4, etc. You acn apply these patches in an empty directory so you can go into the debian/patches directory to glean any needed/wanted patches from there. I'll guess that the debain/ubuntu patch fro gcc probably has 200-300 patches when inlcuding those for all arches...

User avatar
Sit Heel Speak
Posts: 2595
Joined: Fri 31 Mar 2006, 03:22
Location: downwind

#4 Post by Sit Heel Speak »

amigo wrote:RE: ubuntu-gcc-4.4_4.4.1-4ubuntu4.diff
This patch or its Debian counterpart (you can usually tell them because of the '_' in the name) are the patches used to 'debianize' sources. They create the debian dir inside the sources -and if applicable, they also create the debian/patches dir and populate it with all the debian patches for that source. When properly done, these patches don't directly patch any source files. They may directly patch configuration files like aclocal.m4, etc. You can apply these patches in an empty directory so you can go into the debian/patches directory to glean any needed/wanted patches from there...
Aha :D !!!
...and, the Debian buildsystem knows to look inside debian/patches when building a package from source?

How does ubuntu-gcc-4.4_4.4.1-4ubuntu4.diff (and suchlike) fit into the apt-get system (if at all)? I hope this is not a silly question; I am not familiar with the Debian buildsystem, and have not looked inside apt-get.

Is this "patches-getting-patch" somehow a key missing ingredient in dpup and upup?

I understand what you wrote, in the other thread, about differences in Puppy toolchains. Someday, when I'm rich, I'm going to build a Puppy completely per LFS...
Last edited by Sit Heel Speak on Thu 29 Oct 2009, 18:57, edited 3 times in total.

User avatar
Sit Heel Speak
Posts: 2595
Joined: Fri 31 Mar 2006, 03:22
Location: downwind

#5 Post by Sit Heel Speak »

technosaurus wrote:...just to clarify no patches applied to this build - I did manually patch binutils to use a shared libiberty but did not set up gcc to use so it is a little bigger (part oversight and part being overwhelmed by the gcc build structure)
Now you know why I never reported back in the other thread, concerning the GUI for Puppy Universal Installer. I'm under a deadline on creating a custom upup, this gcc was necessary for it. Two weeks later...

Post Reply