#include "source.h"
#include "addrmap.h"
#include "arch-utils.h"
+#include "exec.h"
/* Prototypes for local functions */
objfile_p_char is a char * to get it through
bfd_map_over_sections; we cast it back to its proper type. */
-#ifndef TARGET_KEEP_SECTION
-#define TARGET_KEEP_SECTION(ASECT) 0
-#endif
-
/* Called via bfd_map_over_sections to build up the section table that
the objfile references. The objfile contains pointers to the start
of the table (objfile->sections) and to the first location after
aflag = bfd_get_section_flags (abfd, asect);
- if (!(aflag & SEC_ALLOC) && !(TARGET_KEEP_SECTION (asect)))
+ if (!(aflag & SEC_ALLOC))
return;
if (0 == bfd_section_size (abfd, asect))
void
objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
{
+ struct obj_section *s;
struct section_offsets *delta =
((struct section_offsets *)
alloca (SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)));
But I'm leaving out that test, on the theory that
they can't possibly pass the tests below. */
if ((SYMBOL_CLASS (sym) == LOC_LABEL
- || SYMBOL_CLASS (sym) == LOC_STATIC
- || SYMBOL_CLASS (sym) == LOC_INDIRECT)
+ || SYMBOL_CLASS (sym) == LOC_STATIC)
&& SYMBOL_SECTION (sym) >= 0)
{
SYMBOL_VALUE_ADDRESS (sym) +=
}
}
+ /* Update the table in exec_ops, used to read memory. */
+ ALL_OBJFILE_OSECTIONS (objfile, s)
+ {
+ int idx = s->the_bfd_section->index;
+
+ exec_set_section_address (bfd_get_filename (objfile->obfd), idx,
+ s->addr);
+ }
+
/* Relocate breakpoints as necessary, after things are relocated. */
breakpoint_re_set ();
}