Re: 2.4.5-ac4 es1371.o unresolved symbols

Vojtech Pavlik (vojtech@suse.cz)
Thu, 31 May 2001 08:08:45 +0200


On Thu, May 31, 2001 at 11:29:06AM +1000, Keith Owens wrote:
> On Wed, 30 May 2001 18:15:31 +0200,
> Vojtech Pavlik <vojtech@suse.cz> wrote:
> >On Wed, May 30, 2001 at 02:46:42PM +1000, Keith Owens wrote:
> >> This is messy. gameport.h is included by code outside the joystick
> >> directory and it needs to expand differently based on whether
> >> gameport.o is compiled or not. Also gameport.o needs to be built in if
> >> _any_ consumers are built in (either joystick or sound), it needs to be
> >> a module otherwise. Lots of cross config and cross directory
> >> dependencies :(.
> >
> >What about this solution? It's a little cleaner.
> >
> >diff -urN linux-2.4.5-ac4/drivers/char/joystick/Config.in linux/drivers/char/joystick/Config.in
> >+tristate 'Game port support' CONFIG_INPUT_GAMEPORT
> >+ dep_tristate ' Classic ISA/PnP gameports' CONFIG_INPUT_NS558 $CONFIG_INPUT_GAMEPORT
>
> CONFIG_INPUT_GAMEPORT must be a derived symbol, not a user selected
> symbol. CONFIG_INPUT_GAMEPORT is 'n' if no gameport drivers are
> installed. It is 'm' if all gameport drivers are modules *and* all
> users of gameport_register_port() are modules, otherwise it is 'y'.
>
> With your patch, if a user selects CONFIG_INPUT_GAMEPORT=m and
> CONFIG_SOUND_ES1370=y then the built in es1370 driver has unresolved
> references to gameport_register_port() which is in a module, vmlinux
> will not link. That is why I derived CONFIG_INPUT_GAMEPORT based on
> the config options in two separate directories.

Have you tried the patch? Because the gameport.h define has:

#if defined(CONFIG_INPUT_GAMEPORT) || (defined(CONFIG_INPUT_GAMEPORT_MODULE) && defined(MODULE))
void gameport_register_port(struct gameport *gameport);
void gameport_unregister_port(struct gameport *gameport);
#else
void __inline__ gameport_register_port(struct gameport *gameport) { return; }
void __inline__ gameport_unregister_port(struct gameport *gameport) { return; }
#endif

I think it should work.

-- 
Vojtech Pavlik
SuSE Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/