From 017b276a7623b6bdd1d3d0310c83d208114fb0d1 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 6 Dec 2006 14:36:41 +0000 Subject: [PATCH] Define ATTRIBUTE_PACKED and use as necessary. --- include/ChangeLog | 5 +++++ include/ansidecl.h | 6 ++++++ include/coff/ChangeLog | 7 +++++++ include/coff/external.h | 6 +++--- include/elf/ChangeLog | 5 +++++ include/elf/external.h | 6 +----- 6 files changed, 27 insertions(+), 8 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index e7e2895c7..7f3966ca1 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2006-12-05 Michael Tautschnig + Nick Clifton + + * ansidecl.h (ATTRIBUTE_PACKED): Define. + 2006-11-30 Andrew Stubbs J"orn Rennecke diff --git a/include/ansidecl.h b/include/ansidecl.h index a1a765d63..793b1e654 100644 --- a/include/ansidecl.h +++ b/include/ansidecl.h @@ -361,6 +361,12 @@ So instead we use the macro below and test it against specific values. */ # endif /* GNUC >= 3.0 */ #endif /* ATTRIBUTE_ALIGNED_ALIGNOF */ +/* Useful for structures whoes layout must much some binary specification + regardless of the alignment and padding qualities of the compiler. */ +#ifndef ATTRIBUTE_PACKED +# define ATTRIBUTE_PACKED __attribute__ ((packed)) +#endif + /* We use __extension__ in some places to suppress -pedantic warnings about GCC extensions. This feature didn't work properly before gcc 2.8. */ diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog index 60a85873f..b8af0fe5b 100644 --- a/include/coff/ChangeLog +++ b/include/coff/ChangeLog @@ -1,3 +1,10 @@ +2006-12-05 Michael Tautschnig + Nick Clifton + + * external.h (struct external_aouthdr): Add ATTRIBUTE_PACKED. + (struct external_syment): Likewise. + (union external_auxent): Likewise. + 2006-11-14 Phil Lello * pe.h: Added defines for IMAGE_SUBSYSTEM_EFI_ROM and diff --git a/include/coff/external.h b/include/coff/external.h index e38fb1bab..8dabc8ab4 100644 --- a/include/coff/external.h +++ b/include/coff/external.h @@ -50,7 +50,7 @@ typedef struct external_aouthdr char entry[4]; /* entry pt. */ char text_start[4]; /* base of text used for this file */ char data_start[4]; /* base of data used for this file */ - } + } ATTRIBUTE_PACKED AOUTHDR; #define AOUTHDRSZ 28 @@ -164,7 +164,7 @@ struct external_syment char e_type[2]; char e_sclass[1]; char e_numaux[1]; -}; +} ATTRIBUTE_PACKED ; #define SYMENT struct external_syment #define SYMESZ 18 @@ -256,7 +256,7 @@ union external_auxent char x_tvlen[2]; /* length of .tv */ char x_tvran[2][2]; /* tv range */ } x_tv; /* info about .tv section (in auxent of symbol .tv)) */ -}; +} ATTRIBUTE_PACKED ; #define AUXENT union external_auxent #define AUXESZ 18 diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 3a661cbeb..47d9d478f 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,8 @@ +2006-12-05 Michael Tautschnig + Nick Clifton + + * external.h (struct Elf_External_Versym): Use ATTRIBUTE_PACKED. + 2006-10-28 Richard Sandiford * mips.h (R_MIPS_GLOB_DAT): Define diff --git a/include/elf/external.h b/include/elf/external.h index 5985e94b0..21450f005 100644 --- a/include/elf/external.h +++ b/include/elf/external.h @@ -245,11 +245,7 @@ typedef struct { typedef struct { unsigned char vs_vers[2]; -} -#ifdef __GNUC__ - __attribute__ ((packed)) -#endif - Elf_External_Versym; +} ATTRIBUTE_PACKED Elf_External_Versym; /* Structure for syminfo section. */ typedef struct