From ace68c4ed92c1d7820a3bda5d78f56a5a34932c2 Mon Sep 17 00:00:00 2001 From: Steve Chamberlain Date: Tue, 26 Nov 1991 02:15:13 +0000 Subject: [PATCH] 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) --- gas/ChangeLog | 17 +++++++++++++++++ gas/as.h | 16 ++++++++-------- gas/configure.in | 24 +++++++++++++++++++++--- gas/subsegs.h | 24 +++++++++++++++++++++++- 4 files changed, 69 insertions(+), 12 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 88a16fa319..f29cb1b082 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 84c963a473..fd1946ffd0 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 854352e1d9..f258350591 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 b8dbaf76e5..fa0f499466 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 */