mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
Move _dl_open_check to its original place in dl_open_worker
This reverts the non-test change from commit d0093c5cef
("Call _dl_open_check after relocation [BZ #24259]"), given that
the underlying bug has been fixed properly in commit 61b74477fa7f63
("Remove all loaded objects if dlopen fails, ignoring NODELETE
[BZ #20839]").
Tested on x86-64-linux-gnu, with and without --enable-cet.
Change-Id: I995a6cfb89f25d2b0cf5e606428c2a93eb48fc33
This commit is contained in:
@ -622,6 +622,8 @@ dl_open_worker (void *a)
|
|||||||
_dl_debug_state ();
|
_dl_debug_state ();
|
||||||
LIBC_PROBE (map_complete, 3, args->nsid, r, new);
|
LIBC_PROBE (map_complete, 3, args->nsid, r, new);
|
||||||
|
|
||||||
|
_dl_open_check (new);
|
||||||
|
|
||||||
/* Print scope information. */
|
/* Print scope information. */
|
||||||
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_SCOPES))
|
||||||
_dl_show_scope (new, 0);
|
_dl_show_scope (new, 0);
|
||||||
@ -702,12 +704,6 @@ dl_open_worker (void *a)
|
|||||||
_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
|
_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NB: Workaround for [BZ #20839] which doesn't remove the NODELETE
|
|
||||||
object when _dl_open_check throws an exception. Move it after
|
|
||||||
relocation to avoid leaving the NODELETE object mapped without
|
|
||||||
relocation. */
|
|
||||||
_dl_open_check (new);
|
|
||||||
|
|
||||||
/* This only performs the memory allocations. The actual update of
|
/* This only performs the memory allocations. The actual update of
|
||||||
the scopes happens below, after failure is impossible. */
|
the scopes happens below, after failure is impossible. */
|
||||||
resize_scopes (new);
|
resize_scopes (new);
|
||||||
|
Reference in New Issue
Block a user