diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-03-20 05:17:15 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-03-20 05:17:15 +0000 |
commit | f752bfe37962db44ac8db553d840f8215966911e (patch) | |
tree | 59f831373e01717405dcbbc4ea3b94d82490fa4d /sysdeps/sparc | |
parent | c57abfa73560ac665e126a66081e1549bcd4645b (diff) | |
download | glibc-f752bfe37962db44ac8db553d840f8215966911e.zip glibc-f752bfe37962db44ac8db553d840f8215966911e.tar.gz glibc-f752bfe37962db44ac8db553d840f8215966911e.tar.bz2 |
Update.cvs/libc-ud-970319
1997-03-20 06:07 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/powerpc/dl-machine.h: Fix typo in last change.
* sysdeps/unix/sparc/sysdep.h: Update copyright.
1997-03-19 15:13 Miguel de Icaza <miguel@nuclecu.unam.mx>
* linuxthreads/sysdeps/sparc/pt-machine (RELEASE): Fix.
* stdlib/tst-strtol.c: Save the value of errno, printf may modify
it.
* sysdeps/sparc/DEFS.h [HAVE_ELF]: Use type @function in the FUNC
macro on ELF systems.
* sysdeps/sparc/configure.in: Fix.
* sysdeps/sparc/dl-machine.h: Fix OPCODE_CALL.
* sysdeps/sparc/setjmp.S: Fix my bugs.
* sysdeps/unix/sysv/linux/sparc/Dist: Add start.c, fork.S, and pipe.S.
* sysdeps/unix/sysv/linux/sparc/Makefile: Define asm-CPPFLAGS and
as-FLAGS-.so.
* sysdeps/unix/sysv/linux/sparc/syscalls.list: Add fork, pipe, and
syscall.
* sysdeps/unix/sysv/linux/sparc/fork.S: New file.
* sysdeps/unix/sysv/linux/sparc/pipe.S: New file.
* sysdeps/unix/sysv/linux/sparc/socket.S: Fix.
* sysdeps/unix/sysv/linux/sparc/sysdep.h: Fix.
* elf/dl-lookup.c (do_lookup): Return true if we found a weak
symbol.
(_dl_lookup_symbol): Test against the symbol being global not
against the symbol being not weak (fixes important problem with
the SPARC linker)
* sysdeps/unix/sysv/linux/sparc/brk.c: Fix.
* sysdeps/unix/sysv/linux/sparc/start.c: Startup code for
Linux/SPARC (while I get my asmCPPFLAGS-so variable).
1997-03-20 01:49 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/libm-ieee754/s_tanhl.c (__tanhl): Correct handling of -inf.
* elf/dl-reloc.c (RESOLVE): Don't try to resolve local symbols.
Diffstat (limited to 'sysdeps/sparc')
-rw-r--r-- | sysdeps/sparc/DEFS.h | 10 | ||||
-rwxr-xr-x | sysdeps/sparc/configure | 2 | ||||
-rw-r--r-- | sysdeps/sparc/configure.in | 2 | ||||
-rw-r--r-- | sysdeps/sparc/dl-machine.h | 3 | ||||
-rw-r--r-- | sysdeps/sparc/setjmp.S | 9 |
5 files changed, 19 insertions, 7 deletions
diff --git a/sysdeps/sparc/DEFS.h b/sysdeps/sparc/DEFS.h index ef69663..ab70f55 100644 --- a/sysdeps/sparc/DEFS.h +++ b/sysdeps/sparc/DEFS.h @@ -1,4 +1,12 @@ -#define FUNC(name) \ +#ifdef HAVE_ELF +# define FUNC(name) \ + .global name; \ + .type name,@function; \ + .align 4; \ + name: +#else +# define FUNC(name) \ .global name; \ .align 4; \ name: +#endif diff --git a/sysdeps/sparc/configure b/sysdeps/sparc/configure index 5616867..a8f815a 100755 --- a/sysdeps/sparc/configure +++ b/sysdeps/sparc/configure @@ -1,4 +1,4 @@ # Local configure fragment for sysdeps/sparc. # The assembler on SPARC needs the -fPIC flag even when it's assembler code. -ASFLAGS_SO = -fPIC +ASFLAGS_SO=-fPIC diff --git a/sysdeps/sparc/configure.in b/sysdeps/sparc/configure.in index 3e2b2f0..e71a7e3 100644 --- a/sysdeps/sparc/configure.in +++ b/sysdeps/sparc/configure.in @@ -3,4 +3,4 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/sparc. # The assembler on SPARC needs the -fPIC flag even when it's assembler code. -ASFLAGS_SO = -fPIC +ASFLAGS_SO=-fPIC diff --git a/sysdeps/sparc/dl-machine.h b/sysdeps/sparc/dl-machine.h index 6f1d7eb..e87f197 100644 --- a/sysdeps/sparc/dl-machine.h +++ b/sysdeps/sparc/dl-machine.h @@ -26,7 +26,7 @@ /* Some SPARC opcodes we need to use for self-modifying code. */ #define OPCODE_NOP 0x01000000 /* nop */ -#define OPCODE_CALL 0x04000000 /* call ?; add PC-rel word address */ +#define OPCODE_CALL 0x40000000 /* call ?; add PC-rel word address */ #define OPCODE_SETHI_G1 0x03000000 /* sethi ?, %g1; add value>>10 */ #define OPCODE_JMP_G1 0x81c06000 /* jmp %g1+?; add lo 10 bits of value */ #define OPCODE_SAVE_SP64 0x9de3bfc0 /* save %sp, -64, %sp */ @@ -262,6 +262,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy) .globl _dl_runtime_resolve .type _dl_runtime_resolve, @function _dl_runtime_resolve: + t 1 #call %g0 # Pass two args to fixup: the PLT address computed from the PC saved # in the PLT's call insn, and the reloc offset passed in %g1. diff --git a/sysdeps/sparc/setjmp.S b/sysdeps/sparc/setjmp.S index d959907..f07a348 100644 --- a/sysdeps/sparc/setjmp.S +++ b/sysdeps/sparc/setjmp.S @@ -26,16 +26,19 @@ ENTRY (__sigsetjmp) return PC. Save the signal mask if requested with a tail-call for simplicity; it always returns zero. */ #ifdef PIC + mov %o7,%g1 2: - jmpl 1f,%g2 + call 1f nop 1: sethi %hi(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 - sethi %hi(C_SYMBOL_NAME (__sigjmp_save)), %g3 - st %sp, [%o0 + (JB_SP * 4)] or %l7,%lo(_GLOBAL_OFFSET_TABLE_-(2b-.)),%l7 + add %l7,%o7,%l7 + sethi %hi(C_SYMBOL_NAME (__sigjmp_save)), %g3 or %g3,%lo(C_SYMBOL_NAME (__sigjmp_save)), %g3 + st %sp, [%o0 + (JB_SP * 4)] st %fp, [%o0 + (JB_FP * 4)] + mov %g1,%o7 ld [%l7+%g3],%g1 jmp %g1 st %o7, [%o0+(JB_PC*4)] |