1/* 2 * Copyright 2005, Axel Dörfler, axeld@pinc-software.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6/** This file contains the first part of the ".init" and ".fini" sections in 7 * the ELF executable. 8 * The functions defined here will be called during initialization/termination 9 * of the loaded executable/library. The ".init" and ".fini" sections are 10 * stacked together like this: 11 * 12 * crti.S entry point 13 * call to _init_before/_term_before 14 * crtbegin.S GCC specific: constructors/destructors are called, ... 15 * crtend.S 16 * crtn.S call to _init_after/_term_after 17 * exit 18 */ 19 20#define FUNCTION(x) .global x; .type x,@function; x 21 22.section .init 23FUNCTION(_init): 24 pushl %ebp 25 movl %esp, %ebp 26 pushl 0xc(%ebp) // program args 27 pushl 0x8(%ebp) // image ID 28 call _init_before 29 // crtbegin.o stuff comes here 30 31.section .fini 32FUNCTION(_fini): 33 pushl %ebp 34 movl %esp, %ebp 35 pushl 0xc(%ebp) // program args 36 pushl 0x8(%ebp) // image ID 37 call _term_before 38 // crtbegin.o stuff comes here 39