From f1fc182396bd179e3c8faa3efe2372af32f745f6 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 4 Dec 1996 01:41:27 +0000 Subject: [PATCH] update from main archive 961203 --- sysdeps/alpha/dl-machine.h | 42 ++++++++++++++++++------------------ sysdeps/m68k/dl-machine.h | 39 +++++++++++++++++---------------- sysdeps/mips/dl-machine.h | 43 +++++++++++++++++++------------------ sysdeps/unix/alpha/sysdep.S | 40 +++++++++++----------------------- 4 files changed, 75 insertions(+), 89 deletions(-) diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index 415549d205..1c71ec8ab2 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -1,22 +1,22 @@ /* Machine-dependent ELF dynamic relocation inline functions. Alpha version. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Richard Henderson . + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson . -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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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 + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -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 -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This was written in the absence of an ABI -- don't expect it to remain unchanged. */ @@ -37,13 +37,13 @@ elf_machine_matches_host (Elf64_Word e_machine) return e_machine == EM_ALPHA; } -/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. - Must be inlined in a function which uses global data. */ -static inline Elf64_Addr * -elf_machine_got (void) +/* Return the link-time address of _DYNAMIC. The multiple-got-capable + linker no longer allocates the first .got entry for this. But not to + worry, no special tricks are needed. */ +static inline Elf64_Addr +elf_machine_dynamic (void) { - register Elf64_Addr gp __asm__("$29"); - return (Elf64_Addr *)(gp - 0x8000); + return (Elf64_Addr) &_DYNAMIC; } /* Return the run-time load address of the shared object. */ diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index 8b9872c15a..a4b1edcdd9 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -1,21 +1,21 @@ /* Machine-dependent ELF dynamic relocation inline functions. m68k version. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. -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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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 + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -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 -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef 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_. - Must be inlined in a function which uses global data. */ -static inline Elf32_Addr * -elf_machine_got (void) +/* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +static inline Elf32_Addr +elf_machine_dynamic (void) { register Elf32_Addr *got asm ("%a5"); - return got; + return *got; } diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h index c0ac649144..c00afbe549 100644 --- a/sysdeps/mips/dl-machine.h +++ b/sysdeps/mips/dl-machine.h @@ -1,22 +1,22 @@ -/* Machine-dependent ELF dynamic relocation inline functions. mips version. -Copyright (C) 1996 Free Software Foundation, Inc. -This file is part of the GNU C Library. -Contributed by Kazumoto Kojima . +/* Machine-dependent ELF dynamic relocation inline functions. MIPS version. + Copyright (C) 1996 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Kazumoto Kojima . -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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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 + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -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 -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #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. */ return (ElfW(Addr) *) (gpreg - 0x7ff0); } -/* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. - Must be inlined in a function which uses global data. */ -static inline ElfW(Addr) * -elf_machine_got (void) +/* Return the link-time address of _DYNAMIC. Conveniently, this is the + first element of the GOT. This must be inlined in a function which + uses global data. */ +static inline ElfW(Addr) +elf_machine_dynamic (void) { register ElfW(Addr) gp asm ("$28"); - return (ElfW(Addr) *) (gp - 0x7ff0); + return * (ElfW(Addr) *) (gp - 0x7ff0); } diff --git a/sysdeps/unix/alpha/sysdep.S b/sysdeps/unix/alpha/sysdep.S index 08dc3b4851..9df313422c 100644 --- a/sysdeps/unix/alpha/sysdep.S +++ b/sysdeps/unix/alpha/sysdep.S @@ -1,20 +1,20 @@ /* Copyright (C) 1993, 1996 Free Software Foundation, Inc. Contributed by Brendan Kehoe (brendan@zen.org). -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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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 + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -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 -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include @@ -63,22 +63,6 @@ __syscall_error: lda sp, 16(sp) ret .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 ENTRY(__syscall_error)