| ; We manually create these here if we're not linking against |
| ; the CRT which would usually provide these. |
| |
| target triple = "i686-pc-windows-msvc" |
| |
| %IMAGE_TLS_DIRECTORY32 = type { |
| i32, ; StartAddressOfRawData |
| i32, ; EndAddressOfRawData |
| i32, ; AddressOfIndex |
| i32, ; AddressOfCallBacks |
| i32, ; SizeOfZeroFill |
| i32 ; Characteristics |
| } |
| |
| @_tls_start = global i8 zeroinitializer, section ".tls" |
| @_tls_end = global i8 zeroinitializer, section ".tls$ZZZ" |
| @_tls_index = global i32 0 |
| |
| @_tls_used = global %IMAGE_TLS_DIRECTORY32 { |
| i32 ptrtoint (i8* @_tls_start to i32), |
| i32 ptrtoint (i8* @_tls_end to i32), |
| i32 ptrtoint (i32* @_tls_index to i32), |
| i32 0, |
| i32 0, |
| i32 0 |
| }, section ".rdata$T" |
| |
| ; MSVC target uses a direct offset (0x58) for x86-64 but expects |
| ; __tls_array to hold the offset (0x2C) on x86. |
| module asm ".global __tls_array" |
| module asm "__tls_array = 44" |