Thank you for those observations, Aki.
It is not necessary to execute the code in my ELF in order to observe this problem. Target it with GDB. Use starti to reach the first instruction in ld-linux.so.2. Say break 0x11008 (the entry point published in the ELF header) and let gdb run until it reaches that address. At this point not a single instruction of my code has been executed. Use x to discover whether your system also maps no memory into this "hole". If still worried, write zeroes into the section of the ELF containing the program; that is the .text segment, beginning at 0x11000 offset in the file with length 0x8000 bytes.
Source code and building instructions are omitted because the thing that would compile said source code is the FORTH system which the ELF contains. You cannot compile my source with anything you have, but once my system is running it can compile itself. This is the nature of FORTH systems.
I do not know what you mean by asserting that it is "very unusual for a developer to poke a specific address ..." For sixty years, I have always tested what I create. In this case I was creating a structure in the published syntax of ELF files to elicit a behavior from the linux dynamic loader, specifically to deposit my program at a specific place in virtual memory, to load the c library and give me a set of requested entry points in that library, and to map a roughly 16 MB region of memory into my virtual address space. I used gdb to verify that my code is where it belongs and that the c library has been loaded; I checked the addresses returned by the dynamic loader; I checked that RAM exists at the start of the BSS area I have requested, and then I allowed my program to run which gives me an interactive FORTH system, which I then used to verify that my 16 MB allocation has been in fact been mapped into memory. Imagine my surprise in getting a fault while scanning that region. Reverting to gdb so I can survive the exceptions, I feel my way around the perimeter of the gap in mapped memory using x command. Returning to FORTH, I verify that everything past that gap was mapped correctly. So I moved forward in the work I am trying to do by skipping past the "hole" and posted this query to see if anyone in the community knows how ld-linux.so.2 works and can save me having to study that fairly large thing myself to learn why it is misbehaving and deduce how to convince it not to. If this sort of behavior is "unusual" I acknowledge only that this is how I have worked for more years than many have been alive, and that the code I produce has been reliable
Thanks again, and any insight would be appreciated.
Statistics: Posted by Greg Bailey — 2026-02-04 17:45