Move read_offset_1 to leb.c

This moves read_offset_1 to leb.c, as it is a low-level data-reading
function.  It is also renamed to remove the "_1", because gdb can use
overloading now, and this is clearer.

2020-02-08  Tom Tromey  <tom@tromey.com>

	* dwarf2/read.c (read_offset_1): Move to leb.c.
	(read_abbrev_offset, read_offset, dwarf_decode_line_header)
	(dwarf_decode_macro_bytes): Update.
	* dwarf2/leb.c (read_offset): Rename; move from read.c.
	* dwarf2/leb.h (read_offset): Declare.

Change-Id: I048140598acfa76eade2cc529ab7933d4b9ca0b3
This commit is contained in:
Tom Tromey 2020-02-08 13:40:54 -07:00
parent 2c7d5afccf
commit 24aa364d60
4 changed files with 41 additions and 31 deletions

View File

@ -1,3 +1,11 @@
2020-02-08 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (read_offset_1): Move to leb.c.
(read_abbrev_offset, read_offset, dwarf_decode_line_header)
(dwarf_decode_macro_bytes): Update.
* dwarf2/leb.c (read_offset): Rename; move from read.c.
* dwarf2/leb.h (read_offset): Declare.
2020-02-08 Tom Tromey <tom@tromey.com>
* dwarf2/read.c (dwarf2_section_size): Remove.

View File

@ -110,3 +110,27 @@ read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read,
return length;
}
/* See leb.h. */
LONGEST
read_offset (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
{
LONGEST retval = 0;
switch (offset_size)
{
case 4:
retval = bfd_get_32 (abfd, buf);
break;
case 8:
retval = bfd_get_64 (abfd, buf);
break;
default:
internal_error (__FILE__, __LINE__,
_("read_offset_1: bad switch [in module %s]"),
bfd_get_filename (abfd));
}
return retval;
}

View File

@ -130,4 +130,8 @@ extern LONGEST read_initial_length (bfd *abfd, const gdb_byte *buf,
unsigned int *bytes_read,
bool handle_nonstd = true);
/* Read an offset from the data stream. */
extern LONGEST read_offset (bfd *abfd, const gdb_byte *buf,
unsigned int offset_size);
#endif /* GDB_DWARF2_LEB_H */

View File

@ -1285,8 +1285,6 @@ static LONGEST read_offset (bfd *, const gdb_byte *,
const struct comp_unit_head *,
unsigned int *);
static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
static sect_offset read_abbrev_offset
(struct dwarf2_per_objfile *dwarf2_per_objfile,
struct dwarf2_section_info *, sect_offset);
@ -6145,7 +6143,7 @@ read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
info_ptr += 2;
}
return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
return (sect_offset) read_offset (abfd, info_ptr, offset_size);
}
/* Allocate a new partial symtab for file named NAME and mark this new
@ -19033,36 +19031,12 @@ read_offset (bfd *abfd, const gdb_byte *buf,
const struct comp_unit_head *cu_header,
unsigned int *bytes_read)
{
LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
LONGEST offset = read_offset (abfd, buf, cu_header->offset_size);
*bytes_read = cu_header->offset_size;
return offset;
}
/* Read an offset from the data stream. */
static LONGEST
read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
{
LONGEST retval = 0;
switch (offset_size)
{
case 4:
retval = bfd_get_32 (abfd, buf);
break;
case 8:
retval = bfd_get_64 (abfd, buf);
break;
default:
internal_error (__FILE__, __LINE__,
_("read_offset_1: bad switch [in module %s]"),
bfd_get_filename (abfd));
}
return retval;
}
static const gdb_byte *
read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
{
@ -19847,7 +19821,7 @@ dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
return NULL;
}
}
lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
lh->header_length = read_offset (abfd, line_ptr, offset_size);
line_ptr += offset_size;
lh->statement_program_start = line_ptr + lh->header_length;
lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
@ -23922,7 +23896,7 @@ dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
{
LONGEST str_offset;
str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
str_offset = read_offset (abfd, mac_ptr, offset_size);
mac_ptr += offset_size;
if (macinfo_type == DW_MACRO_define_sup
@ -24062,7 +24036,7 @@ dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
int is_dwz = section_is_dwz;
const gdb_byte *new_mac_ptr;
offset = read_offset_1 (abfd, mac_ptr, offset_size);
offset = read_offset (abfd, mac_ptr, offset_size);
mac_ptr += offset_size;
if (macinfo_type == DW_MACRO_import_sup)