ld для elf32_i386 устанавливает стартовый адрес в 0x08048000 (точнее в 0x08048000 + SIZEOF_HEADERS). Для разных форматов и архитектур этот адрес разный, для некоторых архитектур есть и понятный адрес -> 0x0. В тестовой программе принудительно указал линкеру использовать стартовый адрес 0x0. Никакой катастрофы не случилось, программа работала нормально. Если смотреть дальше, то выходит, что с этим адресом первые 32 entries в pgd процесса не используются, отсюда и это число 0x08048000. Так вот вопрос в том, почему они не используются.
ps: тема пробегала когда-то, но ответа в ней нет