mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
MIPS: Use R_MICROMIPS_JALR rather than R_MIPS_JALR in microMIPS code
In a microMIPS compilation of `.init' code use the R_MICROMIPS_JALR relocation intended for PIC call relaxation in microMIPS code rather than the corresponding R_MIPS_JALR relocation meant for regular MIPS code only. * sysdeps/mips/mips32/crti.S (JALR_RELOC): New macro. (_init): Use it in place of hardcoded R_MIPS_JALR. * sysdeps/mips/mips64/n32/crti.S (JALR_RELOC): New macro. (_init): Use it in place of hardcoded R_MIPS_JALR. * sysdeps/mips/mips64/n64/crti.S (JALR_RELOC): New macro. (_init): Use it in place of hardcoded R_MIPS_JALR.
This commit is contained in:
parent
56ede9ed59
commit
f7f7931e58
@ -1,3 +1,12 @@
|
||||
2016-11-23 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* sysdeps/mips/mips32/crti.S (JALR_RELOC): New macro.
|
||||
(_init): Use it in place of hardcoded R_MIPS_JALR.
|
||||
* sysdeps/mips/mips64/n32/crti.S (JALR_RELOC): New macro.
|
||||
(_init): Use it in place of hardcoded R_MIPS_JALR.
|
||||
* sysdeps/mips/mips64/n64/crti.S (JALR_RELOC): New macro.
|
||||
(_init): Use it in place of hardcoded R_MIPS_JALR.
|
||||
|
||||
2016-11-23 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #20787]
|
||||
|
@ -40,6 +40,12 @@
|
||||
|
||||
#include <libc-symbols.h>
|
||||
|
||||
#ifdef __mips_micromips
|
||||
# define JALR_RELOC R_MICROMIPS_JALR
|
||||
#else
|
||||
# define JALR_RELOC R_MIPS_JALR
|
||||
#endif
|
||||
|
||||
#ifndef PREINIT_FUNCTION
|
||||
# define PREINIT_FUNCTION __gmon_start__
|
||||
#endif
|
||||
@ -71,13 +77,13 @@ _init:
|
||||
lw $2,%got(PREINIT_FUNCTION)($28)
|
||||
beq $2,$0,.Lno_weak_fn
|
||||
lw $25,%call16(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
.Lno_weak_fn:
|
||||
.insn
|
||||
#else
|
||||
lw $25,%got(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
#endif
|
||||
|
||||
|
@ -40,6 +40,12 @@
|
||||
|
||||
#include <libc-symbols.h>
|
||||
|
||||
#ifdef __mips_micromips
|
||||
# define JALR_RELOC R_MICROMIPS_JALR
|
||||
#else
|
||||
# define JALR_RELOC R_MIPS_JALR
|
||||
#endif
|
||||
|
||||
#ifndef PREINIT_FUNCTION
|
||||
# define PREINIT_FUNCTION __gmon_start__
|
||||
#endif
|
||||
@ -71,13 +77,13 @@ _init:
|
||||
lw $2,%got_disp(PREINIT_FUNCTION)($28)
|
||||
beq $2,$0,.Lno_weak_fn
|
||||
lw $25,%call16(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
.Lno_weak_fn:
|
||||
.insn
|
||||
#else
|
||||
lw $25,%got_disp(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
#endif
|
||||
|
||||
|
@ -40,6 +40,12 @@
|
||||
|
||||
#include <libc-symbols.h>
|
||||
|
||||
#ifdef __mips_micromips
|
||||
# define JALR_RELOC R_MICROMIPS_JALR
|
||||
#else
|
||||
# define JALR_RELOC R_MIPS_JALR
|
||||
#endif
|
||||
|
||||
#ifndef PREINIT_FUNCTION
|
||||
# define PREINIT_FUNCTION __gmon_start__
|
||||
#endif
|
||||
@ -71,13 +77,13 @@ _init:
|
||||
ld $2,%got_disp(PREINIT_FUNCTION)($28)
|
||||
beq $2,$0,.Lno_weak_fn
|
||||
ld $25,%call16(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
.Lno_weak_fn:
|
||||
.insn
|
||||
#else
|
||||
ld $25,%got_disp(PREINIT_FUNCTION)($28)
|
||||
.reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION
|
||||
.reloc 1f,JALR_RELOC,PREINIT_FUNCTION
|
||||
1: jalr $25
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user