[newlib-cygwin] Cygwin: exceptions: print 48 bit addresses

Corinna Vinschen corinna@sourceware.org
Fri Oct 28 14:24:26 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=b9e97f58aa4f0ed8449caed6e215b3d0cb629254

commit b9e97f58aa4f0ed8449caed6e215b3d0cb629254
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Fri Oct 28 16:24:00 2022 +0200

    Cygwin: exceptions: print 48 bit addresses
    
    Exception handling was *still* printing addresses as 44 bit values,
    but Windows supports a 48 bit virtual address space since Windows
    8.1.  Fix that.
    
    Fixes: e1254add73b1 ("Cygwin: Allow accessing 48 bit address space in Windows 8.1 or later")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/exceptions.cc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 1c59b1597..e6f868511 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -195,9 +195,9 @@ cygwin_exception::dump_exception ()
 
 #ifdef __x86_64__
   if (exception_name)
-    small_printf ("Exception: %s at rip=%011X\r\n", exception_name, ctx->Rip);
+    small_printf ("Exception: %s at rip=%012X\r\n", exception_name, ctx->Rip);
   else
-    small_printf ("Signal %d at rip=%011X\r\n", e->ExceptionCode, ctx->Rip);
+    small_printf ("Signal %d at rip=%012X\r\n", e->ExceptionCode, ctx->Rip);
   small_printf ("rax=%016X rbx=%016X rcx=%016X\r\n",
 		ctx->Rax, ctx->Rbx, ctx->Rcx);
   small_printf ("rdx=%016X rsi=%016X rdi=%016X\r\n",
@@ -345,10 +345,10 @@ cygwin_exception::dumpstack ()
       small_printf ("Stack trace:\r\nFrame        Function    Args\r\n");
       for (i = 0; i < DUMPSTACK_FRAME_LIMIT && thestack++; i++)
 	{
-	  small_printf ("%011X  %011X", thestack.sf.AddrFrame.Offset,
+	  small_printf ("%012X  %012X", thestack.sf.AddrFrame.Offset,
 			thestack.sf.AddrPC.Offset);
 	  for (unsigned j = 0; j < NPARAMS; j++)
-	    small_printf ("%s%011X", j == 0 ? " (" : ", ",
+	    small_printf ("%s%012X", j == 0 ? " (" : ", ",
 			  thestack.sf.Params[j]);
 	  small_printf (")\r\n");
 	}


More information about the Cygwin-cvs mailing list