You can do something like "catch load libbfd.so" and you'll hit a breakpoint in dl-debug.c when that .so is loaded.
(gdb) catch load libbfd.so
Catchpoint 1 (load)
Starting program: /home/mikesart/data/src/blah_dyldrendezvous_crash/build/blah
Inferior loaded /usr/lib/libbfd.so
__GI__dl_debug_state () at dl-debug.c:77
#0 __GI__dl_debug_state () at dl-debug.c:77
#1 in dl_open_worker
#3 in _dl_open
#4 in dlopen_doit
#5 in _dl_catch_error
#6 in _dlerror_run
#7 in __dlopen
#8 in main
There are catchpoints for calls to exec, fork, syscalls, and signals that could all be useful as well.
I don't see anything like this in lldb - adding to the task list...