diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2001-08-09 13:22:15 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-08-09 13:22:15 -0700 |
commit | ef8d8b8922a034dfac5cff9d5fa781dc57c49ed0 (patch) | |
tree | 1da9d8a8afe474422c00e74d9991395bd85720d9 /gcc | |
parent | 3b87de3d00a64485f6b72bfc448c17e799c83e30 (diff) | |
download | gcc-ef8d8b8922a034dfac5cff9d5fa781dc57c49ed0.zip gcc-ef8d8b8922a034dfac5cff9d5fa781dc57c49ed0.tar.gz gcc-ef8d8b8922a034dfac5cff9d5fa781dc57c49ed0.tar.bz2 |
crtbegin.asm (__JCR_LIST__): New.
* config/alpha/crtbegin.asm (__JCR_LIST__): New.
(__do_global_dtors_aux): Use gp-relative static data to avoid
one dynamic relocation.
(__do_frame_setup): Register Java classes.
* config/alpha/crtend.asm (__JCR_END__): New.
From-SVN: r44746
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 44 | ||||
-rw-r--r-- | gcc/config/alpha/crtbegin.asm | 40 | ||||
-rw-r--r-- | gcc/config/alpha/crtend.asm | 7 |
3 files changed, 56 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ec34ae2..92b4352 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,23 +1,31 @@ +2001-08-09 Richard Henderson <rth@redhat.com> + + * config/alpha/crtbegin.asm (__JCR_LIST__): New. + (__do_global_dtors_aux): Use gp-relative static data to avoid + one dynamic relocation. + (__do_frame_setup): Register Java classes. + * config/alpha/crtend.asm (__JCR_END__): New. + 2001-08-09 Zack Weinberg <zackw@stanford.edu> - * Makefile.in (HOST_CFLAGS): Take out -DGENERATOR_FILE. - (CONFIG_H, TCONFIG_H, TM_P_H): Update. - (GEN, STAGESTUFF): Add new files. - (insn-constants.h, s-constants, tm-preds.h, s-preds, - genconstants, genpreds, genconstants.o, genpreds.o): New rules. - (hashtab.o, safe-ctype.o): Add -DGENERATOR_FILE. - * mkconfig.sh: Include tm-preds.h in tm_p.h; insn-constants.h - as well as insn-codes.h and insn-flags.h in config.h; and no - extra headers in tconfig.h and hconfig.h. - - * gencodes.c: Eliminate code to generate predicate declarations - or #defines for md-file constants. - * genconstants.c, genpreds.c: New files. - - * i386.md: Re-order guard expressions such that TARGET_64BIT - comes first, when this permits better optimization. Add - TARGET_64BIT to more x86-64 patterns. Add comment explaining - why this is desirable. + * Makefile.in (HOST_CFLAGS): Take out -DGENERATOR_FILE. + (CONFIG_H, TCONFIG_H, TM_P_H): Update. + (GEN, STAGESTUFF): Add new files. + (insn-constants.h, s-constants, tm-preds.h, s-preds, + genconstants, genpreds, genconstants.o, genpreds.o): New rules. + (hashtab.o, safe-ctype.o): Add -DGENERATOR_FILE. + * mkconfig.sh: Include tm-preds.h in tm_p.h; insn-constants.h + as well as insn-codes.h and insn-flags.h in config.h; and no + extra headers in tconfig.h and hconfig.h. + + * gencodes.c: Eliminate code to generate predicate declarations + or #defines for md-file constants. + * genconstants.c, genpreds.c: New files. + + * i386.md: Re-order guard expressions such that TARGET_64BIT + comes first, when this permits better optimization. Add + TARGET_64BIT to more x86-64 patterns. Add comment explaining + why this is desirable. 2001-08-09 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/config/alpha/crtbegin.asm b/gcc/config/alpha/crtbegin.asm index cbeba99..96725b0 100644 --- a/gcc/config/alpha/crtbegin.asm +++ b/gcc/config/alpha/crtbegin.asm @@ -44,16 +44,18 @@ application's lists. */ .section .ctors,"aw" - .align 3 __CTOR_LIST__: - .quad -1 + .quad -1 .section .dtors,"aw" - .align 3 __DTOR_LIST__: - .quad -1 + .quad -1 + +.section .jcr,"aw" + .align 3 +__JCR_LIST__: .section .eh_frame,"aw" __EH_FRAME_BEGIN__: @@ -96,9 +98,9 @@ __EH_FRAME_BEGIN__: /* Support recursive calls to exit. */ .type dtor_ptr,@object - .size dtor_ptr,8 + .size dtor_ptr,4 dtor_ptr: - .quad __DTOR_LIST__ + 8 + .gprel32 __DTOR_LIST__ + 8 /* A globally unique widget for c++ local destructors to hang off. @@ -150,12 +152,13 @@ __do_global_dtors_aux: 0: lda $9,dtor_ptr br 2f -1: stq $1,0($9) +1: stl $1,0($9) jsr $26,($27) ldgp $29,0($26) -2: ldq $1,0($9) - ldq $27,0($1) - addq $1,8,$1 +2: ldl $1,0($9) + addq $1,$29,$2 + ldq $27,0($2) + addl $1,8,$1 bne $27,1b /* Remove our frame info. */ @@ -173,11 +176,9 @@ __do_global_dtors_aux: .end __do_global_dtors_aux /* - * Install our frame info. + * Install our frame info; register java classes, if any. */ -/* ??? How can we rationally keep this size correct? */ - .section .bss .type frame_object,@object .size frame_object, 48 @@ -205,8 +206,16 @@ __do_frame_setup: jsr $26,__register_frame_info ldgp $29,0($26) - ldq $26,0($30) -0: lda $30,16($30) +0: lda $1,_Jv_RegisterClasses + lda $16,__JCR_LIST__ + beq $1,0f + ldq $2,8($16) + beq $2,0f + jsr $26,_Jv_RegisterClasses + ldgp $29,0($26) + +0: ldq $26,0($30) + lda $30,16($30) ret .end __do_frame_setup @@ -216,3 +225,4 @@ __do_frame_setup: #ifdef SHARED .weak __cxa_finalize #endif +.weak _Jv_RegisterClasses diff --git a/gcc/config/alpha/crtend.asm b/gcc/config/alpha/crtend.asm index 662eb22..1ffd808 100644 --- a/gcc/config/alpha/crtend.asm +++ b/gcc/config/alpha/crtend.asm @@ -41,17 +41,20 @@ application's lists. */ .section .ctors,"aw" - .align 3 __CTOR_END__: .quad 0 .section .dtors,"aw" - .align 3 __DTOR_END__: .quad 0 +.section .jcr,"aw" + .align 3 +__JCR_END__: + .quad 0 + .section .eh_frame,"aw" __FRAME_END__: .quad 0 |