From e5100daa46ddd08ecbe53c8744e78e67080c40a7 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Mon, 1 Mar 2010 13:22:30 +0100
Subject: [PATCH] Add local gdb patches.

---
 ...-without-dwarf-name-canonicalization.patch | 19 +++++++++++++++
 .../gdb-work-around-trk-single-step.patch     | 23 +++++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 share/qtcreator/patches/gdb-without-dwarf-name-canonicalization.patch
 create mode 100644 share/qtcreator/patches/gdb-work-around-trk-single-step.patch

diff --git a/share/qtcreator/patches/gdb-without-dwarf-name-canonicalization.patch b/share/qtcreator/patches/gdb-without-dwarf-name-canonicalization.patch
new file mode 100644
index 00000000000..a762d77b8c0
--- /dev/null
+++ b/share/qtcreator/patches/gdb-without-dwarf-name-canonicalization.patch
@@ -0,0 +1,19 @@
+
+This shortcuts the canonicalization of symbol names. This is likely to
+introduce regressions for setting breakpoints by function names (which
+is rarely used by IDE users) but speeds up startup by around 15% for a
+typical Qt application. So disabling it seems to be a good compromise.
+
+diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
+index a05c946..761fa34 100644
+--- a/gdb/dwarf2read.c
++++ b/gdb/dwarf2read.c
+@@ -9097,7 +9097,7 @@ static char *
+ dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
+ 			  struct obstack *obstack)
+ {
+-  if (name && cu->language == language_cplus)
++  if (0 && name && cu->language == language_cplus)
+     {
+       char *canon_name = cp_canonicalize_string (name);
+ 
diff --git a/share/qtcreator/patches/gdb-work-around-trk-single-step.patch b/share/qtcreator/patches/gdb-work-around-trk-single-step.patch
new file mode 100644
index 00000000000..bd330526cba
--- /dev/null
+++ b/share/qtcreator/patches/gdb-work-around-trk-single-step.patch
@@ -0,0 +1,23 @@
+
+NOTE: Apply to --target=arm-none-symbianelf builds only.
+
+This works around the problem of TRK overshooting line-wise stepping by a few
+instructions. This is not a gdb problem, but a TRK problem, but currently
+easier to workaround on the gdb side. It's sufficient to apply for the 
+arm-none-symbianelf targeted gdbs only as TRK is the only probe known to have
+this problem.
+
+--- a/gdb/infrun.c
++++ b/gdb/infrun.c
+@@ -4754,9 +4754,9 @@ infrun: not switching back to stepped thread, it has vanished\n");
+       return;
+     }
+ 
+-  if ((stop_pc == stop_pc_sal.pc)
++  if (1 /* (stop_pc == stop_pc_sal.pc)
+       && (ecs->event_thread->current_line != stop_pc_sal.line
+- 	  || ecs->event_thread->current_symtab != stop_pc_sal.symtab))
++ 	  || ecs->event_thread->current_symtab != stop_pc_sal.symtab) */)
+     {
+       /* We are at the start of a different line.  So stop.  Note that
+          we don't stop if we step into the middle of a different line.
-- 
GitLab