Page MenuHomeFreeBSD

D15663.diff
No OneTemporary

D15663.diff

Index: head/lib/libc/amd64/Symbol.map
===================================================================
--- head/lib/libc/amd64/Symbol.map
+++ head/lib/libc/amd64/Symbol.map
@@ -63,7 +63,6 @@
signalcontext;
__siglongjmp;
_brk;
- _end;
__sys_vfork;
_vfork;
};
Index: head/lib/libc/amd64/sys/Makefile.inc
===================================================================
--- head/lib/libc/amd64/sys/Makefile.inc
+++ head/lib/libc/amd64/sys/Makefile.inc
@@ -8,7 +8,7 @@
amd64_set_fsbase.c \
amd64_set_gsbase.c
-MDASM= vfork.S brk.S cerror.S getcontext.S sbrk.S
+MDASM= vfork.S cerror.S getcontext.S
# Don't generate default code for these syscalls:
-NOASM+= vfork.o
+NOASM+= sbrk.o vfork.o
Index: head/lib/libc/amd64/sys/brk.S
===================================================================
--- head/lib/libc/amd64/sys/brk.S
+++ head/lib/libc/amd64/sys/brk.S
@@ -1,82 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)brk.s 5.2 (Berkeley) 12/17/90"
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
-ENTRY(_brk)
- pushq %rdi
- jmp ok
-END(_brk)
-
-ENTRY(brk)
- pushq %rdi
- movq %rdi,%rax
-#ifdef PIC
- movq PIC_GOT(HIDENAME(minbrk)),%rdx
- cmpq %rax,(%rdx)
-#else
- cmpq %rax,HIDENAME(minbrk)(%rip)
-#endif
- jbe ok
-#ifdef PIC
- movq (%rdx),%rdi
-#else
- movq HIDENAME(minbrk)(%rip),%rdi
-#endif
-ok:
- movq $SYS_break,%rax
- KERNCALL
- jb err
- movq 0(%rsp),%rax
-#ifdef PIC
- movq PIC_GOT(HIDENAME(curbrk)),%rdx
- movq %rax,(%rdx)
-#else
- movq %rax,HIDENAME(curbrk)(%rip)
-#endif
- movq $0,%rax
- popq %rdi
- ret
-err:
- addq $8, %rsp
- jmp HIDENAME(cerror)
-END(brk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/amd64/sys/sbrk.S
===================================================================
--- head/lib/libc/amd64/sys/sbrk.S
+++ head/lib/libc/amd64/sys/sbrk.S
@@ -1,85 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)sbrk.s 5.1 (Berkeley) 4/23/90"
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl CNAME(_end)
- .globl HIDENAME(minbrk)
- .globl HIDENAME(curbrk)
-
- .data
-HIDENAME(minbrk): .quad CNAME(_end)
-HIDENAME(curbrk): .quad CNAME(_end)
- .text
-
-ENTRY(sbrk)
- pushq %rdi
- movq %rdi,%rcx
-#ifdef PIC
- movq PIC_GOT(HIDENAME(curbrk)),%rdx
- movq (%rdx),%rax
-#else
- movq HIDENAME(curbrk)(%rip),%rax
-#endif
- testq %rcx,%rcx
- jz back
- addq %rax,%rdi
- mov $SYS_break,%eax
- KERNCALL
- jb err
-#ifdef PIC
- movq PIC_GOT(HIDENAME(curbrk)),%rdx
- movq (%rdx),%rax
-#else
- movq HIDENAME(curbrk)(%rip),%rax
-#endif
- movq 0(%rsp), %rcx
-#ifdef PIC
- addq %rcx,(%rdx)
-#else
- addq %rcx,HIDENAME(curbrk)(%rip)
-#endif
-back:
- addq $8, %rsp
- ret
-err:
- addq $8, %rsp
- jmp HIDENAME(cerror)
-END(sbrk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/arm/Symbol.map
===================================================================
--- head/lib/libc/arm/Symbol.map
+++ head/lib/libc/arm/Symbol.map
@@ -58,7 +58,6 @@
__sys_vfork;
_vfork;
_brk;
- _end;
_sbrk;
_libc_arm_fpu_present;
Index: head/lib/libc/arm/sys/Makefile.inc
===================================================================
--- head/lib/libc/arm/sys/Makefile.inc
+++ head/lib/libc/arm/sys/Makefile.inc
@@ -2,7 +2,7 @@
SRCS+= __vdso_gettc.c
-MDASM= Ovfork.S brk.S cerror.S sbrk.S syscall.S
+MDASM= Ovfork.S cerror.S syscall.S
# Don't generate default code for these syscalls:
-NOASM+= vfork.o
+NOASM+= sbrk.o vfork.o
Index: head/lib/libc/arm/sys/brk.S
===================================================================
--- head/lib/libc/arm/sys/brk.S
+++ head/lib/libc/arm/sys/brk.S
@@ -1,95 +0,0 @@
-/* $NetBSD: brk.S,v 1.6 2003/08/07 16:42:04 agc Exp $ */
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- * from: @(#)brk.s 5.2 (Berkeley) 12/17/90
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-#include "SYS.h"
-
- .globl _C_LABEL(_end)
- .globl CURBRK
-
-#ifdef WEAK_ALIAS
-WEAK_ALIAS(brk, _brk)
-#endif
-
- .data
- .align 0
- .globl _C_LABEL(minbrk)
- .type _C_LABEL(minbrk),#object
-_C_LABEL(minbrk):
- .word _C_LABEL(_end)
-
-/*
- * Change the data segment size
- */
-ENTRY(_brk)
- /* Setup the GOT */
- GOT_INIT(r3, .Lgot, .L1)
- GOT_GET(r1, r3, .Lminbrk)
-
- /* Get the minimum allowable brk address */
- ldr r1, [r1]
-
- /*
- * Valid the address specified and set to the minimum
- * if the address is below minbrk.
- */
- cmp r0, r1
- it lt
- movlt r0, r1
- mov r2, r0
- SYSTRAP(break)
- bcs PIC_SYM(CERROR, PLT)
-
-#ifdef PIC
- ldr r1, .Lcurbrk
- ldr r1, [r3, r1]
-#else
- ldr r1, .Lcurbrk
-#endif
- /* Store the new address in curbrk */
- str r2, [r1]
-
- /* Return 0 for success */
- mov r0, #0x00000000
- RET
-
- .align 2
- GOT_INITSYM(.Lgot, .L1)
-.Lminbrk:
- .word PIC_SYM(_C_LABEL(minbrk), GOT)
-.Lcurbrk:
- .word PIC_SYM(CURBRK, GOT)
-END(_brk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/arm/sys/sbrk.S
===================================================================
--- head/lib/libc/arm/sys/sbrk.S
+++ head/lib/libc/arm/sys/sbrk.S
@@ -1,82 +0,0 @@
-/* $NetBSD: sbrk.S,v 1.7 2003/08/07 16:42:05 agc Exp $ */
-
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- * from: @(#)sbrk.s 5.1 (Berkeley) 4/23/90
- */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-#include "SYS.h"
-
- .globl _C_LABEL(_end)
-
-#ifdef WEAK_ALIAS
-WEAK_ALIAS(sbrk, _sbrk)
-#endif
-
- .data
- .align 0
- .globl CURBRK
- .type CURBRK,#object
-CURBRK:
- .word _C_LABEL(_end)
-
-/*
- * Change the data segment size
- */
-ENTRY(_sbrk)
- /* Setup the GOT */
- GOT_INIT(r3, .Lgot, .L1)
- GOT_GET(r2, r3, .Lcurbrk)
-
- /* Get the current brk address */
- ldr r1, [r2]
-
- /* Calculate new value */
- mov r3, r0
- add r0, r0, r1
- SYSTRAP(break)
- bcs PIC_SYM(CERROR, PLT)
-
- /* Store new curbrk value */
- ldr r0, [r2]
- add r1, r0, r3
- str r1, [r2]
-
- /* Return old curbrk value */
- RET
-
- .align 0
- GOT_INITSYM(.Lgot, .L1)
-.Lcurbrk:
- .word PIC_SYM(CURBRK, GOT)
-END(_sbrk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/i386/Symbol.map
===================================================================
--- head/lib/libc/i386/Symbol.map
+++ head/lib/libc/i386/Symbol.map
@@ -61,6 +61,5 @@
__siglongjmp;
__sys_vfork;
_vfork;
- _end;
_brk;
};
Index: head/lib/libc/i386/sys/Makefile.inc
===================================================================
--- head/lib/libc/i386/sys/Makefile.inc
+++ head/lib/libc/i386/sys/Makefile.inc
@@ -7,9 +7,9 @@
SRCS+= i386_get_fsbase.c i386_get_gsbase.c i386_get_ioperm.c i386_get_ldt.c \
i386_set_fsbase.c i386_set_gsbase.c i386_set_ioperm.c i386_set_ldt.c
-MDASM= Ovfork.S brk.S cerror.S getcontext.S sbrk.S syscall.S
+MDASM= Ovfork.S cerror.S getcontext.S syscall.S
-NOASM+= vfork.o
+NOASM+= sbrk.o vfork.o
MAN+= i386_get_ioperm.2 i386_get_ldt.2 i386_vm86.2
MAN+= i386_set_watch.3
Index: head/lib/libc/i386/sys/brk.S
===================================================================
--- head/lib/libc/i386/sys/brk.S
+++ head/lib/libc/i386/sys/brk.S
@@ -1,85 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)brk.s 5.2 (Berkeley) 12/17/90"
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
-ENTRY(_brk)
- jmp ok
-END(_brk)
-
-ENTRY(brk)
-#ifdef PIC
- movl 4(%esp),%eax
- PIC_PROLOGUE
- movl PIC_GOT(HIDENAME(curbrk)),%edx # set up GOT addressing
- movl PIC_GOT(HIDENAME(minbrk)),%ecx #
- PIC_EPILOGUE
- cmpl %eax,(%ecx)
- jbe ok
- movl (%ecx),%eax
- movl %eax,4(%esp)
-ok:
- mov $SYS_break,%eax
- KERNCALL
- jb HIDENAME(cerror)
- movl 4(%esp),%eax
- movl %eax,(%edx)
- movl $0,%eax
- ret
-
-#else
-
- movl 4(%esp),%eax
- cmpl %eax,HIDENAME(minbrk)
- jbe ok
- movl HIDENAME(minbrk),%eax
- movl %eax,4(%esp)
-ok:
- mov $SYS_break,%eax
- KERNCALL
- jb HIDENAME(cerror)
- movl 4(%esp),%eax
- movl %eax,HIDENAME(curbrk)
- movl $0,%eax
- ret
-#endif
-END(brk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/i386/sys/sbrk.S
===================================================================
--- head/lib/libc/i386/sys/sbrk.S
+++ head/lib/libc/i386/sys/sbrk.S
@@ -1,88 +0,0 @@
-/*-
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)sbrk.s 5.1 (Berkeley) 4/23/90"
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl CNAME(_end)
- .globl HIDENAME(minbrk)
- .globl HIDENAME(curbrk)
-
- .data
-HIDENAME(minbrk): .long CNAME(_end)
-HIDENAME(curbrk): .long CNAME(_end)
- .text
-
-ENTRY(sbrk)
-#ifdef PIC
- movl 4(%esp),%ecx
- PIC_PROLOGUE
- movl PIC_GOT(HIDENAME(curbrk)),%edx
- movl (%edx),%eax
- PIC_EPILOGUE
- testl %ecx,%ecx
- jz back
- addl %eax,4(%esp)
- mov $SYS_break,%eax
- KERNCALL
- jb HIDENAME(cerror)
- PIC_PROLOGUE
- movl PIC_GOT(HIDENAME(curbrk)),%edx
- movl (%edx),%eax
- addl %ecx,(%edx)
- PIC_EPILOGUE
-back:
- ret
-
-#else /* !PIC */
-
- movl 4(%esp),%ecx
- movl HIDENAME(curbrk),%eax
- testl %ecx,%ecx
- jz back
- addl %eax,4(%esp)
- mov $SYS_break,%eax
- KERNCALL
- jb HIDENAME(cerror)
- movl HIDENAME(curbrk),%eax
- addl %ecx,HIDENAME(curbrk)
-back:
- ret
-#endif /* PIC */
-END(sbrk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/mips/Symbol.map
===================================================================
--- head/lib/libc/mips/Symbol.map
+++ head/lib/libc/mips/Symbol.map
@@ -50,7 +50,6 @@
__siglongjmp;
__sys_vfork;
_vfork;
- _end;
_brk;
_sbrk;
};
Index: head/lib/libc/mips/sys/Makefile.inc
===================================================================
--- head/lib/libc/mips/sys/Makefile.inc
+++ head/lib/libc/mips/sys/Makefile.inc
@@ -2,7 +2,7 @@
SRCS+= trivial-vdso_tc.c
-MDASM= Ovfork.S brk.S cerror.S sbrk.S syscall.S
+MDASM= Ovfork.S cerror.S syscall.S
# Don't generate default code for these syscalls:
-NOASM+= vfork.o
+NOASM+= sbrk.o vfork.o
Index: head/lib/libc/mips/sys/brk.S
===================================================================
--- head/lib/libc/mips/sys/brk.S
+++ head/lib/libc/mips/sys/brk.S
@@ -1,71 +0,0 @@
-/* $NetBSD: brk.S,v 1.16 2003/08/07 16:42:17 agc Exp $ */
-
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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"
-
-#if defined(LIBC_SCCS) && !defined(lint)
- ASMSTR("from: @(#)brk.s 8.1 (Berkeley) 6/4/93")
- ASMSTR("$NetBSD: brk.S,v 1.16 2003/08/07 16:42:17 agc Exp $")
-#endif /* LIBC_SCCS and not lint */
-
- .globl _C_LABEL(minbrk)
- .globl _C_LABEL(__curbrk)
- .globl _C_LABEL(_end)
-
- .data
-_C_LABEL(minbrk):
- PTR_WORD _C_LABEL(_end)
-
- .text
-LEAF(__sys_brk)
- WEAK_ALIAS(brk, __sys_brk)
- WEAK_ALIAS(_brk, __sys_brk)
- PIC_PROLOGUE(__sys_brk)
- PTR_LA v0, _C_LABEL(minbrk)
- PTR_L v0, 0(v0)
- bgeu a0, v0, 1f
- move a0, v0 # dont allow break < minbrk
-1:
- li v0, SYS_break
- syscall
- bne a3, zero, 2f
- PTR_LA t0, _C_LABEL(__curbrk)
- PTR_S a0, 0(t0)
- move v0, zero
- PIC_RETURN()
-2:
- PIC_TAILCALL(__cerror)
-END(__sys_brk)
Index: head/lib/libc/mips/sys/sbrk.S
===================================================================
--- head/lib/libc/mips/sys/sbrk.S
+++ head/lib/libc/mips/sys/sbrk.S
@@ -1,73 +0,0 @@
-/* $NetBSD: sbrk.S,v 1.16 2005/04/22 06:58:01 simonb Exp $ */
-
-/*-
- * Copyright (c) 1991, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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"
-
-#if defined(LIBC_SCCS) && !defined(lint)
- ASMSTR("from: @(#)sbrk.s 8.1 (Berkeley) 6/4/93")
- ASMSTR("$NetBSD: sbrk.S,v 1.16 2005/04/22 06:58:01 simonb Exp $")
-#endif /* LIBC_SCCS and not lint */
-
- .globl _C_LABEL(__curbrk)
- .globl _C_LABEL(_end)
-
- .data
-_C_LABEL(__curbrk):
- PTR_WORD _C_LABEL(_end)
- .text
-
-LEAF(__sys_sbrk)
- WEAK_ALIAS(sbrk, __sys_sbrk)
- WEAK_ALIAS(_sbrk, __sys_sbrk)
- PIC_PROLOGUE(__sys_sbrk)
- PTR_LA t0, _C_LABEL(__curbrk)
- PTR_L t0, 0(t0)
- PTR_ADDU a0, a0, t0
-
- li v0, SYS_break
- syscall
-
- bne a3, zero, 1f
- nop
- move v0, t0 # return old val of curbrk from above
- PTR_LA t0, _C_LABEL(__curbrk)
- PTR_S a0, 0(t0) # save current val of curbrk from above
- PIC_RETURN()
- j ra
-
-1:
- PIC_TAILCALL(__cerror)
-END(__sys_sbrk)
Index: head/lib/libc/powerpc/Symbol.map
===================================================================
--- head/lib/libc/powerpc/Symbol.map
+++ head/lib/libc/powerpc/Symbol.map
@@ -54,5 +54,4 @@
signalcontext;
__signalcontext;
__syncicache;
- _end;
};
Index: head/lib/libc/powerpc/sys/Makefile.inc
===================================================================
--- head/lib/libc/powerpc/sys/Makefile.inc
+++ head/lib/libc/powerpc/sys/Makefile.inc
@@ -1,3 +1,3 @@
# $FreeBSD$
-MDASM+= brk.S cerror.S sbrk.S
+MDASM+= cerror.S
Index: head/lib/libc/powerpc/sys/brk.S
===================================================================
--- head/lib/libc/powerpc/sys/brk.S
+++ head/lib/libc/powerpc/sys/brk.S
@@ -1,76 +0,0 @@
-/*-
- * Copyright (c) 2002 Peter Grehan.
- * All rights reserved.
- *
- * 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.
- */
-/* $NetBSD: brk.S,v 1.9 2000/06/26 06:25:43 kleink Exp $ */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
- .globl CNAME(_end)
-
- .data
-HIDENAME(minbrk):
- .long CNAME(_end)
-
- .text
-
-ENTRY(brk)
-#ifdef PIC
- mflr %r10
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr %r9
- mtlr %r10
- lwz %r5,HIDENAME(minbrk)@got(%r9)
- lwz %r6,0(%r5)
-#else
- lis %r5,HIDENAME(minbrk)@ha
- lwz %r6,HIDENAME(minbrk)@l(%r5)
-#endif
- cmplw %r6,%r3 /* if (minbrk <= r3) */
- bgt 0f
- mr %r6,%r3 /* r6 = r3 */
-0:
- mr %r3,%r6 /* new break value */
- li %r0,SYS_break
- sc /* assume, that r5 is kept */
- bso 1f
-#ifdef PIC
- lwz %r7,HIDENAME(curbrk)@got(%r9)
- stw %r6,0(%r7)
-#else
- lis %r7,HIDENAME(curbrk)@ha /* record new break */
- stw %r6,HIDENAME(curbrk)@l(%r7)
-#endif
- blr /* return 0 */
-
-1:
- b PIC_PLT(HIDENAME(cerror))
-END(brk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/powerpc/sys/sbrk.S
===================================================================
--- head/lib/libc/powerpc/sys/sbrk.S
+++ head/lib/libc/powerpc/sys/sbrk.S
@@ -1,73 +0,0 @@
-/*-
- * Copyright (c) 2002 Peter Grehan.
- * All rights reserved.
- *
- * 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.
- */
-/* $NetBSD: sbrk.S,v 1.8 2000/06/26 06:25:44 kleink Exp $ */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl CNAME(_end)
-
- .data
-HIDENAME(curbrk):
- .long CNAME(_end)
-
- .text
-ENTRY(sbrk)
-
-#ifdef PIC
- mflr %r10
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr %r5
- mtlr %r10
- lwz %r5,HIDENAME(curbrk)@got(%r5)
- lwz %r6,0(%r5)
-#else
- lis %r5,HIDENAME(curbrk)@ha
- lwz %r6,HIDENAME(curbrk)@l(%r5) /* r6 = old break */
-#endif
- cmpwi %r3,0 /* sbrk(0) - return curbrk */
- beq 1f
- add %r3,%r3,%r6
- mr %r7,%r3 /* r7 = new break */
- li %r0,SYS_break
- sc /* break(new_break) */
- bso 2f
-#ifdef PIC
- stw %r7,0(%r5)
-#else
- stw %r7,HIDENAME(curbrk)@l(%r5) /* record new break */
-#endif
-1:
- mr %r3,%r6 /* set return value */
- blr
-2:
- b PIC_PLT(HIDENAME(cerror))
-END(sbrk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/powerpc64/Symbol.map
===================================================================
--- head/lib/libc/powerpc64/Symbol.map
+++ head/lib/libc/powerpc64/Symbol.map
@@ -50,5 +50,4 @@
signalcontext;
__signalcontext;
__syncicache;
- _end;
};
Index: head/lib/libc/powerpc64/sys/Makefile.inc
===================================================================
--- head/lib/libc/powerpc64/sys/Makefile.inc
+++ head/lib/libc/powerpc64/sys/Makefile.inc
@@ -1,3 +1,3 @@
# $FreeBSD$
-MDASM+= brk.S cerror.S sbrk.S
+MDASM+= cerror.S
Index: head/lib/libc/powerpc64/sys/brk.S
===================================================================
--- head/lib/libc/powerpc64/sys/brk.S
+++ head/lib/libc/powerpc64/sys/brk.S
@@ -1,74 +0,0 @@
-/*-
- * Copyright (c) 2002 Peter Grehan.
- * All rights reserved.
- *
- * 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.
- */
-/* $NetBSD: brk.S,v 1.9 2000/06/26 06:25:43 kleink Exp $ */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
- .globl CNAME(_end)
-
- .data
- .align 3
-HIDENAME(minbrk):
- .llong CNAME(_end)
-
- .text
-
-ENTRY(brk)
- addis %r6,%r2,HIDENAME(minbrk)@toc@ha
- ld %r6,HIDENAME(minbrk)@toc@l(%r6)
- cmpld %r6,%r3 /* if (minbrk <= r3) */
- bgt 0f
- mr %r6,%r3 /* r6 = r3 */
-0:
- mr %r3,%r6 /* new break value */
- li %r0,SYS_break
- sc /* assume, that r5 is kept */
- bso 1f
-
- /* record new break */
- addis %r7,%r2,HIDENAME(curbrk)@toc@ha
- std %r6,HIDENAME(curbrk)@toc@l(%r7)
-
- blr /* return 0 */
-
-1:
- mflr %r0
- std %r0,16(%r1)
- stdu %r1,-48(%r1)
- bl HIDENAME(cerror)
- nop
- ld %r1,0(%r1)
- ld %r0,16(%r1)
- mtlr %r0
- blr
-END(brk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/powerpc64/sys/sbrk.S
===================================================================
--- head/lib/libc/powerpc64/sys/sbrk.S
+++ head/lib/libc/powerpc64/sys/sbrk.S
@@ -1,69 +0,0 @@
-/*-
- * Copyright (c) 2002 Peter Grehan.
- * All rights reserved.
- *
- * 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.
- */
-/* $NetBSD: sbrk.S,v 1.8 2000/06/26 06:25:44 kleink Exp $ */
-
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl CNAME(_end)
-
- .data
- .align 3
-HIDENAME(curbrk):
- .llong CNAME(_end)
-
- .text
-ENTRY(sbrk)
- addis %r5,%r2,HIDENAME(curbrk)@toc@ha
- addi %r5,%r5,HIDENAME(curbrk)@toc@l
- ld %r6,0(%r5) /* r6 = old break */
- cmpdi %r3,0 /* sbrk(0) - return curbrk */
- beq 1f
- add %r3,%r3,%r6
- mr %r7,%r3 /* r7 = new break */
- li %r0,SYS_break
- sc /* break(new_break) */
- bso 2f
- std %r7,0(%r5)
-1:
- mr %r3,%r6 /* set return value */
- blr
-2:
- mflr %r0
- std %r0,16(%r1)
- stdu %r1,-48(%r1)
- bl HIDENAME(cerror)
- nop
- ld %r1,0(%r1)
- ld %r0,16(%r1)
- mtlr %r0
- blr
-END(sbrk)
-
- .section .note.GNU-stack,"",%progbits
Index: head/lib/libc/riscv/sys/Makefile.inc
===================================================================
--- head/lib/libc/riscv/sys/Makefile.inc
+++ head/lib/libc/riscv/sys/Makefile.inc
@@ -7,4 +7,4 @@
vfork.S
# Don't generate default code for these syscalls:
-NOASM+= vfork.o
+NOASM+= sbrk.o vfork.o
Index: head/lib/libc/sparc64/Symbol.map
===================================================================
--- head/lib/libc/sparc64/Symbol.map
+++ head/lib/libc/sparc64/Symbol.map
@@ -81,7 +81,6 @@
__siglongjmp;
__sys_brk;
_brk;
- _end;
__sys_sbrk;
_sbrk;
__sys_vfork;
Index: head/lib/libc/sparc64/sys/Makefile.inc
===================================================================
--- head/lib/libc/sparc64/sys/Makefile.inc
+++ head/lib/libc/sparc64/sys/Makefile.inc
@@ -12,4 +12,4 @@
CFLAGS+= -I${LIBC_SRCTOP}/sparc64/fpu
-MDASM+= brk.S cerror.S sbrk.S sigaction1.S
+MDASM+= cerror.S sigaction1.S
Index: head/lib/libc/sparc64/sys/brk.S
===================================================================
--- head/lib/libc/sparc64/sys/brk.S
+++ head/lib/libc/sparc64/sys/brk.S
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- * from: Header: brk.s,v 1.3 92/06/25 12:56:05 mccanne Exp
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)brk.s 8.1 (Berkeley) 6/4/93"
-#if 0
- RCSID("$NetBSD: brk.S,v 1.9 2000/07/25 20:15:40 mycroft Exp $")
-#endif
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
-
-_SYSENTRY(brk)
- PIC_PROLOGUE(%o3, %o2)
- SET(HIDENAME(minbrk), %o2, %o3)
- ldx [%o3], %o4
- cmp %o4, %o0
- movg %xcc, %o4, %o0
- mov %o0, %o4
- mov SYS_break, %g1
- ta %xcc, ST_SYSCALL
- bcc,a,pt %xcc, 1f
- nop
- ERROR()
-1: SET(HIDENAME(curbrk), %o2, %o3)
- retl
- stx %o4, [%o3]
-_SYSEND(brk)
Index: head/lib/libc/sparc64/sys/sbrk.S
===================================================================
--- head/lib/libc/sparc64/sys/sbrk.S
+++ head/lib/libc/sparc64/sys/sbrk.S
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 1992, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * 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.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- * from: Header: brk.s,v 1.3 92/06/25 12:56:05 mccanne Exp
- */
-
-#if defined(SYSLIBC_SCCS) && !defined(lint)
- .asciz "@(#)sbrk.s 8.1 (Berkeley) 6/4/93"
-#if 0
- RCSID("$NetBSD: sbrk.S,v 1.7 2000/07/25 15:14:46 mycroft Exp $")
-#endif
-#endif /* SYSLIBC_SCCS and not lint */
-#include <machine/asm.h>
-__FBSDID("$FreeBSD$");
-
-#include "SYS.h"
-
- .data
- .globl HIDENAME(curbrk)
- .globl HIDENAME(minbrk)
- .type HIDENAME(curbrk),@object
- .type HIDENAME(minbrk),@object
- .align 8
-HIDENAME(curbrk):
- .xword CNAME(_end)
-HIDENAME(minbrk):
- .xword CNAME(_end)
-
-_SYSENTRY(sbrk)
- PIC_PROLOGUE(%o3, %o2)
- SET(HIDENAME(curbrk), %o2, %o3)
- ldx [%o3], %o4
- add %o4, %o0, %o5
- mov %o5, %o0
- mov SYS_break, %g1
- ta %xcc, ST_SYSCALL
- bcc,a,pt %xcc, 1f
- mov %o4, %o0
- ERROR()
-1: retl
- stx %o5, [%o3]
-_SYSEND(sbrk)
Index: head/lib/libc/sys/Makefile.inc
===================================================================
--- head/lib/libc/sys/Makefile.inc
+++ head/lib/libc/sys/Makefile.inc
@@ -17,8 +17,7 @@
# While historically machine dependent, all architectures have the following
# declarations in common:
#
-NOASM= break.o \
- exit.o \
+NOASM= exit.o \
getlogin.o \
sstk.o \
yield.o
@@ -45,6 +44,7 @@
NOASM+= getdirentries.o
PSEUDO+= _getdirentries.o
+SRCS+= brk.c
SRCS+= pipe.c
SRCS+= vadvise.c
Index: head/lib/libc/sys/brk.2
===================================================================
--- head/lib/libc/sys/brk.2
+++ head/lib/libc/sys/brk.2
@@ -28,7 +28,7 @@
.\" @(#)brk.2 8.4 (Berkeley) 5/1/95
.\" $FreeBSD$
.\"
-.Dd May 24, 2018
+.Dd June 2, 2018
.Dt BRK 2
.Os
.Sh NAME
@@ -183,3 +183,8 @@
The result is unlikely to reflect actual utilization in combination with an
.Xr mmap 2
based malloc.
+.Pp
+.Fn brk
+and
+.Fn sbrk
+are not thread-safe.
Index: head/lib/libc/sys/brk.c
===================================================================
--- head/lib/libc/sys/brk.c
+++ head/lib/libc/sys/brk.c
@@ -0,0 +1,107 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Mark Johnston <markj@FreeBSD.org>
+ *
+ * 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 <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+void *__sys_break(char *nsize);
+
+static uintptr_t curbrk, minbrk;
+static int curbrk_initted;
+
+static int
+initbrk(void)
+{
+ void *newbrk;
+
+ if (!curbrk_initted) {
+ newbrk = __sys_break(NULL);
+ if (newbrk == (void *)-1)
+ return (-1);
+ curbrk = minbrk = (uintptr_t)newbrk;
+ curbrk_initted = 1;
+ }
+ return (0);
+}
+
+static void *
+mvbrk(void *addr)
+{
+ uintptr_t oldbrk;
+
+ if ((uintptr_t)addr < minbrk) {
+ /* Emulate legacy error handling in the syscall. */
+ errno = EINVAL;
+ return ((void *)-1);
+ }
+ if (__sys_break(addr) == (void *)-1)
+ return ((void *)-1);
+ oldbrk = curbrk;
+ curbrk = (uintptr_t)addr;
+ return ((void *)oldbrk);
+}
+
+int
+brk(const void *addr)
+{
+
+ if (initbrk() == -1)
+ return (-1);
+ if ((uintptr_t)addr < minbrk)
+ addr = (void *)minbrk;
+ return (mvbrk(__DECONST(void *, addr)) == (void *)-1 ? -1 : 0);
+}
+
+int
+_brk(const void *addr)
+{
+
+ if (initbrk() == -1)
+ return (-1);
+ return (mvbrk(__DECONST(void *, addr)) == (void *)-1 ? -1 : 0);
+}
+
+void *
+sbrk(intptr_t incr)
+{
+
+ if (initbrk() == -1)
+ return ((void *)-1);
+ if ((incr > 0 && curbrk + incr < curbrk) ||
+ (incr < 0 && curbrk + incr > curbrk)) {
+ /* Emulate legacy error handling in the syscall. */
+ errno = EINVAL;
+ return ((void *)-1);
+ }
+ return (mvbrk((void *)(curbrk + incr)));
+}
Index: head/lib/libc/tests/sys/Makefile
===================================================================
--- head/lib/libc/tests/sys/Makefile
+++ head/lib/libc/tests/sys/Makefile
@@ -4,6 +4,7 @@
.include <bsd.own.mk>
+ATF_TESTS_C+= brk_test
ATF_TESTS_C+= queue_test
# TODO: clone, lwp_create, lwp_ctl, posix_fadvise, recvmmsg,
Index: head/lib/libc/tests/sys/brk_test.c
===================================================================
--- head/lib/libc/tests/sys/brk_test.c
+++ head/lib/libc/tests/sys/brk_test.c
@@ -0,0 +1,149 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Mark Johnston <markj@FreeBSD.org>
+ *
+ * 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 <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/mman.h>
+
+#include <errno.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <atf-c.h>
+
+ATF_TC(brk_basic);
+ATF_TC_HEAD(brk_basic, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Verify basic brk() functionality");
+}
+ATF_TC_BODY(brk_basic, tc)
+{
+ void *oldbrk, *newbrk;
+ int error;
+
+ /* Reset the break. */
+ error = brk(0);
+ ATF_REQUIRE_MSG(error == 0, "brk: %s", strerror(errno));
+
+ oldbrk = sbrk(0);
+ ATF_REQUIRE(oldbrk != (void *)-1);
+
+ /* Try to allocate a page. */
+ error = brk((void *)((intptr_t)oldbrk + PAGE_SIZE * 2));
+ ATF_REQUIRE_MSG(error == 0, "brk: %s", strerror(errno));
+
+ /*
+ * Attempt to set the break below minbrk. This should have no effect.
+ */
+ error = brk((void *)((intptr_t)oldbrk - 1));
+ ATF_REQUIRE_MSG(error == 0, "brk: %s", strerror(errno));
+ newbrk = sbrk(0);
+ ATF_REQUIRE_MSG(newbrk != (void *)-1, "sbrk: %s", strerror(errno));
+ ATF_REQUIRE(newbrk == oldbrk);
+}
+
+ATF_TC(sbrk_basic);
+ATF_TC_HEAD(sbrk_basic, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Verify basic sbrk() functionality");
+}
+ATF_TC_BODY(sbrk_basic, tc)
+{
+ void *newbrk, *oldbrk;
+ int *p;
+
+ oldbrk = sbrk(0);
+ ATF_REQUIRE_MSG(oldbrk != (void *)-1, "sbrk: %s", strerror(errno));
+ p = sbrk(sizeof(*p));
+ *p = 0;
+ ATF_REQUIRE(oldbrk == p);
+
+ newbrk = sbrk(-sizeof(*p));
+ ATF_REQUIRE_MSG(newbrk != (void *)-1, "sbrk: %s", strerror(errno));
+ ATF_REQUIRE(oldbrk == sbrk(0));
+
+ oldbrk = sbrk(PAGE_SIZE * 2 + 1);
+ ATF_REQUIRE_MSG(oldbrk != (void *)-1, "sbrk: %s", strerror(errno));
+ memset(oldbrk, 0, PAGE_SIZE * 2 + 1);
+ newbrk = sbrk(-(PAGE_SIZE * 2 + 1));
+ ATF_REQUIRE_MSG(newbrk != (void *)-1, "sbrk: %s", strerror(errno));
+ ATF_REQUIRE(sbrk(0) == oldbrk);
+}
+
+ATF_TC(mlockfuture);
+ATF_TC_HEAD(mlockfuture, tc)
+{
+ atf_tc_set_md_var(tc, "descr",
+ "Verify that mlockall(MCL_FUTURE) applies to the data segment");
+}
+ATF_TC_BODY(mlockfuture, tc)
+{
+ void *oldbrk, *n, *newbrk;
+ int error;
+ char v;
+
+ error = mlockall(MCL_FUTURE);
+ ATF_REQUIRE_MSG(error == 0,
+ "mlockall: %s", strerror(errno));
+
+ /*
+ * Advance the break so that at least one page is added to the data
+ * segment. This page should be automatically faulted in to the address
+ * space.
+ */
+ oldbrk = sbrk(0);
+ ATF_REQUIRE(oldbrk != (void *)-1);
+ newbrk = sbrk(PAGE_SIZE * 2);
+ ATF_REQUIRE(newbrk != (void *)-1);
+
+ n = (void *)(((uintptr_t)oldbrk + PAGE_SIZE) & ~PAGE_SIZE);
+ v = 0;
+ error = mincore(n, PAGE_SIZE, &v);
+ ATF_REQUIRE_MSG(error == 0,
+ "mincore: %s", strerror(errno));
+ ATF_REQUIRE_MSG((v & MINCORE_INCORE) != 0,
+ "unexpected page flags %#x", v);
+
+ error = brk(oldbrk);
+ ATF_REQUIRE(error == 0);
+
+ error = munlockall();
+ ATF_REQUIRE_MSG(error == 0,
+ "munlockall: %s", strerror(errno));
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+ ATF_TP_ADD_TC(tp, brk_basic);
+ ATF_TP_ADD_TC(tp, sbrk_basic);
+ ATF_TP_ADD_TC(tp, mlockfuture);
+
+ return (atf_no_error());
+}
Index: head/sys/compat/freebsd32/syscalls.master
===================================================================
--- head/sys/compat/freebsd32/syscalls.master
+++ head/sys/compat/freebsd32/syscalls.master
@@ -87,7 +87,7 @@
int mode, int dev); }
15 AUE_CHMOD NOPROTO { int chmod(char *path, int mode); }
16 AUE_CHOWN NOPROTO { int chown(char *path, int uid, int gid); }
-17 AUE_NULL NOPROTO { int obreak(char *nsize); } break \
+17 AUE_NULL NOPROTO { caddr_t obreak(char *nsize); } break \
obreak_args int
18 AUE_GETFSSTAT COMPAT4 { int freebsd32_getfsstat( \
struct statfs32 *buf, long bufsize, \
Index: head/sys/kern/syscalls.master
===================================================================
--- head/sys/kern/syscalls.master
+++ head/sys/kern/syscalls.master
@@ -118,7 +118,7 @@
15 AUE_CHMOD STD { int chmod(_In_z_ char *path, int mode); }
16 AUE_CHOWN STD { int chown(_In_z_ char *path, \
int uid, int gid); }
-17 AUE_NULL STD { int obreak(_In_ char *nsize); } break \
+17 AUE_NULL STD { caddr_t obreak(_In_ char *nsize); } break \
obreak_args int
18 AUE_GETFSSTAT COMPAT4 { int getfsstat( \
_Out_writes_bytes_opt_(bufsize) \
Index: head/sys/vm/vm_unix.c
===================================================================
--- head/sys/vm/vm_unix.c
+++ head/sys/vm/vm_unix.c
@@ -102,13 +102,16 @@
}
} else if (new < base) {
/*
- * This is simply an invalid value. If someone wants to
- * do fancy address space manipulations, mmap and munmap
- * can do most of what the user would want.
+ * Simply return the current break address without
+ * modifying any state. This is an ad-hoc interface
+ * used by libc to determine the initial break address,
+ * avoiding a dependency on magic features in the system
+ * linker.
*/
- error = EINVAL;
+ new = old;
goto done;
}
+
if (new > old) {
if (!old_mlock && map->flags & MAP_WIREFUTURE) {
if (ptoa(pmap_wired_count(map->pmap)) +
@@ -224,6 +227,9 @@
if (do_map_wirefuture)
(void) vm_map_wire(map, old, new,
VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES);
+
+ if (error == 0)
+ td->td_retval[0] = new;
return (error);
#else /* defined(__aarch64__) || defined(__riscv__) */

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 12, 4:05 AM (20 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15761007
Default Alt Text
D15663.diff (53 KB)

Event Timeline