summary refs log tree commit diff
path: root/sysdeps/generic/unwind-dw2-fde.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-08-01 03:44:35 +0000
committerUlrich Drepper <drepper@redhat.com>2007-08-01 03:44:35 +0000
commit1475e2012f267f69dab879ce146f99128fd21653 (patch)
tree811bc01b3abd62840d8b3bc285cca9575d50cba4 /sysdeps/generic/unwind-dw2-fde.c
parent6f59d56e61305b665aecbaab1440b07b6c80bdc7 (diff)
downloadglibc-1475e2012f267f69dab879ce146f99128fd21653.tar.gz
glibc-1475e2012f267f69dab879ce146f99128fd21653.tar.xz
glibc-1475e2012f267f69dab879ce146f99128fd21653.zip
* stdlib/tst-strtod2.c (do_test): Use %tu in fmt string for ptrdiff_t
	value.

	* stdio-common/tst-fmemopen2.c (do_test): Avoid fmt string warning
	if off_t is different rank from size_t.

	* sysdeps/generic/unwind-dw2.c (extract_cie_info, execute_cfa_program,
	uw_frame_state_for): Avoid type punning warnings.
	* sysdeps/generic/unwind-dw2-fde-glibc.c
	(_Unwind_IteratePhdrCallback): Likewise.
	* sysdeps/generic/unwind-dw2-fde.c (_Unwind_Find_FDE): Likewise.
	(binary_search_single_encoding_fdes, binary_search_mixed_encoding_fdes,
	get_cie_encoding, linear_search_fdes): Don't mix char and unsigned char
	pointers.
Diffstat (limited to 'sysdeps/generic/unwind-dw2-fde.c')
-rw-r--r--sysdeps/generic/unwind-dw2-fde.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/sysdeps/generic/unwind-dw2-fde.c b/sysdeps/generic/unwind-dw2-fde.c
index 13945b9719..8d62e46114 100644
--- a/sysdeps/generic/unwind-dw2-fde.c
+++ b/sysdeps/generic/unwind-dw2-fde.c
@@ -1,5 +1,5 @@
 /* Subroutines needed for unwinding stack frames for exception handling.  */
-/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006
+/* Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007
    Free Software Foundation, Inc.
    Contributed by Jason Merrill <jason@cygnus.com>.
 
@@ -301,7 +301,8 @@ get_cie_encoding (struct dwarf_cie *cie)
   if (aug[0] != 'z')
     return DW_EH_PE_absptr;
 
-  p = aug + strlen (aug) + 1;		/* Skip the augmentation string.  */
+  /* Skip the augmentation string.  */
+  p = aug + strlen ((const char *) aug) + 1;
   p = read_uleb128 (p, &utmp);		/* Skip code alignment.  */
   p = read_sleb128 (p, &stmp);		/* Skip data alignment.  */
   p++;					/* Skip return address column.  */
@@ -838,7 +839,7 @@ linear_search_fdes (struct object *ob, fde *this_fde, void *pc)
       else
 	{
 	  _Unwind_Ptr mask;
-	  const char *p;
+	  const unsigned char *p;
 
 	  p = read_encoded_value_with_base (encoding, base,
 					    this_fde->pc_begin, &pc_begin);
@@ -908,7 +909,7 @@ binary_search_single_encoding_fdes (struct object *ob, void *pc)
       size_t i = (lo + hi) / 2;
       fde *f = vec->array[i];
       _Unwind_Ptr pc_begin, pc_range;
-      const char *p;
+      const unsigned char *p;
 
       p = read_encoded_value_with_base (encoding, base, f->pc_begin,
 					&pc_begin);
@@ -936,7 +937,7 @@ binary_search_mixed_encoding_fdes (struct object *ob, void *pc)
       size_t i = (lo + hi) / 2;
       fde *f = vec->array[i];
       _Unwind_Ptr pc_begin, pc_range;
-      const char *p;
+      const unsigned char *p;
       int encoding;
 
       encoding = get_fde_encoding (f);
@@ -1046,6 +1047,7 @@ _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
   if (f)
     {
       int encoding;
+      _Unwind_Ptr func;
 
       bases->tbase = ob->tbase;
       bases->dbase = ob->dbase;
@@ -1054,7 +1056,8 @@ _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
       if (ob->s.b.mixed_encoding)
 	encoding = get_fde_encoding (f);
       read_encoded_value_with_base (encoding, base_from_object (encoding, ob),
-				    f->pc_begin, (_Unwind_Ptr *)&bases->func);
+				    f->pc_begin, &func);
+      bases->func = (void *) func;
     }
 
   return f;