[Bug dynamic-link/30007] New: rfe: dlopen to user buffer or to specified address

stsp at users dot sourceforge.net sourceware-bugzilla@sourceware.org
Mon Jan 16 14:13:37 GMT 2023


https://sourceware.org/bugzilla/show_bug.cgi?id=30007

            Bug ID: 30007
           Summary: rfe: dlopen to user buffer or to specified address
           Product: glibc
           Version: unspecified
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P2
         Component: dynamic-link
          Assignee: unassigned at sourceware dot org
          Reporter: stsp at users dot sourceforge.net
  Target Milestone: ---

I've come to a need of dlopen the
solib into the previously mmapped
buffer. Currently the load address
is chosen in _dl_map_segments().
The elf preferred address is taken,
which is usually 0 so any address
is used.

I can think of 2 possible solutions.
One would be to add a new func for
DL_AUDIT which passes the needed
length to the user and expects an
address of a buffer as a return.
This will allow the user to mmap
the MAP_SHARED buffer if he wants,
but the down-side is that ld.so
will then need to use read() instead
of mmap() to not trash the user's
shared mapping. This will likely
also need some efforts to implement.

Another solution is trivial: just
add a new fn dlopen3(file, flags, addr)
that provides the base address for
dlopen. This will not allow to use
the pre-allocated buffer (user doesn't
know the needed buffer size at that
point) but its trivial to code up and
will likely also solve my problem.

It was also already requested here
by someone else:
https://stackoverflow.com/questions/62064806/is-there-a-way-to-specify-the-base-address-of-a-shared-library-using-dlopen

What do people think about such an
extension?

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Glibc-bugs mailing list