Skip to content

Commit

Permalink
Sym info
Browse files Browse the repository at this point in the history
  • Loading branch information
kynex7510 committed Nov 8, 2024
1 parent 35f4f67 commit e603544
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# CTRDL

This library provides an implementation of common `dl*` APIs along with custom additions, which can be used for loading and executing ELF files on the Nintendo 3DS.
Implementation of common `dl*` APIs, along with custom additions, which can be used for loading and executing ELF files on the Nintendo 3DS.

## How-to
## Build

Download a [prebuilt](https://github.com/kynex7510/CTRDL/releases) version, use as a CMake dependency, or build manually:

Expand All @@ -12,7 +12,12 @@ cmake --build Build --config Release
cmake --install Build --prefix Build/Release
```

## Symbol resolution

Since all homebrew is statically linked by default, there's no way for a program to expose symbols to shared objects. This behaviour can be simulated by redeclaring `ctrdlProgramResolver`, which is called internally whenever a symbol has to be looked up in the program, or its dependencies. By default `ctrdlProgramResolver` returns `NULL`.

Additionally, a custom resolver can be passed to the extensions `ctrdlOpen`, `ctrdlFOpen`, `ctrdlMap`, which will be used at the relocation step, and which always precedes other lookup mechanisms (`dlsym` is not affected).

## Limitations

- `RTLD_LAZY`, `RTLD_DEEPBIND`, and `RTLD_NODELETE` are not supported.
- `NULL` pseudo path for main process is not supported.
- `RTLD_LAZY`, `RTLD_DEEPBIND`, and `RTLD_NODELETE` are not supported.

0 comments on commit e603544

Please sign in to comment.