aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@tuliptree.org>2000-05-09 01:54:37 +0000
committerJim Wilson <wilson@tuliptree.org>2000-05-09 01:54:37 +0000
commite4c58b25519f855848935f45304021af2a1b2f3b (patch)
tree4d271c4d306eca8ab01a11c0a2ed28b53ecbe375
parent72730e0ced64fe3a9864aff8de6bb688c3eaa64f (diff)
downloadgdb-e4c58b25519f855848935f45304021af2a1b2f3b.zip
gdb-e4c58b25519f855848935f45304021af2a1b2f3b.tar.gz
gdb-e4c58b25519f855848935f45304021af2a1b2f3b.tar.bz2
Unwind info bug fixes from David Mosberger.
* config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed frame size in units of 16 bytes, as required per SW Conventions manual. (output_unw_records): Output info-block header as a dword to get byte-order right.
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-ia64.c13
2 files changed, 13 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9e2c519..fbaadc0 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2000-05-08 David Mosberger <davidm@hpl.hp.com>
+
+ * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed
+ frame size in units of 16 bytes, as required per SW Conventions manual.
+ (output_unw_records): Output info-block header as a dword to get
+ byte-order right.
+
2000-05-08 Alan Modra <alan@linuxcare.com.au>
* as.h: #include "file", not <file> on files from ../include.
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 9607ef8..e109d54 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -1010,8 +1010,8 @@ output_P7_format (f, rtype, w1, w2)
switch (rtype)
{
case mem_stack_f:
- r = 0;
- count += output_leb128 (bytes + count, w2, 0);
+ r = 0;
+ count += output_leb128 (bytes + count, w2 >> 4, 0);
break;
case mem_stack_v:
r = 1;
@@ -2213,11 +2213,10 @@ output_unw_records (list, ptr)
/* Clear the padding area and personality. */
memset (mem + 8 + size, 0 , extra + 8);
/* Initialize the header area. */
- md_number_to_chars (mem, 1, 2); /* version number. */
- md_number_to_chars (mem + 2, 0x03, 2); /* Set E and U handler bits. */
-
- /* Length in double words. */
- md_number_to_chars (mem + 4, (size + extra) / 8, 4);
+ md_number_to_chars (mem, ( ((bfd_vma) 1 << 48) /* version */
+ | ((bfd_vma) 3 << 32) /* U & E handler flags */
+ | ((size + extra) / 8)), /* length (dwords) */
+ 8);
process_unw_records (list, output_vbyte_mem);