line-map.c (location_adhoc_data_update): Perform addition in uintptr_t type rather than char * type.

* line-map.c (location_adhoc_data_update): Perform addition in
	uintptr_t type rather than char * type.  Read *data using
	ptrdiff_t type instead of int64_t.
	(get_combined_adhoc_loc): Change offset type to ptrdiff_t from
	int64_t.

From-SVN: r249446
This commit is contained in:
Jakub Jelinek 2017-06-21 12:59:12 +02:00 committed by Jakub Jelinek
parent d54d1fc3bc
commit 6d52273137
2 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2017-06-21 Jakub Jelinek <jakub@redhat.com>
* line-map.c (location_adhoc_data_update): Perform addition in
uintptr_t type rather than char * type. Read *data using
ptrdiff_t type instead of int64_t.
(get_combined_adhoc_loc): Change offset type to ptrdiff_t from
int64_t.
2017-06-20 David Malcolm <dmalcolm@redhat.com>
* include/line-map.h (class rich_location): Document that attempts

View File

@ -99,7 +99,8 @@ location_adhoc_data_eq (const void *l1, const void *l2)
static int
location_adhoc_data_update (void **slot, void *data)
{
*((char **) slot) += *((int64_t *) data);
*((char **) slot)
= (char *) ((uintptr_t) *((char **) slot) + *((ptrdiff_t *) data));
return 1;
}
@ -221,7 +222,7 @@ get_combined_adhoc_loc (struct line_maps *set,
set->location_adhoc_data_map.allocated)
{
char *orig_data = (char *) set->location_adhoc_data_map.data;
int64_t offset;
ptrdiff_t offset;
/* Cast away extern "C" from the type of xrealloc. */
line_map_realloc reallocator = (set->reallocator
? set->reallocator