-
Notifications
You must be signed in to change notification settings - Fork 8
LinkerIssues
-
cx23885_input_rx_work_handler
imported and exported with different signatures, not detected by linker and not problematic in practice:drivers/media/video/cx23885/cx23885-input
anddrivers/media/video/cx23885/cx23885-ir
#need to investigate
two drivers export the same method (confirmed):
MlmeThread when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_RT2870 | CONFIG_STAGING & CONFIG_RT2870 & !CONFIG_VT6655
MlmeThread: (*void) => signed int if CONFIG_STAGING & CONFIG_RT2870 at l/drivers/staging/rt2870/usb_main_dev:0:0
MlmeThread: (*void) => signed int if CONFIG_STAGING & CONFIG_VT6655 at l/drivers/staging/vt6655/device_main:0:0
confirmed bug:
** processing drivers/staging/vt6656 **
parsing
33 files
composing
total composition time: 105
. * RFvRSSITodBm when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_VT6655 | CONFIG_STAGING & CONFIG_VT6655 & !CONFIG_VT6656
RFvRSSITodBm: (*struct __device_info, unsigned char, *signed long) => void if CONFIG_STAGING & CONFIG_VT6655 at l/drivers/staging/vt6655/rf:0:0
RFvRSSITodBm: (*struct __device_info, unsigned char, *signed long) => void if CONFIG_STAGING & CONFIG_VT6656 at l/drivers/staging/vt6656/rf:0:0
* PSvEnablePowerSaving when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_VT6655 | CONFIG_STAGING & CONFIG_VT6655 & !CONFIG_VT6656
PSvEnablePowerSaving: (*void, unsigned short) => void if CONFIG_STAGING & CONFIG_VT6655 at l/drivers/staging/vt6655/power:0:0
PSvEnablePowerSaving: (*void, unsigned short) => void if CONFIG_STAGING & CONFIG_VT6656 at l/drivers/staging/vt6656/power:0:0
incompatable type signatures, no effect at runtime though, because is not checked
** processing drivers/acpi **
parsing44 files
composing
* acpi_unlock_ac_dir when !CONFIG_ACPI | CONFIG_ACPI & !CONFIG_ACPI_AC | CONFIG_ACPI & CONFIG_ACPI_AC & !CONFIG_ACPI_PROCFS_POWER
acpi_unlock_ac_dir: (*struct proc_dir_entry) => *void if CONFIG_ACPI & CONFIG_ACPI_AC & CONFIG_ACPI_PROCFS_POWER at l/drivers/acpi/ac:0:0
acpi_unlock_ac_dir: (*struct proc_dir_entry) => void if CONFIG_ACPI & CONFIG_ACPI_PROCFS_POWER at l/drivers/acpi/cm_sbs:0:0
* acpi_unlock_battery_dir when !CONFIG_ACPI | CONFIG_ACPI & !CONFIG_ACPI_PROCFS_POWER | CONFIG_ACPI & CONFIG_ACPI_PROCFS_POWER & !CONFIG_ACPI_BATTERY
acpi_unlock_battery_dir: (*struct proc_dir_entry) => *void if CONFIG_ACPI & CONFIG_ACPI_PROCFS_POWER & CONFIG_ACPI_BATTERY at l/drivers/acpi/battery:0:0
acpi_unlock_battery_dir: (*struct proc_dir_entry) => void if CONFIG_ACPI & CONFIG_ACPI_PROCFS_POWER at l/drivers/acpi/cm_sbs:0:0
total composition time: 476
** processing drivers/staging/pohmelfs **
parsing9 files
composing
* pin_inotify_watch when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_INOTIFY & !CONFIG_POHMELFS | CONFIG_STAGING & CONFIG_INOTIFY
pin_inotify_watch: (*struct inotify_watch) => signed int if CONFIG_STAGING & !CONFIG_INOTIFY & CONFIG_POHMELFS at l/drivers/staging/pohmelfs/lock:0:0
pin_inotify_watch: (*struct inotify_watch) => signed int if CONFIG_STAGING & !CONFIG_INOTIFY & CONFIG_POHMELFS at l/drivers/staging/pohmelfs/net:0:0
* unpin_inotify_watch when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_INOTIFY & !CONFIG_POHMELFS | CONFIG_STAGING & CONFIG_INOTIFY
unpin_inotify_watch: (*struct inotify_watch) => void if CONFIG_STAGING & !CONFIG_INOTIFY & CONFIG_POHMELFS at l/drivers/staging/pohmelfs/lock:0:0
unpin_inotify_watch: (*struct inotify_watch) => void if CONFIG_STAGING & !CONFIG_INOTIFY & CONFIG_POHMELFS at l/drivers/staging/pohmelfs/net:0:0
total composition time: 327
** processing drivers/staging/rtl8192su **
parsing12 files
composing
* ieee80211_is_valid_mode when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_RTL8192SU
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192SU at l/drivers/staging/rtl8192su/r8180_93cx6:0:0
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192SU at l/drivers/staging/rtl8192su/r8192S_Efuse:0:0
** processing drivers/staging/rtl8192e **
parsing8 files
composing
* ieee80211_is_valid_mode when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_RTL8192E
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192E at l/drivers/staging/rtl8192e/r8180_93cx6:0:0
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192E at l/drivers/staging/rtl8192e/r8190_rtl8256:0:0
** processing drivers/staging/rtl8187se/ieee80211 **
parsing11 files
composing
* ieee80211_is_valid_mode when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_R8187SE
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_R8187SE at l/drivers/staging/rtl8187se/ieee80211/dot11d:0:0
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_R8187SE at l/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt:0:0
** processing drivers/staging/rtl8192u **
parsing9 files
composing
* ieee80211_is_valid_mode when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_RTL8192U
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192U at l/drivers/staging/rtl8192u/r8180_93cx6:0:0
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_RTL8192U at l/drivers/staging/rtl8192u/r8190_rtl8256:0:0
** processing drivers/staging/rtl8187se **
parsing6 files
composing
* ieee80211_is_valid_mode when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_R8187SE
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_R8187SE at l/drivers/staging/rtl8187se/r8180_core:0:0
ieee80211_is_valid_mode: (*struct ieee80211_device, signed int) => signed int if CONFIG_STAGING & CONFIG_R8187SE at l/drivers/staging/rtl8187se/r8180_dm:0:0
mismatching types, not a problem in practice
** processing drivers/video/sis **
parsing5 files
composing
* SiS_SetCH70xxANDOR when !CONFIG_FB_SIS
SiS_SetCH70xxANDOR: (*struct SiS_Private, unsigned short, unsigned char, unsigned short) => void if CONFIG_FB_SIS at l/drivers/video/sis/init301:0:0
SiS_SetCH70xxANDOR: (*struct SiS_Private, unsigned short, unsigned char, unsigned char) => void if CONFIG_FB_SIS at l/drivers/video/sis/sis_main:0:0
looks like incompatible types, but actually they should be considered compatable, void parameter should be filtered (need to normalize signatures)
** processing drivers/usb/host **
parsing20 files
composing
* xhci_register_pci when !CONFIG_PCI | CONFIG_PCI & !CONFIG_USB_FHCI_HCD & !CONFIG_USB_XHCI_HCD | CONFIG_PCI & CONFIG_USB_FHCI_HCD
xhci_register_pci: (void) => signed int if CONFIG_PCI & !CONFIG_USB_FHCI_HCD & CONFIG_USB_XHCI_HCD at l/drivers/usb/host/xhci-hcd:0:0
xhci_register_pci: () => signed int if !CONFIG_PCI & CONFIG_USB & !CONFIG_USB_FHCI_HCD & CONFIG_USB_XHCI_HCD | CONFIG_PCI & !CONFIG_USB_FHCI_HCD & CONFIG_USB_XHCI_HCD at l/drivers/usb/host/xhci-pci:0:0
need to normalize signatures, are actually equivalent:
** processing drivers/isdn/capi **
parsing7 files
composing
* capi20_get_manufacturer when !CONFIG_ISDN | CONFIG_ISDN & !CONFIG_ISDN_CAPI | CONFIG_ISDN & CONFIG_ISDN_CAPI & !CONFIG_ISDN_CAPI_CAPI20 & !CONFIG_ISDN_CAPI_CAPIDRV
capi20_get_manufacturer: (unsigned int, unsigned char[]) => unsigned short if CONFIG_ISDN & CONFIG_ISDN_CAPI & !CONFIG_ISDN_CAPI_CAPI20 & CONFIG_ISDN_CAPI_CAPIDRV | CONFIG_ISDN & CONFIG_ISDN_CAPI & CONFIG_ISDN_CAPI_CAPI20 at l/drivers/isdn/capi/capi:0:0, l/drivers/isdn/capi/capidrv:0:0
capi20_get_manufacturer: (unsigned int, *unsigned char) => unsigned short if CONFIG_ISDN & CONFIG_ISDN_CAPI at l/drivers/isdn/capi/kcapi:0:0
* capi20_get_serial when !CONFIG_ISDN | CONFIG_ISDN & !CONFIG_ISDN_CAPI | CONFIG_ISDN & CONFIG_ISDN_CAPI & !CONFIG_ISDN_CAPI_CAPI20
capi20_get_serial: (unsigned int, unsigned char[]) => unsigned short if CONFIG_ISDN & CONFIG_ISDN_CAPI & CONFIG_ISDN_CAPI_CAPI20 at l/drivers/isdn/capi/capi:0:0
capi20_get_serial: (unsigned int, *unsigned char) => unsigned short if CONFIG_ISDN & CONFIG_ISDN_CAPI at l/drivers/isdn/capi/kcapi:0:0
total composition time: 282
feature model extraction problem (CONFIG_I2C_SI470X and CONFIG_USB_SI470X may not be both selected; CONFIG_I2C_SI470X_MODULE and CONFIG_USB_SI470X_MODULE may though) :
** processing drivers/media/radio/si470x **
parsing3 files
composing
* si470x_get_register when !CONFIG_VIDEO_DEV | CONFIG_VIDEO_DEV & !CONFIG_RADIO_SI470X | CONFIG_VIDEO_DEV & CONFIG_RADIO_SI470X & !CONFIG_USB_SI470X | CONFIG_VIDEO_DEV & CONFIG_RADIO_SI470X & CONFIG_USB_SI470X & !CONFIG_I2C_SI470X
si470x_get_register: (*struct si470x_device, signed int) => signed int if CONFIG_VIDEO_DEV & CONFIG_RADIO_SI470X & CONFIG_I2C_SI470X at l/drivers/media/radio/si470x/radio-si470x-i2c:0:0
si470x_get_register: (*struct si470x_device, signed int) => signed int if CONFIG_VIDEO_DEV & CONFIG_RADIO_SI470X & CONFIG_USB_SI470X at l/drivers/media/radio/si470x/radio-si470x-usb:0:0
feature model extraction problem (?): CONFIG_COMEDI can only be selected as module
** processing drivers/staging/comedi/drivers **
parsing119 files
composing
* v_EepromCs76Read when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_COMEDI | CONFIG_STAGING & CONFIG_COMEDI & !CONFIG_COMEDI_PCI_DRIVERS
v_EepromCs76Read: (unsigned int, unsigned short, *unsigned short) => void if CONFIG_STAGING & CONFIG_COMEDI & CONFIG_COMEDI_PCI_DRIVERS at l/drivers/staging/comedi/drivers/addi_apci_1032:0:0
v_EepromCs76Read: (unsigned int, unsigned short, *unsigned short) => void if CONFIG_STAGING & CONFIG_COMEDI & CONFIG_COMEDI_PCI_DRIVERS at l/drivers/staging/comedi/drivers/addi_apci_1500:0:0
signatures are actually compatible enough (need to normalize?)
** processing drivers/isdn/hardware/eicon **
parsing29 files
composing
* DIVA_DIDD_Read when !CONFIG_ISDN | CONFIG_ISDN & !CONFIG_CAPI_EICON | CONFIG_ISDN & CONFIG_CAPI_EICON & !CONFIG_ISDN_DIVAS_DIVACAPI | CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI & !CONFIG_ISDN_DIVAS
DIVA_DIDD_Read: (*struct {Map()}, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI at l/drivers/isdn/hardware/eicon/capifunc:0:0
DIVA_DIDD_Read: (*void, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS at l/drivers/isdn/hardware/eicon/dadapter:0:0
* DIVA_DIDD_Read when !CONFIG_ISDN | CONFIG_ISDN & !CONFIG_CAPI_EICON | CONFIG_ISDN & CONFIG_CAPI_EICON & !CONFIG_ISDN_DIVAS_DIVACAPI | CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI & !CONFIG_ISDN_DIVAS
DIVA_DIDD_Read: (*struct {Map()}, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI at l/drivers/isdn/hardware/eicon/capifunc:0:0
DIVA_DIDD_Read: (*void, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS at l/drivers/isdn/hardware/eicon/diva_didd:0:0, l/drivers/isdn/hardware/eicon/divasfunc:0:0
* DIVA_DIDD_Read when !CONFIG_ISDN | CONFIG_ISDN & !CONFIG_CAPI_EICON | CONFIG_ISDN & CONFIG_CAPI_EICON & !CONFIG_ISDN_DIVAS_DIVACAPI | CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI & !CONFIG_ISDN_DIVAS_MAINT & !CONFIG_ISDN_DIVAS_USERIDI
DIVA_DIDD_Read: (*struct {Map()}, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_DIVACAPI at l/drivers/isdn/hardware/eicon/capifunc:0:0
DIVA_DIDD_Read: (*void, signed int) => void if CONFIG_ISDN & CONFIG_CAPI_EICON & !CONFIG_ISDN_DIVAS_MAINT & CONFIG_ISDN_DIVAS_USERIDI | CONFIG_ISDN & CONFIG_CAPI_EICON & CONFIG_ISDN_DIVAS_MAINT at l/drivers/isdn/hardware/eicon/idifunc:0:0, l/drivers/isdn/hardware/eicon/mntfunc:0:0
total composition time: 505
parameter inferred as method (BUG in TypeChef):
** processing mm **
parsing61 files
composing
* end_io when !CONFIG_X86_32 & !CONFIG_BLOCK | !CONFIG_X86_32 & CONFIG_BLOCK & !CONFIG_SWAP | CONFIG_X86_32
end_io: (*struct bio, signed int) => void if CONFIG_BLOCK & CONFIG_SWAP at l/mm/page_io:0:0
end_io: (*struct kiocb, signed long long, signed long, *void) => void if !CONFIG_X86_32 & CONFIG_BLOCK at l/mm/readahead:0:0, l/mm/shmem:0:0
* end_io when !CONFIG_X86_32 | CONFIG_X86_32 & !CONFIG_BLOCK | CONFIG_X86_32 & CONFIG_BLOCK & !CONFIG_SWAP
end_io: (*struct bio, signed int) => void if CONFIG_BLOCK & CONFIG_SWAP at l/mm/page_io:0:0
end_io: (*struct kiocb, signed long long, signed int, *void) => void if CONFIG_X86_32 & CONFIG_BLOCK at l/mm/readahead:0:0, l/mm/shmem:0:0
total composition time: 940
weak export, not implemented yet ( BUG in TypeChef, see bug ckaestne/TypeChef#17):
** processing arch/x86/kernel **
parsing76 files
composing
* mach_reboot_fixups when !CONFIG_X86_REBOOTFIXUPS
mach_reboot_fixups: (void) => void if True at l/arch/x86/kernel/reboot:0:0
mach_reboot_fixups: (void) => void if CONFIG_X86_REBOOTFIXUPS at l/arch/x86/kernel/reboot_fixups_32:0:0
total composition time: 328
there is first a static prototype declaration and subsequently a nonstatic function definition. apparently the static from the prototype has an effect on the actual function, so the function is not exported. (TypeChef bug)
** processing drivers/mtd/devices **
parsing13 files
composing
* doc_erase when !CONFIG_MTD | CONFIG_MTD & !CONFIG_MTD_DOC2001 | CONFIG_MTD & CONFIG_MTD_DOC2001 & !CONFIG_MTD_DOC2001PLUS
doc_erase: (*struct mtd_info, *struct erase_info) => signed int if CONFIG_MTD & CONFIG_MTD_DOC2001 at l/drivers/mtd/devices/doc2001:0:0
doc_erase: (*struct mtd_info, *struct erase_info) => signed int if CONFIG_MTD & CONFIG_MTD_DOC2001PLUS at l/drivers/mtd/devices/doc2001plus:0:0
total composition time: 199
can only be selected as modules, thus it's a feature-model-extraction problem
** processing drivers/staging/hv **
parsing16 files
composing
* StorVscInitialize when !CONFIG_STAGING | CONFIG_STAGING & !CONFIG_HYPERV | CONFIG_STAGING & CONFIG_HYPERV & !CONFIG_HYPERV_BLOCK | CONFIG_STAGING & CONFIG_HYPERV & CONFIG_HYPERV_BLOCK & !CONFIG_HYPERV_STORAGE
StorVscInitialize: (*struct hv_driver) => signed int if CONFIG_STAGING & CONFIG_HYPERV & CONFIG_HYPERV_BLOCK at l/drivers/staging/hv/BlkVsc:0:0
StorVscInitialize: (*struct hv_driver) => signed int if CONFIG_STAGING & CONFIG_HYPERV & CONFIG_HYPERV_STORAGE at l/drivers/staging/hv/StorVsc:0:0
total composition time: 180
confirmed feature model extraction problem
** processing drivers/usb/gadget **
parsing19 files
composing
* usb_find_endpoint when !CONFIG_USB_GADGET | CONFIG_USB_GADGET & !CONFIG_USB_AUDIO | CONFIG_USB_GADGET & CONFIG_USB_AUDIO & !CONFIG_USB_CDC_COMPOSITE
usb_find_endpoint: (**struct usb_descriptor_header, **struct usb_descriptor_header, *struct usb_endpoint_descriptor) => *struct usb_endpoint_descriptor if CONFIG_USB_GADGET & CONFIG_USB_AUDIO at l/drivers/usb/gadget/audio:0:0
usb_find_endpoint: (**struct usb_descriptor_header, **struct usb_descriptor_header, *struct usb_endpoint_descriptor) => *struct usb_endpoint_descriptor if CONFIG_USB_GADGET & CONFIG_USB_CDC_COMPOSITE at l/drivers/usb/gadget/cdc2:0:0
function type normalization again
** processing arch/x86/xen **
parsing11 files
composing
* xen_init_irq_ops when !CONFIG_XEN
xen_init_irq_ops: (void) => void if CONFIG_XEN at l/arch/x86/xen/enlighten:0:0
xen_init_irq_ops: () => void if CONFIG_XEN at l/arch/x86/xen/irq:0:0
total composition time: 213