summaryrefslogtreecommitdiff
path: root/gdb/common
Commit message (Collapse)AuthorAgeFilesLines
* Minor O_CLOEXEC optimization, "regression" fixJan Kratochvil2013-10-091-10/+11
| | | | | | | | | gdb/ 2013-10-09 Jan Kratochvil <jan.kratochvil@redhat.com> * common/filestuff.c (gdb_fopen_cloexec): Remove initialization of result variable. Rename variable fopen_e_ever_failed to fopen_e_ever_failed_einval. Retry fopen only for errno EINVAL.
* Clean up ptid.h/ptid.c.Pedro Alves2013-10-042-49/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ptid_t contructors, accessors and predicates are documented in _three_ places, and each place uses a different wording. E.g, the descriptions in the .c file of the new ptid_lwp_p, ptid_tid_p weren't updated in the final revision like the descriptions in the .h file were. Clearly, switching to a style that has a single central description avoids such issues. Worse, some of the existing descriptions are plain wrong, such as: /* Attempt to find and return an existing ptid with the given PID, LWP, and TID components. If none exists, create a new one and return that. */ ptid_t ptid_build (int pid, long lwp, long tid); The function does nothing that complicated. It's just a simple constructor. So this gets rid of all the unnecessary descriptions, leaving only the ones near the function declarations in the header file, and fixes/clarifies those that remain. gdb/ 2013-10-04 Pedro Alves <palves@redhat.com> * common/ptid.c (null_ptid, minus_one_ptid, ptid_build) (pid_to_ptid, ptid_get_pid, ptid_get_lwp, ptid_get_tid) (ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p): Replace describing comments with references to ptid.h. * common/ptid.h: Remove intro description of constructors, accessors and predicates. (struct ptid): Reformat. (minus_one_ptid, ptid_build, pid_to_ptid, ptid_get_pid) (ptid_get_lwp, ptid_get_tid, ptid_equal, ptid_is_pid): Change describing comments.
* Always run the PTRACE_O_TRACESYSGOOD tests even if PTRACE_O_TRACEFORK is not ↵Pedro Alves2013-10-031-37/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | supported. If enabling PTRACE_O_TRACEFORK fails, we never test for PTRACE_O_TRACESYSGOOD support. Before PTRACE_O_TRACESYSGOOD is checked, we have: /* First, set the PTRACE_O_TRACEFORK option. If this fails, we know for sure that it is not supported. */ ret = ptrace (PTRACE_SETOPTIONS, child_pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) PTRACE_O_TRACEFORK); if (ret != 0) { ret = ptrace (PTRACE_KILL, child_pid, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0); if (ret != 0) { warning (_("linux_check_ptrace_features: failed to kill child")); return; } ret = my_waitpid (child_pid, &status, 0); if (ret != child_pid) warning (_("linux_check_ptrace_features: failed " "to wait for killed child")); else if (!WIFSIGNALED (status)) warning (_("linux_check_ptrace_features: unexpected " "wait status 0x%x from killed child"), status); return; <<<<<<<<<<<<<<<<< } Note that early return. If PTRACE_O_TRACEFORK isn't supported, we're not checking PTRACE_O_TRACESYSGOOD. This didn't use to be a problem before the unification of this whole detection business in linux-ptrace.c. Before, the sysgood detection was completely separate: static void linux_test_for_tracesysgood (int original_pid) { int ret; sigset_t prev_mask; /* We don't want those ptrace calls to be interrupted. */ block_child_signals (&prev_mask); linux_supports_tracesysgood_flag = 0; ret = ptrace (PTRACE_SETOPTIONS, original_pid, 0, PTRACE_O_TRACESYSGOOD); if (ret != 0) goto out; linux_supports_tracesysgood_flag = 1; out: restore_child_signals_mask (&prev_mask); } So we need to get back the decoupling somehow. I think it's cleaner to split the seperate feature detections to separate functions. This patch does that. The new functions are named for their counterparts that existed before this code was moved to linux-ptrace.c. Note I've used forward declarations for the new functions to make the patch clearer, as otherwise the patch would look like I'd be adding a bunch of new code. A reorder can be done in a follow up patch. Tested on x86_64 Fedora 17. gdb/ 2013-10-03 Pedro Alves <palves@redhat.com> * common/linux-ptrace.c (linux_check_ptrace_features): Factor out the PTRACE_O_TRACESYSGOOD and PTRACE_O_TRACEFORK to separate functions. Always test for PTRACE_O_TRACESYSGOOD even if PTRACE_O_TRACEFORK is not supported. (linux_test_for_tracesysgood): New function. (linux_test_for_tracefork): New function, factored out from linux_check_ptrace_features, and also don't kill child_pid here.
* * aarch64-linux-nat.c: Replace PIDGET with ptid_get_pid.Luis Machado2013-09-302-3/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace TIDGET with ptid_get_lwp. Replace GET_LWP with ptid_get_lwp. * aix-thread.c (BUILD_THREAD, BUILD_LWP): Remove. Replace BUILD_THREAD with ptid_build. Replace BUILD_LWP with ptid_build. Replace PIDGET with ptid_get_pid. Replace TIDGET with ptid_get_lwp. * alphabsd-nat.c: Replace PIDGET with ptid_get_pid. * amd64-linux-nat.c: Replace PIDGET with ptid_get_pid. Replace TIDGET with ptid_get_lwp. * amd64bsd-nat.c: Replace PIDGET with ptid_get_pid. * arm-linux-nat.c: Replace PIDGET with ptid_get_pid. Replace TIDGET with ptid_get_lwp. Replace GET_LWP with ptid_get_lwp. * armnbsd-nat.c: Replace PIDGET with ptid_get_pid. * auxv.c: Likewise. * breakpoint.c: Likewise. * common/ptid.c (ptid_is_pid): Condense check for null_ptid and minus_one_ptid. (ptid_lwp_p): New function. (ptid_tid_p): New function. * common/ptid.h: Update comments for accessors. (ptid_lwp_p): New prototype. (ptid_tid_p): New prototype. * defs.h (PIDGET, TIDGET, MERGEPID): Do not define. * gcore.c: Replace PIDGET with ptid_get_pid. * gdbthread.h: Likewise. * gnu-nat.c: Likewise. * hppa-linux-nat.c: Replace PIDGET with ptid_get_pid. Replace TIDGET with ptid_get_lwp. * hppabsd-nat.c: Replace PIDGET with ptid_get_pid. * hppanbsd-nat.c: Likewise. * i386-linux-nat.c: Replace PIDGET with ptid_get_pid. Replace TIDGET with ptid_get_lwp. * i386bsd-nat.c: Replace PIDGET with ptid_get_pid. * ia64-linux-nat.c: Replace PIDGET with ptid_get_pid. * infcmd.c: Likewise. * inferior.h: Likewise. * inflow.c: Likewise. * infrun.c: Likewise. * linux-fork.c: Likewise. * linux-nat.c: Replace PIDGET with ptid_get_pid. Replace GET_PID with ptid_get_pid. Replace is_lwp with ptid_lwp_p. Replace GET_LWP with ptid_get_lwp. Replace BUILD_LWP with ptid_build.
* gdb: btrace: fix build errors on older glibc buildsMike Frysinger2013-09-291-2/+5
| | | | | | | | | | | | | | | | It is possible to have a build of glibc where SYS_perf_event_open is not defined (because when the glibc was compiled, the syscall did not exist), but have newer kernel headers installed so that linux/perf_event.h is available. In this setup, you get a build failure: ./common/linux-btrace.c: In function 'kernel_supports_btrace': ./common/linux-btrace.c:316:23: error: 'SYS_perf_event_open' undeclared (first use in this function) Update the ifdef check to also see if the syscall is available. URL: https://bugs.gentoo.org/473522 Reported-by: William Throwe <wtt6@cornell.edu> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* * common/filestuff.c (gdb_fopen_cloexec): Do not try to use "e"Pierre Muller2013-09-141-1/+7
| | | | mode if operating system doesn't know O_CLOEXEC.
* gdb/common/linux-ptrace.c: Fix build on non-Intel architectures.willnewton2013-08-281-1/+2
| | | | | | | | As uintptr_t is used stdint.h must be included on all architectures. 2013-08-28 Will Newton <will.newton@linaro.org> * common/linux-ptrace.c: Include stdint.h unconditionally.
* * common/linux-ptrace.c (linux_fork_to_function): Push #Luis Machado2013-08-231-4/+4
| | | | | | directives to the start of the line. (linux_check_ptrace_features): Fix warning message to use the "_" markup.
* Unify ptrace options discovery code and make both GDB andLuis Machado2013-08-222-4/+321
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gdbserver use it. gdb/ * Makefile.in (HFILES_NO_SRCDIR): Add nat/linux-nat.h and nat/linux-waitpid.h. (linux-waitpid.o): New object file rule. * common/linux-ptrace.c: Include nat/linux-waitpid.h. (current_ptrace_options): Moved from linux-nat.c. (linux_ptrace_test_ret_to_nx): Use type casts for ptrace parameters. (linux_fork_to_function): New function. (linux_grandchild_function): Likewise. (linux_child_function): Likewise. (linux_check_ptrace_features): New function, heavily based on linux-nat.c:linux_test_for_tracefork. (linux_enable_event_reporting): New function. (ptrace_supports_feature): Likewise. (linux_supports_tracefork): Likewise. (linux_supports_traceclone): Likewise. (linux_supports_tracevforkdone): Likewise. (linux_supports_tracesysgood): Likewise. * common/linux-ptrace.h (HAS_NOMMU): Moved from gdbserver/linux-low.c. (linux_enable_event_reporting): New declaration. (linux_supports_tracefork): Likewise. (linux_supports_traceclone): Likewise. (linux_supports_tracevforkdone): Likewise. (linux_supports_tracesysgood): Likewise. * config.in (PTRACE_TYPE_ARG4): Regenerate. * config/aarch64/linux.mh (NATDEPFILES): Add linux-waitpid.o. * config/alpha/alpha-linux.mh (NATDEPFILES): Likewise. * config/arm/linux.mh (NATDEPFILES): Likewise. * config/i386/linux.mh (NATDEPFILES): Likewise. * config/i386/linux64.mh (NATDEPFILES): Likewise. * config/ia64/linux.mh (NATDEPFILES): Likewise. * config/m32r/linux.mh (NATDEPFILES): Likewise. * config/m68k/linux.mh (NATDEPFILES): Likewise. * config/mips/linux.mh (NATDEPFILES): Likewise. * config/pa/linux.mh (NATDEPFILES): Likewise.. * config/powerpc/linux.mh (NATDEPFILES): Likewise.. * config/powerpc/ppc64-linux.mh (NATDEPFILES): Likewise. * config/powerpc/spu-linux.mh (NATDEPFILES): Likewise. * config/sparc/linux.mh (NATDEPFILES): Likewise. * config/sparc/linux64.mh (NATDEPFILES): Likewise. * config/tilegx/linux.mh (NATDEPFILES): Likewise. * config/xtensa/linux.mh (NATDEPFILES): Likewise. * configure.ac (AC_CACHE_CHECK): Add void * to the list of ptrace's 4th argument's types. Check the type of PTRACE_TYPE_ARG4. * configure: Regenerate. * linux-nat.c: Include nat/linux-nat.h and nat/linux-waitpid.h. (SYSCALL_SIGTRAP): Moved to nat/linux-nat.h. (linux_supports_tracefork_flag): Remove. (linux_supports_tracesysgood_flag): Likewise. (linux_supports_tracevforkdone_flag): Likewise. (current_ptrace_options): Moved to common/linux-ptrace.c. (linux_tracefork_child): Remove. (my_waitpid): Remove. (linux_test_for_tracefork): Renamed to linux_check_ptrace_features and moved to common/linux-ptrace.c. (linux_test_for_tracesysgood): Remove. (linux_supports_tracesysgood): Remove. (linux_supports_tracefork): Remove. (linux_supports_tracevforkdone): Remove. (linux_enable_tracesysgood): Remove. (linux_enable_event_reporting): Remove. (linux_init_ptrace): New function. (linux_child_post_attach): Call linux_init_ptrace. (linux_child_post_startup_inferior): Call linux_init_ptrace. (linux_child_follow_fork): Call linux_supports_tracefork and linux_supports_tracevforkdone. (linux_child_insert_fork_catchpoint): Call linux_supports_tracefork. (linux_child_insert_vfork_catchpoint): Likewise. (linux_child_set_syscall_catchpoint): Call linux_supports_tracesysgood. (lin_lwp_attach_lwp): Call linux_supports_tracefork. * nat/linux-nat.h: New file. * nat/linux-waitpid.c: New file. * nat/linux-waitpid.h: New file. gdb/gdbserver/ * Makefile.in: Explain why ../target and ../nat are not listed as include file search paths. (linux-waitpid.o): New object file rule. * configure.srv (srv_native_linux_obj): New variable. Replace all occurrences of linux native object files with $srv_native_linux_obj. * linux-low.c: Include nat/linux-nat.h and nat/linux-waitpid.h. (HAS_NOMMU): Move defining logic to common/linux-ptrace.c. (linux_enable_event_reporting): Remove declaration. (my_waitpid): Moved to common/linux-waitpid.c. (linux_wait_for_event): Pass ptid when calling linux_enable_event_reporting. (linux_supports_tracefork_flag): Remove. (linux_enable_event_reporting): Likewise. (linux_tracefork_grandchild): Remove. (STACK_SIZE): Moved to common/linux-ptrace.c. (linux_tracefork_child): Remove. (linux_test_for_tracefork): Remove. (linux_look_up_symbols): Call linux_supports_traceclone. (initialize_low): Remove call to linux_test_for_tracefork. * linux-low.h (PTRACE_TYPE_ARG3): Move to common/linux-ptrace.h. (PTRACE_TYPE_ARG4): Likewise. Include linux-ptrace.h.
* gdb/Luis Machado2013-08-192-227/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (SFILES): Remove common/target-common.c and add target/waitstatus.c. (HFILES_NO_SRCDIR): Remove common/target-common.h and add target/resume.h, target/wait.h and target/waitstatus.h. (COMMON_OBS): Remove target-common.o and add waitstatus.o. (target-common.o): Remove. (waitstatus.o): New target object file. * common/target-common.c: Move contents to target/waitstatus.c and remove. * common/target-common.h: Move contents to other files and remove. (enum resume_kind: Move to target/resume.h. (TARGET_WNOHANG): Move to target/wait.h. (enum target_waitkind): Move to target/waitstatus.h. (struct target_waitstatus): Likewise. * target.h: Do not include target-common.h and include target/resume.h, target/wait.h and target/waitstatus.h. * target/resume.h: New file. * target/wait.h: New file. * target/waitstatus.h: New file. * target/waitstatus.c: New file. gdb/gdbserver/ * Makefile.in (INCLUDE_CFLAGS): Include -I$(srcdir)/../. (SFILES): Remove $(srcdir)/common/target-common.c and add $(srcdir)/target/waitstatus.c. (OBS): Remove target-common.o and add waitstatus.o. (server_h): Remove $(srcdir)/../common/target-common.h and add $(srcdir)/../target/resume.h, $(srcdir)/../target/wait.h and $(srcdir)/../target/waitstatus.h. (target-common.o): Remove. (waitstatus.o): New target object file. * target.h: Do not include target-common.h and include target/resume.h, target/wait.h and target/waitstatus.h.
* Handle '#' flag for printf of pointer types.aburgess2013-08-131-1/+3
| | | | | | | | | | | | | | http://sourceware.org/ml/gdb-patches/2013-08/msg00340.html gdb/ChangeLog * common/format.c (parse_format_string): Don't allow '#' flag for pointer arguments in format string. gdb/testsuite/ChangeLog * gdb.base/printcmds.exp (test_printf): Add test for printf of pointer with various flags.
* gdb/qiyao2013-07-272-0/+475
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (HFILES_NO_SRCDIR): Add common/mips-linux-watch.h. (mips-linux-watch.o): New rule. * common/mips-linux-watch.c: New. * common/mips-linux-watch.h: New. * config/mips/linux.mh (NATDEPFILES): Add mips-linux-watch.o * mips-linux-nat.c: Include mips-linux-watch.h. (W_BIT, R_BIT, I_BIT, W_MASK, R_MASK, I_MASK, IRW_MASK): Move to common/mips-linux-watch.h. (MAX_DEBUG_REGISTER): Likewise. (enum pt_watch_style): Likewise. (struct mips32_watch_regs): Likewise. (struct mips64_watch_regs): Likewise. (struct pt_watch_regs): Likewise. (struct mips_watchpoint): Likewise. (mips_linux_watch_get_irw_mask): Move to common/mips-linux-watch.c. (get_reg_mask, mips_linux_watch_get_num_valid): Likewise. (mips_linux_watch_get_watchlo): Likewise. (mips_linux_watch_set_watchlo): Likewise. (mips_linux_watch_get_watchhi): Likewise. (mips_linux_watch_set_watchhi): Likewise. (mips_linux_read_watch_registers): Likewise. (mips_linux_watch_type_to_irw): Likewise. (mips_linux_stopped_data_address, fill_mask): Likewise. (mips_linux_watch_try_one_watch): Likewise. (mips_linux_watch_populate_regs): Likewise.
* gdb/qiyao2013-07-271-0/+30
| | | | | | | | | | | * breakpoint.h: Include break-common.h. (enum target_hw_bp_type): Move to ... * common/break-common.h: ... here. New. gdb/gdbserver/ * i386-low.c: Include break-common.h. (enum target_hw_bp_type): Remove.
* gdb/Luis Machado2013-07-242-0/+227
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (SFILES): Add common/target-common.c. Add common/target-common.h to headers. (COMMON_OBS): Add target-common.o. (target-common.o): New target. * linux-nat.h (resume_kind): Move to common/target-common.h. * target.c (target_waitstatus_to_string): Move to common/target-common.c. * target.h: Include target-common.h. (target_waitkind): Move to common/target-common.h. (target_waitstatus): Likewise. (TARGET_WNOHANG): Likewise. * common/target-common.c: New file. * common/target-common.h: New file. gdb/gdbserver/ * Makefile.in (SFILES): /common/target-common.c. (OBS): Add target-common.o. (server_h): Add $(srcdir)/../common/target-common.h. (target-common.o): New target. * server.c (queue_stop_reply_callback): Free status string after use. * target.c (target_waitstatus_to_string): Remove. * target.h: Include target-common.h. (resume_kind): Likewise. (target_waitkind): Likewise. (target_waitstatus): Likewise. (TARGET_WNOHANG): Likewise.
* Check for NULL character before calling strchr.aburgess2013-07-161-3/+3
| | | | | | | | | | | | | | http://sourceware.org/ml/gdb-patches/2013-07/msg00322.html gdb/ChangeLog * common/format.c (parse_format_string): Add checks for NULL character before calling strchr. gdb/testsuite/ChangeLog * gdb.base/printcmds.exp (test_printf): Add tests for format strings with missing format specifier.
* gdb/qiyao2013-07-041-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2013-07-04 Yao Qi <yao@codesourcery.com> Revert: 2013-06-27 Yao Qi <yao@codesourcery.com> * common/create-version.sh: Update comments. Handle the case that TARGET_ALIAS is empty. gdb/gdbserver/ 2013-07-04 Yao Qi <yao@codesourcery.com> * Makefile.in (host_alias): Use @host_noncanonical@. (target_alias): Use @target_noncanonical@. * configure.ac: Use ACX_NONCANONICAL_TARGET and ACX_NONCANONICAL_HOST. * configure: Regenerated. Revert: 2013-06-28 Mircea Gherzan <mircea.gherzan@intel.com> * configure.ac (version_host, version_target): Set and AC_SUBST them. * configure: Rebuild. * Makefile.in (version_host, version_target): Get from configure. (version.c): Use $(version_host) and $(version_target).
* * common/ptid.h: Comment fixes.Tom Tromey2013-07-021-2/+2
|
* move version.in from gdb/common back to gdbTom Tromey2013-06-282-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts part of the earlier version.in change. It moves version.in back to the gdb directory. This works around the CVS bug we've found. gdb * Makefile.in (version.c): Use version.in, not common/version.in. * common/create-version.sh: Likewise. * common/version.in: Move... * version.in: ...here. gdb/doc * Makefile.in (version.subst): Use version.in, not common/version.in. * gdbint.texinfo (Versions and Branches, Releasing GDB): Likewise. gdb/gdbserver * Makefile.in (version.c): Use version.in, not common/version.in. sim/common * Make-common.in (version.c): Use version.in, not common/version.in. * create-version.sh: Likewise. sim/ppc: * Make-common.in (version.c): Use version.in, not common/version.in.
* gdb/qiyao2013-06-271-4/+13
| | | | | * common/create-version.sh: Update comments. Handle the case that TARGET_ALIAS is empty.
* gdb/qiyao2013-06-262-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2013-06-26 Pedro Alves <pedro@codesourcery.com> Yao Qi <yao@codesourcery.com> * ctf.c (ctf_traceframe_info): Push trace state variables present in the trace data into the traceframe info object. * breakpoint.c (DEF_VEC_I): Remove. * common/filestuff.c (DEF_VEC_I): Likewise. * dwarf2loc.c (DEF_VEC_I): Likewise. * mi/mi-main.c (DEF_VEC_I): Likewise. * common/gdb_vecs.h (DEF_VEC_I): Define vector for int. * features/traceframe-info.dtd: Add tvar element and its attributes. * tracepoint.c (free_traceframe_info): Free vector 'tvars'. (build_traceframe_info): Push trace state variables present in the trace data into the traceframe info object. (traceframe_info_start_tvar): New function. (tvar_attributes): New. (traceframe_info_children): Add "tvar" element. * tracepoint.h (struct traceframe_info) <tvars>: New field. * NEWS: Mention the change in GDB and GDBserver. gdb/doc: 2013-06-26 Pedro Alves <pedro@codesourcery.com> * gdb.texinfo (Traceframe Info Format): Document tvar element and its attributes. gdb/gdbserver: 2013-06-26 Pedro Alves <pedro@codesourcery.com> * tracepoint.c (build_traceframe_info_xml): Output trace state variables present in the trace buffer.
* * common/create-version.sh (date): Use "$", not "$$" in sedTom Tromey2013-06-251-1/+1
| | | | expression.
* Fix host_name and target_name generation by common/create-version.sh.Joel Brobecker2013-06-241-2/+2
| | | | | | | | | | | | | | | | | This new script has one small snafoo, which prevented the $host_alias and $target_alias from being expanded during the generation of the version.c file. As a result, the version info yields: This GDB was configured as "--host=$host_alias --target=$target_alias". ^^^^^^^^^^^ ^^^^^^^^^^^^^ This patch fixes this issue. gdb/ChangeLog: * common/create-version.sh: Fix expansion of $host_alias and $target_alias in generation of HOST_NAME and TARGET_NAME (resp.).
* don't keep a gdb-specific dateTom Tromey2013-06-243-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Right now there are two nightly commits to update a file in the tree with the current date. One commit is for BFD, one is for gdb. It seems unnecessary to me to do this twice. We can make do with a single such commit. This patch changes gdb in a minimal way to reuse the BFD date -- it extracts it from bfd/version.h and changes version.in to use the placeholder string "DATE" for those times when a date is wanted. I propose removing the cron job that updates the version on trunk, and then check in this patch. For release branches, we can keep the cron job, but just tell it to rewrite bfd/version.h. I believe this is a simple change in the crontab -- the script will work just fine on this file. This also moves version.in and version.h into common/, to reflect their shared status; and updates gdbserver to use version.h besides. * common/create-version.sh: New file. * Makefile.in (version.c): Use bfd/version.h, common/version.in, create-version.sh. (HFILES_NO_SRCDIR): Use common/version.h. * version.in: Move to ... * common/version.in: ... here. Replace date with "DATE". * version.h: Move to ... * common/version.h: ... here. gdbserver: * Makefile.in (version.c): Use bfd/version.h, common/version.in, create-version.sh. (version.o): Remove. * gdbreplay.c: Include version.h. (version, host_name): Don't declare. * server.h: Include version.h. (version, host_name): Don't declare. doc: * Makefile.in (POD2MAN1, POD2MAN5): Use version.subst. (GDBvn.texi): Use version.subst. (version.subst): New target. (mostlyclean): Remove version.subst.
* gdb/Jan Kratochvil2013-06-211-7/+2
| | | | | | * common/linux-btrace.c (cpu_supports_btrace): Remove variable vendor, replace strcmp with signature_INTEL_ebx, signature_INTEL_ecx and signature_INTEL_edx comparisons.
* gdb: clean up x86 cpuid implementationsMike Frysinger2013-06-193-31/+345
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've currently got 3 files doing open coded implementations of cpuid. Each has its own set of workarounds and varying levels of how well they're written and are generally hardcoded to specific cpuid functions. If you try to build the latest gdb as a PIE on an i386 system, the build will fail because one of them lacks PIC workarounds (wrt ebx). Specifically, we have: common/linux-btrace.c: two copies of cpuid asm w/specific args, one has no workarounds while the other implicitly does to avoid memcpy go32-nat.c: two copies of cpuid asm w/specific args, one has workarounds to avoid memcpy gdb/testsuite/gdb.arch/i386-cpuid.h: one general cpuid asm w/many workarounds copied from older gcc Fortunately, that last header there is pretty damn good -- it handles lots of edge cases, the code is nice & tight (uses gcc asm operands rather than manual movs), and is already almost a general library type header. It's also the basis of what is now the public cpuid.h that is shipped with gcc-4.3+. So what I've done is pull that test header out and into gdb/common/ (not sure if there's a better place), synced to the version found in gcc-4.8.0, put a wrapper API around it, and then cut over all the existing call points to this new header. Since the func already has support for "is cpuid supported on this proc", it makes it trivial to push the i386/x86_64 ifdefs down into this wrapper API too. Now it can be safely used for all targets and gcc will elide the unused code for us. I've verified the gdb.arch testsuite still passes, and this code compiles for an armv7a host as well as x86_64. The go32-nat code has been left ifdef-ed out until someone can test & verify the new stuff works (and if it doesn't, figure out how to make the new code work). URL: https://bugs.gentoo.org/467806 Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* common/filestuff.c: No sockets on DJGPP.Pedro Alves2013-05-231-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Building gdb with --host=i586-pc-msdosdjgpp ends up with: i586-pc-msdosdjgpp-gcc -g -O2 -I../../src/gdb/config/djgpp -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber -I./../intl -I../../src/gdb/gnulib/import -Ibuild-gnulib/import -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wpointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Wdeclaration-after-statement -Wempty-body -Werror -c -o filestuff.o -MT filestuff.o -MMD -MP -MF .deps/filestuff.Tpo ../../src/gdb/common/filestuff.c ../../src/gdb/common/filestuff.c:38:24: fatal error: sys/socket.h: No such file or directory There are no sockets on djgpp. This #ifdef's out the bits in the file that use sockets, depending on whether winsock or sys/socket.h is available. As alternative approach, given ser-tcp.c, ser-pipe.c, etc. are split into separate files, and which to use is selected by configure.ac: dnl Figure out which of the many generic ser-*.c files the _host_ supports. SER_HARDWIRE="ser-base.o ser-unix.o ser-pipe.o ser-tcp.o" case ${host} in *go32* ) SER_HARDWIRE=ser-go32.o ;; *djgpp* ) SER_HARDWIRE=ser-go32.o ;; *mingw32*) SER_HARDWIRE="ser-base.o ser-tcp.o ser-mingw.o" ;; esac AC_SUBST(SER_HARDWIRE) ... I considered splitting filestuff.c similarly. But I quickly gave up on the idea, as it looked like a lot more complication over this approach, for no real gain. Plus, there are uses of these functions outside the ser*.c framework. gdbserver's configure.ac is already checking for sys/socket.h. gdb/ 2013-05-23 Pedro Alves <palves@redhat.com> * common/filestuff.c [USE_WIN32API]: Define HAVE_SOCKETS. [HAVE_SYS_SOCKET_H]: Define HAVE_SOCKETS. (socket_mark_cloexec, gdb_socketpair_cloexec, gdb_socket_cloexec): Only define if HAVE_SOCKETS is defined. * configure.ac: Check for sys/socket.h. * config.in, configure: Regenerate.
* 2013-05-10 Joel Brobecker <brobecker@adacore.com>Tom Tromey2013-05-102-0/+37
| | | | | | | | | | | | | Tom Tromey <tromey@redhat.com> * common/filestuff.c (mark_fd_no_cloexec, unmark_fd_no_cloexec): New functions. * common/filestuff.c (mark_fd_no_cloexec, unmark_fd_no_cloexec): Declare. * darwin-nat.c (darwin_pre_ptrace): Use mark_fd_no_cloexec. (darwin_ptrace_him): Use unmark_fd_no_cloexec. * inf-ttrace.c (do_cleanup_pfds): Use unmark_fd_no_cloexec. (inf_ttrace_prepare): Use mark_fd_no_cloexec.
* * common/linux-btrace.c: ARI fix: Include "gdb_wait.h"Pierre Muller2013-05-071-1/+1
| | | | instead of <sys/wait.h>.
* gdb: btrace: fix indentation styleMike Frysinger2013-05-061-34/+34
| | | | | Most of this func had the incorrect indentation level (starting with 4 spaces instead of 2).
* filestuff.c: Include "gdb_dirent.h" instead of <dirent.h>Joel Brobecker2013-04-301-1/+1
| | | | | | | gdb/ChangeLog: * common/filestuff.c: Replace #include <dirent.h> by #include "gdb_dirent.h".
* filestuff.c: Use gdb_stat.h instead of <sys/stat.h>Joel Brobecker2013-04-301-1/+1
| | | | | | | gdb/ChangeLog: * common/filestuff.c: Replace #include <sys/stat.h> by #include "gdb_stat.h".
* * common/filestuff.c: Check USE_WIN32API before includingTom Tromey2013-04-232-4/+23
| | | | | | | | | | | sys/socket.h. (HAVE_F_GETFD): New define. (mark_cloexec): Check HAVE_F_GETFD. (gdb_open_cloexec): Change 'mode' to unsigned long. (gdb_socketpair_cloexec): Check HAVE_SOCKETPAIR. (gdb_pipe_cloexec): Check HAVE_PIPE. * common/filestuff.h (gdb_open_cloexec): Change 'mode' to unsigned long.
* PR gdb/7912:Tom Tromey2013-04-225-11/+427
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (SFILES): Add filestuff.c (COMMON_OBS): Add filestuff.o. (filestuff.o): New target. * auto-load.c (auto_load_objfile_script_1): Use gdb_fopen_cloexec. * auxv.c (procfs_xfer_auxv): Use gdb_open_cloexec. * cli/cli-cmds.c (shell_escape): Call close_most_fds. * cli/cli-dump.c (fopen_with_cleanup): Use gdb_fopen_cloexec. * common/agent.c (gdb_connect_sync_socket): Use gdb_socket_cloexec. * common/filestuff.c: New file. * common/filestuff.h: New file. * common/linux-osdata.c (linux_common_core_of_thread) (command_from_pid, commandline_from_pid, print_source_lines) (linux_xfer_osdata_shm, linux_xfer_osdata_sem) (linux_xfer_osdata_msg, linux_xfer_osdata_modules): Use gdb_fopen_cloexec. * common/linux-procfs.c (linux_proc_get_int) (linux_proc_pid_has_state): Use gdb_fopen_cloexec. * config.in, configure: Rebuild. * configure.ac: Don't check for sys/socket.h. Check for fdwalk, pipe2. * corelow.c (core_open): Use gdb_open_cloexec. * dwarf2read.c (write_psymtabs_to_index): Use gdb_fopen_cloexec. * fork-child.c (fork_inferior): Call close_most_fds. * gdb_bfd.c (gdb_bfd_open): Use gdb_open_cloexec. * inf-child.c (inf_child_fileio_readlink): Use gdb_open_cloexec. * linux-nat.c (linux_nat_thread_name, linux_proc_pending_signals): Use gdb_fopen_cloexec. (linux_proc_xfer_partial, linux_proc_xfer_spu): Use gdb_open_cloexec. (linux_async_pipe): Use gdb_pipe_cloexec. * remote-fileio.c (remote_fileio_func_open): Use gdb_open_cloexec. * remote.c (remote_file_put, remote_file_get): Use gdb_fopen_cloexec. * ser-pipe.c (pipe_open): Use gdb_socketpair_cloexec, close_most_fds. * ser-tcp.c (net_open): Use gdb_socket_cloexec. * ser-unix.c (hardwire_open): Use gdb_open_cloexec. * solib.c (solib_find): Use gdb_open_cloexec. * source.c (openp, find_and_open_source): Use gdb_open_cloexec. * tracepoint.c (tfile_start): Use gdb_fopen_cloexec. (tfile_open): Use gdb_open_cloexec. * tui/tui-io.c (tui_initialize_io): Use gdb_pipe_cloexec. * ui-file.c (gdb_fopen): Use gdb_fopen_cloexec. * xml-support.c (xml_fetch_content_from_file): Use gdb_fopen_cloexec. * main.c (captured_main): Call notice_open_fds. gdbserver * Makefile.in (SFILES): Add filestuff.c. (OBS): Add filestuff.o. (filestuff.o): New target. * config.in, configure: Rebuild. * configure.ac: Check for fdwalk, pipe2.
* gdb_byte for binary buffer, char for string: common/agent.c.Pedro Alves2013-04-191-1/+2
| | | | | | | | | Similarly to the remote code, agent commands are mostly ascii. Cast to gdb_byte when treating the command buffer as raw memory bytes. 2013-04-19 Pedro Alves <palves@redhat.com> * common/agent.c (agent_run_command): Add cast to gdb_byte *.
* Update glibc_thread_db.h from upstream.Pedro Alves2013-04-161-25/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempting to build gdbserver with our copy of thread_db.h yields: In file included from ../../../src/gdb/gdbserver/../common/gdb_thread_db.h:4:0, from ../../../src/gdb/gdbserver/thread-db.c:30: ../../../src/gdb/gdbserver/../common/glibc_thread_db.h:108:3: error: unknown type name ‘uint32_t’ In file included from ../../../src/gdb/gdbserver/../common/gdb_thread_db.h:4:0, from ../../../src/gdb/gdbserver/thread-db.c:30: ../../../src/gdb/gdbserver/../common/glibc_thread_db.h:199:5: error: unknown type name ‘uintptr_t’ ../../../src/gdb/gdbserver/../common/glibc_thread_db.h:269:3: error: unknown type name ‘intptr_t’ ../../../src/gdb/gdbserver/../common/glibc_thread_db.h:270:3: error: unknown type name ‘intptr_t’ We used to have a workaround for this, but the patch to import gnulib's stdint.h removed it: http://www.sourceware.org/ml/gdb-patches/2008-06/msg00050.html and defs.h made to always include stdint.h. However, gdbserver doesn't include stdint.h in its equivalent server.h. Rather than working around the issue, I've imported a more recent version from glibc, which itself includes <stdint.h>. Other than copyright years and FSF snail mail address, the file hasn't been touched since 2003 in glibc. AFAICS, our version was updated last in 2000-09-03. A note on the apparent license change: before the previous patch, this file's contents were part of gdb_thread_db.h, and we can see that its license's text was changed in this patch <http://sourceware.org/ml/gdb-patches/2009-03/msg00251.html>. That was certainly just an easy to overlook grep/sed mistake that fell through the cracks. gdb/common/ 2013-04-16 Pedro Alves <palves@redhat.com> * glibc_thread_db.h: Update from upstream glibc (git 568035b7874a099087b77f7bba3e36a1173787b0).
* Move fallback thread_db.h to a separate file.Pedro Alves2013-04-162-439/+438
| | | | | | | | | | | | Having this on a separate file makes it easier to import a new version -- one can just copy over instead of having to care about preserving the GDB-specific bits. 2013-04-16 Pedro Alves <palves@redhat.com> * common/gdb_thread_db.h [!HAVE_THREAD_DB_H]: Factor out to ... * common/glibc_thread_db.h: ... this new file ... * common/gdb_thread_db.h [!HAVE_THREAD_DB_H]: ... and include it.
* PR build/11881: LIBTHREAD_DB_SO can be undefined.Pedro Alves2013-04-161-12/+11
| | | | | | | | | | | | | | | | | | | | | | This patch: http://sourceware.org/ml/gdb-patches/2009-04/msg00115.html Changed behaviour by only defining LIBTHREAD_DB_SO if thread_db.h exists. The definition of LIBTHREAD_DB_SO and LIBTHREAD_DB_SEARCH_PATH should be moved outside of #ifdef HAVE_THREAD_DB_H. This is based on a patch attached to the PR, however, it needed a tweak, as it was it broke the HAVE_THREAD_DB_H path. 2013-04-16 Will Newton <will.newton@gmail.com> Pedro Alves <palves@redhat.com> PR build/11881 * common/gdb_thread_db.h (LIBTHREAD_DB_SO) (LIBTHREAD_DB_SEARCH_PATH): Move outside of #ifdef HAVE_THREAD_DB_H.
* * ada-lang.c (ada_read_renaming_var_value): Pass constKeith Seitz2013-03-122-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | pointer to expression string to parse_exp_1. (create_excep_cond_exprs): Likewise. * ax-gdb.c (agent_eval_command_one): Likewise. (maint_agent_printf_command): Likewise. Constify much of the string handling/parsing. * breakpoint.c (set_breakpoint_condition): Pass const pointer to expression string to parse_exp_1. (update_watchpoint): Likewise. (parse_cmd_to_aexpr): Constify string handling. Pass const pointer to parse_exp_1. (init_breakpoint_sal): Pass const pointer to parse_exp_1. (find_condition_and_thread): Likewise. Make TOK const. (watch_command_1): Make "arg" const. Constify string handling. Copy the expression string instead of changing the input string. (update_breakpoint_location): Pass const pointer to parse_exp_1. * eval.c (parse_and_eval_address): Make "exp" const. (parse_to_comma_and_eval): Make "expp" const. (parse_and_eval): Make "exp" const. * expression.h (parse_expression): Make argument const. (parse_exp_1): Make first argument const. * findcmd.c (parse_find_args): Treat "args" as const. * linespec.c (parse_linespec): Pass const pointer to linespec_expression_to_pc. (linespec_expression_to_pc): Make "exp_ptr" const. * parse.c (parse_exp_1): Make "stringptr" const. Make a copy of the expression to pass to parse_exp_in_context until this whole interface can be constified. (parse_expression): Make "string" const. * printcmd.c (ui_printf): Treat "arg" as const. Handle const strings. * tracepoint.c (validate_actionline): Pass const pointer to all calls to parse_exp_1. (encode_actions_1): Likewise. * value.h (parse_to_comma_and_eval): Make argument const. (parse_and_eval_address): Likewise. (parse_and_eval): Likewise. * varobj.c (varobj_create): Pass const pointer to parse_exp_1. (varobj_set_value): Likewise. * cli/cli-cmds.c (disassemble_command): Treat "arg" as const and constify string handling. Pass const pointers to parse_and_eval_address and parse_to_comman_and_eval. * cli/cli-utils.c (skip_to_space): Rename to ... (skip_to_space_const): ... this. Handle const strings. * cli/cli-utils.h (skip_to_space): Turn into macro which invokes skip_to_space_const. (skip_to_space_const): Declare. * common/format.c (parse_format_string): Make "arg" const. Handle const strings. * common/format.h (parse_format_string): Make "arg" const. * gdbserver/ax.c (ax_printf): Make "format" const. * python/python.c (gdbpy_parse_and_eval): Do not make a copy of the expression string.
* LBR, BTM, or BTS records may have incorrect branch "from" information afer anmmetzger2013-03-111-1/+186
| | | | | | | | | | | | | | | EIST transition, T-states, C1E, or Adaptive Thermal Throttling (AAJ122). This results in sporadic test fails. Disable btrace on those processors. gdb/ * common/linux-btrace.c: Include sys/ptrace, sys/types, sys/wait.h, and signal.h. (linux_supports_btrace): Add kernel and cpuid check. (kernel_supports_btrace): New function. (cpu_supports_btrace): New function. (intel_supports_btrace): New function.
* Implement branch tracing on Linux based on perf_event such that it can be sharedmmetzger2013-03-112-0/+502
| | | | | | | | | | | | | | | | | between gdb and gdbserver. gdb/ * common/linux_btrace.h: New file. * common/linux_btrace.c: New file. * Makefile.in (SFILES): Add btrace.c. (HFILES_NO_SRCDIR): Add common/linux-btrace.h. (COMMON_OBS): Add btrace.o. (linux-btrace.o): New rule. gdbserver/ * Makefile.in (SFILES): Add $(srcdir)/common/linux-btrace.c. (linux_btrace_h): New variable. (linux-btrace.o): New rule.
* Add branch trace information to struct thread_info.mmetzger2013-03-111-0/+73
| | | | | | | | | | | | | | | | | | | | | | Add functions to enable, disable, clear, and fetch a thread's branch trace. gdb/ * target.h: Include btrace.h. (struct target_ops) <to_supports_btrace, to_enable_btrace, to_disable_btrace, to_teardown_btrace, to_read_btrace>: New. * target.c (target_supports_btrace): New function. (target_enable_btrace): New function. (target_disable_btrace): New function. (target_teardown_btrace): New function. (target_read_btrace): New function. * btrace.h: New file. * btrace.c: New file. * Makefile.in: Add btrace.c. * gdbthread.h: Include btrace.h. (struct thread_info): Add btrace field. * thread.c: Include btrace.h. (clear_thread_inferior_resources): Call target_teardown_btrace. * common/btrace-common.h: New file.
* gdb/Jan Kratochvil2013-03-101-23/+15
| | | | | | * common/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Call also kill for CHILD, ignore PTRACE_KILL errors, move the inner block variable kill_status to outer block.
* Tweak warning output on Linux kernels with broken i386 NX support.Pedro Alves2013-02-251-2/+3
| | | | | | | | | | The "you have broken" bit of this text reads to me as if I had broken it myself somehow. This patch eliminates that ambiguity. 2013-02-25 Pedro Alves <palves@redhat.com> * common/linux-ptrace.c (linux_ptrace_test_ret_to_nx): Change warning text.
* Move savestring to common/common-utils.c, make gdbserver use it.Pedro Alves2013-02-142-0/+17
| | | | | | | | | | | | | | | | | | | | | This makes gdbserver share gdb's savestring, instead of baking its own. Tested on x86_64 Fedora 17. gdb/ 2013-02-14 Pedro Alves <palves@redhat.com> * utils.c (savestring): Don't #undef it. Move function to common/common-utils.c. * common/common-utils.c: Include gdb_string.h. (savestring): Move here from utils.c. * common/common-utils.h (savestring): Declare. gdb/gdbserver/ 2013-02-14 Pedro Alves <palves@redhat.com> * tracepoint.c (save_string): Delete. (add_tracepoint_action): Use savestring instead of save_string.
* * common/format.c (parse_format_string): Fix whitespace.Doug Evans2013-02-081-7/+7
|
* gdb: x86: fix x32 builds with inline asmMike Frysinger2013-01-081-1/+2
| | | | | | | We need to cast the pointer up to 64bits so that the push works on x32 targets. For 64bit targets, this makes no difference. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
* Update years in copyright notice for the GDB files.Joel Brobecker2013-01-0135-36/+35
| | | | | | | Two modifications: 1. The addition of 2013 to the copyright year range for every file; 2. The use of a single year range, instead of potentially multiple year ranges, as approved by the FSF.
* gdb/qiyao2012-12-151-0/+303
| | | | | | | 2012-12-15 Yao Qi <yao@codesourcery.com> Doug Evans <dje@google.com> * common/queue.h: New.
* * contrib/ari/gdb_ari.sh: Remove rules for xasprintf andTom Tromey2012-11-292-23/+0
| | | | | | xvasprintf. * common/common-utils.c (xasprintf, xvasprintf): Remove. * common/common-utils.h (xasprintf, xvasprintf): Remove.
* gdb/Pedro Alves2012-11-261-1/+1
| | | | | | | | | | | | | | | | | | | 2012-11-26 Maxime Villard <rustyBSD@gmx.fr> Pedro Alves <palves@redhat.com> * common/linux-osdata.c (linux_xfer_osdata_fds): Decrease buffer size parameter passed to readlink by one byte. * fbsd-nat.c (fbsd_pid_to_exec_file): Ditto. * linux-nat.c (linux_child_pid_to_exec_file): Ditto. * nbsd-nat.c (nbsd_pid_to_exec_file): Ditto. * inf-child.c (inf_child_fileio_readlink): Decrease local buffer's size by one byte. gdb/gdbserver/ 2012-11-26 Maxime Villard <rustyBSD@gmx.fr> * hostio.c (handle_readlink): Decrease buffer size parameter passed to readlink by one byte.