www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23344] New: std.stdio: error: undefined identifier

https://issues.dlang.org/show_bug.cgi?id=23344

          Issue ID: 23344
           Summary: std.stdio: error: undefined identifier fputc_unlocked
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

CRuntime_uClibc is marked as a GCC_IO platform in std.stdio.

https://github.com/dlang/phobos/blob/92a9d600d1c03f9ac35174dc3fd01a5d7a259c38/std/stdio.d#L86-L90

GCC_IO assumes that fputc_* and fgetc_unlocked are declared.

https://github.com/dlang/phobos/blob/92a9d600d1c03f9ac35174dc3fd01a5d7a259c38/std/stdio.d#L245-L252

This function is only declared for CRuntime_Glibc

https://github.com/dlang/dmd/blob/0e8e40fbd05323342d082541e455eb3210917a62/druntime/src/core/stdc/stdio.d#L1563-L1598

And for good reason, uClibc is by default built to expose these functions as
macros.

https://github.com/kraj/uClibc/blob/ca1c74d67dd115d059a875150e10b8560a9c35a8/extra/Configs/Config.in#L1772-L1788

Which do not exist in druntime bindings

https://github.com/dlang/dmd/blob/0e8e40fbd05323342d082541e455eb3210917a62/druntime/src/core/stdc/stdio.d#L1873-L1896

--
Sep 18 2022