Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 May 2015 20:33:47 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282782 - head/lib/libc/arm/sys
Message-ID:  <201505112033.t4BKXlUQ069213@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Mon May 11 20:33:46 2015
New Revision: 282782
URL: https://svnweb.freebsd.org/changeset/base/282782

Log:
  Use the GOT_* macros to help simplify the code, these work with both pic
  and non-pic code, and to build for Thumb.

Modified:
  head/lib/libc/arm/sys/brk.S
  head/lib/libc/arm/sys/sbrk.S

Modified: head/lib/libc/arm/sys/brk.S
==============================================================================
--- head/lib/libc/arm/sys/brk.S	Mon May 11 20:26:35 2015	(r282781)
+++ head/lib/libc/arm/sys/brk.S	Mon May 11 20:33:46 2015	(r282782)
@@ -53,16 +53,10 @@ _C_LABEL(minbrk):
  * Change the data segment size
  */
 ENTRY(_brk)
-#ifdef PIC
 	/* Setup the GOT */
-	ldr	r3, .Lgot
-	add	r3, pc, r3
-.L1:
-	ldr	r1, .Lminbrk
-	ldr	r1, [r3, r1]
-#else
-	ldr	r1, .Lminbrk
-#endif
+	GOT_INIT(r3, .Lgot, .L1)
+	GOT_GET(r1, r3, .Lminbrk)
+
 	/* Get the minimum allowable brk address */
 	ldr	r1, [r1]
 
@@ -71,6 +65,7 @@ ENTRY(_brk)
 	 * if the address is below minbrk.
 	 */
 	cmp	r0, r1
+	it	lt
 	movlt	r0, r1
 	mov	r2, r0
 	SYSTRAP(break)
@@ -90,10 +85,7 @@ ENTRY(_brk)
 	RET
 
 	.align	2
-#ifdef PIC
-.Lgot:
-	.word	_GLOBAL_OFFSET_TABLE_ - (.L1+4)
-#endif
+	GOT_INITSYM(.Lgot, .L1)
 .Lminbrk:
 	.word	PIC_SYM(_C_LABEL(minbrk), GOT)
 .Lcurbrk:

Modified: head/lib/libc/arm/sys/sbrk.S
==============================================================================
--- head/lib/libc/arm/sys/sbrk.S	Mon May 11 20:26:35 2015	(r282781)
+++ head/lib/libc/arm/sys/sbrk.S	Mon May 11 20:33:46 2015	(r282782)
@@ -52,16 +52,10 @@ CURBRK:
  * Change the data segment size
  */
 ENTRY(_sbrk)
-#ifdef PIC
 	/* Setup the GOT */
-	ldr	r3, .Lgot
-	add	r3, pc, r3
-.L1:
-	ldr	r2, .Lcurbrk
-	ldr	r2, [r3, r2]
-#else
-	ldr	r2, .Lcurbrk
-#endif
+	GOT_INIT(r3, .Lgot, .L1)
+	GOT_GET(r2, r3, .Lcurbrk)
+
 	/* Get the current brk address */
 	ldr	r1, [r2]
 
@@ -80,10 +74,7 @@ ENTRY(_sbrk)
 	RET
 
 	.align	0
-#ifdef PIC
-.Lgot:
-	.word	_GLOBAL_OFFSET_TABLE_ - (.L1+4)
-#endif
+	GOT_INITSYM(.Lgot, .L1)
 .Lcurbrk:
 	.word	PIC_SYM(CURBRK, GOT)
 END(_sbrk)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505112033.t4BKXlUQ069213>