diff --git a/lib/libsys/Symbol.map b/lib/libsys/Symbol.map --- a/lib/libsys/Symbol.map +++ b/lib/libsys/Symbol.map @@ -4,4 +4,5 @@ __getosreldate; __libsys_interposing_slot; _elf_aux_info; + _libsys_elf_aux_vec_addr; }; diff --git a/lib/libsys/Symbol.sys.map b/lib/libsys/Symbol.sys.map --- a/lib/libsys/Symbol.sys.map +++ b/lib/libsys/Symbol.sys.map @@ -394,6 +394,7 @@ pdrfork; pdrfork_thread; renameat2; + libsys_elf_aux_vec_addr; }; FBSDprivate_1.0 { diff --git a/lib/libsys/auxv.c b/lib/libsys/auxv.c --- a/lib/libsys/auxv.c +++ b/lib/libsys/auxv.c @@ -442,3 +442,15 @@ } return (res); } + +void * +_libsys_elf_aux_vec_addr() + +{ +#ifndef PIC + __init_elf_aux_vector(); +#endif + return (__elf_aux_vector); +} + +__strong_reference(_libsys_elf_aux_vec_addr,libsys_elf_aux_vec_addr); diff --git a/lib/libsys/libc_stubs.c b/lib/libsys/libc_stubs.c --- a/lib/libsys/libc_stubs.c +++ b/lib/libsys/libc_stubs.c @@ -9,3 +9,4 @@ void (f)(void) { __builtin_trap(); } STUB_FUNC(elf_aux_info); +STUB_FUNC(libsys_elf_aux_vec_addr); diff --git a/sys/sys/auxv.h b/sys/sys/auxv.h --- a/sys/sys/auxv.h +++ b/sys/sys/auxv.h @@ -34,6 +34,7 @@ __BEGIN_DECLS int elf_aux_info(int aux, void *buf, int buflen); +void *libsys_elf_aux_vec_addr(void); __END_DECLS #endif /* !_SYS_AUXV_H_ */