aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/gdb/gdb/kill_arm_map_symbols.patch
blob: 9fc45b9f2a3c4c706d8b07f75dd16439c9530a63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Upstream-Status: Inappropriate [embedded specific]

Index: gdb-7.3/gdb/arm-tdep.c
===================================================================
--- gdb-7.3.orig/gdb/arm-tdep.c	2011-05-17 14:27:01.000000000 -0700
+++ gdb-7.3/gdb/arm-tdep.c	2011-08-05 22:29:58.784201850 -0700
@@ -7806,6 +7806,19 @@
 static void
 arm_elf_make_msymbol_special(asymbol *sym, struct minimal_symbol *msym)
 {
+
+    /* FIXME: We want gdb to ignore the ARM ELF mapping symbols when
+	displaying disassembly so we use this horrible hack here to
+	artifically set their address to the highest possible value.
+	This is wrong of course, and it prevents the symbols from being
+	used for their intended purpose - to distinguish between ARM
+	and THUMB code.  So we ought to find a better way to do this.  */
+    if (bfd_asymbol_name (sym)
+	&& bfd_asymbol_name (sym)[0] == '$'
+	&& bfd_asymbol_name (sym)[1] != 0
+	&& bfd_asymbol_name (sym)[2] == 0)
+      SYMBOL_VALUE_ADDRESS(msym) = (CORE_ADDR) 0x7ffffffc;
+
   if (ARM_SYM_BRANCH_TYPE (&((elf_symbol_type *)sym)->internal_elf_sym)
       == ST_BRANCH_TO_THUMB)
     MSYMBOL_SET_SPECIAL (msym);