[PATCH] Support AT_FXRNG and AT_KPRELOAD on FreeBSD.

Andrew Burgess aburgess@redhat.com
Tue Dec 7 11:11:55 GMT 2021
* John Baldwin <jhb@FreeBSD.org> [2021-12-06 13:31:14 -0800]:

> FreeBSD's kernel has recently added two new ELF auxiliary vector
> entries.  AT_FXRNG points to a root seed version for the kernel's
> PRNG.  Userland can use this to reseed a userland PRNG after the
> kernel's PRNG has reseeded.  AT_KPRELOAD is the base address of a
> kernel-provided vDSO.

This all looks good to me.  I can only approve the GDB side of things
though.

Thanks,
Andrew


> 
> This change displays the proper name and description of these entries
> in 'info auxv'.
> 
> include/ChangeLog:
> 
> 	* elf/common.h (AT_FREEBSD_FXRNG, AT_FREEBSD_KPRELOAD): Define.
> ---
>  gdb/fbsd-tdep.c      | 2 ++
>  include/ChangeLog    | 4 ++++
>  include/elf/common.h | 2 ++
>  3 files changed, 8 insertions(+)
> 
> diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
> index 4da7798544b..346ff7b602b 100644
> --- a/gdb/fbsd-tdep.c
> +++ b/gdb/fbsd-tdep.c
> @@ -1565,6 +1565,8 @@ fbsd_print_auxv_entry (struct gdbarch *gdbarch, struct ui_file *file,
>        TAG (ENVC, _("Environment count"), AUXV_FORMAT_DEC);
>        TAG (ENVV, _("Environment vector"), AUXV_FORMAT_HEX);
>        TAG (PS_STRINGS, _("Pointer to ps_strings"), AUXV_FORMAT_HEX);
> +      TAG (FXRNG, _("Pointer to root RNG seed version"), AUXV_FORMAT_HEX);
> +      TAG (KPRELOAD, _("Base address of vDSO"), AUXV_FORMAT_HEX);
>      }
>  
>    fprint_auxv_entry (file, name, description, format, type, val);
> diff --git a/include/ChangeLog b/include/ChangeLog
> index c5b3631ae83..27ddd636c08 100644
> --- a/include/ChangeLog
> +++ b/include/ChangeLog
> @@ -1,3 +1,7 @@
> +2021-12-06  John Baldwin  <jhb@FreeBSD.org>
> +
> +	* elf/common.h (AT_FREEBSD_FXRNG, AT_FREEBSD_KPRELOAD): Define.
> +
>  2021-12-01  Nick Clifton  <nickc@redhat.com>
>  
>  	PR 28630
> diff --git a/include/elf/common.h b/include/elf/common.h
> index 61cfaacfe6c..66bc06ff326 100644
> --- a/include/elf/common.h
> +++ b/include/elf/common.h
> @@ -1392,6 +1392,8 @@
>  #define AT_FREEBSD_ENVC         30      /* Environment count. */
>  #define AT_FREEBSD_ENVV         31      /* Environment vvector. */
>  #define AT_FREEBSD_PS_STRINGS   32      /* struct ps_strings. */
> +#define AT_FREEBSD_FXRNG        33      /* Pointer to root RNG seed version. */
> +#define AT_FREEBSD_KPRELOAD     34      /* Base of vdso. */
>  
>  #define AT_SUN_UID      2000    /* Effective user ID.  */
>  #define AT_SUN_RUID     2001    /* Real user ID.  */
> -- 
> 2.32.0
> 



More information about the Binutils mailing list