NAME=tables sum
FILE=bins/elf/analysis/elf-virtualtable
ARGS=-e bin.types=true
CMDS=<<EOF
f, size/sum
EOF
EXPECT=<<EOF
size
----
17.7K

EOF
RUN

NAME=tables sort
FILE=bins/elf/analysis/elf-virtualtable
CMDS=<<EOF
f, size/cols,size/sort,size/uniq
EOF
EXPECT=<<EOF
size
----
0
1
2
3
4
6
8
9
13
16
17
21
23
24
26
28
32
36
42
43
52
56
62
64
66
68
80
88
96
101
104
124
158
176
203
240
256
268
272
432
448
464
497
512
540
978
1160
1255
2424
4132

EOF
RUN

NAME=tables csv
FILE=bins/elf/analysis/elf-virtualtable
ARGS=-e bin.types=true
CMDS=<<EOF
f, size/ne/0,addr/ne/0x00000000,/head/10,:csv~:..20
f, space/eq/relocs,addr/cols/name,/head/3,:json~{}
f, /head/10,/tail/4,space/cols/name
f, /page/2/10,sort/cols/space/size/name,size/sort/inc,:fancy
EOF
EXPECT=<<EOF
addr,size,space,name
0x00000040,56,format,elf_phdr
0x00000448,497,format,elf_strtab
0x0000213f,268,format,elf_shstrtab
0x00002250,64,format,elf_shdr
0x00400000,4132,segments,segment.LOAD0
0x00400000,64,segments,segment.ehdr
0x00400040,448,segments,segment.PHDR
0x00400200,28,sections,section..interp
0x00400200,28,segments,segment.INTERP
0x0040021c,32,sections,section..note.ABI_tag

[
  {
    "addr": 6296136,
    "name": "reloc.__gmon_start__"
  },
  {
    "addr": 6296168,
    "name": "reloc.std::ostream::operator___int_"
  },
  {
    "addr": 6296176,
    "name": "reloc.operator_delete_void_"
  }
]

space    name
-------------
segments segment.GNU_STACK
classes  class.std::ostream
classes  class.std::ios_base::Init
classes  class.std::basic_ostream_char__std::char_traits_char____std::operator____std
classes  class.std::basic_ostream_char__std::char_traits_char____std::endl_char__std

.--------------------------------------------------------------------------------------------------.
| space     | size  | name                                                                         |
)--------------------------------------------------------------------------------------------------(
| classes   | 1     | class.std::basic_ostream_char__std::char_traits_char____std::endl_char__std  |
| classes   | 1     | class.B                                                                      |
| classes   | 1     | class.A                                                                      |
| classes   | 1     | class.C                                                                      |
| format    | 56    | elf_phdr                                                                     |
| format    | 64    | elf_header                                                                   |
| format    | 64    | elf_shdr                                                                     |
| segments  | 64    | segment.ehdr                                                                 |
| format    | 268   | elf_shstrtab                                                                 |
| format    | 497   | elf_strtab                                                                   |
| segments  | 4132  | segment.LOAD0                                                                |
`--------------------------------------------------------------------------------------------------'

EOF
RUN
