Dear Community, > * Szabolcs Nagy: > > > i don't know much about pelinking, but i'd expect that ld.so > > has to be prelinked for it to work: > > > > if the kernel can load ld.so anywhere it will conflict with > > other libraries that prelinking allocated to a fixed location. > > I think ld.so can back out prelinking if it detects any conflicts. > (ld.so doesn't use MAP_FIXED for the initial ET_DYN mapping even when > prelinking.) > > > instead ld.so has to be prelinked to an offset that comes after > > all other prelinked libraries in the system, then the kernel > > will place it after all other libraries at runtime. > > > > i don't have a prelinked system to check if this is the case. > > I tried on glibc 2.12-based system with prelink enabled and got this: > > # ldd /bin/bash > linux-vdso.so.1 => (0x00007ffc7e798000) > libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003da9800000) > libdl.so.2 => /lib64/libdl.so.2 (0x0000003da7400000) > libc.so.6 => /lib64/libc.so.6 (0x0000003da7800000) > /lib64/ld-linux-x86-64.so.2 (0x00007f8dc919c000) > # ldd /bin/bash > linux-vdso.so.1 => (0x00007ffef3bf4000) > libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003da9800000) > libdl.so.2 => /lib64/libdl.so.2 (0x0000003da7400000) > libc.so.6 => /lib64/libc.so.6 (0x0000003da7800000) > /lib64/ld-linux-x86-64.so.2 (0x00007ff9e66a6000) > # eu-readelf -d /lib64/ld-linux-x86-64.so.2 > > Dynamic segment contains 25 entries: > Addr: 0x0000003da7220df0 Offset: 0x020df0 Link to section: [ 5] > '.dynstr' Type Value > SONAME Library soname: [ld-linux-x86-64.so.2] > HASH 0x0000003da70001f0 > GNU_HASH 0x0000003da70002a8 > STRTAB 0x0000003da7000608 > SYMTAB 0x0000003da7000380 > STRSZ 380 (bytes) > SYMENT 24 (bytes) > PLTGOT 0x0000003da7220f80 > PLTRELSZ 144 (bytes) > PLTREL RELA > JMPREL 0x0000003da7000a30 > RELA 0x0000003da7000868 > RELASZ 456 (bytes) > RELAENT 24 (bytes) > VERDEF 0x0000003da70007c0 > VERDEFNUM 5 > BIND_NOW > FLAGS_1 NOW > VERSYM 0x0000003da7000784 > RELACOUNT 16 > CHECKSUM 0x00000000e90e92bc > GNU_PRELINKED 0x00000000616d5a26 > NULL > NULL > NULL > # > > As expected based on the previous discussion here, the kernel maps > ld.so at random addresses even though it has been prelinked. > > This looks like another place where ASLR layout as to be tweaked > carefully to avoid obscure failure modes. > Do we have any idea on how to move forward with this issue? > Thanks, > Florian > Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de