The GCC compiler on FreeBSD does not handle #pragma pack(push, ) since gcc/config/freebsd.h does not define HANDLE_PRAGMA_PACK_PUSH_POP. There is no reason for this:
1. gcc/config/linux.h defines HANDLE_PRAGMA_PACK_PUSH_POP. No reason why Linux and FreeBSD should be different here. 2. The 'native' version of the gcc compiler (which is shipped with FreeBSD) have HANDLE_PRAGMA_PACK_PUSH_POP defined. See e.g. http://www.freebsd.org/cgi/cvsweb.cgi/src/contrib/gcc/config/freebsd.h?rev=1.40 So, please add #define HANDLE_PRAGMA_PACK_PUSH_POP to gcc/config/freebsd.h -- Summary: config/freebsd.h does not define HANDLE_PRAGMA_PACK_PUSH_POP Product: gcc Version: 4.0.4 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tejblum at yandex-team dot ru GCC build triplet: x86_64-portbld-freebsd6.2 GCC host triplet: x86_64-portbld-freebsd6.2 GCC target triplet: x86_64-portbld-freebsd6.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30199