summaryrefslogtreecommitdiff
path: root/packages/gdb/files/kill_arm_map_symbols.patch
blob: 177142192d49050ea3373a1dfb4ec39c7460656b (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
Index: gdb-6.3/gdb/arm-tdep.c
===================================================================
--- gdb-6.3.orig/gdb/arm-tdep.c	2004-08-03 02:02:20.000000000 +0000
+++ gdb-6.3/gdb/arm-tdep.c	2005-11-09 15:13:29.000000000 +0000
@@ -2491,6 +2491,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;
+
   /* Thumb symbols are of type STT_LOPROC, (synonymous with
      STT_ARM_TFUNC).  */
   if (ELF_ST_TYPE (((elf_symbol_type *)sym)->internal_elf_sym.st_info)