1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
1999-06-09  Jakub Jelinek   <jj@ultra.linux.cz>

	* stdlib/longlong.h: gas changed sethi handling when without
	%hi(). Fix assembly.
	* sysdeps/generic/dl-cache.c (_dl_cache_lookup): Allow
	port specific cache id checks.
	* sysdeps/generic/dl-cache.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h: New file.
This commit is contained in:
Ulrich Drepper
1999-06-09 11:42:30 +00:00
parent c4db757322
commit c41baa7976
6 changed files with 67 additions and 13 deletions

View File

@ -1,3 +1,12 @@
1999-06-09 Jakub Jelinek <jj@ultra.linux.cz>
* stdlib/longlong.h: gas changed sethi handling when without
%hi(). Fix assembly.
* sysdeps/generic/dl-cache.c (_dl_cache_lookup): Allow
port specific cache id checks.
* sysdeps/generic/dl-cache.h: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/dl-cache.h: New file.
1999-06-08 Ulrich Drepper <drepper@cygnus.com> 1999-06-08 Ulrich Drepper <drepper@cygnus.com>
* gmon/gmon.c: Remove advertising clause of copyright. * gmon/gmon.c: Remove advertising clause of copyright.

View File

@ -191,12 +191,7 @@ Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution. documentation and/or other materials provided with the distribution.
@item @item
All advertising materials mentioning features or use of this software [This condition was removed.]
must display the following acknowledgement:
@quotation
This product includes software developed by the University of
California, Berkeley and its contributors.
@end quotation
@item @item
Neither the name of the University nor the names of its contributors Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software may be used to endorse or promote products derived from this software

View File

@ -1220,7 +1220,7 @@ extern USItype __udiv_qrnnd __P ((USItype *, USItype, USItype, USItype));
srlx %7,32,%5 srlx %7,32,%5
mulx %3,%5,%3 mulx %3,%5,%3
mulx %2,%5,%5 mulx %2,%5,%5
sethi 0x80000000,%2 sethi %%hi(0x80000000),%2
addcc %4,%3,%4 addcc %4,%3,%4
srlx %4,32,%4 srlx %4,32,%4
add %2,%2,%2 add %2,%2,%2

View File

@ -20,6 +20,7 @@
#include <unistd.h> #include <unistd.h>
#include <elf/ldsodefs.h> #include <elf/ldsodefs.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <dl-cache.h>
/* System-dependent function to read a file's whole contents /* System-dependent function to read a file's whole contents
in the most convenient manner available. */ in the most convenient manner available. */
@ -48,9 +49,12 @@ struct cache_file
static struct cache_file *cache; static struct cache_file *cache;
static size_t cachesize; static size_t cachesize;
/* 1 if cache_data + PTR points into the cache. */
#define _dl_cache_verify_ptr(ptr) (ptr < cachesize - sizeof *cache)
/* This is the cache ID we expect. Normally it is 3 for glibc linked /* This is the cache ID we expect. Normally it is 3 for glibc linked
binaries. */ binaries. */
int _dl_correct_cache_id = 3; int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
/* Helper function which must match the one in ldconfig, so that /* Helper function which must match the one in ldconfig, so that
we rely on the same sort order. */ we rely on the same sort order. */
@ -146,7 +150,7 @@ _dl_load_cache_lookup (const char *name)
while (left <= right) while (left <= right)
{ {
/* Make sure string table indices are not bogus before using them. */ /* Make sure string table indices are not bogus before using them. */
if (cache->libs[middle].key >= cachesize - sizeof *cache) if (! _dl_cache_verify_ptr (cache->libs[middle].key))
{ {
cmpres = 1; cmpres = 1;
break; break;
@ -177,7 +181,7 @@ _dl_load_cache_lookup (const char *name)
while (middle > 0 while (middle > 0
/* Make sure string table indices are not bogus before /* Make sure string table indices are not bogus before
using them. */ using them. */
&& cache->libs[middle - 1].key < cachesize - sizeof *cache && _dl_cache_verify_ptr (cache->libs[middle - 1].key)
/* Actually compare the entry. */ /* Actually compare the entry. */
&& (_dl_cache_libcmp (name, && (_dl_cache_libcmp (name,
cache_data + cache->libs[middle - 1].key) cache_data + cache->libs[middle - 1].key)
@ -193,15 +197,15 @@ _dl_load_cache_lookup (const char *name)
/* We haven't seen this string so far. Test whether the /* We haven't seen this string so far. Test whether the
index is ok and whether the name matches. Otherwise index is ok and whether the name matches. Otherwise
we are done. */ we are done. */
&& (cache->libs[middle].key >= cachesize - sizeof *cache && (! _dl_cache_verify_ptr (cache->libs[middle].key)
|| (_dl_cache_libcmp (name, || (_dl_cache_libcmp (name,
cache_data + cache->libs[middle].key) cache_data + cache->libs[middle].key)
!= 0))) != 0)))
break; break;
flags = cache->libs[middle].flags; flags = cache->libs[middle].flags;
if ((flags == 1 || flags == 3) if (_dl_cache_check_flags (flags)
&& cache->libs[middle].value < cachesize - sizeof *cache) && _dl_cache_verify_ptr (cache->libs[middle].value))
{ {
if (best == NULL || flags == _dl_correct_cache_id) if (best == NULL || flags == _dl_correct_cache_id)
{ {

View File

@ -0,0 +1,23 @@
/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
Copyright (C) 1999 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 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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#define _DL_CACHE_DEFAULT_ID 3
#define _dl_cache_check_flags(flags) \
((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)

View File

@ -0,0 +1,23 @@
/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
Copyright (C) 1999 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 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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#define _DL_CACHE_DEFAULT_ID 0x103
#define _dl_cache_check_flags(flags) \
((flags) == _DL_CACHE_DEFAULT_ID)