mirror of
git://sourceware.org/git/glibc.git
synced 2025-03-06 20:58:33 +01: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
1 changed files with 11 additions and 0 deletions
|
@ -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…
Add table
Reference in a new issue