rCore-Tutorial
rCore-Tutorial copied to clipboard
实验一中构建裸机运行时执行环境一节gdb的选择问题
问题描述
本小节实验指导书上选择的gdb-client为rust-gdb,但rust-gdb原生不支持riscv指令集。实际上应该选用riscv64-unknown-elf-gdb。
在rCore-Tutorial实验指导书上的位置
链接: 第一章/构建裸机运行时执行环境/设置正确的程序内存布局
更进一步分析
本节还有一个问题,就是在正确配置栈空间布局这一节之前,_start符号并不能被装入0x8020 0000所在的地址,需要在_start函数定义之前加上#[link_section = ".text.entry"]才行。 // src/main.rs /* 省略其他代码 */ #[no_mangle] #[link_section = ".text.entry"] extern "C" fn _start() { shutdown(); }
本节还有一个问题,就是在正确配置栈空间布局这一节之前,_start符号并不能被装入0x8020 0000所在的地址,需要在_start函数定义之前加上#[link_section = ".text.entry"]才行。 // src/main.rs /* 省略其他代码 */ #[no_mangle] #[link_section = ".text.entry"] extern "C" fn _start() { shutdown(); }
应该是在entry.asm开头加.text.entry
本节还有一个问题,就是在正确配置栈空间布局这一节之前,_start符号并不能被装入0x8020 0000所在的地址,需要在_start函数定义之前加上#[link_section = ".text.entry"]才行。 // src/main.rs /* 省略其他代码 */ #[no_mangle] #[link_section = ".text.entry"] extern "C" fn _start() { shutdown(); }
应该是在entry.asm开头加.text.entry
在正确配置栈空间布局这一小节之前,还没有entry.asm这个汇编文件