1/* 2 * Copyright 2005-2006, 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 sub $4,%esp // Keep stack aligned 27 pushl 8(%ebp) // put image ID on the stack again 28 // crtbegin.o stuff comes here 29 30.section .fini 31FUNCTION(_fini): 32 pushl %ebp 33 movl %esp, %ebp 34 sub $4,%esp // Keep stack aligned 35 pushl 8(%ebp) 36 // crtend.o stuff comes here 37