mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-13 23:29:03 +00:00
Report plugin symbols for --verbose=N.
2011-03-04 H.J. Lu <hongjiu.lu@intel.com> * ld.texinfo: Document --verbose[=NUMBER]. * lexsup.c (ld_options): Update --verbose. (parse_args): Set report_plugin_symbols. * plugin.c (report_plugin_symbols): New. (get_symbols): Report plugin symbols if report_plugin_symbols is TRUE. * plugin.h (report_plugin_symbols): New.
This commit is contained in:
parent
51dc551dc2
commit
1715a13cc2
13
ld/ChangeLog
13
ld/ChangeLog
@ -1,3 +1,16 @@
|
||||
2011-03-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ld.texinfo: Document --verbose[=NUMBER].
|
||||
|
||||
* lexsup.c (ld_options): Update --verbose.
|
||||
(parse_args): Set report_plugin_symbols.
|
||||
|
||||
* plugin.c (report_plugin_symbols): New.
|
||||
(get_symbols): Report plugin symbols if report_plugin_symbols
|
||||
is TRUE.
|
||||
|
||||
* plugin.h (report_plugin_symbols): New.
|
||||
|
||||
2011-03-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/12529
|
||||
|
@ -1851,13 +1851,14 @@ Normally the linker will generate an error message for each reported
|
||||
unresolved symbol but the option @option{--warn-unresolved-symbols}
|
||||
can change this to a warning.
|
||||
|
||||
@kindex --verbose
|
||||
@cindex verbose
|
||||
@kindex --verbose[=@var{NUMBER}]
|
||||
@cindex verbose[=@var{NUMBER}]
|
||||
@item --dll-verbose
|
||||
@itemx --verbose
|
||||
@itemx --verbose[=@var{NUMBER}]
|
||||
Display the version number for @command{ld} and list the linker emulations
|
||||
supported. Display which input files can and cannot be opened. Display
|
||||
the linker script being used by the linker.
|
||||
the linker script being used by the linker. If the optional @var{NUMBER}
|
||||
argument > 1, plugin symbol status will also be displayed.
|
||||
|
||||
@kindex --version-script=@var{version-scriptfile}
|
||||
@cindex version script, symbol versions
|
||||
|
13
ld/lexsup.c
13
ld/lexsup.c
@ -560,8 +560,9 @@ static const struct ld_option ld_options[] =
|
||||
" ignore-all, report-all, ignore-in-object-files,\n"
|
||||
" ignore-in-shared-libs"),
|
||||
TWO_DASHES },
|
||||
{ {"verbose", no_argument, NULL, OPTION_VERBOSE},
|
||||
'\0', NULL, N_("Output lots of information during link"), TWO_DASHES },
|
||||
{ {"verbose", optional_argument, NULL, OPTION_VERBOSE},
|
||||
'\0', N_("[=NUMBER]"),
|
||||
N_("Output lots of information during link"), TWO_DASHES },
|
||||
{ {"dll-verbose", no_argument, NULL, OPTION_VERBOSE}, /* Linux. */
|
||||
'\0', NULL, NULL, NO_HELP },
|
||||
{ {"version-script", required_argument, NULL, OPTION_VERSION_SCRIPT },
|
||||
@ -1326,6 +1327,14 @@ parse_args (unsigned argc, char **argv)
|
||||
version_printed = TRUE;
|
||||
trace_file_tries = TRUE;
|
||||
overflow_cutoff_limit = -2;
|
||||
if (optarg != NULL)
|
||||
{
|
||||
char *end;
|
||||
int level = strtoul (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\n"), optarg);
|
||||
report_plugin_symbols = level > 1;
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
ldversion (0);
|
||||
|
22
ld/plugin.c
22
ld/plugin.c
@ -36,6 +36,9 @@
|
||||
#include <Windows.h>
|
||||
#endif
|
||||
|
||||
/* Report plugin symbols. */
|
||||
bfd_boolean report_plugin_symbols;
|
||||
|
||||
/* The suffix to append to the name of the real (claimed) object file
|
||||
when generating a dummy BFD to hold the IR symbols sent from the
|
||||
plugin. */
|
||||
@ -463,7 +466,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms)
|
||||
if (!blhe)
|
||||
{
|
||||
syms[n].resolution = LDPR_UNKNOWN;
|
||||
continue;
|
||||
goto report_symbol;
|
||||
}
|
||||
|
||||
/* Determine resolution from blhe type and symbol's original type. */
|
||||
@ -471,7 +474,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms)
|
||||
|| blhe->type == bfd_link_hash_undefweak)
|
||||
{
|
||||
syms[n].resolution = LDPR_UNDEF;
|
||||
continue;
|
||||
goto report_symbol;
|
||||
}
|
||||
if (blhe->type != bfd_link_hash_defined
|
||||
&& blhe->type != bfd_link_hash_defweak
|
||||
@ -516,7 +519,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms)
|
||||
syms[n].resolution = LDPR_RESOLVED_DYN;
|
||||
else
|
||||
syms[n].resolution = LDPR_RESOLVED_EXEC;
|
||||
continue;
|
||||
goto report_symbol;
|
||||
}
|
||||
|
||||
/* Was originally def, or weakdef. Does it prevail? If the
|
||||
@ -529,13 +532,18 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms)
|
||||
syms[n].resolution = (ironly
|
||||
? LDPR_PREVAILING_DEF_IRONLY
|
||||
: LDPR_PREVAILING_DEF);
|
||||
continue;
|
||||
goto report_symbol;
|
||||
}
|
||||
|
||||
/* Was originally def, weakdef, or common, but has been pre-empted. */
|
||||
syms[n].resolution = is_ir_dummy_bfd (owner_sec->owner)
|
||||
? LDPR_PREEMPTED_IR
|
||||
: LDPR_PREEMPTED_REG;
|
||||
syms[n].resolution = (is_ir_dummy_bfd (owner_sec->owner)
|
||||
? LDPR_PREEMPTED_IR
|
||||
: LDPR_PREEMPTED_REG);
|
||||
|
||||
report_symbol:
|
||||
if (report_plugin_symbols)
|
||||
einfo ("%P: %B: symbol `%s' definition: %d, resolution: %d\n",
|
||||
abfd, syms[n].name, syms[n].def, syms[n].resolution);
|
||||
}
|
||||
return LDPS_OK;
|
||||
}
|
||||
|
@ -21,6 +21,8 @@
|
||||
#ifndef GLD_PLUGIN_H
|
||||
#define GLD_PLUGIN_H
|
||||
|
||||
/* Report plugin symbols. */
|
||||
extern bfd_boolean report_plugin_symbols;
|
||||
|
||||
/* This is the only forward declaration we need to avoid having
|
||||
to include the plugin-api.h header in order to use this file. */
|
||||
|
Loading…
Reference in New Issue
Block a user