+++ /dev/null
-The following patches are needed in order to build GNAT with EGCS.
-
-These patches were tested with egcs-980308 and gnat-3.10p on a mips-sgi-irix6.3
-system. The gnat build succeeded as per the instructions in the gnat
-README.BUILD file for building one library, except that CFLAGS="-O -g" and
-GNATLIBCFLAGS="-O -g" were substituted for the recommended "-O2" so that the
-build could be debugged. There was no attempt to run the resulting build
-against any testsuite or validation suite.
-
---
-
-Developers Notes:
-
-Every use of sizetype in the Ada front end should be checked to see if perhaps
-it should be using bitsizetype instead. The change to maybe_pad_type is just
-a hack to work around this problem, and may not be desirable in the long term.
-
-There are many places in the Ada front end where it calls operand_equal_p to
-see if two type sizes are the same. operand_equal_p fails if the two
-arguments have different TYPE_MODEs. sizetype and bitsizetype can have
-different TYPE_MODEs. Thus this code can fail if one type size is based
-on sizetype, and the other is based on bitsizetype. The change to
-maybe_pad_type fixes one very critical place where this happens. There may
-be others.
-
---
-
-Mon Mar 16 11:00:25 1998 Jim Wilson <wilson@cygnus.com>
-
- * a-gtran3.c (maybe_pad_type): Convert both size and orig_size to
- sizetype if they have differing modes.
- * a-misc.c (gnat_tree_code_type): Change from string to char array.
- (init_lex): Delete realloc calls for tree_code_* globals. Adjust
- bcopy call for gnat_tree_code_type change.
- * a-tree.def: Adjust for tree_code_* type changes.
-
- * a-misc.c (init_lex): Rename to init_parse.
-
-diff -c ada/a-gtran3.c /home/brolley/comp/egcs/tmp/ada/a-gtran3.c
-*** ada/a-gtran3.c Mon Mar 30 16:29:04 1998
---- /home/brolley/comp/egcs/tmp/ada/a-gtran3.c Thu Apr 2 17:16:15 1998
-***************
-*** 3329,3334 ****
---- 3329,3341 ----
- isn't changing. Likewise, clear the alignment if it isn't being
- changed. Then return if we aren't doing anything. */
-
-+ if (size != 0
-+ && TYPE_MODE (TREE_TYPE (size)) != TYPE_MODE (TREE_TYPE (orig_size)))
-+ {
-+ size = convert (sizetype, size);
-+ orig_size = convert (sizetype, orig_size);
-+ }
-+
- if (size != 0
- && (operand_equal_p (size, orig_size, 0)
- || (TREE_CODE (orig_size) == INTEGER_CST
-diff -c ada/a-misc.c /home/brolley/comp/egcs/tmp/ada/a-misc.c
-*** ada/a-misc.c Mon Mar 30 16:29:05 1998
---- /home/brolley/comp/egcs/tmp/ada/a-misc.c Thu Apr 2 17:36:19 1998
-***************
-*** 70,77 ****
-
- #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
-
-! char *gnat_tree_code_type[] = {
-! "x",
- #include "a-tree.def"
- };
- #undef DEFTREECODE
---- 70,77 ----
-
- #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,
-
-! char gnat_tree_code_type[] = {
-! 'x',
- #include "a-tree.def"
- };
- #undef DEFTREECODE
-***************
-*** 254,259 ****
---- 254,268 ----
- print_lang_statistics ()
- {}
-
-+ void
-+ lang_print_xnode (file, node, indent)
-+ FILE *file;
-+ tree node;
-+ int indent;
-+ {
-+ }
-+
-+
- /* integrate_decl_tree calls this function, but since we don't use the
- DECL_LANG_SPECIFIC field, this is a no-op. */
-
-***************
-*** 603,622 ****
- it, but it's where g++ does it. */
-
- void
-! init_lex ()
- {
- lang_expand_expr = gnat_expand_expr;
-
-- tree_code_type
-- = (char **) realloc (tree_code_type,
-- sizeof (char *) * LAST_GNAT_TREE_CODE);
-- tree_code_length
-- = (int *) realloc (tree_code_length,
-- sizeof (int) * LAST_GNAT_TREE_CODE);
-- tree_code_name
-- = (char **) realloc (tree_code_name,
-- sizeof (char *) * LAST_GNAT_TREE_CODE);
--
- bcopy ((char *) gnat_tree_code_type,
- (char *) (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE),
- ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
---- 612,622 ----
- it, but it's where g++ does it. */
-
- void
-! init_parse (filename)
-! char *filename;
- {
- lang_expand_expr = gnat_expand_expr;
-
- bcopy ((char *) gnat_tree_code_type,
- (char *) (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE),
- ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
-***************
-*** 629,636 ****
-
- bcopy ((char *) gnat_tree_code_name,
- (char *) (tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE),
-! ((LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE)
-! * sizeof (char *)));
- }
-
- /* Sets some debug flags for the parsed. It does nothing here. */
---- 629,640 ----
-
- bcopy ((char *) gnat_tree_code_name,
- (char *) (tree_code_name + (int) LAST_AND_UNUSED_TREE_CODE),
-! LAST_GNAT_TREE_CODE - (int) LAST_AND_UNUSED_TREE_CODE);
-! }
-!
-! void
-! finish_parse ()
-! {
- }
-
- /* Sets some debug flags for the parsed. It does nothing here. */
-diff -c ada/a-tree.def /home/brolley/comp/egcs/tmp/ada/a-tree.def
-*** ada/a-tree.def Mon Mar 30 16:29:09 1998
---- /home/brolley/comp/egcs/tmp/ada/a-tree.def Thu Apr 2 17:20:38 1998
-***************
-*** 31,69 ****
- The only field used if TREE_COMPLEXITY, which contains the GNAT node
- number. */
-
-! DEFTREECODE (TRANSFORM_EXPR, "transform_expr", "e", 0)
-
- /* Perform an unchecked conversion between the input and the output.
- if TREE_ADDRESSABLE is set, it means this is in an LHS; in that case,
- we can only use techniques, such as pointer punning, that leave the
- expression a "name". */
-
-! DEFTREECODE (UNCHECKED_CONVERT_EXPR, "unchecked_convert_expr", "1", 1)
-
- /* A type that is an unconstrained array itself. This node is never passed
- to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE
- is the type of a record containing the template and data. */
-
-! DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", "t", 0)
-
- /* A reference to an unconstrained array. This node only exists as an
- intermediate node during the translation of a GNAT tree to a GCC tree;
- it is never passed to GCC. The only field used is operand 0, which
- is the fat pointer object. */
-
-! DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref", "r", 1)
-
- /* An expression that returns an RTL suitable for its type. Operand 0
- is an expression to be evaluated for side effects only. */
-
-! DEFTREECODE (NULL_EXPR, "null_expr", "e", 1)
-
- /* An expression that emits a USE for its single operand. */
-
-! DEFTREECODE (USE_EXPR, "use_expr", "e", 1)
-
- /* An expression that is treated as a conversion while generating code, but is
- used to prevent infinite recursion when conversions of biased types are
- involved. */
-
-! DEFTREECODE (GNAT_NOP_EXPR, "gnat_nop_expr", "1", 1)
---- 31,69 ----
- The only field used if TREE_COMPLEXITY, which contains the GNAT node
- number. */
-
-! DEFTREECODE (TRANSFORM_EXPR, "transform_expr", 'e', 0)
-
- /* Perform an unchecked conversion between the input and the output.
- if TREE_ADDRESSABLE is set, it means this is in an LHS; in that case,
- we can only use techniques, such as pointer punning, that leave the
- expression a "name". */
-
-! DEFTREECODE (UNCHECKED_CONVERT_EXPR, "unchecked_convert_expr", '1', 1)
-
- /* A type that is an unconstrained array itself. This node is never passed
- to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE
- is the type of a record containing the template and data. */
-
-! DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "unconstrained_array_type", 't', 0)
-
- /* A reference to an unconstrained array. This node only exists as an
- intermediate node during the translation of a GNAT tree to a GCC tree;
- it is never passed to GCC. The only field used is operand 0, which
- is the fat pointer object. */
-
-! DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref", 'r', 1)
-
- /* An expression that returns an RTL suitable for its type. Operand 0
- is an expression to be evaluated for side effects only. */
-
-! DEFTREECODE (NULL_EXPR, "null_expr", 'e', 1)
-
- /* An expression that emits a USE for its single operand. */
-
-! DEFTREECODE (USE_EXPR, "use_expr", 'e', 1)
-
- /* An expression that is treated as a conversion while generating code, but is
- used to prevent infinite recursion when conversions of biased types are
- involved. */
-
-! DEFTREECODE (GNAT_NOP_EXPR, "gnat_nop_expr", '1', 1)
-
-
-This patch from Fred Fish to GNAT may make building simpler. We haven't
-tested it.
-
-> I put a very short blurb in the faq. GNAT is complicated enough that
-> we should probably write a whole page on how to build/install it.
-
-You may want to use some or all of these patches:
-
- * Make-lang.in (gnattools): Depends upon GCC_PARTS.
- (ada.start.encap): Depends upon gnattools.
- (ada.rest.encap): Depends upon gnatlib.
- * Makefile.in (../stamp-gnatlib1): Since we are still in the rts
- subdir when the rule runs, we need to touch ../../stamp-gnatlib1.
- (../stamp-gnatlib1): Don't unconditionally remove the rts directory,
- create it if one does not exist.
- (gnatlib): Remove superflous leading blank char at *-*-pe line.
- * a-init.c: Define NULL if not yet defined.
-
-Index: Make-lang.in
-===================================================================
-RCS file: /cvsroot/gg/egcs/gcc/ada/Make-lang.in,v
-retrieving revision 1.1.1.1
-retrieving revision 1.3
-diff -c -r1.1.1.1 -r1.3
-*** Make-lang.in 1997/10/17 06:19:09 1.1.1.1
---- Make-lang.in 1998/03/17 14:26:14 1.3
-***************
-*** 100,106 ****
-
- # use host-gcc
- # getopt*.o has to be built before CC=../xgcc
-! gnattools: getopt.o getopt1.o force
- $(MAKE) $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS)\
- CC="../xgcc -B../" GNATBIND="../gnatbind" \
- gnatf gnatlink gnatkr gnatmake gnatcmd gnatprep \
---- 100,107 ----
-
- # use host-gcc
- # getopt*.o has to be built before CC=../xgcc
-! # GCC_PARTS has to be built before CC=../xgcc
-! gnattools: getopt.o getopt1.o $(GCC_PARTS) force
- $(MAKE) $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS)\
- CC="../xgcc -B../" GNATBIND="../gnatbind" \
- gnatf gnatlink gnatkr gnatmake gnatcmd gnatprep \
-***************
-*** 163,170 ****
- -if [ -f gnatls$(exeext) ] ; then\
- mv gnatls$(exeext) gnatls-cross$(exeext); fi
-
-! ada.start.encap:
-! ada.rest.encap:
- ada.info:
- ada.dvi:
- \f
---- 164,171 ----
- -if [ -f gnatls$(exeext) ] ; then\
- mv gnatls$(exeext) gnatls-cross$(exeext); fi
-
-! ada.start.encap: gnattools
-! ada.rest.encap: gnatlib
- ada.info:
- ada.dvi:
- \f
-Index: Makefile.in
-===================================================================
-RCS file: /cvsroot/gg/egcs/gcc/ada/Makefile.in,v
-retrieving revision 1.1.1.1
-retrieving revision 1.5
-diff -c -r1.1.1.1 -r1.5
-*** Makefile.in 1997/10/17 06:19:09 1.1.1.1
---- Makefile.in 1998/02/19 14:16:34 1.5
-***************
-*** 798,806 ****
- # 3. copy 3xyyy.ad[sb] -->-- i-yyy.ad[sb]
-
- ../stamp-gnatlib1: Makefile ../stamp-gnatlib2
-! rm -rf rts
-! mkdir rts
-! chmod u+w rts
- (\
- case $(target) in \
- sparc-sun-sunos4*) letter=u ;;\
---- 800,806 ----
- # 3. copy 3xyyy.ad[sb] -->-- i-yyy.ad[sb]
-
- ../stamp-gnatlib1: Makefile ../stamp-gnatlib2
-! if [ -d rts ]; then true; else mkdir rts; chmod u+w rts; fi
- (\
- case $(target) in \
- sparc-sun-sunos4*) letter=u ;;\
-***************
-*** 888,894 ****
- done;; \
- esac ; \
- rm -f ../stamp-gnatlib ; \
-! touch ../stamp-gnatlib1)
-
- gnatlib-common: ../stamp-gnatlib1
- (subdir=`cd $(srcdir); pwd`; \
---- 888,894 ----
- done;; \
- esac ; \
- rm -f ../stamp-gnatlib ; \
-! touch ../../stamp-gnatlib1)
-
- gnatlib-common: ../stamp-gnatlib1
- (subdir=`cd $(srcdir); pwd`; \
-***************
-*** 923,929 ****
- mips-sni-* |\
- *-*-cygwin32* |\
- *-*-mingw32* |\
-! *-*-pe |\
- *) \
- \
- $(MAKE) CC="../../xgcc -B../../" \
---- 923,929 ----
- mips-sni-* |\
- *-*-cygwin32* |\
- *-*-mingw32* |\
-! *-*-pe |\
- *) \
- \
- $(MAKE) CC="../../xgcc -B../../" \
-Index: a-init.c
-===================================================================
-RCS file: /cvsroot/gg/egcs/gcc/ada/a-init.c,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -c -r1.1.1.1 -r1.2
-*** a-init.c 1997/10/17 06:19:10 1.1.1.1
---- a-init.c 1998/01/04 23:11:42 1.2
-***************
-*** 516,521 ****
---- 516,525 ----
- __gnat_raise (exception);
- }
-
-+ #ifndef NULL
-+ #define NULL 0
-+ #endif
-+
- static void
- __gnat_install_handler ()
- {
-
-Wed Jun 24 15:06:09 1998 Dave Brolley <brolley@cygnus.com>
-
- * a-misc.c (lang_decode_option): New interface.
- * a-misc.h (lang_decode_option): New interface.
-
-*** /home/brolley/tmp/a-misc.c Wed Jun 24 15:01:22 1998
---- ada/a-misc.c Wed Jun 24 15:02:42 1998
-*************** init_gnat_args ()
-*** 162,170 ****
- it returns 0. */
-
- int
-! lang_decode_option (p)
-! char *p;
- {
- extern int save_argc;
- extern char **save_argv;
-
---- 162,172 ----
- it returns 0. */
-
- int
-! lang_decode_option (argc, argv)
-! int argc;
-! char **argv;
- {
-+ char *p = argv[0];
- extern int save_argc;
- extern char **save_argv;
-
-*** /home/brolley/tmp/a-misc.h Wed Jun 24 15:01:22 1998
---- ada/a-misc.h Wed Jun 24 15:03:20 1998
-*************** enum gnat_tree_code {
-*** 63,69 ****
- option decoding phase of GCC calls this routine on the flags that it cannot
- decode. This routine returns 1 if it is successful, otherwise it
- returns 0. */
-! extern int lang_decode_option PROTO((char *));
-
- /* Perform all the initialization steps that are language-specific. */
- extern void lang_init PROTO((void));
---- 63,69 ----
- option decoding phase of GCC calls this routine on the flags that it cannot
- decode. This routine returns 1 if it is successful, otherwise it
- returns 0. */
-! extern int lang_decode_option PROTO((int, char **));
-
- /* Perform all the initialization steps that are language-specific. */
- extern void lang_init PROTO((void));