X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=elfcpp%2Felfcpp_file.h;h=7c5cecb38c2eeea60e7e4b44268a2425b7d5389b;hb=31e43bfffbc585a59d07f21f191317a714476e38;hp=bcb0275413c60b25bff4311e8b6c0b2cba37e837;hpb=4b95cf5c0c75d6efc1b2f96af72317aecca079f1;p=binutils-gdb.git diff --git a/elfcpp/elfcpp_file.h b/elfcpp/elfcpp_file.h index bcb0275413c..7c5cecb38c2 100644 --- a/elfcpp/elfcpp_file.h +++ b/elfcpp/elfcpp_file.h @@ -1,6 +1,6 @@ // elfcpp_file.h -- file access for elfcpp -*- C++ -*- -// Copyright (C) 2006-2014 Free Software Foundation, Inc. +// Copyright (C) 2006-2022 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of elfcpp. @@ -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::find_section_by_type(unsigned int type) template off_t -Elf_file::section_header_offset(unsigned int shndx) +Elf_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::section_header_offset(unsigned int shndx) template std::string -Elf_file::section_name(unsigned int shndx) +Elf_file::section_name(unsigned int shndx) const { File* const file = this->file_;