diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-06-18 19:48:42 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-06-18 19:48:42 -0400 |
commit | 51e2d8310222ddd4d4e895f55c627100d863aa95 (patch) | |
tree | d64c18bacc3fc0609abc2d88d6d336f84d3e4e74 /src/ldso/i386 | |
parent | d43ff110bcb258df61448d21da3b1a89088388f6 (diff) | |
download | musl-51e2d8310222ddd4d4e895f55c627100d863aa95.tar.gz |
experimental dynamic linker!
some notes:
- library search path is hard coded
- x86_64 code is untested and may not work
- dlopen/dlsym is not yet implemented
- relocations in read-only memory won't work
Diffstat (limited to 'src/ldso/i386')
-rw-r--r-- | src/ldso/i386/start.s | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ldso/i386/start.s b/src/ldso/i386/start.s new file mode 100644 index 00000000..47c2748b --- /dev/null +++ b/src/ldso/i386/start.s @@ -0,0 +1,19 @@ +.text +.global _start +_start: + xorl %ebp,%ebp + popl %ecx + movl %esp,%eax + andl $-16,%esp + movl %eax,%esi + movl %ecx,%edi + pushl %ebp + call 1f +1: addl $_GLOBAL_OFFSET_TABLE_,(%esp) + pushl %eax + pushl %ecx + call __dynlink + movl %esi,%esp + pushl %edi + xorl %edx,%edx + jmp *%eax |