#include "symtab.h"
#include "gdbcore.h"
#include "objfiles.h"
-#include "exceptions.h"
#include "gdbcmd.h"
#include "target.h"
#include "value.h"
from_tty ? SYMFILE_VERBOSE : 0,
sai, OBJF_SHARED, NULL);
+ add_target_sections_of_objfile (objf);
+
/* This might change our ideas about frames already looked at. */
reinit_frame_cache ();
return 0;
}
-/* Rummage through mappings to find the vsyscall page size. */
-
-static int
-find_vdso_size (CORE_ADDR vaddr, unsigned long size,
- int read, int write, int exec, int modified,
- void *data)
-{
- struct symbol_file_add_from_memory_args *args = data;
-
- if (vaddr == args->sysinfo_ehdr)
- {
- args->size = size;
- return 1;
- }
- return 0;
-}
-
/* Try to add the symbols for the vsyscall page, if there is one.
This function is called via the inferior_created observer. */
static void
add_vsyscall_page (struct target_ops *target, int from_tty)
{
- CORE_ADDR sysinfo_ehdr;
+ struct mem_range vsyscall_range;
- if (target_auxv_search (target, AT_SYSINFO_EHDR, &sysinfo_ehdr) > 0
- && sysinfo_ehdr != (CORE_ADDR) 0)
+ if (gdbarch_vsyscall_range (target_gdbarch (), &vsyscall_range))
{
struct bfd *bfd;
struct symbol_file_add_from_memory_args args;
return;
}
args.bfd = bfd;
- args.sysinfo_ehdr = sysinfo_ehdr;
- args.size = 0;
- if (gdbarch_find_memory_regions_p (target_gdbarch ()))
- (void) gdbarch_find_memory_regions (target_gdbarch (),
- find_vdso_size, &args);
+ args.sysinfo_ehdr = vsyscall_range.start;
+ args.size = vsyscall_range.length;
args.name = xstrprintf ("system-supplied DSO at %s",
- paddress (target_gdbarch (), sysinfo_ehdr));
+ paddress (target_gdbarch (), vsyscall_range.start));
/* Pass zero for FROM_TTY, because the action of loading the
vsyscall DSO was not triggered by the user, even if the user
typed "run" at the TTY. */