update from main archive 961203

This commit is contained in:
Ulrich Drepper 1996-12-04 01:41:27 +00:00
parent d57e8fd526
commit f1fc182396
4 changed files with 75 additions and 89 deletions

View File

@ -15,8 +15,8 @@ Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave, not, write to the Free Software Foundation, Inc.,
Cambridge, MA 02139, USA. */ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This was written in the absence of an ABI -- don't expect /* This was written in the absence of an ABI -- don't expect
it to remain unchanged. */ it to remain unchanged. */
@ -37,13 +37,13 @@ elf_machine_matches_host (Elf64_Word e_machine)
return e_machine == EM_ALPHA; return e_machine == EM_ALPHA;
} }
/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. /* Return the link-time address of _DYNAMIC. The multiple-got-capable
Must be inlined in a function which uses global data. */ linker no longer allocates the first .got entry for this. But not to
static inline Elf64_Addr * worry, no special tricks are needed. */
elf_machine_got (void) static inline Elf64_Addr
elf_machine_dynamic (void)
{ {
register Elf64_Addr gp __asm__("$29"); return (Elf64_Addr) &_DYNAMIC;
return (Elf64_Addr *)(gp - 0x8000);
} }
/* Return the run-time load address of the shared object. */ /* Return the run-time load address of the shared object. */

View File

@ -14,8 +14,8 @@ Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave, not, write to the Free Software Foundation, Inc.,
Cambridge, MA 02139, USA. */ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef dl_machine_h #ifndef dl_machine_h
#define dl_machine_h #define dl_machine_h
@ -38,13 +38,14 @@ elf_machine_matches_host (Elf32_Half e_machine)
} }
/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. /* Return the link-time address of _DYNAMIC. Conveniently, this is the
Must be inlined in a function which uses global data. */ first element of the GOT. This must be inlined in a function which
static inline Elf32_Addr * uses global data. */
elf_machine_got (void) static inline Elf32_Addr
elf_machine_dynamic (void)
{ {
register Elf32_Addr *got asm ("%a5"); register Elf32_Addr *got asm ("%a5");
return got; return *got;
} }

View File

@ -1,4 +1,4 @@
/* Machine-dependent ELF dynamic relocation inline functions. mips version. /* Machine-dependent ELF dynamic relocation inline functions. MIPS version.
Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>. Contributed by Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
@ -15,8 +15,8 @@ Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave, not, write to the Free Software Foundation, Inc.,
Cambridge, MA 02139, USA. */ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ELF_MACHINE_NAME "MIPS" #define ELF_MACHINE_NAME "MIPS"
@ -67,13 +67,14 @@ elf_mips_got_from_gpreg (ElfW(Addr) gpreg)
/* FIXME: the offset of gp from GOT may be system-dependent. */ /* FIXME: the offset of gp from GOT may be system-dependent. */
return (ElfW(Addr) *) (gpreg - 0x7ff0); return (ElfW(Addr) *) (gpreg - 0x7ff0);
} }
/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. /* Return the link-time address of _DYNAMIC. Conveniently, this is the
Must be inlined in a function which uses global data. */ first element of the GOT. This must be inlined in a function which
static inline ElfW(Addr) * uses global data. */
elf_machine_got (void) static inline ElfW(Addr)
elf_machine_dynamic (void)
{ {
register ElfW(Addr) gp asm ("$28"); register ElfW(Addr) gp asm ("$28");
return (ElfW(Addr) *) (gp - 0x7ff0); return * (ElfW(Addr) *) (gp - 0x7ff0);
} }

View File

@ -13,8 +13,8 @@ Library General Public License for more details.
You should have received a copy of the GNU Library General Public You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave, not, write to the Free Software Foundation, Inc.,
Cambridge, MA 02139, USA. */ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sysdep.h> #include <sysdep.h>
#include <features.h> #include <features.h>
@ -63,22 +63,6 @@ __syscall_error:
lda sp, 16(sp) lda sp, 16(sp)
ret ret
.end __syscall_error .end __syscall_error
/* A default non-threaded version of __errno_location that just returns
the address of errno. */
.weak __errno_location
.ent __errno_location
__errno_location:
.frame sp, 0, ra
ldgp gp, 0(t12)
.mask 0, 0
.prologue 1
lda v0, errno
ret
.end __errno_location
#else #else
ENTRY(__syscall_error) ENTRY(__syscall_error)