How do I use the LD_PRELOAD trick for CheriBSD?ΒΆ
In common with other Unix variants, you can set the LD_PRELOAD
environment variable to point to a specific, single shared object file
that will be loaded before any other shared objects. This allows
you to override functions in the platform libraries by creating a
custom library with the same symbols and specifying
the absolute path to your library in LD_PRELOAD
.
This works for purecap binaries with purecap shared objects.
For hybrid binaries running with hybrid shared objects,
you need to use the LD_64_PRELOAD
environment
variable instead.
In Bash,
export LD_PRELOAD=/path/to/customlib.so
/run/my/binary
# or for hybrid code ...
export LD_64_PRELOAD=/path/to/customlib.so
or for C shell:
setenv LD_PRELOAD /path/to/customlib.so
/run/my/binary
# or for hybrid code ...
setenv LD_64_PRELOAD /path/to/customlib.so
Note you can use the ldd command with a binary to see precisely which shared objects will be loaded.