mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
riscv: add support for static PIE
In order to support static PIE the startup code must avoid relocations before __libc_start_main is called.
This commit is contained in:
parent
bcf2abd43b
commit
6edaa12b41
@ -50,7 +50,13 @@ ENTRY (ENTRY_POINT)
|
||||
call load_gp
|
||||
mv a5, a0 /* rtld_fini. */
|
||||
/* main may be in a shared library. */
|
||||
#if defined PIC && !defined SHARED
|
||||
/* Avoid relocation in static PIE since _start is called before it
|
||||
is relocated. */
|
||||
lla a0, __wrap_main
|
||||
#else
|
||||
la a0, main
|
||||
#endif
|
||||
REG_L a1, 0(sp) /* argc. */
|
||||
addi a2, sp, SZREG /* argv. */
|
||||
andi sp, sp, ALMASK /* Align stack. */
|
||||
@ -62,6 +68,11 @@ ENTRY (ENTRY_POINT)
|
||||
ebreak
|
||||
END (ENTRY_POINT)
|
||||
|
||||
#if defined PIC && !defined SHARED
|
||||
__wrap_main:
|
||||
tail main@plt
|
||||
#endif
|
||||
|
||||
/* Dynamic links need the global pointer to be initialized prior to calling
|
||||
any shared library's initializers, so we use preinit_array to load it.
|
||||
This doesn't cut it for static links, though, since the global pointer
|
||||
|
Loading…
Reference in New Issue
Block a user