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?

  • barsoap@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    3 days ago

    Your ld.so contains:

    Entry point address: 0x1d780

    EDIT: …with which I meant, modulo brainfart: My libc.so.6 contains a proper entry address, while other libraries are pointing at 0x0 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.

    • JATth@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 days ago

      Btw, ld.so is a symlink to ld-linux-x86-64.so.2 at least on my system. It is an statically linked executable. The ld.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 section segment of ld.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.