[libc-commits] [PATCH] D150026: [libc] Use Linux errno and signal strings for Fuchsia

Roland McGrath via Phabricator via libc-commits libc-commits at lists.llvm.org
Mon May 22 13:09:55 PDT 2023


mcgrathr added inline comments.


================
Comment at: libc/src/__support/StringUtil/tables/error_table.h:32
+    return STDC_ERRORS + POSIX_ERRORS + LINUX_ERRORS;
+  } else {
+    return STDC_ERRORS;
----------------
sivachandra wrote:
> If the `else` path is taken here, then `LINUX_ERRORS` will not be included and will lead to a build error. Do you have any suggestions on how to handle this? Following is an idea that comes to my mind.
> 
> I prefer to reduce the number of conditionals and use a more explicit structure like this.
> 
> 1. The errors, as specified by the various [de facto] standards, can stay as they are today:
> ```
>     tables/
>         stdc_errors.h
>         posix_errors.h
>         linux_extension_errors.h
> ```
> 
> 2. We will add couple more tables (more can be added in future):
> ```
>     tables/
>         ...
>         linux_platform_errors.h
>         minimal_platform_errors.h
> ```
> 
> 3. `linux_platform_errors.h` will include `stdc_errors.h`,`posix_errors.h` and `linux_extension_errors.h` and define `PLATFORM_ERRORS` as
> ```
>     PLATFORM_ERRORS = STDC_ERRORS + POSIX_ERRORS + LINUX_ERRORS;
> ```
> 
> 4. `minimal_platform_errors.h` will include only `stdc_errors.h` and define `PLATFORM_ERRORS` as:
> ```
>     PLATFORM_ERRORS = STDC_ERRORS;
> ```
> 
> 5. In the parent directly, we will add a new file named `platform_errors.h` which will have the following structure:
> ```
> #if defined(__linux__) || defined(__Fuchsia__)
> #include "tables/linux_platform_errors.h"
> #else
> #include "tables/minimal_platform_errors.h"
> #endif
> ```
> 
> In effect, there is only one condtional confined to `platform_errors.h`.
That sounds fine to me.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D150026/new/

https://reviews.llvm.org/D150026



More information about the libc-commits mailing list