track function symbols

This commit is contained in:
Vladimir 'phcoder' Serbinenko 2011-05-08 18:29:37 +02:00
parent 5a0baa09f2
commit 7b58e65f24
4 changed files with 22 additions and 15 deletions

View file

@ -47,7 +47,7 @@ grub_register_exported_symbols (void)
EOF
cat <<EOF
struct symtab { const char *name; void *addr; };
struct symtab { const char *name; void *addr; int isfunc; };
struct symtab *p;
static struct symtab tab[] =
{
@ -56,16 +56,16 @@ EOF
(while read LINE; do echo $LINE; done) \
| grep -v '^#' \
| sed -n \
-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/ {"\1", \1},/;p;}' \
-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/ {"\1", \&\1},/;p;}' \
-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/ {"\1", \1, 1},/;p;}' \
-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/ {"\1", \&\1, 0},/;p;}' \
| sort -u
cat <<EOF
{0, 0}
{0, 0, 0}
};
COMPILE_TIME_ASSERT (sizeof (tab) > sizeof (tab[0]));
for (p = tab; p->name; p++)
grub_dl_register_symbol (p->name, p->addr, 0);
grub_dl_register_symbol (p->name, p->addr, p->isfunc, 0);
}
EOF