git: c71b8367dec5 - stable/13 - _elf_aux_info(3): add support for AT_USRSTACK{BASE,LIM}

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Fri, 30 Sep 2022 02:04:11 UTC
The branch stable/13 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=c71b8367dec5b8eb70cfedf10f276876e3d2005b

commit c71b8367dec5b8eb70cfedf10f276876e3d2005b
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-09-12 19:36:24 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-09-30 00:29:09 +0000

    _elf_aux_info(3): add support for AT_USRSTACK{BASE,LIM}
    
    (cherry picked from commit 8f2668b0605e26b04a103f63096cfcc856d950c1)
---
 lib/libc/gen/auxv.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/lib/libc/gen/auxv.c b/lib/libc/gen/auxv.c
index ae21d088a8d1..af59a2dda90a 100644
--- a/lib/libc/gen/auxv.c
+++ b/lib/libc/gen/auxv.c
@@ -73,6 +73,7 @@ static char *canary, *pagesizes, *execpath;
 static void *ps_strings, *timekeep;
 static u_long hwcap, hwcap2;
 static void *fxrng_seed_version;
+static u_long usrstackbase, usrstacklim;
 
 #ifdef __powerpc__
 static int powerpc_new_auxv_format = 0;
@@ -144,6 +145,14 @@ init_aux(void)
 		case AT_FXRNG:
 			fxrng_seed_version = aux->a_un.a_ptr;
 			break;
+
+		case AT_USRSTACKBASE:
+			usrstackbase = aux->a_un.a_val;
+			break;
+
+		case AT_USRSTACKLIM:
+			usrstacklim = aux->a_un.a_val;
+			break;
 #ifdef __powerpc__
 		/*
 		 * Since AT_STACKPROT is always set, and the common
@@ -370,6 +379,20 @@ _elf_aux_info(int aux, void *buf, int buflen)
 		} else
 			res = EINVAL;
 		break;
+	case AT_USRSTACKBASE:
+		if (buflen == sizeof(u_long)) {
+			*(u_long *)buf = usrstackbase;
+			res = 0;
+		} else
+			res = EINVAL;
+		break;
+	case AT_USRSTACKLIM:
+		if (buflen == sizeof(u_long)) {
+			*(u_long *)buf = usrstacklim;
+			res = 0;
+		} else
+			res = EINVAL;
+		break;
 	default:
 		res = ENOENT;
 		break;