diff options
author | Richard Henderson <rth@cygnus.com> | 1999-06-21 13:20:26 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-06-21 13:20:26 -0700 |
commit | 6690d24c2cd5fe1f37d5d040d9fb071b6fe7bd97 (patch) | |
tree | f5bafb66893ae7d11e0267842705289d6f59b6a4 /gcc | |
parent | b8794099b71a90b1a2d336b30fac802aba82345b (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/collect2.c | 9 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.h | 5 | ||||
-rw-r--r-- | gcc/config/alpha/elf.h | 6 | ||||
-rw-r--r-- | gcc/config/alpha/vms.h | 4 |
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 () \ |