* config/tc-i386.c (md_number_to_chars): Deleted.
authorKen Raeburn <raeburn@cygnus>
Thu, 20 Jun 1996 20:06:44 +0000 (20:06 +0000)
committerKen Raeburn <raeburn@cygnus>
Thu, 20 Jun 1996 20:06:44 +0000 (20:06 +0000)
* config/tc-i386.h (md_number_to_chars): New macro.

* config/tc-alpha.c (build_operate_n, build_mem): Moved earlier in the file.
(load_symbol_address, load_expression): Use build_mem.
(build_operate): New function.
(emit_addq_r): Use it.

Wed Mar 13 22:14:14 1996  Pat Rankin  <rankin@eql.caltech.edu>

* symbols.c (colon):  #if VMS, use S_SET_OTHER to store `const_flag'.

Tue Mar  5 14:31:45 1996  Pat Rankin  <rankin@eql.caltech.edu>

* config/tc-vax.h (NOP_OPCODE): Define.

Sun Feb  4 21:01:03 1996  Pat Rankin  <rankin@eql.caltech.edu>

* config/obj-vms.h (S_IS_COMMON): Define.
(S_IS_LOCAL): Check for \002 as well as \001.
(LONGWORD_ALIGNMENT): New macro.
(SUB_SEGMENT_ALIGN): Use it.

Fri Jan 26 17:44:09 1996  Pat Rankin  <rankin@eql.caltech.edu>

* config/vms-conf.h: Reconcile with conf.in.

gas/ChangeLog
gas/config/obj-vms.h
gas/config/tc-alpha.c
gas/config/vms-conf.h
gas/symbols.c

index 6b10cd183642a110d8f34fe81e6c8d9915df9d88..d59f72154426e46da1af2eb9186d4dea893cca6b 100644 (file)
@@ -1,3 +1,33 @@
+Thu Jun 20 15:57:41 1996  Ken Raeburn  <raeburn@cygnus.com>
+
+       * config/tc-i386.c (md_number_to_chars): Deleted.
+       * config/tc-i386.h (md_number_to_chars): New macro.
+
+       * config/tc-alpha.c (build_operate_n, build_mem): Moved earlier in
+       the file.
+       (load_symbol_address, load_expression): Use build_mem.
+       (build_operate): New function.
+       (emit_addq_r): Use it.
+
+       Wed Mar 13 22:14:14 1996  Pat Rankin  <rankin@eql.caltech.edu>
+
+       * symbols.c (colon):  #if VMS, use S_SET_OTHER to store `const_flag'.
+
+       Tue Mar  5 14:31:45 1996  Pat Rankin  <rankin@eql.caltech.edu>
+
+       * config/tc-vax.h (NOP_OPCODE): Define.
+
+       Sun Feb  4 21:01:03 1996  Pat Rankin  <rankin@eql.caltech.edu>
+
+       * config/obj-vms.h (S_IS_COMMON): Define.
+       (S_IS_LOCAL): Check for \002 as well as \001.
+       (LONGWORD_ALIGNMENT): New macro.
+       (SUB_SEGMENT_ALIGN): Use it.
+
+       Fri Jan 26 17:44:09 1996  Pat Rankin  <rankin@eql.caltech.edu>
+
+       * config/vms-conf.h: Reconcile with conf.in.
+
 Wed Jun 19 11:31:50 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * write.c (is_dnrange): Only define if TC_GENERIC_RELAX_TABLE is
index 1105bb2f860eb6fd28367c3fc037346e1c291c21..7421bb5aacb0a7e35b20043c931a74e1e1f5f4fa 100644 (file)
@@ -1,5 +1,5 @@
 /* VMS object file format
-   Copyright (C) 1989, 1990, 1991, 1994, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1989,90,91,94,95,1996 Free Software Foundation, Inc.
 
 This file is part of GAS, the GNU Assembler.
 
@@ -22,6 +22,8 @@ to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1
 
 #include "targ-cpu.h"
 
+#define LONGWORD_ALIGNMENT     2
+
 /* This macro controls subsection alignment within a section.
  *
  * Under VAX/VMS, the linker (and PSECT specifications)
@@ -29,7 +31,8 @@ to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1
  * Doing the alignment here (on initialized data) can
  * mess up the calculation of global data PSECT sizes.
  */
-#define SUB_SEGMENT_ALIGN(SEG) (((SEG) == data_section) ? 0 : 2)
+#define SUB_SEGMENT_ALIGN(SEG) \
+               (((SEG) == data_section) ? 0 : LONGWORD_ALIGNMENT)
 
 /* This flag is used to remember whether we are in the const or the
    data section.  By and large they are identical, but we set a no-write
@@ -132,6 +135,8 @@ typedef struct nlist obj_symbol_type;       /* Symbol table entry */
 /* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */
 #define S_IS_DEFINED(s)                (S_GET_TYPE(s) != N_UNDF)
 
+#define S_IS_COMMON(s) (S_GET_TYPE(s) == N_UNDF && S_GET_VALUE(s) != 0)
+
 #define S_IS_REGISTER(s)       ((s)->sy_symbol.n_type == N_REGISTER)
 
 /* True if a debug special symbol entry */
@@ -141,7 +146,8 @@ typedef struct nlist obj_symbol_type;       /* Symbol table entry */
    nameless symbols come from .stab directives. */
 #define S_IS_LOCAL(s)          (S_GET_NAME(s) && \
                                 !S_IS_DEBUG(s) && \
-                                (S_GET_NAME(s)[0] == '\001' || \
+                                (strchr(S_GET_NAME(s), '\001') != 0 || \
+                                 strchr(S_GET_NAME(s), '\002') != 0 || \
                                  (S_LOCAL_NAME(s) && !flag_keep_locals)))
 /* True if a symbol is not defined in this file */
 #define S_IS_EXTERN(s)         ((s)->sy_symbol.n_type & N_EXT)
index a597dbc62629f8d9cd7615b85bf23a7a8c272f54..f35ea2033874afc77d43c46e91f299a3898f1f16 100644 (file)
@@ -860,6 +860,34 @@ md_section_align (seg, size)
   return size;
 }
 
+static int
+build_mem (opc, ra, rb, disp)
+     int opc, ra, rb;
+     bfd_signed_vma disp;
+{
+  if ((disp >> 15) != 0
+      && (disp >> 15) + 1 != 0)
+    abort ();
+  return ((opc << 26) | (ra << SA) | (rb << SB) | (disp & 0xffff));
+}
+
+static int
+build_operate_n (opc, fn, ra, lit, rc)
+     int opc, fn, ra, rc;
+     int lit;
+{
+  if (lit & ~0xff)
+    abort ();
+  return ((opc << 26) | (fn << 5) | (ra << SA) | (lit << SN) | (1 << 12) | (rc << SC));
+}
+
+static int
+build_operate (opc, fn, ra, rb, rc)
+     int opc, fn, ra, rb, rc;
+{
+  return ((opc << 26) | (fn << 5) | (ra << SA) | (rb << SB) | (rc << SC));
+}
+
 /* Add this thing to the .lita section and produce a LITERAL reloc referring
    to it.  */
 
@@ -898,16 +926,8 @@ load_symbol_address (reg, insn)
     /* Overflow? */
     as_fatal ("overflow in literal (.lita) table");
   x = retval;
-  if (addr32)
-    insn->opcode = (0xa0000000 /* ldl */
-                   | (reg << SA)
-                   | (base_register << SB)
-                   | (x & 0xffff));
-  else
-    insn->opcode = (0xa4000000 /* ldq */
-                   | (reg << SA)
-                   | (base_register << SB)
-                   | (x & 0xffff));
+  insn->opcode = build_mem (addr32 ? 0x28 : 0x29, /* ldl or ldq */
+                           reg, base_register, x & 0xffff);
   note_gpreg (base_register);
 }
 
@@ -958,20 +978,15 @@ load_expression (reg, insn)
         an LDAH instruction.  */
       if (addendlo)
        {
-         insn[1].opcode = (0x20000000  /* lda */
-                           | (reg << SA)
-                           | (reg << SB)
-                           | (addendlo & 0xffff));
+         insn[1].opcode = build_mem (0x08, reg, reg, addendlo & 0xffff);
          insn[1].reloc[0].code = BFD_RELOC_ALPHA_LITUSE;
          insn[1].reloc[0].exp = lituse_basereg;
          num_insns++;
        }
       if (addendhi)
        {
-         insn[num_insns].opcode = (0x24000000
-                                   | (reg << SA)
-                                   | (reg << SB)
-                                   | (addendhi & 0xffff));
+         insn[num_insns].opcode = build_mem (0x09, reg, reg,
+                                             addendhi & 0xffff);
          num_insns++;
        }
       if (num_insns == 1)
@@ -1118,27 +1133,6 @@ emit_bis_r (in1, in2, out)
   md_assemble (buf);
 }
 
-static int
-build_mem (opc, ra, rb, disp)
-     int opc, ra, rb;
-     bfd_signed_vma disp;
-{
-  if ((disp >> 15) != 0
-      && (disp >> 15) + 1 != 0)
-    abort ();
-  return ((opc << 26) | (ra << SA) | (rb << SB) | (disp & 0xffff));
-}
-
-static int
-build_operate_n (opc, fn, ra, lit, rc)
-     int opc, fn, ra, rc;
-     int lit;
-{
-  if (lit & ~0xff)
-    abort ();
-  return ((opc << 26) | (fn << 5) | (ra << SA) | (lit << SN) | (1 << 12) | (rc << SC));
-}
-
 static void
 emit_sll_n (dest, disp, src)
      int dest, disp, src;
@@ -1163,7 +1157,7 @@ emit_addq_r (in1, in2, out)
      int in1, in2, out;
 {
   struct alpha_it insn = clear_insn;
-  insn.opcode = 0x40000400 | (in1 << SA) | (in2 << SB) | (out << SC);
+  insn.opcode = build_operate (0x10, 0x20, in1, in2, out);
   emit_insn (&insn);
 }
 
index c948d1a033159ecac81db65ad88a1cd26f1291da..9eada1dba2a3c99b7796fe581f68c8c54cf5c80a 100644 (file)
@@ -12,6 +12,9 @@
    This function is required for alloca.c support on those systems.  */
 #undef CRAY_STACKSEG_END
 
+/* Define if you have alloca, as a function or macro.  */
+#undef HAVE_ALLOCA
+
 /* Define if you have <alloca.h> and it should be used (not on Ultrix).  */
 #undef HAVE_ALLOCA_H
 
 
 #undef MANY_SEGMENTS
 
-/* Needed only for sparc configuration */
+/* Needed only for sparc configuration */
 #undef SPARC_V9
 #undef SPARC_ARCH64
 
+/* Needed only for some configurations that can produce multiple output
+   formats.  */
+#undef DEFAULT_EMULATION
+#undef EMULATIONS
+#undef USE_EMULATIONS
+#undef OBJ_MAYBE_AOUT
+#undef OBJ_MAYBE_BOUT
+#undef OBJ_MAYBE_COFF
+#undef OBJ_MAYBE_ECOFF
+#undef OBJ_MAYBE_ELF
+#undef OBJ_MAYBE_GENERIC
+#undef OBJ_MAYBE_HP300
+#undef OBJ_MAYBE_IEEE
+#undef OBJ_MAYBE_SOM
+#undef OBJ_MAYBE_VMS
+
+/* Used for some of the COFF configurations, when the COFF code needs
+   to select something based on the CPU type before it knows it... */
+#undef I386COFF
+#undef M68KCOFF
+#undef M88KCOFF
+
 /* Define if you have the remove function.  */
 #define HAVE_REMOVE
 
+/* sbrk() is available, but we don't want gas to use it.  */
+#undef HAVE_SBRK
+
 /* Define if you have the unlink function.  */
 #undef HAVE_UNLINK
 
index b1212cbd42cd14ded38ac752a624a769d668ebac..dde84f4ecdb843a50029fc50391bc8fa9f413e76 100644 (file)
@@ -229,7 +229,7 @@ colon (sym_name)            /* just seen "x:" - rattle symbols & frags */
            {
              symbolP->sy_frag = frag_now;
 #ifdef OBJ_VMS
-             S_GET_OTHER(symbolP) = const_flag;
+             S_SET_OTHER(symbolP, const_flag);
 #endif
              S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
              S_SET_SEGMENT (symbolP, now_seg);
@@ -281,8 +281,8 @@ colon (sym_name)            /* just seen "x:" - rattle symbols & frags */
                         data.  */
                      symbolP->sy_frag = frag_now;
 #ifdef OBJ_VMS
-                     S_GET_OTHER(symbolP) = const_flag;
-#endif /* OBJ_VMS */
+                     S_SET_OTHER(symbolP, const_flag);
+#endif
                      S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
                      S_SET_SEGMENT (symbolP, now_seg); /* keep N_EXT bit */
                    }