aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2013-08-13 23:39:54 +0000
committerCary Coutant <ccoutant@gcc.gnu.org>2013-08-13 16:39:54 -0700
commit0e901c6787c1d9673f260adda35f1e758a867532 (patch)
tree5143e52aaabf0074e6ac9f26587c2ca192104944 /gcc/dwarf2out.c
parent53781c0df3a5b054dda09bff165091befc56b1b8 (diff)
downloadgcc-0e901c6787c1d9673f260adda35f1e758a867532.zip
gcc-0e901c6787c1d9673f260adda35f1e758a867532.tar.gz
gcc-0e901c6787c1d9673f260adda35f1e758a867532.tar.bz2
dwarf2out.c (CHECKSUM_BLOCK): New macro.
gcc/ * dwarf2out.c (CHECKSUM_BLOCK): New macro. (attr_checksum): Hash vector contents instead of pointer. (attr_checksum_ordered): Likewise. From-SVN: r201712
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 66cbfb0..fc1c3f2 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -5432,6 +5432,7 @@ pop_compile_unit (dw_die_ref old_unit)
}
#define CHECKSUM(FOO) md5_process_bytes (&(FOO), sizeof (FOO), ctx)
+#define CHECKSUM_BLOCK(FOO, SIZE) md5_process_bytes ((FOO), (SIZE), ctx)
#define CHECKSUM_STRING(FOO) md5_process_bytes ((FOO), strlen (FOO), ctx)
/* Calculate the checksum of a location expression. */
@@ -5475,7 +5476,9 @@ attr_checksum (dw_attr_ref at, struct md5_ctx *ctx, int *mark)
CHECKSUM (at->dw_attr_val.v.val_double);
break;
case dw_val_class_vec:
- CHECKSUM (at->dw_attr_val.v.val_vec);
+ CHECKSUM_BLOCK (at->dw_attr_val.v.val_vec.array,
+ (at->dw_attr_val.v.val_vec.length
+ * at->dw_attr_val.v.val_vec.elt_size));
break;
case dw_val_class_flag:
CHECKSUM (at->dw_attr_val.v.val_flag);
@@ -5550,10 +5553,12 @@ die_checksum (dw_die_ref die, struct md5_ctx *ctx, int *mark)
}
#undef CHECKSUM
+#undef CHECKSUM_BLOCK
#undef CHECKSUM_STRING
/* For DWARF-4 types, include the trailing NULL when checksumming strings. */
#define CHECKSUM(FOO) md5_process_bytes (&(FOO), sizeof (FOO), ctx)
+#define CHECKSUM_BLOCK(FOO, SIZE) md5_process_bytes ((FOO), (SIZE), ctx)
#define CHECKSUM_STRING(FOO) md5_process_bytes ((FOO), strlen (FOO) + 1, ctx)
#define CHECKSUM_SLEB128(FOO) checksum_sleb128 ((FOO), ctx)
#define CHECKSUM_ULEB128(FOO) checksum_uleb128 ((FOO), ctx)
@@ -5749,8 +5754,11 @@ attr_checksum_ordered (enum dwarf_tag tag, dw_attr_ref at,
case dw_val_class_vec:
CHECKSUM_ULEB128 (DW_FORM_block);
- CHECKSUM_ULEB128 (sizeof (at->dw_attr_val.v.val_vec));
- CHECKSUM (at->dw_attr_val.v.val_vec);
+ CHECKSUM_ULEB128 (at->dw_attr_val.v.val_vec.length
+ * at->dw_attr_val.v.val_vec.elt_size);
+ CHECKSUM_BLOCK (at->dw_attr_val.v.val_vec.array,
+ (at->dw_attr_val.v.val_vec.length
+ * at->dw_attr_val.v.val_vec.elt_size));
break;
case dw_val_class_flag: