On Tue, Jan 12, 2010 at 10:41:41AM +0100, Michael Karcher wrote: > This is not just for fun. We hit a real bug on BSD with the outl macros. > The macro variable tmp collided with the tmp from outer scope. > > second revision, now also taking care of inb/inw/inl. While that shadowing > did not introduce bugs (yet), of course it breaks the build on BSD when > -Wshadow is enabled. > > Signed-off-by: Michael Karcher <[email protected]> > --- > Makefile | 2 +- > cbtable.c | 8 ++++---- > cli_classic.c | 1 - > flash.h | 1 - > hwaccess.h | 12 ++++++------ > 5 files changed, 11 insertions(+), 13 deletions(-) > > diff --git a/Makefile b/Makefile > index 423e315..501f65a 100644 > --- a/Makefile > +++ b/Makefile > @@ -25,7 +25,7 @@ INSTALL = install > DIFF = diff > PREFIX ?= /usr/local > MANDIR ?= $(PREFIX)/share/man > -CFLAGS ?= -Os -Wall -Werror > +CFLAGS ?= -Os -Wall -Werror -Wshadow > EXPORTDIR ?= . > > OS_ARCH = $(shell uname) > diff --git a/cbtable.c b/cbtable.c > index 2bc1bfa..2611a62 100644 > --- a/cbtable.c > +++ b/cbtable.c > @@ -50,7 +50,7 @@ static unsigned long compute_checksum(void *addr, unsigned > long length) > volatile union { > uint8_t byte[2]; > uint16_t word; > - } value; > + } chksum; > unsigned long sum; > unsigned long i; > > @@ -72,10 +72,10 @@ static unsigned long compute_checksum(void *addr, > unsigned long length) > sum = (sum + (sum >> 16)) & 0xFFFF; > } > } > - value.byte[0] = sum & 0xff; > - value.byte[1] = (sum >> 8) & 0xff; > + chksum.byte[0] = sum & 0xff; > + chksum.byte[1] = (sum >> 8) & 0xff; > > - return (~value.word) & 0xFFFF; > + return (~chksum.word) & 0xFFFF; > } > > #define for_each_lbrec(head, rec) \ > diff --git a/cli_classic.c b/cli_classic.c > index d3e7a15..6cb0578 100644 > --- a/cli_classic.c > +++ b/cli_classic.c > @@ -150,7 +150,6 @@ int cli_classic(int argc, char *argv[]) > > if (argc > 1) { > /* Yes, print them. */ > - int i; > printf_debug("The arguments are:\n"); > for (i = 1; i < argc; ++i) > printf_debug("%s\n", argv[i]); > diff --git a/flash.h b/flash.h > index 069b903..9a25c70 100644 > --- a/flash.h > +++ b/flash.h > @@ -297,7 +297,6 @@ void internal_delay(int usecs); > > extern uint32_t io_base_addr; > extern struct pci_access *pacc; > -extern struct pci_filter filter; > extern struct pci_dev *pcidev_dev; > struct pcidev_status { > uint16_t vendor_id; > diff --git a/hwaccess.h b/hwaccess.h > index 2bc2927..0729226 100644 > --- a/hwaccess.h > +++ b/hwaccess.h > @@ -46,12 +46,12 @@ > #include <machine/cpufunc.h> > #define off64_t off_t > #define lseek64 lseek > - #define OUTB(x, y) do { u_int tmp = (y); outb(tmp, (x)); } while (0) > - #define OUTW(x, y) do { u_int tmp = (y); outw(tmp, (x)); } while (0) > - #define OUTL(x, y) do { u_int tmp = (y); outl(tmp, (x)); } while (0) > - #define INB(x) __extension__ ({ u_int tmp = (x); inb(tmp); }) > - #define INW(x) __extension__ ({ u_int tmp = (x); inw(tmp); }) > - #define INL(x) __extension__ ({ u_int tmp = (x); inl(tmp); }) > + #define OUTB(x, y) do { u_int outb_tmp = (y); outb(outb_tmp, (x)); } while > (0) > + #define OUTW(x, y) do { u_int outw_tmp = (y); outw(outw_tmp, (x)); } while > (0) > + #define OUTL(x, y) do { u_int outl_tmp = (y); outl(outl_tmp, (x)); } while > (0) > + #define INB(x) __extension__ ({ u_int inb_tmp = (x); inb(inb_tmp); }) > + #define INW(x) __extension__ ({ u_int inw_tmp = (x); inw(inw_tmp); }) > + #define INL(x) __extension__ ({ u_int inl_tmp = (x); inl(inl_tmp); }) > #else > #if defined(__DARWIN__) > #include <DirectIO/darwinio.h> > -- > 1.6.5 > > > _______________________________________________ > flashrom mailing list > [email protected] > http://www.flashrom.org/mailman/listinfo/flashrom
Acked-by: Luc Verhaegen <[email protected]> Luc Verhaegen. _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
