/* Private partial symbol table definitions.
- Copyright (C) 2009-2018 Free Software Foundation, Inc.
+ Copyright (C) 2009-2019 Free Software Foundation, Inc.
This file is part of GDB.
the offsets provided in OBJFILE. */
CORE_ADDR address (const struct objfile *objfile) const
{
- return value.address;
+ return value.address + ANOFFSET (objfile->section_offsets, section);
}
/* Set the address of this partial symbol. The address must be
unrelocated. */
- void set_address (CORE_ADDR addr)
+ void set_unrelocated_address (CORE_ADDR addr)
{
value.address = addr;
}
struct partial_symtab
{
- /* Return the low text address of this partial_symtab. */
- CORE_ADDR text_low () const
+ /* Return the raw low text address of this partial_symtab. */
+ CORE_ADDR raw_text_low () const
{
return m_text_low;
}
- /* Return the high text address of this partial_symtab. */
- CORE_ADDR text_high () const
+ /* Return the raw high text address of this partial_symtab. */
+ CORE_ADDR raw_text_high () const
{
return m_text_high;
}
+ /* Return the relocated low text address of this partial_symtab. */
+ CORE_ADDR text_low (struct objfile *objfile) const
+ {
+ return m_text_low + ANOFFSET (objfile->section_offsets,
+ SECT_OFF_TEXT (objfile));
+ }
+
+ /* Return the relocated high text address of this partial_symtab. */
+ CORE_ADDR text_high (struct objfile *objfile) const
+ {
+ return m_text_high + ANOFFSET (objfile->section_offsets,
+ SECT_OFF_TEXT (objfile));
+ }
+
/* Set the low text address of this partial_symtab. */
void set_text_low (CORE_ADDR addr)
{
m_text_low = addr;
+ text_low_valid = 1;
}
/* Set the hight text address of this partial_symtab. */
void set_text_high (CORE_ADDR addr)
{
m_text_high = addr;
+ text_high_valid = 1;
}
/* Range of text addresses covered by this file; texthigh is the
beginning of the next section. Do not use if PSYMTABS_ADDRMAP_SUPPORTED
is set. Do not refer directly to these fields. Instead, use the
- accessors. */
+ accessors. The validity of these fields is determined by the
+ text_low_valid and text_high_valid fields; these are located later
+ in this structure for better packing. */
CORE_ADDR m_text_low;
CORE_ADDR m_text_high;
ENUM_BITFIELD (psymtab_search_status) searched_flag : 2;
+ /* Validity of the m_text_low and m_text_high fields. */
+
+ unsigned int text_low_valid : 1;
+ unsigned int text_high_valid : 1;
+
/* Pointer to compunit eventually allocated for this source file, 0 if
!readin or if we haven't looked for the symtab after it was readin. */
extern void add_psymbol_to_list (const char *, int,
int, domain_enum,
enum address_class,
+ short /* section */,
std::vector<partial_symbol *> *,
CORE_ADDR,
enum language, struct objfile *);