-
Gerrnperl Lu authored
这个错误导致用户程序链接时同时使用了内核的链接参数。 目测会导致用户程序入口地址错误(从 0x80400000 变为内核入口地址 0x80200000) 由于没有地址重定位,用户程序中所有使用绝对地址的地方都可能出错。 在调试过程中遇到的问题包括但不限于: 1. 触发 Rust 调试断言, 在执行 main 函数附近的代码时触发 ``` 0x8020a358 <.L__unnamed_6> "unsafe precondition(s) violated: slice::from_raw_parts_mut requires the pointer to be aligned and non-null, and the total size of the slice not to exceed `isize::MAX`src/trap/context.rs\000" ``` 提交 fb9d968e 尝试解决此问题,现已撤销。 2. 格式化异常,在 core::fmt 进行格式化时可能出现错误指令/非法指令。 3. 输出异常,用户程序通过系统调用传递给内核的字符串地址错误,导致输出异常。 4. 以上两点导致 panic 信息也无法正常输出。 5. 在指令执行过程不定位置出现错误,使得调试困难。 🥹