Also, do y’all call main() in the if block or do you just put the code you want to run in the if block?
Your ld.so contains:Entry point address: 0x1d780EDIT: …with which I meant, modulo brainfart: My
libc.so.6
contains a proper entry address, while other libraries are pointing at0x0
and coredump when executed.libc.so
is a linker script, presumably because GNU compulsively overcomplicates everything.…I guess that’s enough for the kernel. It might be a linux-only thing, maybe even unintended and well linux doesn’t break userspace.
Speaking of, I was playing it a bit fast and loose:
_start
is merely the default symbol name for the entry label, I’m sure nasm and/or ld have ways to set it to something different.Btw,
ld.so
is a symlink told-linux-x86-64.so.2
at least on my system. It is an statically linked executable. Theld.so
is, in simpler words, an interpreter for the ELF format and you can run it:ld.so --help
Entry point address: 0x1d780
Which seems to be contained in the only executable
sectionsegment ofld.so
LOAD 0x0000000000001000 0x0000000000001000 0x0000000000001000 0x0000000000028bb5 0x0000000000028bb5 R E 0x1000
Edit: My understanding of this quite shallow; the above is a segment that in this case contains the entirety of the
.text
section.