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 0000000000000000000000000000000000000000..a762d77b8c07dea32b57ee0bc0210e49d380c156
--- /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 0000000000000000000000000000000000000000..bd330526cba5381702c3e978467729b1a28024e4
--- /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.