- Maintenance scripts: * Add KFAILs in qa.sh. * Add missing '-a' in gdb.log greps in qa.sh. - Disable big endian powerpc. - Maintenance scripts: * Fix patch filtering in clean.sh. * Add KFAIL in qa.sh. - Patches added: * gdb-testsuite-add-checks-to-gdb.arch-i386-sse.exp.patch * gdb-testsuite-add-gdb.testsuite-dump-system-info.exp.patch * gdb-testsuite-add-kfail-in-gdb.threads-fork-plus-threads.exp.patch * gdb-testsuite-factor-out-dump_info-in-gdb.testsuite-dump-system-info.exp.patch * gdb-testsuite-fix-fail-in-gdb.threads-fork-and-threads.exp.patch * gdb-testsuite-fix-gdb.threads-linux-dp.exp.patch * gdb-testsuite-fix-port-detection-in-gdb.debuginfod-fetch_src_and_symbols.exp.patch * gdb-testsuite-handle-recursive-internal-problem-in-gdb_internal_error_resync.patch * gdb-testsuite-handle-runto-fail-in-gdb.mi-mi-var-cp.exp.patch * gdb-tui-fix-breakpoint-display-functionality.patch * gdb-testsuite-Fix-gdb.threads-thread-specific-bp.exp.patch - Patches dropped: * fix-gdb.threads-linux-dp.exp.patch - Added maintenance script: * qa.sh - Drop 32bit packages for s390x. - Fix SLE-15 s390x: unresolvable, nothing provides glibc-devel-static-32bit. - Disable test-case gdb.base/break-interp.exp for SLE-11. It causes a "glibc detected *** expect: double free or corruption (out)" in expect and a subsequent runtest abort. This might be the cause of the package build failure due to "Job seems to be stuck here, killed. (after 8hrs of inactivity)" - Patches added: * gdb-testsuite-fix-gdb.base-step-over-syscall.exp-with-m32-amd-case.patch * gdb-testsuite-fix-gdb.ada-big_packed_array.exp-xfail-for-m32.patch * gdb-testsuite-fix-race-in-gdb.threads-detach-step-over.exp.patch * fix-gdb.multi-multi-term-settings.exp-race.patch * gdb-testsuite-update-test-gdb.base-step-over-syscall.exp.patch - Rebase to 11.1 release (as in fedora 35 @ 9cd9368): * GDB now supports general memory tagging functionality if the underlying architecture supports the proper primitives and hooks. Currently this is enabled only for AArch64 MTE. * GDB will now look for the .gdbinit file in a config directory before looking for ~/.gdbinit. The file is searched for in the following locations: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit, $HOME/.gdbinit. * GDB will now load and process commands from ~/.config/gdb/gdbearlyinit or ~/.gdbearlyinit if these files are present. These files are processed earlier than any of the other initialization files and can affect parts of GDB's startup that previously had already been completed before the initialization files were read, for example styling of the initial GDB greeting. * GDB now has two new options "--early-init-command" and "--early-init-eval-command" with corresponding short options "-eix" and "-eiex" that allow options (that would normally appear in a gdbearlyinit file) to be passed on the command line. * set startup-quietly on|off show startup-quietly When 'on', this causes GDB to act as if "-silent" were passed on the command line. This command needs to be added to an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB. * For RISC-V targets, the target feature "org.gnu.gdb.riscv.vector" is now understood by GDB, and can be used to describe the vector registers of a target. * TUI windows now support mouse actions. The mouse wheel scrolls the appropriate window. * Key combinations that do not have a specific action on the focused window are passed to GDB. For example, you now can use Ctrl-Left/Ctrl-Right to move between words in the command window regardless of which window is in focus. Previously you would need to focus on the command window for such key combinations to work. * set python ignore-environment on|off show python ignore-environment When 'on', this causes GDB's builtin Python to ignore any environment variables that would otherwise affect how Python behaves. This command needs to be added to an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB. * set python dont-write-bytecode auto|on|off show python dont-write-bytecode When 'on', this causes GDB's builtin Python to not write any byte-code (.pyc files) to disk. This command needs to be added to an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB. When 'off' byte-code will always be written. When set to 'auto' (the default) Python will check the PYTHONDONTWRITEBYTECODE environment variable. * break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [-force-condition] [if CONDITION] This command would previously refuse setting a breakpoint if the CONDITION expression is invalid at a location. It now accepts and defines the breakpoint if there is at least one location at which the CONDITION is valid. The locations for which the CONDITION is invalid, are automatically disabled. If CONDITION is invalid at all of the locations, setting the breakpoint is still rejected. However, the '-force-condition' flag can be used in this case for forcing GDB to define the breakpoint, making all the current locations automatically disabled. This may be useful if the user knows the condition will become meaningful at a future location, e.g. due to a shared library load. - Update libipt to v2.0.4. Dropped obsoleted patch: * v1.5-libipt-static.patch - Obsoleted fedora patches dropped: * gdb-moribund-utrace-workaround.patch * gdb-save-restore-file-offset-while-reading-notes-in-core-file.patch * gdb-vla-intel-fix-print-char-array.patch * gdb-vla-intel-fortran-strides.patch * gdb-vla-intel-fortran-vla-strings.patch * gdb-vla-intel-stringbt-fix.patch * gdb-vla-intel-tests.patch - Obsoleted fedora fixup patches dropped: * fixup-2-gdb-archer-vla-tests.patch * fixup-2-gdb-rhbz1156192-recursive-dlopen-test.patch * fixup-3-gdb-archer-vla-tests.patch * fixup-gdb-6.3-test-pie-20050107.patch * fixup-gdb-6.3-threaded-watchpoints2-20050225.patch * fixup-gdb-6.5-sharedlibrary-path.patch * fixup-gdb-6.8-bz442765-threaded-exec-test.patch * fixup-gdb-archer-vla-tests.patch * fixup-gdb-base-gnu-ifunc-strstr-workaround-exp.patch * fixup-gdb-btrobust.patch * fixup-gdb-bz634108-solib_address.patch * fixup-gdb-dts-rhel6-python-compat.patch * fixup-gdb-gnat-dwarf-crash-3of3.patch * fixup-gdb-rhbz1156192-recursive-dlopen-test.patch * fixup-gdb-test-ivy-bridge.patch * fixup-gdb-vla-intel-fortran-vla-strings.patch * fixup-gdb-vla-intel-tests.patch - Obsoleted patches dropped: * amd64-linux-siginfo-include-order.patch * gdb-powerpc-remove-512-bytes-region-limit-if-2nd-dawr-is-avaliable.patch * gdb-support-dw-lle-start-end.patch * gdb-symtab-fix-infinite-recursion-in-dwarf2_cu-get_builder-again.patch * gdb-symtab-fix-language-of-frame-without-debug-info.patch * gdb-symtab-read-cu-base-address-for-enqueued-cu.patch * gdb-symtab-use-early-continue-in-find_pc_sect_compunit.patch * gdb-testsuite-catch-condition-evaluation-errors-in-gdb-assert.patch * gdb-testsuite-detect-gdb-prompt-after-monitor-exit.patch * gdb-testsuite-disable-selftests-for-factory.patch * gdb-testsuite-fix-control-flow-in-gdb-reverse-insn-reverse-exp.patch * gdb-testsuite-fix-failure-in-gdb-base-step-over-no-symbols-exp.patch * gdb-testsuite-fix-gdb-dlang-watch-loc-exp-on-ppc64.patch * gdb-testsuite-fix-gdb-reverse-insn-reverse-x86-c-for-m32.patch * gdb-testsuite-fix-gdb.arch-amd64-stap-three-arg-disp.s.patch * gdb-testsuite-fix-unset-of-debuginfod_urls-in-default_gdb_init.patch * gdb-testsuite-fix-xfail-handling-in-gdb.threads-gcore-thread.exp.patch * gdb-testsuite-gdb-base-morestack-exp-no-clang.patch * gdb-testsuite-gdb-tui-new-layout-exp-partly-require-tcl86.patch * gdb-testsuite-handle-sigill-in-gdb-reverse-insn-reverse-exp.patch * gdb-testsuite-ignore-debuginfod_urls.patch * gdb-testsuite-prevent-pagination-in-gdb-internalflags.patch * gdb-threads-fix-lin_thread_get_thread_signals-for-glibc-2.28.patch * gdb-try-to-load-libthread_db-only-after-reading-all-shared-libraries-when-attaching.patch * gdb-tui-fix-len_without_escapes-in-tui-disasm.c.patch - Fedora patches updated: * gdb-6.3-bz140532-ppc-unwinding-test.patch * gdb-6.3-bz202689-exec-from-pthread-test.patch * gdb-6.3-gstack-20050411.patch * gdb-6.3-inheritancetest-20050726.patch * gdb-6.3-mapping-zero-inode-test.patch * gdb-6.3-test-dtorfix-20050121.patch * gdb-6.3-test-movedir-20050125.patch * gdb-6.3-threaded-watchpoints2-20050225.patch * gdb-6.5-bz109921-DW_AT_decl_file-test.patch * gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch * gdb-6.5-bz218379-ppc-solib-trampoline-test.patch * gdb-6.5-bz243845-stale-testing-zombie-test.patch * gdb-6.5-ia64-libunwind-leak-test.patch * gdb-6.5-last-address-space-byte-test.patch * gdb-6.5-readline-long-line-crash-test.patch * gdb-6.5-section-num-fixup-test.patch * gdb-6.5-sharedlibrary-path.patch * gdb-6.6-buildid-locate-rpm-scl.patch * gdb-6.6-buildid-locate-rpm.patch * gdb-6.6-buildid-locate-solib-missing-ids.patch * gdb-6.6-buildid-locate.patch * gdb-6.6-bz229517-gcore-without-terminal.patch * gdb-6.6-bz230000-power6-disassembly-test.patch * gdb-6.6-bz237572-ppc-atomic-sequence-test.patch * gdb-6.8-bz442765-threaded-exec-test.patch * gdb-bz601887-dwarf4-rh-test.patch * gdb-bz634108-solib_address.patch * gdb-ccache-workaround.patch * gdb-container-rh-pkg.patch * gdb-fedora-libncursesw.patch * gdb-fortran-frame-string.patch * gdb-glibc-strstr-workaround.patch * gdb-lineno-makeup-test.patch * gdb-linux_perf-bundle.patch * gdb-physname-pr11734-test.patch * gdb-ppc-power7-test.patch * gdb-rhbz1156192-recursive-dlopen-test.patch * gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch * gdb-rhbz1350436-type-printers-error.patch * gdb-rhbz1398387-tab-crash-test.patch * gdb-test-dw2-aranges.patch * gdb-test-ivy-bridge.patch * gdb-test-pid0-core.patch - Patches updated: * gdb-fix-selftest-fails-with-gdb-build-with-O2-flto.patch * gdb-gcore-bash.patch - Fedora patches added: * gdb-6.3-attach-see-vdso-test.patch * gdb-6.3-inferior-notification-20050721.patch * gdb-6.5-gcore-buffer-limit-test.patch * gdb-6.5-missed-trap-on-step-test.patch * gdb-rhbz1976887-field-location-kind.patch * gdb-rhbz2012976-paper-over-fortran-lex-problems.patch * gdb-test-for-rhbz1976887.patch - Fedora fixup patches added: * fixup-2-gdb-6.6-buildid-locate.patch * fixup-gdb-glibc-strstr-workaround.patch * fixup-gdb-linux_perf-bundle.patch * fixup-gdb-rhbz1325795-framefilters-test.patch * fixup-gdb-rhbz1553104-s390x-arch12-test.patch - Patches added: * fix-gdb.mi-new-ui-mi-sync.exp.patch * fix-gdb.threads-linux-dp.exp.patch * gdb-add-index.sh-fix-bashism.patch * gdb-build-add-cxx_dialect-to-cxx.patch * gdb-build-make-c-exp.y-work-with-bison-3.8.patch * gdb-python-finishbreakpoint-update.patch * gdb-symtab-add-call_site_eq-and-call_site_hash.patch * gdb-symtab-c-ify-call_site.patch * gdb-symtab-fix-htab_find_slot-call-in-read_call_site_scope.patch * gdb-symtab-remove-compunit_call_site_htab.patch * gdb-symtab-use-unrelocated-addresses-in-call_site.patch * gdb-testsuite-add-nopie-in-two-test-cases.patch * gdb-testsuite-fix-fail-in-gdb.base-annota1.exp.patch * gdb-testsuite-fix-fail-in-gdb.tui-corefile-run.exp.patch * gdb-testsuite-fix-gdb.base-dcache-flush.exp.patch * gdb-testsuite-fix-gdb.gdb-selftest.exp.patch * gdb-testsuite-fix-gdb.python-py-events.exp.patch * gdb-testsuite-fix-gdb.server-server-kill.exp-with-m32.patch * gdb-testsuite-fix-gdb.threads-check-libthread-db.exp-with-glibc-2.34.patch * gdb-testsuite-handle-supports_memtag-in-gdb.base-gdb-caching-proc.exp.patch * gdb-testsuite-prevent-compilation-fails-with-unix-fpie-pie.patch * gdb-testsuite-refactor-regexp-in-gdb.base-annota1.exp.patch * gdb-testsuite-support-fpie-fno-pie-pie-no-pie-in-gdb_compile_rust.patch * gdb-testsuite-use-compiler-generated-instead-of-gas-generated-stabs.patch - Fedora patches replaced: * fixup-gdb-6.6-buildid-locate.patch - Added maintenance scripts: * import-patches.sh * clean.sh OBS-URL: https://build.opensuse.org/request/show/927907 OBS-URL: https://build.opensuse.org/package/show/devel:gcc/gdb?expand=0&rev=289
225 lines
6.6 KiB
Diff
225 lines
6.6 KiB
Diff
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
|
From: Fedora GDB patches <invalid@email.com>
|
|
Date: Fri, 27 Oct 2017 21:07:50 +0200
|
|
Subject: gdb-linux_perf-bundle.patch
|
|
|
|
;; [dts+el7] [x86*] Bundle linux_perf.h for libipt (RH BZ 1256513).
|
|
;;=fedora
|
|
|
|
diff --git a/gdb/gdb.c b/gdb/gdb.c
|
|
--- a/gdb/gdb.c
|
|
+++ b/gdb/gdb.c
|
|
@@ -20,11 +20,19 @@
|
|
#include "main.h"
|
|
#include "interps.h"
|
|
|
|
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
|
|
+extern "C" void __libipt_init(void);
|
|
+#endif
|
|
+
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
struct captured_main_args args;
|
|
|
|
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
|
|
+ __libipt_init();
|
|
+#endif
|
|
+
|
|
memset (&args, 0, sizeof args);
|
|
args.argc = argc;
|
|
args.argv = argv;
|
|
diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h
|
|
--- a/gdb/nat/linux-btrace.h
|
|
+++ b/gdb/nat/linux-btrace.h
|
|
@@ -27,6 +27,177 @@
|
|
# include <linux/perf_event.h>
|
|
#endif
|
|
|
|
+#ifdef PERF_ATTR_SIZE_VER5_BUNDLE
|
|
+#ifndef HAVE_LINUX_PERF_EVENT_H
|
|
+# error "PERF_ATTR_SIZE_VER5_BUNDLE && !HAVE_LINUX_PERF_EVENT_H"
|
|
+#endif
|
|
+#ifndef PERF_ATTR_SIZE_VER5
|
|
+#define PERF_ATTR_SIZE_VER5
|
|
+#define perf_event_mmap_page perf_event_mmap_page_bundle
|
|
+// kernel-headers-3.10.0-493.el7.x86_64/usr/include/linux/perf_event.h
|
|
+/*
|
|
+ * Structure of the page that can be mapped via mmap
|
|
+ */
|
|
+struct perf_event_mmap_page {
|
|
+ __u32 version; /* version number of this structure */
|
|
+ __u32 compat_version; /* lowest version this is compat with */
|
|
+
|
|
+ /*
|
|
+ * Bits needed to read the hw events in user-space.
|
|
+ *
|
|
+ * u32 seq, time_mult, time_shift, index, width;
|
|
+ * u64 count, enabled, running;
|
|
+ * u64 cyc, time_offset;
|
|
+ * s64 pmc = 0;
|
|
+ *
|
|
+ * do {
|
|
+ * seq = pc->lock;
|
|
+ * barrier()
|
|
+ *
|
|
+ * enabled = pc->time_enabled;
|
|
+ * running = pc->time_running;
|
|
+ *
|
|
+ * if (pc->cap_usr_time && enabled != running) {
|
|
+ * cyc = rdtsc();
|
|
+ * time_offset = pc->time_offset;
|
|
+ * time_mult = pc->time_mult;
|
|
+ * time_shift = pc->time_shift;
|
|
+ * }
|
|
+ *
|
|
+ * index = pc->index;
|
|
+ * count = pc->offset;
|
|
+ * if (pc->cap_user_rdpmc && index) {
|
|
+ * width = pc->pmc_width;
|
|
+ * pmc = rdpmc(index - 1);
|
|
+ * }
|
|
+ *
|
|
+ * barrier();
|
|
+ * } while (pc->lock != seq);
|
|
+ *
|
|
+ * NOTE: for obvious reason this only works on self-monitoring
|
|
+ * processes.
|
|
+ */
|
|
+ __u32 lock; /* seqlock for synchronization */
|
|
+ __u32 index; /* hardware event identifier */
|
|
+ __s64 offset; /* add to hardware event value */
|
|
+ __u64 time_enabled; /* time event active */
|
|
+ __u64 time_running; /* time event on cpu */
|
|
+ union {
|
|
+ __u64 capabilities;
|
|
+ struct {
|
|
+ __u64 cap_bit0 : 1, /* Always 0, deprecated, see commit 860f085b74e9 */
|
|
+ cap_bit0_is_deprecated : 1, /* Always 1, signals that bit 0 is zero */
|
|
+
|
|
+ cap_user_rdpmc : 1, /* The RDPMC instruction can be used to read counts */
|
|
+ cap_user_time : 1, /* The time_* fields are used */
|
|
+ cap_user_time_zero : 1, /* The time_zero field is used */
|
|
+ cap_____res : 59;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ /*
|
|
+ * If cap_user_rdpmc this field provides the bit-width of the value
|
|
+ * read using the rdpmc() or equivalent instruction. This can be used
|
|
+ * to sign extend the result like:
|
|
+ *
|
|
+ * pmc <<= 64 - width;
|
|
+ * pmc >>= 64 - width; // signed shift right
|
|
+ * count += pmc;
|
|
+ */
|
|
+ __u16 pmc_width;
|
|
+
|
|
+ /*
|
|
+ * If cap_usr_time the below fields can be used to compute the time
|
|
+ * delta since time_enabled (in ns) using rdtsc or similar.
|
|
+ *
|
|
+ * u64 quot, rem;
|
|
+ * u64 delta;
|
|
+ *
|
|
+ * quot = (cyc >> time_shift);
|
|
+ * rem = cyc & (((u64)1 << time_shift) - 1);
|
|
+ * delta = time_offset + quot * time_mult +
|
|
+ * ((rem * time_mult) >> time_shift);
|
|
+ *
|
|
+ * Where time_offset,time_mult,time_shift and cyc are read in the
|
|
+ * seqcount loop described above. This delta can then be added to
|
|
+ * enabled and possible running (if index), improving the scaling:
|
|
+ *
|
|
+ * enabled += delta;
|
|
+ * if (index)
|
|
+ * running += delta;
|
|
+ *
|
|
+ * quot = count / running;
|
|
+ * rem = count % running;
|
|
+ * count = quot * enabled + (rem * enabled) / running;
|
|
+ */
|
|
+ __u16 time_shift;
|
|
+ __u32 time_mult;
|
|
+ __u64 time_offset;
|
|
+ /*
|
|
+ * If cap_usr_time_zero, the hardware clock (e.g. TSC) can be calculated
|
|
+ * from sample timestamps.
|
|
+ *
|
|
+ * time = timestamp - time_zero;
|
|
+ * quot = time / time_mult;
|
|
+ * rem = time % time_mult;
|
|
+ * cyc = (quot << time_shift) + (rem << time_shift) / time_mult;
|
|
+ *
|
|
+ * And vice versa:
|
|
+ *
|
|
+ * quot = cyc >> time_shift;
|
|
+ * rem = cyc & (((u64)1 << time_shift) - 1);
|
|
+ * timestamp = time_zero + quot * time_mult +
|
|
+ * ((rem * time_mult) >> time_shift);
|
|
+ */
|
|
+ __u64 time_zero;
|
|
+ __u32 size; /* Header size up to __reserved[] fields. */
|
|
+
|
|
+ /*
|
|
+ * Hole for extension of the self monitor capabilities
|
|
+ */
|
|
+
|
|
+ __u8 __reserved[118*8+4]; /* align to 1k. */
|
|
+
|
|
+ /*
|
|
+ * Control data for the mmap() data buffer.
|
|
+ *
|
|
+ * User-space reading the @data_head value should issue an smp_rmb(),
|
|
+ * after reading this value.
|
|
+ *
|
|
+ * When the mapping is PROT_WRITE the @data_tail value should be
|
|
+ * written by userspace to reflect the last read data, after issueing
|
|
+ * an smp_mb() to separate the data read from the ->data_tail store.
|
|
+ * In this case the kernel will not over-write unread data.
|
|
+ *
|
|
+ * See perf_output_put_handle() for the data ordering.
|
|
+ *
|
|
+ * data_{offset,size} indicate the location and size of the perf record
|
|
+ * buffer within the mmapped area.
|
|
+ */
|
|
+ __u64 data_head; /* head in the data section */
|
|
+ __u64 data_tail; /* user-space written tail */
|
|
+ __u64 data_offset; /* where the buffer starts */
|
|
+ __u64 data_size; /* data buffer size */
|
|
+
|
|
+ /*
|
|
+ * AUX area is defined by aux_{offset,size} fields that should be set
|
|
+ * by the userspace, so that
|
|
+ *
|
|
+ * aux_offset >= data_offset + data_size
|
|
+ *
|
|
+ * prior to mmap()ing it. Size of the mmap()ed area should be aux_size.
|
|
+ *
|
|
+ * Ring buffer pointers aux_{head,tail} have the same semantics as
|
|
+ * data_{head,tail} and same ordering rules apply.
|
|
+ */
|
|
+ __u64 aux_head;
|
|
+ __u64 aux_tail;
|
|
+ __u64 aux_offset;
|
|
+ __u64 aux_size;
|
|
+};
|
|
+#endif // PERF_ATTR_SIZE_VER5
|
|
+#endif // PERF_ATTR_SIZE_VER5_BUNDLE
|
|
+
|
|
struct target_ops;
|
|
|
|
#if HAVE_LINUX_PERF_EVENT_H
|
|
diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4
|
|
--- a/gdbsupport/common.m4
|
|
+++ b/gdbsupport/common.m4
|
|
@@ -135,7 +135,7 @@ AC_DEFUN([GDB_AC_COMMON], [
|
|
AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
|
|
#include <linux/perf_event.h>
|
|
#ifndef PERF_ATTR_SIZE_VER5
|
|
- # error
|
|
+ // error // PERF_ATTR_SIZE_VER5_BUNDLE is not available here - Fedora+RHEL
|
|
#endif
|
|
]])], [perf_event=yes], [perf_event=no])
|
|
if test "$perf_event" != yes; then
|