aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>2001-08-09 13:22:15 -0700
committerRichard Henderson <rth@gcc.gnu.org>2001-08-09 13:22:15 -0700
commitef8d8b8922a034dfac5cff9d5fa781dc57c49ed0 (patch)
tree1da9d8a8afe474422c00e74d9991395bd85720d9 /gcc
parent3b87de3d00a64485f6b72bfc448c17e799c83e30 (diff)
downloadgcc-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/ChangeLog44
-rw-r--r--gcc/config/alpha/crtbegin.asm40
-rw-r--r--gcc/config/alpha/crtend.asm7
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