Thread local storage was already broken on Linux and the tests were passing because there was a dectorator:

@unittest2.expectedFailure("rdar://7796742")
    
Which was covering up the fact this was failing on linux and hexagon. I added back a decorator so we don't break any build bots.

llvm-svn: 274388
This commit is contained in:
Greg Clayton 2016-07-01 21:25:20 +00:00
parent ff12edbff4
commit c7bb34f6ec
3 changed files with 9 additions and 2 deletions

View File

@ -27,6 +27,7 @@ class TlsGlobalTestCase(TestBase):
self.addTearDownHook(lambda: self.runCmd("settings remove target.env-vars " + self.dylibPath))
@skipIfWindows # TLS works differently on Windows, this would need to be implemented separately.
@unittest2.expectedFailure("now works on Darwin, but not linux")
def test(self):
"""Test thread-local storage."""
self.build()

View File

@ -688,5 +688,8 @@ DynamicLoaderHexagonDYLD::GetThreadLocalData(const lldb::ModuleSP module, const
"module=%s, link_map=0x%" PRIx64 ", tp=0x%" PRIx64 ", modid=%i, tls_block=0x%" PRIx64,
mod->GetObjectName().AsCString(""), link_map, tp, modid, tls_block);
return tls_block + tls_file_addr;
if (tls_block == LLDB_INVALID_ADDRESS)
return LLDB_INVALID_ADDRESS;
else
return tls_block + tls_file_addr;
}

View File

@ -641,7 +641,10 @@ DynamicLoaderPOSIXDYLD::GetThreadLocalData(const lldb::ModuleSP module_sp, const
"module=%s, link_map=0x%" PRIx64 ", tp=0x%" PRIx64 ", modid=%" PRId64 ", tls_block=0x%" PRIx64 "\n",
module_sp->GetObjectName().AsCString(""), link_map, tp, (int64_t)modid, tls_block);
return tls_block + tls_file_addr;
if (tls_block == LLDB_INVALID_ADDRESS)
return LLDB_INVALID_ADDRESS;
else
return tls_block + tls_file_addr;
}
void