From 03766d6640f6d90c11804cd4be2d26f2b70f739b Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Fri, 19 Jan 2018 17:07:04 +0000 Subject: [PATCH] mpers.awk: avoid redefinition of mpers_ptr_t MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. --- mpers.awk | 8 ++++++-- mpers_test.sh | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) 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 { -- 2.40.0