]> granicus.if.org Git - strace/blob - mpers_test.sh
Robustify mpers.awk against invalid input
[strace] / mpers_test.sh
1 #!/bin/sh -efu
2
3 mpers_name="$1"; shift
4 srcdir=${0%/*}
5 mpers_sh="${srcdir}/mpers.sh"
6
7 mpers_dir="mpers-$mpers_name"
8 mkdir -p "$mpers_dir"
9
10 sample="$mpers_dir/sample.c"
11 cat > "$sample" <<EOF
12 #include "mpers_type.h"
13 #include DEF_MPERS_TYPE(sample_struct)
14 typedef struct { int i; unsigned short s[0]; } sample_struct;
15 #include MPERS_DEFS
16 EOF
17
18 expected="$mpers_dir/sample.expected"
19 cat > "$expected" <<EOF
20 #include <inttypes.h>
21 typedef
22 struct {
23 int32_t i;
24 uint16_t s[00];
25 } ATTRIBUTE_PACKED ${mpers_name}_sample_struct;
26 #define MPERS_${mpers_name}_sample_struct ${mpers_name}_sample_struct
27 EOF
28
29 CFLAGS="$CPPFLAGS -I${srcdir}" \
30 CPPFLAGS="$CPPFLAGS -I${srcdir} -DIN_MPERS -DMPERS_IS_${mpers_name}" \
31 "$mpers_sh" "-$mpers_name" "$sample"
32 cmp "$expected" "$mpers_dir"/sample_struct.h > /dev/null