diff options
author | Jim Wilson <wilson@tuliptree.org> | 2000-05-09 01:54:37 +0000 |
---|---|---|
committer | Jim Wilson <wilson@tuliptree.org> | 2000-05-09 01:54:37 +0000 |
commit | e4c58b25519f855848935f45304021af2a1b2f3b (patch) | |
tree | 4d271c4d306eca8ab01a11c0a2ed28b53ecbe375 /gas | |
parent | 72730e0ced64fe3a9864aff8de6bb688c3eaa64f (diff) | |
download | gdb-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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 13 |
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); |