mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
rtld: allow arches to initialize/finalize objects
Discussed with: jrtc27 Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D59269
This commit is contained in:
1 parent
7c73fdb618
commit
6a69d28ee0
8 files changed
+23
No files matched your search
@@ -41,6 +41,9 @@ struct Struct_Obj_Entry;
|
||||
#define MD_OBJ_ENTRY \
|
||||
bool variant_pcs : 1; /* Object has a variant pcs function */
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
#define rtld_dynamic(obj) \
|
||||
({ \
|
||||
|
||||
@@ -37,6 +37,9 @@ struct Struct_Obj_Entry;
|
||||
|
||||
#define MD_OBJ_ENTRY
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
Elf_Dyn *rtld_dynamic_addr(void);
|
||||
#define rtld_dynamic(obj) rtld_dynamic_addr()
|
||||
|
||||
@@ -38,6 +38,9 @@ struct Struct_Obj_Entry;
|
||||
|
||||
#define MD_OBJ_ENTRY
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
#define rtld_dynamic(obj) (&_DYNAMIC)
|
||||
|
||||
|
||||
@@ -37,6 +37,9 @@ struct Struct_Obj_Entry;
|
||||
|
||||
#define MD_OBJ_ENTRY
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
#define rtld_dynamic(obj) \
|
||||
((const Elf_Dyn *)((obj)->relocbase + (Elf_Addr)&_DYNAMIC))
|
||||
|
||||
@@ -482,6 +482,7 @@ obj_free(Obj_Entry *obj)
|
||||
free(obj->path);
|
||||
if (obj->phdr_alloc)
|
||||
free(__DECONST(void *, obj->phdr));
|
||||
MD_OBJ_ENTRY_FINI(obj);
|
||||
free(obj);
|
||||
}
|
||||
|
||||
@@ -494,6 +495,7 @@ obj_new(void)
|
||||
STAILQ_INIT(&obj->dldags);
|
||||
STAILQ_INIT(&obj->dagmembers);
|
||||
STAILQ_INIT(&obj->names);
|
||||
MD_OBJ_ENTRY_INIT(obj);
|
||||
return (obj);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,9 @@ struct Struct_Obj_Entry;
|
||||
#define MD_OBJ_ENTRY \
|
||||
Elf_Addr *gotptr; /* GOT pointer (secure-plt only) */
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
#define rtld_dynamic(obj) (&_DYNAMIC)
|
||||
|
||||
|
||||
@@ -38,6 +38,9 @@ struct Struct_Obj_Entry;
|
||||
#define MD_OBJ_ENTRY \
|
||||
Elf_Addr glink; /* GLINK PLT call stub section */
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
#define rtld_dynamic(obj) (&_DYNAMIC)
|
||||
|
||||
|
||||
@@ -44,6 +44,9 @@ struct Struct_Obj_Entry;
|
||||
|
||||
#define MD_OBJ_ENTRY
|
||||
|
||||
#define MD_OBJ_ENTRY_INIT(obj)
|
||||
#define MD_OBJ_ENTRY_FINI(obj)
|
||||
|
||||
uint64_t set_gp(struct Struct_Obj_Entry *obj);
|
||||
|
||||
/* Return the address of the .dynamic section in the dynamic linker. */
|
||||
|
||||
Reference in new issue
Block a user