From e4c58b25519f855848935f45304021af2a1b2f3b Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Tue, 9 May 2000 01:54:37 +0000 Subject: [PATCH] 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. --- gas/ChangeLog | 7 +++++++ 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 + + * 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 * as.h: #include "file", not 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); -- 2.7.4