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.
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
}
}
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 {