about summary refs log tree commit diff
path: root/sysdeps/m68k/dl-machine.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/m68k/dl-machine.h')
-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.