mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
Update.
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-load.c (add_name_to_object): Don't translate strings. * elf/dl-minimal.c (_strerror_internal): Define it here to avoid pulling in the whole error list. (__dcgettext, dcgettext): Removed. * libc.map: Export _strerror_internal. 1998-02-18 10:50 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/fpu/t_exp.c: New file. 1998-02-18 Andreas Jaeger <aj@arthur.rhein-neckar.de> * nis/libnss_nisplus.map: NIS+ support is new in glibc 2.1, add everything with version GLIBC_2.1. * hesiod/libnss_hesiod.map: Likewise. 1998-02-18 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/arith.texi (Old-style number conversion): This node is a section, not a subsection. 1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/dl-lookup.c (make_string): Use __stpcpy instead of stpcpy. 1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/rtld.c (dl_main): Make sure that the library search paths have been initialized before the first call to _dl_map_object. 1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makerules (common-generated): Add libc_pic.os. 1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * elf/rtld.c (dl_main): Use PT_PHDR to figure out the load address of the executable. 1998-02-18 10:28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
This commit is contained in:
parent
1b5fd83083
commit
da8324650d
43
ChangeLog
43
ChangeLog
@ -1,4 +1,45 @@
|
|||||||
Wed Feb 18 10:28:58 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* elf/dl-load.c (add_name_to_object): Don't translate strings.
|
||||||
|
* elf/dl-minimal.c (_strerror_internal): Define it here to avoid
|
||||||
|
pulling in the whole error list.
|
||||||
|
(__dcgettext, dcgettext): Removed.
|
||||||
|
* libc.map: Export _strerror_internal.
|
||||||
|
|
||||||
|
1998-02-18 10:50 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* sysdeps/i386/fpu/t_exp.c: New file.
|
||||||
|
|
||||||
|
1998-02-18 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||||
|
|
||||||
|
* nis/libnss_nisplus.map: NIS+ support is new in glibc 2.1, add
|
||||||
|
everything with version GLIBC_2.1.
|
||||||
|
* hesiod/libnss_hesiod.map: Likewise.
|
||||||
|
|
||||||
|
1998-02-18 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||||
|
|
||||||
|
* manual/arith.texi (Old-style number conversion): This node is a
|
||||||
|
section, not a subsection.
|
||||||
|
|
||||||
|
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* elf/dl-lookup.c (make_string): Use __stpcpy instead of stpcpy.
|
||||||
|
|
||||||
|
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* elf/rtld.c (dl_main): Make sure that the library search paths
|
||||||
|
have been initialized before the first call to _dl_map_object.
|
||||||
|
|
||||||
|
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* Makerules (common-generated): Add libc_pic.os.
|
||||||
|
|
||||||
|
1998-02-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
|
* elf/rtld.c (dl_main): Use PT_PHDR to figure out the load address
|
||||||
|
of the executable.
|
||||||
|
|
||||||
|
1998-02-18 10:28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||||
|
|
||||||
* sysdeps/m68k/fpu/t_exp.c: New file.
|
* sysdeps/m68k/fpu/t_exp.c: New file.
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ add_name_to_object (struct link_map *l, char *name)
|
|||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
{
|
{
|
||||||
/* No more memory. */
|
/* No more memory. */
|
||||||
_dl_signal_error (ENOMEM, NULL, _("could not allocate name string"));
|
_dl_signal_error (ENOMEM, NULL, "could not allocate name string");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,8 +141,8 @@ add_name_to_object (struct link_map *l, char *name)
|
|||||||
if (newname == NULL)
|
if (newname == NULL)
|
||||||
{
|
{
|
||||||
/* No more memory. */
|
/* No more memory. */
|
||||||
_dl_signal_error (ENOMEM, name, _("cannot allocate name record"));
|
_dl_signal_error (ENOMEM, name, "cannot allocate name record");
|
||||||
free(name);
|
free (name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* The object should have a libname set from _dl_new_object. */
|
/* The object should have a libname set from _dl_new_object. */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Look up a symbol in the loaded objects.
|
/* Look up a symbol in the loaded objects.
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
Copyright (C) 1995, 1996, 1997, 1998 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
|
||||||
@ -51,7 +51,7 @@ struct sym_val
|
|||||||
\
|
\
|
||||||
cp = result = alloca (len); \
|
cp = result = alloca (len); \
|
||||||
for (cnt = 0; cnt < sizeof (all) / sizeof (all[0]); ++cnt) \
|
for (cnt = 0; cnt < sizeof (all) / sizeof (all[0]); ++cnt) \
|
||||||
cp = stpcpy (cp, all[cnt]); \
|
cp = __stpcpy (cp, all[cnt]); \
|
||||||
\
|
\
|
||||||
result; \
|
result; \
|
||||||
})
|
})
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <link.h>
|
#include <link.h>
|
||||||
#include <stdio-common/_itoa.h>
|
#include <stdio-common/_itoa.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
/* Minimal `malloc' allocator for use while loading shared libraries.
|
/* Minimal `malloc' allocator for use while loading shared libraries.
|
||||||
Only small blocks are allocated, and none are ever freed. */
|
Only small blocks are allocated, and none are ever freed. */
|
||||||
@ -123,15 +124,47 @@ longjmp (jmp_buf env, int val)
|
|||||||
__longjmp (env[0].__jmpbuf, val);
|
__longjmp (env[0].__jmpbuf, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Define our own stub for the localization function used by strerror.
|
/* Define our own version of the internal function used by strerror. We
|
||||||
English-only in the dynamic linker keeps it smaller. */
|
only provide the messages for some common errors. This avoids pulling
|
||||||
|
in the whole error list. */
|
||||||
|
|
||||||
char * weak_function
|
char * weak_function
|
||||||
__dcgettext (const char *domainname, const char *msgid, int category)
|
_strerror_internal (int errnum, char *buf, size_t buflen)
|
||||||
{
|
{
|
||||||
return (char *) msgid;
|
char *msg;
|
||||||
|
|
||||||
|
switch (errnum)
|
||||||
|
{
|
||||||
|
case ENOMEM:
|
||||||
|
msg = (char *) "Cannot allocate memory";
|
||||||
|
break;
|
||||||
|
case EINVAL:
|
||||||
|
msg = (char *) "Invalid argument";
|
||||||
|
break;
|
||||||
|
case ENOENT:
|
||||||
|
msg = (char *) "No such file or directory";
|
||||||
|
break;
|
||||||
|
case EPERM:
|
||||||
|
msg = (char *) "Operation not permitted";
|
||||||
|
break;
|
||||||
|
case EIO:
|
||||||
|
msg = (char *) "Input/output error";
|
||||||
|
break;
|
||||||
|
case EACCES:
|
||||||
|
msg = (char *) "Permission denied";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* No need to check buffer size, all calls in the dynamic linker
|
||||||
|
provide enough space. */
|
||||||
|
buf[buflen - 1] = '\0';
|
||||||
|
msg = _itoa_word (errnum, buf + buflen - 1, 10, 0);
|
||||||
|
msg = memcpy (msg - (sizeof ("Error ") - 1), "Error ",
|
||||||
|
sizeof ("Error ") - 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg;
|
||||||
}
|
}
|
||||||
weak_alias (__dcgettext, dcgettext)
|
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
|
||||||
|
20
elf/rtld.c
20
elf/rtld.c
@ -264,7 +264,6 @@ dl_main (const ElfW(Phdr) *phdr,
|
|||||||
size_t file_size;
|
size_t file_size;
|
||||||
char *file;
|
char *file;
|
||||||
int has_interp = 0;
|
int has_interp = 0;
|
||||||
const char *library_path = NULL; /* Overwrites LD_LIBRARY_PATH if given. */
|
|
||||||
|
|
||||||
/* Test whether we want to see the content of the auxiliary array passed
|
/* Test whether we want to see the content of the auxiliary array passed
|
||||||
up from the kernel. */
|
up from the kernel. */
|
||||||
@ -323,6 +322,9 @@ dl_main (const ElfW(Phdr) *phdr,
|
|||||||
ourselves). This is an easy way to test a new ld.so before
|
ourselves). This is an easy way to test a new ld.so before
|
||||||
installing it. */
|
installing it. */
|
||||||
|
|
||||||
|
/* Overwrites LD_LIBRARY_PATH if given. */
|
||||||
|
const char *library_path = NULL;
|
||||||
|
|
||||||
/* Note the place where the dynamic linker actually came from. */
|
/* Note the place where the dynamic linker actually came from. */
|
||||||
_dl_rtld_map.l_name = _dl_argv[0];
|
_dl_rtld_map.l_name = _dl_argv[0];
|
||||||
|
|
||||||
@ -378,6 +380,10 @@ of this helper program; chances are you did not intend to run this program.\n",
|
|||||||
--_dl_argc;
|
--_dl_argc;
|
||||||
++_dl_argv;
|
++_dl_argv;
|
||||||
|
|
||||||
|
/* Initialize the data structures for the search paths for shared
|
||||||
|
objects. */
|
||||||
|
_dl_init_paths (library_path);
|
||||||
|
|
||||||
if (mode == verify)
|
if (mode == verify)
|
||||||
{
|
{
|
||||||
char *err_str = NULL;
|
char *err_str = NULL;
|
||||||
@ -412,12 +418,20 @@ of this helper program; chances are you did not intend to run this program.\n",
|
|||||||
main_map->l_phnum = phent;
|
main_map->l_phnum = phent;
|
||||||
main_map->l_entry = *user_entry;
|
main_map->l_entry = *user_entry;
|
||||||
main_map->l_opencount = 1;
|
main_map->l_opencount = 1;
|
||||||
|
|
||||||
|
/* Initialize the data structures for the search paths for shared
|
||||||
|
objects. */
|
||||||
|
_dl_init_paths (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scan the program header table for the dynamic section. */
|
/* Scan the program header table for the dynamic section. */
|
||||||
for (ph = phdr; ph < &phdr[phent]; ++ph)
|
for (ph = phdr; ph < &phdr[phent]; ++ph)
|
||||||
switch (ph->p_type)
|
switch (ph->p_type)
|
||||||
{
|
{
|
||||||
|
case PT_PHDR:
|
||||||
|
/* Find out the load address. */
|
||||||
|
main_map->l_addr = (ElfW(Addr)) phdr - ph->p_vaddr;
|
||||||
|
break;
|
||||||
case PT_DYNAMIC:
|
case PT_DYNAMIC:
|
||||||
/* This tells us where to find the dynamic section,
|
/* This tells us where to find the dynamic section,
|
||||||
which tells us everything we need to do. */
|
which tells us everything we need to do. */
|
||||||
@ -492,10 +506,6 @@ of this helper program; chances are you did not intend to run this program.\n",
|
|||||||
preloads = NULL;
|
preloads = NULL;
|
||||||
npreloads = 0;
|
npreloads = 0;
|
||||||
|
|
||||||
/* Initialize the data structures for the search paths for shared
|
|
||||||
objects. */
|
|
||||||
_dl_init_paths (library_path);
|
|
||||||
|
|
||||||
preloadlist = getenv ("LD_PRELOAD");
|
preloadlist = getenv ("LD_PRELOAD");
|
||||||
if (preloadlist)
|
if (preloadlist)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
GLIBC_2.0 {
|
GLIBC_2.1 {
|
||||||
global:
|
global:
|
||||||
_nss_hesiod_setpwent; _nss_hesiod_endpwent;
|
_nss_hesiod_setpwent; _nss_hesiod_endpwent;
|
||||||
_nss_hesiod_getpwnam_r; _nss_hesiod_getpwuid;
|
_nss_hesiod_getpwnam_r; _nss_hesiod_getpwuid;
|
||||||
|
2
libc.map
2
libc.map
@ -100,7 +100,7 @@ GLIBC_2.0 {
|
|||||||
__vsscanf; __vfscanf; __vsnprintf;
|
__vsscanf; __vfscanf; __vsnprintf;
|
||||||
_rpc_dtablesize; _null_auth; _seterr_reply;
|
_rpc_dtablesize; _null_auth; _seterr_reply;
|
||||||
__res_randomid; __syscall_rt_sigqueueinfo; __getpid; __pread64; __pwrite64;
|
__res_randomid; __syscall_rt_sigqueueinfo; __getpid; __pread64; __pwrite64;
|
||||||
__strcasecmp; __write;
|
__strcasecmp; __write; _strerror_internal;
|
||||||
|
|
||||||
# Exception handling support functions from libgcc
|
# Exception handling support functions from libgcc
|
||||||
__register_frame; __register_frame_table; __deregister_frame;
|
__register_frame; __register_frame_table; __deregister_frame;
|
||||||
|
@ -1328,7 +1328,7 @@ is provided mostly for compatibility with existing code; using
|
|||||||
|
|
||||||
|
|
||||||
@node Old-style number conversion
|
@node Old-style number conversion
|
||||||
@subsection Old-style way of converting numbers to strings
|
@section Old-style way of converting numbers to strings
|
||||||
|
|
||||||
The @w{System V} library provided three functions to convert numbers to
|
The @w{System V} library provided three functions to convert numbers to
|
||||||
strings which have a unusual and hard-to-be-used semantic. The GNU C
|
strings which have a unusual and hard-to-be-used semantic. The GNU C
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
GLIBC_2.0 {
|
GLIBC_2.1 {
|
||||||
global:
|
global:
|
||||||
_nss_nisplus_endaliasent; _nss_nisplus_endetherent; _nss_nisplus_endgrent;
|
_nss_nisplus_endaliasent; _nss_nisplus_endetherent; _nss_nisplus_endgrent;
|
||||||
_nss_nisplus_endhostent; _nss_nisplus_endnetent; _nss_nisplus_endnetgrent;
|
_nss_nisplus_endhostent; _nss_nisplus_endnetent; _nss_nisplus_endnetgrent;
|
||||||
|
1
sysdeps/i386/fpu/t_exp.c
Normal file
1
sysdeps/i386/fpu/t_exp.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* Empty. Not needed. */
|
Loading…
Reference in New Issue
Block a user