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.
This commit is contained in:
2018-01-19 17:07:04 +00:00
parent b2fe2a60ac
commit 03766d6640
2 changed files with 11 additions and 3 deletions

View File

@ -234,8 +234,12 @@ END {
PROCINFO["sorted_in"] = "compare_indices" PROCINFO["sorted_in"] = "compare_indices"
for (item in array) { for (item in array) {
if (array[item]["special"] == "pointer_type") { if (array[item]["special"] == "pointer_type") {
print "typedef uint" \ mpers_ptr_t = \
8 * array_get(item, "byte_size") "_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 break
} }
} }

View File

@ -81,9 +81,13 @@ typedef struct {
EOF EOF
expected="$mpers_dir/sample.expected" expected="$mpers_dir/sample.expected"
mpers_ptr_t="uint${size}_t"
cat > "$expected" <<EOF cat > "$expected" <<EOF
#include <inttypes.h> #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 typedef
struct { struct {
struct { struct {