Make some line_header methods const

This changes a few line_header methods to be const.  In some cases, a
const overload is added.

gdb/ChangeLog
2020-03-26  Tom Tromey  <tom@tromey.com>

	* dwarf2/line-header.h (struct line_header) <is_valid_file_index,
	file_names_size, file_full_name, file_file_name>: Use const.
	<file_name_at, file_names>: Add const overload.
	* dwarf2/line-header.c (line_header::file_file_name)
	(line_header::file_full_name): Update.
This commit is contained in:
Tom Tromey 2020-03-26 09:28:08 -06:00
parent c90ec28ae4
commit 8844c11b8b
3 changed files with 24 additions and 6 deletions

View file

@ -1,3 +1,11 @@
2020-03-26 Tom Tromey <tom@tromey.com>
* dwarf2/line-header.h (struct line_header) <is_valid_file_index,
file_names_size, file_full_name, file_file_name>: Use const.
<file_name_at, file_names>: Add const overload.
* dwarf2/line-header.c (line_header::file_file_name)
(line_header::file_full_name): Update.
2020-03-26 Tom Tromey <tom@tromey.com> 2020-03-26 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (dwarf2_macro_malformed_definition_complaint) * dwarf2/read.c (dwarf2_macro_malformed_definition_complaint)

View file

@ -59,7 +59,7 @@ line_header::add_file_name (const char *name,
} }
gdb::unique_xmalloc_ptr<char> gdb::unique_xmalloc_ptr<char>
line_header::file_file_name (int file) line_header::file_file_name (int file) const
{ {
/* Is the file number a valid index into the line header's file name /* Is the file number a valid index into the line header's file name
table? Remember that file numbers start with one, not zero. */ table? Remember that file numbers start with one, not zero. */
@ -95,7 +95,7 @@ line_header::file_file_name (int file)
} }
gdb::unique_xmalloc_ptr<char> gdb::unique_xmalloc_ptr<char>
line_header::file_full_name (int file, const char *comp_dir) line_header::file_full_name (int file, const char *comp_dir) const
{ {
/* Is the file number a valid index into the line header's file name /* Is the file number a valid index into the line header's file name
table? Remember that file numbers start with one, not zero. */ table? Remember that file numbers start with one, not zero. */

View file

@ -96,7 +96,7 @@ struct line_header
return m_include_dirs[vec_index]; return m_include_dirs[vec_index];
} }
bool is_valid_file_index (int file_index) bool is_valid_file_index (int file_index) const
{ {
if (version >= 5) if (version >= 5)
return 0 <= file_index && file_index < file_names_size (); return 0 <= file_index && file_index < file_names_size ();
@ -117,11 +117,21 @@ struct line_header
return &m_file_names[vec_index]; return &m_file_names[vec_index];
} }
/* A const overload of the same. */
const file_entry *file_name_at (file_name_index index) const
{
line_header *lh = const_cast<line_header *> (this);
return lh->file_name_at (index);
}
/* The indexes are 0-based in DWARF 5 and 1-based in DWARF 4. Therefore, /* The indexes are 0-based in DWARF 5 and 1-based in DWARF 4. Therefore,
this method should only be used to iterate through all file entries in an this method should only be used to iterate through all file entries in an
index-agnostic manner. */ index-agnostic manner. */
std::vector<file_entry> &file_names () std::vector<file_entry> &file_names ()
{ return m_file_names; } { return m_file_names; }
/* A const overload of the same. */
const std::vector<file_entry> &file_names () const
{ return m_file_names; }
/* Offset of line number information in .debug_line section. */ /* Offset of line number information in .debug_line section. */
sect_offset sect_off {}; sect_offset sect_off {};
@ -145,7 +155,7 @@ struct line_header
element is standard_opcode_lengths[opcode_base - 1]. */ element is standard_opcode_lengths[opcode_base - 1]. */
std::unique_ptr<unsigned char[]> standard_opcode_lengths; std::unique_ptr<unsigned char[]> standard_opcode_lengths;
int file_names_size () int file_names_size () const
{ return m_file_names.size(); } { return m_file_names.size(); }
/* The start and end of the statement program following this /* The start and end of the statement program following this
@ -157,13 +167,13 @@ struct line_header
compilation. The result is allocated using xmalloc; the caller compilation. The result is allocated using xmalloc; the caller
is responsible for freeing it. */ is responsible for freeing it. */
gdb::unique_xmalloc_ptr<char> file_full_name (int file, gdb::unique_xmalloc_ptr<char> file_full_name (int file,
const char *comp_dir); const char *comp_dir) const;
/* Return file name relative to the compilation directory of file /* Return file name relative to the compilation directory of file
number I in this object's file name table. The result is number I in this object's file name table. The result is
allocated using xmalloc; the caller is responsible for freeing allocated using xmalloc; the caller is responsible for freeing
it. */ it. */
gdb::unique_xmalloc_ptr<char> file_file_name (int file); gdb::unique_xmalloc_ptr<char> file_file_name (int file) const;
private: private:
/* The include_directories table. Note these are observing /* The include_directories table. Note these are observing