mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 11:00:01 +08:00
2011-01-25 Doug Kwan <dougkwan@google.com>
* gold/icf.cc (get_section_contents): Always lock section's object.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2011-01-25 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
|
* gold/icf.cc (get_section_contents): Always lock section's object.
|
||||||
|
|
||||||
2011-01-24 Ian Lance Taylor <iant@google.com>
|
2011-01-24 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
* options.h (class General_options): Accept
|
* options.h (class General_options): Accept
|
||||||
|
24
gold/icf.cc
24
gold/icf.cc
@ -237,20 +237,16 @@ get_section_contents(bool first_iteration,
|
|||||||
const std::vector<unsigned int>& kept_section_id,
|
const std::vector<unsigned int>& kept_section_id,
|
||||||
std::vector<std::string>* section_contents)
|
std::vector<std::string>* section_contents)
|
||||||
{
|
{
|
||||||
|
// Lock the object so we can read from it. This is only called
|
||||||
|
// single-threaded from queue_middle_tasks, so it is OK to lock.
|
||||||
|
// Unfortunately we have no way to pass in a Task token.
|
||||||
|
const Task* dummy_task = reinterpret_cast<const Task*>(-1);
|
||||||
|
Task_lock_obj<Object> tl(dummy_task, secn.first);
|
||||||
|
|
||||||
section_size_type plen;
|
section_size_type plen;
|
||||||
const unsigned char* contents = NULL;
|
const unsigned char* contents = NULL;
|
||||||
|
|
||||||
if (first_iteration)
|
if (first_iteration)
|
||||||
{
|
contents = secn.first->section_contents(secn.second, &plen, false);
|
||||||
// Lock the object so we can read from it. This is only called
|
|
||||||
// single-threaded from queue_middle_tasks, so it is OK to lock.
|
|
||||||
// Unfortunately we have no way to pass in a Task token.
|
|
||||||
const Task* dummy_task = reinterpret_cast<const Task*>(-1);
|
|
||||||
Task_lock_obj<Object> tl(dummy_task, secn.first);
|
|
||||||
contents = secn.first->section_contents(secn.second,
|
|
||||||
&plen,
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The buffer to hold all the contents including relocs. A checksum
|
// The buffer to hold all the contents including relocs. A checksum
|
||||||
// is then computed on this buffer.
|
// is then computed on this buffer.
|
||||||
@ -373,12 +369,6 @@ get_section_contents(bool first_iteration,
|
|||||||
if (!first_iteration)
|
if (!first_iteration)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Lock the object so we can read from it. This is only called
|
|
||||||
// single-threaded from queue_middle_tasks, so it is OK to lock.
|
|
||||||
// Unfortunately we have no way to pass in a Task token.
|
|
||||||
const Task* dummy_task = reinterpret_cast<const Task*>(-1);
|
|
||||||
Task_lock_obj<Object> tl(dummy_task, it_v->first);
|
|
||||||
|
|
||||||
uint64_t secn_flags = (it_v->first)->section_flags(it_v->second);
|
uint64_t secn_flags = (it_v->first)->section_flags(it_v->second);
|
||||||
// This reloc points to a merge section. Hash the
|
// This reloc points to a merge section. Hash the
|
||||||
// contents of this section.
|
// contents of this section.
|
||||||
|
Reference in New Issue
Block a user