From ade6151a678c59e270c89bcca37f61cfdd41700d Mon Sep 17 00:00:00 2001 From: Idwer Vollering Date: Fri, 28 Aug 2020 23:16:28 +0200 Subject: portability fixes: support building vboot on FreeBSD Built on FreeBSD 12.1-RELEASE, 13-CURRENT, using gcc9 installed from packages. Change-Id: Ifa8bb343c7e916c1b545cf6c1e4bd0a18ea391cd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2382790 Reviewed-by: Julius Werner Tested-by: Julius Werner Commit-Queue: Julius Werner --- cgpt/cgpt.h | 2 +- cgpt/cgpt_common.c | 6 +++--- cgpt/cgpt_endian.h | 4 +++- cgpt/cgpt_nor.c | 2 ++ cgpt/cgpt_wrapper.c | 13 +++++++++---- 5 files changed, 18 insertions(+), 9 deletions(-) (limited to 'cgpt') diff --git a/cgpt/cgpt.h b/cgpt/cgpt.h index 23f2f90c..0747b5ce 100644 --- a/cgpt/cgpt.h +++ b/cgpt/cgpt.h @@ -7,7 +7,7 @@ #define VBOOT_REFERENCE_CGPT_H_ #include -#ifndef HAVE_MACOS +#if !defined(HAVE_MACOS) && !defined(__FreeBSD__) #include #endif #include diff --git a/cgpt/cgpt_common.c b/cgpt/cgpt_common.c index 2ace9002..426be3b8 100644 --- a/cgpt/cgpt_common.c +++ b/cgpt/cgpt_common.c @@ -9,7 +9,7 @@ #include #include #include -#ifndef HAVE_MACOS +#if !defined(HAVE_MACOS) && !defined(__FreeBSD__) #include #include #endif @@ -295,7 +295,7 @@ static int ObtainDriveSize(int fd, uint64_t* size, uint32_t* sector_bytes) { if (fstat(fd, &stat) == -1) { return -1; } -#ifndef HAVE_MACOS +#if !defined(HAVE_MACOS) && !defined(__FreeBSD__) if ((stat.st_mode & S_IFMT) != S_IFREG) { if (ioctl(fd, BLKGETSIZE64, size) < 0) { return -1; @@ -325,7 +325,7 @@ int DriveOpen(const char *drive_path, struct drive *drive, int mode, memset(drive, 0, sizeof(struct drive)); drive->fd = open(drive_path, mode | -#ifndef HAVE_MACOS +#if !defined(HAVE_MACOS) && !defined(__FreeBSD__) O_LARGEFILE | #endif O_NOFOLLOW); diff --git a/cgpt/cgpt_endian.h b/cgpt/cgpt_endian.h index a40b2c18..f59ab1b2 100644 --- a/cgpt/cgpt_endian.h +++ b/cgpt/cgpt_endian.h @@ -7,8 +7,10 @@ #define VBOOT_REFERENCE_CGPT_ENDIAN_H_ // Newer distros already have this. For those that don't, we add it here. -#ifndef HAVE_MACOS +#if !defined(HAVE_MACOS) && !defined(__FreeBSD__) #include +#elif defined(__FreeBSD__) +#include #endif #ifndef le16toh diff --git a/cgpt/cgpt_nor.c b/cgpt/cgpt_nor.c index f8b361f8..fd184463 100644 --- a/cgpt/cgpt_nor.c +++ b/cgpt/cgpt_nor.c @@ -8,7 +8,9 @@ #include #include #include +#if !defined(__FreeBSD__) #include +#endif #include #include #include diff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c index 2b473835..d26682dd 100644 --- a/cgpt/cgpt_wrapper.c +++ b/cgpt/cgpt_wrapper.c @@ -11,14 +11,18 @@ #include #include #include +#if !defined(__FreeBSD__) #include +#endif #include #include #include #include #include #include +#if !defined(__FreeBSD__) #include +#endif #include #include @@ -49,11 +53,12 @@ static bool is_mtd(const char *device_path) { return false; } - if (major(stat.st_rdev) != MTD_CHAR_MAJOR) { - return false; +#if !defined(__FreeBSD__) + if (major(stat.st_rdev) == MTD_CHAR_MAJOR) { + return true; } - - return true; +#endif + return false; } // Return the element in |argv| that is an MTD device. -- cgit v1.2.1