Skip to content

Commit 0e8b25c

Browse files
committed
Fix baremetal impl
1 parent f8cb702 commit 0e8b25c

File tree

14 files changed

+35
-5
lines changed

14 files changed

+35
-5
lines changed

libc/include/llvm-libc-macros/generic-error-number-macros.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#define EPIPE 32
4444
#define EDOM 33
4545
#define ERANGE 34
46+
#define EOVERFLOW 75
4647
#define EILSEQ 84
4748

4849
#endif // LLVM_LIBC_MACROS_GENERIC_ERROR_NUMBER_MACROS_H

libc/src/stdio/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ add_entrypoint_object(
126126
libc.src.stdio.printf_core.printf_main
127127
libc.src.stdio.printf_core.writer
128128
libc.src.stdio.printf_core.core_structs
129+
libc.src.__support.libc_errno
130+
libc.hdr.errno_macros
129131
)
130132

131133
add_entrypoint_object(
@@ -138,6 +140,8 @@ add_entrypoint_object(
138140
libc.src.stdio.printf_core.printf_main
139141
libc.src.stdio.printf_core.writer
140142
libc.src.stdio.printf_core.core_structs
143+
libc.src.__support.libc_errno
144+
libc.hdr.errno_macros
141145
)
142146

143147
add_entrypoint_object(
@@ -149,6 +153,8 @@ add_entrypoint_object(
149153
DEPENDS
150154
libc.src.stdio.printf_core.vasprintf_internal
151155
libc.src.stdio.printf_core.core_structs
156+
libc.src.__support.libc_errno
157+
libc.hdr.errno_macros
152158
)
153159

154160
add_entrypoint_object(
@@ -173,6 +179,8 @@ add_entrypoint_object(
173179
libc.src.stdio.printf_core.printf_main
174180
libc.src.stdio.printf_core.writer
175181
libc.src.stdio.printf_core.core_structs
182+
libc.src.__support.libc_errno
183+
libc.hdr.errno_macros
176184
)
177185

178186
add_entrypoint_object(
@@ -184,6 +192,8 @@ add_entrypoint_object(
184192
DEPENDS
185193
libc.src.stdio.printf_core.vasprintf_internal
186194
libc.src.stdio.printf_core.core_structs
195+
libc.src.__support.libc_errno
196+
libc.hdr.errno_macros
187197
)
188198

189199
add_subdirectory(printf_core)

libc/src/stdio/asprintf.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "src/stdio/asprintf.h"
10+
#include "hdr/errno_macros.h"
1011
#include "src/__support/arg_list.h"
12+
#include "src/__support/libc_errno.h"
1113
#include "src/__support/macros/config.h"
1214
#include "src/stdio/printf_core/vasprintf_internal.h"
1315

libc/src/stdio/baremetal/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ add_entrypoint_object(
3131
libc.src.stdio.printf_core.writer
3232
libc.src.__support.arg_list
3333
libc.src.__support.OSUtil.osutil
34+
libc.src.__support.libc_errno
3435
)
3536

3637
add_entrypoint_object(
@@ -89,6 +90,7 @@ add_entrypoint_object(
8990
libc.src.stdio.printf_core.writer
9091
libc.src.__support.arg_list
9192
libc.src.__support.OSUtil.osutil
93+
libc.src.__support.libc_errno
9294
)
9395

9496
add_entrypoint_object(

libc/src/stdio/baremetal/printf.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "src/stdio/printf.h"
1010
#include "src/__support/OSUtil/io.h"
1111
#include "src/__support/arg_list.h"
12+
#include "src/__support/libc_errno.h"
1213
#include "src/__support/macros/config.h"
1314
#include "src/stdio/printf_core/core_structs.h"
1415
#include "src/stdio/printf_core/printf_main.h"
@@ -44,13 +45,13 @@ LLVM_LIBC_FUNCTION(int, printf, (const char *__restrict format, ...)) {
4445

4546
auto retval = printf_core::printf_main(&writer, format, args);
4647
if (!retval.has_value()) {
47-
libc_errno = retval.error(); // TODO map
48+
libc_errno = printf_core::internal_error_to_errno(retval.error());
4849
return -1;
4950
}
5051

5152
int flushval = wb.overflow_write("");
5253
if (flushval != printf_core::WRITE_OK) {
53-
libc_errno = -flushval; // TODO map
54+
libc_errno = printf_core::internal_error_to_errno(-flushval);
5455
return -1;
5556
}
5657

libc/src/stdio/baremetal/vprintf.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "src/stdio/vprintf.h"
10+
#include "hdr/errno_macros.h"
1011
#include "src/__support/OSUtil/io.h"
1112
#include "src/__support/arg_list.h"
13+
#include "src/__support/libc_errno.h"
1214
#include "src/__support/macros/config.h"
1315
#include "src/stdio/printf_core/core_structs.h"
1416
#include "src/stdio/printf_core/printf_main.h"
@@ -42,13 +44,13 @@ LLVM_LIBC_FUNCTION(int, vprintf,
4244

4345
auto retval = printf_core::printf_main(&writer, format, args);
4446
if (!retval.has_value()) {
45-
libc_errno = retval.error(); // TODO map
47+
libc_errno = printf_core::internal_error_to_errno(retval.error());
4648
return -1;
4749
}
4850

4951
int flushval = wb.overflow_write("");
5052
if (flushval != printf_core::WRITE_OK) {
51-
libc_errno = -flushval; // TODO map
53+
libc_errno = printf_core::internal_error_to_errno(-flushval);
5254
return -1;
5355
}
5456

libc/src/stdio/printf_core/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ add_header_library(
4848
libc.src.__support.CPP.string_view
4949
libc.src.__support.FPUtil.fp_bits
5050
libc.hdr.types.FILE
51+
libc.hdr.errno_macros
5152
libc.src.__support.File.file
5253
)
5354

libc/src/stdio/printf_core/core_structs.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "src/__support/macros/config.h"
1313

14+
#include "hdr/errno_macros.h"
1415
#include "hdr/types/FILE.h"
1516
#include "src/__support/CPP/string_view.h"
1617
#include "src/__support/CPP/type_traits.h"

libc/src/stdio/snprintf.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
#include "src/stdio/snprintf.h"
1010

11+
#include "hdr/errno_macros.h"
1112
#include "src/__support/arg_list.h"
13+
#include "src/__support/libc_errno.h"
1214
#include "src/__support/macros/config.h"
1315
#include "src/stdio/printf_core/core_structs.h"
1416
#include "src/stdio/printf_core/printf_main.h"

libc/src/stdio/sprintf.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88

99
#include "src/stdio/sprintf.h"
1010

11+
#include "hdr/errno_macros.h"
1112
#include "src/__support/CPP/limits.h"
1213
#include "src/__support/arg_list.h"
14+
#include "src/__support/libc_errno.h"
1315
#include "src/__support/macros/config.h"
1416
#include "src/stdio/printf_core/core_structs.h"
1517
#include "src/stdio/printf_core/printf_main.h"

0 commit comments

Comments
 (0)