diff options
author | Cary Coutant <ccoutant@google.com> | 2014-07-02 16:12:51 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2014-09-02 15:44:58 -0700 |
commit | 54674d38930c7da1af518510fede6f700f5ca596 (patch) | |
tree | aef7ff0038d0040cafb00667066b48bc874b17bb /elfcpp/elfcpp_file.h | |
parent | 9860cbcfb60bdae2f9800e6a6ea5f21ef1507d08 (diff) | |
download | gdb-54674d38930c7da1af518510fede6f700f5ca596.zip gdb-54674d38930c7da1af518510fede6f700f5ca596.tar.gz gdb-54674d38930c7da1af518510fede6f700f5ca596.tar.bz2 |
Make Elf_file::section_name() a const function, so that it can be used in
places where we have only a const Elf_file*.
elfcpp/
* elfcpp_file.h (Elf_file::shnum): New const function.
(Elf_file::shstrndx): New const function.
(Elf_file::large_shndx_offset): New const function.
(Elf_file::section_name): Add const attribute.
(Elf_file::section_header_offset): Likewise.
gold/
* dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
* dynobj.h (Sized_dynobj::do_section_name): Likewise.
* incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
(Sized_incr_dynobj::do_section_name): Likewise.
* incremental.h (Sized_relobj_incr::do_section_name): Likewise.
(Sized_incr_dynobj::do_section_name): Likewise.
* object.h (Object::section_name): Likewise.
(Object::do_section_name): Likewise.
(Sized_relobj_file::do_section_name): Likewise.
* plugin.cc (Sized_pluginobj::do_section_name): Likewise.
* plugin.h (Sized_pluginobj::do_section_name): Likewise.
Diffstat (limited to 'elfcpp/elfcpp_file.h')
-rw-r--r-- | elfcpp/elfcpp_file.h | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/elfcpp/elfcpp_file.h b/elfcpp/elfcpp_file.h index bcb0275..a8daf91 100644 --- a/elfcpp/elfcpp_file.h +++ b/elfcpp/elfcpp_file.h @@ -144,6 +144,15 @@ class Elf_file return this->shnum_; } + unsigned int + shnum() const + { + if (this->shnum_ == 0 && this->shoff_ != 0) + this->file_->error(_("ELF file has not been initialized yet" + " (internal error)")); + return this->shnum_; + } + // Return the section index of the section name string table. unsigned int shstrndx() @@ -152,6 +161,18 @@ class Elf_file return this->shstrndx_; } + unsigned int + shstrndx() const + { + if (this->shstrndx_ == SHN_XINDEX && this->shoff_ != 0) + { + this->file_->error(_("ELF file has not been initialized yet" + " (internal error)")); + return 0; + } + return this->shstrndx_; + } + // Return the value to subtract from section indexes >= // SHN_LORESERVE. See the comment in initialize_shnum. int @@ -161,6 +182,15 @@ class Elf_file return this->large_shndx_offset_; } + int + large_shndx_offset() const + { + if (this->shstrndx_ == SHN_XINDEX && this->shoff_ != 0) + this->file_->error(_("ELF file has not been initialized yet" + " (internal error)")); + return this->large_shndx_offset_; + } + // Return the location of the header of section SHNDX. typename File::Location section_header(unsigned int shndx) @@ -171,7 +201,7 @@ class Elf_file // Return the name of section SHNDX. std::string - section_name(unsigned int shndx); + section_name(unsigned int shndx) const; // Return the location of the contents of section SHNDX. typename File::Location @@ -216,7 +246,7 @@ class Elf_file // Return the file offset of the header of section SHNDX. off_t - section_header_offset(unsigned int shndx); + section_header_offset(unsigned int shndx) const; // The file we are reading. File* file_; @@ -465,7 +495,7 @@ Elf_file<size, big_endian, File>::find_section_by_type(unsigned int type) template<int size, bool big_endian, typename File> off_t -Elf_file<size, big_endian, File>::section_header_offset(unsigned int shndx) +Elf_file<size, big_endian, File>::section_header_offset(unsigned int shndx) const { if (shndx >= this->shnum()) this->file_->error(_("section_header_offset: bad shndx %u >= %u"), @@ -477,7 +507,7 @@ Elf_file<size, big_endian, File>::section_header_offset(unsigned int shndx) template<int size, bool big_endian, typename File> std::string -Elf_file<size, big_endian, File>::section_name(unsigned int shndx) +Elf_file<size, big_endian, File>::section_name(unsigned int shndx) const { File* const file = this->file_; |