aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-06-21 13:20:26 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-06-21 13:20:26 -0700
commit6690d24c2cd5fe1f37d5d040d9fb071b6fe7bd97 (patch)
treef5bafb66893ae7d11e0267842705289d6f59b6a4 /gcc
parentb8794099b71a90b1a2d336b30fac802aba82345b (diff)
downloadgcc-6690d24c2cd5fe1f37d5d040d9fb071b6fe7bd97.zip
gcc-6690d24c2cd5fe1f37d5d040d9fb071b6fe7bd97.tar.gz
gcc-6690d24c2cd5fe1f37d5d040d9fb071b6fe7bd97.tar.bz2
collect2.c (main): Log frame table count.
* 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. From-SVN: r27680
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/collect2.c9
-rw-r--r--gcc/config/alpha/alpha.h5
-rw-r--r--gcc/config/alpha/elf.h6
-rw-r--r--gcc/config/alpha/vms.h4
5 files changed, 30 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f176d7a..b61cd3c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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,
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 89151c0..62a79d3 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -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
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 8571118..42599f9 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -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. */
diff --git a/gcc/config/alpha/elf.h b/gcc/config/alpha/elf.h
index 0e647ef..6cea3da 100644
--- a/gcc/config/alpha/elf.h
+++ b/gcc/config/alpha/elf.h
@@ -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
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
index 44cf5bf..44388b2 100644
--- a/gcc/config/alpha/vms.h
+++ b/gcc/config/alpha/vms.h
@@ -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 () \