On Thu, Jan 4, 2024 at 10:05 AM Rob Landley <[email protected]> wrote: > > On 1/3/24 12:19, Mouse wrote: > >> (The line between PIE and dynamic linking confuses even me. How does > >> static PIE relocate itself? > > > > It may not. It could get relocated by in-kernel ASLR or the like. > > Also, I think PIE isn't relevant, or certainly isn't _as_ relevant, to > > the final executable; my impression is that it's more important for > > library code, so it doesn't need fixups. These are less important for > > static executables, since the fixups there happen once, at link time, > > whereas for a .so the fixups happen at runtime and reduce the > > text-segment sharing that is one of the benefits of shared objects. > > I want https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html but a > walkthrough for the kernel's ELF loader. (I've had to walk through it MYSELF > several times, but I didn't do writeups afterwards so forgot it all.)
(yeah, and the one i've done for that and for the libc side of things were both just google-internal talks, so there's no record of them anywhere :-( ) i've been meaning to tell you, apropos something you said on your blog about ARG_MAX (for xargs?), that the kernel changed how that works recently... see https://android.googlesource.com/platform/bionic/+/main/tests/unistd_test.cpp#1128 for more detail and links. > I suppose I should start by reading his dynamic version: > > https://www.muppetlabs.com/~breadbox/software/tiny/somewhat.html > > >> Luckily X11 has "detach and restart" plumbing that lets it reopen a > >> process's network pipe without killing the window or the process, > > > > ...? When did it grow that, and where can I find out more about it? > > Um... A) Before Scale 2011, B) ask Kir Kolyshkin? He said it was something > old. > (I think the program can just detect that the connection closed and dial out > to > the server again, opening a new window and repopulating it? It's just most > programs don't bother.) > > What OpenVZ was doing was > > A) tell the container to create a giant multi-process coredump file that had > every process in the container in one big file (but don't STOP anything, just > checkpoint the live running stuff racily). > > B) rsync the filesystem and coredump over to the new machine. > > C) Suspend the container (all processes) and re-write the big coredump file. > > D) rsync everything AGAIN (fast because not much changed) > > E) do TCP/IP connection hijacking so the new machine inherits the old open > connections (you don't have to predict sequence numbers the other side sends > you, don't forget to broadcast an ARP update so the packets go to the new > ethernet address): > > https://www.idc-online.com/technical_references/pdfs/data_communications/TCP_Sequence_Prediction_Attack.pdf > > F) Resume the new container in the new filesystem. > > He had an animated X11 window (screensaver) that paused for 1/3 of a second > while migrating from machine to machine. His demo involved plugging in a cat 5 > to the new machine, migrating to it, and unplugging the old one's network > cable. > > This was in 2011. I assume vanilla Linux has caught up by now, but there was > quite the laundry list at the time... > > Rob > _______________________________________________ > Toybox mailing list > [email protected] > http://lists.landley.net/listinfo.cgi/toybox-landley.net _______________________________________________ Toybox mailing list [email protected] http://lists.landley.net/listinfo.cgi/toybox-landley.net
