X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ffbsd-nat.c;h=6a362dafa59a9df9e2ebc076686367fab2f2f4cc;hb=1da77581c0559e62b80b27f06f81dad4c7a7a0be;hp=2053fd3cfe685612de654e9d191c6657e8494754;hpb=0fb0cc7590113e9b459dfcc48dc71c9d419d9580;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/fbsd-nat.c b/gdb/fbsd-nat.c index 2053fd3cfe..6a362dafa5 100644 --- a/gdb/fbsd-nat.c +++ b/gdb/fbsd-nat.c @@ -1,7 +1,6 @@ /* Native-dependent code for FreeBSD. - Copyright (C) 2002, 2003, 2004, 2007, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2013 Free Software Foundation, Inc. This file is part of GDB. @@ -34,13 +33,13 @@ #include "elf-bfd.h" #include "fbsd-nat.h" -/* Return a the name of file that can be opened to get the symbols for +/* Return the name of a file that can be opened to get the symbols for the child process identified by PID. */ char * fbsd_pid_to_exec_file (int pid) { - size_t len = MAXPATHLEN; + size_t len = PATH_MAX; char *buf = xcalloc (len, sizeof (char)); char *path; @@ -56,7 +55,7 @@ fbsd_pid_to_exec_file (int pid) #endif path = xstrprintf ("/proc/%d/file", pid); - if (readlink (path, buf, MAXPATHLEN) == -1) + if (readlink (path, buf, PATH_MAX - 1) == -1) { xfree (buf); buf = NULL; @@ -92,9 +91,7 @@ fbsd_read_mapping (FILE *mapfile, unsigned long *start, unsigned long *end, argument to FUNC. */ int -fbsd_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, - int, int, int, void *), - void *obfd) +fbsd_find_memory_regions (find_memory_region_ftype func, void *obfd) { pid_t pid = ptid_get_pid (inferior_ptid); char *mapfilename; @@ -127,15 +124,16 @@ fbsd_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, if (info_verbose) { fprintf_filtered (gdb_stdout, - "Save segment, %ld bytes at 0x%s (%c%c%c)\n", - size, paddr_nz (start), + "Save segment, %ld bytes at %s (%c%c%c)\n", + size, paddress (target_gdbarch (), start), read ? 'r' : '-', write ? 'w' : '-', exec ? 'x' : '-'); } - /* Invoke the callback function to create the corefile segment. */ - func (start, size, read, write, exec, obfd); + /* Invoke the callback function to create the corefile segment. + Pass MODIFIED as true, we do not know the real modification state. */ + func (start, size, read, write, exec, 1, obfd); } do_cleanups (cleanup); @@ -145,23 +143,23 @@ fbsd_find_memory_regions (int (*func) (CORE_ADDR, unsigned long, static int find_signalled_thread (struct thread_info *info, void *data) { - if (info->stop_signal != TARGET_SIGNAL_0 + if (info->suspend.stop_signal != GDB_SIGNAL_0 && ptid_get_pid (info->ptid) == ptid_get_pid (inferior_ptid)) return 1; return 0; } -static enum target_signal +static enum gdb_signal find_stop_signal (void) { struct thread_info *info = iterate_over_threads (find_signalled_thread, NULL); if (info) - return info->stop_signal; + return info->suspend.stop_signal; else - return TARGET_SIGNAL_0; + return GDB_SIGNAL_0; } /* Create appropriate note sections for a corefile, returning them in @@ -204,11 +202,12 @@ fbsd_make_corefile_notes (bfd *obfd, int *note_size) if (get_exec_file (0)) { - char *fname = strrchr (get_exec_file (0), '/') + 1; + const char *fname = lbasename (get_exec_file (0)); char *psargs = xstrdup (fname); if (get_inferior_args ()) - psargs = reconcat (psargs, psargs, " ", get_inferior_args (), NULL); + psargs = reconcat (psargs, psargs, " ", get_inferior_args (), + (char *) NULL); note_data = elfcore_write_prpsinfo (obfd, note_data, note_size, fname, psargs);