Remove legacy brk and sbrk from RISC-V.

Discussed with:	andrew
Sponsored by:	DARPA, AFRL
Sponsored by:	HEIF5
This commit is contained in:
Ruslan Bukin 2016-05-25 14:08:21 +00:00
parent ad2cbb09ef
commit b7b46892f9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=300680
6 changed files with 7 additions and 165 deletions

View File

@ -111,7 +111,8 @@ ATF_TC_BODY(seekdir_basic, tc)
closedir(dp);
}
#ifndef __aarch64__ /* There is no sbrk on AArch64 */
/* There is no sbrk on AArch64 and RISC-V */
#if !defined(__aarch64__) && !defined(__riscv__)
ATF_TC(telldir_leak);
ATF_TC_HEAD(telldir_leak, tc)
{
@ -161,7 +162,7 @@ ATF_TP_ADD_TCS(tp)
{
ATF_TP_ADD_TC(tp, seekdir_basic);
#ifndef __aarch64__
#if !defined(__aarch64__) && !defined(__riscv__)
ATF_TP_ADD_TC(tp, telldir_leak);
#endif

View File

@ -176,7 +176,7 @@ ATF_TC_BODY(mlock_err, tc)
unsigned long vmin = 0;
size_t len = sizeof(vmin);
#endif
#ifndef __aarch64__
#if !defined(__aarch64__) && !defined(__riscv__)
void *invalid_ptr;
#endif
int null_errno = ENOMEM; /* error expected for NULL */
@ -214,7 +214,8 @@ ATF_TC_BODY(mlock_err, tc)
errno = 0;
ATF_REQUIRE_ERRNO(EINVAL, munlock((char *)-1, page) == -1);
#ifndef __aarch64__ /* There is no sbrk on AArch64 */
/* There is no sbrk on AArch64 and RISC-V */
#if !defined(__aarch64__) && !defined(__riscv__)
/*
* Try to create a pointer to an unmapped page - first after current
* brk will likely do.

View File

@ -28,8 +28,6 @@ FBSD_1.0 {
ntohl;
ntohs;
vfork;
brk;
sbrk;
makecontext;
};

View File

@ -3,10 +3,8 @@
SRCS+= trivial-vdso_tc.c
#MDASM= ptrace.S
MDASM= brk.S \
cerror.S \
MDASM= cerror.S \
pipe.S \
sbrk.S \
shmat.S \
sigreturn.S \
syscall.S \

View File

@ -1,79 +0,0 @@
/*-
* Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com>
* All rights reserved.
*
* Portions of this software were developed by SRI International and the
* University of Cambridge Computer Laboratory under DARPA/AFRL contract
* FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
*
* Portions of this software were developed by the University of Cambridge
* Computer Laboratory as part of the CTSRD Project, with support from the
* UK Higher Education Innovation Fund (HEIF).
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
#include "SYS.h"
.globl _C_LABEL(_end)
.data
.align 3
.globl _C_LABEL(minbrk)
.type _C_LABEL(minbrk), %object
_C_LABEL(minbrk):
.quad _C_LABEL(_end)
.text
/*
* int brk(const void *addr);
*/
ENTRY(_brk)
WEAK_REFERENCE(_brk, brk)
/* Load the address of minbrk */
la a3, minbrk
ld a2, 0(a3)
/* Validate the address */
bge a0, a2, 1f
/* Invalid, set it to the minimum */
mv a0, a2
/* Backup the new address */
1: mv a4, a0
/* Update for this value, will overwrite a0 and a1 */
_SYSCALL(break)
bnez t0, cerror
/* Store the new curbrk value */
la a2, curbrk
sd a4, 0(a2)
/* Return success */
li a0, 0
ret
END(_brk)

View File

@ -1,77 +0,0 @@
/*-
* Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com>
* All rights reserved.
*
* Portions of this software were developed by SRI International and the
* University of Cambridge Computer Laboratory under DARPA/AFRL contract
* FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
*
* Portions of this software were developed by the University of Cambridge
* Computer Laboratory as part of the CTSRD Project, with support from the
* UK Higher Education Innovation Fund (HEIF).
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
#include "SYS.h"
.globl _C_LABEL(_end)
.data
.align 3
.global _C_LABEL(curbrk)
.type _C_LABEL(curbrk), %object
_C_LABEL(curbrk):
.quad _C_LABEL(_end)
.text
/*
* void *sbrk(intptr_t incr);
*/
ENTRY(_sbrk)
WEAK_REFERENCE(_sbrk, sbrk)
/* Load the address of curbrk */
la a3, curbrk
/* Get the current brk address */
ld a2, 0(a3)
/* Calculate the new value */
add a0, a0, a2
mv a4, a0
/* Update for this value, will overwrite a0 and a1 */
_SYSCALL(break)
bnez t0, cerror
/* Load the old value to return */
ld a0, 0(a3)
/* Store the new curbrk value */
sd a4, 0(a3)
ret
END(_sbrk)