From 62be062d8ceb2fbd99bf402425d809876feec9a1 Mon Sep 17 00:00:00 2001 From: John Smith Date: Mon, 5 May 2025 13:40:31 +0000 Subject: [PATCH 1/2] fix: fix gef-remote for qemu --- docs/wiki/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/wiki/debug.md b/docs/wiki/debug.md index 5d92d9f5..a99a0d11 100644 --- a/docs/wiki/debug.md +++ b/docs/wiki/debug.md @@ -100,7 +100,7 @@ GDB 在启动时会默认调用该脚本,你可以在其中设置GDB的默认 ```bash file esp/KERNEL.ELF gef config context.layout "-legend regs -stack code -args source -threads -trace extra memory" -gef-remote localhost 1234 +gef-remote --qemu-user --qemu-binary esp/KERNEL.ELF localhost 1234 tmux-setup b ysos_kernel::init ``` From 7759a7f2f0dba9160e56ff7d1acd8b4a6aea9be3 Mon Sep 17 00:00:00 2001 From: John Smith Date: Wed, 7 May 2025 08:51:22 +0000 Subject: [PATCH 2/2] fix: sync attribute changes by toolchain updates See https://github.com/rust-lang/rust/pull/134213 for details. --- docs/labs/0x03/tasks.md | 24 ++++----- src/0x01/pkg/kernel/src/lib.rs | 1 - src/0x02/pkg/kernel/src/lib.rs | 1 - src/0x03/pkg/kernel/src/utils/regs.rs | 72 +++++++++++++-------------- 4 files changed, 46 insertions(+), 52 deletions(-) diff --git a/docs/labs/0x03/tasks.md b/docs/labs/0x03/tasks.md index 9fd395e2..16bb2222 100644 --- a/docs/labs/0x03/tasks.md +++ b/docs/labs/0x03/tasks.md @@ -79,20 +79,18 @@ macro_rules! as_handler { ($fn: ident) => { paste::item! { - #[naked] + #[unsafe(naked)] pub extern "x86-interrupt" fn [<$fn _handler>](_sf: InterruptStackFrame) { - unsafe { - core::arch::naked_asm!(" - push rbp - // ... - push r15 - call {} - pop r15 - // ... - pop rbp - iretq", - sym $fn); - } + core::arch::naked_asm!(" + push rbp + // ... + push r15 + call {} + pop r15 + // ... + pop rbp + iretq", + sym $fn); } } }; diff --git a/src/0x01/pkg/kernel/src/lib.rs b/src/0x01/pkg/kernel/src/lib.rs index a20c1ebf..92c083b5 100644 --- a/src/0x01/pkg/kernel/src/lib.rs +++ b/src/0x01/pkg/kernel/src/lib.rs @@ -1,5 +1,4 @@ #![no_std] -#![feature(naked_functions)] #![feature(abi_x86_interrupt)] #![feature(type_alias_impl_trait)] diff --git a/src/0x02/pkg/kernel/src/lib.rs b/src/0x02/pkg/kernel/src/lib.rs index 443868c3..350a3884 100644 --- a/src/0x02/pkg/kernel/src/lib.rs +++ b/src/0x02/pkg/kernel/src/lib.rs @@ -1,6 +1,5 @@ #![no_std] #![allow(dead_code)] -#![feature(naked_functions)] #![feature(abi_x86_interrupt)] #![feature(alloc_error_handler)] #![feature(type_alias_impl_trait)] diff --git a/src/0x03/pkg/kernel/src/utils/regs.rs b/src/0x03/pkg/kernel/src/utils/regs.rs index af64ce4c..2132ba32 100644 --- a/src/0x03/pkg/kernel/src/utils/regs.rs +++ b/src/0x03/pkg/kernel/src/utils/regs.rs @@ -46,44 +46,42 @@ impl fmt::Debug for RegistersValue { macro_rules! as_handler { ($fn: ident) => { paste::item! { - #[naked] + #[unsafe(naked)] pub extern "x86-interrupt" fn [<$fn _handler>](_sf: InterruptStackFrame) { - unsafe { - core::arch::naked_asm!(" - push rbp - push rax - push rbx - push rcx - push rdx - push rsi - push rdi - push r8 - push r9 - push r10 - push r11 - push r12 - push r13 - push r14 - push r15 - call {} - pop r15 - pop r14 - pop r13 - pop r12 - pop r11 - pop r10 - pop r9 - pop r8 - pop rdi - pop rsi - pop rdx - pop rcx - pop rbx - pop rax - pop rbp - iretq", - sym $fn); - } + core::arch::naked_asm!(" + push rbp + push rax + push rbx + push rcx + push rdx + push rsi + push rdi + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 + call {} + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + pop rdi + pop rsi + pop rdx + pop rcx + pop rbx + pop rax + pop rbp + iretq", + sym $fn); } } };