mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-02 22:43:17 +02:00
Portability fixes and cleanups
Move Mac OS X IOKit/DirectHW availability checks in the Makefile from compiler check to pciutils check. Print the compiler error messages for feature detection. Add DOS libpci in the Makefile includes only if a PCI-based programmer was requested. Restrict mmap usage in ich_descriptors_tool to Unix style systems. Build ich_descriptors_tool with the correct .exe extension on DOS/Windows. Build ich_descriptors_tool by default on x86. (Patch by Stefan Tauner) Print the Windows version instead of "unknown machine" on Windows. Don't #define our own __DARWIN__, use the standard OS X detection method. Update the README. Add more generated files to svn:ignore Corresponding to flashrom svn r1567. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
@ -25,7 +25,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
@ -33,6 +32,13 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "ich_descriptors.h"
|
||||
/* Some DJGPP builds define __unix__ although they don't support mmap().
|
||||
* Cygwin defines __unix__ and supports mmap(), but it does not work well.
|
||||
*/
|
||||
#if !defined(__MSDOS__) && !defined(_WIN32) && (defined(unix) || defined(__unix__) || defined(__unix)) || (defined(__MACH__) && defined(__APPLE__))
|
||||
#define HAVE_MMAP 1
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
|
||||
static void dump_file(const char *basename, const uint32_t *dump, unsigned int len, struct ich_desc_region *reg, unsigned int i)
|
||||
{
|
||||
@ -161,16 +167,17 @@ int main(int argc, char *argv[])
|
||||
if (len < 0)
|
||||
usage(argv, "Seeking to the end of the file failed");
|
||||
|
||||
#ifdef HAVE_MMAP
|
||||
buf = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
if (buf == (void *) -1) {
|
||||
if (buf == (void *) -1)
|
||||
#endif
|
||||
{
|
||||
/* fallback for stupid OSes like cygwin */
|
||||
int ret;
|
||||
buf = malloc(len);
|
||||
if (!buf)
|
||||
usage(argv, "Could not allocate memory");
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
ret = read(fd, buf, len);
|
||||
if (ret != len)
|
||||
if (len != read(fd, buf, len))
|
||||
usage(argv, "Seeking to the end of the file failed");
|
||||
}
|
||||
printf("The flash image has a size of %d [0x%x] bytes.\n", len, len);
|
||||
|
Reference in New Issue
Block a user