The output from nm -n file looks like this:
0000000000800000 A _stack
0000002001000000 W _RELAX_END_
0000002001000010 T _start
0000002001000024 t
0000002001000024 T f1
0000002001000036 t
0000002001000036 T f2
0000002001000052 t
0000002001000052 T f4
0000002001000064 t
0000002001000064 T f5
0000002001000078 t
This output looks somewhat odd to me. Usually when I run nm I see almost every line with a symbol name in the third column. What would cause the output to be generated like this? Is there a symbol that exists at, for example, address 0000002001000024
that has been stripped?
This output looks somewhat odd to me.
It is odd.
Is there a symbol that exists at, for example, address
0000002001000024
that has been stripped?
Stripped symbols do not appear in the symbol table, this one does.
It's probably an artifact (bug?) of the compiler or assembler, which for some reason emits a local symbol with empty name for every global symbol it emits.
It's also possible that there was a non-empty name there, but that name was overwritten with (one or more) NUL
s as part of some kind of obfuscation / anti-reverse-engineering measure.