Skip to content

A simple Linux dynamic loader capable of loading simple binaries using simple shared libraries (no glibc support)

Notifications You must be signed in to change notification settings

Ferdi265/dynamic-loader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dynamic-loader

A simple dynamic library loader for Linux capable of loading simple binaries using simple shared libraries.

Features

  • Actually readable codebase for a dynamic loader
  • Loads simple shared objects (no glibc or musl support*)
  • Calls initializers and finalizers
  • Performs relocations at load-time (no lazy loading supported yet)
  • Supports dlopen(), dlsym(), and dlclose()
  • no support for threads or TLS, though rudimentary thread-safety is supported in the loader

* glibc and musl provide their own dynamic library loader that they expect to be loaded with:

  • ld-linux-x86_64.so.2 (aka ld.so) for glibc
  • ld-musl-x86_64.so.1 (a symlink to musl's libc.so) for musl

Dependencies

  • libmusl.a and musl-gcc (arch: musl, debian: musl musl-tools)
  • elf.h (arch: part of base, debian: libelf-dev)

Building

  • cmake -B build
  • cd build
  • make
  • run build/loader/libloader.so or any of the binaries in build/tests/bin/

Resources

This loader was written mostly by using specifications from refspecs.linuxbase.org, mainly the ELF spec and the x86_64 processor supplement.

For some parts of the early loader startup code (mainly the code in crt/), I also read the source code of musl libc to get a better understanding of typical ways to handle early loader init. To understand ELF symbol hash tables, I used multiple sources, but this blog post on flagpenguin.me was most useful.

About

A simple Linux dynamic loader capable of loading simple binaries using simple shared libraries (no glibc support)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy