fix dladdr treatment of function descriptors for fdpic
authorRich Felker <dalias@aerifal.cx>
Fri, 16 Oct 2015 02:51:56 +0000 (22:51 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 16 Oct 2015 02:51:56 +0000 (22:51 -0400)
commitbde0b4b92e2c3f8d26d28e8478f196233ce51618
tree8ed82eb56e52190a1dddae326a6d0b0ffed0e75b
parentbc9b6ea0df6a820878d9ac538b2b852fec367d41
fix dladdr treatment of function descriptors for fdpic

when determining which module an address belongs to, all function
descriptor ranges must be checked first, in case the allocated memory
falls inside another module's memory range.

dladdr itself must also check addresses against function descriptors
before doing a best-match search against the symbol table. even when
doing the latter (e.g. for code addresses obtained from mcontext_t),
also check whether the best-match was a function, and if so, replace
the result with a function descriptor address. which is the nominal
"base address" of the function and which the caller needs if it
intends to subsequently call the matching function.
src/ldso/dynlink.c