Define ATTRIBUTE_PACKED and use as necessary.
authorNick Clifton <nickc@redhat.com>
Wed, 6 Dec 2006 14:36:41 +0000 (14:36 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 6 Dec 2006 14:36:41 +0000 (14:36 +0000)
include/ChangeLog
include/ansidecl.h
include/coff/ChangeLog
include/coff/external.h
include/elf/ChangeLog
include/elf/external.h

index e7e2895..7f3966c 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-05  Michael Tautschnig  <tautschn@model.in.tum.de>
+           Nick Clifton  <nickc@redhat.com>
+
+       * ansidecl.h (ATTRIBUTE_PACKED): Define.
+
 2006-11-30  Andrew Stubbs  <andrew.stubbs@st.com>
             J"orn Rennecke <joern.rennecke@st.com>
 
index a1a765d..793b1e6 100644 (file)
@@ -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.  */
index 60a8587..b8af0fe 100644 (file)
@@ -1,3 +1,10 @@
+2006-12-05  Michael Tautschnig  <tautschn@model.in.tum.de>
+           Nick Clifton  <nickc@redhat.com>
+
+       * external.h (struct external_aouthdr): Add ATTRIBUTE_PACKED.
+       (struct external_syment): Likewise.
+       (union external_auxent): Likewise.
+
 2006-11-14  Phil Lello  <phil.lello@homecall.co.uk>
 
        * pe.h: Added defines for IMAGE_SUBSYSTEM_EFI_ROM and
index e38fb1b..8dabc8a 100644 (file)
@@ -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
index 3a661cb..47d9d47 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-05  Michael Tautschnig  <tautschn@model.in.tum.de>
+           Nick Clifton  <nickc@redhat.com>
+
+       * external.h (struct Elf_External_Versym): Use ATTRIBUTE_PACKED.
+
 2006-10-28  Richard Sandiford  <richard@codesourcery.com>
 
        * mips.h (R_MIPS_GLOB_DAT): Define
index 5985e94..21450f0 100644 (file)
@@ -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