projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduce dw2_linkage_name and dw2_linkage_name_attr.
[deliverable/binutils-gdb.git]
/
gold
/
incremental-dump.cc
diff --git
a/gold/incremental-dump.cc
b/gold/incremental-dump.cc
index 5ac6e6c1f8879396aac75a1e151322a48e16a467..2a9ec79bd7ab57c795b19917afafbdb10dfcb5ec 100644
(file)
--- a/
gold/incremental-dump.cc
+++ b/
gold/incremental-dump.cc
@@
-1,6
+1,6
@@
// incremental.cc -- incremental linking test/debug tool
// incremental.cc -- incremental linking test/debug tool
-// Copyright
2009, 2010
Free Software Foundation, Inc.
+// Copyright
(C) 2009-2017
Free Software Foundation, Inc.
// Written by Rafael Avila de Espindola <rafael.espindola@gmail.com>
// This file is part of gold.
// Written by Rafael Avila de Espindola <rafael.espindola@gmail.com>
// This file is part of gold.
@@
-52,6
+52,9
@@
find_input_containing_global(
unsigned int* symndx)
{
typedef Incremental_inputs_reader<size, big_endian> Inputs_reader;
unsigned int* symndx)
{
typedef Incremental_inputs_reader<size, big_endian> Inputs_reader;
+ static const unsigned int global_sym_entry_size =
+ Incremental_inputs_reader<size, big_endian>::global_sym_entry_size;
+
for (unsigned int i = 0; i < incremental_inputs.input_file_count(); ++i)
{
typename Inputs_reader::Incremental_input_entry_reader input_file =
for (unsigned int i = 0; i < incremental_inputs.input_file_count(); ++i)
{
typename Inputs_reader::Incremental_input_entry_reader input_file =
@@
-63,7
+66,8
@@
find_input_containing_global(
if (offset >= input_file.get_symbol_offset(0)
&& offset < input_file.get_symbol_offset(nsyms))
{
if (offset >= input_file.get_symbol_offset(0)
&& offset < input_file.get_symbol_offset(nsyms))
{
- *symndx = (offset - input_file.get_symbol_offset(0)) / 20;
+ *symndx = ((offset - input_file.get_symbol_offset(0))
+ / global_sym_entry_size);
return input_file;
}
}
return input_file;
}
}
@@
-92,7
+96,7
@@
dump_incremental_inputs(const char* argv0, const char* filename,
Incremental_inputs_reader<size, big_endian>
incremental_inputs(inc->inputs_reader());
Incremental_inputs_reader<size, big_endian>
incremental_inputs(inc->inputs_reader());
- if (incremental_inputs.version() !=
1
)
+ if (incremental_inputs.version() !=
2
)
{
fprintf(stderr, "%s: %s: unknown incremental version %d\n", argv0,
filename, incremental_inputs.version());
{
fprintf(stderr, "%s: %s: unknown incremental version %d\n", argv0,
filename, incremental_inputs.version());
@@
-149,6
+153,12
@@
dump_incremental_inputs(const char* argv0, const char* filename,
input_file.get_local_symbol_offset());
printf(" Local symbol count: %d\n",
input_file.get_local_symbol_count());
input_file.get_local_symbol_offset());
printf(" Local symbol count: %d\n",
input_file.get_local_symbol_count());
+ printf(" First dynamic reloc: %d\n",
+ input_file.get_first_dyn_reloc());
+ printf(" Dynamic reloc count: %d\n",
+ input_file.get_dyn_reloc_count());
+ printf(" COMDAT group count: %d\n",
+ input_file.get_comdat_group_count());
break;
case INCREMENTAL_INPUT_ARCHIVE:
printf("Archive\n");
break;
case INCREMENTAL_INPUT_ARCHIVE:
printf("Archive\n");
@@
-158,6
+168,10
@@
dump_incremental_inputs(const char* argv0, const char* filename,
break;
case INCREMENTAL_INPUT_SHARED_LIBRARY:
printf("Shared library\n");
break;
case INCREMENTAL_INPUT_SHARED_LIBRARY:
printf("Shared library\n");
+ printf(" As needed: %s\n",
+ input_file.as_needed() ? "true" : "false");
+ printf(" soname: %s\n",
+ input_file.get_soname());
printf(" Symbol count: %d\n",
input_file.get_global_symbol_count());
break;
printf(" Symbol count: %d\n",
input_file.get_global_symbol_count());
break;
@@
-204,6
+218,11
@@
dump_incremental_inputs(const char* argv0, const char* filename,
static_cast<long long>(info.sh_size),
info.name);
}
static_cast<long long>(info.sh_size),
info.name);
}
+
+ unsigned int ncomdat = input_file.get_comdat_group_count();
+ for (unsigned int i = 0; i < ncomdat; ++i)
+ printf(" Comdat group: %s\n",
+ input_file.get_comdat_group_signature(i));
}
// Get a view of the .symtab section.
}
// Get a view of the .symtab section.
@@
-278,8
+297,9
@@
dump_incremental_inputs(const char* argv0, const char* filename,
for (unsigned int symndx = 0; symndx < nsyms; ++symndx)
{
bool is_def;
for (unsigned int symndx = 0; symndx < nsyms; ++symndx)
{
bool is_def;
+ bool is_copy;
unsigned int output_symndx =
unsigned int output_symndx =
- input_file.get_output_symbol_index(symndx, &is_def);
+ input_file.get_output_symbol_index(symndx, &is_def
, &is_copy
);
sym_p = symtab_view.data() + output_symndx * sym_size;
elfcpp::Sym<size, big_endian> sym(sym_p);
const char* symname;
sym_p = symtab_view.data() + output_symndx * sym_size;
elfcpp::Sym<size, big_endian> sym(sym_p);
const char* symname;
@@
-288,7
+308,7
@@
dump_incremental_inputs(const char* argv0, const char* filename,
printf(" %6d %6s %8s %8s %8s %8s %-5s %s\n",
output_symndx,
"", "", "", "", "",
printf(" %6d %6s %8s %8s %8s %8s %-5s %s\n",
output_symndx,
"", "", "", "", "",
- is_
def ? "DEF" : "UNDEF"
,
+ is_
copy ? "COPY" : (is_def ? "DEF" : "UNDEF")
,
symname);
}
}
symname);
}
}
@@
-306,12
+326,14
@@
dump_incremental_inputs(const char* argv0, const char* filename,
symname = "<unknown>";
printf(" %6d %6d %8d %8d %8d %8d %-5s %s\n",
output_symndx,
symname = "<unknown>";
printf(" %6d %6d %8d %8d %8d %8d %-5s %s\n",
output_symndx,
- info.shndx(),
+ info.shndx()
== -1U ? -1 : info.shndx()
,
input_file.get_symbol_offset(symndx),
info.next_offset(),
info.reloc_count(),
info.reloc_offset(),
input_file.get_symbol_offset(symndx),
info.next_offset(),
info.reloc_count(),
info.reloc_offset(),
- info.shndx() != elfcpp::SHN_UNDEF ? "DEF" : "UNDEF",
+ (info.shndx() == -1U
+ ? "BASE"
+ : info.shndx() == 0 ? "UNDEF" : "DEF"),
symname);
}
}
symname);
}
}
@@
-368,24
+390,26
@@
dump_incremental_inputs(const char* argv0, const char* filename,
for (unsigned int i = 0; i < ngot; ++i)
{
unsigned int got_type = igot_plt.get_got_type(i);
for (unsigned int i = 0; i < ngot; ++i)
{
unsigned int got_type = igot_plt.get_got_type(i);
- unsigned int got_desc = igot_plt.get_got_desc(i);
+ unsigned int got_symndx = igot_plt.get_got_symndx(i);
+ unsigned int got_input_index = igot_plt.get_got_input_index(i);
printf("[%d] type %02x, ", i, got_type & 0x7f);
printf("[%d] type %02x, ", i, got_type & 0x7f);
- if (
got_type
== 0x7f)
+ if (
(got_type & 0x7f)
== 0x7f)
printf("reserved");
else if (got_type & 0x80)
{
printf("reserved");
else if (got_type & 0x80)
{
- Entry_reader input_file = incremental_inputs.input_file(got_desc);
+ Entry_reader input_file =
+ incremental_inputs.input_file(got_input_index);
const char* objname = input_file.filename();
const char* objname = input_file.filename();
- printf("local: %s (%d)", objname, got_
desc
);
+ printf("local: %s (%d)", objname, got_
symndx
);
}
else
{
}
else
{
- sym_p = symtab_view.data() + got_
desc
* sym_size;
+ sym_p = symtab_view.data() + got_
symndx
* sym_size;
elfcpp::Sym<size, big_endian> sym(sym_p);
const char* symname;
if (!strtab.get_c_string(sym.get_st_name(), &symname))
symname = "<unknown>";
elfcpp::Sym<size, big_endian> sym(sym_p);
const char* symname;
if (!strtab.get_c_string(sym.get_st_name(), &symname))
symname = "<unknown>";
- printf("global %s (%d)", symname, got_
desc
);
+ printf("global %s (%d)", symname, got_
symndx
);
}
printf("\n");
}
}
printf("\n");
}
@@
-439,10
+463,10
@@
main(int argc, char** argv)
Output_file* file = new Output_file(filename);
Output_file* file = new Output_file(filename);
- bool t = file->open_
for_modification(
);
+ bool t = file->open_
base_file(NULL, false
);
if (!t)
{
if (!t)
{
- fprintf(stderr, "%s: open_
for_modification
(%s): %s\n", argv[0], filename,
+ fprintf(stderr, "%s: open_
base_file
(%s): %s\n", argv[0], filename,
strerror(errno));
return 1;
}
strerror(errno));
return 1;
}
This page took
0.024971 seconds
and
4
git commands to generate.