diff --git a/kernel/.cargo/config.toml b/kernel/.cargo/config.toml index 5c216cc97..c12d67fb7 100644 --- a/kernel/.cargo/config.toml +++ b/kernel/.cargo/config.toml @@ -6,8 +6,7 @@ runner = "bootimage runner" [build] -# '-Zlinker-features=-lld' 禁用rustlld(20240723),因为它与linkme0.3版本冲突 -rustflags = ["-Zlinker-features=-lld"] -rustdocflags = ["-Zlinker-features=-lld"] +rustflags = ["-Clink-args=-znostart-stop-gc"] +rustdocflags = ["-Clink-args=-znostart-stop-gc"] [env] diff --git a/kernel/Makefile b/kernel/Makefile index e13a8ba3e..be85d3e7b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -36,12 +36,12 @@ check: ECHO # @echo "Checking kernel... ARCH=$(ARCH)" # @exit 1 ifeq ($(ARCH), x86_64) - @cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target ./src/$(TARGET_JSON) else ifeq ($(ARCH), riscv64) - @cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target $(TARGET_JSON) + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-07-23 check --workspace $(CARGO_ZBUILD) --message-format=json --target $(TARGET_JSON) endif test: # 测试内核库 - @cargo +nightly-2024-07-23 test --workspace --exclude dragonos_kernel + RUSTFLAGS="$(RUSTFLAGS)" cargo +nightly-2024-07-23 test --workspace --exclude dragonos_kernel diff --git a/kernel/src/process/exec.rs b/kernel/src/process/exec.rs index 236103cd4..12af4c339 100644 --- a/kernel/src/process/exec.rs +++ b/kernel/src/process/exec.rs @@ -281,9 +281,9 @@ impl ProcInitInfo { return Ok(()); } - fn push_str(&self, ustack: &mut UserStack, s: &str) -> Result<(), SystemError> { - self.push_slice(ustack, &[b"\0"])?; - self.push_slice(ustack, s.as_bytes())?; + fn push_str(&self, ustack: &mut UserStack, s: &CString) -> Result<(), SystemError> { + let bytes = s.as_bytes_with_nul(); + self.push_slice(ustack, bytes)?; return Ok(()); } }