llvm-objdump 16 will have a new option --show-all-symbols (https://reviews.llvm.org/D131589) which prints all symbols during disassembly. This is useful to know all symbols defined at a location. https://github.com/llvm/llvm-project/blob/main/llvm/test/tools/llvm-objdump/multiple-symbols.s and https://github.com/llvm/llvm-project/blob/main/llvm/test/tools/llvm-objdump/multiple-symbols-mangling.s demonstrate the behavior. Here is some dump for your convenience. You can reproduce by yourself if you have installed llvm-mc and yaml2obj and have cloned llvm-project. cd llvm-project/llvm/test/tools/llvm-objdump llvm-mc -triple armv8a-unknown-linux -filetype=obj multiple-symbols.s -o a.o % fllvm-objdump --triple armv8a -d a.o a.o: file format elf32-littlearm Disassembly of section .text: 00000000 <bbbb>: 0: e0800080 add r0, r0, r0, lsl #1 4: e12fff1e bx lr 00000008 <dddd>: 8: eb00 0080 add.w r0, r0, r0, lsl #2 c: 4770 bx lr % fllvm-objdump --triple armv8a --show-all-symbols -d a.o a.o: file format elf32-littlearm Disassembly of section .text: 00000000 <$a.0>: 00000000 <aaaa>: 00000000 <bbbb>: 0: e0800080 add r0, r0, r0, lsl #1 4: e12fff1e bx lr 00000008 <$t.1>: 00000008 <cccc>: 00000008 <dddd>: 8: eb00 0080 add.w r0, r0, r0, lsl #2 c: 4770 bx lr % fllvm-objdump --triple armv8a --disassemble-symbols=aaaa -d a.o a.o: file format elf32-littlearm Disassembly of section .text: 00000000 <aaaa>: 0: e0800080 add r0, r0, r0, lsl #1 4: e12fff1e bx lr (llvm-objdump doesn't have --disassemble[=symbol]. It uses --disassemble-symbols=aaaa)
Created attachment 14488 [details] Proposed patch Hi Fanguri, What do you think of the uploaded patch ? With it applied, objdump's behaviour is similar to llvm-objdump's: % .objdump -d multisym.o --show-all-symbols multisym.o: file format elf32-littlearm Disassembly of section .text: 00000000 <aaaa>: 00000000 <bbbb>: 0: e0800080 add r0, r0, r0, lsl #1 ...etc... The difference is that it does not show the <$a.0> symbol. (Because the ARM backend in the BFD library considers it to be an "invalid" symbol). Personally I prefer this behaviour since those markup symbols are rarely useful to the user. Cheers Nick