From: Bart V. A. <bar...@gm...> - 2006-12-31 17:49:08
|
On 12/29/06, John Reiser <jr...@bi...> wrote: > > Bart Van Assche wrote: > > Does anyone know where I can find comprehensive documentation of how ELF > > shared library symbols are resolved at runtime ? > > The source code to glibc may well be the only place that is detailed > enough > to answer questions that are necessary to resolve issues regarding races. > The ELF section of http://people.redhat.com/drepper/ points to some > papers > that may help. > Thanks for the URL. Ulrich Drepper has a paper about DSO's (dynamic shared objects) that explains the GOT (global offset table) and the PLT (procedure linkage table). Apparently the data races that were detected and that I would like to suppress are caused by lazy relocation of symbols in shared libraries. Each time a function in a shared library is called, this happens via an indirect jump in the GOT (at least on IA-32). The first time a shared library function is called, the corresponding entry in the GOT is filled in. There is one GOT entry per shared library function, and these entries are shared over threads. Does anyone have a suggestion on how I can find out the address range of all GOT entries ? Then I can easily suppress data races triggered on the GOT. Bart. |