From 13a5b41c7da58117719d5b29dd18cb0ca5807cfe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 26 Nov 2013 22:27:19 +0100 Subject: re PR sanitizer/59258 (ubsan: ICE(segfault): stack-buffer-overflow with -fsanitize=undefined) PR sanitizer/59258 * ubsan.c (ubsan_source_location): Don't add any location to ADDR_EXPR in the ctor. Revert 2013-11-22 change. (ubsan_create_data): Strip block info from LOC. From-SVN: r205415 --- gcc/ubsan.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'gcc/ubsan.c') diff --git a/gcc/ubsan.c b/gcc/ubsan.c index a16f3eb..468a3b1 100644 --- a/gcc/ubsan.c +++ b/gcc/ubsan.c @@ -229,13 +229,13 @@ ubsan_source_location (location_t loc) xloc = expand_location (loc); /* Fill in the values from LOC. */ - size_t len = xloc.file ? strlen (xloc.file) : 0; - tree str = build_string (len + 1, xloc.file ? xloc.file : ""); + size_t len = strlen (xloc.file); + tree str = build_string (len + 1, xloc.file); TREE_TYPE (str) = build_array_type (char_type_node, build_index_type (size_int (len))); TREE_READONLY (str) = 1; TREE_STATIC (str) = 1; - str = build_fold_addr_expr_loc (loc, str); + str = build_fold_addr_expr (str); tree ctor = build_constructor_va (type, 3, NULL_TREE, str, NULL_TREE, build_int_cst (unsigned_type_node, xloc.line), NULL_TREE, @@ -398,6 +398,7 @@ ubsan_create_data (const char *name, location_t loc, tree td_type = ubsan_type_descriptor_type (); TYPE_READONLY (td_type) = 1; td_type = build_pointer_type (td_type); + loc = LOCATION_LOCUS (loc); /* Create the structure type. */ ret = make_node (RECORD_TYPE); -- cgit v1.1