mirror of https://git.musl-libc.org/git/musl
Browse Source
prior to this change, a large portion of libc was unusable prior to relocation by the dynamic linker, due to dependence on the global data in the __libc structure and the need to obtain its address through the GOT. with this patch, the accessor function __libc_loc is now able to obtain the address of __libc via PC-relative addressing without using the GOT. this means the majority of libc functionality is now accessible right away. naturally, the above statements all depend on having an architecture where PC-relative addressing and jumps/calls are feasible, and a compiler that generates the appropriate code.rs-1.0
2 changed files with 19 additions and 4 deletions
@ -1,3 +1,11 @@ |
|||
#include "libc.h" |
|||
|
|||
struct libc libc; |
|||
#ifdef __PIC__ |
|||
struct __libc *__libc_loc() |
|||
{ |
|||
static struct __libc __libc; |
|||
return &__libc; |
|||
} |
|||
#else |
|||
struct __libc __libc; |
|||
#endif |
|||
|
|||
Loading…
Reference in new issue