在 Linux 中,如何 dlopen 未压缩存储在另一个文件中的共享对象?
In Linux, how do I dlopen a shared object stored uncompressed inside another file?
几年前我听说 Google 有一个补丁可以 dlopen 存储在另一个文件中的非零偏移量的共享对象,或者 mmap'd,而不是位于它自己的独立文件中。那有没有着陆?加载这些对象的 API 是什么?
有一个长期但不完整的功能增强请求以在 glibc 中实现这一点,讨论在 https://sourceware.org/bugzilla/show_bug.cgi?id=11767
这是某人的概念实施证明。 https://github.com/m1m1x/memdlopen
Did that ever land in Linux mainline?
- 这与 Linux 主线没有任何关系:GLIBC 是一个完全独立于 Linux 内核的项目(人们通常称之为 "Linux mainline").
- 没有;我们仍然把它作为本地补丁。它有限制,这使得它有点不适合上游。
What's the API for loading these objects?
void *dlopen_with_offset(const char *name, off_t offset, int flags);
几年前我听说 Google 有一个补丁可以 dlopen 存储在另一个文件中的非零偏移量的共享对象,或者 mmap'd,而不是位于它自己的独立文件中。那有没有着陆?加载这些对象的 API 是什么?
有一个长期但不完整的功能增强请求以在 glibc 中实现这一点,讨论在 https://sourceware.org/bugzilla/show_bug.cgi?id=11767
这是某人的概念实施证明。 https://github.com/m1m1x/memdlopen
Did that ever land in Linux mainline?
- 这与 Linux 主线没有任何关系:GLIBC 是一个完全独立于 Linux 内核的项目(人们通常称之为 "Linux mainline").
- 没有;我们仍然把它作为本地补丁。它有限制,这使得它有点不适合上游。
What's the API for loading these objects?
void *dlopen_with_offset(const char *name, off_t offset, int flags);