summaryrefslogtreecommitdiff
path: root/util/cbfstool
diff options
context:
space:
mode:
Diffstat (limited to 'util/cbfstool')
-rw-r--r--util/cbfstool/cbfs.h27
-rw-r--r--util/cbfstool/compiler.h28
-rw-r--r--util/cbfstool/fit.c7
-rw-r--r--util/cbfstool/flashmap/fmap.h6
-rw-r--r--util/cbfstool/ifwitool.c19
-rw-r--r--util/cbfstool/linux.h2
-rw-r--r--util/cbfstool/lz4/lib/lz4.c2
-rw-r--r--util/cbfstool/lz4/lib/xxhash.c2
8 files changed, 59 insertions, 34 deletions
diff --git a/util/cbfstool/cbfs.h b/util/cbfstool/cbfs.h
index 451ef9fd8b..f7b5f917e7 100644
--- a/util/cbfstool/cbfs.h
+++ b/util/cbfstool/cbfs.h
@@ -18,6 +18,7 @@
#include "common.h"
#include <stdint.h>
+#include <compiler.h>
#include <vb2_api.h>
@@ -36,12 +37,6 @@
#define makemagic(b3, b2, b1, b0)\
(((b3)<<24) | ((b2) << 16) | ((b1) << 8) | (b0))
-#if defined(__WIN32) || defined(__WIN64)
-#define __PACKED __attribute__((gcc_struct, packed))
-#else
-#define __PACKED __attribute__((packed))
-#endif
-
/* To make CBFS more friendly to ROM, fill -1 (0xFF) instead of zero. */
#define CBFS_CONTENT_DEFAULT_VALUE (-1)
@@ -65,7 +60,7 @@ struct cbfs_header {
uint32_t offset;
uint32_t architecture; /* Version 2 */
uint32_t pad[1];
-} __PACKED;
+} __packed;
#define CBFS_ARCHITECTURE_UNKNOWN 0xFFFFFFFF
#define CBFS_ARCHITECTURE_X86 0x00000001
@@ -87,7 +82,7 @@ struct cbfs_file {
/* length of header incl. variable data */
uint32_t offset;
char filename[];
-} __PACKED;
+} __packed;
#if defined __GNUC__ && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
_Static_assert(sizeof(struct cbfs_file) == 24, "cbfs_file size mismatch");
@@ -101,7 +96,7 @@ struct cbfs_file_attribute {
/* len covers the whole structure, incl. tag and len */
uint32_t len;
uint8_t data[0];
-} __PACKED;
+} __packed;
/* Depending on how the header was initialized, it may be backed with 0x00 or
* 0xff. Support both. */
@@ -118,7 +113,7 @@ struct cbfs_file_attr_compression {
/* whole file compression format. 0 if no compression. */
uint32_t compression;
uint32_t decompressed_size;
-} __PACKED;
+} __packed;
struct cbfs_file_attr_hash {
uint32_t tag;
@@ -126,19 +121,19 @@ struct cbfs_file_attr_hash {
uint32_t hash_type;
/* hash_data is len - sizeof(struct) bytes */
uint8_t hash_data[];
-} __PACKED;
+} __packed;
struct cbfs_file_attr_position {
uint32_t tag;
uint32_t len;
uint32_t position;
-} __PACKED;
+} __packed;
struct cbfs_file_attr_align {
uint32_t tag;
uint32_t len;
uint32_t alignment;
-} __PACKED;
+} __packed;
struct cbfs_stage {
uint32_t compression;
@@ -146,7 +141,7 @@ struct cbfs_stage {
uint64_t load;
uint32_t len;
uint32_t memlen;
-} __PACKED;
+} __packed;
#define PAYLOAD_SEGMENT_CODE makemagic('C', 'O', 'D', 'E')
#define PAYLOAD_SEGMENT_DATA makemagic('D', 'A', 'T', 'A')
@@ -161,11 +156,11 @@ struct cbfs_payload_segment {
uint64_t load_addr;
uint32_t len;
uint32_t mem_len;
-} __PACKED;
+} __packed;
struct cbfs_payload {
struct cbfs_payload_segment segments;
-} __PACKED;
+} __packed;
/** These are standard component types for well known
components (i.e - those that coreboot needs to consume.
diff --git a/util/cbfstool/compiler.h b/util/cbfstool/compiler.h
new file mode 100644
index 0000000000..f218725086
--- /dev/null
+++ b/util/cbfstool/compiler.h
@@ -0,0 +1,28 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2017 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __COMPILER_H__
+#define __COMPILER_H__
+
+#if defined(__WIN32) || defined(__WIN64)
+#define __packed __attribute__((gcc_struct, packed))
+#else
+#define __packed __attribute__((packed))
+#endif
+
+#define __aligned(x) __attribute__((aligned(x)))
+#define __always_unused __attribute__((unused))
+
+#endif
diff --git a/util/cbfstool/fit.c b/util/cbfstool/fit.c
index 6de311c75d..e3e6c32a6f 100644
--- a/util/cbfstool/fit.c
+++ b/util/cbfstool/fit.c
@@ -17,6 +17,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <compiler.h>
#include "fit.h"
@@ -37,12 +38,12 @@ struct fit_entry {
uint16_t version;
uint8_t type_checksum_valid;
uint8_t checksum;
-} __attribute__ ((packed));
+} __packed;
struct fit_table {
struct fit_entry header;
struct fit_entry entries[];
-} __attribute__ ((packed));
+} __packed;
struct microcode_header {
uint32_t version;
@@ -55,7 +56,7 @@ struct microcode_header {
uint32_t data_size;
uint32_t total_size;
uint8_t reserved[12];
-} __attribute__ ((packed));
+} __packed;
struct microcode_entry {
int offset;
diff --git a/util/cbfstool/flashmap/fmap.h b/util/cbfstool/flashmap/fmap.h
index 30ceb29247..017d332ef9 100644
--- a/util/cbfstool/flashmap/fmap.h
+++ b/util/cbfstool/flashmap/fmap.h
@@ -37,7 +37,7 @@
#define FLASHMAP_LIB_FMAP_H__
#include <inttypes.h>
-
+#include <compiler.h>
#include <valstr.h>
#define FMAP_SIGNATURE "__FMAP__"
@@ -58,7 +58,7 @@ struct fmap_area {
uint32_t size; /* size in bytes */
uint8_t name[FMAP_STRLEN]; /* descriptive name */
uint16_t flags; /* flags for this area */
-} __attribute__((packed));
+} __packed;
struct fmap {
uint8_t signature[8]; /* "__FMAP__" (0x5F5F464D41505F5F) */
@@ -70,7 +70,7 @@ struct fmap {
uint16_t nareas; /* number of areas described by
fmap_areas[] below */
struct fmap_area areas[];
-} __attribute__((packed));
+} __packed;
/*
* fmap_find - find FMAP signature in a binary image
diff --git a/util/cbfstool/ifwitool.c b/util/cbfstool/ifwitool.c
index 32d09ca6c8..c427339a48 100644
--- a/util/cbfstool/ifwitool.c
+++ b/util/cbfstool/ifwitool.c
@@ -17,6 +17,7 @@
#include <getopt.h>
#include <stdlib.h>
#include <time.h>
+#include <compiler.h>
#include "common.h"
@@ -59,7 +60,7 @@ struct bpdt_header {
uint32_t ifwi_version;
/* Version of FIT tool used to create IFWI. */
uint64_t fit_tool_version;
-} __attribute__((packed));
+} __packed;
#define BPDT_HEADER_SIZE (sizeof(struct bpdt_header))
struct bpdt_entry {
@@ -71,14 +72,14 @@ struct bpdt_entry {
uint32_t offset;
/* Size in bytes of sub-partition. */
uint32_t size;
-} __attribute__((packed));
+} __packed;
#define BPDT_ENTRY_SIZE (sizeof(struct bpdt_entry))
struct bpdt {
struct bpdt_header h;
/* In practice, this could be an array of 0 to n entries. */
struct bpdt_entry e[0];
-} __attribute__((packed));
+} __packed;
static inline size_t get_bpdt_size(struct bpdt_header *h)
{
@@ -107,7 +108,7 @@ struct subpart_dir_header {
uint8_t checksum;
/* ASCII short name of sub-partition. */
uint8_t name[4];
-} __attribute__((packed));
+} __packed;
#define SUBPART_DIR_HEADER_SIZE \
(sizeof(struct subpart_dir_header))
#define SUBPART_DIR_MARKER 0x44504324
@@ -124,7 +125,7 @@ struct subpart_dir_entry {
uint32_t length;
/* Must be zero. */
uint32_t rsvd;
-} __attribute__((packed));
+} __packed;
#define SUBPART_DIR_ENTRY_SIZE \
(sizeof(struct subpart_dir_entry))
@@ -132,7 +133,7 @@ struct subpart_dir {
struct subpart_dir_header h;
/* In practice, this could be an array of 0 to n entries. */
struct subpart_dir_entry e[0];
-} __attribute__((packed));
+} __packed;
static inline size_t subpart_dir_size(struct subpart_dir_header *h)
{
@@ -158,7 +159,7 @@ struct manifest_header {
uint8_t public_key[256];
uint32_t exponent;
uint8_t signature[256];
-} __attribute__((packed));
+} __packed;
#define DWORD_SIZE 4
#define MANIFEST_HDR_SIZE (sizeof(struct manifest_header))
@@ -171,7 +172,7 @@ struct module {
uint16_t hash_size;
uint32_t metadata_size;
uint8_t metadata_hash[32];
-} __attribute__((packed));
+} __packed;
#define MODULE_SIZE (sizeof(struct module))
@@ -183,7 +184,7 @@ struct signed_pkg_info_ext {
uint8_t bitmap[16];
uint32_t svn;
uint8_t rsvd[16];
-} __attribute__((packed));
+} __packed;
#define SIGNED_PKG_INFO_EXT_TYPE 0x15
#define SIGNED_PKG_INFO_EXT_SIZE \
diff --git a/util/cbfstool/linux.h b/util/cbfstool/linux.h
index 2fd2d4d32a..249c7d7d54 100644
--- a/util/cbfstool/linux.h
+++ b/util/cbfstool/linux.h
@@ -89,7 +89,7 @@ struct linux_header {
/* 2.10+ */
u64 pref_address; /* 0x258 */
u32 init_size; /* 0x260 */
-} __attribute__ ((packed));
+} __packed;
/* Paramters passed to 32-bit part of Linux
* This is another view of the structure above.. */
diff --git a/util/cbfstool/lz4/lib/lz4.c b/util/cbfstool/lz4/lib/lz4.c
index 8512452b3d..9c9a9a0d00 100644
--- a/util/cbfstool/lz4/lib/lz4.c
+++ b/util/cbfstool/lz4/lib/lz4.c
@@ -176,7 +176,7 @@ static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; }
/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
/* currently only defined for gcc and icc */
-typedef union { U16 u16; U32 u32; size_t uArch; } __attribute__((packed)) unalign;
+typedef union { U16 u16; U32 u32; size_t uArch; } __packed unalign;
static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
diff --git a/util/cbfstool/lz4/lib/xxhash.c b/util/cbfstool/lz4/lib/xxhash.c
index 511d9941a2..ed9f8ed2e9 100644
--- a/util/cbfstool/lz4/lib/xxhash.c
+++ b/util/cbfstool/lz4/lib/xxhash.c
@@ -146,7 +146,7 @@ static U64 XXH_read64(const void* memPtr) { return *(const U64*) memPtr; }
/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
/* currently only defined for gcc and icc */
-typedef union { U32 u32; U64 u64; } __attribute__((packed)) unalign;
+typedef union { U32 u32; U64 u64; } __packed unalign;
static U32 XXH_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
static U64 XXH_read64(const void* ptr) { return ((const unalign*)ptr)->u64; }