[coreboot] [RFC] Error out on implicit declarations
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Mon Dec 22 16:48:06 CET 2008
On 18.12.2008 15:52, Jordan Crouse wrote:
> Myles Watson wrote:
>> On Thu, Dec 18, 2008 at 3:18 AM, Carl-Daniel Hailfinger <
>> c-d.hailfinger.devel.2006 at gmx.net> 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.. :)
Fix implicit declarations of get_bus_conf.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
abuild tested.
--- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/h8dmr/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/h8dmr/mptable.c (Arbeitskopie)
@@ -33,6 +33,8 @@
extern unsigned char bus_pcix[3]; // under bus_mcp55_2
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/h8dmr/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/supermicro/h8dmr/irq_tables.c (Arbeitskopie)
@@ -53,6 +53,8 @@
extern unsigned char bus_isa;
extern unsigned char bus_mcp55[8]; //1
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/m57sli/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/m57sli/mptable.c (Arbeitskopie)
@@ -33,6 +33,8 @@
extern unsigned bus_type[256];
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/m57sli/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/m57sli/irq_tables.c (Arbeitskopie)
@@ -53,6 +53,8 @@
extern unsigned char bus_isa;
extern unsigned char bus_mcp55[8]; //1
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/ga_2761gxdk/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/gigabyte/ga_2761gxdk/irq_tables.c (Arbeitskopie)
@@ -55,6 +55,8 @@
extern unsigned char bus_isa;
extern unsigned char bus_sis966[8]; //1
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912/mptable.c (Arbeitskopie)
@@ -29,6 +29,8 @@
#include "mb_sysconf.h"
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912/irq_tables.c (Arbeitskopie)
@@ -52,6 +52,8 @@
pirq_info->rfu = rfu;
}
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912_fam10/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912_fam10/mptable.c (Arbeitskopie)
@@ -29,6 +29,8 @@
#include "mb_sysconf.h"
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912_fam10/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/tyan/s2912_fam10/irq_tables.c (Arbeitskopie)
@@ -52,6 +52,8 @@
pirq_info->rfu = rfu;
}
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms9282/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms9282/mptable.c (Arbeitskopie)
@@ -32,6 +32,8 @@
#include "mb_sysconf.h"
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms9282/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms9282/irq_tables.c (Arbeitskopie)
@@ -55,6 +55,8 @@
pirq_info->rfu = rfu;
}
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms7260/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms7260/mptable.c (Arbeitskopie)
@@ -31,6 +31,8 @@
extern unsigned apicid_mcp55;
extern unsigned bus_type[256];
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms7260/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/msi/ms7260/irq_tables.c (Arbeitskopie)
@@ -49,6 +49,8 @@
extern unsigned char bus_isa;
extern unsigned char bus_mcp55[8]; // 1
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
struct irq_routing_table *pirq;
--- LinuxBIOSv2-implicit_declarations/src/mainboard/sunw/ultra40/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/sunw/ultra40/mptable.c (Arbeitskopie)
@@ -32,6 +32,8 @@
extern unsigned sbdn3;
extern unsigned sbdnb;
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/sunw/ultra40/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/sunw/ultra40/irq_tables.c (Arbeitskopie)
@@ -51,6 +51,8 @@
extern unsigned sbdn3;
extern unsigned sbdnb;
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--- LinuxBIOSv2-implicit_declarations/src/mainboard/nvidia/l1_2pvv/mptable.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/nvidia/l1_2pvv/mptable.c (Arbeitskopie)
@@ -29,6 +29,8 @@
#include "mb_sysconf.h"
+extern void get_bus_conf(void);
+
void *smp_write_config_table(void *v)
{
static const char sig[4] = "PCMP";
--- LinuxBIOSv2-implicit_declarations/src/mainboard/nvidia/l1_2pvv/irq_tables.c (Revision 3829)
+++ LinuxBIOSv2-implicit_declarations/src/mainboard/nvidia/l1_2pvv/irq_tables.c (Arbeitskopie)
@@ -52,6 +52,8 @@
pirq_info->rfu = rfu;
}
+extern void get_bus_conf(void);
+
unsigned long write_pirq_routing_table(unsigned long addr)
{
--
http://www.hailfinger.org/
More information about the coreboot
mailing list