jkp@SAUNA.HUT.FI (Jyrki Kuoppala) (07/14/89)
There's some problems compiling GDB 3.2 on USG-based systems. This diff gets GDB to compile and run on SVR2 systems with an add-on ndir library. The problems are: - some systems need an extra libndir.a library and include ndir.h - the special case for Altos in a.out.encap.h is actually not needed; in the beginning I used it to get over a kernel bug, but it doesn't quite do it so it's better removed - coffread.c doesn't know about m68k magic - in core.c <sys/page.h> and <sys/net.h> are needed at least for Altos - I added definition of alloca to use builtin alloca in defs.h, so you get along without an alloca in libc.a - in readline.c, getpwuid() is struct passwd * instead of struct pwd * - in readline.c, rl_prep_terminal and rl_reprep_terminal are erraneously declared static - in readline.c, MAX is used instead of max; MAX isn't defined on all machines (happens to be on most Bsd machines like sun & vax, so this has been unnoticed) That's all folks, keep up the good work ! //Jyrki Here's the diff: diff -cr dist-gdb/Makefile dist-gdb.altos/Makefile *** dist-gdb/Makefile Tue Jul 11 07:07:03 1989 --- dist-gdb.altos/Makefile Thu Jul 13 17:11:38 1989 *************** *** 93,101 **** #MUNCH_DEFINE = MUNCH_DEFINE = ${SYSV_DEFINE} # Flags that describe where you can find the termcap library. ! # You may need to make other arrangements for USG. TERMCAP = -ltermcap # for BSD CLIBS = ${ADD_FILES} ${TERMCAP} --- 95,107 ---- #MUNCH_DEFINE = MUNCH_DEFINE = ${SYSV_DEFINE} + # + # define this if you use <ndir.h> + NDIR_DEFINE = -DNDIR + # Flags that describe where you can find the termcap library. ! # You may need to make other arrangements for USG (ie. -ndir for dir library) TERMCAP = -ltermcap # for BSD CLIBS = ${ADD_FILES} ${TERMCAP} *************** *** 245,251 **** # ${CC} -c ${CFLAGS} ${SYSV_DEFINE} history.c readline/libreadline.a : force_update ! cd readline ; ${MAKE} "SYSV_DEFINE=${SYSV_DEFINE}" libreadline.a force_update : --- 251,257 ---- # ${CC} -c ${CFLAGS} ${SYSV_DEFINE} history.c readline/libreadline.a : force_update ! cd readline ; ${MAKE} "SYSV_DEFINE=${SYSV_DEFINE}" "NDIR_DEFINE=${NDIR_DEFINE}" libreadline.a force_update : diff -cr dist-gdb/a.out.encap.h dist-gdb.altos/a.out.encap.h *** dist-gdb/a.out.encap.h Thu Jun 1 00:55:21 1989 --- dist-gdb.altos/a.out.encap.h Thu Jul 13 13:39:07 1989 *************** *** 122,144 **** #define N_TXTADDR(x) \ ((N_FLAGS(x) & N_FLAGS_COFF_ENCAPSULATE) ? \ sizeof (struct coffheader) + sizeof (struct exec) : 0) - - #ifdef ALTOS - #undef SEGMENT_SIZE - #undef DEFAULT_MAGIC - #define DEFAULT_MAGIC NMAGIC - #define SEGMENT_SIZE 0x40000 - #define N_DATADDR(x) \ - ((N_FLAGS(x) & N_FLAGS_COFF_ENCAPSULATE) ? \ - (((N_TXTADDR(x)+(x).a_text+0x2000) / SEGMENT_SIZE + 1) * SEGMENT_SIZE + \ - (N_TXTADDR(x)+(x).a_text+0x2000) % 0x2000) : \ - (N_TXTADDR(x)+(x).a_text)) - #else /* not ALTOS */ - #define SEGMENT_SIZE 0x400000 #define N_DATADDR(x) \ ((N_FLAGS(x) & N_FLAGS_COFF_ENCAPSULATE) ? \ (SEGMENT_SIZE + ((N_TXTADDR(x)+(x).a_text-1) & ~(SEGMENT_SIZE-1))) : \ (N_TXTADDR(x)+(x).a_text)) - - #endif /* not ALTOS */ --- 124,132 ---- #define N_TXTADDR(x) \ ((N_FLAGS(x) & N_FLAGS_COFF_ENCAPSULATE) ? \ sizeof (struct coffheader) + sizeof (struct exec) : 0) #define SEGMENT_SIZE 0x400000 + #define N_DATADDR(x) \ ((N_FLAGS(x) & N_FLAGS_COFF_ENCAPSULATE) ? \ (SEGMENT_SIZE + ((N_TXTADDR(x)+(x).a_text-1) & ~(SEGMENT_SIZE-1))) : \ (N_TXTADDR(x)+(x).a_text)) diff -cr dist-gdb/coffread.c dist-gdb.altos/coffread.c *** dist-gdb/coffread.c Wed Jul 5 22:45:00 1989 --- dist-gdb.altos/coffread.c Thu Jul 13 13:40:01 1989 *************** *** 1081,1086 **** --- 1081,1089 ---- switch (file_hdr->f_magic) { + #ifdef MC68MAGIC + case MC68MAGIC: + #endif #ifdef NS32GMAGIC case NS32GMAGIC: case NS32SMAGIC: diff -cr dist-gdb/core.c dist-gdb.altos/core.c *** dist-gdb/core.c Wed Jul 5 22:45:09 1989 --- dist-gdb.altos/core.c Thu Jul 13 13:41:10 1989 *************** *** 44,49 **** --- 44,55 ---- #include <sys/file.h> #include <sys/stat.h> + #ifdef USG + #include <sys/page.h> + #ifdef ALTOS + #include <sys/net.h> + #endif + #endif #ifdef UMAX_CORE #include <sys/ptrace.h> #else diff -cr dist-gdb/defs.h dist-gdb.altos/defs.h *** dist-gdb/defs.h Mon Jul 10 03:26:33 1989 --- dist-gdb.altos/defs.h Thu Jul 13 13:41:59 1989 *************** *** 25,31 **** --- 25,39 ---- extern char *savestring (); extern char *concat (); extern char *xmalloc (), *xrealloc (); + #ifdef __GNUC__ + #define alloca __builtin_alloca + #else + #ifdef sparc + #include <alloca.h> + #else extern char *alloca (); + #endif + #endif extern int parse_escape (); extern char *reg_names[]; *************** *** 88,95 **** /* String containing the current directory (what getwd would return). */ char *current_directory; - - #ifdef sparc - #include <alloca.h> - #endif - --- 96,98 ---- diff -cr dist-gdb/readline/Makefile dist-gdb.altos/readline/Makefile *** dist-gdb/readline/Makefile Sun Jul 9 02:03:50 1989 --- dist-gdb.altos/readline/Makefile Thu Jul 13 16:51:04 1989 *************** *** 20,26 **** # GCC_SUNOS4_FLAG = -Bstatic DEBUG_FLAGS = -g # LDFLAGS = $(DEBUG_FLAGS) ! CFLAGS = $(DEBUG_FLAGS) # If you don't have Gcc use cc. # CC = cc --- 20,26 ---- # GCC_SUNOS4_FLAG = -Bstatic DEBUG_FLAGS = -g # LDFLAGS = $(DEBUG_FLAGS) ! CFLAGS = $(DEBUG_FLAGS) $(SYSV_DEFINE) $(NDIR_DEFINE) # If you don't have Gcc use cc. # CC = cc diff -cr dist-gdb/readline/history.c dist-gdb.altos/readline/history.c *** dist-gdb/readline/history.c Sat Jul 8 00:31:15 1989 --- dist-gdb.altos/readline/history.c Thu Jul 13 13:42:39 1989 *************** *** 35,40 **** --- 35,42 ---- #else #if defined (sparc) && defined (sun) #include <alloca.h> + #else + extern char *alloca (); #endif #endif diff -cr dist-gdb/readline/readline.c dist-gdb.altos/readline/readline.c *** dist-gdb/readline/readline.c Sat Jul 8 00:45:35 1989 --- dist-gdb.altos/readline/readline.c Thu Jul 13 16:58:14 1989 *************** *** 42,47 **** --- 42,49 ---- #else #if defined (sparc) && defined (sun) #include <alloca.h> + #else + extern char *alloca (); #endif #endif *************** *** 59,65 **** #include <pwd.h> #ifdef SYSV ! struct pwd *getpwuid (), *getpwent (); #endif #define HACK_TERMCAP_MOTION --- 61,67 ---- #include <pwd.h> #ifdef SYSV ! struct passwd *getpwuid (), *getpwent (); #endif #define HACK_TERMCAP_MOTION *************** *** 67,73 **** #ifndef SYSV #include <sys/dir.h> #else /* SYSV */ ! #ifdef HPUX #include <ndir.h> #else #include <dirent.h> --- 69,75 ---- #ifndef SYSV #include <sys/dir.h> #else /* SYSV */ ! #if defined(HPUX) || defined(NDIR) #include <ndir.h> #else #include <dirent.h> *************** *** 1450,1456 **** #if defined(SYSV) || defined(HPUX) static struct termio otio; - static rl_prep_terminal () { int tty = open ("/dev/tty", O_RDONLY); --- 1452,1457 ---- *************** *** 1469,1475 **** close (tty); } - static rl_deprep_terminal () { int tty = open ("/dev/tty", O_RDONLY); --- 1470,1475 ---- diff -cr dist-gdb/source.c dist-gdb.altos/source.c *** dist-gdb/source.c Tue Jul 11 05:26:11 1989 --- dist-gdb.altos/source.c Thu Jul 13 16:58:33 1989 *************** *** 87,93 **** sal = sals.sals[0]; free (sals.sals); current_source_symtab = sal.symtab; ! current_source_line = MAX (sal.line - 9, 1); return; } --- 87,93 ---- sal = sals.sals[0]; free (sals.sals); current_source_symtab = sal.symtab; ! current_source_line = max (sal.line - 9, 1); return; }