diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index 958694a3d5eda256a7715603a7fa1a0193923149..4289e17c8724b84c4ea1d7196c1d5f3bbc96df9e 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -347,6 +347,17 @@ struct layout
 #define PC_ADJUST -2
 /* The minimum size of call instructions on this architecture is 2 bytes */
 
+/*----------------------------- ia64 ---------------------------------*/
+
+#elif defined (__ia64__)
+
+#define USE_GCC_UNWINDER
+
+#define PC_ADJUST -16
+/* Every call on ia64 is part of a 128 bit bundle, so an adjustment of
+   minus 16 bytes from the point of return finds the address of the
+   previous bundle. */
+
 #endif
 
 /*---------------------------------------------------------------------*