Created
October 6, 2018 03:57
-
-
Save k3170makan/067d8626a6854791c4f404ae2da29705 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* This is the canonical entry point, usually the first thing in the text | |
| segment. The SVR4/i386 ABI (pages 3-31, 3-32) says that when the entry | |
| point runs, most registers' values are unspecified, except for: | |
| %rdx Contains a function pointer to be registered with `atexit'. | |
| This is how the dynamic linker arranges to have DT_FINI | |
| functions called for shared libraries that have been loaded | |
| before this code runs. | |
| %rsp The stack contains the arguments and environment: | |
| 0(%rsp) argc | |
| LP_SIZE(%rsp) argv[0] | |
| ... | |
| (LP_SIZE*argc)(%rsp) NULL | |
| (LP_SIZE*(argc+1))(%rsp) envp[0] | |
| ... | |
| NULL | |
| */ | |
| #include <sysdep.h> | |
| ENTRY (_start) | |
| /* Clearing frame pointer is insufficient, use CFI. */ | |
| cfi_undefined (rip) | |
| /* Clear the frame pointer. The ABI suggests this be done, to mark | |
| the outermost frame obviously. */ | |
| xorl %ebp, %ebp | |
| /* Extract the arguments as encoded on the stack and set up | |
| the arguments for __libc_start_main (int (*main) (int, char **, char **), | |
| int argc, char *argv, | |
| void (*init) (void), void (*fini) (void), | |
| void (*rtld_fini) (void), void *stack_end). | |
| The arguments are passed via registers and on the stack: | |
| main: %rdi | |
| argc: %rsi | |
| argv: %rdx | |
| init: %rcx | |
| fini: %r8 | |
| rtld_fini: %r9 | |
| stack_end: stack. */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment