Browse Source

PR gold/12695

* layout.cc (Layout::symtab_section_shndx): New function.
	* layout.h (class Layout): Declare symtab_section_shndx.
	* output.cc (Output_section::write_header): Call it.
binutils-2_22-branch
Ian Lance Taylor 15 years ago
parent
commit
886f533ada
  1. 7
      gold/ChangeLog
  2. 11
      gold/layout.cc
  3. 4
      gold/layout.h
  4. 2
      gold/output.cc

7
gold/ChangeLog

@ -1,3 +1,10 @@
2011-06-29 Ian Lance Taylor <iant@google.com>
PR gold/12695
* layout.cc (Layout::symtab_section_shndx): New function.
* layout.h (class Layout): Declare symtab_section_shndx.
* output.cc (Output_section::write_header): Call it.
2011-06-29 Ian Lance Taylor <iant@google.com>
PR gold/12818

11
gold/layout.cc

@ -4536,6 +4536,17 @@ Layout::symtab_section_offset() const
return 0;
}
// Return the section index of the normal symbol table. It may have
// been stripped by the -s/--strip-all option.
unsigned int
Layout::symtab_section_shndx() const
{
if (this->symtab_section_ != NULL)
return this->symtab_section_->out_shndx();
return 0;
}
// Write out the Output_sections. Most won't have anything to write,
// since most of the data will come from input sections which are
// handled elsewhere. But some Output_sections do have Output_data.

4
gold/layout.h

@ -701,6 +701,10 @@ class Layout
off_t
symtab_section_offset() const;
// Return the section index of the normal symbol tabl.e
unsigned int
symtab_section_shndx() const;
// Return the dynamic symbol table.
Output_section*
dynsym_section() const

2
gold/output.cc

@ -3390,7 +3390,7 @@ Output_section::write_header(const Layout* layout,
if (this->link_section_ != NULL)
oshdr->put_sh_link(this->link_section_->out_shndx());
else if (this->should_link_to_symtab_)
oshdr->put_sh_link(layout->symtab_section()->out_shndx());
oshdr->put_sh_link(layout->symtab_section_shndx());
else if (this->should_link_to_dynsym_)
oshdr->put_sh_link(layout->dynsym_section()->out_shndx());
else

Loading…
Cancel
Save