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

@ -1,22 +1,22 @@
/* Machine-dependent ELF dynamic relocation inline functions. Alpha version. /* Machine-dependent ELF dynamic relocation inline functions. Alpha 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 Richard Henderson <rth@tamu.edu>. Contributed by Richard Henderson <rth@tamu.edu>.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. 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

@ -1,21 +1,21 @@
/* Machine-dependent ELF dynamic relocation inline functions. m68k version. /* Machine-dependent ELF dynamic relocation inline functions. m68k 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.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. 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,22 +1,22 @@
/* 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>.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. 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

@ -1,20 +1,20 @@
/* Copyright (C) 1993, 1996 Free Software Foundation, Inc. /* Copyright (C) 1993, 1996 Free Software Foundation, Inc.
Contributed by Brendan Kehoe (brendan@zen.org). Contributed by Brendan Kehoe (brendan@zen.org).
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version. License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful, The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details. 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)