From: Jakub Jelinek <jakub@redhat.com>
To: Ulrich Drepper <drepper@redhat.com>, Roland McGrath <roland@redhat.com>
Cc: Glibc hackers <libc-hacker@sources.redhat.com>
Subject: [PATCH] Allow prelinking libraries with no dependencies (glibc part)
Date: Wed, 14 May 2003 21:31:00 -0000 [thread overview]
Message-ID: <20030514212957.GV16629@sunsite.ms.mff.cuni.cz> (raw)
Hi!
Some libraries (e.g. /usr/lib/libaio.so.0) don't have any DT_NEEDED entries
because they don't have any relocations against any libraries but
self. Such libraries haven't been prelinkable so far, because ld.so prints
statically linked for them.
This patch just moves the DT_NEEDED check after DL_DEBUG_PRELINK check,
it looks big because of indent changes (diff -upb is very short).
2003-05-14 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (dl_main): For LD_TRACE_PRELINKING print search scope
even ifno DT_NEEDED is present.
--- libc/elf/rtld.c.jj 2003-05-13 16:58:06.000000000 -0400
+++ libc/elf/rtld.c 2003-05-14 17:12:35.000000000 -0400
@@ -1262,57 +1262,52 @@ cannot allocate TLS data structures for
important that we do this before real relocation, because the
functions we call below for output may no longer work properly
after relocation. */
- if (! GL(dl_loaded)->l_info[DT_NEEDED])
- _dl_printf ("\tstatically linked\n");
- else
+ struct link_map *l;
+
+ if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
{
- struct link_map *l;
+ struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
- if (GL(dl_debug_mask) & DL_DEBUG_PRELINK)
+ for (i = 0; i < scope->r_nlist; i++)
{
- struct r_scope_elem *scope = &GL(dl_loaded)->l_searchlist;
-
- for (i = 0; i < scope->r_nlist; i++)
+ l = scope->r_list [i];
+ if (l->l_faked)
{
- l = scope->r_list [i];
- if (l->l_faked)
- {
- _dl_printf ("\t%s => not found\n", l->l_libname->name);
- continue;
- }
- if (_dl_name_match_p (GL(dl_trace_prelink), l))
- GL(dl_trace_prelink_map) = l;
- _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
- l->l_libname->name[0] ? l->l_libname->name
- : rtld_progname ?: "<main program>",
- l->l_name[0] ? l->l_name
- : rtld_progname ?: "<main program>",
- (int) sizeof l->l_map_start * 2,
- l->l_map_start,
- (int) sizeof l->l_addr * 2,
- l->l_addr);
+ _dl_printf ("\t%s => not found\n", l->l_libname->name);
+ continue;
+ }
+ if (_dl_name_match_p (GL(dl_trace_prelink), l))
+ GL(dl_trace_prelink_map) = l;
+ _dl_printf ("\t%s => %s (0x%0*Zx, 0x%0*Zx)",
+ l->l_libname->name[0] ? l->l_libname->name
+ : rtld_progname ?: "<main program>",
+ l->l_name[0] ? l->l_name
+ : rtld_progname ?: "<main program>",
+ (int) sizeof l->l_map_start * 2, l->l_map_start,
+ (int) sizeof l->l_addr * 2, l->l_addr);
#ifdef USE_TLS
- if (l->l_tls_modid)
- _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
- (int) sizeof l->l_tls_offset * 2,
- l->l_tls_offset);
- else
+ if (l->l_tls_modid)
+ _dl_printf (" TLS(0x%Zx, 0x%0*Zx)\n", l->l_tls_modid,
+ (int) sizeof l->l_tls_offset * 2,
+ l->l_tls_offset);
+ else
#endif
- _dl_printf ("\n");
- }
- }
- else
- {
- for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
- if (l->l_faked)
- /* The library was not found. */
- _dl_printf ("\t%s => not found\n", l->l_libname->name);
- else
- _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
- l->l_name, (int) sizeof l->l_map_start * 2,
- l->l_map_start);
+ _dl_printf ("\n");
}
}
+ else if (! GL(dl_loaded)->l_info[DT_NEEDED])
+ _dl_printf ("\tstatically linked\n");
+ else
+ {
+ for (l = GL(dl_loaded)->l_next; l; l = l->l_next)
+ if (l->l_faked)
+ /* The library was not found. */
+ _dl_printf ("\t%s => not found\n", l->l_libname->name);
+ else
+ _dl_printf ("\t%s => %s (0x%0*Zx)\n", l->l_libname->name,
+ l->l_name, (int) sizeof l->l_map_start * 2,
+ l->l_map_start);
+ }
if (__builtin_expect (mode, trace) != trace)
for (i = 1; i < (unsigned int) _dl_argc; ++i)
Jakub
next reply other threads:[~2003-05-14 21:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-14 21:31 Jakub Jelinek [this message]
2003-05-14 21:40 ` Ulrich Drepper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030514212957.GV16629@sunsite.ms.mff.cuni.cz \
--to=jakub@redhat.com \
--cc=drepper@redhat.com \
--cc=libc-hacker@sources.redhat.com \
--cc=roland@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).