📄 initfini.c
字号:
/* Special .init and .fini section support for SH. Copyright (C) 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *//* This file is compiled into assembly code which is then munged by a sed script into two files: crti.s and crtn.s. * crti.s puts a function prologue at the beginning of the .init and .fini sections and defines global symbols for those addresses, so they can be called as functions. * crtn.s puts the corresponding function epilogues in the .init and .fini sections. */__asm__ ("\\n\#include \"defs.h\"\n\#define SHARED\n\\n\/*@HEADER_ENDS*/\n\\n\/*@TESTS_BEGIN*/\n\\n\/*@TESTS_END*/\n\\n\/*@_init_PROLOG_BEGINS*/\n\ .section .init\n\ .align 5\n\ .global _init\n\ .type _init,@function\n\_init:\n\ mov.l r12,@-r15\n\ mov.l r14,@-r15\n\ sts.l pr,@-r15\n\#ifdef SHARED\n\ mova .L22,r0\n\ mov.l .L22,r12\n\ add r0,r12\n\ mova .L23,r0\n\ mov.l .L23,r1\n\ add r0,r1\n\#else\n\ mov.l .L23,r1\n\#endif\n\ jsr @r1\n\ mov r15,r14\n\ bra 1f\n\ nop\n\ .align 2\n\#ifdef SHARED\n\.L22:\n\ .long _GLOBAL_OFFSET_TABLE_\n\.L23:\n\ .long __gmon_start__@PLT\n\#else\n\.L23:\n\ .long __gmon_start__\n\#endif\n\1:\n\ ALIGN\n\ END_INIT\n\\n\ \n\/*@_init_PROLOG_ENDS*/\n\\n\/*@_init_EPILOG_BEGINS*/\n\ .section .init\n\ mov r14,r15\n\ lds.l @r15+,pr\n\ mov.l @r15+,r14\n\ rts \n\ mov.l @r15+,r12\n\ END_INIT\n\ .section .text\n\ .align 5\n\ .weak __gmon_start__\n\ .type __gmon_start__,@function\n\__gmon_start__:\n\ mov.l r14,@-r15\n\ mov r15,r14\n\ mov r14,r15\n\ rts \n\ mov.l @r15+,r14\n\ \n\/*@_init_EPILOG_ENDS*/\n\\n\/*@_fini_PROLOG_BEGINS*/\n\ .section .fini\n\ .align 5\n\ .global _fini\n\ .type _fini,@function\n\_fini:\n\ mov.l r12,@-r15\n\ mov.l r14,@-r15\n\ sts.l pr,@-r15\n\#ifdef SHARED\n\ mova .L27,r0\n\ mov.l .L27,r12\n\ add r0,r12\n\#endif\n\ mov r15,r14\n\ ALIGN\n\ END_FINI\n\#ifdef SHARED\n\ bra 1f\n\ nop\n\ .align 2\n\.L27:\n\ .long _GLOBAL_OFFSET_TABLE_\n\#endif\n\1:\n\/*@_fini_PROLOG_ENDS*/\n\\n\/*@_fini_EPILOG_BEGINS*/\n\ .section .fini\n\ mov r14,r15\n\ lds.l @r15+,pr\n\ mov.l @r15+,r14\n\ rts \n\ mov.l @r15+,r12\n\\n\ END_FINI\n\ \n\/*@_fini_EPILOG_ENDS*/\n\\n\/*@TRAILER_BEGINS*/\");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -