summary refs log tree commit diff
path: root/sysdeps/m68k
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>1999-07-26 08:27:39 +0000
committerAndreas Schwab <schwab@suse.de>1999-07-26 08:27:39 +0000
commit60bb3e188c65ddc1bfa92c716c1ef87277fac38b (patch)
tree5dc37a7b6d29dab07c075daa7600d19f5d6c119c /sysdeps/m68k
parentf1778711c8a5b50052e9c7165d612449ba2ad087 (diff)
downloadglibc-60bb3e188c65ddc1bfa92c716c1ef87277fac38b.tar.gz
glibc-60bb3e188c65ddc1bfa92c716c1ef87277fac38b.tar.xz
glibc-60bb3e188c65ddc1bfa92c716c1ef87277fac38b.zip
* sysdeps/m68k/dl-machine.h (RTLD_START): Call pre-init funtions.
Diffstat (limited to 'sysdeps/m68k')
-rw-r--r--sysdeps/m68k/dl-machine.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h
index f9f9bf7626..e3ebca5a9d 100644
--- a/sysdeps/m68k/dl-machine.h
+++ b/sysdeps/m68k/dl-machine.h
@@ -181,6 +181,20 @@ _dl_start_user:
 0:	| Push the searchlist of the main object as argument in
 	| the _dl_init_next call below.
 	move.l ([_dl_main_searchlist@GOT.w, %a5]), %d2
+	| First dun the pre-initializers.
+0:	move.l %d2, -(%sp)
+	| Call _dl_preinit_next to return the address of an pre-initializer
+	| function to run.
+	bsr.l _dl_preinit_next@PLTPC
+	add.l #4, %sp | Pop argument.
+	| Check for zero return, when out of pre-initializers.
+	tst.l %d0
+	jeq 0f
+	| Call the shared object pre-initializer function.
+	move.l %d0, %a0
+	jsr (%a0)
+	| Loop to call _dl_preinit_next for the next pre-initializer.
+	jra 0b
 0:	move.l %d2, -(%sp)
 	| Call _dl_init_next to return the address of an initializer
 	| function to run.