From: Dmitry V. Levin Date: Fri, 19 Jan 2018 17:07:04 +0000 (+0000) Subject: mpers.awk: avoid redefinition of mpers_ptr_t X-Git-Tag: v4.21~113 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=03766d6640f6d90c11804cd4be2d26f2b70f739b;p=strace mpers.awk: avoid redefinition of mpers_ptr_t Older versions of gcc like those found in RHEL6 fail with the following diagnostics: In file included from block.c:32: ./mpers-m32/struct_blk_user_trace_setup.h:2: error: redefinition of typedef ‘mpers_ptr_t’ mpers_type.h:44: note: previous declaration of ‘mpers_ptr_t’ was here * mpers.awk (END): Add #ifndef guard to mpers_ptr_t typedef. * mpers_test.sh: Update expected output. --- diff --git a/mpers.awk b/mpers.awk index 6545052d..9f8cb648 100644 --- a/mpers.awk +++ b/mpers.awk @@ -234,8 +234,12 @@ END { PROCINFO["sorted_in"] = "compare_indices" for (item in array) { if (array[item]["special"] == "pointer_type") { - print "typedef uint" \ - 8 * array_get(item, "byte_size") "_t mpers_ptr_t;" + mpers_ptr_t = \ + "uint" 8 * array_get(item, "byte_size") "_t" + print "#ifndef mpers_ptr_t_is_" mpers_ptr_t + print "typedef " mpers_ptr_t " mpers_ptr_t;" + print "#define mpers_ptr_t_is_" mpers_ptr_t + print "#endif" break } } diff --git a/mpers_test.sh b/mpers_test.sh index 9b8805da..f0799e62 100755 --- a/mpers_test.sh +++ b/mpers_test.sh @@ -81,9 +81,13 @@ typedef struct { EOF expected="$mpers_dir/sample.expected" +mpers_ptr_t="uint${size}_t" cat > "$expected" < -typedef uint${size}_t mpers_ptr_t; +#ifndef mpers_ptr_t_is_${mpers_ptr_t} +typedef ${mpers_ptr_t} mpers_ptr_t; +#define mpers_ptr_t_is_${mpers_ptr_t} +#endif typedef struct { struct {