Wed Dec 30 10:18:57 1992 Ian Lance Taylor (ian@cygnus.com)
authorIan Lance Taylor <ian@airs.com>
Wed, 30 Dec 1992 20:34:14 +0000 (20:34 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 30 Dec 1992 20:34:14 +0000 (20:34 +0000)
* app.c, config/tc-*.c: Don't include read.h, since it is already
included by as.h.

* These are based on patches from Minh Tran-le
<mtranle@paris.intellicorp.com>.
* configure.in (i[34]86-ibm-aix*): Accept i486 for host.  Use
obj_format coffbfd and gas_target i386coff for target.
(i[34]86-*-isc*): New host (uses sysv).
* config/i386aix.mt: Removed (no longer used).
* config/mh-i386aix (RANLIB): Use true rather than /bin/true.
(MINUS_G): Removed.
(LDFLAGS): Added, defined as -shlib.
* config/te-i386aix.h (REVERSE_SORT_RELOCS): Undefine.
* config/te-sco386.h (LOCAL_LABEL): Don't define.
(DOT_LABEL_PREFIX): Define.
* expr.c (operand): If DOT_LABEL_PREFIX, use .L0\001 as a label
name rather than L0\001.
* read.c (s_lcomm): Make a frag in SEG_BSS rather than using
local_bss_counter.
* symbols.c, symbols.h (local_bss_counter): Removed.
* write.c (write_object_file): bss no longer uses
local_bss_counter.  Pass correct data and bss size to
VMS_write_object_file.
* config/obj-vms.c (VMS_write_object_file): Accept bss size as
argument, rather than using local_bss_counter.
* config/tc-m88k.c (s_bss): Don't use local_bss_counter.
* config/tc-sparc.c (s_reserve): Don't use local_bss_counter.
* config/obj-coffbfd.c (had_lineno, had_reloc): Removed.
(size_section): Restored sanity check.
(do_relocs_for): Base section address on s_paddr rather than
computing it.  Adjust a29k R_IHIHALF special case to account for
section paddr (used to require paddr to be zero).  If there are no
reclos, set s_relptr to 0.  Set relocation size in object_headers.
(fill_section): Always set s_vaddr here, removing
ZERO_BASED_SEGMENTS case.  Force s_scnptr for bss to 0.  Don't set
NOLOAD for i386 .bss, because it confuses the SVR3 native linker.
Set STYP_INFO for .comment.
(coff_header_append): Use object headers and H_{SET,GET}_* macros.
Make aouthdr writing depend on OBJ_COFF_OMIT_OPTIONAL_HEADER.
(crawl_symbols): Handle 8 character section name correctly.  Use
H_{SET,GET}_* macros.
(do_linenos_for): Set lineno size in object_headers.
(write_object_file): Use H_{SET,GET}_* macros.  Don't bother to
set s_vaddr here.  If string_byte_count remains 4, set it back to
0, and only write strings out if there are some.  Call
fill_section before do_relocs_for and do_linenos_for.
(obj_coff_section): Handle optional quoted second argument giving
section characteristics.
(obj_coff_bss): Added to handle .bss.
(obj_coff_ident): Added to handle .ident (puts string in .comment
section).
(obj_coff_lcomm): Put common symbols in .bss, not .data.
(fixup_mdeps): Change to segment.  Call frag_wane after
md_convert_frag.
(fixup_segment): Explicitly check S_IS_COMMON before making 386
adjustment (already happened only for common symbols, but this is
clearer).
* config/obj-coffbfd.h (OBJ_COFF_OMIT_OPTIONAL_HEADER): Define.
* config/tc-i386.c (s_bss): Don't use if I386COFF.
(md_pseudo_table): Ignore .optim and .noopt.
(tc_coff_sizemachdep): New function.
* config/tc-i386.h (REVERSE_SORT_RELOCS): Undef, for SVR3
compatibility.
(LOCAL_LABEL): Removed definition.
(DOT_LABEL_PREFIX): Defined.

gas/ChangeLog
gas/config/.Sanitize
gas/configure.in
gas/expr.c
gas/read.c
gas/symbols.c
gas/write.c

index b182c94de608fcc638c6a574bf2d96d1e1ac7cbf..764b1102e0a8927b14550ef89454e2e7242597ec 100644 (file)
@@ -1,3 +1,71 @@
+Wed Dec 30 10:18:57 1992  Ian Lance Taylor  (ian@cygnus.com)
+
+       * app.c, config/tc-*.c: Don't include read.h, since it is already
+       included by as.h.
+
+       * These are based on patches from Minh Tran-le
+       <mtranle@paris.intellicorp.com>.
+       * configure.in (i[34]86-ibm-aix*): Accept i486 for host.  Use
+       obj_format coffbfd and gas_target i386coff for target.
+       (i[34]86-*-isc*): New host (uses sysv).
+       * config/i386aix.mt: Removed (no longer used).
+       * config/mh-i386aix (RANLIB): Use true rather than /bin/true.
+       (MINUS_G): Removed.
+       (LDFLAGS): Added, defined as -shlib.
+       * config/te-i386aix.h (REVERSE_SORT_RELOCS): Undefine.
+       * config/te-sco386.h (LOCAL_LABEL): Don't define.
+       (DOT_LABEL_PREFIX): Define.
+       * expr.c (operand): If DOT_LABEL_PREFIX, use .L0\001 as a label
+       name rather than L0\001.
+       * read.c (s_lcomm): Make a frag in SEG_BSS rather than using
+       local_bss_counter.
+       * symbols.c, symbols.h (local_bss_counter): Removed.
+       * write.c (write_object_file): bss no longer uses
+       local_bss_counter.  Pass correct data and bss size to
+       VMS_write_object_file.
+       * config/obj-vms.c (VMS_write_object_file): Accept bss size as
+       argument, rather than using local_bss_counter.
+       * config/tc-m88k.c (s_bss): Don't use local_bss_counter.
+       * config/tc-sparc.c (s_reserve): Don't use local_bss_counter.
+       * config/obj-coffbfd.c (had_lineno, had_reloc): Removed.
+       (size_section): Restored sanity check.
+       (do_relocs_for): Base section address on s_paddr rather than
+       computing it.  Adjust a29k R_IHIHALF special case to account for
+       section paddr (used to require paddr to be zero).  If there are no
+       reclos, set s_relptr to 0.  Set relocation size in object_headers.
+       (fill_section): Always set s_vaddr here, removing
+       ZERO_BASED_SEGMENTS case.  Force s_scnptr for bss to 0.  Don't set
+       NOLOAD for i386 .bss, because it confuses the SVR3 native linker.
+       Set STYP_INFO for .comment.
+       (coff_header_append): Use object headers and H_{SET,GET}_* macros.
+       Make aouthdr writing depend on OBJ_COFF_OMIT_OPTIONAL_HEADER.
+       (crawl_symbols): Handle 8 character section name correctly.  Use
+       H_{SET,GET}_* macros.
+       (do_linenos_for): Set lineno size in object_headers.
+       (write_object_file): Use H_{SET,GET}_* macros.  Don't bother to
+       set s_vaddr here.  If string_byte_count remains 4, set it back to
+       0, and only write strings out if there are some.  Call
+       fill_section before do_relocs_for and do_linenos_for.
+       (obj_coff_section): Handle optional quoted second argument giving
+       section characteristics.
+       (obj_coff_bss): Added to handle .bss.
+       (obj_coff_ident): Added to handle .ident (puts string in .comment
+       section).
+       (obj_coff_lcomm): Put common symbols in .bss, not .data.
+       (fixup_mdeps): Change to segment.  Call frag_wane after
+       md_convert_frag.
+       (fixup_segment): Explicitly check S_IS_COMMON before making 386
+       adjustment (already happened only for common symbols, but this is
+       clearer).
+       * config/obj-coffbfd.h (OBJ_COFF_OMIT_OPTIONAL_HEADER): Define.
+       * config/tc-i386.c (s_bss): Don't use if I386COFF.
+       (md_pseudo_table): Ignore .optim and .noopt.
+       (tc_coff_sizemachdep): New function.
+       * config/tc-i386.h (REVERSE_SORT_RELOCS): Undef, for SVR3
+       compatibility.
+       (LOCAL_LABEL): Removed definition.
+       (DOT_LABEL_PREFIX): Defined.
+
 Mon Dec 28 10:32:05 1992  Ken Raeburn  (raeburn@cygnus.com)
 
        * app.c (app_push): Use memcpy, not bcopy.
index 15509e4c7c0c1a5deb090e57f3cc7d546204c9a6..7f226bd151417ea36f0ff33144fafd2a16c3ae0b 100644 (file)
@@ -52,7 +52,6 @@ ho-sunos.h
 ho-sysv.h
 ho-vax.h
 ho-vms.h
-i386aix.mt
 i386coff.mt
 m68k.mt
 m68kcoff.mt
@@ -140,7 +139,76 @@ echo Done in `pwd`.
 #
 #
 # $Log$
-# Revision 1.30  1992/12/08 09:42:06  raeburn
+# Revision 1.31  1992/12/30 20:34:14  ian
+# Wed Dec 30 10:18:57 1992  Ian Lance Taylor  (ian@cygnus.com)
+#
+#      * app.c, config/tc-*.c: Don't include read.h, since it is already
+#      included by as.h.
+#
+#      * These are based on patches from Minh Tran-le
+#      <mtranle@paris.intellicorp.com>.
+#      * configure.in (i[34]86-ibm-aix*): Accept i486 for host.  Use
+#      obj_format coffbfd and gas_target i386coff for target.
+#      (i[34]86-*-isc*): New host (uses sysv).
+#      * config/i386aix.mt: Removed (no longer used).
+#      * config/mh-i386aix (RANLIB): Use true rather than /bin/true.
+#      (MINUS_G): Removed.
+#      (LDFLAGS): Added, defined as -shlib.
+#      * config/te-i386aix.h (REVERSE_SORT_RELOCS): Undefine.
+#      * config/te-sco386.h (LOCAL_LABEL): Don't define.
+#      (DOT_LABEL_PREFIX): Define.
+#      * expr.c (operand): If DOT_LABEL_PREFIX, use .L0\001 as a label
+#      name rather than L0\001.
+#      * read.c (s_lcomm): Make a frag in SEG_BSS rather than using
+#      local_bss_counter.
+#      * symbols.c, symbols.h (local_bss_counter): Removed.
+#      * write.c (write_object_file): bss no longer uses
+#      local_bss_counter.  Pass correct data and bss size to
+#      VMS_write_object_file.
+#      * config/obj-vms.c (VMS_write_object_file): Accept bss size as
+#      argument, rather than using local_bss_counter.
+#      * config/tc-m88k.c (s_bss): Don't use local_bss_counter.
+#      * config/tc-sparc.c (s_reserve): Don't use local_bss_counter.
+#      * config/obj-coffbfd.c (had_lineno, had_reloc): Removed.
+#      (size_section): Restored sanity check.
+#      (do_relocs_for): Base section address on s_paddr rather than
+#      computing it.  Adjust a29k R_IHIHALF special case to account for
+#      section paddr (used to require paddr to be zero).  If there are no
+#      reclos, set s_relptr to 0.  Set relocation size in object_headers.
+#      (fill_section): Always set s_vaddr here, removing
+#      ZERO_BASED_SEGMENTS case.  Force s_scnptr for bss to 0.  Don't set
+#      NOLOAD for i386 .bss, because it confuses the SVR3 native linker.
+#      Set STYP_INFO for .comment.
+#      (coff_header_append): Use object headers and H_{SET,GET}_* macros.
+#      Make aouthdr writing depend on OBJ_COFF_OMIT_OPTIONAL_HEADER.
+#      (crawl_symbols): Handle 8 character section name correctly.  Use
+#      H_{SET,GET}_* macros.
+#      (do_linenos_for): Set lineno size in object_headers.
+#      (write_object_file): Use H_{SET,GET}_* macros.  Don't bother to
+#      set s_vaddr here.  If string_byte_count remains 4, set it back to
+#      0, and only write strings out if there are some.  Call
+#      fill_section before do_relocs_for and do_linenos_for.
+#      (obj_coff_section): Handle optional quoted second argument giving
+#      section characteristics.
+#      (obj_coff_bss): Added to handle .bss.
+#      (obj_coff_ident): Added to handle .ident (puts string in .comment
+#      section).
+#      (obj_coff_lcomm): Put common symbols in .bss, not .data.
+#      (fixup_mdeps): Change to segment.  Call frag_wane after
+#      md_convert_frag.
+#      (fixup_segment): Explicitly check S_IS_COMMON before making 386
+#      adjustment (already happened only for common symbols, but this is
+#      clearer).
+#      * config/obj-coffbfd.h (OBJ_COFF_OMIT_OPTIONAL_HEADER): Define.
+#      * config/tc-i386.c (s_bss): Don't use if I386COFF.
+#      (md_pseudo_table): Ignore .optim and .noopt.
+#      (tc_coff_sizemachdep): New function.
+#      * config/tc-i386.h (REVERSE_SORT_RELOCS): Undef, for SVR3
+#      compatibility.
+#      (LOCAL_LABEL): Removed definition.
+#      (DOT_LABEL_PREFIX): Defined.
+#
+# Revision 1.30  1992/12/08  09:42:06  raeburn
 # missed tc-tahoe files
 #
 # Revision 1.29  1992/12/08  09:30:28  raeburn
index d222ee0725211e83341beb852a874bc68254e7dd..01c720eedcbb0e26bcc67742d34cdc3df7f70a73 100644 (file)
@@ -37,15 +37,22 @@ configdirs=doc
 gas_host=generic
 
 case "${host}" in
-  a29k-*-* | rs6000-*-* | vax-*-*)  
-    gas_host=${host_cpu} 
+  a29k-*-* | rs6000-*-* | vax-*-*)
+    case "${host_os}" in
+    vms*)      gas_host=vms ;;
+    bsd*)      gas_host=bsd ;;
+    *)         gas_host=${host_cpu} ;;
+    esac
     ;; 
   mips-dec-ultrix) 
     gas_host=decstation 
     ;;
-  i386-ibm-aix)        
+  i[34]86-ibm-aix*)
     gas_host=i386aix
     ;;
+  i[34]86-*-isc*)
+    gas_host=sysv
+    ;;
   m68k-sun-sunos*)
     gas_host=sun3 
     ;;
@@ -98,14 +105,15 @@ case ${target} in
     gas_target=ebmon29k
     ;;
   i[34]86-ibm-aix*)
-    obj_format=coff
-    gas_target=i386aix
+    obj_format=coffbfd
+    need_bfd="./../bfd/libbfd.a"
+    gas_target=i386coff
     emulation=i386aix
     ;;
   i[34]86-*-bsd*) 
     obj_format=aout 
     ;;
-  i[34]86-*-coff | i[34]86-*-sysv* | i[34]86-*-sco*)
+  i[34]86-*-coff | i[34]86-*-sysv* | i[34]86-*-sco* | i[34]86-*-isc*)
     obj_format=coffbfd
     need_bfd="./../bfd/libbfd.a"
     gas_target=i386coff
@@ -136,7 +144,7 @@ case ${target} in
   sparclite-fujitsu-none)
     obj_format=aout
     ;;
-  *-*-aout | *-*-scout)
+  *-*-aout | *-*-scout | *-*-linux)
     obj_format=aout
     ;;
   *-*-bout* | *-*-nindy*)
@@ -174,12 +182,16 @@ case ${target} in
   *-*-coff)
     obj_format=coff
     ;;
+  *-*-vms)
+    obj_format=vms
+    ;;
 esac
 
 # assign floating point type
 case ${target_cpu} in
   ns32k) atof=ns32k ;;
   vax)  atof=vax ;;
+  tahoe) atof=tahoe ;;
   *)    atof=ieee ;;
 esac
 
index fa67fa3b930c56f5ddc195d8a078ff6cd8c1d21e..dabc1058b7bbf3a6686f5e13927f4e068a32389b 100644 (file)
@@ -567,13 +567,17 @@ operand (expressionP)
     case '.':
       if (!is_part_of_name (*input_line_pointer))
        {
+         char *fake;
          extern struct obstack frags;
 
-         /*
-       JF:  '.' is pseudo symbol with value of current location in current
-       segment. . .
-       */
-         symbolP = symbol_new ("L0\001",
+         /* JF: '.' is pseudo symbol with value of current location
+            in current segment.  */
+#ifdef DOT_LABEL_PREFIX
+         fake = ".L0\001";
+#else
+         fake = "L0\001";
+#endif
+         symbolP = symbol_new (fake,
                                now_seg,
               (valueT) (obstack_next_free (&frags) - frag_now->fr_literal),
                                frag_now);
index 09a11de6a558f89034141e2bc161a907899d91cc..c47077381a824950648c66d4ce5a89d8ff19b2dd 100644 (file)
@@ -587,7 +587,7 @@ read_a_source_file (name)
                     that goes with this #APP  There is one.  The specs
                     guarentee it. . . */
                  tmp_len = buffer_limit - s;
-                 tmp_buf = xmalloc (tmp_len);
+                 tmp_buf = xmalloc (tmp_len + 1);
                  bcopy (s, tmp_buf, tmp_len);
                  do
                    {
@@ -1147,19 +1147,28 @@ s_lcomm (needs_align)
        S_GET_OTHER (symbolP) == 0 &&
        S_GET_DESC (symbolP) == 0 &&
 #endif /* OBJ_AOUT or OBJ_BOUT */
-       (((S_GET_SEGMENT (symbolP) == SEG_BSS) && (S_GET_VALUE (symbolP) == local_bss_counter))
+       (S_GET_SEGMENT (symbolP) == SEG_BSS
        || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0)))
     {
-      if (needs_align)
-       {
-         /* Align */
-         align = ~((~0) << align);     /* Convert to a mask */
-         local_bss_counter =
-           (local_bss_counter + align) & (~align);
-       }
+      char *p;
+      segT current_seg = now_seg;
+      subsegT current_subseg = now_subseg;
+
+      subseg_new (SEG_BSS, 1);
+
+      if (align)
+       frag_align (align, 0);
+                                       /* detach from old frag */
+      if (S_GET_SEGMENT (symbolP) == SEG_BSS)
+       symbolP->sy_frag->fr_symbol = NULL;
+
+      symbolP->sy_frag = frag_now;
+      p = frag_var (rs_org, 1, 1, (relax_substateT)0, symbolP,
+                   temp, (char *)0);
+      *p = 0;
 
-      S_SET_VALUE (symbolP, local_bss_counter);
       S_SET_SEGMENT (symbolP, SEG_BSS);
+
 #ifdef OBJ_COFF
       /* The symbol may already have been created with a preceding
                 * ".globl" directive -- be careful not to step on storage
@@ -1170,13 +1179,11 @@ s_lcomm (needs_align)
          S_SET_STORAGE_CLASS (symbolP, C_STAT);
        }
 #endif /* OBJ_COFF */
-      symbolP->sy_frag = &bss_address_frag;
-      local_bss_counter += temp;
+      subseg_new (current_seg, current_subseg);
     }
   else
     {
-      as_bad ("Ignoring attempt to re-define symbol from %d. to %d.",
-             S_GET_VALUE (symbolP), local_bss_counter);
+      as_bad ("Ignoring attempt to re-define symbol %s.", name);
     }
   demand_empty_rest_of_line ();
 
index a140046e6827f0eb7ae3d6d2ee61debb4e46046d..7196874ca344e3e78aa696d91148dd04cca27f1c 100644 (file)
@@ -37,7 +37,6 @@ struct hash_control *
   sy_hash;                     /* symbol-name => struct symbol pointer */
 
 /* Below are commented in "symbols.h". */
-unsigned int local_bss_counter;
 symbolS *symbol_rootP;
 symbolS *symbol_lastP;
 symbolS abs_symbol;
@@ -48,11 +47,7 @@ symbolS *dot_bss_symbol;
 
 struct obstack notes;
 
-#if __STDC__ == 1
-static void fb_label_init (void);
-#else /* not __STDC__ */
-static void fb_label_init ();
-#endif /* not __STDC__ */
+static void fb_label_init PARAMS ((void));
 
 void
 symbol_begin ()
@@ -62,7 +57,6 @@ symbol_begin ()
   sy_hash = hash_new ();
   memset ((char *) (&abs_symbol), '\0', sizeof (abs_symbol));
   S_SET_SEGMENT (&abs_symbol, SEG_ABSOLUTE);   /* Can't initialise a union. Sigh. */
-  local_bss_counter = 0;
 #ifdef LOCAL_LABELS_FB
   fb_label_init ();
 #endif /* LOCAL_LABELS_FB */
@@ -280,10 +274,8 @@ colon (sym_name)           /* just seen "x:" - rattle symbols & frags */
                    }
                  else
                    {
-                     /*
-                                                *      It is a .comm/.lcomm being converted
-                                                *      to initialized data.
-                                                */
+                     /* It is a .comm/.lcomm being converted to initialized
+                        data.  */
                      symbolP->sy_frag = frag_now;
 #ifdef VMS
                      symbolP->sy_other = const_flag;
@@ -794,7 +786,6 @@ static void
 fb_label_init ()
 {
   memset ((void *) fb_low_counter, '\0', sizeof (fb_low_counter));
-  return;
 }                              /* fb_label_init() */
 
 /* add one to the instance number of this fb label */
@@ -977,12 +968,4 @@ decode_local_label_name (s)
   return (symbol_decode);
 }                              /* decode_local_label_name() */
 
-
-/*
- * Local Variables:
- * comment-column: 0
- * fill-column: 131
- * End:
- */
-
 /* end of symbols.c */
index 86ca81dd4f30c958d037e19a3138cadf6640b24d..77097c72e87657f0dd00c35b2e23b7e644396afb 100644 (file)
@@ -152,7 +152,6 @@ write_object_file ()
   register fragS *fragP;       /* Track along all frags. */
   register struct frchain *next_frchainP;
   register fragS **prev_fragPP;
-  unsigned int data_siz;
 
   long object_file_size;
 
@@ -286,7 +285,6 @@ write_object_file ()
   else
     {
       H_SET_DATA_SIZE (&headers, 0);
-      data_siz = 0;
     }
 
 #ifdef OBJ_BOUT
@@ -308,7 +306,7 @@ write_object_file ()
   /* Slide all the frags */
   if (bss_frag_root)
     {
-      relax_addressT slide = bss_address_frag.fr_address + local_bss_counter;
+      relax_addressT slide = bss_address_frag.fr_address;
 
       for (fragP = bss_frag_root; fragP; fragP = fragP->fr_next)
        {
@@ -317,11 +315,12 @@ write_object_file ()
     }
 
 #endif
+
   if (bss_last_frag)
-    {
-      local_bss_counter += bss_last_frag->fr_address - bss_frag_root->fr_address;
-    }
-  H_SET_BSS_SIZE (&headers, local_bss_counter);
+    H_SET_BSS_SIZE (&headers,
+                   bss_last_frag->fr_address - bss_frag_root->fr_address);
+  else
+    H_SET_BSS_SIZE (&headers, 0);
 
   /*
    *
@@ -660,7 +659,9 @@ write_object_file ()
   /*
    *   Now do the VMS-dependent part of writing the object file
    */
-  VMS_write_object_file (H_GET_TEXT_SIZE (&headers), data_siz,
+  VMS_write_object_file (H_GET_TEXT_SIZE (&headers),
+                        H_GET_DATA_SIZE (&headers),
+                        H_GET_BSS_SIZE (&headers),
                         text_frag_root, data_frag_root);
 #endif /* VMS */
 }                              /* write_object_file() */