Line 1147... |
Line 1147... |
|
|
const unsigned char* section_headers_data = NULL;
|
const unsigned char* section_headers_data = NULL;
|
section_size_type section_names_size;
|
section_size_type section_names_size;
|
const unsigned char* symbols_data = NULL;
|
const unsigned char* symbols_data = NULL;
|
section_size_type symbols_size;
|
section_size_type symbols_size;
|
section_offset_type external_symbols_offset;
|
|
const unsigned char* symbol_names_data = NULL;
|
const unsigned char* symbol_names_data = NULL;
|
section_size_type symbol_names_size;
|
section_size_type symbol_names_size;
|
|
|
if (is_gc_or_icf)
|
if (is_gc_or_icf)
|
{
|
{
|
section_headers_data = gc_sd->section_headers_data;
|
section_headers_data = gc_sd->section_headers_data;
|
section_names_size = gc_sd->section_names_size;
|
section_names_size = gc_sd->section_names_size;
|
symbols_data = gc_sd->symbols_data;
|
symbols_data = gc_sd->symbols_data;
|
symbols_size = gc_sd->symbols_size;
|
symbols_size = gc_sd->symbols_size;
|
external_symbols_offset = gc_sd->external_symbols_offset;
|
|
symbol_names_data = gc_sd->symbol_names_data;
|
symbol_names_data = gc_sd->symbol_names_data;
|
symbol_names_size = gc_sd->symbol_names_size;
|
symbol_names_size = gc_sd->symbol_names_size;
|
}
|
}
|
else
|
else
|
{
|
{
|
section_headers_data = sd->section_headers->data();
|
section_headers_data = sd->section_headers->data();
|
section_names_size = sd->section_names_size;
|
section_names_size = sd->section_names_size;
|
if (sd->symbols != NULL)
|
if (sd->symbols != NULL)
|
symbols_data = sd->symbols->data();
|
symbols_data = sd->symbols->data();
|
symbols_size = sd->symbols_size;
|
symbols_size = sd->symbols_size;
|
external_symbols_offset = sd->external_symbols_offset;
|
|
if (sd->symbol_names != NULL)
|
if (sd->symbol_names != NULL)
|
symbol_names_data = sd->symbol_names->data();
|
symbol_names_data = sd->symbol_names->data();
|
symbol_names_size = sd->symbol_names_size;
|
symbol_names_size = sd->symbol_names_size;
|
}
|
}
|
|
|
Line 1345... |
Line 1342... |
|
|
// Add the section to the incremental inputs layout.
|
// Add the section to the incremental inputs layout.
|
Incremental_inputs* incremental_inputs = layout->incremental_inputs();
|
Incremental_inputs* incremental_inputs = layout->incremental_inputs();
|
if (incremental_inputs != NULL
|
if (incremental_inputs != NULL
|
&& !discard
|
&& !discard
|
&& (shdr.get_sh_type() == elfcpp::SHT_PROGBITS
|
&& can_incremental_update(shdr.get_sh_type()))
|
|| shdr.get_sh_type() == elfcpp::SHT_NOBITS
|
|
|| shdr.get_sh_type() == elfcpp::SHT_NOTE))
|
|
{
|
{
|
off_t sh_size = shdr.get_sh_size();
|
off_t sh_size = shdr.get_sh_size();
|
section_size_type uncompressed_size;
|
section_size_type uncompressed_size;
|
if (this->section_is_compressed(i, &uncompressed_size))
|
if (this->section_is_compressed(i, &uncompressed_size))
|
sh_size = uncompressed_size;
|
sh_size = uncompressed_size;
|
Line 1580... |
Line 1575... |
gold_assert(!is_gc_pass_one || eh_frame_sections.empty());
|
gold_assert(!is_gc_pass_one || eh_frame_sections.empty());
|
for (std::vector<unsigned int>::const_iterator p = eh_frame_sections.begin();
|
for (std::vector<unsigned int>::const_iterator p = eh_frame_sections.begin();
|
p != eh_frame_sections.end();
|
p != eh_frame_sections.end();
|
++p)
|
++p)
|
{
|
{
|
gold_assert(external_symbols_offset != 0);
|
|
|
|
unsigned int i = *p;
|
unsigned int i = *p;
|
const unsigned char* pshdr;
|
const unsigned char* pshdr;
|
pshdr = section_headers_data + i * This::shdr_size;
|
pshdr = section_headers_data + i * This::shdr_size;
|
typename This::Shdr shdr(pshdr);
|
typename This::Shdr shdr(pshdr);
|
|
|