X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Flinux-tdep.c;h=2dcdc63076907881868601271fdbe509db81198e;hb=a350efd4fb368a35ada608f6bc26ccd3bed0ae6b;hp=59d04c490a621741bcc3636217b71c0a307199d3;hpb=b811d2c2920ddcb1adcd438da38e90912b31f45f;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 59d04c490a..2dcdc63076 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -258,7 +258,7 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch, /* sival_t */ sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION); - TYPE_NAME (sigval_type) = xstrdup ("sigval_t"); + sigval_type->set_name (xstrdup ("sigval_t")); append_composite_type_field (sigval_type, "sival_int", int_type); append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type); @@ -352,7 +352,7 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch, /* struct siginfo */ siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT); - TYPE_NAME (siginfo_type) = xstrdup ("siginfo"); + siginfo_type->set_name (xstrdup ("siginfo")); append_composite_type_field (siginfo_type, "si_signo", int_type); append_composite_type_field (siginfo_type, "si_errno", int_type); append_composite_type_field (siginfo_type, "si_code", int_type); @@ -701,22 +701,16 @@ dump_mapping_p (filter_flags filterflags, const struct smaps_vmflags *v, if (!dump_p && private_p && offset == 0 && (filterflags & COREFILTER_ELF_HEADERS) != 0) { - /* Let's check if we have an ELF header. */ - gdb::unique_xmalloc_ptr header; - int errcode; - /* Useful define specifying the size of the ELF magical header. */ #ifndef SELFMAG #define SELFMAG 4 #endif - /* Read the first SELFMAG bytes and check if it is ELFMAG. */ - if (target_read_string (addr, &header, SELFMAG, &errcode) == SELFMAG - && errcode == 0) + /* Let's check if we have an ELF header. */ + gdb_byte h[SELFMAG]; + if (target_read_memory (addr, h, SELFMAG) == 0) { - const char *h = header.get (); - /* The EI_MAG* and ELFMAG* constants come from . */ if (h[EI_MAG0] == ELFMAG0 && h[EI_MAG1] == ELFMAG1 @@ -1651,7 +1645,8 @@ linux_corefile_thread (struct thread_info *info, { struct regcache *regcache; - regcache = get_thread_arch_regcache (info->ptid, args->gdbarch); + regcache = get_thread_arch_regcache (info->inf->process_target (), + info->ptid, args->gdbarch); target_fetch_registers (regcache, -1); gdb::byte_vector siginfo_data = linux_get_siginfo_data (info, args->gdbarch); @@ -1728,7 +1723,7 @@ linux_fill_prpsinfo (struct elf_internal_linux_prpsinfo *p) /* Copying the program name. Only the basename matters. */ basename = lbasename (fname.get ()); - strncpy (p->pr_fname, basename, sizeof (p->pr_fname)); + strncpy (p->pr_fname, basename, sizeof (p->pr_fname) - 1); p->pr_fname[sizeof (p->pr_fname) - 1] = '\0'; infargs = get_inferior_args (); @@ -1738,7 +1733,7 @@ linux_fill_prpsinfo (struct elf_internal_linux_prpsinfo *p) if (infargs != NULL) psargs = psargs + " " + infargs; - strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs)); + strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs) - 1); p->pr_psargs[sizeof (p->pr_psargs) - 1] = '\0'; xsnprintf (filename, sizeof (filename), "/proc/%d/stat", (int) pid); @@ -2325,7 +2320,7 @@ linux_infcall_mmap (CORE_ADDR size, unsigned prot) "mmap" uses 64-bit off_t on x86_64 and 32-bit off_t on i386 and x32. */ struct value *mmap_val = find_function_in_inferior ("mmap64", &objf); struct value *addr_val; - struct gdbarch *gdbarch = get_objfile_arch (objf); + struct gdbarch *gdbarch = objf->arch (); CORE_ADDR retval; enum { @@ -2364,7 +2359,7 @@ linux_infcall_munmap (CORE_ADDR addr, CORE_ADDR size) struct objfile *objf; struct value *munmap_val = find_function_in_inferior ("munmap", &objf); struct value *retval_val; - struct gdbarch *gdbarch = get_objfile_arch (objf); + struct gdbarch *gdbarch = objf->arch (); LONGEST retval; enum { @@ -2485,8 +2480,9 @@ linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); } +void _initialize_linux_tdep (); void -_initialize_linux_tdep (void) +_initialize_linux_tdep () { linux_gdbarch_data_handle = gdbarch_data_register_post_init (init_linux_gdbarch_data);