OSDN Git Service

* collect2.c (main): Log frame table count.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jun 1999 20:20:26 +0000 (20:20 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 21 Jun 1999 20:20:26 +0000 (20:20 +0000)
        (GCC_OK_SYMBOL) [ECOFF]: Accept stGlobal.
        (scan_prog_file) [COFF]: Handle frame tables.
        * alpha/alpha.h (UNALIGNED_SHORT_ASM_OP): Define.
        (UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): Define.
        * alpha/elf.h: Undef them again.
        * alpha/vms.h: Remove their definitions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27680 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/collect2.c
gcc/config/alpha/alpha.h
gcc/config/alpha/elf.h
gcc/config/alpha/vms.h

index f176d7a..b61cd3c 100644 (file)
@@ -1,3 +1,14 @@
+Mon Jun 21 20:10:42 1999  Richard Henderson  <rth@cygnus.com>
+
+       * collect2.c (main): Log frame table count.
+       (GCC_OK_SYMBOL) [ECOFF]: Accept stGlobal.
+       (scan_prog_file) [COFF]: Handle frame tables.
+
+       * alpha/alpha.h (UNALIGNED_SHORT_ASM_OP): Define.
+       (UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): Define.
+       * alpha/elf.h: Undef them again.
+       * alpha/vms.h: Remove their definitions.
+
 Tue Jun 22 03:17:53 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
 
        * sh.c (machine_dependent_reorg): When fixing up fp pcloads,
index 89151c0..62a79d3 100644 (file)
@@ -1567,6 +1567,7 @@ main (argc, argv)
     {
       notice ("%d constructor(s) found\n", constructors.number);
       notice ("%d destructor(s)  found\n", destructors.number);
+      notice ("%d frame table(s) found\n", frame_tables.number);
     }
 
   if (constructors.number == 0 && destructors.number == 0
@@ -2389,6 +2390,7 @@ scan_prog_file (prog_name, which_pass)
        case 5:
          if (which_pass != PASS_LIB)
            add_to_list (&frame_tables, name);
+         break;
 
        default:                /* not a constructor or destructor */
          continue;
@@ -2833,7 +2835,7 @@ scan_libraries (prog_name)
 #if defined(EXTENDED_COFF)
 #   define GCC_SYMBOLS(X)      (SYMHEADER(X).isymMax + SYMHEADER(X).iextMax)
 #   define GCC_SYMENT          SYMR
-#   define GCC_OK_SYMBOL(X)    ((X).st == stProc && (X).sc == scText)
+#   define GCC_OK_SYMBOL(X)    ((X).st == stProc || (X).st == stGlobal)
 #   define GCC_SYMINC(X)       (1)
 #   define GCC_SYMZERO(X)      (SYMHEADER(X).isymMax)
 #   define GCC_CHECK_HDR(X)    (PSYMTAB(X) != 0)
@@ -2974,6 +2976,11 @@ scan_prog_file (prog_name, which_pass)
                          break;
 #endif
 
+                       case 5:
+                         if (! is_shared)
+                           add_to_list (&frame_tables, name);
+                         break;
+
                        default:        /* not a constructor or destructor */
 #ifdef COLLECT_EXPORT_LIST
                          /* If we are building a shared object on AIX we need
index 8571118..42599f9 100644 (file)
@@ -2145,6 +2145,11 @@ literal_section ()                                               \
   }                                                                          \
   while (0)
 
+/* To get unaligned data, we have to turn off auto alignment.  */
+#define UNALIGNED_SHORT_ASM_OP         ".align 0\n\t.word"
+#define UNALIGNED_INT_ASM_OP           ".align 0\n\t.long"
+#define UNALIGNED_DOUBLE_INT_ASM_OP    ".align 0\n\t.quad"
+
 /* This is how to output an insn to push a register on the stack.
    It need not be very fast code.  */
 
index 0e647ef..6cea3da 100644 (file)
@@ -526,3 +526,9 @@ do {                                                                        \
 
 /* We support #pragma.  */
 #define HANDLE_SYSV_PRAGMA
+
+/* Undo the auto-alignment stuff from alpha.h.  ELF has unaligned data
+   pseudos natively.  */
+#undef UNALIGNED_SHORT_ASM_OP
+#undef UNALIGNED_INT_ASM_OP
+#undef UNALIGNED_DOUBLE_INT_ASM_OP
index 44cf5bf..44388b2 100644 (file)
@@ -439,10 +439,6 @@ extern int vms_valid_decl_attribute_p ();
 #define ASM_OUTPUT_ALIGN(FILE,LOG)     \
     fprintf (FILE, "\t.align %d\n", LOG);
 
-#define UNALIGNED_SHORT_ASM_OP ".word"
-#define UNALIGNED_INT_ASM_OP   ".long"
-#define UNALIGNED_DOUBLE_INT_ASM_OP    ".quad"
-
 #define ASM_OUTPUT_SECTION(FILE,SECTION)                       \
    (strcmp (SECTION, ".text") == 0)                            \
      ? text_section ()                                         \