Message ID | 20210209171839.7911-7-vivek@collabora.com |
---|---|
State | New |
Headers | show |
Series | Implementation of RTLD_SHARED for dlmopen | expand |
On 09/02/2021 14:18, Vivek Das Mohapatra via Libc-alpha wrote: > Proxies should not trigger calls to DT_INIT constructors since they're > just shims that point to the real, already loaded and initialised, objects. > --- > elf/dl-init.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/elf/dl-init.c b/elf/dl-init.c > index b7e4b8a3af..a0183aa315 100644 > --- a/elf/dl-init.c > +++ b/elf/dl-init.c > @@ -34,8 +34,8 @@ call_init (struct link_map *l, int argc, char **argv, char **env) > need relocation, and neither do proxy objects.) */ > assert (l->l_real->l_relocated || l->l_real->l_type == lt_executable); > > - if (l->l_init_called) > - /* This object is all done. */ > + if (l->l_init_called || l->l_proxy) > + /* This object is all done, or a proxy (and therefore initless). */ > return; > > /* Avoid handling this constructor again in case we have a circular > Ok.
diff --git a/elf/dl-init.c b/elf/dl-init.c index b7e4b8a3af..a0183aa315 100644 --- a/elf/dl-init.c +++ b/elf/dl-init.c @@ -34,8 +34,8 @@ call_init (struct link_map *l, int argc, char **argv, char **env) need relocation, and neither do proxy objects.) */ assert (l->l_real->l_relocated || l->l_real->l_type == lt_executable); - if (l->l_init_called) - /* This object is all done. */ + if (l->l_init_called || l->l_proxy) + /* This object is all done, or a proxy (and therefore initless). */ return; /* Avoid handling this constructor again in case we have a circular