diff options
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-misc.c | 12 | ||||
-rw-r--r-- | elf/dl-profile.c | 11 | ||||
-rw-r--r-- | elf/dlsym.c | 3 | ||||
-rw-r--r-- | elf/dlvsym.c | 3 | ||||
-rw-r--r-- | elf/rtld.c | 16 |
5 files changed, 29 insertions, 16 deletions
diff --git a/elf/dl-misc.c b/elf/dl-misc.c index 3d79636..d3b0f34 100644 --- a/elf/dl-misc.c +++ b/elf/dl-misc.c @@ -27,6 +27,10 @@ #include <sys/stat.h> #include <stdio-common/_itoa.h> +/* We have prototype anywhere. */ +extern ssize_t __libc_write __P ((int __fd, __const __ptr_t __buf, + size_t __n)); + #ifndef MAP_ANON /* This is the only dl-sysdep.c function that is actually needed at run-time by _dl_map_object. */ @@ -89,7 +93,7 @@ _dl_sysdep_output (int fd, const char *msg, ...) do { size_t len = strlen (msg); - __write (fd, msg, len); + __libc_write (fd, msg, len); msg = va_arg (ap, const char *); } while (msg != NULL); @@ -124,19 +128,19 @@ _dl_debug_message (int new_line, const char *msg, ...) char buf[7] = "00000:\t"; assert (pid >= 0 && pid < 100000); _itoa_word (pid, &buf[5], 10, 0); - __write (_dl_debug_fd, buf, 7); + __libc_write (_dl_debug_fd, buf, 7); new_line = 0; } endp = strchr (msg, '\n'); if (endp == NULL) { - __write (_dl_debug_fd, msg, strlen (msg)); + __libc_write (_dl_debug_fd, msg, strlen (msg)); msg = va_arg (ap, const char *); } else { - __write (_dl_debug_fd, msg, endp - msg + 1); + __libc_write (_dl_debug_fd, msg, endp - msg + 1); msg = endp + 1; new_line = 1; } diff --git a/elf/dl-profile.c b/elf/dl-profile.c index 91626f6..cd3f07e 100644 --- a/elf/dl-profile.c +++ b/elf/dl-profile.c @@ -1,5 +1,5 @@ /* Profiling of shared libraries. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Based on the BSD mcount implementation. @@ -35,6 +35,10 @@ #include <sys/stat.h> #include <atomicity.h> +/* We have prototype anywhere. */ +extern ssize_t __libc_write __P ((int __fd, __const __ptr_t __buf, + size_t __n)); + /* The LD_PROFILE feature has to be implemented different to the normal profiling using the gmon/ functions. The problem is that an arbitrary amount of processes simulataneously can be run using @@ -305,8 +309,9 @@ _dl_start_profile (struct link_map *map, const char *output_dir) return; } - if (TEMP_FAILURE_RETRY (__write (fd, buf, (expected_size - & (_dl_pagesize - 1)))) < 0) + if (TEMP_FAILURE_RETRY (__libc_write (fd, buf, (expected_size + & (_dl_pagesize - 1)))) + < 0) goto cannot_create; } else if (st.st_size != expected_size) diff --git a/elf/dlsym.c b/elf/dlsym.c index 3a4bd4a..0da1902 100644 --- a/elf/dlsym.c +++ b/elf/dlsym.c @@ -66,8 +66,7 @@ RTLD_NEXT used in code not dynamically loaded")); l = l->l_loader; { - struct link_map *map = l; - struct link_map *mapscope[2] = { map, NULL }; + struct link_map *mapscope[2] = { l, NULL }; args->loadbase = _dl_lookup_symbol_skip (args->name, &args->ref, mapscope, NULL, match); } diff --git a/elf/dlvsym.c b/elf/dlvsym.c index a332c59..c42b0d7 100644 --- a/elf/dlvsym.c +++ b/elf/dlvsym.c @@ -68,8 +68,7 @@ RTLD_NEXT used in code not dynamically loaded")); l = l->l_loader; { - struct link_map *map = l; - struct link_map *mapscope[2] = { map, NULL }; + struct link_map *mapscope[2] = { l, NULL }; args->loadbase = _dl_lookup_versioned_symbol_skip (args->name, &args->ref, mapscope, @@ -349,7 +349,7 @@ dl_main (const ElfW(Phdr) *phdr, Grant the user some education. */ if (_dl_argc < 2) _dl_sysdep_fatal ("\ -Usage: ld.so [--list|--verify] EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]\n\ +Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]\n\ You have invoked `ld.so', the helper program for shared library executables.\n\ This program usually lives in the file `/lib/ld.so', and special directives\n\ in executable files using ELF shared libraries tell the system's program\n\ @@ -360,7 +360,13 @@ command line to load and run an ELF executable file; this is like executing\n\ that file itself, but always uses this helper program from the file you\n\ specified, instead of the helper program file specified in the executable\n\ file you run. This is mostly of use for maintainers to test new versions\n\ -of this helper program; chances are you did not intend to run this program.\n", +of this helper program; chances are you did not intend to run this program.\n\ +\n\ + --list list all dependencies and how they are resolved\n\ + --verify verify that given object really is a dynamically linked\n\ + object we get handle\n\ + --library-path PATH use given PATH instead of content of the environment\n\ + variable LD_LIBRARY_PATH\n", NULL); ++_dl_skip_args; @@ -509,7 +515,7 @@ of this helper program; chances are you did not intend to run this program.\n", while ((p = strsep (&list, " :")) != NULL) if (! __libc_enable_secure || strchr (p, '/') == NULL) { - struct link_map *new_map = _dl_map_object (NULL, p, 1, + struct link_map *new_map = _dl_map_object (main_map, p, 1, lt_library, 0); if (new_map->l_opencount == 1) /* It is no duplicate. */ @@ -570,7 +576,7 @@ of this helper program; chances are you did not intend to run this program.\n", runp = file + strspn (file, ": \t\n"); while ((p = strsep (&runp, ": \t\n")) != NULL) { - struct link_map *new_map = _dl_map_object (NULL, p, 1, + struct link_map *new_map = _dl_map_object (main_map, p, 1, lt_library, 0); if (new_map->l_opencount == 1) /* It is no duplicate. */ @@ -584,7 +590,7 @@ of this helper program; chances are you did not intend to run this program.\n", if (problem != NULL) { char *p = strndupa (problem, file_size - (problem - file)); - struct link_map *new_map = _dl_map_object (NULL, p, 1, + struct link_map *new_map = _dl_map_object (main_map, p, 1, lt_library, 0); if (new_map->l_opencount == 1) /* It is no duplicate. */ |