History log of /freebsd-current/sys/sys/link_elf.h
Revision Date Author Comments
# cf5d9c41 20-Apr-2024 Gordon Bergling <gbe@FreeBSD.org>

sys: Remove two double words in source code comments

- s/of of/of/

MFC after: 5 days


# 95ee2897 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

sys: Remove $FreeBSD$: two-line .h pattern

Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/


# 408334df 05-Jan-2022 Konstantin Belousov <kib@FreeBSD.org>

link_elf.h: cleanup struct link_map definition, remove mips-specific field

Sponsored by: The FreeBSD Foundation


# 71df6a15 01-Dec-2020 Konstantin Belousov <kib@FreeBSD.org>

rtld: bump r_debug.r_version to 1 from current 0.

Add r_ldbase.

Requested and reviewed by: emaste
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D27429


# c8ad15b6 22-May-2020 Konstantin Belousov <kib@FreeBSD.org>

Implement Solaris-like link_map l_refname member.

The implementation is based on the public documentation, in particular
dlinfo(3) from Solaris.

Sponsored by: The FreeBSD Foundation
MFC after: 1 week


# d0ca9a7f 21-May-2020 Konstantin Belousov <kib@FreeBSD.org>

Restore the binary compatibility for link_map l_addr.

Keep link_map l_addr binary layout compatible, rename l_addr to l_base
where rtld returns map base. Provide relocbase in newly added l_addr.

This effectively reverts the patch to the initial version of D24918.

Reported by: antoine (portmgr)
Reviewed by: jhb, markj
Tested by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24946


# 2c6d9dc0 20-May-2020 Konstantin Belousov <kib@FreeBSD.org>

Change the samantic of struct link_map l_addr member.

It previously returned the object map base address, while all other
ELF operating systems return load offset, i.e. the difference between
map base and the link base.

Explain the meaning of the field in the man page.

Stop filling the mips-only l_offs member, which is apparently unused.

PR: 246561
Requested by: Damjan Jovanovic <damjan.jov@gmail.com>
Reviewed by: emaste, jhb, cem (previous version)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24918


# c4e20cad 27-Nov-2017 Pedro F. Giffuni <pfg@FreeBSD.org>

sys/sys: further adoption of SPDX licensing ID tags.

Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.


# 0e521992 03-Jan-2015 Konstantin Belousov <kib@FreeBSD.org>

Add rtld private interface for dso to detect dynamic loading
vs. static linking.

Tested by: pho, antoine (exp-run)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week


# 677a88ce 19-Jul-2014 Ian Lepore <ian@FreeBSD.org>

Add dl_unwind_find_exidx() for ARM EABI, required for C++ exception
handling. For statically linked apps this uses the __exidx_start/end
symbols set up by the linker. For dynamically linked apps it finds the
shared object that contains the given address and returns the location and
size of the exidx section in that shared object.

The dl_unwind_find_exidx() name is used by other BSD projects and Android,
and is mentioned in clang 3.5 comments as "the BSD interface" for finding
exidx data. GCC (in libgcc_s) expects the exact same API and functionality
to be provided by a function named __gnu_Unwind_Find_exidx(), so we provide
that with an alias ("strong reference").

Reviewed by: kib@
MFC after: 1 week


# 212f264c 08-Jan-2011 Konstantin Belousov <kib@FreeBSD.org>

In rtld, read the initial stack access mode from AT_STACKPROT as set
by kernel, and parse PT_GNU_STACK phdr from linked and loaded dsos.

If the loaded dso requires executable stack, as specified by PF_X bit
of p_flags of PT_GNU_STACK phdr, but current stack protection does not
permit execution, the __pthread_map_stacks_exec symbol is looked up
and called. It should be implemented in libc or threading library and
change the protection mode of all thread stacks to be executable.

Provide a private interface _rtld_get_stack_prot() to export the stack
access mode as calculated by rtld.

Reviewed by: kan


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# e048186a 23-Aug-2010 Konstantin Belousov <kib@FreeBSD.org>

Introduce implementation-private rtld interface _rtld_addr_phdr, which
fills struct dl_phdr_info for the shared object that contains the
specified address, if any.

Idea and reviewed by: kan
MFC after: 3 weeks


# 7c9c0cb8 31-Dec-2008 David E. O'Brien <obrien@FreeBSD.org>

style(9)
Differences from 'svn diff -x -Bbw' are trivially verifiable as only style(9).


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 4f2945f8 10-Jul-2008 David E. O'Brien <obrien@FreeBSD.org>

Revert r180431.
r180431 broke the AMD64 build (the only arch using kern/link_elf_obj.c)


# f55ffb39 10-Jul-2008 David E. O'Brien <obrien@FreeBSD.org>

Allow 'elf_file_t' to be used in a wider scope.


# 585b0906 03-Apr-2007 Alexander Kabaev <kan@FreeBSD.org>

Add dl_iterate_phdr function prototype and corresponding dl_phdr_info
structure definition.


# 60727d8b 06-Jan-2005 Warner Losh <imp@FreeBSD.org>

/* -> /*- for license, minor formatting changes


# 42d206e9 13-Feb-2003 Alexander Kabaev <kan@FreeBSD.org>

Implement dlinfo() function.

Introdice RTLD_SELF special handle and properly process it within
dlsym() and dlinfo() functions.

The intention is to improve our compatibility with Solaris and
to make a Java port easier.

Partially submitted by: phantom


# c7fb14c7 22-Aug-2002 Peter Wemm <peter@FreeBSD.org>

Repo copy link.h to sys/link_elf.h and sys/link_aout.h since they are
shared with the kernel. This should make it easier to #include them both
at once as well as stop grabbing stuff from /usr/include.


# bb28f3c2 23-Mar-2002 Warner Losh <imp@FreeBSD.org>

Breath deep and take __P out of the system include files.

# This appears to not break X11, but I'm having problems compiling the
# glide part of the server with or without this patch, so I can't tell
# for sure.


# 17923354 04-Sep-2001 David E. O'Brien <obrien@FreeBSD.org>

style(9) the structure definitions.


# 0824e46a 18-Sep-2000 John Polstra <jdp@FreeBSD.org>

Update the prototype for "r_brk" to correspond with the change in
"src/libexec/rtld-elf/rtld.c" revision 1.48. This eliminates a
warning when building the dynamic linker, and it doesn't seem to
hurt anything else.


# a4add9a9 27-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# 12d68e37 23-May-1998 Doug Rabson <dfr@FreeBSD.org>

Add GDB support for ELF shared libs.


# 663690b3 06-Feb-1998 John Polstra <jdp@FreeBSD.org>

Implement dladdr.


# befb229b 06-Dec-1997 John Polstra <jdp@FreeBSD.org>

Move nlist related defines from link.h into nlist.h. Clean up
nlist.h.


# 937ef9c4 28-Nov-1997 John Polstra <jdp@FreeBSD.org>

Remove the prototypes for dlopen and related functions. They don't
belong here. The standard place for them is <dlfcn.h>, and there is
already another copy of the prototypes there.


# 9822c98d 21-Nov-1997 Brian Somers <brian@FreeBSD.org>

const correctness for dl*()


# 7e7344e2 01-Aug-1997 John Polstra <jdp@FreeBSD.org>

Implement dlsym(RTLD_NEXT, symbol).


# f756433e 07-May-1997 Eivind Eklund <eivind@FreeBSD.org>

Back out all of yesterdays include file changes.


# 48ea0bec 06-May-1997 Eivind Eklund <eivind@FreeBSD.org>

Make a lot of include-files self-contained. I excluded the patches changing
int's to gid_t and uid_t - should I commit these, too?

Closes PR misc/2625.

Submitted by: Julian Assange <proff@iq.org>


# 79403fe3 23-Feb-1997 Peter Wemm <peter@FreeBSD.org>

Revert $FreeBSD$ to $Id$


# 1130b656 14-Jan-1997 Jordan K. Hubbard <jkh@FreeBSD.org>

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 524e95de 07-Oct-1996 Marc G. Fournier <scrappy@FreeBSD.org>

Fixed the wrong include file for a "prototype mismatch" error between
dlfcn.h and link.h


# 0e9cb8be 07-Oct-1996 Marc G. Fournier <scrappy@FreeBSD.org>

dlfcn.h and link.h have conflicting declarations for dlopen/dlsym,
with dlfcn.h declaring them as:

void *dlopen __P((const char *, int));
void *dlsym __P((void *, const char *));

while link.h declared them as

extern void *dlopen __P((char *, int));
extern void *dlsym __P((void *, char *));

Fix link.h to match dlfcn.h


# f62b417b 30-Sep-1996 Peter Wemm <peter@FreeBSD.org>

Add support for storing a -R path in ld in the section dispatch table,
support LD_HINTS_VERSION_2 that has the ldconfig pathname stored in the
ld.so.hints file (ie: a new library can be installed and used without
needing to run ldconfig -m first)

Reviewed by: nate, jdp
Obtained from: NetBSD (mostly)


# 71d9c781 30-Jan-1996 Mike Pritchard <mpp@FreeBSD.org>

Fix a bunch of spelling errors in the comment fields
of a bunch of system include files.


# 82aaeb09 27-Jun-1995 Doug Rabson <dfr@FreeBSD.org>

Change ld.so to correctly load dependant libraries for dlopen and unload them
on dlclose. Also correctly call constructors and destructors for libraries
linked with /usr/lib/c++rt0.o.
Change interpretation of dlopen manpage to call _init() rather than init()
for dlopened objects.
Change c++rt0.o to avoid using atexit to call destructors, allowing dlclose to
call destructors when an object is unloaded.
Change interface between crt0 and ld.so to allow crt0 to call a function on
exit to call destructors for shared libraries explicitly.

These changes are backwards compatible. Old binaries will work with the new
ld.so and new binaries will work with the old ld.so. A version number has
been introduced in the crt0-ld.so interface to allow for future changes.

Reviewed by: GAWollman, Craig Struble <cstruble@singularity.bevc.blacksburg.va.us>


# c79eac4c 04-Mar-1995 Nate Williams <nate@FreeBSD.org>

Weak symbol support from NetBSD. This should bring us in sync with the
NetBSD ld code except for local changes for dlopen() and friends and
the hashing on the minor value of the shlibs. We should be binary
compatible now with all their libraries.

Obtained from: NetBSD


# efa6e5fa 07-Feb-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

Support for more Sun compatible dlopen() and friends. Also added proper error
handling.
Reviewed by: gj
Submitted by: Mark Diekhans <markd@grizzly.com>


# a70c9659 13-Feb-1994 Jordan K. Hubbard <jkh@FreeBSD.org>

This is the new link.h from Paul K. Keeping history is even probably a bad
idea considering the old version (but I haven't time for attic surgery - this
is just a caution). This is part of (and the major reason for) the new ld
changes.


# 90f2ed3a 03-Nov-1993 Paul Richards <paul@FreeBSD.org>

Added link.h for shared libs.