hitHuang opened a new pull request, #19593:
URL: https://github.com/apache/nuttx/pull/19593

   ## Summary
   
   `CONFIG_ALLSYMS` doesn't even link under 
`CONFIG_BUILD_PROTECTED`/`CONFIG_BUILD_KERNEL`: `g_allsyms`/`g_nallsyms` only 
exist in the kernel image, but `symtab_allsyms.c` referencing them is built 
into user-mode `libc.a` too. Once that's fixed and you actually try backtraces, 
three more bugs show up: user-mode addresses get matched against unrelated 
kernel symbols, symbol sizes are garbage under `CONFIG_SYMTAB_ORDEREDBYNAME`, 
and a bunch of assembly-only entry points (exception/boot code) never resolve 
to a name because they were never marked `STT_FUNC`. This PR fixes all four.
   
   ## Impact
   
   Touches `libs/libc/symtab/symtab_allsyms.c` and a few risc-v assembly 
boot/exception files. No new Kconfig, no API changes, nothing changes unless 
`CONFIG_ALLSYMS=y`.
   
   ## Testing
   
   All of the below is `rv-virt:knsh` with `CONFIG_ALLSYMS`, 
`CONFIG_SYSTEM_DUMPSTACK`, `CONFIG_FRAME_POINTER`, and `CONFIG_SCHED_BACKTRACE` 
turned on by hand, unless noted otherwise. Also checked on `pnsh`, and 
regression-tested `nsh` to make sure nothing else broke.
   
   ### Problem 0: link failure under BUILD_PROTECTED/BUILD_KERNEL
   
   `rv-virt:knsh`:
   
   ```
   LD:  /home/huang/workspace/nuttx-fork/apps/bin/init
   riscv64-unknown-elf-ld -e _start --oformat elf32-littleriscv -e _start 
-Bstatic -T/home/huang/workspace/nuttx-fork/apps/import/scripts/gnu-elf.ld  
-L/home/huang/workspace/nuttx-fork/apps/import/libs -L 
"/home/huang/workspace/toolchain/riscv64-unknown-elf-toolsuite-1.0.6/bin/../lib/gcc/riscv64-unknown-elf/13.2.0/rv32imafdc_zicsr/ilp32d"
 /home/huang/workspace/nuttx-fork/apps/import/startup/crt0.o  
nsh_main.c.home.huang.workspace.nuttx-fork.apps.system.nsh.o --start-group -lmm 
-lc -lproxies -lgcc /home/huang/workspace/nuttx-fork/apps/libapps.a 
/home/huang/workspace/toolchain/riscv64-unknown-elf-toolsuite-1.0.6/bin/../lib/gcc/riscv64-unknown-elf/13.2.0/rv32imafdc_zicsr/ilp32d/libgcc.a
 --end-group -o  /home/huang/workspace/nuttx-fork/apps/bin/init
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/apps/import/libs/libc.a(symtab_allsyms.o): in 
function `allsyms_lookup':
   
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x28):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x2c):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x30):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x38):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:64:(.text.allsyms_findbyname+0x46):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x28):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x2c):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x30):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x38):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:64:(.text.allsyms_findbyvalue+0x46):
 undefined reference to `g_allsyms'
   make[3]: *** [/home/huang/workspace/nuttx-fork/apps/Application.mk:308: 
/home/huang/workspace/nuttx-fork/apps/bin/init] Error 1
   make[3]: Leaving directory '/home/huang/workspace/nuttx-fork/apps/system/nsh'
   make[2]: *** [Makefile:55: 
/home/huang/workspace/nuttx-fork/apps/system/nsh_install] Error 2
   make[2]: Leaving directory '/home/huang/workspace/nuttx-fork/apps'
   make[1]: *** [Makefile:101: .import] Error 2
   make[1]: Leaving directory '/home/huang/workspace/nuttx-fork/apps'
   make: *** [Makefile:108: import] Error 2
   ```
   
   `rv-virt:pnsh`, same underlying problem:
   
   ```
   huang@ubuntu:~/workspace/nuttx-fork/nuttx$ make -j$(nproc)
   Create version.h
   LN: platform/board to /home/huang/workspace/nuttx-fork/apps/platform/dummy
   Register: hello
   Register: nsh
   Register: sh
   Register: dumpstack
   Register: dd
   Register: ostest
   Register: getprime
   CC:  getopt.c fpu.c:57:8: warning: #warning "FPU test not built; Only 
available in the flat build (CONFIG_BUILD_FLAT)" [-Wcpp]
      57 | #      warning "FPU test not built; Only available in the flat build 
(CONFIG_BUILD_FLAT)"
         |        ^~~~~~~
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/staging//libc.a(symtab_allsyms.o): in 
function `allsyms_lookup':
   
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x28):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x2c):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x30):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:57:(.text.allsyms_findbyname+0x38):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:64:(.text.allsyms_findbyname+0x46):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x28):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x2c):
 undefined reference to `g_nallsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x30):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:61:(.text.allsyms_findbyvalue+0x38):
 undefined reference to `g_allsyms'
   riscv64-unknown-elf-ld: 
/home/huang/workspace/nuttx-fork/nuttx/libs/libc/symtab/symtab_allsyms.c:64:(.text.allsyms_findbyvalue+0x46):
 undefined reference to `g_allsyms'
   make[1]: *** [Makefile:70: nuttx_user] Error 1
   make: *** [tools/Unix.mk:558: nuttx] Error 2
   ```
   
   ### Problems 1-3: after fixing the link error, boots but backtraces are wrong
   
   Before fixing problems 1-3:
   
   ```
   ABC
   NuttShell (NSH) NuttX-13.0.0
   nsh> dumpstack 0 10
   [2830383448064000.001000] sched_dumpstack: backtrace:
   [2856153251840000.001000] sched_dumpstack: [ 0] [<0x8020d79a>] 
up_idle+0xc/0xfffff976
   [2873333121024000.001000] sched_dumpstack: [ 0] [<0x80201e4e>] 
nx_start+0x25e/0x260
   [2890512990208000.001000] sched_dumpstack: [ 0] [<0x802011d6>] 
qemu_rv_start+0x72/0x1cc8a
   [2911987826688000.001000] sched_dumpstack: [ 0] [<0x8020004a>] 
Unknown+0x8020004a/0x80207d2e
   [2933462663168000.001000] sched_dumpstack: backtrace:
   [2946347565056000.001000] sched_dumpstack: [ 1] [<0x8020d2b6>] 
up_switch_context+0x40/0x540
   [2963527434240000.001000] sched_dumpstack: [ 1] [<0x8021980a>] 
nxsem_wait_slow+0x17a/0xfffef70a
   [2989297238016000.001000] sched_dumpstack: [ 1] [<0x80208d8c>] 
nxsem_wait+0x8e/0xffffcf02
   [3006477107200000.001000] sched_dumpstack: [ 1] [<0x80208db0>] 
nxsem_wait_uninterruptible+0x16/0xffffb9b0
   [3027951943680000.001000] sched_dumpstack: [ 1] [<0x80203128>] 
work_thread+0x122/0xffffff12
   [3032246910976000.001000] sched_dumpstack: [ 1] [<0x80202a90>] 
nxtask_start+0x4c/0x18216
   [3040836845568000.001000] sched_dumpstack: backtrace:
   [3045131812864000.001000] sched_dumpstack: [ 3] [<0x8020d2b6>] 
up_switch_context+0x40/0x540
   [3049426780160000.001000] sched_dumpstack: [ 3] [<0x8021a068>] 
nxsig_clockwait+0x122/0xfffeaa64
   [3058016714752000.001000] sched_dumpstack: [ 3] [<0x8021a7be>] 
nxsig_timedwait+0xd4/0xfffff828
   [3066606649344000.001000] sched_dumpstack: [ 3] [<0x8021944a>] 
nxsched_waitpid+0xc0/0xffffff32
   [3070901616640000.001000] sched_dumpstack: [ 3] [<0x80219480>] 
waitpid+0xe/0xfffe9902
   [3075196583936000.001000] sched_dumpstack: [ 3] [<0x802089fc>] 
STUB_waitpid+0x12/0x1a
   [3079491551232000.001000] sched_dumpstack: [ 3] [<0x80201496>] 
dispatch_syscall+0x46/0x18864
   [3083786518528000.001000] sched_dumpstack: [ 3] [<0x802001aa>] 
Unknown+0x802001aa/0x80207d2e
   [3092376453120000.001000] sched_dumpstack: [ 3] [<0xc000c99a>] 
register_blockdriver+0x3fded564/0xffff3322
   [3096671420416000.001000] sched_dumpstack: [ 3] [<0xc0005f42>] 
register_blockdriver+0x3fde6b0c/0xffff3322
   [3105261355008000.001000] sched_dumpstack: [ 3] [<0xc0003662>] 
register_blockdriver+0x3fde422c/0xffff3322
   [3109556322304000.001000] sched_dumpstack: [ 3] [<0xc00045d2>] 
register_blockdriver+0x3fde519c/0xffff3322
   [3118146256896000.001000] sched_dumpstack: [ 3] [<0xc0004672>] 
register_blockdriver+0x3fde523c/0xffff3322
   [3122441224192000.001000] sched_dumpstack: [ 3] [<0xc0003036>] 
register_blockdriver+0x3fde3c00/0xffff3322
   [3131031158784000.001000] sched_dumpstack: [ 3] [<0xc0002e56>] 
register_blockdriver+0x3fde3a20/0xffff3322
   [3139621093376000.001000] sched_dumpstack: [ 3] [<0xc0000b4a>] 
register_blockdriver+0x3fde1714/0xffff3322
   [3148211027968000.001000] sched_dumpstack: [ 3] [<0xc0000b08>] 
register_blockdriver+0x3fde16d2/0xffff3322
   [3156800962560000.001000] sched_dumpstack: backtrace:
   [3161095929856000.001000] sched_dumpstack: [ 4] [<0x80219652>] 
sched_backtrace+0x30/0x3b40
   [3165390897152000.001000] sched_dumpstack: [ 4] [<0x802085f8>] 
STUB_sched_backtrace+0x14/0x1c
   [3173980831744000.001000] sched_dumpstack: [ 4] [<0x80201496>] 
dispatch_syscall+0x46/0x18864
   [3178275799040000.001000] sched_dumpstack: [ 4] [<0x802001aa>] 
Unknown+0x802001aa/0x80207d2e
   [3186865733632000.001000] sched_dumpstack: [ 4] [<0xc00016ac>] 
register_blockdriver+0x3fde2276/0xffff3322
   [3191160700928000.001000] sched_dumpstack: [ 4] [<0xc00007dc>] 
register_blockdriver+0x3fde13a6/0xffff3322
   [3199750635520000.001000] sched_dumpstack: [ 4] [<0xc000076c>] 
register_blockdriver+0x3fde1336/0xffff3322
   [3204045602816000.001000] sched_dumpstack: [ 4] [<0xc000072e>] 
register_blockdriver+0x3fde12f8/0xffff3322
   ```
   
   Three problems here:
   
   1. Under BUILD_KERNEL/BUILD_PROTECTED the kernel's symbol table can't see 
user-mode symbols at all, so user-stack addresses get matched against whatever 
unrelated kernel symbol happens to be nearby (`register_blockdriver`-style 
output), which is worse than useless.
   2. Symbol sizes are garbage, e.g. 
`nxsem_wait_uninterruptible+0x16/0xffffb9b0`.
   3. Some assembly-only symbols don't resolve at all 
(`Unknown+0x8020004a/0x80207d2e`).
   
   Problem 1 doesn't really have a fix beyond "don't lie": there's no way to 
resolve a user-mode symbol from kernel context, so the right behavior is just 
falling back to the raw address instead of guessing:
   
   ```
   ABC
   NuttShell (NSH) NuttX-13.0.0
   nsh> dumpstack 0 10
   [133143986176000.001000] sched_dumpstack: backtrace:
   [150323855360000.001000] sched_dumpstack: [ 0] [<0x8020d79e>] 
up_idle+0xc/0xfffff976
   [158913789952000.001000] sched_dumpstack: [ 0] [<0x80201e4e>] 
nx_start+0x25e/0x260
   [167503724544000.001000] sched_dumpstack: [ 0] [<0x802011d6>] 
qemu_rv_start+0x72/0x1cc8e
   [171798691840000.001000] sched_dumpstack: [ 0] [<0x8020004a>] 0x8020004a
   [176093659136000.001000] sched_dumpstack: backtrace:
   [180388626432000.001000] sched_dumpstack: [ 1] [<0x8020d2ba>] 
up_switch_context+0x40/0x540
   [184683593728000.001000] sched_dumpstack: [ 1] [<0x8021980e>] 
nxsem_wait_slow+0x17a/0xfffef706
   [193273528320000.001000] sched_dumpstack: [ 1] [<0x80208d8c>] 
nxsem_wait+0x8e/0xffffcf02
   [201863462912000.001000] sched_dumpstack: [ 1] [<0x80208db0>] 
nxsem_wait_uninterruptible+0x16/0xffffb9b0
   [210453397504000.001000] sched_dumpstack: [ 1] [<0x80203128>] 
work_thread+0x122/0xffffff12
   [214748364800000.001000] sched_dumpstack: [ 1] [<0x80202a90>] 
nxtask_start+0x4c/0x1821a
   [223338299392000.001000] sched_dumpstack: backtrace:
   [227633266688000.001000] sched_dumpstack: [ 3] [<0x8020d2ba>] 
up_switch_context+0x40/0x540
   [236223201280000.001000] sched_dumpstack: [ 3] [<0x8021a06c>] 
nxsig_clockwait+0x122/0xfffeaa60
   [244813135872000.001000] sched_dumpstack: [ 3] [<0x8021a7c2>] 
nxsig_timedwait+0xd4/0xfffff828
   [249108103168000.001000] sched_dumpstack: [ 3] [<0x8021944e>] 
nxsched_waitpid+0xc0/0xffffff32
   [253403070464000.001000] sched_dumpstack: [ 3] [<0x80219484>] 
waitpid+0xe/0xfffe98fe
   [261993005056000.001000] sched_dumpstack: [ 3] [<0x802089fc>] 
STUB_waitpid+0x12/0x1a
   [266287972352000.001000] sched_dumpstack: [ 3] [<0x80201496>] 
dispatch_syscall+0x46/0x18868
   [270582939648000.001000] sched_dumpstack: [ 3] [<0x802001aa>] 0x802001aa
   [274877906944000.001000] sched_dumpstack: [ 3] [<0xc000c99a>] 0xc000c99a
   [283467841536000.001000] sched_dumpstack: [ 3] [<0xc0005f42>] 0xc0005f42
   [287762808832000.001000] sched_dumpstack: [ 3] [<0xc0003662>] 0xc0003662
   [292057776128000.001000] sched_dumpstack: [ 3] [<0xc00045d2>] 0xc00045d2
   [296352743424000.001000] sched_dumpstack: [ 3] [<0xc0004672>] 0xc0004672
   [300647710720000.001000] sched_dumpstack: [ 3] [<0xc0003036>] 0xc0003036
   [304942678016000.001000] sched_dumpstack: [ 3] [<0xc0002e56>] 0xc0002e56
   [313532612608000.001000] sched_dumpstack: [ 3] [<0xc0000b4a>] 0xc0000b4a
   [322122547200000.001000] sched_dumpstack: [ 3] [<0xc0000b08>] 0xc0000b08
   [326417514496000.001000] sched_dumpstack: backtrace:
   [330712481792000.001000] sched_dumpstack: [ 4] [<0x80219656>] 
sched_backtrace+0x30/0x3b40
   [335007449088000.001000] sched_dumpstack: [ 4] [<0x802085f8>] 
STUB_sched_backtrace+0x14/0x1c
   [343597383680000.001000] sched_dumpstack: [ 4] [<0x80201496>] 
dispatch_syscall+0x46/0x18868
   [347892350976000.001000] sched_dumpstack: [ 4] [<0x802001aa>] 0x802001aa
   [352187318272000.001000] sched_dumpstack: [ 4] [<0xc00016ac>] 0xc00016ac
   [360777252864000.001000] sched_dumpstack: [ 4] [<0xc00007dc>] 0xc00007dc
   [360777252864000.001000] sched_dumpstack: [ 4] [<0xc000076c>] 0xc000076c
   [369367187456000.001000] sched_dumpstack: [ 4] [<0xc000072e>] 0xc000072e
   ```
   
   After fixing problem 2, symbol sizes are correct:
   
   ```
   ABC
   NuttShell (NSH) NuttX-13.0.0
   nsh> ps
     TID   PID  PPID PRI POLICY   TYPE    NPX STATE    EVENT     SIGMASK        
    STACK COMMAND
       0     0     0   0 FIFO     Kthread   - Ready              
0000000000000000 0003040 Idle_Task
       1     0     0 100 RR       Kthread   - Waiting  Semaphore 
0000000000000000 0004016 lpwork 0x80602330 0x80602380
       3     3     0 100 RR       Task      - Running            
0000000000000000 0003008 /system/bin/init
   nsh> dumpstack 0 10
   [4054449127424000.001000] sched_dumpstack: backtrace:
   [4071628996608000.001000] sched_dumpstack: [ 0] [<0x8020d80c>] 
up_idle+0xc/0x14
   [4080218931200000.001000] sched_dumpstack: [ 0] [<0x80201e4e>] 
nx_start+0x25e/0x260
   [4084513898496000.001000] sched_dumpstack: [ 0] [<0x802011d6>] 
qemu_rv_start+0x72/0x98
   [4088808865792000.001000] sched_dumpstack: [ 0] [<0x8020004a>] 0x8020004a
   [4093103833088000.001000] sched_dumpstack: backtrace:
   [4097398800384000.001000] sched_dumpstack: [ 1] [<0x8020d328>] 
up_switch_context+0x40/0x42
   [4101693767680000.001000] sched_dumpstack: [ 1] [<0x8021987c>] 
nxsem_wait_slow+0x17a/0x1a2
   [4105988734976000.001000] sched_dumpstack: [ 1] [<0x80208d8c>] 
nxsem_wait+0x8e/0x9c
   [4110283702272000.001000] sched_dumpstack: [ 1] [<0x80208db0>] 
nxsem_wait_uninterruptible+0x16/0x26
   [4118873636864000.001000] sched_dumpstack: [ 1] [<0x80203128>] 
work_thread+0x122/0x166
   [4123168604160000.001000] sched_dumpstack: [ 1] [<0x80202a90>] 
nxtask_start+0x4c/0x64
   [4131758538752000.001000] sched_dumpstack: backtrace:
   [4136053506048000.001000] sched_dumpstack: [ 3] [<0x8020d328>] 
up_switch_context+0x40/0x42
   [4140348473344000.001000] sched_dumpstack: [ 3] [<0x8021a0da>] 
nxsig_clockwait+0x122/0x1ea
   [4148938407936000.001000] sched_dumpstack: [ 3] [<0x8021a830>] 
nxsig_timedwait+0xd4/0x140
   [4153233375232000.001000] sched_dumpstack: [ 3] [<0x802194bc>] 
nxsched_waitpid+0xc0/0xe8
   [4157528342528000.001000] sched_dumpstack: [ 3] [<0x802194f2>] 
waitpid+0xe/0x38
   [4166118277120000.001000] sched_dumpstack: [ 3] [<0x802089fc>] 
STUB_waitpid+0x12/0x1a
   [4170413244416000.001000] sched_dumpstack: [ 3] [<0x80201496>] 
dispatch_syscall+0x46/0x62
   [4174708211712000.001000] sched_dumpstack: [ 3] [<0x802001aa>] 0x802001aa
   [4179003179008000.001000] sched_dumpstack: [ 3] [<0xc000c99a>] 0xc000c99a
   [4183298146304000.001000] sched_dumpstack: [ 3] [<0xc0005f42>] 0xc0005f42
   [4187593113600000.001000] sched_dumpstack: [ 3] [<0xc0003662>] 0xc0003662
   [4191888080896000.001000] sched_dumpstack: [ 3] [<0xc00045d2>] 0xc00045d2
   [4196183048192000.001000] sched_dumpstack: [ 3] [<0xc0004672>] 0xc0004672
   [4200478015488000.001000] sched_dumpstack: [ 3] [<0xc0003036>] 0xc0003036
   [4204772982784000.001000] sched_dumpstack: [ 3] [<0xc0002e56>] 0xc0002e56
   [4213362917376000.001000] sched_dumpstack: [ 3] [<0xc0000b4a>] 0xc0000b4a
   [4217657884672000.001000] sched_dumpstack: [ 3] [<0xc0000b08>] 0xc0000b08
   [4226247819264000.001000] sched_dumpstack: backtrace:
   [4230542786560000.001000] sched_dumpstack: [ 4] [<0x802196c4>] 
sched_backtrace+0x30/0x6e
   [4234837753856000.001000] sched_dumpstack: [ 4] [<0x802085f8>] 
STUB_sched_backtrace+0x14/0x1c
   [4243427688448000.001000] sched_dumpstack: [ 4] [<0x80201496>] 
dispatch_syscall+0x46/0x62
   [4247722655744000.001000] sched_dumpstack: [ 4] [<0x802001aa>] 0x802001aa
   [4252017623040000.001000] sched_dumpstack: [ 4] [<0xc00016ac>] 0xc00016ac
   [4256312590336000.001000] sched_dumpstack: [ 4] [<0xc00007dc>] 0xc00007dc
   [4260607557632000.001000] sched_dumpstack: [ 4] [<0xc000076c>] 0xc000076c
   [4264902524928000.001000] sched_dumpstack: [ 4] [<0xc000072e>] 0xc000072e
   ```
   
   After fixing problem 3, assembly-only symbols resolve correctly too 
(`__start`, `exception_common`):
   
   ```
   ABC
   NuttShell (NSH) NuttX-13.0.0
   nsh> dumpstack 0 10
   [3508988280832000.001000] sched_dumpstack: backtrace:
   [3551937953792000.001000] sched_dumpstack: [ 0] [<0x8020d814>] 
up_idle+0xc/0x14
   [3599182594048000.001000] sched_dumpstack: [ 0] [<0x80201e56>] 
nx_start+0x25e/0x260
   [3646427234304000.001000] sched_dumpstack: [ 0] [<0x802011d6>] 
qemu_rv_start+0x72/0x98
   [3672197038080000.001000] sched_dumpstack: [ 0] [<0x8020004a>] 
__start+0x4a/0x100
   [3672197038080000.001000] sched_dumpstack: backtrace:
   [3672197038080000.001000] sched_dumpstack: [ 1] [<0x8020d330>] 
up_switch_context+0x40/0x42
   [3672197038080000.001000] sched_dumpstack: [ 1] [<0x802198ba>] 
nxsem_wait_slow+0x17a/0x1a2
   [3672197038080000.001000] sched_dumpstack: [ 1] [<0x80208d94>] 
nxsem_wait+0x8e/0x9c
   [3672197038080000.001000] sched_dumpstack: [ 1] [<0x80208db8>] 
nxsem_wait_uninterruptible+0x16/0x26
   [3710851743744000.001000] sched_dumpstack: [ 1] [<0x80203130>] 
work_thread+0x122/0x166
   [3715146711040000.001000] sched_dumpstack: [ 1] [<0x80202a98>] 
nxtask_start+0x4c/0x64
   [3723736645632000.001000] sched_dumpstack: backtrace:
   [3728031612928000.001000] sched_dumpstack: [ 3] [<0x8020d330>] 
up_switch_context+0x40/0x42
   [3732326580224000.001000] sched_dumpstack: [ 3] [<0x8021a118>] 
nxsig_clockwait+0x122/0x1ea
   [3745211482112000.001000] sched_dumpstack: [ 3] [<0x8021a86e>] 
nxsig_timedwait+0xd4/0x140
   [3749506449408000.001000] sched_dumpstack: [ 3] [<0x802194fa>] 
nxsched_waitpid+0xc0/0xe8
   [3753801416704000.001000] sched_dumpstack: [ 3] [<0x80219530>] 
waitpid+0xe/0x38
   [3762391351296000.001000] sched_dumpstack: [ 3] [<0x80208a04>] 
STUB_waitpid+0x12/0x1a
   [3766686318592000.001000] sched_dumpstack: [ 3] [<0x80201496>] 
dispatch_syscall+0x46/0x62
   [3770981285888000.001000] sched_dumpstack: [ 3] [<0x802001aa>] 
exception_common+0xaa/0xb4
   [3779571220480000.001000] sched_dumpstack: [ 3] [<0xc000c99a>] 0xc000c99a
   [3783866187776000.001000] sched_dumpstack: [ 3] [<0xc0005f42>] 0xc0005f42
   [3788161155072000.001000] sched_dumpstack: [ 3] [<0xc0003662>] 0xc0003662
   [3796751089664000.001000] sched_dumpstack: [ 3] [<0xc00045d2>] 0xc00045d2
   [3801046056960000.001000] sched_dumpstack: [ 3] [<0xc0004672>] 0xc0004672
   [3805341024256000.001000] sched_dumpstack: [ 3] [<0xc0003036>] 0xc0003036
   [3813930958848000.001000] sched_dumpstack: [ 3] [<0xc0002e56>] 0xc0002e56
   [3822520893440000.001000] sched_dumpstack: [ 3] [<0xc0000b4a>] 0xc0000b4a
   [3835405795328000.001000] sched_dumpstack: [ 3] [<0xc0000b08>] 0xc0000b08
   [3843995729920000.001000] sched_dumpstack: backtrace:
   [3848290697216000.001000] sched_dumpstack: [ 4] [<0x80219702>] 
sched_backtrace+0x30/0x6e
   [3852585664512000.001000] sched_dumpstack: [ 4] [<0x80208600>] 
STUB_sched_backtrace+0x14/0x1c
   [3861175599104000.001000] sched_dumpstack: [ 4] [<0x80201496>] 
dispatch_syscall+0x46/0x62
   [3865470566400000.001000] sched_dumpstack: [ 4] [<0x802001aa>] 
exception_common+0xaa/0xb4
   [3874060500992000.001000] sched_dumpstack: [ 4] [<0xc00016ac>] 0xc00016ac
   [3878355468288000.001000] sched_dumpstack: [ 4] [<0xc00007dc>] 0xc00007dc
   [3882650435584000.001000] sched_dumpstack: [ 4] [<0xc000076c>] 0xc000076c
   [3886945402880000.001000] sched_dumpstack: [ 4] [<0xc000072e>] 0xc000072e
   ```
   
   ## Known follow-up (not fixed here)
   `g_symtab` and `g_allsyms` have nothing to do with each other — different 
data, different generators — but `symtab_findbyname()`/`symtab_findbyvalue()` 
only get compiled once, so both tables end up forced to share the same global 
ordering assumption 
(`CONFIG_SYMTAB_ORDEREDBYNAME`/`CONFIG_SYMTAB_ORDEREDBYVALUE`).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to