diff --git a/moo/lib/Makefile.am b/moo/lib/Makefile.am index 6e5e8b4..f3d6fc9 100644 --- a/moo/lib/Makefile.am +++ b/moo/lib/Makefile.am @@ -41,7 +41,7 @@ pkginclude_HEADERS = \ moo-utl.h \ moo.h -noinst_HEADERS = moo-prv.h +noinst_HEADERS = moo-prv.h pack1.h unpack.h pkglib_LTLIBRARIES = libmoo.la libmoo_la_SOURCES = \ diff --git a/moo/lib/Makefile.in b/moo/lib/Makefile.in index 070d964..511edc4 100644 --- a/moo/lib/Makefile.in +++ b/moo/lib/Makefile.in @@ -427,7 +427,7 @@ pkginclude_HEADERS = \ moo-utl.h \ moo.h -noinst_HEADERS = moo-prv.h +noinst_HEADERS = moo-prv.h pack1.h unpack.h pkglib_LTLIBRARIES = libmoo.la libmoo_la_SOURCES = \ bigint.c \ diff --git a/moo/lib/exec.c b/moo/lib/exec.c index ebb6c13..8e5d3f5 100644 --- a/moo/lib/exec.c +++ b/moo/lib/exec.c @@ -3583,7 +3583,7 @@ static moo_pfrc_t pf_smptr_free (moo_t* moo, moo_ooi_t nargs) } -#pragma pack(1) +#include "pack1.h" struct st_int8_t { moo_int8_t v; }; struct st_int16_t { moo_int16_t v; }; struct st_int32_t { moo_int32_t v; }; @@ -3600,7 +3600,7 @@ struct st_uint64_t { moo_uint64_t v; }; struct st_int128_t { moo_int128_t v; }; struct st_uint128_t { moo_uint128_t v; }; #endif -#pragma pack() +#include "unpack.h" static MOO_INLINE moo_oop_t _fetch_raw_int (moo_t* moo, moo_int8_t* rawptr, moo_oow_t offset, int size) diff --git a/moo/lib/pack1.h b/moo/lib/pack1.h new file mode 100644 index 0000000..cbad10a --- /dev/null +++ b/moo/lib/pack1.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright (c) 2014-2017 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if defined(__GNUC__) +# pragma pack(1) +#elif defined(__HP_aCC) || defined(__HP_cc) +# pragma PACK 1 +#elif defined(_MSC_VER) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0500)) +# pragma pack(push,1) +#elif defined(__DECC) +# pragma pack(push,1) +#else +# pragma pack(1) +#endif diff --git a/moo/lib/unpack.h b/moo/lib/unpack.h new file mode 100644 index 0000000..5947c15 --- /dev/null +++ b/moo/lib/unpack.h @@ -0,0 +1,37 @@ +/* + * $Id$ + * + Copyright (c) 2014-2017 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if defined(__GNUC__) +# pragma pack() +#elif defined(__HP_aCC) || defined(__HP_cc) +# pragma PACK +#elif defined(_MSC_VER) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0500)) +# pragma pack(pop) +#elif defined(__DECC) +# pragma pack(pop) +#else +# pragma pack() +#endif