projects
/
platform
/
upstream
/
binutils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix corrupted .eh_frame section with LTO and --gc-sections.
[platform/upstream/binutils.git]
/
gold
/
incremental-dump.cc
diff --git
a/gold/incremental-dump.cc
b/gold/incremental-dump.cc
index
e7e838a
..
8ef16cf
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-2014
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());
@@
-322,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);
}
}