History log of /seL4-refos-master/libs/libmuslc/ldso/dynlink.c
Revision Date Author Comments
# 54482898 25-Jul-2016 Bobby Bingham <koorogi@koorogi.info>

treat null vdso base same as missing

On s390x, the kernel provides AT_SYSINFO_EHDR, but sets it to zero, if the
program being run does not have a program interpreter. This causes
problems when running the dynamic linker directly.


# b418ea1b 10-Nov-2016 Rich Felker <dalias@aerifal.cx>

generalize ELF hash table types not to assume 32-bit entries

alpha and s390x gratuitously use 64-bit entries (wasting 2x space and
cache utilization) despite the values always being 32-bit.

based on patch by Bobby Bingham, with changes suggested by Alexander
Monakov to use the public Elf_Symndx type from link.h (and make it
properly variable by arch) rather than adding new internal
infrastructure for handling the type.


# 5ffe515c 31-Oct-2016 Szabolcs Nagy <nsz@port70.net>

fix ldso reserved library name handling

If a DT_NEEDED entry was the prefix of a reserved library name
(up to the first dot) then it was incorrectly treated as a libc
reserved name.

e.g. libp.so dependency was not loaded as it matched libpthread
reserved name.


# 86e8cc0f 31-Oct-2016 Szabolcs Nagy <nsz@port70.net>

fix accidental global static pointer in ldso

this was harmless as load_library is not called concurrently,
but it used one word of bss.


# 71392a91 06-Mar-2016 Rich Felker <dalias@aerifal.cx>

generalize mips-specific reloc code not to hard-code sym/type encoding

this change is made in preparation for adding the mips64 port, which
needs a 64-bit (and mips64-specific) form of the R_INFO macro, but
it's a better abstraction anyway.

based on part of the mips64 port patch by Mahesh Bodapati and Jaydeep
Patil of Imagination Technologies.


# c18d05f0 30-Jan-2016 Felix Fietkau <nbd@openwrt.org>

ldso: fix GDB dynamic linker info on MIPS

GDB is looking for a pointer to the ldso debug info in the data of the
..rld_map section.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>


# 140ad50c 30-Jan-2016 Rich Felker <dalias@aerifal.cx>

fix regression in dynamic-linked tls when both main app & libs have tls

commit d56460c939c94a6c547abe8238f442b8de10bfbd introduced this bug by
setting up the tls module chain incorrectly when the main app has tls.
the singly-linked list head pointer was setup correctly, but the tail
pointer was not, so the first attempt to append to the list (for a
shared library with tls) would treat the list as empty and effectively
removed the main app from the list. this left all tls module id
numbers off-by-one.

this bug did not appear in any released versions.


# 5552ce52 25-Jan-2016 Rich Felker <dalias@aerifal.cx>

move dynamic linker to its own top-level directory, ldso

this eliminates the last need for the SHARED macro to control how
files in the src tree are compiled. the same code is used for both
libc.a and libc.so, with additional code for the dynamic linker (from
the new ldso tree) being added to libc.so but not libc.a. separate .o
and .lo object files still exist for the src tree, but the only
difference is that the .lo files are built as PIC.

in the future, if/when we add dlopen support for static-linked
programs, much of the code in dynlink.c may be moved back into the src
tree, but properly factored into separate source files. in that case,
the code in the ldso tree will be reduced to just the dynamic linker
entry point, self-relocation, and loading of libraries needed by the
main application.