2008-08-14 Cary Coutant <ccoutant@google.com>

* x86_64.cc (Target_x86_64::Relocate::relocat_tls):
	Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
	* testsuite/tls_test.cc (struct int128): 128-bit struct
	for testing TLS relocs with non-zero addend.
	(v12): New TLS variable.
	(t12): New test.
	(t_last): Add check for v12.
	* testsuite/tls_test.h (t12): New function.
	* testsuite/tls_test_main.cc (thread_routine): Call new test.
This commit is contained in:
Cary Coutant
2008-08-15 04:57:46 +00:00
parent 56c2003cde
commit d85c80a353
5 changed files with 38 additions and 3 deletions

View File

@@ -73,6 +73,14 @@ static __thread int v4 = 4;
__thread int v5;
static __thread int v6;
struct int128
{
long long hi;
long long lo;
};
static __thread struct int128 v12 = { 115, 125 };
bool
t1()
{
@@ -186,6 +194,16 @@ t10()
return true;
}
bool
t12()
{
struct int128 newval = { 335, 345 };
CHECK_EQ_OR_RETURN((int) v12.hi, 115);
CHECK_EQ_OR_RETURN((int) v12.lo, 125);
v12 = newval;
return true;
}
bool
t_last()
{
@@ -195,6 +213,8 @@ t_last()
CHECK_EQ_OR_RETURN(v4, 40);
CHECK_EQ_OR_RETURN(v5, 50);
CHECK_EQ_OR_RETURN(v6, 60);
CHECK_EQ_OR_RETURN((int) v12.hi, 335);
CHECK_EQ_OR_RETURN((int) v12.lo, 345);
CHECK_EQ_OR_RETURN(o1, -10);
CHECK_EQ_OR_RETURN(o2, -20);
CHECK_EQ_OR_RETURN(o3, -30);