Messages in this thread | | | Date | Tue, 14 Jan 1997 10:31:57 -0500 | Subject | Compilation problems with 2.1.20, incorrectly globalized symbols | From | (Dale R. Worley) |
| |
One "fun" consequence of attempting to choose "everything" when compiling a kernel is discovering symbols that were declared global when they should have been local to individual source files. In this case, I've found:
- drivers/isdn/teles/mod.c defines "io" globally at 23
- drivers/char/wdt.c defines "io" and "irq" globally at 53 and 54
- drivers/isdn/pcbit/module.c defines "irq" and "mem" globally at 25 and 26
In all cases the solution is to mark these declarations static. Recompilation shows that these identifiers are not referenced from any other file.
The horror is realizing that I have only discovered the symbols that are incorrectly globalized in two or more files -- ones globalized in one file don't cause visible errors.
BTW, I notice that someone occasionally publishes a list of multiply-defined symbols, incorrectly globalized symbols, and other namespace pollution. Doesn't anyone *do* anything with that list? Might it not be a good idea if Linus were to take that list and tell the developers "Your code doesn't go into the kernel until it isn't on this list!"
Anyway, could someone get these changes into the kernel?
Thanks!
Dale -- Dale R. Worley Ariadne Internet Services Voice: +1 617-899-7949 Fax: +1 617-899-7946 E-mail: worley@ariadne.com "Internet-based electronic commerce solutions to real business problems."
| |