3 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
4 # Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
5 # Copyright (c) 2015-2018 The strace developers.
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
11 # 1. Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # 3. The name of the author may not be used to endorse or promote products
17 # derived from this software without specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 mpers_name="$1"; shift
31 mpers_cc_flags="$1"; shift
32 size="$(printf %s "$mpers_name" |tr -cd '[0-9]')"
36 mpers_sh="${srcdir}/mpers.sh"
38 mpers_dir="mpers-$mpers_name"
41 sample="$mpers_dir/sample.c"
43 #include "mpers_type.h"
44 #include DEF_MPERS_TYPE(sample_struct)
49 /* unsigned char mpers_filler_1[1]; */
52 /* unsigned char mpers_filler_2[3]; */
57 /* unsigned char mpers_filler_3[6]; */
58 long long sll __attribute__((__aligned__(8)));
59 unsigned long long ull;
63 /* unsigned char mpers_end_filler_4[7]; */
67 unsigned long long ull;
83 expected="$mpers_dir/sample.expected"
84 mpers_ptr_t="uint${size}_t"
85 cat > "$expected" <<EOF
87 #ifndef mpers_ptr_t_is_${mpers_ptr_t}
88 typedef ${mpers_ptr_t} mpers_ptr_t;
89 #define mpers_ptr_t_is_${mpers_ptr_t}
96 unsigned char mpers_filler_1[1];
99 unsigned char mpers_filler_2[3];
104 unsigned char mpers_filler_3[6];
108 int${size}_t asl[3][5][7];
110 unsigned char mpers_end_filler_4[7];
111 } ATTRIBUTE_PACKED s;
126 } ATTRIBUTE_PACKED ${mpers_name}_sample_struct;
127 #define MPERS_${mpers_name}_sample_struct ${mpers_name}_sample_struct
130 CFLAGS="$CPPFLAGS -I${srcdir} -DMPERS_IS_${mpers_name}" \
131 CPPFLAGS="$CPPFLAGS -I${srcdir} -DIN_MPERS -DMPERS_IS_${mpers_name}" \
132 "$mpers_sh" "$mpers_name" "$mpers_cc_flags" "$sample"
133 cmp "$expected" "$mpers_dir"/sample_struct.h > /dev/null