diff options
author | Alan Modra <amodra@gmail.com> | 2014-01-22 16:05:12 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-01-22 16:21:34 +1030 |
commit | 16e4ecc0dbe114cfc97fe2cd32a035ae4c37f22b (patch) | |
tree | a48afd646fe4928d6546cc9c25fba25543fbcdb4 /ld/ldmisc.c | |
parent | cda796e168a389624b4e06031922bf5eaf0b6f51 (diff) | |
download | gdb-16e4ecc0dbe114cfc97fe2cd32a035ae4c37f22b.zip gdb-16e4ecc0dbe114cfc97fe2cd32a035ae4c37f22b.tar.gz gdb-16e4ecc0dbe114cfc97fe2cd32a035ae4c37f22b.tar.bz2 |
Display the reference causing a shared library to be needed
Adds a section for --as-needed libraries to a linker map file, similar
to what we do for archive libraries.
bfd/
* elflink.c (elf_link_add_object_symbols): Call minfo for --as-needed.
ld/
* ldlang.c (asneeded_list_head, asneeded_list_tail): New vars.
(lang_init): Initialise them.
(lang_print_asneeded): New function.
(lang_process): Call lang_print_asneeded.
* ldlang.h (struct asneeded_minfo): New.
(asneeded_list_tail): Declare.
* ldmain.c (add_archive_element): Improve archive map heading.
* ldmisc.c (minfo): Stash --as-needed info.
Diffstat (limited to 'ld/ldmisc.c')
-rw-r--r-- | ld/ldmisc.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/ld/ldmisc.c b/ld/ldmisc.c index 1b69ab1..cddcb18 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -484,7 +484,22 @@ minfo (const char *fmt, ...) va_list arg; va_start (arg, fmt); - vfinfo (config.map_file, fmt, arg, FALSE); + if (fmt[0] == '%' && fmt[1] == '!' && fmt[2] == 0) + { + /* Stash info about --as-needed shared libraries. Print + later so they don't appear intermingled with archive + library info. */ + struct asneeded_minfo *m = xmalloc (sizeof *m); + + m->next = NULL; + m->soname = va_arg (arg, const char *); + m->ref = va_arg (arg, bfd *); + m->name = va_arg (arg, const char *); + *asneeded_list_tail = m; + asneeded_list_tail = &m->next; + } + else + vfinfo (config.map_file, fmt, arg, FALSE); va_end (arg); } } |