aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog17
-rw-r--r--gas/as.h16
-rw-r--r--gas/configure.in24
-rw-r--r--gas/subsegs.h24
4 files changed, 69 insertions, 12 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 88a16fa..f29cb1b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,20 @@
+Mon Nov 25 17:26:22 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * as.c: (perform_an_assembly_pass): moved declaration of i to
+ avoid a syntax error. Now always create the three default
+ sections when in MANY_SEGMENTS mode.
+ * as.h: New improved way of specifying MANY_SEGMENTS
+ * configure.in: hds object format is now coff-bfd
+ * subsegs.h: add line numbers and section stuff to the
+ segment_info structure. (But go back later and fix.. this is
+ COFF specific)
+
+
+Thu Oct 24 17:25:59 1991 Steve Chamberlain (steve at rtl.cygnus.com)
+
+ * config/obj-coff.c (obj_coff_dim): Allows newline to end a
+ .dim statement.
+
Mon Oct 21 09:25:33 1991 Steve Chamberlain (steve at rtl.cygnus.com)
* configure.in: added ebmon entry.
diff --git a/gas/as.h b/gas/as.h
index 84c963a..fd1946f 100644
--- a/gas/as.h
+++ b/gas/as.h
@@ -93,7 +93,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef DEBUG
#undef NDEBUG
+#ifndef know
#define know(p) assert(p) /* Verify our assumptions! */
+#endif /* not yet defined */
#else
#define know(p) /* know() checks are no-op.ed */
#endif
@@ -140,22 +142,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
* X_add_symbol != X_sub_symbol (then we just cancel them, => SEG_ABSOLUTE).
*/
+
#ifdef MANY_SEGMENTS
+#define N_SEGMENTS 10
#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E9)
+#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9
#else
+#define N_SEGMENTS 3
#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)
+#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS
#endif
typedef enum _segT {
SEG_ABSOLUTE = 0,
-#ifdef MANY_SEGMENTS
- /* For the moment, we allow only 10 extra segments to be specified by the user */
- SEG_E0, SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,
-#else
- SEG_TEXT,
- SEG_DATA,
- SEG_BSS,
-#endif
+ SEG_LIST,
SEG_UNKNOWN,
SEG_ABSENT, /* Mythical Segment (absent): NO expression seen. */
SEG_PASS1, /* Mythical Segment: Need another pass. */
diff --git a/gas/configure.in b/gas/configure.in
index 854352e..f258350 100644
--- a/gas/configure.in
+++ b/gas/configure.in
@@ -57,17 +57,35 @@ ebmon)
generic) obj_format=generic ;;
hds)
- obj_format=ieee
+ obj_format=coff-bfd
need_bfd="$(unsubdir)/../bfd$(subdir)/libbfd.a"
;;
-coff* | sysv*) obj_format=coff ;;
+sysv32)
+ obj_format=coff
+ emulation=sysv32
+ ;;
+coff* | sysv*)
+ obj_format=coff
+
+ case ${target_vendor} in
+ bull) emulation=dpx2 ;;
+ sco) emulation=sco386 ;;
+ sun) emulation=sun3 ;;
+ *)
+ esac
+ ;;
*)
case ${target_vendor} in
aout) obj_format=aout ;;
bout) obj_format=bout ;;
- coff) obj_format=coff ;;
+ coff)
+ obj_format=coff
+ case ${target_cpu} in
+ i960) emulation=ic960 ;;
+ esac
+ ;;
*) obj_format=aout ;;
esac
;;
diff --git a/gas/subsegs.h b/gas/subsegs.h
index b8dbaf7..fa0f499 100644
--- a/gas/subsegs.h
+++ b/gas/subsegs.h
@@ -5,7 +5,7 @@ This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
+the Free Software Foundation; either version 2, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
@@ -56,10 +56,32 @@ extern frchainS * frchain_now;
/* chain, even if it contains no (complete) */
/* frags. */
+
+#ifdef MANY_SEGMENTS
+typedef struct
+{
+ frchainS *frchainP;
+ int hadone;
+ int user_stuff;
+ struct frag *frag_root;
+ struct frag *last_frag;
+ fixS *fix_root;
+ fixS *fix_tail;
+ struct internal_scnhdr scnhdr;
+ symbolS *dot;
+
+ struct lineno_list *lineno_list_head;
+ struct lineno_list *lineno_list_tail;
+
+} segment_info_type;
+segment_info_type segment_info[];
+#else
extern frchainS * data0_frchainP;
/* Sentinel for frchain crawling. */
/* Points to the 1st data-segment frchain. */
/* (Which is pointed to by the last text- */
/* segment frchain.) */
+#endif
+
/* end: subsegs.h */