common/image.c: Relocate strings in tables.
authorScott Wood <scottwood@freescale.com>
Thu, 2 Apr 2009 21:15:10 +0000 (16:15 -0500)
committerWolfgang Denk <wd@denx.de>
Sat, 4 Apr 2009 21:33:12 +0000 (23:33 +0200)
Without this, u-boot can crash or print garbage if the original link
address no longer points to a valid string.

Signed-off-by: Scott Wood <scottwood@freescale.com>
common/image.c

index daa68bc2ddeb8f9c4c0dabe0a072f4f18f94ca9f..e22c974f358a4bf611ad2c60e2225f3bf499c0b4 100644 (file)
@@ -518,7 +518,11 @@ static char *get_table_entry_name (table_entry_t *table, char *msg, int id)
 {
        for (; table->id >= 0; ++table) {
                if (table->id == id)
-                       return (table->lname);
+#ifdef USE_HOSTCC
+                       return table->lname;
+#else
+                       return table->lname + gd->reloc_off;
+#endif
        }
        return (msg);
 }
@@ -579,7 +583,7 @@ static int get_table_entry_id (table_entry_t *table,
        fprintf (stderr, "\n");
 #else
        for (t = table; t->id >= 0; ++t) {
-               if (t->sname && strcmp(t->sname, name) == 0)
+               if (t->sname && strcmp(t->sname + gd->reloc_off, name) == 0)
                        return (t->id);
        }
        debug ("Invalid %s Type: %s\n", table_name, name);