]> granicus.if.org Git - strace/commitdiff
mpers.awk: avoid redefinition of mpers_ptr_t
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 19 Jan 2018 17:07:04 +0000 (17:07 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 19 Jan 2018 17:50:09 +0000 (17:50 +0000)
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
mpers_test.sh

index 6545052d506f352e853a260a0c2e4cef01abd784..9f8cb6489f0c225fd210bbf38f9b7776a703c72e 100644 (file)
--- 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
                }
        }
index 9b8805da009182ca1db4a625e9be567cce50eea5..f0799e62531dd6ca1a20975284c62b958ad624f0 100755 (executable)
@@ -81,9 +81,13 @@ typedef struct {
 EOF
 
 expected="$mpers_dir/sample.expected"
+mpers_ptr_t="uint${size}_t"
 cat > "$expected" <<EOF
 #include <inttypes.h>
-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 {