[1/3] elf: In _dl_relocate_object, skip processing if object is relocated
Checks
Context |
Check |
Description |
redhat-pt-bot/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
linaro-tcwg-bot/tcwg_glibc_build--master-arm |
fail
|
Patch failed to apply
|
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 |
fail
|
Patch failed to apply
|
Commit Message
This is just a minor optimization. It also makes it more obvious that
_dl_relocate_object can be called multiple times.
---
elf/dl-reloc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Comments
On 11/24/23 07:56, Florian Weimer wrote:
> This is just a minor optimization. It also makes it more obvious that
> _dl_relocate_object can be called multiple times.
LGTM.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> ---
> elf/dl-reloc.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
> index e5c555d82c..72c8586d29 100644
> --- a/elf/dl-reloc.c
> +++ b/elf/dl-reloc.c
> @@ -205,6 +205,9 @@ void
> _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
> int reloc_mode, int consider_profiling)
> {
> + if (l->l_relocated)
> + return;
OK. Stop earlier. All we did between here and the previous location was
preparatory work to consider profiling or symbol binding in the auditors.
> +
> struct textrels
> {
> caddr_t start;
> @@ -242,9 +245,6 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
> # define consider_symbind 0
> #endif
>
> - if (l->l_relocated)
> - return;
> -
> /* If DT_BIND_NOW is set relocate all references in this object. We
> do not do this if we are profiling, of course. */
> // XXX Correct for auditing?
@@ -205,6 +205,9 @@ void
_dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
int reloc_mode, int consider_profiling)
{
+ if (l->l_relocated)
+ return;
+
struct textrels
{
caddr_t start;
@@ -242,9 +245,6 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
# define consider_symbind 0
#endif
- if (l->l_relocated)
- return;
-
/* If DT_BIND_NOW is set relocate all references in this object. We
do not do this if we are profiling, of course. */
// XXX Correct for auditing?