[flashrom] [commit] r1898 - trunk

repository service svn at flashrom.org
Sat Nov 14 03:55:12 CET 2015


Author: stefanct
Date: Sat Nov 14 03:55:12 2015
New Revision: 1898
URL: http://flashrom.org/trac/flashrom/changeset/1898

Log:
Add (implicit) support for musl libc.

This is mostly achieved by fixing or refining the inclusion of header
files and replacing glibc-specific ifdefs with more generic ones.

 - <sys/io.h>: Contains iopl(2) and x86 I/O port access functions (inb, outb etc).
               Generally Linux-specific but also availble on debian/kFreeBSD.
               Provided by glibc as well as musl and uclibc.
               Include it if we are running Linux or if glibc is detected.
 - <sys/fcntl.h>: should be (and is) replaced by <fcntl.h> (without the
    			  "sys" prefix).
 - <linux/spi/spidev.h>: Does not include all necessary headers, namely
                         _IOC_SIZEBITS that is used in the definition of
                         SPI_MSGSIZE is not brought in via <linux/ioctl.h>
                         but instead we relied so far on glibc's including
                         it via <sys/ioctl.h>. Change that to explicitly
                         including <linux/ioctl.h>.
 - <endian.h>: Would also be available in musl but there is no easy way
               to detect it so we do not try yet.

The bug report and initial patches were
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou at trabucayre.com>

Signed-off-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>
Acked-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>

Modified:
   trunk/hwaccess.h
   trunk/linux_spi.c

Modified: trunk/hwaccess.h
==============================================================================
--- trunk/hwaccess.h	Fri Oct 16 04:16:20 2015	(r1897)
+++ trunk/hwaccess.h	Sat Nov 14 03:55:12 2015	(r1898)
@@ -26,12 +26,6 @@
 
 #include "platform.h"
 
-#if IS_X86
-#if defined(__GLIBC__)
-#include <sys/io.h>
-#endif
-#endif
-
 #if NEED_PCI == 1
 /*
  * libpci headers use the variable name "index" which triggers shadowing
@@ -115,6 +109,7 @@
 #if !defined (__FLASHROM_BIG_ENDIAN__) && !defined (__FLASHROM_LITTLE_ENDIAN__)
 
 /* Nonstandard libc-specific macros for determining endianness. */
+/* musl provides an endian.h as well... but it can not be detected from within C. */
 #if defined(__GLIBC__)
 #include <endian.h>
 #if BYTE_ORDER == LITTLE_ENDIAN
@@ -204,6 +199,13 @@
 #if NEED_PCI == 1
 #if IS_X86
 
+/* sys/io.h provides iopl(2) and x86 I/O port access functions (inb, outb etc).
+ * It is included in glibc (thus available also on debian/kFreeBSD) but also in other libcs that mimic glibc,
+ * e.g. musl and uclibc. */
+#if defined(__linux__) || defined(__GLIBC__)
+#include <sys/io.h>
+#endif
+
 #define __FLASHROM_HAVE_OUTB__ 1
 
 /* for iopl and outb under Solaris */

Modified: trunk/linux_spi.c
==============================================================================
--- trunk/linux_spi.c	Fri Oct 16 04:16:20 2015	(r1897)
+++ trunk/linux_spi.c	Sat Nov 14 03:55:12 2015	(r1898)
@@ -22,13 +22,14 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
 #include <errno.h>
 #include <ctype.h>
 #include <unistd.h>
+#include <sys/ioctl.h>
 #include <linux/types.h>
 #include <linux/spi/spidev.h>
-#include <sys/ioctl.h>
+#include <linux/ioctl.h>
 #include "flash.h"
 #include "chipdrivers.h"
 #include "programmer.h"




More information about the flashrom mailing list