diff --git a/os/.cargo/config b/os/.cargo/config index 4275fcad6..93d3a7923 100644 --- a/os/.cargo/config +++ b/os/.cargo/config @@ -3,5 +3,5 @@ target = "riscv64gc-unknown-none-elf" [target.riscv64gc-unknown-none-elf] rustflags = [ - "-Clink-arg=-Tsrc/linker.ld", "-Cforce-frame-pointers=yes" + "-Clink-arg=-Tsrc/linker.ld" ] diff --git a/os/Cargo.toml b/os/Cargo.toml index fbcff883a..6bfb7a6b9 100644 --- a/os/Cargo.toml +++ b/os/Cargo.toml @@ -19,6 +19,6 @@ lose-net-stack = { git = "https://github.com/yfblock/lose-net-stack", rev = "3f4 easy-fs = { path = "../easy-fs" } embedded-graphics = "0.7.1" tinybmp = "0.3.1" - +trace_lib = {git = "https://github.com/os-module/rtrace"} [profile.release] debug = true diff --git a/os/Makefile b/os/Makefile index ac0fd2730..9038de1f0 100644 --- a/os/Makefile +++ b/os/Makefile @@ -31,12 +31,12 @@ OBJDUMP := rust-objdump --arch-name=riscv64 OBJCOPY := rust-objcopy --binary-architecture=riscv64 # Disassembly -DISASM ?= -x +DISASM ?= -X # Run usertests or usershell TEST ?= -build: env $(KERNEL_BIN) fs-img +build: env stack_trace $(KERNEL_BIN) fs-img env: (rustup target list | grep "riscv64gc-unknown-none-elf (installed)") || rustup target add $(TARGET) @@ -53,11 +53,17 @@ fs-img: $(APPS) @cd ../easy-fs-fuse && cargo run --release -- -s ../user/src/bin/ -t ../user/target/riscv64gc-unknown-none-elf/release/ $(APPS): +stack_trace: + @# install trace_exe to generate elf symbol info + @cargo install --git https://github.com/os-module/elfinfo kernel: @echo Platform: $(BOARD) + @touch src/trace/kernel_symbol.S && rm src/trace/kernel_symbol.S @cp src/linker-$(BOARD).ld src/linker.ld @cargo build --release + @(nm -n ${KERNEL_ELF} | trace_exe > src/trace/kernel_symbol.S) + @cargo build --release @rm src/linker.ld clean: diff --git a/os/build.rs b/os/build.rs index 5529b4fea..271a84fb1 100644 --- a/os/build.rs +++ b/os/build.rs @@ -1,6 +1,25 @@ +use std::fs::File; +use std::path::Path; +use std::io::Write; static TARGET_PATH: &str = "../user/target/riscv64gc-unknown-none-elf/release/"; fn main() { println!("cargo:rerun-if-changed=../user/src/"); println!("cargo:rerun-if-changed={}", TARGET_PATH); + println!("cargo:rerun-if-changed={}", "src"); + let path = Path::new("src/trace/kernel_symbol.S"); + if !path.exists() { + let mut file = File::create(path).unwrap(); + write!(file, ".section .rodata\n").unwrap(); + write!(file, ".align 3\n").unwrap(); + write!(file, ".global symbol_num\n").unwrap(); + write!(file, ".global symbol_address\n").unwrap(); + write!(file, ".global symbol_index\n").unwrap(); + write!(file, ".global symbol_name\n").unwrap(); + write!(file, "symbol_num:\n").unwrap(); + write!(file, ".quad {}\n", 0).unwrap(); + write!(file, "symbol_address:\n").unwrap(); + write!(file, "symbol_index:\n").unwrap(); + write!(file, "symbol_name:\n").unwrap(); + } } diff --git a/os/src/lang_items.rs b/os/src/lang_items.rs index a33943a1a..75b042625 100644 --- a/os/src/lang_items.rs +++ b/os/src/lang_items.rs @@ -15,23 +15,17 @@ fn panic(info: &PanicInfo) -> ! { } else { println!("[kernel] Panicked: {}", info.message().unwrap()); } - unsafe { - backtrace(); - } + backtrace(); shutdown(255) } -unsafe fn backtrace() { - let mut fp: usize; - let stop = current_kstack_top(); - asm!("mv {}, s0", out(reg) fp); +#[no_mangle] +fn backtrace() { println!("---START BACKTRACE---"); - for i in 0..10 { - if fp == stop { - break; - } - println!("#{}:ra={:#x}", i, *((fp - 8) as *const usize)); - fp = *((fp - 16) as *const usize); - } + let info = crate::trace::init_kernel_trace(); + let func_info = unsafe { trace_lib::my_trace(info) }; + func_info.iter().for_each(|x| { + println!("{}", x); + }); println!("---END BACKTRACE---"); } diff --git a/os/src/main.rs b/os/src/main.rs index 83554ae75..8c72d1b6a 100644 --- a/os/src/main.rs +++ b/os/src/main.rs @@ -5,6 +5,7 @@ #![feature(naked_functions)] #![feature(fn_align)] +use core::arch::global_asm; //use crate::drivers::{GPU_DEVICE, KEYBOARD_DEVICE, MOUSE_DEVICE, INPUT_CONDVAR}; use crate::drivers::{GPU_DEVICE, KEYBOARD_DEVICE, MOUSE_DEVICE}; extern crate alloc; @@ -29,6 +30,7 @@ mod task; mod timer; mod trap; mod net; +mod trace; use riscv::register::*; // mod riscvreg; @@ -251,6 +253,7 @@ use crate::drivers::chardev::CharDevice; use crate::drivers::chardev::UART; #[no_mangle] pub fn rust_main() -> ! { + // global_asm!(include_str!("kernel_symbol.S")); //clear_bss(); mm::init(); @@ -272,3 +275,20 @@ pub fn rust_main() -> ! { task::run_tasks(); panic!("Unreachable in rust_main!"); } + +#[no_mangle] +fn test_tp(){ + let a = 33; + let b = 22; + let max = core::cmp::max(a,b); + // println!("max is {}",max); + test_tp_tp(max); +} + + +#[no_mangle] +fn test_tp_tp(max:i32){ + let a = 33; + let max = core::cmp::max(a,max); + println!("test tp tp {}",max); +} \ No newline at end of file diff --git a/os/src/trace/kernel_symbol.S b/os/src/trace/kernel_symbol.S new file mode 100644 index 000000000..47b246183 --- /dev/null +++ b/os/src/trace/kernel_symbol.S @@ -0,0 +1,3056 @@ +.align 3 +.section .rodata +.globl symbol_num +symbol_num: + .quad 1015 +.globl symbol_address +symbol_address: + .quad 2147483648 + .quad 2147483648 + .quad 2147483648 + .quad 2147487744 + .quad 2147487744 + .quad 2147487840 + .quad 2147487932 + .quad 2147488012 + .quad 2147491840 + .quad 2147494234 + .quad 2147495518 + .quad 2147496786 + .quad 2147497242 + .quad 2147497698 + .quad 2147498166 + .quad 2147498634 + .quad 2147499082 + .quad 2147499530 + .quad 2147500078 + .quad 2147500626 + .quad 2147501354 + .quad 2147502082 + .quad 2147502278 + .quad 2147502474 + .quad 2147502574 + .quad 2147502574 + .quad 2147502752 + .quad 2147502752 + .quad 2147502752 + .quad 2147502752 + .quad 2147502752 + .quad 2147502752 + .quad 2147502930 + .quad 2147502930 + .quad 2147502930 + .quad 2147502930 + .quad 2147503108 + .quad 2147503286 + .quad 2147503464 + .quad 2147503614 + .quad 2147503796 + .quad 2147503796 + .quad 2147503796 + .quad 2147503796 + .quad 2147503972 + .quad 2147504120 + .quad 2147504754 + .quad 2147504916 + .quad 2147505058 + .quad 2147505070 + .quad 2147505070 + .quad 2147505072 + .quad 2147505514 + .quad 2147505572 + .quad 2147505836 + .quad 2147506148 + .quad 2147506328 + .quad 2147506384 + .quad 2147506484 + .quad 2147507236 + .quad 2147507376 + .quad 2147507388 + .quad 2147507390 + .quad 2147507556 + .quad 2147507698 + .quad 2147507958 + .quad 2147508290 + .quad 2147508632 + .quad 2147508890 + .quad 2147509322 + .quad 2147509588 + .quad 2147510214 + .quad 2147510260 + .quad 2147510850 + .quad 2147510924 + .quad 2147511166 + .quad 2147511182 + .quad 2147511644 + .quad 2147511956 + .quad 2147512154 + .quad 2147512438 + .quad 2147512498 + .quad 2147512774 + .quad 2147513070 + .quad 2147513684 + .quad 2147514436 + .quad 2147514624 + .quad 2147514726 + .quad 2147514728 + .quad 2147514748 + .quad 2147515000 + .quad 2147515322 + .quad 2147515840 + .quad 2147516072 + .quad 2147516078 + .quad 2147516084 + .quad 2147516320 + .quad 2147516592 + .quad 2147516762 + .quad 2147517380 + .quad 2147517618 + .quad 2147518006 + .quad 2147518860 + .quad 2147519702 + .quad 2147520746 + .quad 2147521554 + .quad 2147521574 + .quad 2147521576 + .quad 2147521658 + .quad 2147521958 + .quad 2147522312 + .quad 2147522628 + .quad 2147523098 + .quad 2147523350 + .quad 2147523602 + .quad 2147524088 + .quad 2147524330 + .quad 2147524572 + .quad 2147525050 + .quad 2147525292 + .quad 2147525604 + .quad 2147526960 + .quad 2147527194 + .quad 2147527926 + .quad 2147527942 + .quad 2147527942 + .quad 2147527942 + .quad 2147527942 + .quad 2147527942 + .quad 2147527942 + .quad 2147528056 + .quad 2147528322 + .quad 2147528476 + .quad 2147528588 + .quad 2147529626 + .quad 2147529724 + .quad 2147529822 + .quad 2147529950 + .quad 2147530132 + .quad 2147530230 + .quad 2147530440 + .quad 2147530568 + .quad 2147530614 + .quad 2147530830 + .quad 2147531050 + .quad 2147531462 + .quad 2147531474 + .quad 2147531484 + .quad 2147531486 + .quad 2147531656 + .quad 2147531666 + .quad 2147532042 + .quad 2147532702 + .quad 2147533078 + .quad 2147533254 + .quad 2147533424 + .quad 2147533516 + .quad 2147533722 + .quad 2147533818 + .quad 2147534070 + .quad 2147534124 + .quad 2147534192 + .quad 2147534202 + .quad 2147534264 + .quad 2147534398 + .quad 2147534478 + .quad 2147534830 + .quad 2147535138 + .quad 2147535378 + .quad 2147536032 + .quad 2147536048 + .quad 2147536064 + .quad 2147536088 + .quad 2147536114 + .quad 2147536218 + .quad 2147536280 + .quad 2147536386 + .quad 2147536716 + .quad 2147536718 + .quad 2147536748 + .quad 2147536780 + .quad 2147536816 + .quad 2147536836 + .quad 2147537652 + .quad 2147537912 + .quad 2147538176 + .quad 2147538218 + .quad 2147538234 + .quad 2147538250 + .quad 2147538250 + .quad 2147538254 + .quad 2147538254 + .quad 2147538258 + .quad 2147538432 + .quad 2147538482 + .quad 2147538532 + .quad 2147538886 + .quad 2147538904 + .quad 2147542072 + .quad 2147542072 + .quad 2147542076 + .quad 2147542342 + .quad 2147542882 + .quad 2147542978 + .quad 2147543096 + .quad 2147543468 + .quad 2147543648 + .quad 2147543956 + .quad 2147544262 + .quad 2147544568 + .quad 2147544820 + .quad 2147545034 + .quad 2147545264 + .quad 2147545666 + .quad 2147545672 + .quad 2147545678 + .quad 2147546340 + .quad 2147546884 + .quad 2147546956 + .quad 2147547346 + .quad 2147547520 + .quad 2147547932 + .quad 2147548292 + .quad 2147548452 + .quad 2147548676 + .quad 2147548938 + .quad 2147549234 + .quad 2147550264 + .quad 2147550276 + .quad 2147550372 + .quad 2147550468 + .quad 2147550564 + .quad 2147550584 + .quad 2147550714 + .quad 2147550810 + .quad 2147550820 + .quad 2147550840 + .quad 2147550842 + .quad 2147550932 + .quad 2147551184 + .quad 2147551338 + .quad 2147551502 + .quad 2147551838 + .quad 2147552844 + .quad 2147553046 + .quad 2147553266 + .quad 2147553474 + .quad 2147555154 + .quad 2147555224 + .quad 2147555488 + .quad 2147555626 + .quad 2147555626 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555628 + .quad 2147555888 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556148 + .quad 2147556408 + .quad 2147557028 + .quad 2147557658 + .quad 2147558278 + .quad 2147558966 + .quad 2147559346 + .quad 2147559900 + .quad 2147560506 + .quad 2147560888 + .quad 2147561604 + .quad 2147562320 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562722 + .quad 2147562942 + .quad 2147562978 + .quad 2147563266 + .quad 2147563422 + .quad 2147563802 + .quad 2147563910 + .quad 2147564206 + .quad 2147564206 + .quad 2147564448 + .quad 2147564816 + .quad 2147565106 + .quad 2147565478 + .quad 2147565808 + .quad 2147566056 + .quad 2147566412 + .quad 2147566658 + .quad 2147567034 + .quad 2147567242 + .quad 2147567546 + .quad 2147567846 + .quad 2147568122 + .quad 2147568422 + .quad 2147568726 + .quad 2147569106 + .quad 2147569440 + .quad 2147569452 + .quad 2147569452 + .quad 2147569452 + .quad 2147569452 + .quad 2147569452 + .quad 2147569452 + .quad 2147569454 + .quad 2147569464 + .quad 2147569532 + .quad 2147569590 + .quad 2147569648 + .quad 2147569706 + .quad 2147569764 + .quad 2147570316 + .quad 2147570868 + .quad 2147570878 + .quad 2147571458 + .quad 2147571736 + .quad 2147571946 + .quad 2147572128 + .quad 2147572498 + .quad 2147573146 + .quad 2147574732 + .quad 2147574974 + .quad 2147575172 + .quad 2147575426 + .quad 2147575668 + .quad 2147575888 + .quad 2147576338 + .quad 2147576554 + .quad 2147576850 + .quad 2147577108 + .quad 2147577110 + .quad 2147577444 + .quad 2147577828 + .quad 2147578130 + .quad 2147578218 + .quad 2147579518 + .quad 2147581114 + .quad 2147582620 + .quad 2147583174 + .quad 2147584128 + .quad 2147584348 + .quad 2147584584 + .quad 2147584808 + .quad 2147585520 + .quad 2147585828 + .quad 2147585838 + .quad 2147585846 + .quad 2147585854 + .quad 2147585862 + .quad 2147585870 + .quad 2147585878 + .quad 2147585896 + .quad 2147585916 + .quad 2147586262 + .quad 2147586486 + .quad 2147586494 + .quad 2147586504 + .quad 2147586514 + .quad 2147586532 + .quad 2147586550 + .quad 2147586568 + .quad 2147586586 + .quad 2147586602 + .quad 2147586860 + .quad 2147586904 + .quad 2147587824 + .quad 2147588144 + .quad 2147588172 + .quad 2147588174 + .quad 2147588176 + .quad 2147588236 + .quad 2147588812 + .quad 2147589214 + .quad 2147589276 + .quad 2147589290 + .quad 2147590128 + .quad 2147590150 + .quad 2147590490 + .quad 2147590994 + .quad 2147591424 + .quad 2147591424 + .quad 2147591426 + .quad 2147591498 + .quad 2147591498 + .quad 2147591570 + .quad 2147591714 + .quad 2147591736 + .quad 2147592232 + .quad 2147592348 + .quad 2147593580 + .quad 2147593654 + .quad 2147593728 + .quad 2147593882 + .quad 2147593888 + .quad 2147593902 + .quad 2147593910 + .quad 2147594006 + .quad 2147594008 + .quad 2147594144 + .quad 2147594146 + .quad 2147594148 + .quad 2147594368 + .quad 2147594604 + .quad 2147594882 + .quad 2147595726 + .quad 2147595950 + .quad 2147596258 + .quad 2147596608 + .quad 2147596834 + .quad 2147596836 + .quad 2147597280 + .quad 2147598116 + .quad 2147598772 + .quad 2147599212 + .quad 2147599580 + .quad 2147599956 + .quad 2147599956 + .quad 2147599958 + .quad 2147600016 + .quad 2147600112 + .quad 2147600212 + .quad 2147600390 + .quad 2147600568 + .quad 2147600822 + .quad 2147601220 + .quad 2147601462 + .quad 2147602204 + .quad 2147602440 + .quad 2147602752 + .quad 2147603678 + .quad 2147604236 + .quad 2147604492 + .quad 2147604748 + .quad 2147605362 + .quad 2147605600 + .quad 2147605894 + .quad 2147606048 + .quad 2147606186 + .quad 2147606402 + .quad 2147606748 + .quad 2147607034 + .quad 2147607340 + .quad 2147607812 + .quad 2147608048 + .quad 2147608256 + .quad 2147608482 + .quad 2147608866 + .quad 2147608980 + .quad 2147609132 + .quad 2147609150 + .quad 2147610082 + .quad 2147610252 + .quad 2147610382 + .quad 2147610392 + .quad 2147610394 + .quad 2147610498 + .quad 2147610522 + .quad 2147610536 + .quad 2147611604 + .quad 2147612150 + .quad 2147612296 + .quad 2147612302 + .quad 2147612322 + .quad 2147612338 + .quad 2147612348 + .quad 2147612358 + .quad 2147612362 + .quad 2147612366 + .quad 2147612378 + .quad 2147612384 + .quad 2147612480 + .quad 2147612576 + .quad 2147612672 + .quad 2147612768 + .quad 2147614738 + .quad 2147614966 + .quad 2147615070 + .quad 2147615080 + .quad 2147615210 + .quad 2147615212 + .quad 2147615218 + .quad 2147615222 + .quad 2147615426 + .quad 2147615518 + .quad 2147617366 + .quad 2147617410 + .quad 2147617454 + .quad 2147617498 + .quad 2147617542 + .quad 2147617544 + .quad 2147617588 + .quad 2147617632 + .quad 2147617634 + .quad 2147617638 + .quad 2147617640 + .quad 2147617642 + .quad 2147617840 + .quad 2147617850 + .quad 2147617860 + .quad 2147617862 + .quad 2147617888 + .quad 2147617914 + .quad 2147617922 + .quad 2147617996 + .quad 2147618198 + .quad 2147618526 + .quad 2147618540 + .quad 2147618542 + .quad 2147618564 + .quad 2147618622 + .quad 2147618706 + .quad 2147618854 + .quad 2147619004 + .quad 2147619104 + .quad 2147619156 + .quad 2147619170 + .quad 2147619184 + .quad 2147619198 + .quad 2147619268 + .quad 2147619512 + .quad 2147619778 + .quad 2147619898 + .quad 2147619964 + .quad 2147619978 + .quad 2147619992 + .quad 2147619996 + .quad 2147620010 + .quad 2147620024 + .quad 2147620026 + .quad 2147620050 + .quad 2147620150 + .quad 2147620162 + .quad 2147620180 + .quad 2147620194 + .quad 2147620198 + .quad 2147620202 + .quad 2147620246 + .quad 2147620268 + .quad 2147620318 + .quad 2147620382 + .quad 2147620428 + .quad 2147620496 + .quad 2147620732 + .quad 2147620808 + .quad 2147621320 + .quad 2147621700 + .quad 2147621786 + .quad 2147622078 + .quad 2147622340 + .quad 2147622340 + .quad 2147622366 + .quad 2147622396 + .quad 2147622582 + .quad 2147622638 + .quad 2147622648 + .quad 2147622836 + .quad 2147622894 + .quad 2147622944 + .quad 2147623356 + .quad 2147623992 + .quad 2147624072 + .quad 2147624664 + .quad 2147624664 + .quad 2147624672 + .quad 2147624672 + .quad 2147624722 + .quad 2147624732 + .quad 2147624742 + .quad 2147624788 + .quad 2147625048 + .quad 2147625342 + .quad 2147625534 + .quad 2147625694 + .quad 2147625746 + .quad 2147626620 + .quad 2147626636 + .quad 2147627102 + .quad 2147627116 + .quad 2147627186 + .quad 2147627200 + .quad 2147627270 + .quad 2147627284 + .quad 2147627354 + .quad 2147627400 + .quad 2147627466 + .quad 2147627998 + .quad 2147628404 + .quad 2147628428 + .quad 2147629168 + .quad 2147629422 + .quad 2147629704 + .quad 2147629728 + .quad 2147629728 + .quad 2147629858 + .quad 2147629858 + .quad 2147629988 + .quad 2147629988 + .quad 2147630120 + .quad 2147630120 + .quad 2147630252 + .quad 2147630252 + .quad 2147630362 + .quad 2147630362 + .quad 2147630488 + .quad 2147630488 + .quad 2147630614 + .quad 2147630614 + .quad 2147630614 + .quad 2147630614 + .quad 2147630740 + .quad 2147630740 + .quad 2147630740 + .quad 2147630740 + .quad 2147630866 + .quad 2147631090 + .quad 2147631306 + .quad 2147631520 + .quad 2147631878 + .quad 2147631894 + .quad 2147631910 + .quad 2147631942 + .quad 2147631958 + .quad 2147631958 + .quad 2147631990 + .quad 2147631990 + .quad 2147632004 + .quad 2147632022 + .quad 2147632032 + .quad 2147632228 + .quad 2147632238 + .quad 2147632404 + .quad 2147632412 + .quad 2147632428 + .quad 2147632604 + .quad 2147632922 + .quad 2147633098 + .quad 2147633106 + .quad 2147633114 + .quad 2147633122 + .quad 2147633130 + .quad 2147633304 + .quad 2147633692 + .quad 2147633794 + .quad 2147635200 + .quad 2147635200 + .quad 2147635200 + .quad 2147635328 + .quad 2147635419 + .quad 2147635472 + .quad 2147635496 + .quad 2147635648 + .quad 2147635688 + .quad 2147636528 + .quad 2147636571 + .quad 2147636672 + .quad 2147636720 + .quad 2147636808 + .quad 2147636824 + .quad 2147636824 + .quad 2147636904 + .quad 2147637160 + .quad 2147637208 + .quad 2147637256 + .quad 2147637288 + .quad 2147637304 + .quad 2147649880 + .quad 2147649915 + .quad 2147649936 + .quad 2147649960 + .quad 2147649963 + .quad 2147649992 + .quad 2147650024 + .quad 2147650048 + .quad 2147650096 + .quad 2147650168 + .quad 2147650192 + .quad 2147650600 + .quad 2147650600 + .quad 2147650624 + .quad 2147650640 + .quad 2147650640 + .quad 2147650736 + .quad 2147650760 + .quad 2147650848 + .quad 2147650992 + .quad 2147651016 + .quad 2147651040 + .quad 2147651056 + .quad 2147651080 + .quad 2147651104 + .quad 2147651152 + .quad 2147651176 + .quad 2147651248 + .quad 2147651264 + .quad 2147651368 + .quad 2147651416 + .quad 2147651432 + .quad 2147651464 + .quad 2147651528 + .quad 2147651544 + .quad 2147651560 + .quad 2147651688 + .quad 2147651698 + .quad 2147651728 + .quad 2147651760 + .quad 2147651816 + .quad 2147651848 + .quad 2147652044 + .quad 2147652520 + .quad 2147652520 + .quad 2147652581 + .quad 2147652600 + .quad 2147652624 + .quad 2147652663 + .quad 2147652688 + .quad 2147652712 + .quad 2147652755 + .quad 2147652776 + .quad 2147653040 + .quad 2147653064 + .quad 2147653112 + .quad 2147653184 + .quad 2147653328 + .quad 2147653472 + .quad 2147653472 + .quad 2147653560 + .quad 2147653584 + .quad 2147653608 + .quad 2147653632 + .quad 2147653968 + .quad 2147653984 + .quad 2147654003 + .quad 2147654088 + .quad 2147654144 + .quad 2147654163 + .quad 2147654248 + .quad 2147654304 + .quad 2147654328 + .quad 2147654344 + .quad 2147654365 + .quad 2147654456 + .quad 2147654512 + .quad 2147654555 + .quad 2147654680 + .quad 2147654704 + .quad 2147654752 + .quad 2147654784 + .quad 2147654808 + .quad 2147654904 + .quad 2147654928 + .quad 2147654952 + .quad 2147654976 + .quad 2147655000 + .quad 2147655024 + .quad 2147655030 + .quad 2147655037 + .quad 2147655040 + .quad 2147655088 + .quad 2147655408 + .quad 2147655408 + .quad 2147656520 + .quad 2147657320 + .quad 2147657336 + .quad 2147657360 + .quad 2147658088 + .quad 2147658117 + .quad 2147658135 + .quad 2147658175 + .quad 2147658205 + .quad 2147658224 + .quad 2147658512 + .quad 2147658512 + .quad 2147658744 + .quad 2147658944 + .quad 2147658968 + .quad 2147659016 + .quad 2147659152 + .quad 2147659184 + .quad 2147659216 + .quad 2147659240 + .quad 2147659312 + .quad 2147659336 + .quad 2147659360 + .quad 2147659408 + .quad 2147659424 + .quad 2147659456 + .quad 2147659480 + .quad 2147659504 + .quad 2147659512 + .quad 2147659512 + .quad 2147659512 + .quad 2147659512 + .quad 2147659600 + .quad 2147659624 + .quad 2147659648 + .quad 2147659683 + .quad 2147659792 + .quad 2147659816 + .quad 2147659856 + .quad 2147659888 + .quad 2147659984 + .quad 2147660024 + .quad 2147660104 + .quad 2147660416 + .quad 2147660440 + .quad 2147660456 + .quad 2147660480 + .quad 2147660784 + .quad 2147660816 + .quad 2147660864 + .quad 2147660896 + .quad 2147660928 + .quad 2147660952 + .quad 2147661000 + .quad 2147661024 + .quad 2147661048 + .quad 2147661072 + .quad 2147661096 + .quad 2147661120 + .quad 2147661144 + .quad 2147661168 + .quad 2147661184 + .quad 2147661208 + .quad 2147661232 + .quad 2147661256 + .quad 2147661273 + .quad 2147661368 + .quad 2147661392 + .quad 2147661432 + .quad 2147661456 + .quad 2147661480 + .quad 2147661512 + .quad 2147661584 + .quad 2147661608 + .quad 2147661640 + .quad 2147661712 + .quad 2147661736 + .quad 2147661768 + .quad 2147661840 + .quad 2147661864 + .quad 2147661896 + .quad 2147661960 + .quad 2147662003 + .quad 2147662024 + .quad 2147662080 + .quad 2147662112 + .quad 2147662144 + .quad 2147662176 + .quad 2147662256 + .quad 2147662312 + .quad 2147662464 + .quad 2147662512 + .quad 2147662536 + .quad 2147662579 + .quad 2147662608 + .quad 2147662632 + .quad 2147662656 + .quad 2147662680 + .quad 2147662856 + .quad 2147662880 + .quad 2147662904 + .quad 2147662928 + .quad 2147662952 + .quad 2147662976 + .quad 2147663024 + .quad 2147663072 + .quad 2147663096 + .quad 2147663120 + .quad 2147663168 + .quad 2147663192 + .quad 2147663216 + .quad 2147663240 + .quad 2147663960 + .quad 2147664006 + .quad 2147664105 + .quad 2147664136 + .quad 2147664160 + .quad 2147664184 + .quad 2147664336 + .quad 2147664377 + .quad 2147664480 + .quad 2147664504 + .quad 2147664528 + .quad 2147664568 + .quad 2147664604 + .quad 2147664696 + .quad 2147664752 + .quad 2147664776 + .quad 2147664840 + .quad 2147666892 + .quad 2147666929 + .quad 2147666992 + .quad 2147667016 + .quad 2147667040 + .quad 2147667432 + .quad 2147667584 + .quad 2147667616 + .quad 2147667680 + .quad 2147667752 + .quad 2147667776 + .quad 2147667848 + .quad 2147667872 + .quad 2147667920 + .quad 2147667944 + .quad 2147668016 + .quad 2147668034 + .quad 2147668096 + .quad 2147668120 + .quad 2147668184 + .quad 2147668208 + .quad 2147668232 + .quad 2147668280 + .quad 2147668424 + .quad 2147668496 + .quad 2147668520 + .quad 2147668544 + .quad 2147668568 + .quad 2147668605 + .quad 2147668672 + .quad 2147668696 + .quad 2147668720 + .quad 2147668808 + .quad 2147668832 + .quad 2147668849 + .quad 2147668944 + .quad 2147668968 + .quad 2147669008 + .quad 2147669032 + .quad 2147669112 + .quad 2147669136 + .quad 2147669197 + .quad 2147669240 + .quad 2147669264 + .quad 2147669491 + .quad 2147669592 + .quad 2147669688 + .quad 2147669723 + .quad 2147669832 + .quad 2147669856 + .quad 2147677904 + .quad 2147678032 + .quad 2147680256 + .quad 2147680256 + .quad 2147680584 + .quad 2147680592 + .quad 2147684352 + .quad 2147684352 + .quad 2147684352 + .quad 2147749888 + .quad 2147749888 + .quad 2147749888 + .quad 2147749912 + .quad 2147749968 + .quad 2147750024 + .quad 2147750040 + .quad 2147750104 + .quad 2147750120 + .quad 2147750144 + .quad 2147750160 + .quad 2164527376 + .quad 2164527400 + .quad 2164527424 + .quad 2164527720 + .quad 2164527736 + .quad 2164527776 + .quad 2164527808 + .quad 2164527864 + .quad 2164527912 + .quad 2164527936 + .quad 2164527952 + .quad 2164528000 + .quad 2164528032 + .quad 2164528080 + .quad 2164528224 + .quad 2164528272 + .quad 2164528336 + .quad 2164528344 + .quad 2164531200 + .quad 2164531200 +.globl symbol_index +symbol_index: + .quad 0 + .quad 8 + .quad 15 + .quad 21 + .quad 32 + .quad 44 + .quad 54 + .quad 67 + .quad 79 + .quad 321 + .quad 563 + .quad 805 + .quad 877 + .quad 949 + .quad 1022 + .quad 1095 + .quad 1173 + .quad 1251 + .quad 1333 + .quad 1415 + .quad 1695 + .quad 1975 + .quad 2269 + .quad 2563 + .quad 2591 + .quad 2637 + .quad 2683 + .quad 2729 + .quad 2775 + .quad 2821 + .quad 2867 + .quad 2913 + .quad 2959 + .quad 3005 + .quad 3051 + .quad 3097 + .quad 3143 + .quad 3189 + .quad 3235 + .quad 3281 + .quad 3327 + .quad 3387 + .quad 3447 + .quad 3507 + .quad 3567 + .quad 3627 + .quad 3666 + .quad 3706 + .quad 3746 + .quad 3777 + .quad 3820 + .quad 3871 + .quad 3912 + .quad 3952 + .quad 3992 + .quad 4044 + .quad 4097 + .quad 4136 + .quad 4155 + .quad 4195 + .quad 4270 + .quad 4355 + .quad 4438 + .quad 4473 + .quad 4517 + .quad 4574 + .quad 4601 + .quad 4660 + .quad 4691 + .quad 4733 + .quad 4772 + .quad 4831 + .quad 4846 + .quad 4859 + .quad 4871 + .quad 4888 + .quad 4953 + .quad 4994 + .quad 5035 + .quad 5081 + .quad 5162 + .quad 5193 + .quad 5226 + .quad 5257 + .quad 5288 + .quad 5322 + .quad 5353 + .quad 5383 + .quad 5414 + .quad 5465 + .quad 5493 + .quad 5526 + .quad 5551 + .quad 5576 + .quad 5627 + .quad 5678 + .quad 5725 + .quad 5773 + .quad 5810 + .quad 5852 + .quad 5891 + .quad 5949 + .quad 5985 + .quad 6027 + .quad 6067 + .quad 6116 + .quad 6148 + .quad 6201 + .quad 6258 + .quad 6271 + .quad 6305 + .quad 6334 + .quad 6370 + .quad 6404 + .quad 6440 + .quad 6480 + .quad 6516 + .quad 6554 + .quad 6592 + .quad 6630 + .quad 6666 + .quad 6705 + .quad 6737 + .quad 6770 + .quad 6833 + .quad 6864 + .quad 6895 + .quad 6926 + .quad 6957 + .quad 6988 + .quad 7019 + .quad 7050 + .quad 7081 + .quad 7112 + .quad 7143 + .quad 7174 + .quad 7205 + .quad 7236 + .quad 7267 + .quad 7298 + .quad 7329 + .quad 7360 + .quad 7391 + .quad 7437 + .quad 7484 + .quad 7523 + .quad 7554 + .quad 7584 + .quad 7632 + .quad 7685 + .quad 7719 + .quad 7785 + .quad 7851 + .quad 7917 + .quad 7991 + .quad 8065 + .quad 8126 + .quad 8170 + .quad 8256 + .quad 8344 + .quad 8432 + .quad 8488 + .quad 8532 + .quad 8541 + .quad 8602 + .quad 8665 + .quad 8730 + .quad 8797 + .quad 8831 + .quad 8862 + .quad 8934 + .quad 9003 + .quad 9014 + .quad 9027 + .quad 9040 + .quad 9058 + .quad 9067 + .quad 9153 + .quad 9183 + .quad 9228 + .quad 9277 + .quad 9336 + .quad 9387 + .quad 9407 + .quad 9430 + .quad 9453 + .quad 9462 + .quad 9520 + .quad 9578 + .quad 9627 + .quad 9677 + .quad 9726 + .quad 9776 + .quad 9821 + .quad 9867 + .quad 9913 + .quad 9960 + .quad 9978 + .quad 9999 + .quad 10045 + .quad 10091 + .quad 10133 + .quad 10176 + .quad 10187 + .quad 10202 + .quad 10212 + .quad 10276 + .quad 10327 + .quad 10378 + .quad 10429 + .quad 10480 + .quad 10558 + .quad 10636 + .quad 10660 + .quad 10707 + .quad 10754 + .quad 10797 + .quad 10841 + .quad 10881 + .quad 10916 + .quad 10953 + .quad 10996 + .quad 11031 + .quad 11059 + .quad 11090 + .quad 11133 + .quad 11176 + .quad 11219 + .quad 11250 + .quad 11280 + .quad 11310 + .quad 11340 + .quad 11370 + .quad 11400 + .quad 11430 + .quad 11462 + .quad 11494 + .quad 11542 + .quad 11630 + .quad 11718 + .quad 11796 + .quad 11873 + .quad 11891 + .quad 11901 + .quad 11950 + .quad 11989 + .quad 12018 + .quad 12054 + .quad 12077 + .quad 12112 + .quad 12141 + .quad 12189 + .quad 12242 + .quad 12292 + .quad 12342 + .quad 12392 + .quad 12442 + .quad 12492 + .quad 12542 + .quad 12592 + .quad 12642 + .quad 12692 + .quad 12742 + .quad 12792 + .quad 12842 + .quad 12892 + .quad 12942 + .quad 12992 + .quad 13042 + .quad 13092 + .quad 13142 + .quad 13192 + .quad 13242 + .quad 13292 + .quad 13342 + .quad 13392 + .quad 13443 + .quad 13494 + .quad 13545 + .quad 13596 + .quad 13647 + .quad 13698 + .quad 13749 + .quad 13800 + .quad 13851 + .quad 13902 + .quad 13953 + .quad 14016 + .quad 14079 + .quad 14142 + .quad 14205 + .quad 14268 + .quad 14331 + .quad 14394 + .quad 14457 + .quad 14520 + .quad 14583 + .quad 14646 + .quad 14709 + .quad 14772 + .quad 14835 + .quad 14898 + .quad 14961 + .quad 15024 + .quad 15087 + .quad 15150 + .quad 15213 + .quad 15276 + .quad 15339 + .quad 15402 + .quad 15475 + .quad 15536 + .quad 15597 + .quad 15662 + .quad 15732 + .quad 15763 + .quad 15794 + .quad 15825 + .quad 15856 + .quad 15887 + .quad 15918 + .quad 15949 + .quad 15980 + .quad 16011 + .quad 16042 + .quad 16073 + .quad 16104 + .quad 16135 + .quad 16166 + .quad 16197 + .quad 16228 + .quad 16259 + .quad 16290 + .quad 16321 + .quad 16352 + .quad 16383 + .quad 16414 + .quad 16447 + .quad 16495 + .quad 16530 + .quad 16585 + .quad 16629 + .quad 16660 + .quad 16691 + .quad 16722 + .quad 16753 + .quad 16784 + .quad 16877 + .quad 16971 + .quad 17064 + .quad 17113 + .quad 17190 + .quad 17270 + .quad 17305 + .quad 17342 + .quad 17372 + .quad 17403 + .quad 17440 + .quad 17480 + .quad 17517 + .quad 17562 + .quad 17590 + .quad 17618 + .quad 17649 + .quad 17676 + .quad 17702 + .quad 17749 + .quad 17830 + .quad 17911 + .quad 17992 + .quad 18046 + .quad 18090 + .quad 18135 + .quad 18180 + .quad 18228 + .quad 18281 + .quad 18335 + .quad 18390 + .quad 18449 + .quad 18488 + .quad 18529 + .quad 18563 + .quad 18576 + .quad 18591 + .quad 18606 + .quad 18626 + .quad 18653 + .quad 18694 + .quad 18732 + .quad 18772 + .quad 18815 + .quad 18852 + .quad 18887 + .quad 18921 + .quad 18965 + .quad 19008 + .quad 19049 + .quad 19096 + .quad 19136 + .quad 19159 + .quad 19193 + .quad 19223 + .quad 19240 + .quad 19272 + .quad 19309 + .quad 19347 + .quad 19392 + .quad 19444 + .quad 19496 + .quad 19550 + .quad 19581 + .quad 19617 + .quad 19684 + .quad 19719 + .quad 19755 + .quad 19793 + .quad 19864 + .quad 19945 + .quad 20025 + .quad 20107 + .quad 20199 + .quad 20227 + .quad 20254 + .quad 20285 + .quad 20327 + .quad 20373 + .quad 20416 + .quad 20459 + .quad 20496 + .quad 20532 + .quad 20570 + .quad 20607 + .quad 20637 + .quad 20668 + .quad 20715 + .quad 20742 + .quad 20792 + .quad 20827 + .quad 20853 + .quad 20888 + .quad 20916 + .quad 20940 + .quad 20969 + .quad 20999 + .quad 21026 + .quad 21056 + .quad 21097 + .quad 21139 + .quad 21178 + .quad 21214 + .quad 21251 + .quad 21283 + .quad 21314 + .quad 21347 + .quad 21378 + .quad 21408 + .quad 21436 + .quad 21482 + .quad 21528 + .quad 21567 + .quad 21606 + .quad 21645 + .quad 21686 + .quad 21727 + .quad 21768 + .quad 21809 + .quad 21850 + .quad 21891 + .quad 21932 + .quad 21970 + .quad 22013 + .quad 22044 + .quad 22079 + .quad 22120 + .quad 22163 + .quad 22262 + .quad 22361 + .quad 22412 + .quad 22468 + .quad 22546 + .quad 22577 + .quad 22610 + .quad 22692 + .quad 22723 + .quad 22754 + .quad 22806 + .quad 22864 + .quad 22894 + .quad 22924 + .quad 22954 + .quad 22985 + .quad 23040 + .quad 23083 + .quad 23127 + .quad 23184 + .quad 23240 + .quad 23304 + .quad 23354 + .quad 23413 + .quad 23473 + .quad 23521 + .quad 23570 + .quad 23623 + .quad 23668 + .quad 23720 + .quad 23771 + .quad 23801 + .quad 23831 + .quad 23861 + .quad 23891 + .quad 23948 + .quad 24003 + .quad 24047 + .quad 24069 + .quad 24118 + .quad 24149 + .quad 24186 + .quad 24252 + .quad 24310 + .quad 24369 + .quad 24428 + .quad 24458 + .quad 24488 + .quad 24518 + .quad 24548 + .quad 24578 + .quad 24627 + .quad 24676 + .quad 24708 + .quad 24746 + .quad 24780 + .quad 24816 + .quad 24839 + .quad 24869 + .quad 24899 + .quad 24961 + .quad 25002 + .quad 25043 + .quad 25081 + .quad 25138 + .quad 25200 + .quad 25262 + .quad 25301 + .quad 25331 + .quad 25372 + .quad 25412 + .quad 25452 + .quad 25512 + .quad 25558 + .quad 25586 + .quad 25620 + .quad 25653 + .quad 25696 + .quad 25705 + .quad 25749 + .quad 25782 + .quad 25810 + .quad 25863 + .quad 25907 + .quad 25946 + .quad 25985 + .quad 26024 + .quad 26063 + .quad 26102 + .quad 26195 + .quad 26231 + .quad 26287 + .quad 26318 + .quad 26372 + .quad 26400 + .quad 26444 + .quad 26489 + .quad 26512 + .quad 26539 + .quad 26570 + .quad 26606 + .quad 26633 + .quad 26664 + .quad 26701 + .quad 26729 + .quad 26794 + .quad 26834 + .quad 26875 + .quad 26914 + .quad 26953 + .quad 26990 + .quad 27028 + .quad 27067 + .quad 27096 + .quad 27124 + .quad 27164 + .quad 27205 + .quad 27245 + .quad 27295 + .quad 27312 + .quad 27347 + .quad 27396 + .quad 27422 + .quad 27454 + .quad 27508 + .quad 27540 + .quad 27594 + .quad 27632 + .quad 27670 + .quad 27705 + .quad 27754 + .quad 27803 + .quad 27852 + .quad 27900 + .quad 27933 + .quad 27964 + .quad 27997 + .quad 28029 + .quad 28076 + .quad 28126 + .quad 28171 + .quad 28219 + .quad 28262 + .quad 28308 + .quad 28358 + .quad 28418 + .quad 28449 + .quad 28482 + .quad 28510 + .quad 28541 + .quad 28573 + .quad 28612 + .quad 28672 + .quad 28727 + .quad 28782 + .quad 28837 + .quad 28892 + .quad 28948 + .quad 29004 + .quad 29060 + .quad 29116 + .quad 29170 + .quad 29224 + .quad 29280 + .quad 29336 + .quad 29392 + .quad 29448 + .quad 29504 + .quad 29560 + .quad 29618 + .quad 29676 + .quad 29732 + .quad 29788 + .quad 29846 + .quad 29904 + .quad 29956 + .quad 30009 + .quad 30064 + .quad 30093 + .quad 30152 + .quad 30212 + .quad 30272 + .quad 30332 + .quad 30392 + .quad 30454 + .quad 30514 + .quad 30576 + .quad 30620 + .quad 30650 + .quad 30680 + .quad 30710 + .quad 30740 + .quad 30770 + .quad 30802 + .quad 30857 + .quad 30910 + .quad 30965 + .quad 30973 + .quad 30980 + .quad 30987 + .quad 30994 + .quad 31025 + .quad 31057 + .quad 31088 + .quad 31119 + .quad 31185 + .quad 31191 + .quad 31199 + .quad 31265 + .quad 31331 + .quad 31397 + .quad 31463 + .quad 31530 + .quad 31597 + .quad 31664 + .quad 31731 + .quad 31798 + .quad 31864 + .quad 31929 + .quad 31994 + .quad 32061 + .quad 32127 + .quad 32193 + .quad 32260 + .quad 32327 + .quad 32394 + .quad 32461 + .quad 32528 + .quad 32595 + .quad 32662 + .quad 32729 + .quad 32796 + .quad 32863 + .quad 32930 + .quad 32997 + .quad 33064 + .quad 33131 + .quad 33198 + .quad 33264 + .quad 33293 + .quad 33359 + .quad 33425 + .quad 33491 + .quad 33557 + .quad 33623 + .quad 33689 + .quad 33756 + .quad 33823 + .quad 33890 + .quad 33957 + .quad 34024 + .quad 34091 + .quad 34158 + .quad 34225 + .quad 34291 + .quad 34357 + .quad 34424 + .quad 34491 + .quad 34558 + .quad 34624 + .quad 34690 + .quad 34756 + .quad 34822 + .quad 34889 + .quad 34956 + .quad 35023 + .quad 35090 + .quad 35157 + .quad 35224 + .quad 35290 + .quad 35355 + .quad 35388 + .quad 35453 + .quad 35518 + .quad 35583 + .quad 35648 + .quad 35713 + .quad 35779 + .quad 35845 + .quad 35911 + .quad 35977 + .quad 36043 + .quad 36109 + .quad 36175 + .quad 36241 + .quad 36306 + .quad 36333 + .quad 36398 + .quad 36463 + .quad 36528 + .quad 36593 + .quad 36659 + .quad 36725 + .quad 36791 + .quad 36857 + .quad 36923 + .quad 36989 + .quad 37055 + .quad 37121 + .quad 37187 + .quad 37253 + .quad 37319 + .quad 37385 + .quad 37451 + .quad 37517 + .quad 37583 + .quad 37649 + .quad 37715 + .quad 37781 + .quad 37847 + .quad 37913 + .quad 37979 + .quad 38045 + .quad 38111 + .quad 38177 + .quad 38243 + .quad 38309 + .quad 38375 + .quad 38441 + .quad 38507 + .quad 38540 + .quad 38576 + .quad 38642 + .quad 38709 + .quad 38776 + .quad 38843 + .quad 38910 + .quad 38977 + .quad 39044 + .quad 39111 + .quad 39178 + .quad 39245 + .quad 39310 + .quad 39338 + .quad 39404 + .quad 39470 + .quad 39536 + .quad 39602 + .quad 39668 + .quad 39734 + .quad 39800 + .quad 39866 + .quad 39932 + .quad 39998 + .quad 40064 + .quad 40130 + .quad 40196 + .quad 40262 + .quad 40328 + .quad 40339 + .quad 40404 + .quad 40419 + .quad 40432 + .quad 40444 + .quad 40509 + .quad 40574 + .quad 40639 + .quad 40704 + .quad 40770 + .quad 40836 + .quad 40902 + .quad 40968 + .quad 41034 + .quad 41100 + .quad 41166 + .quad 41232 + .quad 41298 + .quad 41364 + .quad 41430 + .quad 41496 + .quad 41562 + .quad 41628 + .quad 41694 + .quad 41760 + .quad 41826 + .quad 41892 + .quad 41958 + .quad 42024 + .quad 42091 + .quad 42158 + .quad 42225 + .quad 42292 + .quad 42359 + .quad 42426 + .quad 42493 + .quad 42560 + .quad 42625 + .quad 42690 + .quad 42755 + .quad 42820 + .quad 42885 + .quad 42950 + .quad 43015 + .quad 43080 + .quad 43145 + .quad 43210 + .quad 43276 + .quad 43342 + .quad 43408 + .quad 43474 + .quad 43540 + .quad 43606 + .quad 43672 + .quad 43738 + .quad 43804 + .quad 43870 + .quad 43935 + .quad 44000 + .quad 44065 + .quad 44130 + .quad 44196 + .quad 44262 + .quad 44328 + .quad 44394 + .quad 44460 + .quad 44526 + .quad 44592 + .quad 44658 + .quad 44724 + .quad 44790 + .quad 44856 + .quad 44922 + .quad 44988 + .quad 45054 + .quad 45120 + .quad 45186 + .quad 45252 + .quad 45318 + .quad 45384 + .quad 45450 + .quad 45516 + .quad 45582 + .quad 45648 + .quad 45713 + .quad 45778 + .quad 45843 + .quad 45908 + .quad 45973 + .quad 46038 + .quad 46103 + .quad 46169 + .quad 46235 + .quad 46301 + .quad 46367 + .quad 46433 + .quad 46500 + .quad 46565 + .quad 46630 + .quad 46695 + .quad 46760 + .quad 46825 + .quad 46890 + .quad 46955 + .quad 47020 + .quad 47085 + .quad 47150 + .quad 47216 + .quad 47282 + .quad 47348 + .quad 47414 + .quad 47480 + .quad 47546 + .quad 47612 + .quad 47678 + .quad 47744 + .quad 47810 + .quad 47877 + .quad 47944 + .quad 48011 + .quad 48078 + .quad 48145 + .quad 48212 + .quad 48279 + .quad 48346 + .quad 48413 + .quad 48480 + .quad 48547 + .quad 48614 + .quad 48681 + .quad 48748 + .quad 48815 + .quad 48882 + .quad 48949 + .quad 49016 + .quad 49082 + .quad 49148 + .quad 49214 + .quad 49280 + .quad 49346 + .quad 49412 + .quad 49478 + .quad 49543 + .quad 49608 + .quad 49673 + .quad 49738 + .quad 49804 + .quad 49870 + .quad 49934 + .quad 49998 + .quad 50062 + .quad 50126 + .quad 50190 + .quad 50244 + .quad 50252 + .quad 50258 + .quad 50272 + .quad 50286 + .quad 50309 + .quad 50315 + .quad 50331 + .quad 50346 + .quad 50351 + .quad 50435 + .quad 50518 + .quad 50604 + .quad 50685 + .quad 50781 + .quad 50869 + .quad 50957 + .quad 51039 + .quad 51074 + .quad 51165 + .quad 51253 + .quad 51292 + .quad 51371 + .quad 51389 + .quad 51472 + .quad 51559 + .quad 51641 + .quad 51725 + .quad 51799 + .quad 51872 + .quad 51959 + .quad 52053 + .quad 52139 + .quad 52224 + .quad 52321 + .quad 52332 + .quad 52358 + .quad 52363 +.globl symbol_name +symbol_name: + .asciz "skernel" + .asciz "_start" + .asciz "stext" + .asciz "__alltraps" + .asciz "strampoline" + .asciz "__restore" + .asciz "__alltraps_k" + .asciz "__restore_k" + .asciz "alloc::collections::btree::node::Handle,alloc::collections::btree::node::marker::Edge>::insert_recursing" + .asciz "alloc::collections::btree::node::Handle,alloc::collections::btree::node::marker::Edge>::insert_recursing" + .asciz "alloc::collections::btree::node::Handle,alloc::collections::btree::node::marker::Edge>::insert_recursing" + .asciz "alloc::collections::btree::node::BalancingContext::bulk_steal_left" + .asciz "alloc::collections::btree::node::BalancingContext::bulk_steal_left" + .asciz "alloc::collections::btree::node::BalancingContext::bulk_steal_right" + .asciz "alloc::collections::btree::node::BalancingContext::bulk_steal_right" + .asciz "alloc::collections::btree::node::BalancingContext::merge_tracking_parent" + .asciz "alloc::collections::btree::node::BalancingContext::merge_tracking_parent" + .asciz "alloc::collections::btree::node::BalancingContext::merge_tracking_child_edge" + .asciz "alloc::collections::btree::node::BalancingContext::merge_tracking_child_edge" + .asciz "alloc::collections::btree::remove::,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv" + .asciz "alloc::collections::btree::remove::,alloc::collections::btree::node::marker::KV>>::remove_leaf_kv" + .asciz "alloc::collections::btree::remove::,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking" + .asciz "alloc::collections::btree::remove::,alloc::collections::btree::node::marker::KV>>::remove_kv_tracking" + .asciz "alloc::raw_vec::finish_grow" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "virtio_drivers::net::VirtIONet::new" + .asciz "virtio_drivers::net::VirtIONet::recv" + .asciz "virtio_drivers::net::VirtIONet::send" + .asciz "::type_id" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place<&mut os::console::Stdout>" + .asciz "<&mut W as core::fmt::Write>::write_char" + .asciz "<&mut W as core::fmt::Write>::write_fmt" + .asciz "<&mut W as core::fmt::Write>::write_str" + .asciz "alloc::collections::binary_heap::BinaryHeap::pop" + .asciz "alloc::collections::binary_heap::BinaryHeap::push" + .asciz "riscv::register::scause::Scause::cause" + .asciz "os::console::print" + .asciz "os::drivers::gpu::VirtIOGpuWrapper::new" + .asciz "::flush" + .asciz "::get_framebuffer" + .asciz "::update_cursor" + .asciz "os::sync::condvar::Condvar::signal" + .asciz "os::sync::condvar::Condvar::wait_with_mutex" + .asciz "::drop" + .asciz "os::task::id::kstack_alloc" + .asciz "::drop" + .asciz "os::task::id::TaskUserRes::new" + .asciz "os::task::id::TaskUserRes::alloc_user_res" + .asciz "os::task::id::TaskUserRes::trap_cx_ppn" + .asciz "::drop" + .asciz "os::trap::init" + .asciz "trap_handler" + .asciz "trap_return" + .asciz "trap_from_kernel" + .asciz "::deref" + .asciz "virtio_drivers::queue::VirtQueue::add" + .asciz "virtio_drivers::queue::VirtQueue::new" + .asciz "virtio_drivers::queue::VirtQueue::pop_used" + .asciz " as alloc::vec::spec_from_iter::SpecFromIter>::from_iter" + .asciz "os::syscall::process::sys_exit" + .asciz "os::syscall::process::sys_getpid" + .asciz "os::syscall::process::sys_fork" + .asciz "os::syscall::process::sys_exec" + .asciz "os::syscall::process::sys_waitpid" + .asciz "os::syscall::process::sys_kill" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&str>" + .asciz "::fmt" + .asciz "tinybmp::Bmp::from_slice" + .asciz "os::fs::inode::OSInode::read_all" + .asciz "os::fs::inode::list_apps" + .asciz "os::fs::inode::open_file" + .asciz "::readable" + .asciz "::writable" + .asciz "::read" + .asciz "::write" + .asciz "os::mm::frame_allocator::frame_alloc" + .asciz "os::mm::frame_allocator::frame_alloc_more" + .asciz "os::mm::frame_allocator::frame_dealloc" + .asciz "os::mm::memory_set::MemorySet::remove_area_with_start_vpn" + .asciz "os::mm::memory_set::MemorySet::push" + .asciz "os::mm::memory_set::MemorySet::new_kernel" + .asciz "os::mm::memory_set::MemorySet::from_elf" + .asciz "os::mm::memory_set::MemorySet::from_existed_user" + .asciz "<&T as core::fmt::Display>::fmt" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "os::mm::init" + .asciz "os::syscall::gui::sys_framebuffer" + .asciz "os::syscall::sync::sys_sleep" + .asciz "os::syscall::sync::sys_mutex_create" + .asciz "os::syscall::sync::sys_mutex_lock" + .asciz "os::syscall::sync::sys_mutex_unlock" + .asciz "os::syscall::sync::sys_semaphore_create" + .asciz "os::syscall::sync::sys_semaphore_up" + .asciz "os::syscall::sync::sys_semaphore_down" + .asciz "os::syscall::sync::sys_condvar_create" + .asciz "os::syscall::sync::sys_condvar_signal" + .asciz "os::syscall::sync::sys_condvar_wait" + .asciz "os::syscall::thread::sys_thread_create" + .asciz "os::syscall::thread::sys_gettid" + .asciz "os::syscall::thread::sys_waittid" + .asciz "::deref" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "virtio_drivers::blk::VirtIOBlk::read_block" + .asciz "virtio_drivers::blk::VirtIOBlk::write_block" + .asciz "virtio_drivers::blk::VirtIOBlk::new" + .asciz "::type_id" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place" + .asciz "core::array::::fmt" + .asciz "<&mut T as core::fmt::Debug>::fmt" + .asciz "alloc::collections::btree::map::entry::VacantEntry::insert" + .asciz "alloc::collections::btree::map::entry::VacantEntry::insert" + .asciz "alloc::collections::btree::map::entry::VacantEntry::insert" + .asciz "alloc::collections::btree::map::entry::OccupiedEntry::remove_entry" + .asciz "alloc::collections::btree::map::entry::OccupiedEntry::remove_entry" + .asciz " as core::ops::drop::Drop>::drop" + .asciz "os::drivers::input::VirtIOInputWrapper::new" + .asciz "::is_empty" + .asciz "::read_event" + .asciz "::handle_irq" + .asciz "::fmt" + .asciz "os::mm::address::PhysPageNum::get_pte_array" + .asciz "rust_oom" + .asciz "::lock" + .asciz "::unlock" + .asciz "::lock" + .asciz "::unlock" + .asciz "os::syscall::input::sys_event_get" + .asciz "os::net::net_interrupt_handler" + .asciz "::deref" + .asciz "::deref" + .asciz "__rg_alloc" + .asciz "__rg_dealloc" + .asciz "__rg_realloc" + .asciz "__rg_alloc_zeroed" + .asciz "__switch" + .asciz " as core::iter::traits::iterator::Iterator>::fold" + .asciz "core::ptr::drop_in_place<&u8>" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place>" + .asciz "::fmt" + .asciz "trace_lib::my_trace" + .asciz "os::board::device_init" + .asciz "os::board::irq_handler" + .asciz "timervec" + .asciz "::exit_success" + .asciz "::exit_failure" + .asciz "::readable" + .asciz "::writable" + .asciz "::writable" + .asciz "::readable" + .asciz "::read" + .asciz "::write" + .asciz "::read" + .asciz "::write" + .asciz "os::sbi::shutdown" + .asciz "os::syscall::syscall" + .asciz "::readable" + .asciz "::writable" + .asciz "::read" + .asciz "::write" + .asciz "rust_start" + .asciz "os::timer_init" + .asciz "rust_main" + .asciz "::deref" + .asciz "alloc::collections::vec_deque::VecDeque::grow" + .asciz "alloc::collections::vec_deque::VecDeque::grow" + .asciz "alloc::collections::vec_deque::VecDeque::grow" + .asciz "alloc::collections::vec_deque::VecDeque::grow" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz "os::fs::pipe::make_pipe" + .asciz "::readable" + .asciz "::writable" + .asciz "::read" + .asciz "::write" + .asciz "os::mm::page_table::PageTable::find_pte" + .asciz "os::mm::page_table::PageTable::map" + .asciz "os::mm::page_table::PageTable::unmap" + .asciz "os::mm::page_table::translated_byte_buffer" + .asciz "os::mm::page_table::translated_str" + .asciz "os::task::manager::add_task" + .asciz "os::task::manager::pid2process" + .asciz "os::task::manager::insert_into_pid2process" + .asciz "os::task::manager::remove_from_pid2process" + .asciz "virtio_drivers::input::VirtIOInput::new" + .asciz "::type_id" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Display>::fmt" + .asciz "<&T as core::fmt::Display>::fmt" + .asciz "core::ptr::drop_in_place" + .asciz " as os::drivers::chardev::CharDevice>::init" + .asciz " as os::drivers::chardev::CharDevice>::read" + .asciz "::transmit" + .asciz "::receive" + .asciz "rust_begin_unwind" + .asciz "backtrace" + .asciz "os::task::task::TaskControlBlock::get_user_token" + .asciz "os::task::suspend_current_and_run_next" + .asciz "os::task::block_current_task" + .asciz "os::task::exit_current_and_run_next" + .asciz "os::task::add_initproc" + .asciz "os::task::check_signals_of_current" + .asciz "os::task::current_add_signal" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_access" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz "os::sync::up::UPIntrFreeCell::exclusive_session" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::deref::DerefMut>::deref_mut" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "spin::once::Once::call_once" + .asciz "::type_id" + .asciz "core::ptr::drop_in_place<&i32>" + .asciz "core::ptr::drop_in_place<&u16>" + .asciz "core::ptr::drop_in_place<&usize>" + .asciz "core::ptr::drop_in_place" + .asciz "core::ptr::drop_in_place<&[u8; 4]>" + .asciz "core::ptr::drop_in_place<&os::mm::memory_set::MapType>" + .asciz "core::ptr::drop_in_place" + .asciz "core::panicking::assert_failed" + .asciz "core::panicking::assert_failed" + .asciz "core::panicking::assert_failed" + .asciz "core::panicking::assert_failed" + .asciz "core::panicking::assert_failed" + .asciz "::read_block" + .asciz "::write_block" + .asciz "::handle_irq" + .asciz "os::drivers::block::virtio_blk::VirtIOBlock::new" + .asciz "::dma_alloc" + .asciz "::virt_to_phys" + .asciz "os::sync::semaphore::Semaphore::up" + .asciz "os::sync::semaphore::Semaphore::down" + .asciz "os::syscall::net::sys_connect" + .asciz "os::task::processor::run_tasks" + .asciz "os::task::processor::current_process" + .asciz "os::task::processor::current_user_token" + .asciz "os::task::processor::current_trap_cx" + .asciz "os::task::processor::current_trap_cx_user_va" + .asciz "os::net::socket::get_socket" + .asciz "os::net::socket::add_socket" + .asciz "os::net::socket::remove_socket" + .asciz "os::net::socket::push_data" + .asciz "os::net::socket::pop_data" + .asciz "core::ptr::drop_in_place" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz " as core::ops::drop::Drop>::drop" + .asciz "os::task::process::ProcessControlBlockInner::alloc_fd" + .asciz "os::task::process::ProcessControlBlock::new" + .asciz "os::task::process::ProcessControlBlock::exec" + .asciz "os::task::process::ProcessControlBlock::fork" + .asciz "virtio_drivers::gpu::VirtIOGpu::setup_cursor" + .asciz "virtio_drivers::gpu::VirtIOGpu::setup_framebuffer" + .asciz "virtio_drivers::gpu::VirtIOGpu::resource_create_2d" + .asciz "virtio_drivers::gpu::VirtIOGpu::transfer_to_host_2d" + .asciz "virtio_drivers::gpu::VirtIOGpu::resource_attach_backing" + .asciz "virtio_drivers::gpu::VirtIOGpu::new" + .asciz "virtio_drivers::gpu::VirtIOGpu::flush" + .asciz "<&mut T as core::fmt::Debug>::fmt" + .asciz "__rust_alloc" + .asciz "__rust_dealloc" + .asciz "__rust_realloc" + .asciz "__rust_alloc_zeroed" + .asciz "__rust_alloc_error_handler" + .asciz "xmas_elf::header::HeaderPt2::entry_point" + .asciz "xmas_elf::header::HeaderPt2::ph_count" + .asciz "xmas_elf::program::parse_program_header" + .asciz "xmas_elf::program::ProgramHeader::get_type" + .asciz "xmas_elf::program::Flags::is_execute" + .asciz "xmas_elf::program::Flags::is_write" + .asciz "xmas_elf::program::Flags::is_read" + .asciz "xmas_elf::program::ProgramHeader::file_size" + .asciz "xmas_elf::program::ProgramHeader::mem_size" + .asciz "xmas_elf::program::ProgramHeader::offset" + .asciz "xmas_elf::program::ProgramHeader::virtual_addr" + .asciz "xmas_elf::program::ProgramHeader::flags" + .asciz "xmas_elf::ElfFile::new" + .asciz "xmas_elf::ElfFile::program_header" + .asciz "trace_lib::InstructionSp::new" + .asciz "trace_lib::sd_ra" + .asciz "lose_net_stack::addr::IPv4::new" + .asciz "lose_net_stack::addr::IPv4::from_u32" + .asciz "lose_net_stack::addr::MacAddress::new" + .asciz "lose_net_stack::packets::udp::UDPPacket::new" + .asciz "lose_net_stack::packets::udp::UDPPacket::build_data" + .asciz "lose_net_stack::packets::arp::ArpPacket::build_data" + .asciz "lose_net_stack::packets::arp::ArpPacket::reply_packet" + .asciz "lose_net_stack::LoseStack::new" + .asciz "lose_net_stack::LoseStack::analysis" + .asciz "::fmt" + .asciz "buddy_system_allocator::Heap::init" + .asciz "buddy_system_allocator::Heap::alloc" + .asciz "buddy_system_allocator::Heap::dealloc" + .asciz "::deref" + .asciz "::deref" + .asciz "::alloc" + .asciz "::dealloc" + .asciz "::dealloc" + .asciz "tinybmp::header::Bpp::parse" + .asciz "tinybmp::header::Bpp::bits" + .asciz "tinybmp::header::Header::parse" + .asciz "tinybmp::header::CompressionMethod::parse" + .asciz "tinybmp::header::dib_header::DibHeader::parse" + .asciz ">::parse" + .asciz ">::parse" + .asciz "tinybmp::raw_bmp::RawBmp::from_slice" + .asciz "tinybmp::raw_bmp::RawBmp::color_bpp" + .asciz "tinybmp::raw_bmp::RawBmp::color_table" + .asciz "tinybmp::raw_bmp::RawBmp::image_data" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&u16>" + .asciz "::fmt" + .asciz "nom::internal::Needed::new" + .asciz "embedded_graphics_core::geometry::size::Size::new" + .asciz "easy_fs::vfs::Inode::find_inode_id" + .asciz "easy_fs::vfs::Inode::find" + .asciz "easy_fs::vfs::Inode::increase_size" + .asciz "easy_fs::vfs::Inode::create" + .asciz "easy_fs::vfs::Inode::ls" + .asciz "easy_fs::vfs::Inode::read_at" + .asciz "easy_fs::vfs::Inode::write_at" + .asciz "easy_fs::vfs::Inode::clear" + .asciz "core::ptr::drop_in_place" + .asciz "easy_fs::layout::DiskInode::get_block_id" + .asciz "easy_fs::layout::DiskInode::increase_size" + .asciz "easy_fs::layout::DiskInode::clear_size" + .asciz "easy_fs::layout::DiskInode::read_at" + .asciz "easy_fs::layout::DiskInode::write_at" + .asciz "easy_fs::layout::DirEntry::name" + .asciz "core::ptr::drop_in_place<&u32>" + .asciz "core::ptr::drop_in_place<&usize>" + .asciz "core::panicking::assert_failed" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "alloc::raw_vec::finish_grow" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "easy_fs::block_cache::BlockCache::read" + .asciz "easy_fs::block_cache::BlockCache::read" + .asciz "easy_fs::block_cache::BlockCache::read" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::BlockCache::modify" + .asciz "easy_fs::block_cache::get_block_cache" + .asciz "easy_fs::block_cache::block_cache_sync_all" + .asciz "spin::once::Once::call_once" + .asciz "easy_fs::efs::EasyFileSystem::open" + .asciz "easy_fs::efs::EasyFileSystem::root_inode" + .asciz "easy_fs::efs::EasyFileSystem::dealloc_data" + .asciz " as core::iter::traits::iterator::Iterator>::try_fold" + .asciz " as core::iter::traits::iterator::Iterator>::try_fold" + .asciz "alloc::collections::vec_deque::VecDeque::grow" + .asciz "alloc::collections::vec_deque::VecDeque::wrap_copy" + .asciz " as core::ops::drop::Drop>::drop" + .asciz "easy_fs::bitmap::Bitmap::alloc" + .asciz "easy_fs::bitmap::Bitmap::dealloc" + .asciz " as core::ops::drop::Drop>::drop" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "alloc::sync::Arc::drop_slow" + .asciz "::drop" + .asciz "::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&u32>" + .asciz "::fmt" + .asciz "virtio_drivers::gpu::CtrlHeader::with_type" + .asciz "virtio_drivers::gpu::CtrlHeader::check_type" + .asciz "::fmt" + .asciz "::fmt" + .asciz "::fmt" + .asciz "virtio_drivers::header::VirtIOHeader::finish_init" + .asciz "virtio_drivers::header::VirtIOHeader::read_device_features" + .asciz "virtio_drivers::header::VirtIOHeader::write_driver_features" + .asciz "virtio_drivers::header::VirtIOHeader::queue_set" + .asciz "virtio_drivers::header::VirtIOHeader::queue_used" + .asciz "virtio_drivers::header::VirtIOHeader::max_queue_size" + .asciz "virtio_drivers::header::VirtIOHeader::notify" + .asciz "virtio_drivers::header::VirtIOHeader::ack_interrupt" + .asciz "virtio_drivers::header::VirtIOHeader::config_space" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "::fmt" + .asciz "::fmt" + .asciz "virtio_drivers::queue::VirtQueueLayout::new" + .asciz "virtio_drivers::pages" + .asciz "::fmt" + .asciz "core::ptr::drop_in_place<&u32>" + .asciz "virtio_drivers::blk::BlkResp::status" + .asciz "::default" + .asciz "::fmt" + .asciz "::fmt" + .asciz "::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&u8>" + .asciz " as core::fmt::Debug>::fmt" + .asciz " as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&&str>" + .asciz "::enabled" + .asciz "::log" + .asciz "::flush" + .asciz "log::__private_api_log" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "core::ptr::drop_in_place<&riscv::register::scause::Exception>" + .asciz "riscv::register::scause::Interrupt::from" + .asciz "riscv::register::scause::Exception::from" + .asciz "riscv::register::scause::Scause::code" + .asciz "::fmt" + .asciz "::fmt" + .asciz "::fmt" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ptr::drop_in_place<&u8>" + .asciz "<&mut W as core::fmt::Write>::write_char" + .asciz "<&mut W as core::fmt::Write>::write_fmt" + .asciz "<&mut W as core::fmt::Write>::write_str" + .asciz "alloc::raw_vec::RawVec::reserve::do_reserve_and_handle" + .asciz "alloc::raw_vec::RawVec::reserve_for_push" + .asciz "alloc::raw_vec::finish_grow" + .asciz "alloc::raw_vec::capacity_overflow" + .asciz "alloc::alloc::handle_alloc_error" + .asciz "alloc::alloc::handle_alloc_error::rt_error" + .asciz "__rg_oom" + .asciz "alloc::collections::btree::node::splitpoint" + .asciz "alloc::fmt::format::format_inner" + .asciz "alloc::string::String::push" + .asciz "::clone" + .asciz "alloc::vec::Vec::remove::assert_failed" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ops::function::FnOnce::call_once" + .asciz "core::ptr::drop_in_place<&core::iter::adapters::copied::Copied>>" + .asciz "core::intrinsics::const_eval_select" + .asciz " as core::fmt::Debug>::fmt" + .asciz "::type_id" + .asciz "::fmt" + .asciz "core::option::expect_failed" + .asciz "core::panic::panic_info::PanicInfo::message" + .asciz "core::panic::panic_info::PanicInfo::location" + .asciz "core::panicking::panic" + .asciz "core::panicking::panic_str" + .asciz "core::panicking::panic_display" + .asciz "core::panicking::panic_bounds_check" + .asciz "core::panicking::panic_fmt" + .asciz "core::panicking::assert_failed" + .asciz "core::panicking::assert_failed_inner" + .asciz "core::result::unwrap_failed" + .asciz "::write_str" + .asciz "core::fmt::builders::DebugStruct::field" + .asciz "core::fmt::builders::DebugStruct::finish" + .asciz "core::fmt::builders::DebugTuple::field" + .asciz "core::fmt::builders::DebugInner::entry" + .asciz "core::fmt::builders::DebugSet::entry" + .asciz "core::fmt::builders::DebugList::entry" + .asciz "core::fmt::builders::DebugList::finish" + .asciz "core::fmt::Write::write_char" + .asciz "core::fmt::Write::write_fmt" + .asciz "<&mut W as core::fmt::Write>::write_str" + .asciz "<&mut W as core::fmt::Write>::write_char" + .asciz "<&mut W as core::fmt::Write>::write_fmt" + .asciz "::fmt" + .asciz "core::fmt::write" + .asciz "core::fmt::Formatter::pad_integral" + .asciz "core::fmt::Formatter::pad_integral::write_prefix" + .asciz "core::fmt::Formatter::pad" + .asciz "core::fmt::Formatter::write_str" + .asciz "::write_str" + .asciz "core::fmt::Formatter::write_fmt" + .asciz "::write_fmt" + .asciz "core::fmt::Formatter::debug_lower_hex" + .asciz "core::fmt::Formatter::debug_upper_hex" + .asciz "core::fmt::Formatter::debug_struct" + .asciz "core::fmt::Formatter::debug_struct_field4_finish" + .asciz "core::fmt::Formatter::debug_struct_field5_finish" + .asciz "core::fmt::Formatter::debug_struct_fields_finish" + .asciz "core::fmt::Formatter::debug_tuple_field1_finish" + .asciz "core::fmt::Formatter::debug_list" + .asciz "::fmt" + .asciz "::fmt" + .asciz "::fmt" + .asciz "core::slice::index::slice_start_index_len_fail" + .asciz "core::slice::index::slice_start_index_len_fail_rt" + .asciz "core::slice::index::slice_end_index_len_fail" + .asciz "core::slice::index::slice_end_index_len_fail_rt" + .asciz "core::slice::index::slice_index_order_fail" + .asciz "core::slice::index::slice_index_order_fail_rt" + .asciz "core::slice::index::slice_end_index_overflow_fail" + .asciz "core::slice::::copy_from_slice::len_mismatch_fail" + .asciz "core::str::converts::from_utf8" + .asciz "core::str::count::do_count_chars" + .asciz "core::str::slice_error_fail" + .asciz "core::str::slice_error_fail_rt" + .asciz "core::unicode::printable::check" + .asciz "core::unicode::printable::is_printable" + .asciz "::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::::fmt" + .asciz "core::fmt::num::imp::fmt_u64" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "core::fmt::num::imp::::fmt" + .asciz "::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Debug>::fmt" + .asciz "<&T as core::fmt::Display>::fmt" + .asciz "::fmt" + .asciz "core::unicode::unicode_data::grapheme_extend::lookup" + .asciz "::fmt" + .asciz "memmove" + .asciz "memcmp" + .asciz "memset" + .asciz "memcpy" + .asciz "compiler_builtins::mem::memcpy" + .asciz "compiler_builtins::mem::memmove" + .asciz "compiler_builtins::mem::memset" + .asciz "compiler_builtins::mem::memcmp" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.1.llvm.11268362036384062497" + .asciz "etext" + .asciz "srodata" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.2.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.4.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.5.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.6.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.12.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.13.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.35.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.36.llvm.11268362036384062497" + .asciz "anon.4b911a85d51cf3581488bf37cf13dd3a.37.llvm.11268362036384062497" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.17.llvm.9688167096614078669" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.0.llvm.5859315453174299026" + .asciz "anon.595796f9b7ac15107def679665dceec3.3.llvm.7705241275685202402" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.37.llvm.15412816992501787601" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.54.llvm.5859315453174299026" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.7.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.12.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.13.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.14.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.15.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.26.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.27.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.28.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.29.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.30.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.31.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.32.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.33.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.34.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.37.llvm.15101194769884667637" + .asciz "anon.f54620e91403bbba143a2a3092bbd0ce.38.llvm.15101194769884667637" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.0.llvm.18192535244552573427" + .asciz "os::drivers::gpu::GPU_DEVICE" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.1.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.2.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.3.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.4.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.5.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.6.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.12.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.15.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.16.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.17.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.18.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.19.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.20.llvm.18192535244552573427" + .asciz "anon.fb3a9aa036c5bd1844bdcac26706046c.21.llvm.18192535244552573427" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.1.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.2.llvm.12960313981900283508" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.27.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.69.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.64.llvm.13064429698106995504" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.0.llvm.10344818627785487408" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.36.llvm.8087189868723100451" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.17.llvm.5859315453174299026" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.41.llvm.3534975616616610067" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.10.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.11.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.12.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.13.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.14.llvm.12960313981900283508" + .asciz "anon.4263d8c46121fdf016fd8a54b7dda903.15.llvm.12960313981900283508" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.25.llvm.3534975616616610067" + .asciz "anon.911c3e5874c6fbed894557149354945f.0.llvm.3021502609581363098" + .asciz "os::mm::memory_set::KERNEL_SPACE" + .asciz "anon.911c3e5874c6fbed894557149354945f.1.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.2.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.7.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.8.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.9.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.10.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.11.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.12.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.21.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.22.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.24.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.27.llvm.3021502609581363098" + .asciz "anon.911c3e5874c6fbed894557149354945f.33.llvm.3021502609581363098" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.1.llvm.5859315453174299026" + .asciz "os::drivers::chardev::UART" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.2.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.3.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.4.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.5.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.18.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.19.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.20.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.21.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.22.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.23.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.24.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.25.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.26.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.27.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.28.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.29.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.35.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.36.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.38.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.47.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.48.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.49.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.50.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.55.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.56.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.57.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.59.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.60.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.61.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.62.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.63.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.64.llvm.5859315453174299026" + .asciz "anon.5fafa75baeb5612eb7ebf99815a3895b.65.llvm.5859315453174299026" + .asciz "os::drivers::input::MOUSE_DEVICE" + .asciz "os::drivers::input::KEYBOARD_DEVICE" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.5.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.28.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.29.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.30.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.65.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.66.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.67.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.68.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.70.llvm.13064429698106995504" + .asciz "anon.2d260ac5ac640106fcb8aa5c25bd7b76.71.llvm.13064429698106995504" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.7.llvm.3534975616616610067" + .asciz "os::DEV_NON_BLOCKING_ACCESS" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.14.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.20.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.21.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.24.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.30.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.31.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.32.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.33.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.37.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.38.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.39.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.42.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.43.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.44.llvm.3534975616616610067" + .asciz "anon.04a40d7a4aefb0eb1248f61155d89d9a.45.llvm.3534975616616610067" + .asciz "symbol_num" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.0.llvm.8087189868723100451" + .asciz "symbol_address" + .asciz "symbol_index" + .asciz "symbol_name" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.1.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.2.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.8.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.9.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.10.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.11.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.13.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.14.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.18.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.19.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.23.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.37.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.38.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.39.llvm.8087189868723100451" + .asciz "anon.d98a0382ceafcf74ce28f54f0b08496a.40.llvm.8087189868723100451" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.1.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.2.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.3.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.4.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.5.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.6.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.7.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.8.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.9.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.10.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.11.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.12.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.13.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.14.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.15.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.16.llvm.10344818627785487408" + .asciz "anon.f496281537c3c19695b54aa2f57ec5ea.17.llvm.10344818627785487408" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.0.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.1.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.2.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.3.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.4.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.5.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.6.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.7.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.8.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.9.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.10.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.11.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.12.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.13.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.14.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.15.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.16.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.18.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.19.llvm.9688167096614078669" + .asciz "anon.862a2180a7a31a15304d40941dc4486f.20.llvm.9688167096614078669" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.3.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.5.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.6.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.7.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.11.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.13.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.19.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.20.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.21.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.22.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.23.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.24.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.25.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.26.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.33.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.34.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.35.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.36.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.37.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.38.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.42.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.43.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.45.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.47.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.48.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.50.llvm.1327921005567361246" + .asciz "anon.03c5ce3d113b649f257a58176d7298f2.52.llvm.1327921005567361246" + .asciz "anon.a8be5aab1c5398aebbd3460de432de8c.0.llvm.2858392631485200336" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.1.llvm.1992413399604524181" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.2.llvm.1992413399604524181" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.4.llvm.1992413399604524181" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.5.llvm.1992413399604524181" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.6.llvm.1992413399604524181" + .asciz "anon.4879ebbc883c4bbd9a0df543603a7559.7.llvm.1992413399604524181" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.5.llvm.13406059172380923135" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.6.llvm.13406059172380923135" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.7.llvm.13406059172380923135" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.8.llvm.13406059172380923135" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.9.llvm.13406059172380923135" + .asciz "anon.1e03c4f6346492c094c7ec1291d54b66.10.llvm.13406059172380923135" + .asciz "anon.d74710986f61b501a22854b591c03291.0.llvm.6854127431528152524" + .asciz "anon.d74710986f61b501a22854b591c03291.5.llvm.6854127431528152524" + .asciz "anon.d74710986f61b501a22854b591c03291.6.llvm.6854127431528152524" + .asciz "anon.d74710986f61b501a22854b591c03291.7.llvm.6854127431528152524" + .asciz "anon.d74710986f61b501a22854b591c03291.8.llvm.6854127431528152524" + .asciz "anon.595796f9b7ac15107def679665dceec3.0.llvm.7705241275685202402" + .asciz "anon.595796f9b7ac15107def679665dceec3.1.llvm.7705241275685202402" + .asciz "anon.595796f9b7ac15107def679665dceec3.2.llvm.7705241275685202402" + .asciz "anon.595796f9b7ac15107def679665dceec3.4.llvm.7705241275685202402" + .asciz "anon.76d6fe46374dac2c8326e485dafa486a.8.llvm.3830274489057120371" + .asciz "anon.76d6fe46374dac2c8326e485dafa486a.21.llvm.3830274489057120371" + .asciz "anon.3181c7ba5c88a9b96a26fb14a17f5c50.1.llvm.13268878403972821721" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.0.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.3.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.4.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.5.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.6.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.7.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.8.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.9.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.12.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.13.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.14.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.15.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.16.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.17.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.19.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.20.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.26.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.29.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.31.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.32.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.34.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.35.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.36.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.38.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.39.llvm.15412816992501787601" + .asciz "anon.6c456bd04a8dc809e14a49b138ed272c.40.llvm.15412816992501787601" + .asciz "anon.cfb845abf8d05c2a4e1098564cf8e1a7.0.llvm.16655801716346725160" + .asciz "anon.cfb845abf8d05c2a4e1098564cf8e1a7.1.llvm.16655801716346725160" + .asciz "anon.cfb845abf8d05c2a4e1098564cf8e1a7.2.llvm.16655801716346725160" + .asciz "anon.cfb845abf8d05c2a4e1098564cf8e1a7.3.llvm.16655801716346725160" + .asciz "anon.cfb845abf8d05c2a4e1098564cf8e1a7.4.llvm.16655801716346725160" + .asciz "anon.e58371c69ea67651aff0c1e9b8127d59.0.llvm.15056201291056703624" + .asciz "anon.e58371c69ea67651aff0c1e9b8127d59.2.llvm.15056201291056703624" + .asciz "anon.41f79963c69e9c3b540897bfed9ebc12.1.llvm.3551546544581069250" + .asciz "anon.41f79963c69e9c3b540897bfed9ebc12.3.llvm.3551546544581069250" + .asciz "anon.41f79963c69e9c3b540897bfed9ebc12.4.llvm.3551546544581069250" + .asciz "anon.41f79963c69e9c3b540897bfed9ebc12.5.llvm.3551546544581069250" + .asciz "anon.29f606a6344402991cf95538583ef9e3.1.llvm.14429392161889529873" + .asciz "anon.29f606a6344402991cf95538583ef9e3.2.llvm.14429392161889529873" + .asciz "anon.9513395c69080e548ab4ab022bacf368.0.llvm.633157336403734994" + .asciz "anon.9513395c69080e548ab4ab022bacf368.1.llvm.633157336403734994" + .asciz "anon.9513395c69080e548ab4ab022bacf368.2.llvm.633157336403734994" + .asciz "anon.9513395c69080e548ab4ab022bacf368.3.llvm.633157336403734994" + .asciz "core::unicode::unicode_data::grapheme_extend::SHORT_OFFSET_RUNS" + .asciz "core::unicode::unicode_data::grapheme_extend::OFFSETS" + .asciz "erodata" + .asciz "sdata" + .asciz "log::LOGGER.0" + .asciz "log::LOGGER.1" + .asciz "boot_stack_lower_bound" + .asciz "edata" + .asciz "sbss_with_stack" + .asciz "boot_stack_top" + .asciz "sbss" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "os::mm::heap_allocator::HEAP_SPACE" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "os::mm::heap_allocator::HEAP_ALLOCATOR" + .asciz "::deref::__stability::LAZY" + .asciz "os::TIMER_SCRATCH" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "::deref::__stability::LAZY" + .asciz "log::STATE" + .asciz "log::MAX_LOG_LEVEL_FILTER" + .asciz "ebss" + .asciz "ekernel" diff --git a/os/src/trace/mod.rs b/os/src/trace/mod.rs new file mode 100644 index 000000000..fadca3cc4 --- /dev/null +++ b/os/src/trace/mod.rs @@ -0,0 +1,75 @@ +use alloc::string::{String, ToString}; +use alloc::vec::Vec; +use core::arch::global_asm; +use trace_lib::Symbol; + + +#[derive(Debug, Clone)] +pub struct SymbolEntry { + addr: usize, + symbol_str: String, +} + + +impl SymbolEntry { + pub fn new(addr: usize, symbol_str: String) -> Self { + Self { addr, symbol_str } + } +} + +impl Symbol for SymbolEntry { + fn addr(&self) -> usize { + self.addr + } + fn name(&self) -> &str { + &self.symbol_str + } +} + +extern "C" { + fn symbol_num(); + fn symbol_address(); + fn symbol_index(); + fn symbol_name(); +} + +global_asm!(include_str!("kernel_symbol.S")); +pub fn init_kernel_trace() -> Vec { + let symbol_num_addr = symbol_num as usize as *const usize; + let symbol_num = unsafe { symbol_num_addr.read_volatile() }; + let mut symbol_info = Vec::new(); + if symbol_num==0 { + return symbol_info; + } + let symbol_addr = symbol_address as usize as *const usize; //符号地址存储区域 + let addr_data = unsafe { core::slice::from_raw_parts(symbol_addr, symbol_num) }; + let symbol_index = symbol_index as usize as *const usize; //符号字符串的起始位置 + let index_data = unsafe { core::slice::from_raw_parts(symbol_index, symbol_num) }; + let symbol_name = symbol_name as usize as *const u8; //符号字符串 + for i in 0..symbol_num - 1 { + let name = unsafe { + core::slice::from_raw_parts( + symbol_name.add(index_data[i]), + index_data[i + 1] - index_data[i], + ) + }; + let name = core::str::from_utf8(name).unwrap(); + symbol_info.push(SymbolEntry::new(addr_data[i], name.to_string())); + } + let mut name: Vec = Vec::new(); + unsafe { + for i in index_data[symbol_num - 1].. { + let c = symbol_name.add(i); + if *c == 0 { + break; + } + name.push(*c); + } + } + let name = core::str::from_utf8(&name).unwrap(); + symbol_info.push(SymbolEntry::new( + addr_data[symbol_num - 1], + name.to_string(), + )); + symbol_info +}