1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-09-04 03:22:14 +03:00
1998-03-10 07:54  H.J. Lu  <hjl@gnu.org>

	* elf/rtld.c (dl_main): Load the preloaded objects dependencies.

	* sysdeps/posix/mkstemp.c (mkstemp): Open temporary file mode 0600.
	Reported by Greg Alexander <galexand@sietch.bloomington.in.us>.
This commit is contained in:
Ulrich Drepper
1998-03-10 12:20:58 +00:00
parent db0b91a906
commit 77aba05b03
2 changed files with 27 additions and 11 deletions

View File

@@ -1,3 +1,7 @@
1998-03-10 07:54 H.J. Lu <hjl@gnu.org>
* elf/rtld.c (dl_main): Load the preloaded objects dependencies.
1998-03-10 Ulrich Drepper <drepper@cygnus.com> 1998-03-10 Ulrich Drepper <drepper@cygnus.com>
* elf/dl-lookup.c (_dl_lookup_versioned_symbol): Print version * elf/dl-lookup.c (_dl_lookup_versioned_symbol): Print version
@@ -16,8 +20,8 @@
1998-03-10 Andreas Jaeger <aj@arthur.rhein-neckar.de> 1998-03-10 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/posix/mkstemp.c (mkstemp): Open temporary file mode * sysdeps/posix/mkstemp.c (mkstemp): Open temporary file mode 0600.
0600. Reported by Greg Alexander <galexand@sietch.bloomington.in.us>. Reported by Greg Alexander <galexand@sietch.bloomington.in.us>.
1998-03-10 00:10 Ulrich Drepper <drepper@cygnus.com> 1998-03-10 00:10 Ulrich Drepper <drepper@cygnus.com>

View File

@@ -283,6 +283,7 @@ 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;
unsigned int i;
/* Process the environment variable which control the behaviour. */ /* Process the environment variable which control the behaviour. */
process_envvars (&mode, &lazy); process_envvars (&mode, &lazy);
@@ -595,7 +596,6 @@ of this helper program; chances are you did not intend to run this program.\n",
{ {
/* Set up PRELOADS with a vector of the preloaded libraries. */ /* Set up PRELOADS with a vector of the preloaded libraries. */
struct link_map *l; struct link_map *l;
unsigned int i;
preloads = __alloca (npreloads * sizeof preloads[0]); preloads = __alloca (npreloads * sizeof preloads[0]);
l = _dl_rtld_map.l_next; /* End of the chain before preloads. */ l = _dl_rtld_map.l_next; /* End of the chain before preloads. */
i = 0; i = 0;
@@ -612,6 +612,11 @@ of this helper program; chances are you did not intend to run this program.\n",
dependencies in the executable's searchlist for symbol resolution. */ dependencies in the executable's searchlist for symbol resolution. */
_dl_map_object_deps (main_map, preloads, npreloads, mode == trace); _dl_map_object_deps (main_map, preloads, npreloads, mode == trace);
/* We should also load the preloaded objects dependencies. They
may call dlsym (RTLD_NEXT, ...). */
for (i = 0; i < npreloads; i++)
_dl_map_object_deps (preloads[i], NULL, 0, 0);
#ifndef MAP_ANON #ifndef MAP_ANON
/* We are done mapping things, so close the zero-fill descriptor. */ /* We are done mapping things, so close the zero-fill descriptor. */
__close (_dl_zerofd); __close (_dl_zerofd);
@@ -629,7 +634,7 @@ of this helper program; chances are you did not intend to run this program.\n",
put it back in the list of visible objects. We insert it into the put it back in the list of visible objects. We insert it into the
chain in symbol search order because gdb uses the chain's order as chain in symbol search order because gdb uses the chain's order as
its symbol search order. */ its symbol search order. */
unsigned int i = 1; i = 1;
while (main_map->l_searchlist[i] != &_dl_rtld_map) while (main_map->l_searchlist[i] != &_dl_rtld_map)
++i; ++i;
_dl_rtld_map.l_prev = main_map->l_searchlist[i - 1]; _dl_rtld_map.l_prev = main_map->l_searchlist[i - 1];
@@ -659,9 +664,6 @@ of this helper program; chances are you did not intend to run this program.\n",
important that we do this before real relocation, because the important that we do this before real relocation, because the
functions we call below for output may no longer work properly functions we call below for output may no longer work properly
after relocation. */ after relocation. */
int i;
if (! _dl_loaded->l_info[DT_NEEDED]) if (! _dl_loaded->l_info[DT_NEEDED])
_dl_sysdep_message ("\t", "statically linked\n", NULL); _dl_sysdep_message ("\t", "statically linked\n", NULL);
else else
@@ -971,10 +973,20 @@ a filename can be specified using the LD_DEBUG_OUTPUT environment variable.\n",
dl_debug += 7; dl_debug += 7;
} }
else else
/* Skip everything until next separator. */ {
/* Display a warning and skip everything until next
separator. */
char *startp = dl_debug;
do do
++dl_debug; ++dl_debug;
while (*dl_debug != '\0' && !issep (*dl_debug)); while (*dl_debug != '\0' && !issep (*dl_debug));
startp = strndupa (startp, dl_debug - startp);
_dl_sysdep_error ("warning: debug option `", startp,
"' unknown; try LD_DEBUG=help\n", NULL);
}
} }
} }
while (*dl_debug != '\0'); while (*dl_debug != '\0');