linux-next: allyesconfig build failure in drivers/usb/gadget

From: H Hartley Sweeten
Date: Tue Apr 24 2012 - 17:11:04 EST


Hello all,

I'm not sure if this is a known issue or not...

I was trying an allyesconfig build of linux-next (next-20120224) and got this:

drivers/usb/built-in.o: In function `usb_descriptor_fillbuf':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:38: multiple definition of `usb_descriptor_fillbuf'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:38: first defined here
drivers/usb/built-in.o: In function `usb_string_ids_n':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:994: multiple definition of `usb_string_ids_n'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:994: first defined here
drivers/usb/built-in.o: In function `usb_interface_id':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:341: multiple definition of `usb_interface_id'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:341: first defined here
drivers/usb/built-in.o: In function `usb_string_id':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:932: multiple definition of `usb_string_id'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:932: first defined here
drivers/usb/built-in.o: In function `usb_string_ids_tab':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:960: multiple definition of `usb_string_ids_tab'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:960: first defined here
drivers/usb/built-in.o: In function `usb_copy_descriptors':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:124: multiple definition of `usb_copy_descriptors'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:124: first defined here
drivers/usb/built-in.o: In function `usb_composite_unregister':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1602: multiple definition of `usb_composite_unregister'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1602: first defined here
drivers/usb/built-in.o: In function `config_ep_by_speed':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:119: multiple definition of `config_ep_by_speed'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:119: first defined here
drivers/usb/built-in.o: In function `usb_gadget_get_string':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/usbstring.c:41: multiple definition of `usb_gadget_get_string'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/usbstring.c:41: first defined here
drivers/usb/built-in.o: In function `usb_add_function':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:209: multiple definition of `usb_add_function'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:209: first defined here
drivers/usb/built-in.o: In function `usb_composite_probe':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1576: multiple definition of `usb_composite_probe'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1576: first defined here
drivers/usb/built-in.o: In function `usb_composite_setup_continue':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1619: multiple definition of `usb_composite_setup_continue'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:1619: first defined here
drivers/usb/built-in.o: In function `usb_gadget_config_buf':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:84: multiple definition of `usb_gadget_config_buf'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/config.c:84: first defined here
drivers/usb/built-in.o: In function `usb_ep_autoconfig':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:367: multiple definition of `usb_ep_autoconfig'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:367: first defined here
drivers/usb/built-in.o: In function `usb_function_activate':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:298: multiple definition of `usb_function_activate'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:298: first defined here
drivers/usb/built-in.o: In function `usb_ep_autoconfig_reset':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:382: multiple definition of `usb_ep_autoconfig_reset'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:382: first defined here
drivers/usb/built-in.o: In function `usb_add_config':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:713: multiple definition of `usb_add_config'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:713: first defined here
drivers/usb/built-in.o: In function `usb_ep_autoconfig_ss':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:265: multiple definition of `usb_ep_autoconfig_ss'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/epautoconf.c:265: first defined here
drivers/usb/built-in.o: In function `usb_function_deactivate':
/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:271: multiple definition of `usb_function_deactivate'
drivers/target/built-in.o:/home/bigguiness/src/git/linux-next/drivers/usb/gadget/composite.c:271: first defined here
make[1]: *** [drivers/built-in.o] Error 1
make: *** [drivers] Error 2

It appears config.c, composite.c, usbstring.c, and epautoconf.c are not
actually built separately during the make but are #include'd by various
other sources. All of these files have functions that are not marked static
so we end up with the 'multiple definition' errors.

Should these files be compiled separately and treated as a gadget library?

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