home *** CD-ROM | disk | FTP | other *** search
/ Dream 48 / Amiga_Dream_48.iso / LinuxPpc / users / harry / gcc-2.7.2.2_patch < prev    next >
Text File  |  1998-01-19  |  8KB  |  230 lines

  1. Harry,
  2.  
  3. Enclosed is the patch I've been using.
  4.  
  5.  
  6. FILES IN THE PATCH
  7.  
  8. As can be seen, gcc-2.7.2.2 almost compiles for Linux/PPC "out-of-the-box".
  9.  
  10.     gcc-2.7.2.2/config/rs6000/linux.h
  11.     gcc-2.7.2.2/config/rs6000/xm-linux.h
  12.         I started with the these files from the "gcc-2.7.2.1-1.ppc.src.rpm" and
  13.         changed some macros around.
  14.  
  15.     gcc-2.7.2.2/ginclude/va-ppc.h
  16.         This is the same as the one from the "gcc-2.7.2.1-1.ppc.src.rpm".  Just
  17.         a wrapper around the va_list structure.
  18.  
  19.     gcc-2.7.2.2/configure
  20.     gcc-2.7.2.2/README.LINUXPPC
  21.         These are both mine.
  22.  
  23.  
  24. INSTRUCTIONS FOR USING THE PATCH
  25.  
  26. Get the gcc-2.7.2.2 distribution from
  27. <ftp://prep.ai.mit.edu/pub/gnu/gcc-2.7.2.2> or a mirror site.
  28.  
  29. Save everything between the "==== CUT HERE ====" lines below into a file
  30. called gcc.patch.
  31. Untar the gcc distribution.
  32. From the parent directory of gcc-2.7.2.2 issue a "patch <gcc.patch"
  33. command.
  34. Now go into the gcc-2.7.2.2 directory and read the file "README.LINUXPPC".
  35.  
  36. Good luck,
  37.  
  38. -- 
  39. Anthony C. Ard <aard@best.com>
  40.  
  41. Finger me for PGP key.  "Wouldn't you rather be involved in a series of
  42. colorful time-wasting trends?"  -- Frank Zappa
  43.  
  44.  
  45. ==== CUT HERE =============================================================
  46. diff -u gcc-2.7.2.2/config/rs6000/linux.h.orig gcc-2.7.2.2/config/rs6000/linux.h
  47. --- gcc-2.7.2.2/config/rs6000/linux.h.orig      Wed Apr  2 02:08:44 1997
  48. +++ gcc-2.7.2.2/config/rs6000/linux.h   Thu Apr  3 22:43:23 1997
  49. @@ -0,0 +1,46 @@
  50. +/*
  51. + * Configuration for Linux/PowerPC
  52. + */
  53. +#include "rs6000/sysv4.h"
  54. +
  55. +/* Define this as 1 if `char' should by default be signed; else as 0.  */
  56. +#undef DEFAULT_SIGNED_CHAR
  57. +#define DEFAULT_SIGNED_CHAR 1
  58. +
  59. +#undef TARGET_VERSION
  60. +#define TARGET_VERSION fprintf (stderr, " (PowerPC Linux/Sys V.4 ABI)");
  61. +
  62. +#undef DWARF_DEBUGGING_INFO
  63. +
  64. +#undef CPP_PREDEFINES
  65. +#define CPP_PREDEFINES \
  66. +  "-DELF -DPPC -Dunix -Dlinux -Dpowerpc -Asystem(unix) -Asystem(linux) -Acpu(powerpc) -Amachine(powerpc)"
  67. +
  68. +/* Set the default to my machine, a PowerMacintosh 8500/180 with a 604e. */
  69. +#undef PROCESSOR_DEFAULT
  70. +#define PROCESSOR_DEFAULT PROCESSOR_PPC604
  71. +
  72. +/* Leave out some SYSV linking stuff */
  73. +#undef  LINK_SPEC
  74. +
  75. +/* Provide a STARTFILE_SPEC appropriate for Linux.  Here we add
  76. +   the Linux magical crtbegin.o file (see crtstuff.c) which
  77. +   provides part of the support for getting C++ file-scope static
  78. +   object constructed before entering `main'. */
  79. +   
  80. +#undef STARTFILE_SPEC
  81. +#define STARTFILE_SPEC \
  82. +  "%{!shared: \
  83. +     %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\
  84. +   crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}"
  85. +
  86. +/* Provide a ENDFILE_SPEC appropriate for Linux.  Here we tack on
  87. +   the Linux magical crtend.o file (see crtstuff.c) which
  88. +   provides part of the support for getting C++ file-scope static
  89. +   object constructed before entering `main', followed by a normal
  90. +   Linux "finalizer" file, `crtn.o'.  */
  91. +
  92. +#undef ENDFILE_SPEC
  93. +#define ENDFILE_SPEC \
  94. +  "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
  95. diff -u gcc-2.7.2.2/config/rs6000/xm-linux.h.orig gcc-2.7.2.2/config/rs6000/xm-linux.h
  96. --- gcc-2.7.2.2/config/rs6000/xm-linux.h.orig   Wed Apr  2 02:08:50 1997
  97. +++ gcc-2.7.2.2/config/rs6000/xm-linux.h        Wed Apr  2 02:08:34 1997
  98. @@ -0,0 +1,5 @@
  99. +/*
  100. + * Configuration for Linux/PowerPC
  101. + */
  102. +#include "rs6000/xm-sysv4.h"
  103. diff -u gcc-2.7.2.2/ginclude/va-ppc.h.orig gcc-2.7.2.2/ginclude/va-ppc.h
  104. --- gcc-2.7.2.2/ginclude/va-ppc.h.orig  Mon Oct  9 09:35:19 1995
  105. +++ gcc-2.7.2.2/ginclude/va-ppc.h       Wed Apr  2 03:14:21 1997
  106. @@ -25,10 +25,13 @@
  107.  #if defined (_STDARG_H) || defined (_VARARGS_H)
  108.  
  109.  /* Register save area located below the frame pointer */
  110. +#ifndef __GNUC__va_regsave_t
  111. +#define __GNUC__va_regsave_t
  112.  typedef struct {
  113.    long   __gp_save[8];         /* save area for GP registers */
  114.    double __fp_save[8];         /* save area for FP registers */
  115.  } __va_regsave_t;
  116. +#endif
  117.  
  118.  /* Macros to access the register save area */
  119.  /* We cast to void * and then to TYPE * because this avoids
  120. diff -u gcc-2.7.2.2/configure.orig gcc-2.7.2.2/configure
  121. --- gcc-2.7.2.2/configure.orig  Thu Jan 30 14:20:15 1997
  122. +++ gcc-2.7.2.2/configure       Thu Apr  3 22:37:58 1997
  123. @@ -2204,6 +2204,27 @@
  124.                 fi
  125.                 fixincludes=Makefile.in
  126.                 ;;
  127. +       powerpc-*-linux*)               # PowerPC running Linux
  128. +               cpu_type=rs6000         # with ELF format
  129. +               xm_file=rs6000/xm-linux.h
  130. +               xmake_file=x-linux
  131. +               tm_file=rs6000/linux.h
  132. +               #broken_install=yes
  133. +               # GNU always uses ELF.
  134. +               elf=yes
  135. +               # GNU tools are the only tools.
  136. +               gnu_ld=yes
  137. +               gas=yes
  138. +               # On Linux, the headers are already okay.
  139. +               fixincludes=Makefile.in
  140. +               # Don't build libgcc1.c, because there is no non-GNU
  141. +               # compiler to build it with.  The GNU system C library will
  142. +               # include assembly versions of any needed functions.
  143. +               tmake_file=t-libc-ok
  144. +               # Linux/PPC still uses the Linux C Library based on glibc v1.
  145. +               # The start files come from that package.
  146. +               #extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
  147. +               ;;
  148.         rs6000-ibm-aix3.[01]*)
  149.                 tm_file=rs6000/aix31.h
  150.                 tmake_file=rs6000/t-rs6000
  151. diff -u gcc-2.7.2.2/README.LINUXPPC.orig gcc-2.7.2.2/README.LINUXPPC
  152. --- gcc-2.7.2.2/README.LINUXPPC.orig    Thu Apr  3 22:52:48 1997
  153. +++ gcc-2.7.2.2/README.LINUXPPC Thu Apr  3 23:57:31 1997
  154. @@ -0,0 +1,72 @@
  155. +README for Linux/PPC (ppc-unknown-linux)                -*-indented-text-*-
  156. +===========================================================================
  157. +03-Apr-97
  158. +
  159. +This file was written by Anthony C. Ard <mailto:aard@best.com>.  It is not
  160. +part of the standard gcc-2.7.2.2 distribution from the Free Software
  161. +Foundation <ftp://prep.ai.mit.edu/pub/gnu>.
  162. +
  163. +First of all, why did I do this?  For absolutely no reason other than that
  164. +I like to receive software in source form and compile it myself.  I'm a
  165. +geek, so sue me.
  166. +
  167. +
  168. +WARNING
  169. +
  170. +    Enter at your own risk.  I don't guarantee that anything will work.
  171. +    Obviously, my intention is that everything does work, but I'm not
  172. +    necessarily the smartest guy in the world...  You are totally on your
  173. +    own.  If you find something I've done stupidly, or have missed, I'd
  174. +    love to hear about it.
  175. +
  176. +INFORMATION
  177. +
  178. +    This is not setup to use shared libraries in any way shape or form.
  179. +    Shared libraries work for a lot of people, but they don't seem to like
  180. +    me.
  181. +
  182. +    I hope this works on:
  183. +
  184. +          Linux: PCI Power Macintosh, PPCP, BeBox.
  185. +        MkLinux: Power Macintosh
  186. +
  187. +    But I've only tested the build with the following (which is the only
  188. +    machine I've got other than an old Quadra 700):
  189. +
  190. +        Power Macintosh 8500/180, 180MHz 604e, 512K L2 cache, 64mb RAM.
  191. +        Linux-pmac (Linux kernel 2.1.24 from Paul Mackerras, dated 970325).
  192. +        No shared libraries support.
  193. +
  194. +    The default setup for gcc is to use signed chars and perform PPC604
  195. +    instruction scheduling.  You can change this very easily by modifying
  196. +    the file "gcc-2.7.2.2/config/rs6000/linux.h".  Change the definitions
  197. +    of DEFAULT_SIGNED_CHAR and TARGET_VERSION.  Look around in the files
  198. +    that linux.h includes to determine the supported definitions for those
  199. +    macros.
  200. +
  201. +
  202. +INSTALLATION
  203. +
  204. +    1. Get the file "gcc-2.7.2.2.tar.gz" from prep.ai.mit.edu and untar
  205. +       the sources.
  206. +
  207. +    2. Configure the package.
  208. +
  209. +       $ cd gcc-2.7.2.2
  210. +       $ ./configure --prefix=/usr ppc-unknown-linux
  211. +
  212. +    3. Follow the instuctions in the file "INSTALL".
  213. +
  214. +    4. Cleanup.
  215. +
  216. +       If your previous version of gcc was installed from a Redhat Package
  217. +       Manager file, then you might want to get rid of it with:
  218. +
  219. +       # rpm -e gcc.
  220. +
  221. +       You'll probably notice that the above command just deleted the files
  222. +       you installed!  Whoops!  But don't worry.  As long as you haven't
  223. +       touched any files in the source tree just reinstall and you're set.
  224. +
  225. +
  226. +-- END
  227. ==== CUT HERE =============================================================
  228.