]>
Commit | Line | Data |
---|---|---|
6a161fa9 | 1 | #! /bin/sh |
2 | # | |
8c411768 | 3 | # Copyright (C) 2002,2006,2007,2008,2009,2010 Free Software Foundation, Inc. |
6a161fa9 | 4 | # |
7b455f4d | 5 | # This gensymlist.sh.in is free software; the author |
6a161fa9 | 6 | # gives unlimited permission to copy and/or distribute it, |
7 | # with or without modifications, as long as this notice is preserved. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without | |
11 | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
12 | # PARTICULAR PURPOSE. | |
13 | ||
14 | cat <<EOF | |
15 | /* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */ | |
16 | /* | |
4b13b216 | 17 | * GRUB -- GRand Unified Bootloader |
8c411768 | 18 | * Copyright (C) 2002,2006,2007,2008,2009,2010 Free Software Foundation, Inc. |
6a161fa9 | 19 | * |
5a79f472 | 20 | * GRUB is free software: you can redistribute it and/or modify |
6a161fa9 | 21 | * it under the terms of the GNU General Public License as published by |
5a79f472 | 22 | * the Free Software Foundation, either version 3 of the License, or |
6a161fa9 | 23 | * (at your option) any later version. |
24 | * | |
5a79f472 | 25 | * GRUB is distributed in the hope that it will be useful, |
6a161fa9 | 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
28 | * GNU General Public License for more details. | |
29 | * | |
30 | * You should have received a copy of the GNU General Public License | |
5a79f472 | 31 | * along with GRUB. If not, see <http://www.gnu.org/licenses/>. |
6a161fa9 | 32 | */ |
33 | ||
34 | EOF | |
35 | ||
36 | for i in $*; do | |
37 | echo "#include <$i>" | |
38 | done | |
39 | ||
40 | cat <<EOF | |
41 | ||
26887f22 | 42 | #define COMPILE_TIME_ASSERT(cond) switch (0) { case 1: case !(cond): ; } |
43 | ||
ebcecdf1 VS |
44 | #pragma GCC diagnostic ignored "-Wmissing-format-attribute" |
45 | ||
6a161fa9 | 46 | void |
4b13b216 | 47 | grub_register_exported_symbols (void) |
6a161fa9 | 48 | { |
49 | EOF | |
50 | ||
51 | cat <<EOF | |
7b58e65f | 52 | struct symtab { const char *name; void *addr; int isfunc; }; |
6a161fa9 | 53 | struct symtab *p; |
54 | static struct symtab tab[] = | |
55 | { | |
56 | EOF | |
57 | ||
8c411768 | 58 | (while read LINE; do echo $LINE; done) \ |
7b455f4d | 59 | | grep -v '^#' \ |
60 | | sed -n \ | |
7b58e65f | 61 | -e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/ {"\1", \1, 1},/;p;}' \ |
a6393224 | 62 | -e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/ {"\1", (void *) \&\1, 0},/;p;}' \ |
7b455f4d | 63 | | sort -u |
6a161fa9 | 64 | |
65 | cat <<EOF | |
7b58e65f | 66 | {0, 0, 0} |
6a161fa9 | 67 | }; |
68 | ||
26887f22 | 69 | COMPILE_TIME_ASSERT (sizeof (tab) > sizeof (tab[0])); |
6a161fa9 | 70 | for (p = tab; p->name; p++) |
7b58e65f | 71 | grub_dl_register_symbol (p->name, p->addr, p->isfunc, 0); |
6a161fa9 | 72 | } |
73 | EOF |