common: fix missing function pointer relocation in fixup_cmdtable()
authorDaniel Schwierzeck <daniel.schwierzeck@googlemail.com>
Thu, 13 Oct 2011 06:07:39 +0000 (06:07 +0000)
committerWolfgang Denk <wd@denx.de>
Sat, 15 Oct 2011 20:19:36 +0000 (22:19 +0200)
The command auto-completion does not work on architectures relying
on CONFIG_NEEDS_MANUAL_RELOC like MIPS. Cause is the missing function
pointer fixup for cmd_tbl_t::complete function in fixup_cmdtable().

This patch adds the missing pointer fixup in case of CONFIG_AUTO_COMPLETE
is defined.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
common/command.c

index ddaed68..ed931d7 100644 (file)
@@ -475,6 +475,12 @@ void fixup_cmdtable(cmd_tbl_t *cmdtp, int size)
                        cmdtp->help = (char *)addr;
                }
 #endif
+#ifdef CONFIG_AUTO_COMPLETE
+               if (cmdtp->complete) {
+                       addr = (ulong)(cmdtp->complete) + gd->reloc_off;
+                       cmdtp->complete = (char *)addr;
+               }
+#endif
                cmdtp++;
        }
 }