[libc-commits] [libc] 6adf993 - [libc] Disable overflow test in strfromtest on riscv32 (#166719)

via libc-commits libc-commits at lists.llvm.org
Thu Nov 6 12:55:19 PST 2025


Author: Marcell Leleszi
Date: 2025-11-06T12:55:16-08:00
New Revision: 6adf99338832966dcf3477e112b158cd588ac584

URL: https://github.com/llvm/llvm-project/commit/6adf99338832966dcf3477e112b158cd588ac584
DIFF: https://github.com/llvm/llvm-project/commit/6adf99338832966dcf3477e112b158cd588ac584.diff

LOG: [libc] Disable overflow test in strfromtest on riscv32 (#166719)

Looks like https://github.com/llvm/llvm-project/pull/166517 is breaking
libc-riscv32-qemu-yocto-fullbuild-dbg build due to failing overflow test
for strfrom.
https://lab.llvm.org/buildbot/#/changes/58668

```
int result = func(buff, sizeof(buff), "%.2147483647f", 1.0f);
EXPECT_LT(result, 0);
ASSERT_ERRNO_FAILURE();
```

```
[ RUN      ] LlvmLibcStrfromdTest.CharsWrittenOverflow
/home/libcrv32buildbot/bbroot/libc-riscv32-qemu-yocto-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:493: FAILURE
       Expected: result
       Which is: 0
To be less than: 0
       Which is: 0
/home/libcrv32buildbot/bbroot/libc-riscv32-qemu-yocto-fullbuild-dbg/llvm-project/libc/test/src/stdlib/StrfromTest.h:494: FAILURE
          Expected: 0
          Which is: 0
To be not equal to: static_cast<int>(libc_errno)
          Which is: 0
[  FAILED  ] LlvmLibcStrfromdTest.CharsWrittenOverflow
Ran 8 tests.  PASS: 7  FAIL: 1
```

At first glance it seem like there is some kind of overflow in
internal::strfromfloat_convert on 32bit archs because the other overflow
test case is passing for snprintf. Interestingly, it passes on all other
buildbots, including libc-arm32-qemu-debian-dbg.

This issue likely wasn't introduced by
https://github.com/llvm/llvm-project/pull/166517 and was probably
already present, so I'm not reverting the change just disabling the test
case on riscv32 until I can debug properly.

Added: 
    

Modified: 
    libc/test/src/stdlib/CMakeLists.txt
    libc/test/src/stdlib/StrfromTest.h

Removed: 
    


################################################################################
diff  --git a/libc/test/src/stdlib/CMakeLists.txt b/libc/test/src/stdlib/CMakeLists.txt
index 0eb373c3fa061..42e8faa3fd69f 100644
--- a/libc/test/src/stdlib/CMakeLists.txt
+++ b/libc/test/src/stdlib/CMakeLists.txt
@@ -187,6 +187,7 @@ add_header_library(
   DEPENDS
     libc.src.__support.CPP.type_traits
     libc.src.__support.FPUtil.fp_bits
+    libc.src.__support.macros.properties.architectures
 )
 
 add_libc_test(

diff  --git a/libc/test/src/stdlib/StrfromTest.h b/libc/test/src/stdlib/StrfromTest.h
index fd2e0f120e90e..3dacfca9e89f9 100644
--- a/libc/test/src/stdlib/StrfromTest.h
+++ b/libc/test/src/stdlib/StrfromTest.h
@@ -8,6 +8,7 @@
 
 #include "src/__support/CPP/type_traits.h"
 #include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/macros/properties/architectures.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 #include "test/UnitTest/Test.h"
@@ -484,7 +485,9 @@ class StrfromTest : public LIBC_NAMESPACE::testing::ErrnoCheckingTest {
     ASSERT_STREQ_LEN(written, buff, "-NAN");
   }
 
+  // https://github.com/llvm/llvm-project/issues/166795
   void charsWrittenOverflow(FunctionT func) {
+#ifndef LIBC_TARGET_ARCH_IS_RISCV32
     char buff[100];
     // Trigger an overflow in the return value of strfrom by writing more than
     // INT_MAX bytes.
@@ -492,6 +495,7 @@ class StrfromTest : public LIBC_NAMESPACE::testing::ErrnoCheckingTest {
 
     EXPECT_LT(result, 0);
     ASSERT_ERRNO_FAILURE();
+#endif
   }
 };
 


        


More information about the libc-commits mailing list