From: Cary Coutant Date: Tue, 13 Aug 2013 23:39:54 +0000 (+0000) Subject: dwarf2out.c (CHECKSUM_BLOCK): New macro. X-Git-Tag: upstream/12.2.0~68403 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0e901c6787c1d9673f260adda35f1e758a867532;p=platform%2Fupstream%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 53620ac..45d4971 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-08-13 Cary Coutant + + * dwarf2out.c (CHECKSUM_BLOCK): New macro. + (attr_checksum): Hash vector contents instead of pointer. + (attr_checksum_ordered): Likewise. + 2013-08-13 Uros Bizjak * config/i386/sse.md (*sse2_maskmovdqu): Emit addr32 prefix 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: