Add gcc_struct to all packed structures when compiling with mingw.

Just "packed" doesn't always pack the way we expect.
This commit is contained in:
Vladimir Serbinenko 2013-12-15 14:14:30 +01:00
parent ae8159b9ca
commit 7e47e27bd8
105 changed files with 403 additions and 391 deletions

View file

@ -36,7 +36,7 @@ struct grub_affs_bblock
grub_uint8_t flags;
grub_uint32_t checksum;
grub_uint32_t rootblock;
} __attribute__ ((packed));
} GRUB_PACKED;
/* Set if the filesystem is a AFFS filesystem. Otherwise this is an
OFS filesystem. */
@ -51,14 +51,14 @@ struct grub_affs_rblock
grub_uint32_t unused2;
grub_uint32_t checksum;
grub_uint32_t hashtable[1];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_affs_time
{
grub_int32_t day;
grub_uint32_t min;
grub_uint32_t hz;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The second part of a file header block. */
struct grub_affs_file
@ -76,7 +76,7 @@ struct grub_affs_file
grub_uint32_t parent;
grub_uint32_t extension;
grub_uint32_t type;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The location of `struct grub_affs_file' relative to the end of a
file header block. */

View file

@ -73,7 +73,7 @@ struct grub_bfs_extent
grub_uint32_t ag;
grub_uint16_t start;
grub_uint16_t len;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_bfs_superblock
{
@ -89,7 +89,7 @@ struct grub_bfs_superblock
grub_uint8_t unused3[32];
grub_uint32_t magic3;
struct grub_bfs_extent root_dir;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_bfs_inode
{
@ -118,11 +118,11 @@ struct grub_bfs_inode
grub_uint64_t max_double_indirect_range;
grub_uint64_t size;
grub_uint32_t pad[4];
} __attribute__ ((packed));
} GRUB_PACKED;
char inplace_link[144];
} __attribute__ ((packed));
} GRUB_PACKED;
grub_uint8_t small_data[0];
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{
@ -134,7 +134,7 @@ struct grub_bfs_small_data_element_header
grub_uint32_t type;
grub_uint16_t name_len;
grub_uint16_t value_len;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_bfs_btree_header
{
@ -151,7 +151,7 @@ struct grub_bfs_btree_header
grub_uint64_t root;
#endif
grub_uint32_t unused2[2];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_bfs_btree_node
{
@ -165,7 +165,7 @@ struct grub_bfs_btree_node
grub_uint16_t count_keys;
grub_uint16_t total_key_len;
#endif
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_bfs_data
{

View file

@ -53,7 +53,7 @@ struct grub_btrfs_device
grub_uint64_t device_id;
grub_uint64_t size;
grub_uint8_t dummy[0x62 - 0x10];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_superblock
{
@ -71,7 +71,7 @@ struct grub_btrfs_superblock
char label[0x100];
grub_uint8_t dummy4[0x100];
grub_uint8_t bootstrap_mapping[0x800];
} __attribute__ ((packed));
} GRUB_PACKED;
struct btrfs_header
{
@ -80,7 +80,7 @@ struct btrfs_header
grub_uint8_t dummy[0x30];
grub_uint32_t nitems;
grub_uint8_t level;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_device_desc
{
@ -122,28 +122,28 @@ struct grub_btrfs_chunk_item
grub_uint8_t dummy2[0xc];
grub_uint16_t nstripes;
grub_uint16_t nsubstripes;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_chunk_stripe
{
grub_uint64_t device_id;
grub_uint64_t offset;
grub_btrfs_uuid_t device_uuid;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_leaf_node
{
struct grub_btrfs_key key;
grub_uint32_t offset;
grub_uint32_t size;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_internal_node
{
struct grub_btrfs_key key;
grub_uint64_t addr;
grub_uint64_t dummy;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_dir_item
{
@ -156,7 +156,7 @@ struct grub_btrfs_dir_item
#define GRUB_BTRFS_DIR_ITEM_TYPE_SYMLINK 7
grub_uint8_t type;
char name[0];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_leaf_descriptor
{
@ -183,7 +183,7 @@ struct grub_btrfs_inode
grub_uint64_t size;
grub_uint8_t dummy2[0x70];
struct grub_btrfs_time mtime;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_btrfs_extent_data
{
@ -204,7 +204,7 @@ struct grub_btrfs_extent_data
grub_uint64_t filled;
};
};
} __attribute__ ((packed));
} GRUB_PACKED;
#define GRUB_BTRFS_EXTENT_INLINE 0
#define GRUB_BTRFS_EXTENT_REGULAR 1

View file

@ -35,7 +35,7 @@ struct head
grub_uint16_t mtime[2];
grub_uint16_t namesize[1];
grub_uint16_t filesize[2];
} __attribute__ ((packed));
} GRUB_PACKED;
static inline unsigned long long
read_number (const grub_uint16_t *arr, grub_size_t size)

View file

@ -35,7 +35,7 @@ struct head
grub_uint16_t mtime[2];
grub_uint16_t namesize[1];
grub_uint16_t filesize[2];
} __attribute__ ((packed));
} GRUB_PACKED;
static inline unsigned long long
read_number (const grub_uint16_t *arr, grub_size_t size)

View file

@ -92,7 +92,7 @@ struct grub_fat_dir_entry
grub_uint8_t m_time_tenth;
grub_uint8_t a_time_tenth;
grub_uint8_t reserved2[9];
} __attribute__ ((packed)) file;
} GRUB_PACKED file;
struct {
grub_uint8_t flags;
grub_uint8_t reserved1;
@ -103,17 +103,17 @@ struct grub_fat_dir_entry
grub_uint32_t reserved3;
grub_uint32_t first_cluster;
grub_uint64_t file_size;
} __attribute__ ((packed)) stream_extension;
} GRUB_PACKED stream_extension;
struct {
grub_uint8_t flags;
grub_uint16_t str[15];
} __attribute__ ((packed)) file_name;
} GRUB_PACKED file_name;
struct {
grub_uint8_t character_count;
grub_uint16_t str[15];
} __attribute__ ((packed)) volume_label;
} __attribute__ ((packed)) type_specific;
} __attribute__ ((packed));
} GRUB_PACKED volume_label;
} GRUB_PACKED type_specific;
} GRUB_PACKED;
struct grub_fat_dir_node
{
@ -142,7 +142,7 @@ struct grub_fat_dir_entry
grub_uint16_t w_date;
grub_uint16_t first_cluster_low;
grub_uint32_t file_size;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_fat_long_name_entry
{
@ -154,7 +154,7 @@ struct grub_fat_long_name_entry
grub_uint16_t name2[6];
grub_uint16_t first_cluster;
grub_uint16_t name3[2];
} __attribute__ ((packed));
} GRUB_PACKED;
typedef struct grub_fat_dir_entry grub_fat_dir_node_t;

View file

@ -65,7 +65,7 @@ struct grub_hfs_node
grub_uint8_t level;
grub_uint16_t reccnt;
grub_uint16_t unused;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The head of the B*-Tree. */
struct grub_hfs_treeheader
@ -81,7 +81,7 @@ struct grub_hfs_treeheader
grub_uint32_t nodes;
grub_uint32_t free_nodes;
grub_uint8_t unused[76];
} __attribute__ ((packed));
} GRUB_PACKED;
/* The state of a mounted HFS filesystem. */
struct grub_hfs_data
@ -112,7 +112,7 @@ struct grub_hfs_catalog_key
/* Filename. */
grub_uint8_t str[31];
} __attribute__ ((packed));
} GRUB_PACKED;
/* The key as used on disk in a extent overflow tree. Using this key
the extents can be looked up using a fileid and logical start block
@ -125,7 +125,7 @@ struct grub_hfs_extent_key
grub_uint8_t forktype;
grub_uint32_t fileid;
grub_uint16_t first_block;
} __attribute__ ((packed));
} GRUB_PACKED;
/* A directory record. This is used to find out the directory ID. */
struct grub_hfs_dirrec
@ -136,7 +136,7 @@ struct grub_hfs_dirrec
grub_uint32_t dirid;
grub_uint32_t ctime;
grub_uint32_t mtime;
} __attribute__ ((packed));
} GRUB_PACKED;
/* Information about a file. */
struct grub_hfs_filerec
@ -154,7 +154,7 @@ struct grub_hfs_filerec
/* The first 3 extents of the file. The other extents can be found
in the extent overflow file. */
grub_hfs_datarecord_t extents;
} __attribute__ ((packed));
} GRUB_PACKED;
/* A record descriptor, both key and data, used to pass to call back
functions. */
@ -712,7 +712,7 @@ grub_hfs_iterate_records (struct grub_hfs_data *data, int type, int idx,
{
grub_uint8_t keylen;
grub_uint8_t key;
} __attribute__ ((packed)) *pnt;
} GRUB_PACKED *pnt;
pnt = (struct pointer *) (grub_be_to_cpu16 (node->offsets[pos])
+ node->rawnode);

View file

@ -65,7 +65,7 @@ struct grub_hfsplus_btheader
grub_uint8_t btree_type;
grub_uint8_t key_compare;
grub_uint32_t attributes;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_hfsplus_catfile
{
@ -80,7 +80,7 @@ struct grub_hfsplus_catfile
grub_uint8_t unused3[44];
struct grub_hfsplus_forkdata data;
struct grub_hfsplus_forkdata resource;
} __attribute__ ((packed));
} GRUB_PACKED;
/* Filetype information as used in inodes. */
#define GRUB_HFSPLUS_FILEMODE_MASK 0170000

View file

@ -35,19 +35,19 @@ struct grub_hfsplus_compress_header1
grub_uint32_t total_compressed_size_including_seek_blocks_and_header2;
grub_uint32_t value_0x32;
grub_uint8_t unused[0xf0];
} __attribute__ ((packed));
} GRUB_PACKED;
/* big-endian. */
struct grub_hfsplus_compress_header2
{
grub_uint32_t total_compressed_size_including_seek_blocks;
} __attribute__ ((packed));
} GRUB_PACKED;
/* little-endian. */
struct grub_hfsplus_compress_header3
{
grub_uint32_t num_chunks;
} __attribute__ ((packed));
} GRUB_PACKED;
/* little-endian. */
struct grub_hfsplus_compress_block_descriptor
@ -59,7 +59,7 @@ struct grub_hfsplus_compress_block_descriptor
struct grub_hfsplus_compress_end_descriptor
{
grub_uint8_t always_the_same[50];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_hfsplus_attr_header
{
@ -67,7 +67,7 @@ struct grub_hfsplus_attr_header
grub_uint8_t type;
grub_uint32_t unknown[1];
grub_uint64_t size;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_hfsplus_compress_attr
{
@ -75,7 +75,7 @@ struct grub_hfsplus_compress_attr
grub_uint32_t type;
grub_uint32_t uncompressed_inline_size;
grub_uint32_t always_0;
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{

View file

@ -54,7 +54,7 @@ struct grub_iso9660_voldesc
grub_uint8_t type;
grub_uint8_t magic[5];
grub_uint8_t version;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_iso9660_date2
{
@ -65,7 +65,7 @@ struct grub_iso9660_date2
grub_uint8_t minute;
grub_uint8_t second;
grub_uint8_t offset;
} __attribute__ ((packed));
} GRUB_PACKED;
/* A directory entry. */
struct grub_iso9660_dir
@ -81,7 +81,7 @@ struct grub_iso9660_dir
grub_uint8_t unused2[6];
#define MAX_NAMELEN 255
grub_uint8_t namelen;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_iso9660_date
{
@ -93,7 +93,7 @@ struct grub_iso9660_date
grub_uint8_t second[2];
grub_uint8_t hundredth[2];
grub_uint8_t offset;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The primary volume descriptor. Only little endian is used. */
struct grub_iso9660_primary_voldesc
@ -112,7 +112,7 @@ struct grub_iso9660_primary_voldesc
grub_uint8_t unused6[624];
struct grub_iso9660_date created;
struct grub_iso9660_date modified;
} __attribute__ ((packed));
} GRUB_PACKED;
/* A single entry in the path table. */
struct grub_iso9660_path
@ -122,7 +122,7 @@ struct grub_iso9660_path
grub_uint32_t first_sector;
grub_uint16_t parentdir;
grub_uint8_t name[0];
} __attribute__ ((packed));
} GRUB_PACKED;
/* An entry in the System Usage area of the directory entry. */
struct grub_iso9660_susp_entry
@ -131,7 +131,7 @@ struct grub_iso9660_susp_entry
grub_uint8_t len;
grub_uint8_t version;
grub_uint8_t data[0];
} __attribute__ ((packed));
} GRUB_PACKED;
/* The CE entry. This is used to describe the next block where data
can be found. */
@ -144,7 +144,7 @@ struct grub_iso9660_susp_ce
grub_uint32_t off_be;
grub_uint32_t len;
grub_uint32_t len_be;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_iso9660_data
{

View file

@ -70,7 +70,7 @@ struct grub_jfs_extent
/* The physical offset of the first block on the disk. */
grub_uint8_t blk1;
grub_uint32_t blk2;
} __attribute__ ((packed));
} GRUB_PACKED;
#define GRUB_JFS_IAG_INODES_OFFSET 3072
#define GRUB_JFS_IAG_INODES_COUNT 128
@ -79,7 +79,7 @@ struct grub_jfs_iag
{
grub_uint8_t unused[GRUB_JFS_IAG_INODES_OFFSET];
struct grub_jfs_extent inodes[GRUB_JFS_IAG_INODES_COUNT];
} __attribute__ ((packed));
} GRUB_PACKED;
/* The head of the tree used to find extents. */
@ -94,7 +94,7 @@ struct grub_jfs_treehead
grub_uint16_t count;
grub_uint16_t max;
grub_uint8_t unused2[10];
} __attribute__ ((packed));
} GRUB_PACKED;
/* A node in the extent tree. */
struct grub_jfs_tree_extent
@ -107,7 +107,7 @@ struct grub_jfs_tree_extent
grub_uint32_t offset2;
struct grub_jfs_extent extent;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The tree of directory entries. */
struct grub_jfs_tree_dir
@ -128,7 +128,7 @@ struct grub_jfs_tree_dir
/* The location of the sorted array of pointers to dirents. */
grub_uint8_t sindex;
grub_uint8_t unused[10];
} __attribute__ ((packed));
} GRUB_PACKED;
/* An internal node in the dirents tree. */
struct grub_jfs_internal_dirent
@ -137,7 +137,7 @@ struct grub_jfs_internal_dirent
grub_uint8_t next;
grub_uint8_t len;
grub_uint16_t namepart[11];
} __attribute__ ((packed));
} GRUB_PACKED;
/* A leaf node in the dirents tree. */
struct grub_jfs_leaf_dirent
@ -150,7 +150,7 @@ struct grub_jfs_leaf_dirent
grub_uint8_t len;
grub_uint16_t namepart[11];
grub_uint32_t index;
} __attribute__ ((packed));
} GRUB_PACKED;
/* A leaf in the dirents tree. This one is used if the previously
dirent was not big enough to store the name. */
@ -159,13 +159,13 @@ struct grub_jfs_leaf_next_dirent
grub_uint8_t next;
grub_uint8_t len;
grub_uint16_t namepart[15];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_jfs_time
{
grub_int32_t sec;
grub_int32_t nanosec;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_jfs_inode
{
@ -185,7 +185,7 @@ struct grub_jfs_inode
union
{
/* The tree describing the extents of the file. */
struct __attribute__ ((packed))
struct GRUB_PACKED
{
struct grub_jfs_treehead tree;
struct grub_jfs_tree_extent extents[16];
@ -206,15 +206,15 @@ struct grub_jfs_inode
grub_uint8_t sorted[8];
} header;
struct grub_jfs_leaf_dirent dirents[8];
} dir __attribute__ ((packed));
} GRUB_PACKED dir;
/* Fast symlink. */
struct
{
grub_uint8_t unused[32];
grub_uint8_t path[256];
} symlink;
} __attribute__ ((packed));
} __attribute__ ((packed));
} GRUB_PACKED;
} GRUB_PACKED;
struct grub_jfs_data
{
@ -226,7 +226,7 @@ struct grub_jfs_data
int pos;
int linknest;
int namecomponentlen;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_jfs_diropen
{
@ -237,7 +237,7 @@ struct grub_jfs_diropen
struct grub_jfs_leaf_dirent dirent[0];
struct grub_jfs_leaf_next_dirent next_dirent[0];
grub_uint8_t sorted[0];
} *dirpage __attribute__ ((packed));
} GRUB_PACKED *dirpage;
struct grub_jfs_data *data;
struct grub_jfs_inode *inode;
int count;
@ -251,7 +251,7 @@ struct grub_jfs_diropen
*/
char name[256 * GRUB_MAX_UTF8_PER_UTF16 + 1];
grub_uint32_t ino;
} __attribute__ ((packed));
} GRUB_PACKED;
static grub_dl_t my_mod;

View file

@ -38,7 +38,7 @@ struct head
char rdevminor[8];
char namesize[8];
char check[8];
} __attribute__ ((packed));
} GRUB_PACKED;
static inline unsigned long long
read_number (const char *str, grub_size_t size)

View file

@ -143,7 +143,7 @@ struct grub_nilfs2_dir_entry
char name[NILFS_NAME_LEN];
char pad;
#endif
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{

View file

@ -643,7 +643,7 @@ struct symlink_descriptor
grub_uint16_t len1;
grub_uint16_t off2;
grub_uint16_t len2;
} __attribute__ ((packed));
} GRUB_PACKED;
static char *
grub_ntfs_read_symlink (grub_fshelp_node_t node)

View file

@ -35,7 +35,7 @@ struct head
char mtime[11];
char namesize[6];
char filesize[11];
} __attribute__ ((packed));
} GRUB_PACKED;
static inline unsigned long long
read_number (const char *str, grub_size_t size)

View file

@ -109,14 +109,14 @@ struct grub_reiserfs_superblock
grub_uint8_t unused[4];
grub_uint16_t uuid[8];
char label[16];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_journal_header
{
grub_uint32_t last_flush_uid;
grub_uint32_t unflushed_offset;
grub_uint32_t mount_id;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_description_block
{
@ -124,14 +124,14 @@ struct grub_reiserfs_description_block
grub_uint32_t len;
grub_uint32_t mount_id;
grub_uint32_t real_blocks[0];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_commit_block
{
grub_uint32_t id;
grub_uint32_t len;
grub_uint32_t real_blocks[0];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_stat_item_v1
{
@ -145,7 +145,7 @@ struct grub_reiserfs_stat_item_v1
grub_uint32_t ctime;
grub_uint32_t rdev;
grub_uint32_t first_direct_byte;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_stat_item_v2
{
@ -160,7 +160,7 @@ struct grub_reiserfs_stat_item_v2
grub_uint32_t ctime;
grub_uint32_t blocks;
grub_uint32_t first_direct_byte;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_key
{
@ -172,13 +172,13 @@ struct grub_reiserfs_key
{
grub_uint32_t offset;
grub_uint32_t type;
} v1 __attribute__ ((packed));
} GRUB_PACKED v1;
struct
{
grub_uint64_t offset_type;
} v2 __attribute__ ((packed));
} GRUB_PACKED v2;
} u;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_item_header
{
@ -187,11 +187,11 @@ struct grub_reiserfs_item_header
{
grub_uint16_t free_space;
grub_uint16_t entry_count;
} u __attribute__ ((packed));
} GRUB_PACKED u;
grub_uint16_t item_size;
grub_uint16_t item_location;
grub_uint16_t version;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_block_header
{
@ -200,14 +200,14 @@ struct grub_reiserfs_block_header
grub_uint16_t free_space;
grub_uint16_t reserved;
struct grub_reiserfs_key block_right_delimiting_key;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_disk_child
{
grub_uint32_t block_number;
grub_uint16_t size;
grub_uint16_t reserved;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_reiserfs_directory_header
{
@ -216,7 +216,7 @@ struct grub_reiserfs_directory_header
grub_uint32_t object_id;
grub_uint16_t location;
grub_uint16_t state;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_fshelp_node
{

View file

@ -35,7 +35,7 @@ struct grub_sfs_bheader
grub_uint8_t magic[4];
grub_uint32_t chksum;
grub_uint32_t ipointtomyself;
} __attribute__ ((packed));
} GRUB_PACKED;
/* The sfs rootblock. */
struct grub_sfs_rblock
@ -50,7 +50,7 @@ struct grub_sfs_rblock
grub_uint8_t unused3[8];
grub_uint32_t rootobject;
grub_uint32_t btree;
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{
@ -69,18 +69,18 @@ struct grub_sfs_obj
{
grub_uint32_t first_block;
grub_uint32_t size;
} file __attribute__ ((packed));
} GRUB_PACKED file;
struct
{
grub_uint32_t hashtable;
grub_uint32_t dir_objc;
} dir __attribute__ ((packed));
} GRUB_PACKED dir;
} file_dir;
grub_uint32_t mtime;
grub_uint8_t type;
grub_uint8_t filename[1];
grub_uint8_t comment[1];
} __attribute__ ((packed));
} GRUB_PACKED;
#define GRUB_SFS_TYPE_DELETED 32
#define GRUB_SFS_TYPE_SYMLINK 64
@ -95,13 +95,13 @@ struct grub_sfs_objc
grub_uint32_t prev;
/* The amount of objects depends on the blocksize. */
struct grub_sfs_obj objects[1];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_sfs_btree_node
{
grub_uint32_t key;
grub_uint32_t data;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_sfs_btree_extent
{
@ -109,7 +109,7 @@ struct grub_sfs_btree_extent
grub_uint32_t next;
grub_uint32_t prev;
grub_uint16_t size;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_sfs_btree
{
@ -120,7 +120,7 @@ struct grub_sfs_btree
/* Normally this can be kind of node, but just extents are
supported. */
struct grub_sfs_btree_node node[1];
} __attribute__ ((packed));
} GRUB_PACKED;

View file

@ -71,7 +71,7 @@ struct grub_squash_super
grub_uint64_t diroffset;
grub_uint64_t unk1offset;
grub_uint64_t unk2offset;
} __attribute__ ((packed));
} GRUB_PACKED;
/* Chunk-based */
struct grub_squash_inode
@ -89,7 +89,7 @@ struct grub_squash_inode
grub_uint32_t offset;
grub_uint32_t size;
grub_uint32_t block_size[0];
} __attribute__ ((packed)) file;
} GRUB_PACKED file;
struct {
grub_uint64_t chunk;
grub_uint64_t size;
@ -98,13 +98,13 @@ struct grub_squash_inode
grub_uint32_t offset;
grub_uint32_t dummy3;
grub_uint32_t block_size[0];
} __attribute__ ((packed)) long_file;
} GRUB_PACKED long_file;
struct {
grub_uint32_t chunk;
grub_uint32_t dummy;
grub_uint16_t size;
grub_uint16_t offset;
} __attribute__ ((packed)) dir;
} GRUB_PACKED dir;
struct {
grub_uint32_t dummy1;
grub_uint32_t size;
@ -112,14 +112,14 @@ struct grub_squash_inode
grub_uint32_t dummy2;
grub_uint16_t dummy3;
grub_uint16_t offset;
} __attribute__ ((packed)) long_dir;
} GRUB_PACKED long_dir;
struct {
grub_uint32_t dummy;
grub_uint32_t namelen;
char name[0];
} __attribute__ ((packed)) symlink;
} __attribute__ ((packed));
} __attribute__ ((packed));
} GRUB_PACKED symlink;
} GRUB_PACKED;
} GRUB_PACKED;
struct grub_squash_cache_inode
{
@ -137,7 +137,7 @@ struct grub_squash_dirent_header
grub_uint32_t nelems;
grub_uint32_t ino_chunk;
grub_uint32_t dummy;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_squash_dirent
{
@ -147,7 +147,7 @@ struct grub_squash_dirent
/* Actually the value is the length of name - 1. */
grub_uint16_t namelen;
char name[0];
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{
@ -164,7 +164,7 @@ struct grub_squash_frag_desc
grub_uint64_t offset;
grub_uint32_t size;
grub_uint32_t dummy;
} __attribute__ ((packed));
} GRUB_PACKED;
enum
{

View file

@ -48,7 +48,7 @@ struct head
char devmajor[8];
char devminor[8];
char prefix[155];
} __attribute__ ((packed));
} GRUB_PACKED;
static inline unsigned long long
read_number (const char *str, grub_size_t size)

View file

@ -117,32 +117,32 @@ struct grub_udf_lb_addr
{
grub_uint32_t block_num;
grub_uint16_t part_ref;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_short_ad
{
grub_uint32_t length;
grub_uint32_t position;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_long_ad
{
grub_uint32_t length;
struct grub_udf_lb_addr block;
grub_uint8_t imp_use[6];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_extent_ad
{
grub_uint32_t length;
grub_uint32_t start;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_charspec
{
grub_uint8_t charset_type;
grub_uint8_t charset_info[63];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_timestamp
{
@ -156,14 +156,14 @@ struct grub_udf_timestamp
grub_uint8_t centi_seconds;
grub_uint8_t hundreds_of_micro_seconds;
grub_uint8_t micro_seconds;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_regid
{
grub_uint8_t flags;
grub_uint8_t ident[23];
grub_uint8_t ident_suffix[8];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_tag
{
@ -175,7 +175,7 @@ struct grub_udf_tag
grub_uint16_t desc_crc;
grub_uint16_t desc_crc_length;
grub_uint32_t tag_location;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_fileset
{
@ -197,7 +197,7 @@ struct grub_udf_fileset
struct grub_udf_regid domain_ident;
struct grub_udf_long_ad next_ext;
struct grub_udf_long_ad streamdir_icb;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_icbtag
{
@ -209,7 +209,7 @@ struct grub_udf_icbtag
grub_uint8_t file_type;
struct grub_udf_lb_addr parent_idb;
grub_uint16_t flags;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_file_ident
{
@ -220,7 +220,7 @@ struct grub_udf_file_ident
grub_uint8_t file_ident_length;
struct grub_udf_long_ad icb;
grub_uint16_t imp_use_length;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_file_entry
{
@ -245,7 +245,7 @@ struct grub_udf_file_entry
grub_uint32_t ext_attr_length;
grub_uint32_t alloc_descs_length;
grub_uint8_t ext_attr[0];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_extended_file_entry
{
@ -274,20 +274,20 @@ struct grub_udf_extended_file_entry
grub_uint32_t ext_attr_length;
grub_uint32_t alloc_descs_length;
grub_uint8_t ext_attr[0];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_vrs
{
grub_uint8_t type;
grub_uint8_t magic[5];
grub_uint8_t version;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_avdp
{
struct grub_udf_tag tag;
struct grub_udf_extent_ad vds;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_pd
{
@ -300,7 +300,7 @@ struct grub_udf_pd
grub_uint32_t access_type;
grub_uint32_t start;
grub_uint32_t length;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_partmap
{
@ -319,7 +319,7 @@ struct grub_udf_partmap
grub_uint8_t ident[62];
} type2;
};
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_lvd
{
@ -336,14 +336,14 @@ struct grub_udf_lvd
grub_uint8_t imp_use[128];
struct grub_udf_extent_ad integrity_seq_ext;
grub_uint8_t part_maps[1608];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_aed
{
struct grub_udf_tag tag;
grub_uint32_t prev_ae;
grub_uint32_t ae_len;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_udf_data
{

View file

@ -187,7 +187,7 @@ struct grub_ufs_inode
};
grub_uint8_t unused[24];
} __attribute__ ((packed));
} GRUB_PACKED;
#else
/* UFS inode. */
struct grub_ufs_inode
@ -217,7 +217,7 @@ struct grub_ufs_inode
grub_uint32_t gen;
grub_uint32_t unused;
grub_uint8_t pad[12];
} __attribute__ ((packed));
} GRUB_PACKED;
#endif
/* Directory entry. */
@ -234,7 +234,7 @@ struct grub_ufs_dirent
grub_uint8_t namelen_bsd;
};
};
} __attribute__ ((packed));
} GRUB_PACKED;
/* Information about a "mounted" ufs filesystem. */
struct grub_ufs_data

View file

@ -54,7 +54,7 @@ struct grub_xfs_sblock
grub_uint8_t log2_agblk;
grub_uint8_t unused6[67];
grub_uint8_t log2_dirblk;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_xfs_dir_header
{
@ -64,8 +64,8 @@ struct grub_xfs_dir_header
{
grub_uint32_t i4;
grub_uint64_t i8;
} parent __attribute__ ((packed));
} __attribute__ ((packed));
} GRUB_PACKED parent;
} GRUB_PACKED;
struct grub_xfs_dir_entry
{
@ -73,13 +73,13 @@ struct grub_xfs_dir_entry
grub_uint16_t offset;
char name[1];
/* Inode number follows, 32 bits. */
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_xfs_dir2_entry
{
grub_uint64_t inode;
grub_uint8_t len;
} __attribute__ ((packed));
} GRUB_PACKED;
typedef grub_uint32_t grub_xfs_extent[4];
@ -91,20 +91,20 @@ struct grub_xfs_btree_node
grub_uint64_t left;
grub_uint64_t right;
grub_uint64_t keys[1];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_xfs_btree_root
{
grub_uint16_t level;
grub_uint16_t numrecs;
grub_uint64_t keys[1];
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_xfs_time
{
grub_uint32_t sec;
grub_uint32_t nanosec;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_xfs_inode
{
@ -133,14 +133,14 @@ struct grub_xfs_inode
} dir;
grub_xfs_extent extents[XFS_INODE_EXTENTS];
struct grub_xfs_btree_root btree;
} data __attribute__ ((packed));
} __attribute__ ((packed));
} GRUB_PACKED data;
} GRUB_PACKED;
struct grub_xfs_dirblock_tail
{
grub_uint32_t leaf_count;
grub_uint32_t leaf_stale;
} __attribute__ ((packed));
} GRUB_PACKED;
struct grub_fshelp_node
{

View file

@ -77,13 +77,13 @@ typedef grub_size_t size_t;
typedef struct _U16_S {
U16 v;
} __attribute__ ((packed)) U16_S;
} GRUB_PACKED U16_S;
typedef struct _U32_S {
U32 v;
} __attribute__ ((packed)) U32_S;
} GRUB_PACKED U32_S;
typedef struct _U64_S {
U64 v;
} __attribute__ ((packed)) U64_S;
} GRUB_PACKED U64_S;
#define A64(x) (((U64_S *)(x))->v)
#define A32(x) (((U32_S *)(x))->v)