about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2015-06-17 12:44:53 +0100
committerSzabolcs Nagy <nsz@port70.net>2015-06-17 12:44:53 +0100
commitc71c89e5c72baf43fd44d08dda8ab846eec5b1d6 (patch)
tree86e293c469bba98068896f16a1458e76201d45ef
parent08325735c2efb0257b8c07ac0ff91e44c27ecbf8 (diff)
downloadglibc-c71c89e5c72baf43fd44d08dda8ab846eec5b1d6.tar.gz
glibc-c71c89e5c72baf43fd44d08dda8ab846eec5b1d6.tar.xz
glibc-c71c89e5c72baf43fd44d08dda8ab846eec5b1d6.zip
[AArch64] Fix cfi_adjust_cfa_offset usage in dl-tlsdesc.S
Some of the cfi annotations used incorrect sign.

	* sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return_lazy): Fix
	cfi_adjust_cfa_offset argument.
	(_dl_tlsdesc_undefweak, _dl_tlsdesc_dynamic): Likewise.
	(_dl_tlsdesc_resolve_rela, _dl_tlsdesc_resolve_hold): Likewise.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/aarch64/dl-tlsdesc.S10
2 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1d4a376983..aedec5a5a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2015-06-17  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
+	* sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return_lazy): Fix
+	cfi_adjust_cfa_offset argument.
+	(_dl_tlsdesc_undefweak, _dl_tlsdesc_dynamic): Likewise.
+	(_dl_tlsdesc_resolve_rela, _dl_tlsdesc_resolve_hold): Likewise.
+
 	[BZ #18034]
 	* sysdeps/aarch64/dl-tlsdesc.h (_dl_tlsdesc_return_lazy): Declare.
 	* sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return_lazy): Define.
diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
index c7adf79baf..64719eb5e1 100644
--- a/sysdeps/aarch64/dl-tlsdesc.S
+++ b/sysdeps/aarch64/dl-tlsdesc.S
@@ -118,7 +118,7 @@ _dl_tlsdesc_return_lazy:
 	.align  2
 _dl_tlsdesc_undefweak:
 	str	x1, [sp, #-16]!
-	cfi_adjust_cfa_offset(16)
+	cfi_adjust_cfa_offset (16)
 	/* The ldar here happens after the load from [x0] at the call site
 	   (that is generated by the compiler as part of the TLS access ABI),
 	   so it reads the same value (this function is the final value of
@@ -130,7 +130,7 @@ _dl_tlsdesc_undefweak:
 	mrs	x1, tpidr_el0
 	sub	x0, x0, x1
 	ldr	x1, [sp], #16
-	cfi_adjust_cfa_offset(16)
+	cfi_adjust_cfa_offset (-16)
 	RET
 	cfi_endproc
 	.size	_dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak
@@ -208,7 +208,7 @@ _dl_tlsdesc_dynamic:
 	ldp	 x3,  x4, [sp, #32+16*1]
 
 	ldp	x29, x30, [sp], #(32+16*NSAVEXREGPAIRS)
-	cfi_adjust_cfa_offset (32+16*NSAVEXREGPAIRS)
+	cfi_adjust_cfa_offset (-32-16*NSAVEXREGPAIRS)
 # undef NSAVEXREGPAIRS
 	RET
 2:
@@ -297,7 +297,7 @@ _dl_tlsdesc_resolve_rela:
 	ldp	x15, x16, [sp, #32+16*6]
 	ldp	x17, x18, [sp, #32+16*7]
 	ldp	x29, x30, [sp], #(32+16*NSAVEXREGPAIRS)
-	cfi_adjust_cfa_offset (-32+16*NSAVEXREGPAIRS)
+	cfi_adjust_cfa_offset (-32-16*NSAVEXREGPAIRS)
 	ldp	x2, x3, [sp], #16
 	cfi_adjust_cfa_offset (-16)
 	RET
@@ -359,7 +359,7 @@ _dl_tlsdesc_resolve_hold:
 	ldp	x15, x16, [sp, #32+16*7]
 	ldp	x17, x18, [sp, #32+16*8]
 	ldp	x29, x30, [sp], #(32+16*NSAVEXREGPAIRS)
-	cfi_adjust_cfa_offset (-32+16*NSAVEXREGPAIRS)
+	cfi_adjust_cfa_offset (-32-16*NSAVEXREGPAIRS)
 	RET
 	cfi_endproc
 	.size	_dl_tlsdesc_resolve_hold, .-_dl_tlsdesc_resolve_hold