From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6180A31B823 for ; Tue, 3 Feb 2026 10:30:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770114613; cv=none; b=bzKntMx+0P6yS8sCQyAInRcaetJpIWRySkPNGz7QFLNQPUyxMSYqjV40K909RRsU4wYAVLdXMSnFGE2Ao0EP7NDrONP0czcywKFmDRzrCv+lc0uIXR8/aXCuOqNZRIcEJKH7rq+f0VB7oB/UfyTitM06tYLAdvNJh5UEFUzvnSQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770114613; c=relaxed/simple; bh=ay6V8yutkgn0MHHsosFeu3Yz5vWQpBK21Vx5+nVH6EA=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=CAD3sPjFIyxzYnYMXLwfVoDkbV86UEwZRnVF1X0ZntLe9JLjpC3J5ikuTZUxF9+Cjl8+oRXBKnPsgjojTeUXClaHuYGHQK6CxMJscc4ws2MLWwabHe/Dz1xUlHKhI247sArEcjZdxWF/DEjVRCowW6j2RwGrsBDZQ1Z5tEDlDmg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h5eSrsbA; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h5eSrsbA" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4801c2fae63so41686575e9.2 for ; Tue, 03 Feb 2026 02:30:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770114611; x=1770719411; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=qDYr8NIvpvbSzohf2eKndrvWrhPa8dWtEVXAlPyfcyw=; b=h5eSrsbAXOBYqM76blgtAR0TNQkbxSBC8NbhdudnFwCzBqlJuwq59HVIdBpUUW5GHH B73OoqZ7rKXhtwHIDkotLXXlmNvs1HdGwv2e3vLm3rCTbl1duYi6whIRUkFBAbgwBcDp dpV0xIw4EaD+aA16ZvsCxfwVTQWf6vZUD40SRJMnLzwxcc0mJ4Mn6bOXc90+qGNgbL4C tmRv0Vfd1p7Dqk8DaHxh6x+DpBn92XIOvw7/yH88DsOHA8Hu2HLzshkznp1e6EeVZgV4 /fx9oyzl1qOvwi6pYJHlRmVwWlN0SQJIwZVMl6F2k1VldFx1vfDNsdFmqdS01is8mYWA 9+Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770114611; x=1770719411; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=qDYr8NIvpvbSzohf2eKndrvWrhPa8dWtEVXAlPyfcyw=; b=DBXmioWDmAewwyakUIISo0C+BYFMYoUHcfzv4IpwvT9miw57/Vno6b1sdpzMJzIYUD uqlhXyoujsh8HR4kr/UOobEv/Y7pTSMrdW6Wnj2+whihqZjRHgTL1UMqC2mBBeNgYWOw CjiFsliLp5XgGMYcsSFwyckfO3U5o9uv+wbuljD1DcRnJWxVQ6gpgSfJTU+bQsoZgzVq QyBFW4mMPBM/rWftvH5UU0svT93e6cNi3k4TpTVLCUSu+i1vw/7JwM83V6OSMgsGIQTR W+LLAIb2+zjxctej3faXj061iG+5rhZ+4mU0nzkabbql88gSNJvE3PzMjo7BLeK8Gcga u3fg== X-Forwarded-Encrypted: i=1; AJvYcCWKImrdoBfjJ3tQ98GDeYittCbi6Dw7z0HwZFTkz/S5av14fIWsReG/D3Wm6gyFXXFhxbpG/tAETurpi+A=@vger.kernel.org X-Gm-Message-State: AOJu0YzbOh3hN4sGtC0sOBl3z+EKNkquzeZoeAtAABnYbZfBxN42WE/Q DQXvH5XkdyLyqumUWwLCIKdSH9f73FBCHRwA7bdBvep/iZFe1qySZtI8 X-Gm-Gg: AZuq6aJRMwy6KwujqGbNSb/fkoouwhAO0u19KXbdUMInxw3rpP9kpDSWUs16hwazyV6 HULO5dif05ESRmDtoS+AS32qREjcLv4p6KjBdBctST3EJc15/vzfd4Feou7nv2Zx9ZauBBN932X nDh+wmWoktvNMmgxjColdAgvKePHOBChKoJa24i+cJT1sx+Gdw8uKlsPTQ3osaIsfOlruc6bshV 9T3WM8Uy5lgq+wvBqhU3VIfyj37j92GA8vlcQg67X20JUPpItIQentkh+lS8AjDZQjnUJQrd2xG 8B9QmaaGsMifZxaEVJLzCbpT06v3IsXH4zctJH/YDzPIA01ZHMKYxWowpnSkFd+Dd0hy53Y0Hqn usE7KNjAUMq7o6XkM9ma93au4imkr47+bVnImJubYNn1GHmoUEHCYijYp5FB3jzqKIyCjaA7Fzz kCLgyTgRoarBhg3l3ltCfzVuMbTI5YiWLu5p6FfM2F85bzO2Lcda2Qf7LXsQVIzkAN1jTUv59t X-Received: by 2002:a5d:5d0b:0:b0:435:8f1b:bb32 with SMTP id ffacd0b85a97d-435f3aaaac5mr20563911f8f.32.1770114610448; Tue, 03 Feb 2026 02:30:10 -0800 (PST) Received: from snowdrop.snailnet.com (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e10edf62sm55940729f8f.13.2026.02.03.02.30.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 02:30:10 -0800 (PST) From: david.laight.linux@gmail.com To: Willy Tarreau , =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= , linux-kernel@vger.kernel.org, Cheng Li Cc: David Laight Subject: [PATCH next 00/12] tools/nolibc: Enhance printf() Date: Tue, 3 Feb 2026 10:29:48 +0000 Message-Id: <20260203103000.20206-1-david.laight.linux@gmail.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: David Laight Update printf() so that it handles almost all the non-fp formats. In particular: - Left alignment. - Zero padding. - Field precision. - Variable field width and precision. - Width modifiers q, L, t and z. - Conversion specifiers i and X (X generates lower case). About the only thing that is missing is octal. The tests are updated to match. There is a slight increase in code size, but it is minimalised by the the heavy use of bit-pattern matches. vfprintf() is modified to buffer data for each call and do a single write system call at the end. This improves performance somewhat, but is actually most useful when using strace. David Laight (12): tools/nolibc/printf: Move snprintf length check to callback tools/nolibc/printf: Add buffering to vfprintf() callback. tools/nolibc: change printf() to output pad in 16 byte chunks selftests/nolibc: Improve reporting of vfprintf() errors tools/nolibc/stdio: Simplify __nolibc_printf() tools/nolibc: Add support for left alignment and %[tzq]d" to printf tools/nolibc: printf() prepend the sign after a numeric conversion tools/nolibc: use bit-match to detect valid printf conversion character tools/nolibc: add precision and zero padding to printf() tools/nolibc: Use bit-pattern for printf integral formats selftests/nolibc: Increase coverage of printf format tests selftests/nolibc: Use printf("%.*s", n, "") to align output tools/include/nolibc/stdio.h | 396 +++++++++++++------ tools/testing/selftests/nolibc/nolibc-test.c | 96 +++-- 2 files changed, 336 insertions(+), 156 deletions(-) -- 2.39.5