diff options
author | andrew <andrew@FreeBSD.org> | 2015-05-11 20:33:46 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2015-05-11 20:33:46 +0000 |
commit | 76c6e4b7874d38ede7f7bf1fbdcf95973a1b1094 (patch) | |
tree | 396dfa11c25cc4b5406494818d9b3f93e4d1b5a4 /lib/libc/arm | |
parent | e4e7fd4992595fb9f75f13f12fe8717d830a2e30 (diff) | |
download | FreeBSD-src-76c6e4b7874d38ede7f7bf1fbdcf95973a1b1094.zip FreeBSD-src-76c6e4b7874d38ede7f7bf1fbdcf95973a1b1094.tar.gz |
Use the GOT_* macros to help simplify the code, these work with both pic
and non-pic code, and to build for Thumb.
Diffstat (limited to 'lib/libc/arm')
-rw-r--r-- | lib/libc/arm/sys/brk.S | 18 | ||||
-rw-r--r-- | lib/libc/arm/sys/sbrk.S | 17 |
2 files changed, 9 insertions, 26 deletions
diff --git a/lib/libc/arm/sys/brk.S b/lib/libc/arm/sys/brk.S index f3d8d87..e5f8336 100644 --- a/lib/libc/arm/sys/brk.S +++ b/lib/libc/arm/sys/brk.S @@ -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: diff --git a/lib/libc/arm/sys/sbrk.S b/lib/libc/arm/sys/sbrk.S index 7d22aa7..5cd9a03 100644 --- a/lib/libc/arm/sys/sbrk.S +++ b/lib/libc/arm/sys/sbrk.S @@ -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) |