On 18.12.2008 19:33, Myles Watson wrote: > On Thu, Dec 18, 2008 at 11:08 AM, Marc Jones <[email protected]> wrote: > >> On Thu, Dec 18, 2008 at 10:22 AM, Myles Watson <[email protected]> wrote: >> >>> On Thu, Dec 18, 2008 at 7:52 AM, Jordan Crouse <[email protected] >>> >>> wrote: >>> >>>> Myles Watson wrote: >>>> >>>>> On Thu, Dec 18, 2008 at 3:18 AM, Carl-Daniel Hailfinger < >>>>> [email protected]> wrote: >>>>> >>>>> >>>>>> Bao, Zheng found a bug which killed SATA booting on my board. >>>>>> >>>>>> This happened because we do not error out on implicit function >>>>>> declarations. The linker has no way of checking whether the implicitly >>>>>> assumed function signature is identical to the real signature, so >>>>>> mismatches can occur and these mismatches are practically impossible >>>>>> to debug because the code looks completely correct. >>>>>> >>>>>> Adding -Werror-implicit-function-declaration to our CFLAGS would solve >>>>>> this problem nicely, but a lot of files in the tree need to be fixed. >>>>>> >>>>>> >>>>> I think this is a great idea. Isn't the correct order to fix all the >>>>> warnings, then make it an error? >>>>> >>>> Yeah - the unfortunate thing about changes like this is that you end up >>>> being responsible for fixing the errors.. :) >>>> >>> >>>> Carl-Daniel - if you post a list of offending files, we'll all help >>>> clear them up. Dumping the log through grep "implicit >>>> declaration of function" should suffice. >>>> > I'm attaching a patch which I thought was trivial, but breaks things all > over the place. I'm not sure how this will need to be done. It looks like > a problem with romcc vs. CAR. >
Try this patch. It passes abuild. Regards, Carl-Daniel Fix implicit declarations of pci_read_config8 and pci_write_config8 in the following files: src/mainboard/intel/jarrell/reset.c src/mainboard/supermicro/x6dai_g/reset.c src/mainboard/supermicro/x6dhe_g2/reset.c src/mainboard/supermicro/x6dhe_g/reset.c src/mainboard/supermicro/x6dhr_ig2/reset.c src/mainboard/supermicro/x6dhr_ig/reset.c Signed-off-by: Carl-Daniel Hailfinger <[email protected]> Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 -- http://www.hailfinger.org/
Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dai_g/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhe_g2/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/x6dhr_ig2/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0 Index: LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c =================================================================== --- LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c (Revision 3829) +++ LinuxBIOSv2-implicit_declarations/src/mainboard/intel/jarrell/reset.c (Arbeitskopie) @@ -3,6 +3,8 @@ #include <device/pci_ids.h> #ifndef __ROMCC__ #include <device/device.h> +#include <device/pci.h> +#include <device/pci_ops.h> #define PCI_ID(VENDOR_ID, DEVICE_ID) \ ((((DEVICE_ID) & 0xFFFF) << 16) | ((VENDOR_ID) & 0xFFFF)) #define PCI_DEV_INVALID 0
-- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

