// reduced_debug_output.cc -- output reduced debugging information to save space
-// Copyright 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2008-2019 Free Software Foundation, Inc.
// Written by Caleb Howe <cshowe@google.com>.
// This file is part of gold.
return false;
switch(form)
{
- case elfcpp::DW_FORM_null:
+ case elfcpp::DW_FORM_flag_present:
break;
case elfcpp::DW_FORM_strp:
+ case elfcpp::DW_FORM_sec_offset:
die += is64 ? 8 : 4;
break;
case elfcpp::DW_FORM_addr:
break;
}
case elfcpp::DW_FORM_block:
+ case elfcpp::DW_FORM_exprloc:
LEB_decoded = read_unsigned_LEB_128(die, &LEB_size);
die += (LEB_decoded + LEB_size);
break;
break;
case elfcpp::DW_FORM_data8:
case elfcpp::DW_FORM_ref8:
+ case elfcpp::DW_FORM_ref_sig8:
die += 8;
break;
case elfcpp::DW_FORM_ref_udata:
read_unsigned_LEB_128(die, &LEB_size);
die += LEB_size;
break;
+ case elfcpp::DW_FORM_sdata:
+ read_signed_LEB_128(die, &LEB_size);
+ die += LEB_size;
+ break;
case elfcpp::DW_FORM_string:
{
size_t length = strlen(reinterpret_cast<char*>(die));
die += length + 1;
break;
}
- case elfcpp::DW_FORM_sdata:
case elfcpp::DW_FORM_indirect:
+ case elfcpp::DW_FORM_GNU_addr_index:
+ case elfcpp::DW_FORM_GNU_str_index:
+ default:
return false;
}
}
abbrev_data += LEB_size;
// Together with the abbreviation number these fields make up
- // the header for each abbreviation
+ // the header for each abbreviation.
uint64_t abbrev_type = read_unsigned_LEB_128(abbrev_data, &LEB_size);
abbrev_data += LEB_size;
// This would ordinarily be the has_children field of the
- // abbreviation. But it's going to be false after reducting the
- // information, so there's no point in storing it
+ // abbreviation. But it's going to be false after reducing the
+ // information, so there's no point in storing it.
abbrev_data++;
- // Read to the end of the current abbreviation
+ // Read to the end of the current abbreviation.
// This is indicated by two zero unsigned LEBs in a row. We don't
// need to parse the data yet, so we just scan through the data
// looking for two consecutive 0 bytes indicating the end of the
- // abbreviation
+ // abbreviation.
unsigned char* current_abbrev;
for (current_abbrev = abbrev_data;
current_abbrev[0] || current_abbrev[1];
void
Output_reduced_debug_abbrev_section::do_write(Output_file* of)
{
- off_t off = this->offset();
- off_t datasize = this->data_size();
- unsigned char* view = of->get_output_view(off, datasize);
+ off_t offset = this->offset();
+ off_t data_size = this->data_size();
+ unsigned char* view = of->get_output_view(offset, data_size);
if (this->failed_)
memcpy(view, this->postprocessing_buffer(),
this->postprocessing_buffer_size());
else
- memcpy(view, &this->data_.front(), datasize);
- of->write_output_view(off, datasize, view);
+ memcpy(view, &this->data_.front(), data_size);
+ of->write_output_view(offset, data_size, view);
}
// Locates the abbreviation with abbreviation_number abbrev_number in the
void Output_reduced_debug_info_section::do_write(Output_file* of)
{
- off_t off = this->offset();
- off_t datasize = this->data_size();
- unsigned char* view = of->get_output_view(off, datasize);
+ off_t offset = this->offset();
+ off_t data_size = this->data_size();
+ unsigned char* view = of->get_output_view(offset, data_size);
if (this->failed_)
memcpy(view, this->postprocessing_buffer(),
this->postprocessing_buffer_size());
else
- memcpy(view, &this->data_.front(), datasize);
- of->write_output_view(off, datasize, view);
+ memcpy(view, &this->data_.front(), data_size);
+ of->write_output_view(offset, data_size, view);
}
} // End namespace gold.