Skip to content

Commit fb1549f

Browse files
committed
bump picolibc to 1.8.11
Signed-off-by: Tomasz Andrzejak <andreiltd@gmail.com>
1 parent 16db912 commit fb1549f

File tree

6 files changed

+462
-443
lines changed

6 files changed

+462
-443
lines changed

NOTICE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Component. picolibc
77
picolibc is a C library designed for embedded systems, derived from newlib.
88
https://github.com/picolibc/picolibc
99

10-
Version: 1.8.10
10+
Version: 1.8.11
1111

1212
Open Source License/Copyright Notice.
1313

c.just

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mkdir := if os() == "windows" { "mkdir -f -p" } else { "mkdir -p"}
33
# Elf options
44
# We don't support stack protectors at the moment, but Arch Linux clang auto-enables them for -linux platforms, so explicitly disable them.
55
c-compile-options-elf := '-nostdlibinc -H --target=x86_64-unknown-linux-none -fno-stack-protector -fstack-clash-protection -mstack-probe-size=4096 -fPIC'
6-
c-include-flags-elf := "-I " + root / "src/hyperlight_guest_capi/include/" + " -I " + root / "src/hyperlight_guest_bin/third_party/picolibc/newlib/libc/include/" + " -I " + root / "src/hyperlight_guest_bin/third_party/picolibc/newlib/libc/tinystdio/"
6+
c-include-flags-elf := "-I " + root / "src/hyperlight_guest_capi/include/" + " -I " + root / "src/hyperlight_guest_bin/third_party/picolibc/libc/include/" + " -I " + root / "src/hyperlight_guest_bin/third_party/picolibc/libc/stdio/"
77
c-linker-options-elf := '--entry "entrypoint" --nostdlib -pie --no-dynamic-linker'
88
c-flags-debug-elf := '-O0'
99
c-flags-release-elf := '-O3'

src/hyperlight_guest_bin/build.rs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

303301
fn 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

Comments
 (0)