[flashrom] [PATCH] C99 cleanliness

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Thu Oct 7 02:52:43 CEST 2010


On 07.10.2010 00:25, Idwer Vollering wrote:
> 2010/10/7 Uwe Hermann <uwe at hermann-uwe.de>
>   
>> flashrom.c:1351: error: ‘for’ loop initial declarations are only allowed in
>> C99 mode
>> flashrom.c:1351: note: use option -std=c99 or -std=gnu99 to compile your
>> code
>> make: *** [flashrom.o] Error 1
>>
>>
>> I think this is the culprit:
>>
>>  for (int i = 0; i < startcol; i++)
>>          printf(" ");
>>
>> Moving the "int i;" to the top of the function should fix it.
>>     
>
> I think this is a better fix than this:
>
> Index: Makefile
> ===================================================================
> --- Makefile    (revision 1196)
> +++ Makefile    (working copy)
> @@ -26,7 +26,7 @@
>  DIFF    = diff
>  PREFIX  ?= /usr/local
>  MANDIR  ?= $(PREFIX)/share/man
> -CFLAGS  ?= -Os -Wall -Wshadow
> +CFLAGS  ?= -Os -Wall -Wshadow -std=c99
>  EXPORTDIR ?= .
>
>  WARNERROR ?= yes
>
>
> The above, with the patch in question applied, results in this error:
>
> cc1: warnings being treated as errors
> flashrom.c: In function ‘doit’:
> flashrom.c:1596: error: implicit declaration of function ‘fileno’
>   

Mh yes, once you switch the mode from gnu99 to c99, you get all sorts of
pretty explosions.
The following patch allows compilation with -std=c99 on my Linux box
with gcc and clang, but I fear it will cause all sorts of funnies on
other operating systems, and especially break on Windows.

This patch is for testing on non-Linux architectures, and _not_ for
immediate merge.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

Index: flashrom-c99_clean/hwaccess.h
===================================================================
--- flashrom-c99_clean/hwaccess.h	(revision 1199)
+++ flashrom-c99_clean/hwaccess.h	(working copy)
@@ -256,37 +256,37 @@
 
 static inline void outb(uint8_t value, uint16_t port)
 {
-	asm volatile ("outb %b0,%w1": :"a" (value), "Nd" (port));
+	__asm__ volatile ("outb %b0,%w1": :"a" (value), "Nd" (port));
 }
 
 static inline uint8_t inb(uint16_t port)
 {
 	uint8_t value;
-	asm volatile ("inb %w1,%0":"=a" (value):"Nd" (port));
+	__asm__ volatile ("inb %w1,%0":"=a" (value):"Nd" (port));
 	return value;
 }
 
 static inline void outw(uint16_t value, uint16_t port)
 {
-	asm volatile ("outw %w0,%w1": :"a" (value), "Nd" (port));
+	__asm__ volatile ("outw %w0,%w1": :"a" (value), "Nd" (port));
 }
 
 static inline uint16_t inw(uint16_t port)
 {
 	uint16_t value;
-	asm volatile ("inw %w1,%0":"=a" (value):"Nd" (port));
+	__asm__ volatile ("inw %w1,%0":"=a" (value):"Nd" (port));
 	return value;
 }
 
 static inline void outl(uint32_t value, uint16_t port)
 {
-	asm volatile ("outl %0,%w1": :"a" (value), "Nd" (port));
+	__asm__ volatile ("outl %0,%w1": :"a" (value), "Nd" (port));
 }
 
 static inline uint32_t inl(uint16_t port)
 {
 	uint32_t value;
-	asm volatile ("inl %1,%0":"=a" (value):"Nd" (port));
+	__asm__ volatile ("inl %1,%0":"=a" (value):"Nd" (port));
 	return value;
 }
   #endif
Index: flashrom-c99_clean/serprog.c
===================================================================
--- flashrom-c99_clean/serprog.c	(revision 1199)
+++ flashrom-c99_clean/serprog.c	(working copy)
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
Index: flashrom-c99_clean/Makefile
===================================================================
--- flashrom-c99_clean/Makefile	(revision 1199)
+++ flashrom-c99_clean/Makefile	(working copy)
@@ -26,7 +26,7 @@
 DIFF    = diff
 PREFIX  ?= /usr/local
 MANDIR  ?= $(PREFIX)/share/man
-CFLAGS  ?= -Os -Wall -Wshadow
+CFLAGS  ?= -Os -Wall -Wshadow -std=c99
 EXPORTDIR ?= .
 
 WARNERROR ?= yes
Index: flashrom-c99_clean/dummyflasher.c
===================================================================
--- flashrom-c99_clean/dummyflasher.c	(revision 1199)
+++ flashrom-c99_clean/dummyflasher.c	(working copy)
@@ -18,6 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <string.h>
 #include <stdlib.h>
 #include <ctype.h>
Index: flashrom-c99_clean/cli_classic.c
===================================================================
--- flashrom-c99_clean/cli_classic.c	(revision 1199)
+++ flashrom-c99_clean/cli_classic.c	(working copy)
@@ -21,6 +21,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <fcntl.h>
 #include <sys/stat.h>
Index: flashrom-c99_clean/dmi.c
===================================================================
--- flashrom-c99_clean/dmi.c	(revision 1199)
+++ flashrom-c99_clean/dmi.c	(working copy)
@@ -18,7 +18,10 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <string.h>
+#include <strings.h>
 #include <stdio.h>
 #include <stdlib.h>
 
Index: flashrom-c99_clean/layout.c
===================================================================
--- flashrom-c99_clean/layout.c	(revision 1199)
+++ flashrom-c99_clean/layout.c	(working copy)
@@ -18,9 +18,12 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <strings.h>
 #include <ctype.h>
 #include "flash.h"
 #include "programmer.h"
Index: flashrom-c99_clean/cbtable.c
===================================================================
--- flashrom-c99_clean/cbtable.c	(revision 1199)
+++ flashrom-c99_clean/cbtable.c	(working copy)
@@ -22,6 +22,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
Index: flashrom-c99_clean/dediprog.c
===================================================================
--- flashrom-c99_clean/dediprog.c	(revision 1199)
+++ flashrom-c99_clean/dediprog.c	(working copy)
@@ -17,6 +17,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <string.h>
 #include <usb.h>
 #include "flash.h"
Index: flashrom-c99_clean/buspirate_spi.c
===================================================================
--- flashrom-c99_clean/buspirate_spi.c	(revision 1199)
+++ flashrom-c99_clean/buspirate_spi.c	(working copy)
@@ -17,8 +17,11 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <string.h>
+#include <strings.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <unistd.h>
Index: flashrom-c99_clean/serial.c
===================================================================
--- flashrom-c99_clean/serial.c	(revision 1199)
+++ flashrom-c99_clean/serial.c	(working copy)
@@ -19,6 +19,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _BSD_SOURCE
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
Index: flashrom-c99_clean/physmap.c
===================================================================
--- flashrom-c99_clean/physmap.c	(revision 1199)
+++ flashrom-c99_clean/physmap.c	(working copy)
@@ -20,6 +20,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
Index: flashrom-c99_clean/spi.c
===================================================================
--- flashrom-c99_clean/spi.c	(revision 1199)
+++ flashrom-c99_clean/spi.c	(working copy)
@@ -22,7 +22,7 @@
  * Contains the generic SPI framework
  */
 
-#include <string.h>
+#include <strings.h>
 #include "flash.h"
 #include "flashchips.h"
 #include "chipdrivers.h"
Index: flashrom-c99_clean/ft2232_spi.c
===================================================================
--- flashrom-c99_clean/ft2232_spi.c	(revision 1199)
+++ flashrom-c99_clean/ft2232_spi.c	(working copy)
@@ -20,8 +20,11 @@
 
 #if CONFIG_FT2232_SPI == 1
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <string.h>
+#include <strings.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include "flash.h"
Index: flashrom-c99_clean/chipset_enable.c
===================================================================
--- flashrom-c99_clean/chipset_enable.c	(revision 1199)
+++ flashrom-c99_clean/chipset_enable.c	(working copy)
@@ -26,6 +26,7 @@
  */
 
 #define _LARGEFILE64_SOURCE
+#define _XOPEN_SOURCE 500
 
 #include <stdlib.h>
 #include <string.h>
Index: flashrom-c99_clean/flashrom.c
===================================================================
--- flashrom-c99_clean/flashrom.c	(revision 1199)
+++ flashrom-c99_clean/flashrom.c	(working copy)
@@ -21,6 +21,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _XOPEN_SOURCE 500
+
 #include <stdio.h>
 #include <sys/types.h>
 #ifndef __LIBPAYLOAD__
Index: flashrom-c99_clean/udelay.c
===================================================================
--- flashrom-c99_clean/udelay.c	(revision 1199)
+++ flashrom-c99_clean/udelay.c	(working copy)
@@ -21,6 +21,8 @@
 
 #ifndef __LIBPAYLOAD__
 
+#define _XOPEN_SOURCE 500
+
 #include <unistd.h>
 #include <sys/time.h>
 #include <stdlib.h>
@@ -35,7 +37,7 @@
 	unsigned long i;
 	for (i = 0; i < usecs * micro; i++) {
 		/* Make sure the compiler doesn't optimize the loop away. */
-		asm volatile ("" : : "rm" (i) );
+		__asm__ volatile ("" : : "rm" (i) );
 	}
 }
 
Index: flashrom-c99_clean/board_enable.c
===================================================================
--- flashrom-c99_clean/board_enable.c	(revision 1199)
+++ flashrom-c99_clean/board_enable.c	(working copy)
@@ -24,7 +24,7 @@
  * Contains the board specific flash enables.
  */
 
-#include <string.h>
+#include <strings.h>
 #include "flash.h"
 #include "programmer.h"
 


-- 
http://www.hailfinger.org/





More information about the flashrom mailing list