obj = allocate_objfile (bf, 0);
#if 0
- This is only needed if we want to load shared libraries no matter what.
- Since we provide the choice of incremental loading of shared objects now,
- we don't have to load them as default anymore.
+ /* This is only needed if we want to load shared libraries no matter what.
+ Since we provide the choice of incremental loading of shared objects
+ now, we do not have to load them as default anymore. */
syms_from_objfile (obj, 0, 0, 0);
+ new_symfile_objfile (obj, 0, 0);
#endif
}
}
if (vp->tstart != old_start) {
-
-#if 0
- We don't have a valid `objfile' at this point. This is moved into the
- previous statement; ALL_OBJFILES() for-loop.
-
- ALL_MSYMBOLS (objfile, msymbol)
- if (msymbol->address < TEXT_SEGMENT_BASE)
- msymbol -> address += vp->tstart - old_start;
-#endif /* 0 */
-
/* breakpoints need to be relocated as well. */
fixup_breakpoints (0, TEXT_SEGMENT_BASE, vp->tstart - old_start);
}
register char *mem, *objname;
/* This ldi structure was allocated using alloca() in
- aixcoff_relocate_symtab(). Now we need to have persistent object
+ xcoff_relocate_symtab(). Now we need to have persistent object
and member names, so we should save them. */
mem = ldi->ldinfo_filename + strlen(ldi->ldinfo_filename) + 1;
vmap_exec ()
{
static bfd *execbfd;
+ int i;
+
if (execbfd == exec_bfd)
return;
execbfd = exec_bfd;
- /* First exec section is `.text', second is `.data'. If this is changed,
- then this routine will choke. */
+ if (!vmap || !exec_ops.to_sections)
+ error ("vmap_exec: vmap or exec_ops.to_sections == 0\n");
- if (!vmap || !exec_ops.to_sections ||
- strcmp (exec_ops.to_sections[0].sec_ptr->name, ".text") ||
- strcmp (exec_ops.to_sections[1].sec_ptr->name, ".data"))
-
- fatal ("aix: Improper exec_ops sections.");
-
- exec_ops.to_sections [0].addr += vmap->tstart;
- exec_ops.to_sections [0].endaddr += vmap->tstart;
- exec_ops.to_sections [1].addr += vmap->dstart;
- exec_ops.to_sections [1].endaddr += vmap->dstart;
+ for (i=0; &exec_ops.to_sections[i] < exec_ops.to_sections_end; i++)
+ {
+ if (strcmp(".text", exec_ops.to_sections[i].sec_ptr->name) == 0)
+ {
+ exec_ops.to_sections[i].addr += vmap->tstart;
+ exec_ops.to_sections[i].endaddr += vmap->tstart;
+ }
+ else if (strcmp(".data", exec_ops.to_sections[i].sec_ptr->name) == 0)
+ {
+ exec_ops.to_sections[i].addr += vmap->dstart;
+ exec_ops.to_sections[i].endaddr += vmap->dstart;
+ }
+ }
}