- /* Wiggle offsets of 2nd, 3rd etc so take minimum space */
- for (j = 1; j < i; j++) {
- GElf_Off subalign = phdrArr[j]->phdr.p_offset % phdrArr[j]->phdr.p_align;
+ /* If PHDRs are not mapped into memory, place them after LOAD segments. */
+ mp = elfu_mPhdrByOffset(me, me->ehdr.e_phoff);
+ if (!mp) {
+ lastend = ROUNDUP(lastend, 8);
+ me->ehdr.e_phoff = lastend;
+ lastend += me->ehdr.e_phnum * me->ehdr.e_phentsize;
+ } else {
+ /* Update size of PHDR PHDR */
+ ElfuPhdr *phdrmp;