]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
VEX: Add function vex_vsprintf.
authorFlorian Krohm <flo2030@eich-krohm.de>
Fri, 26 Dec 2025 20:24:50 +0000 (20:24 +0000)
committerFlorian Krohm <flo2030@eich-krohm.de>
Fri, 26 Dec 2025 20:24:50 +0000 (20:24 +0000)
Small pre-patch for objdump-based disassembly.

Part of fixing https://bugs.kde.org/show_bug.cgi?id=510840

VEX/priv/main_util.c
VEX/priv/main_util.h

index 8d99eab83fd0c7c281f34893a217576c244c74c0..3d7ccb168b30288e4b8eb5f148b18b5e5e5984ec 100644 (file)
@@ -258,10 +258,6 @@ void vpanic ( const HChar* str )
 /*--- vex_printf                                        ---*/
 /*---------------------------------------------------------*/
 
-/* This should be the only <...> include in the entire VEX library.
-   New code for vex_util.c should go above this point. */
-#include <stdarg.h>
-
 SizeT vex_strlen ( const HChar* str )
 {
    SizeT i = 0;
@@ -609,18 +605,25 @@ static void add_to_vg_sprintf_buf ( HChar c )
    *vg_sprintf_ptr++ = c;
 }
 
-UInt vex_sprintf ( HChar* buf, const HChar *format, ... )
+UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs )
 {
-   Int ret;
-   va_list vargs;
+   UInt ret;
 
    vg_sprintf_ptr = buf;
+   ret = vprintf_wrk(add_to_vg_sprintf_buf, format, vargs);
+   add_to_vg_sprintf_buf('\0');
 
-   va_start(vargs,format);
+   vassert(vex_strlen(buf) == ret);
+   return ret;
+}
 
-   ret = vprintf_wrk ( add_to_vg_sprintf_buf, format, vargs );
-   add_to_vg_sprintf_buf(0);
+UInt vex_sprintf ( HChar* buf, const HChar *format, ... )
+{
+   UInt ret;
+   va_list vargs;
 
+   va_start(vargs,format);
+   ret = vex_vsprintf(buf, format, vargs);
    va_end(vargs);
 
    vassert(vex_strlen(buf) == ret);
index 4abae5440e4ad80a872b96820216adfa596ffa0b..9d278305f8190bca5f027353f9a9963be0e07d72 100644 (file)
@@ -34,6 +34,9 @@
 #ifndef __VEX_MAIN_UTIL_H
 #define __VEX_MAIN_UTIL_H
 
+/* This should be the only <...> include in the entire VEX library. */
+#include <stdarg.h>
+
 #include "libvex_basictypes.h"
 
 #include "libvex_inner.h"
@@ -92,6 +95,9 @@ extern UInt vex_printf ( const HChar *format, ... );
 __attribute__ ((format (printf, 2, 3)))
 extern UInt vex_sprintf ( HChar* buf, const HChar *format, ... );
 
+__attribute__ ((format (printf, 2, 0)))
+extern UInt vex_vsprintf ( HChar* buf, const HChar* format, va_list vargs );
+
 
 /* String ops */