From: Rich Felker Date: Thu, 17 Sep 2015 07:20:43 +0000 (+0000) Subject: new dlstart stage-2 chaining for mips X-Git-Tag: v1.1.12~52 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cd7159e7be73451befedce2e9dfd9f6a4c3b21f0;p=oweals%2Fmusl.git new dlstart stage-2 chaining for mips --- diff --git a/arch/mips/reloc.h b/arch/mips/reloc.h index 8aa02852..9b40e3da 100644 --- a/arch/mips/reloc.h +++ b/arch/mips/reloc.h @@ -29,3 +29,18 @@ #define CRTJMP(pc,sp) __asm__ __volatile__( \ "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ + ".hidden " #sym "\n" \ + ".set push \n" \ + ".set noreorder \n" \ + " bal 1f \n" \ + " nop \n" \ + " .gpword . \n" \ + " .gpword " #sym " \n" \ + "1: lw %0, ($ra) \n" \ + " subu %0, $ra, %0 \n" \ + " lw $ra, 4($ra) \n" \ + " addu %0, %0, $ra \n" \ + ".set pop \n" \ + : "=r"(*(fp)) : : "memory", "ra" )