svn commit: r300303 - in head: . contrib/netbsd-tests/lib/libc/gen contrib/netbsd-tests/lib/libc/sys lib/libc/aarch64 lib/libc/aarch64/sys sys/sys

Andrew Turner andrew at FreeBSD.org
Fri May 20 15:04:50 UTC 2016


Author: andrew
Date: Fri May 20 15:04:48 2016
New Revision: 300303
URL: https://svnweb.freebsd.org/changeset/base/300303

Log:
  Remove brk and sbrk from arm64. They were defined in The Single UNIX
  Specification, Version 2, but marked as legacy, and have been removed from
  later specifications. After 12 years it is time to remove them from new
  architectures when the main use for sbrk is an invalid method to attempt
  to find how much memory has been allocated from malloc.
  
  There are a few places in the tree that still call sbrk, however they are
  not used on arm64. They will need to be fixed to cross build from arm64,
  but these will be fixed in a follow up commit.
  
  Old copies of binutils from ports called into sbrk, however this has been
  fixed around 6 weeks ago. It is advised to update binutils on arm64 before
  installing a world that includes this change.
  
  Reviewed by:	brooks, emaste
  Obtained from:	brooks
  Relnotes:	yes
  Sponsored by:	ABT Systems Ltd
  Differential Revision:	https://reviews.freebsd.org/D6464

Deleted:
  head/lib/libc/aarch64/sys/brk.S
  head/lib/libc/aarch64/sys/sbrk.S
Modified:
  head/UPDATING
  head/contrib/netbsd-tests/lib/libc/gen/t_dir.c
  head/contrib/netbsd-tests/lib/libc/sys/t_mlock.c
  head/lib/libc/aarch64/Symbol.map
  head/lib/libc/aarch64/sys/Makefile.inc
  head/sys/sys/param.h

Modified: head/UPDATING
==============================================================================
--- head/UPDATING	Fri May 20 15:00:12 2016	(r300302)
+++ head/UPDATING	Fri May 20 15:04:48 2016	(r300303)
@@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20160520:
+	The brk and sbrk functions have been removed from libc on arm64.
+	Binutils from ports has been updated to not link to these
+	functions and should be updated to the latest version before
+	installing a new libc.
+
 20160517:
 	The armv6 port now defaults to hard float ABI. Limited support
 	for running both hardfloat and soft float on the same system

Modified: head/contrib/netbsd-tests/lib/libc/gen/t_dir.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/gen/t_dir.c	Fri May 20 15:00:12 2016	(r300302)
+++ head/contrib/netbsd-tests/lib/libc/gen/t_dir.c	Fri May 20 15:04:48 2016	(r300303)
@@ -111,6 +111,7 @@ ATF_TC_BODY(seekdir_basic, tc)
 	closedir(dp);
 }
 
+#ifndef __aarch64__ /* There is no sbrk on AArch64 */
 ATF_TC(telldir_leak);
 ATF_TC_HEAD(telldir_leak, tc)
 {
@@ -154,12 +155,15 @@ ATF_TC_BODY(telldir_leak, tc)
 		(void)printf("OK: used %td bytes\n", (char *)(sbrk(0))-memused);
 	}
 }
+#endif
 
 ATF_TP_ADD_TCS(tp)
 {
 
 	ATF_TP_ADD_TC(tp, seekdir_basic);
+#ifndef __aarch64__
 	ATF_TP_ADD_TC(tp, telldir_leak);
+#endif
 
 	return atf_no_error();
 }

Modified: head/contrib/netbsd-tests/lib/libc/sys/t_mlock.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/sys/t_mlock.c	Fri May 20 15:00:12 2016	(r300302)
+++ head/contrib/netbsd-tests/lib/libc/sys/t_mlock.c	Fri May 20 15:04:48 2016	(r300303)
@@ -176,7 +176,9 @@ ATF_TC_BODY(mlock_err, tc)
 	unsigned long vmin = 0;
 	size_t len = sizeof(vmin);
 #endif
+#ifndef __aarch64__
 	void *invalid_ptr;
+#endif
 	int null_errno = ENOMEM;	/* error expected for NULL */
 
 #ifdef __FreeBSD__
@@ -212,6 +214,7 @@ 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 */
 	/*
 	 * Try to create a pointer to an unmapped page - first after current
 	 * brk will likely do.
@@ -224,6 +227,7 @@ ATF_TC_BODY(mlock_err, tc)
 
 	errno = 0;
 	ATF_REQUIRE_ERRNO(ENOMEM, munlock(invalid_ptr, page) == -1);
+#endif
 }
 
 #ifdef __FreeBSD__

Modified: head/lib/libc/aarch64/Symbol.map
==============================================================================
--- head/lib/libc/aarch64/Symbol.map	Fri May 20 15:00:12 2016	(r300302)
+++ head/lib/libc/aarch64/Symbol.map	Fri May 20 15:04:48 2016	(r300303)
@@ -28,8 +28,6 @@ FBSD_1.0 {
 	ntohl;
 	ntohs;
 	vfork;
-	brk;
-	sbrk;
 	makecontext;
 };
 

Modified: head/lib/libc/aarch64/sys/Makefile.inc
==============================================================================
--- head/lib/libc/aarch64/sys/Makefile.inc	Fri May 20 15:00:12 2016	(r300302)
+++ head/lib/libc/aarch64/sys/Makefile.inc	Fri May 20 15:04:48 2016	(r300303)
@@ -5,10 +5,8 @@ MIASM:=	${MIASM:Nfreebsd[467]_*}
 SRCS+=	__vdso_gettc.c
 
 #MDASM= ptrace.S
-MDASM=	brk.S \
-	cerror.S \
+MDASM=	cerror.S \
 	pipe.S \
-	sbrk.S \
 	shmat.S \
 	sigreturn.S \
 	syscall.S \
@@ -19,6 +17,7 @@ NOASM=	break.o \
 	exit.o \
 	getlogin.o \
 	openbsd_poll.o \
+	sbrk.o \
 	sstk.o \
 	vfork.o \
 	yield.o

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h	Fri May 20 15:00:12 2016	(r300302)
+++ head/sys/sys/param.h	Fri May 20 15:04:48 2016	(r300303)
@@ -58,7 +58,7 @@
  *		in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1100110	/* Master, propagated to newvers */
+#define __FreeBSD_version 1100111	/* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,


More information about the svn-src-head mailing list