Fix dlsym() to take into account RTLD_GLOBAL/LOCAL
Symbols from libraries opened with RTLD_LOCAL (default)
should not be visible via dlsym(RLTD_DEFAULT/RTLD_NEXT, .)
Bug: 17512583
Bug: 18186310
(cherry picked from commit e8ba50fe0d)
Change-Id: Idf6bbe2233fb2bfc0c88677e7d1fc518fb3f7a8b
This commit is contained in:
@@ -199,7 +199,7 @@ struct soinfo {
|
||||
#endif
|
||||
bool has_DT_SYMBOLIC;
|
||||
|
||||
soinfo(const char* name, const struct stat* file_stat, off64_t file_offset);
|
||||
soinfo(const char* name, const struct stat* file_stat, off64_t file_offset, int rtld_flags);
|
||||
|
||||
void CallConstructors();
|
||||
void CallDestructors();
|
||||
@@ -214,6 +214,8 @@ struct soinfo {
|
||||
dev_t get_st_dev();
|
||||
off64_t get_file_offset();
|
||||
|
||||
int get_rtld_flags();
|
||||
|
||||
soinfo_list_t& get_children();
|
||||
soinfo_list_t& get_parents();
|
||||
|
||||
@@ -246,6 +248,7 @@ struct soinfo {
|
||||
|
||||
// version >= 1
|
||||
off64_t file_offset;
|
||||
int rtld_flags;
|
||||
};
|
||||
|
||||
extern soinfo* get_libdl_info();
|
||||
|
||||
Reference in New Issue
Block a user