@@ -93,27 +93,24 @@ fn gen_config_file(config_dir: &Path) -> Result<()> {
9393 writeln ! ( file, "#define __NEWLIB__ 4" ) ?;
9494 writeln ! ( file, "#define __NEWLIB_MINOR__ 3" ) ?;
9595 writeln ! ( file, "#define __NEWLIB_PATCHLEVEL__ 0" ) ?;
96- writeln ! ( file, "#define __PICOLIBC_VERSION__ \" 1.8.10 \" " ) ?;
96+ writeln ! ( file, "#define __PICOLIBC_VERSION__ \" 1.8.11 \" " ) ?;
9797 writeln ! ( file, "#define __PICOLIBC__ 1" ) ?;
9898 writeln ! ( file, "#define __PICOLIBC_MINOR__ 8" ) ?;
99- writeln ! ( file, "#define __PICOLIBC_PATCHLEVEL__ 10 " ) ?;
99+ writeln ! ( file, "#define __PICOLIBC_PATCHLEVEL__ 11 " ) ?;
100100 writeln ! ( file) ?;
101101
102102 // Static configuration
103103 writeln ! ( file, "#define __ASSERT_VERBOSE" ) ?;
104104 writeln ! ( file, "#define __SINGLE_THREAD" ) ?; // -Dsingle-thread=true
105105 writeln ! ( file, "#define __GLOBAL_ERRNO" ) ?; // -Dnewlib-global-errno=true
106106 writeln ! ( file, "#define __INIT_FINI_ARRAY" ) ?; // -Dinitfini-array=true
107- writeln ! ( file, "#define __TINY_STDIO" ) ?; // -Dtinystdio=true
108- writeln ! ( file, "#define __IO_DEFAULT 'd'" ) ?; // -Dformat-default=d (full printf functionality)
109- writeln ! ( file, "#define __IO_FLOAT_EXACT" ) ?; // tinystdio default
107+ writeln ! ( file, "#define __TINY_STDIO" ) ?; // tinystdio is now the only stdio
108+ writeln ! ( file, "#define __IO_DEFAULT 'd'" ) ?; // -Dformat-default=double
109+ writeln ! ( file, "#define __IO_FLOAT_EXACT" ) ?; // default
110110 writeln ! ( file, "#define __IO_WCHAR" ) ?; // -Dio-wchar=true
111111 writeln ! ( file, "#define __IEEE_LIBM" ) ?; // math library without errno
112112 writeln ! ( file, "#define __FAST_STRCMP" ) ?; // default optimization
113- writeln ! ( file, "#define __PICO_EXIT" ) ?; // picoexit enabled by default
114113 writeln ! ( file, "#define __FAST_BUFIO" ) ?; // -Dfast-bufio=true
115-
116- // tinystdio-specific settings
117114 writeln ! ( file, "#define __IO_SMALL_ULTOA" ) ?; // avoid division in conversion
118115
119116 for test in & [
@@ -171,8 +168,8 @@ fn gen_config_file(config_dir: &Path) -> Result<()> {
171168 writeln ! ( file, "#undef __THREAD_LOCAL_STORAGE_API" ) ?;
172169 writeln ! ( file, "#undef __THREAD_LOCAL_STORAGE_RP2040" ) ?;
173170 writeln ! ( file, "#undef __THREAD_LOCAL_STORAGE_STACK_GUARD" ) ?;
174- writeln ! ( file, "#undef __NANO_MALLOC " ) ?; // -Dnewlib-nano -malloc=false
175- writeln ! ( file, "#undef __NANO_MALLOC_CLEAR_FREED " ) ?;
171+ writeln ! ( file, "#undef __ENABLE_MALLOC " ) ?; // -Denable -malloc=false
172+ writeln ! ( file, "#undef __MALLOC_CLEAR_FREED " ) ?;
176173 writeln ! ( file, "#undef __MB_CAPABLE" ) ?; // no multibyte support
177174 writeln ! ( file, "#undef __HAVE_FCNTL" ) ?; // freestanding environment
178175 writeln ! ( file, "#undef __STDIO_LOCKING" ) ?; // single-thread
@@ -249,7 +246,8 @@ fn cc_build(picolibc_dir: &PathBuf, target: &str) -> Result<cc::Build> {
249246 . flag_if_supported ( "-frounding-math" )
250247 . flag_if_supported ( "-fsignaling-nans" )
251248 . flag_if_supported ( "-fno-builtin-copysignl" )
252- . flag_if_supported ( "-mstack-protector-guard=global" ) ;
249+ . flag_if_supported ( "-mstack-protector-guard=global" )
250+ . flag_if_supported ( "-fstrict-flex-arrays=3" ) ;
253251
254252 build
255253 . flag ( "-U_FORTIFY_SOURCE" )
@@ -263,12 +261,12 @@ fn cc_build(picolibc_dir: &PathBuf, target: &str) -> Result<cc::Build> {
263261 // but how downstream crates get at it then? And TBH I think having piclibc
264262 // headers (features.h) depend on a build time header is wrong is odd to say
265263 // at least.
266- gen_config_file ( & picolibc_dir. join ( "newlib/ libc/include" ) ) ?;
264+ gen_config_file ( & picolibc_dir. join ( "libc/include" ) ) ?;
267265
268266 match target {
269267 "x86" | "x86_64" => {
270- build. include ( picolibc_dir. join ( "newlib/ libm/machine/x86" ) ) ;
271- build. include ( picolibc_dir. join ( "newlib/ libc/machine/x86" ) ) ;
268+ build. include ( picolibc_dir. join ( "libm/machine/x86" ) ) ;
269+ build. include ( picolibc_dir. join ( "libc/machine/x86" ) ) ;
272270 }
273271 arch => {
274272 bail ! ( "Unsupported target architecture: {arch}" ) ;
@@ -277,9 +275,9 @@ fn cc_build(picolibc_dir: &PathBuf, target: &str) -> Result<cc::Build> {
277275
278276 build
279277 . include ( picolibc_dir)
280- . include ( picolibc_dir. join ( "newlib/ libc/tinystdio " ) )
281- . include ( picolibc_dir. join ( "newlib/ libc/locale" ) )
282- . include ( picolibc_dir. join ( "newlib/ libc/include" ) ) ;
278+ . include ( picolibc_dir. join ( "libc/stdio " ) )
279+ . include ( picolibc_dir. join ( "libc/locale" ) )
280+ . include ( picolibc_dir. join ( "libc/include" ) ) ;
283281
284282 Ok ( build)
285283}
@@ -292,7 +290,7 @@ fn add_libc(build: &mut cc::Build, picolibc_dir: &Path, target: &str) -> Result<
292290 } ;
293291
294292 for file in files {
295- let source_path = picolibc_dir. join ( "newlib/ libc" ) . join ( file) ;
293+ let source_path = picolibc_dir. join ( "libc" ) . join ( file) ;
296294 build. file ( & source_path) ;
297295 }
298296
@@ -301,8 +299,7 @@ fn add_libc(build: &mut cc::Build, picolibc_dir: &Path, target: &str) -> Result<
301299}
302300
303301fn add_libm ( build : & mut cc:: Build , picolibc_dir : & Path , target : & str ) -> Result < ( ) > {
304- build. include ( picolibc_dir. join ( "newlib" ) ) ;
305- build. include ( picolibc_dir. join ( "newlib/libm/common" ) ) ;
302+ build. include ( picolibc_dir. join ( "libm/common" ) ) ;
306303
307304 let base = LIBM_FILES . iter ( ) ;
308305 let files = match target {
@@ -311,7 +308,7 @@ fn add_libm(build: &mut cc::Build, picolibc_dir: &Path, target: &str) -> Result<
311308 } ;
312309
313310 for file in files {
314- let source_path = picolibc_dir. join ( "newlib/ libm" ) . join ( file) ;
311+ let source_path = picolibc_dir. join ( "libm" ) . join ( file) ;
315312 build. file ( & source_path) ;
316313 }
317314
@@ -383,7 +380,7 @@ fn cargo_main() -> Result<()> {
383380 }
384381
385382 build. compile ( "hyperlight_guest_bin" ) ;
386- copy_includes ( & include_dir, "third_party/picolibc/newlib/ libc/include" ) ?;
383+ copy_includes ( & include_dir, "third_party/picolibc/libc/include" ) ?;
387384 }
388385
389386 let include_str = include_dir
0 commit comments