* gnu/packages/patches/gnupg.scm (libgpg-error)[source]: Add patch. * gnu/packages/patches/libgpg-error-aarch64-logging-fix.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it.
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=patch;h=791177de023574223eddf7288eb7c5a0721ac623
 | 
						|
 | 
						|
From 791177de023574223eddf7288eb7c5a0721ac623 Mon Sep 17 00:00:00 2001
 | 
						|
From: Werner Koch <wk@gnupg.org>
 | 
						|
Date: Sun, 18 Mar 2018 17:39:43 +0100
 | 
						|
Subject: [PATCH] core: Fix regression on arm64 due to invalid use of va_list.
 | 
						|
 | 
						|
* src/logging.c (_gpgrt_log_printhex): Provide a dummy arg instead of
 | 
						|
NULL.
 | 
						|
--
 | 
						|
 | 
						|
Fix
 | 
						|
Suggested-by: Jakub Wilk <jwilk@jwilk.net>
 | 
						|
 | 
						|
Signed-off-by: Werner Koch <wk@gnupg.org>
 | 
						|
---
 | 
						|
 src/logging.c | 18 ++++++++++++++----
 | 
						|
 1 file changed, 14 insertions(+), 4 deletions(-)
 | 
						|
 | 
						|
diff --git a/src/logging.c b/src/logging.c
 | 
						|
index 1a4f620..d01f974 100644
 | 
						|
--- a/src/logging.c
 | 
						|
+++ b/src/logging.c
 | 
						|
@@ -1090,9 +1090,10 @@ _gpgrt_log_flush (void)
 | 
						|
 
 | 
						|
 
 | 
						|
 /* Print a hexdump of (BUFFER,LENGTH).  With FMT passed as NULL print
 | 
						|
- * just the raw dump, with FMT being an empty string, print a trailing
 | 
						|
- * linefeed, otherwise print an entire debug line with the expanded
 | 
						|
- * FMT followed by a possible wrapped hexdump and a final LF.  */
 | 
						|
+ * just the raw dump (in this case ARG_PTR is not used), with FMT
 | 
						|
+ * being an empty string, print a trailing linefeed, otherwise print
 | 
						|
+ * an entire debug line with the expanded FMT followed by a possible
 | 
						|
+ * wrapped hexdump and a final LF.  */
 | 
						|
 void
 | 
						|
 _gpgrt_logv_printhex (const void *buffer, size_t length,
 | 
						|
                       const char *fmt, va_list arg_ptr)
 | 
						|
@@ -1150,7 +1151,16 @@ _gpgrt_log_printhex (const void *buffer, size_t length,
 | 
						|
       va_end (arg_ptr);
 | 
						|
     }
 | 
						|
   else
 | 
						|
-    _gpgrt_logv_printhex (buffer, length, NULL, NULL);
 | 
						|
+    {
 | 
						|
+      /* va_list is not necessary a pointer and thus we can't use NULL
 | 
						|
+       * because that would conflict with platforms using a straight
 | 
						|
+       * struct for it (e.g. arm64).  We use a dummy variable instead;
 | 
						|
+       * the static is a simple way zero it out so to not get
 | 
						|
+       * complains about uninitialized use.  */
 | 
						|
+      static va_list dummy_argptr;
 | 
						|
+
 | 
						|
+      _gpgrt_logv_printhex (buffer, length, NULL, dummy_argptr);
 | 
						|
+    }
 | 
						|
 }
 | 
						|
 
 | 
						|
 
 | 
						|
-- 
 | 
						|
2.8.0.rc3
 | 
						|
 |