aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames E Wilson <wilson@specifixinc.com>2004-02-09 21:20:33 +0000
committerJim Wilson <wilson@gcc.gnu.org>2004-02-09 13:20:33 -0800
commit664fc5df4a28cebf52350cd4496279c53dd28f88 (patch)
treefefb27a59af4e680b89abfaa0cee88b37099b620
parentc76362b488fac9643f1ca0d549ea6151fd28ba5b (diff)
downloadgcc-664fc5df4a28cebf52350cd4496279c53dd28f88.zip
gcc-664fc5df4a28cebf52350cd4496279c53dd28f88.tar.gz
gcc-664fc5df4a28cebf52350cd4496279c53dd28f88.tar.bz2
re PR libstdc++/5625 ([mips] exception unwinding creates invalid pointer on mips)
PR libstdc++/5625 * libsuspc++/eh_personality.cc (PERSONALITY_FUNCTION): Use __builtin_extend_pointer. From-SVN: r77555
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/libsupc++/eh_personality.cc4
2 files changed, 9 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 35cfcc3..e18aff6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-09 James E Wilson <wilson@specifixinc.com>
+
+ PR libstdc++/5625
+ * libsuspc++/eh_personality.cc (PERSONALITY_FUNCTION): Use
+ __builtin_extend_pointer.
+
2004-02-09 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/14072
diff --git a/libstdc++-v3/libsupc++/eh_personality.cc b/libstdc++-v3/libsupc++/eh_personality.cc
index 9cf96f4..4d5ae57 100644
--- a/libstdc++-v3/libsupc++/eh_personality.cc
+++ b/libstdc++-v3/libsupc++/eh_personality.cc
@@ -443,8 +443,10 @@ PERSONALITY_FUNCTION (int version,
}
}
+ /* For targets with pointers smaller than the word size, we must extend the
+ pointer, and this extension is target dependent. */
_Unwind_SetGR (context, __builtin_eh_return_data_regno (0),
- (_Unwind_Ptr) &xh->unwindHeader);
+ __builtin_extend_pointer (&xh->unwindHeader));
_Unwind_SetGR (context, __builtin_eh_return_data_regno (1),
handler_switch_value);
_Unwind_SetIP (context, landing_pad);