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"
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
}
}

View File

@ -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 {