diff options
author | Khem Raj <raj.khem@gmail.com> | 2009-07-20 13:41:28 -0700 |
---|---|---|
committer | Austin Foxley <austinf@cetoncorp.com> | 2009-08-19 12:27:50 -0700 |
commit | c3f6cad8dc35854c21407326cae6e990ba07ab26 (patch) | |
tree | 66e95db310041da72fbe8a7f26063d84b5c2f246 | |
parent | 674092a9c523fdb53bf9ed60d1ddbaa30a5a0558 (diff) | |
download | uClibc-alpine-c3f6cad8dc35854c21407326cae6e990ba07ab26.tar.bz2 uClibc-alpine-c3f6cad8dc35854c21407326cae6e990ba07ab26.tar.xz |
It fixes the following warnings seen on mips build.
libc/sysdeps/linux/mips/clone.S: Assembler messages:
libc/sysdeps/linux/mips/clone.S:122: Warning: No .frame pseudo-op used in PIC code
libc/sysdeps/linux/mips/clone.S:75: Warning: Pretending global symbol used as branch target is local.
libc/sysdeps/linux/mips/crt1.S: Assembler messages:
libc/sysdeps/linux/mips/crt1.S:134: Warning: No .cprestore pseudo-op used in PIC code
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
-rw-r--r-- | libc/sysdeps/linux/mips/clone.S | 21 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/crt1.S | 5 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/sys/asm.h | 2 |
3 files changed, 20 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/mips/clone.S b/libc/sysdeps/linux/mips/clone.S index 40caf18e0..52b81cb1e 100644 --- a/libc/sysdeps/linux/mips/clone.S +++ b/libc/sysdeps/linux/mips/clone.S @@ -55,8 +55,8 @@ clone: /* Sanity check arguments. */ li v0,EINVAL - beqz a0,error /* No NULL function pointers. */ - beqz a1,error /* No NULL stack pointers. */ + beqz a0,L(error) /* No NULL function pointers. */ + beqz a1,L(error) /* No NULL stack pointers. */ #if _MIPS_SIM != _MIPS_SIM_ABI32 and a1,~(16-1) /* force alignment */ @@ -71,8 +71,8 @@ clone: li v0,__NR_clone syscall - bnez a3,error - beqz v0,__thread_start + bnez a3,L(error) + beqz v0,L(__thread_start) /* Successful return from the parent */ #if _MIPS_SIM != _MIPS_SIM_ABI32 @@ -82,7 +82,7 @@ clone: j $31 ; nop /* Something bad happened -- no child created */ -error: +L(error): #if _MIPS_SIM != _MIPS_SIM_ABI32 .cpreturn #endif @@ -104,12 +104,14 @@ error: its own function so that we can terminate the stack trace with our debug info. */ -.globl __thread_start; + .globl __thread_start; .align 2; .ent __thread_start, 0; __thread_start: +L(__thread_start): #if _MIPS_SIM == _MIPS_SIM_ABI32 + .frame sp, 24, sp /* cp is already loaded. */ .cprestore 16 #endif @@ -123,7 +125,12 @@ __thread_start: /* Call _exit rather than doing it inline for breakpoint purposes. */ move a0,v0 - jal HIDDEN_JUMPTARGET(_exit) +#ifdef __PIC__ + PTR_LA t9,_exit + jalr t9 +#else + jal _exit +#endif .end __thread_start weak_alias(clone, __clone) diff --git a/libc/sysdeps/linux/mips/crt1.S b/libc/sysdeps/linux/mips/crt1.S index 2e38cf07c..e851d52d2 100644 --- a/libc/sysdeps/linux/mips/crt1.S +++ b/libc/sysdeps/linux/mips/crt1.S @@ -81,10 +81,12 @@ #endif .type main,@function .type __uClibc_main,@function + .ent __start __start: #ifdef __PIC__ #if _MIPS_SIM == _MIPS_SIM_ABI32 + .frame sp, 24, sp .set noreorder move $0, $31 /* Save old ra. */ bal 10f /* Find addr of cpload. */ @@ -93,6 +95,7 @@ __start: .cpload $31 move $31, $0 .set reorder + .cprestore 16 #else move $0, $31; /* Save old ra. */ .set noreorder @@ -108,7 +111,6 @@ __start: move $31, $0 #endif - PTR_LA $4, main /* main */ PTR_L $5, 0($29) /* argc */ PTR_ADDIU $6, $29, PTRSIZE /* argv */ @@ -136,6 +138,7 @@ hlt: /* Crash if somehow `__uClibc_main' returns anyway. */ b hlt .size __start,.-__start +.end __start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/mips/sys/asm.h b/libc/sysdeps/linux/mips/sys/asm.h index a339f7de3..d424ed3b1 100644 --- a/libc/sysdeps/linux/mips/sys/asm.h +++ b/libc/sysdeps/linux/mips/sys/asm.h @@ -97,6 +97,7 @@ l: \ # define SETUP_GPX64_L(cp_reg, ra_save, l) # define RESTORE_GP64 # define USE_ALT_CP(a) +# define L(label) $L ## label #else /* (_MIPS_SIM == _MIPS_SIM_ABI64) || (_MIPS_SIM == _MIPS_SIM_NABI32) */ /* * For callee-saved gp calling convention: @@ -131,6 +132,7 @@ l: \ /* Use alternate register for context pointer. */ # define USE_ALT_CP(reg) \ .cplocal reg +# define L(label) .L ## label #endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */ /* |