diff mbox

[aarch64] fix inline asm clobber list in tls-macros.h

Message ID 54F82BFF.40209@arm.com
State New
Headers show

Commit Message

Szabolcs Nagy March 5, 2015, 10:12 a.m. UTC
AArch64 TLS_GD macro calls __tlsget_addr from inline asm, because
the exact TLS instruction sequence matters, but cc was not on the
clobber list so elf/tst-tlsmod2.so was miscompiled and thus
elf/tst-tls4 and elf/tst-tls-dlinfo tests failed.

It seems tls-macros.h is only used in tests.
Is this patch ok?

Changelog:

2015-03-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* sysdeps/aarch64/tls-macros.h (TLS_GD): Add "cc" to the clobber list.

Comments

Szabolcs Nagy May 13, 2015, 9:36 a.m. UTC | #1
On 05/03/15 10:12, Szabolcs Nagy wrote:
> AArch64 TLS_GD macro calls __tlsget_addr from inline asm, because
> the exact TLS instruction sequence matters, but cc was not on the
> clobber list so elf/tst-tlsmod2.so was miscompiled and thus
> elf/tst-tls4 and elf/tst-tls-dlinfo tests failed.
> 
> It seems tls-macros.h is only used in tests.
> Is this patch ok?
> 

ping

> Changelog:
> 
> 2015-03-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
> 
> 	* sysdeps/aarch64/tls-macros.h (TLS_GD): Add "cc" to the clobber list.
>
Marcus Shawcroft May 13, 2015, 2:46 p.m. UTC | #2
On 5 March 2015 at 10:12, Szabolcs Nagy <szabolcs.nagy@arm.com> wrote:
> AArch64 TLS_GD macro calls __tlsget_addr from inline asm, because
> the exact TLS instruction sequence matters, but cc was not on the
> clobber list so elf/tst-tlsmod2.so was miscompiled and thus
> elf/tst-tls4 and elf/tst-tls-dlinfo tests failed.
>
> It seems tls-macros.h is only used in tests.
> Is this patch ok?
>
> Changelog:
>
> 2015-03-05  Szabolcs Nagy  <szabolcs.nagy@arm.com>
>
>         * sysdeps/aarch64/tls-macros.h (TLS_GD): Add "cc" to the clobber list.

OK and committed for you.
/Marcus
diff mbox

Patch

diff --git a/sysdeps/aarch64/tls-macros.h b/sysdeps/aarch64/tls-macros.h
index 07d02eb..8142185 100644
--- a/sysdeps/aarch64/tls-macros.h
+++ b/sysdeps/aarch64/tls-macros.h
@@ -29,7 +29,7 @@ 
 	  : "x1", "x2", "x3", "x4", "x5", "x6",		\
 	    "x7", "x8", "x9", "x10", "x11", "x12",	\
 	    "x13", "x14", "x15", "x16", "x17", "x18",	\
-	    "x30", "memory");				\
+	    "x30", "memory", "cc");			\
      (int *) (__result); })
 
 #define TLS_IE(x)					\