manみて適切なの使えば?というはなしなんだろうけど、まあとっかかりとかあるし。
objdump
だいたい -Cd(S) もしくは -Cdr(S)をつかってる気がする。Dだと -C dlang
とかつける。でもわりとその場その場で変えてるような気もする。
nm
-f はポータブルじゃないので、–format=posix とかにしてる。
hexdump
-C くらい?使い込んでないだけかも。
size
意外と知らない人もいるけど、なかなか便利なやつ。(マイコンとかだとサイズ気になる)
単にサイズ知りたいときは10進数にしてる。
$ arm-none-eabi-size -d examples/itm/itm.bin text data bss dec hex filename 8716 436 20 9172 23d4 examples/itm/itm.bin
セクション毎でみたいときは、だいたい -Ax にして16進数にしてる。
$ arm-none-eabi-size -Ax examples/itm/itm.bin examples/itm/itm.bin : section size addr .isr_vector 0x188 0x8000000 .text 0x174 0x8000188 .rodata 0x2098 0x80002fc .bss 0x14 0x20000000 .data 0x8 0x8002394 .got 0x18 0x800239c .got.plt 0xc 0x80023b4 .debug_str 0x62f 0x0 .debug_loc 0x226 0x0 .debug_abbrev 0x372 0x0 .debug_info 0x9ba 0x0 .debug_ranges 0xc0 0x0 .debug_macinfo 0x3 0x0 .debug_pubnames 0x273 0x0 .debug_pubtypes 0x1b1 0x0 .comment 0x12 0x0 .ARM.attributes 0x45 0x0 .debug_frame 0x1a0 0x0 .debug_line 0x2c4 0x0 Total 0x42f7
readelf
これこそいろいろ使いわけるような。でも -l と -S と -h は使用率高い気する。
あとCortex-Mだと -A オプションとか。
$ arm-none-eabi-readelf -A examples/led/led.bin Attribute Section: aeabi File Attributes Tag_conformance: "2.09" Tag_CPU_name: "cortex-m4" Tag_CPU_arch: v7E-M Tag_CPU_arch_profile: Microcontroller Tag_THUMB_ISA_use: Thumb-2 Tag_FP_arch: VFPv4-D16 Tag_ABI_PCS_RW_data: PC-relative Tag_ABI_PCS_RO_data: PC-relative Tag_ABI_PCS_GOT_use: GOT-indirect Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_HardFP_use: SP only Tag_ABI_VFP_args: VFP registers Tag_ABI_optimization_goals: Prefer Speed Tag_CPU_unaligned_access: v6 Tag_FP_HP_extension: Allowed Tag_ABI_FP_16bit_format: IEEE 754
gdb
だいたい -q -iex “set auto-load safe-path ./” で、もろもろは.gdbinitに書いてる。