about summary refs log tree commit diff
path: root/sysdeps/generic/unwind-dw2.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-04-07 07:02:20 +0000
committerUlrich Drepper <drepper@redhat.com>2006-04-07 07:02:20 +0000
commit616d91335a8be5fda715a34dac48bb067d77b523 (patch)
treec1fff0833a3adb6b8ea83453aabadfb7acbedb69 /sysdeps/generic/unwind-dw2.c
parent0292b0dd6c85436fb10df5a77bde53ad4c298a6b (diff)
downloadglibc-616d91335a8be5fda715a34dac48bb067d77b523.tar.gz
glibc-616d91335a8be5fda715a34dac48bb067d77b523.tar.xz
glibc-616d91335a8be5fda715a34dac48bb067d77b523.zip
* elf/ldconfig.c (main): Use rawmemchr instead of strchr.
	* nis/nis_call.c (rec_dirsearch): Likewise.
	* nis/nis_local_names.c (nis_local_host): Likewise.
	(nis_local_directory): Likewise.
	* intl/explodename.c (_nl_explode_name): Likewise.

	* sysdeps/generic/unwind-dw2.c (execute_cfa_program): Don't handle
	DW_CFA_GNU_windiw_save if it obviously cannot work [Coverity CID 102].

	* locale/programs/ld-address.c (address_finish): Fix conditions
	for error messages [Coverity CID 104].
Diffstat (limited to 'sysdeps/generic/unwind-dw2.c')
-rw-r--r--sysdeps/generic/unwind-dw2.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c
index 301b53176e..3fc0d931e9 100644
--- a/sysdeps/generic/unwind-dw2.c
+++ b/sysdeps/generic/unwind-dw2.c
@@ -1,5 +1,5 @@
 /* DWARF2 exception handling and frame unwind runtime interface routines.
-   Copyright (C) 1997,1998,1999,2000,2001,2002,2003,2005
+   Copyright (C) 1997,1998,1999,2000,2001,2002,2003,2005,2006
    	Free Software Foundation, Inc.
 
    This file is part of the GNU C Library.
@@ -897,12 +897,16 @@ execute_cfa_program (const unsigned char *insn_ptr,
 	  break;
 
 	case DW_CFA_GNU_window_save:
-	  /* ??? Hardcoded for SPARC register window configuration.  */
+	  /* ??? Hardcoded for SPARC register window configuration.
+	     At least do not do anything for archs which explicitly
+	     define a lower register number.  */
+#if DWARF_FRAME_REGISTERS < 32
 	  for (reg = 16; reg < 32; ++reg)
 	    {
 	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
 	      fs->regs.reg[reg].loc.offset = (reg - 16) * sizeof (void *);
 	    }
+#endif
 	  break;
 
 	case DW_CFA_GNU_args_size: