OpenCores
URL https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [gold/] [merge.cc] - Diff between revs 159 and 166

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 159 Rev 166
Line 404... Line 404...
 
 
bool
bool
Output_merge_data::do_add_input_section(Relobj* object, unsigned int shndx)
Output_merge_data::do_add_input_section(Relobj* object, unsigned int shndx)
{
{
  section_size_type len;
  section_size_type len;
  section_size_type uncompressed_size = 0;
  bool is_new;
  unsigned char* uncompressed_data = NULL;
  const unsigned char* p = object->decompressed_section_contents(shndx, &len,
  const unsigned char* p = object->section_contents(shndx, &len, false);
                                                                 &is_new);
 
 
  if (object->section_is_compressed(shndx, &uncompressed_size))
 
    {
 
      uncompressed_data = new unsigned char[uncompressed_size];
 
      if (!decompress_input_section(p, len, uncompressed_data,
 
                                    uncompressed_size))
 
        object->error(_("could not decompress section %s"),
 
                      object->section_name(shndx).c_str());
 
      p = uncompressed_data;
 
      len = uncompressed_size;
 
    }
 
 
 
  section_size_type entsize = convert_to_section_size_type(this->entsize());
  section_size_type entsize = convert_to_section_size_type(this->entsize());
 
 
  if (len % entsize != 0)
  if (len % entsize != 0)
    {
    {
      if (uncompressed_data != NULL)
      if (is_new)
        delete[] uncompressed_data;
        delete[] p;
      return false;
      return false;
    }
    }
 
 
  this->input_count_ += len / entsize;
  this->input_count_ += len / entsize;
 
 
Line 455... Line 444...
 
 
  // For script processing, we keep the input sections.
  // For script processing, we keep the input sections.
  if (this->keeps_input_sections())
  if (this->keeps_input_sections())
    record_input_section(object, shndx);
    record_input_section(object, shndx);
 
 
  if (uncompressed_data != NULL)
  if (is_new)
    delete[] uncompressed_data;
    delete[] p;
 
 
  return true;
  return true;
}
}
 
 
// Set the final data size in a merged output section with fixed size
// Set the final data size in a merged output section with fixed size
Line 515... Line 504...
bool
bool
Output_merge_string<Char_type>::do_add_input_section(Relobj* object,
Output_merge_string<Char_type>::do_add_input_section(Relobj* object,
                                                     unsigned int shndx)
                                                     unsigned int shndx)
{
{
  section_size_type len;
  section_size_type len;
  section_size_type uncompressed_size = 0;
  bool is_new;
  unsigned char* uncompressed_data = NULL;
  const unsigned char* pdata = object->decompressed_section_contents(shndx,
  const unsigned char* pdata = object->section_contents(shndx, &len, false);
                                                                     &len,
 
                                                                     &is_new);
  if (object->section_is_compressed(shndx, &uncompressed_size))
 
    {
 
      uncompressed_data = new unsigned char[uncompressed_size];
 
      if (!decompress_input_section(pdata, len, uncompressed_data,
 
                                    uncompressed_size))
 
        object->error(_("could not decompress section %s"),
 
                      object->section_name(shndx).c_str());
 
      pdata = uncompressed_data;
 
      len = uncompressed_size;
 
    }
 
 
 
  const Char_type* p = reinterpret_cast<const Char_type*>(pdata);
  const Char_type* p = reinterpret_cast<const Char_type*>(pdata);
  const Char_type* pend = p + len / sizeof(Char_type);
  const Char_type* pend = p + len / sizeof(Char_type);
  const Char_type* pend0 = pend;
  const Char_type* pend0 = pend;
 
 
  if (len % sizeof(Char_type) != 0)
  if (len % sizeof(Char_type) != 0)
    {
    {
      object->error(_("mergeable string section length not multiple of "
      object->error(_("mergeable string section length not multiple of "
                      "character size"));
                      "character size"));
      if (uncompressed_data != NULL)
      if (is_new)
        delete[] uncompressed_data;
        delete[] pdata;
      return false;
      return false;
    }
    }
 
 
  if (pend[-1] != 0)
  if (pend[-1] != 0)
    {
    {
Line 604... Line 583...
 
 
  // For script processing, we keep the input sections.
  // For script processing, we keep the input sections.
  if (this->keeps_input_sections())
  if (this->keeps_input_sections())
    record_input_section(object, shndx);
    record_input_section(object, shndx);
 
 
  if (uncompressed_data != NULL)
  if (is_new)
    delete[] uncompressed_data;
    delete[] pdata;
 
 
  return true;
  return true;
}
}
 
 
// Finalize the mappings from the input sections to the output
// Finalize the mappings from the input sections to the output

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.