mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-09 02:40:08 +00:00
Update.
2001-11-06 Ulrich Drepper <drepper@redhat.com> * elf/dl-load.c (_dl_map_object_from_fd): Don't call _dl_signal_error directly, always use lose. Set fd to -1 after file is closed. (lose): Don't call close if fd == -1.
This commit is contained in:
parent
bd3916e8fb
commit
fb0356b9d6
@ -1,3 +1,10 @@
|
|||||||
|
2001-11-06 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/dl-load.c (_dl_map_object_from_fd): Don't call
|
||||||
|
_dl_signal_error directly, always use lose. Set fd to -1 after
|
||||||
|
file is closed.
|
||||||
|
(lose): Don't call close if fd == -1.
|
||||||
|
|
||||||
2001-11-07 Kaoru Fukui <k_fukui@highway.ne.jp>
|
2001-11-07 Kaoru Fukui <k_fukui@highway.ne.jp>
|
||||||
|
|
||||||
* manual/charset.texi: Fix typo @w[ISO 6937] to @w{ISO 6937}.
|
* manual/charset.texi: Fix typo @w[ISO 6937] to @w{ISO 6937}.
|
||||||
|
@ -749,7 +749,9 @@ lose (int code, int fd, const char *name, char *realname, struct link_map *l,
|
|||||||
which use `alloca'. */
|
which use `alloca'. */
|
||||||
int *a = alloca (sizeof (int));
|
int *a = alloca (sizeof (int));
|
||||||
a[0] = fd;
|
a[0] = fd;
|
||||||
(void) __close (a[0]);
|
/* The file might already be closed. */
|
||||||
|
if (a[0] != -1)
|
||||||
|
(void) __close (a[0]);
|
||||||
if (l != NULL)
|
if (l != NULL)
|
||||||
{
|
{
|
||||||
/* Remove the stillborn object from the list and free it. */
|
/* Remove the stillborn object from the list and free it. */
|
||||||
@ -921,8 +923,7 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
|
|||||||
c->mapoff = ph->p_offset & ~(ph->p_align - 1);
|
c->mapoff = ph->p_offset & ~(ph->p_align - 1);
|
||||||
|
|
||||||
/* Optimize a common case. */
|
/* Optimize a common case. */
|
||||||
if ((PF_R | PF_W | PF_X) == 7
|
if ((PF_R | PF_W | PF_X) == 7)
|
||||||
&& (PROT_READ | PROT_WRITE | PROT_EXEC) == 7)
|
|
||||||
c->prot = _dl_pf_to_prot[ph->p_flags & (PF_R | PF_W | PF_X)];
|
c->prot = _dl_pf_to_prot[ph->p_flags & (PF_R | PF_W | PF_X)];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1099,6 +1100,8 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
|
|||||||
|
|
||||||
/* We are done mapping in the file. We no longer need the descriptor. */
|
/* We are done mapping in the file. We no longer need the descriptor. */
|
||||||
__close (fd);
|
__close (fd);
|
||||||
|
/* Signal that we closed the file. */
|
||||||
|
fd = -1;
|
||||||
|
|
||||||
if (l->l_type == lt_library && type == ET_EXEC)
|
if (l->l_type == lt_library && type == ET_EXEC)
|
||||||
l->l_type = lt_executable;
|
l->l_type = lt_executable;
|
||||||
@ -1155,8 +1158,8 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp,
|
|||||||
|
|
||||||
free (l);
|
free (l);
|
||||||
|
|
||||||
_dl_signal_error (0, name, NULL,
|
errstring = N_("shared object cannot be dlopen()ed");
|
||||||
N_("shared object cannot be dlopen()ed"));
|
goto call_lose;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (l->l_info[DT_HASH])
|
if (l->l_info[DT_HASH])
|
||||||
@ -1227,13 +1230,9 @@ print_search_path (struct r_search_path_elem **list,
|
|||||||
cp[0] = '\0';
|
cp[0] = '\0';
|
||||||
else
|
else
|
||||||
cp[-1] = '\0';
|
cp[-1] = '\0';
|
||||||
if (first)
|
|
||||||
{
|
_dl_debug_printf_c (first ? "%s" : ":%s", buf);
|
||||||
_dl_debug_printf_c ("%s", buf);
|
first = 0;
|
||||||
first = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
_dl_debug_printf_c (":%s", buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
++list;
|
++list;
|
||||||
|
Loading…
Reference in New Issue
Block a user