home *** CD-ROM | disk | FTP | other *** search
- From: Steve.Bleazard@RoboBar.Co.UK
- Newsgroups: alt.sources,comp.unix.xenix
- Subject: GDB for Xenix 386 with GCC (part 1 of 4)
- Message-ID: <1990May8.111738.28570@robobar.co.uk>
- Date: 8 May 90 11:17:38 GMT
-
- This is part one of a coordinated set of 4 patches for Xenix GCC, GAS and GDB.
- GCC and GAS will need to be ALREADY PATCHED with ALL my Xenix 386 patches.
- Please collect all parts before you start hacking :-)
-
- No, I haven't made up the complete patch kit for sources.misc yet, but
- that's because I'd like to share gdb with you first :-)
-
- This is a preliminary release of a port to SCO Xenix of gdb support for
- gcc. The gdb work is partly based on Ron Kuris <ron@rdk386.UUCP>'s work,
- but I've severely mangled it.
-
- * It no longer attempts to be compatible with SCO's sdb.
- Trying to do that seems to be like hitting your head against
- a <name your favourite immovable object> because the debugging
- info format is both undocumented and CHANGES FROM RELEASE TO
- RELEASE of SCO's compiler, or so it would seem. So I gave
- up and used dbx debugging info instead, which is much
- better supported by the GNUfolk anyway. So you can't mix and
- match cc and gcc -g compiled programs for debugging, but ...
-
- * The GDB port is nearly a full one, structure types, all seem
- to work fine, but I haven't got a 387 (you could donate one,
- of course :-) so I can't test the floating point status support.
- I can't hack the emulator at the moment--it doesn't seem to use
- 387 format.
-
- * The gdb fast initial partial-symbol-table read is supported,
- as is incremental symbol loading.
-
- This is part 1 which patches GCC, say |patch -p -d /usr/local/src/gcc-1.37.1
- or whatever. BTW it fixes the bug reported by bob@dhw68k.cts.com where
- gcc didn't give the linker -l libraries in the right place.
-
- As usual, all bug reports concerning these hacks are gratefully received.
- Please send them to me, steve@robobar.co.uk or uunet!mcsun!ukc!robobar!steve.
-
- #! /bin/sh
- # This is a shell archive, meaning:
- # 1. Remove everything above the #! /bin/sh line.
- # 2. Save the resulting text in a file.
- # 3. Execute the file with /bin/sh (not csh) to create the files:
- # gcc-dbxpch.01
- # This archive created: Tue May 8 09:32:38 1990
- export PATH; PATH=/bin:$PATH
- echo shar: extracting "'gcc-dbxpch.01'" '(8164 characters)'
- if test -f 'gcc-dbxpch.01'
- then
- echo shar: will not over-write existing file "'gcc-dbxpch.01'"
- else
- sed 's/^X//' << \SHAR_EOF > 'gcc-dbxpch.01'
- X*** gcc.c.old Mon May 7 15:42:23 1990
- X--- gcc.c Mon May 7 17:13:16 1990
- X***************
- X*** 96,104 ****
- X %{|S:X} like %{S:X}, but if no S switch, substitute `-'.
- X %{|!S:X} like %{!S:X}, but if there is an S switch, substitute `-'.
- X- *ifdef M_XENIX
- X- %Z substitute the names of the libraries specified with -l, each
- X- name is prefixed with 'Slib'and has .a appended; the resultant
- X- name is searched for in the standard list of directories.
- X- *endif
- X
- X The conditional text X in a %{S:X} or %{!S:X} construct may contain
- X--- 96,99 ----
- X***************
- X*** 249,256 ****
- X
- X #ifdef M_XENIX
- X /* Microsoft C 5.1 (Beta) and earlier (and probaly latter!) do not
- X * grok very long strings. So here is the .c compilation spec
- X * string in a form it does grok! The only difference between this
- X! * and the standard one is 'as' is replaced with 'gas'.
- X */
- X static char c_string[] = {
- X--- 244,253 ----
- X
- X #ifdef M_XENIX
- X+ #ifndef __GNUC__
- X /* Microsoft C 5.1 (Beta) and earlier (and probaly latter!) do not
- X * grok very long strings. So here is the .c compilation spec
- X * string in a form it does grok! The only difference between this
- X! * and the standard one is 'as' is replaced with 'gas' and %{gg:...}
- X! * with %{g}.
- X */
- X static char c_string[] = {
- X***************
- X*** 325,341 ****
- X 0x20,0x25,0x7b,0x6a,0x7d,0x20,0x25,0x7b,0x4a,0x7d,
- X 0x20,0x25,0x7b,0x68,0x7d,0x20,0x25,0x7b,0x64,0x32,
- X! 0x7d,0x20,0x25,0x61,0x20,0x25,0x7b,0x67,0x67,0x3a,
- X! 0x2d,0x47,0x20,0x25,0x67,0x2e,0x73,0x79,0x6d,0x7d,
- X! 0x9,0x9,0x20,0x20,0x20,0x20,0x20,0x20,0x25,0x7b,
- X! 0x63,0x3a,0x25,0x7b,0x6f,0x2a,0x7d,0x25,0x7b,0x21,
- X! 0x6f,0x2a,0x3a,0x2d,0x6f,0x20,0x25,0x77,0x25,0x62,
- X! 0x2e,0x6f,0x7d,0x7d,0x25,0x7b,0x21,0x63,0x3a,0x2d,
- X! 0x6f,0x20,0x25,0x64,0x25,0x77,0x25,0x62,0x2e,0x6f,
- X! 0x7d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- X 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- X! 0x20,0x20,0x20,0x25,0x7b,0x21,0x70,0x69,0x70,0x65,
- X! 0x3a,0x25,0x67,0x2e,0x73,0x7d,0xa,0x20,0x7d,0x7d,
- X! 0x7d,0x0
- X };
- X #endif /* M_XENIX */
- X
- X--- 322,338 ----
- X 0x20,0x25,0x7b,0x6a,0x7d,0x20,0x25,0x7b,0x4a,0x7d,
- X 0x20,0x25,0x7b,0x68,0x7d,0x20,0x25,0x7b,0x64,0x32,
- X! 0x7d,0x20,0x25,0x61,0x20,0x25,0x7b,0x67,0x7d,0x9,
- X! 0x9,0x20,0x20,0x20,0x20,0x20,0x20,0x25,0x7b,0x63,
- X! 0x3a,0x25,0x7b,0x6f,0x2a,0x7d,0x25,0x7b,0x21,0x6f,
- X! 0x2a,0x3a,0x2d,0x6f,0x20,0x25,0x77,0x25,0x62,0x2e,
- X! 0x6f,0x7d,0x7d,0x25,0x7b,0x21,0x63,0x3a,0x2d,0x6f,
- X! 0x20,0x25,0x64,0x25,0x77,0x25,0x62,0x2e,0x6f,0x7d,
- X 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- X! 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- X! 0x20,0x20,0x25,0x7b,0x21,0x70,0x69,0x70,0x65,0x3a,
- X! 0x25,0x67,0x2e,0x73,0x7d,0xa,0x20,0x7d,0x7d,0x7d,
- X! 0x0
- X };
- X+ #endif /* __GNUC__ */
- X #endif /* M_XENIX */
- X
- X***************
- X*** 359,363 ****
- X--- 356,377 ----
- X %{!pipe:%g.s}\n }}}"
- X #else /* M_XENIX */
- X+ #ifdef __GNUC__
- X+ "cpp %{nostdinc} %{C} %{v} %{D*} %{U*} %{I*} %{M*} %{i*} %{trigraphs} -undef \
- X+ -D__GNUC__ %{ansi:-trigraphs -$ -D__STRICT_ANSI__} %{!ansi:%p} %P\
- X+ %c %{O:-D__OPTIMIZE__} %{traditional} %{pedantic}\
- X+ %{Wcomment*} %{Wtrigraphs} %{Wall} %C\
- X+ %i %{!M*:%{!E:%{!pipe:%g.cpp}}}%{E:%{o*}}%{M*:%{o*}} |\n\
- X+ %{!M*:%{!E:cc1 %{!pipe:%g.cpp} %1 \
- X+ %{!Q:-quiet} -dumpbase %i %{Y*} %{d*} %{m*} %{f*} %{a}\
- X+ %{g} %{O} %{W*} %{w} %{pedantic} %{ansi} %{traditional}\
- X+ %{v:-version} %{gg:-symout %g.sym} %{pg:-p} %{p}\
- X+ %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
- X+ %{S:%{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
- X+ %{!S:gas %{R} %{j} %{J} %{h} %{d2} %a %{g}\
- X+ %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o}\
- X+ %{!pipe:%g.s}\n }}}"
- X+ #else /* __GNUC__ */
- X c_string
- X+ #endif /* __GNUC__ */
- X #endif /* not M_XENIX */
- X },
- X***************
- X*** 392,396 ****
- X %{v:-version} %{gg:-symout %g.sym} %{pg:-p} %{p}\
- X %{S:%{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
- X! %{!S:gas %{R} %{j} %{J} %{h} %{d2} %a %{gg:-G %g.sym}\
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %{!pipe:%g.s}\n }"},
- X #endif /* not M_XENIX */
- X--- 406,410 ----
- X %{v:-version} %{gg:-symout %g.sym} %{pg:-p} %{p}\
- X %{S:%{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
- X! %{!S:gas %{R} %{j} %{J} %{h} %{d2} %a %{g}\
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %{!pipe:%g.s}\n }"},
- X #endif /* not M_XENIX */
- X***************
- X*** 400,404 ****
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i\n }"},
- X #else /* M_XENIX */
- X! "%{!S:gas %{R} %{j} %{J} %{h} %{d2} %a \
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i\n }"},
- X #endif /* not M_XENIX */
- X--- 414,418 ----
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i\n }"},
- X #else /* M_XENIX */
- X! "%{!S:gas %{R} %{j} %{J} %{h} %{d2} %a %{g}\
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o} %i\n }"},
- X #endif /* not M_XENIX */
- X***************
- X*** 419,423 ****
- X %{Wcomment*} %{Wtrigraphs} %{Wall} %C\
- X %i %{!M*:%{!E:%{!pipe:%g.s}}}%{E:%{o*}}%{M*:%{o*}} |\n\
- X! %{!M*:%{!E:%{!S:gas %{R} %{j} %{J} %{h} %{d2} %a \
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o}\
- X %{!pipe:%g.s}\n }}}"},
- X--- 433,437 ----
- X %{Wcomment*} %{Wtrigraphs} %{Wall} %C\
- X %i %{!M*:%{!E:%{!pipe:%g.s}}}%{E:%{o*}}%{M*:%{o*}} |\n\
- X! %{!M*:%{!E:%{!S:gas %{R} %{j} %{J} %{h} %{d2} %a %{g}\
- X %{c:%{o*}%{!o*:-o %w%b.o}}%{!c:-o %d%w%b.o}\
- X %{!pipe:%g.s}\n }}}"},
- X***************
- X*** 431,435 ****
- X char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l %{g:-g} \
- X %{A} %{F} %{r} %{s} %{u*} \
- X! %{!nostdlib:%S} %{!o:-o a.out} %o %Z %{!nostdlib:gnulib%s %L }\n }}}}";
- X #else /* not M_XENIX */
- X char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
- X--- 445,449 ----
- X char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l %{g:-g} \
- X %{A} %{F} %{r} %{s} %{u*} \
- X! %{!nostdlib:%S} %{!o:-o a.out} %o %{!nostdlib:gnulib%s %L }\n }}}}";
- X #else /* not M_XENIX */
- X char *link_spec = "%{!c:%{!M*:%{!E:%{!S:ld %{o*} %l\
- X***************
- X*** 1071,1084 ****
- X char **outfiles;
- X
- X- #ifdef M_XENIX
- X-
- X- /* A vector of library files (from -llibrary) */
- X-
- X- char **libraries;
- X-
- X- int n_libraries;
- X-
- X- #endif /* M_XENIX */
- X-
- X /* Create the vector `switches' and its contents.
- X Store its length in `n_switches'. */
- X--- 1085,1088 ----
- X***************
- X*** 1093,1099 ****
- X n_switches = 0;
- X n_infiles = 0;
- X- #ifdef M_XENIX
- X- n_libraries = 0;
- X- #endif /* M_XENIX */
- X
- X env_exec_prefix = getenv ("GCC_EXEC_PREFIX");
- X--- 1097,1100 ----
- X***************
- X*** 1105,1113 ****
- X for (i = 1; i < argc; i++)
- X {
- X- #ifdef M_XENIX
- X- if (argv[i][0] == '-' && argv[i][1] == 'l')
- X- n_libraries++;
- X- else
- X- #endif /* M_XENIX */
- X if (argv[i][0] == '-' && argv[i][1] != 'l')
- X {
- X--- 1106,1109 ----
- X***************
- X*** 1147,1154 ****
- X switches = ((struct switchstr *)
- X xmalloc ((n_switches + 1) * sizeof (struct switchstr)));
- X- #ifdef M_XENIX
- X- libraries = (char **) xmalloc ((n_libraries + 1) * sizeof (char *));
- X- n_libraries = 0;
- X- #endif /* M_XENIX */
- X infiles = (char **) xmalloc ((n_infiles + 1) * sizeof (char *));
- X n_switches = 0;
- X--- 1143,1146 ----
- X***************
- X*** 1161,1169 ****
- X for (i = 1; i < argc; i++)
- X {
- X- #ifdef M_XENIX
- X- if (argv[i][0] == '-' && argv[i][1] == 'l')
- X- libraries[n_libraries++] = &argv[i][2];
- X- else
- X- #endif /* M_XENIX */
- X if (argv[i][0] == '-' && argv[i][1] != 'l')
- X {
- X--- 1153,1156 ----
- X***************
- X*** 1183,1186 ****
- X--- 1170,1178 ----
- X }
- X else
- X+ #ifdef M_XENIX
- X+ if (argv[i][0] == '-' && argv[i][1] == 'l')
- X+ infiles[n_infiles++] = find_lib(&argv[i][2]);
- X+ else
- X+ #endif /* M_XENIX */
- X infiles[n_infiles++] = argv[i];
- X }
- X***************
- X*** 1432,1445 ****
- X obstack_1grow (&obstack, '%');
- X break;
- X-
- X- #ifdef M_XENIX
- X- case 'Z':
- X- {
- X- register int f;
- X- for (f = 0; f < n_libraries; f++)
- X- store_arg (find_lib(libraries[f]), 0, 0);
- X- }
- X- break;
- X- #endif /* M_XENIX */
- X
- X
- X--- 1424,1427 ----
- SHAR_EOF
- if test 8164 -ne "`wc -c < 'gcc-dbxpch.01'`"
- then
- echo shar: error transmitting "'gcc-dbxpch.01'" '(should have been 8164 characters)'
- fi
- fi # end of overwriting check
- # End of shell archive
- exit 0
-