@@ -10,16 +10,16 @@ NTSTATUS RlTlsDiscover(RL_IMAGE *img)
1010
1111 RL_TLS_STATE* const out = &img->tls ;
1212
13- // 1) Localizar diretório TLS
13+ // 1) Locate TLS directory
1414 auto &dd = img->nt ->OptionalHeader .DataDirectory [IMAGE_DIRECTORY_ENTRY_TLS];
1515 if (!dd.VirtualAddress || !dd.Size )
1616 {
1717 out->has_tls = FALSE ;
18- return STATUS_SUCCESS; // nada a fazer
18+ return STATUS_SUCCESS; // nothing to do
1919 }
2020 out->has_tls = TRUE ;
2121
22- // 2) Ler IMAGE_TLS_DIRECTORY (endereços já estão relocados, pois você já aplicou relocs)
22+ // 2) Read IMAGE_TLS_DIRECTORY (addresses are already relocated, since you already applied relocs)
2323#ifdef _WIN64
2424 auto tls = reinterpret_cast <PIMAGE_TLS_DIRECTORY64>(img->base + dd.VirtualAddress );
2525#else
@@ -32,14 +32,14 @@ NTSTATUS RlTlsDiscover(RL_IMAGE *img)
3232 out->p_index_va = reinterpret_cast <PVOID *>(tls->AddressOfIndex );
3333 out->callbacks_va = reinterpret_cast <PVOID *>(tls->AddressOfCallBacks );
3434
35- // 3) Tamanho do template (+ zero fill) e alinhamento (use algo seguro, p.ex . 16 em x64)s
35+ // 3) Template size (+ zero fill) and alignment (use something safe, e.g . 16 on x64)s
3636 SIZE_T tpl = 0 ;
3737 if (out->raw_end_va >= out->raw_start_va )
3838 {
3939 tpl = (SIZE_T)((BYTE *)out->raw_end_va - (BYTE *)out->raw_start_va );
4040 }
4141 out->template_size = tpl + out->zero_fill ;
42- out->align = sizeof (void *) >= 8 ? 16 : 8 ; // ajuste se quiser ler de Characteristics/section
42+ out->align = sizeof (void *) >= 8 ? 16 : 8 ; // adjust if you want to read from Characteristics/section
4343
4444 return STATUS_SUCCESS;
4545}
@@ -52,13 +52,13 @@ NTSTATUS RlTlsProcessAttach(RL_IMAGE *img)
5252
5353 RL_TLS_STATE* const st = &img->tls ;
5454
55- // 1) Alocar índice TLS do Windows
55+ // 1) Allocate Windows TLS index
5656 DWORD idx = TlsAlloc ();
5757 if (idx == TLS_OUT_OF_INDEXES)
5858 return STATUS_INSUFFICIENT_RESOURCES;
5959 st->tls_index = idx;
6060
61- // 2) Escrever índice em AddressOfIndex (é um DWORD mesmo em x64)
61+ // 2) Write index to AddressOfIndex (it's a DWORD even on x64)
6262 DWORD oldProt = 0 ;
6363 if (st->p_index_va )
6464 {
@@ -67,11 +67,11 @@ NTSTATUS RlTlsProcessAttach(RL_IMAGE *img)
6767 VirtualProtect (st->p_index_va , sizeof (DWORD), oldProt, &oldProt);
6868 }
6969
70- // 3) Criar bloco TLS para o THREAD ATUAL e setar no slot
70+ // 3) Create TLS block for CURRENT THREAD and set in slot
7171 if (st->template_size )
7272 {
7373 SIZE_T size = st->template_size ;
74- // Alocar com alinhamento desejado (pode ser HeapAlloc simples; alinhe manualmente se precisar )
74+ // Allocate with desired alignment (can be simple HeapAlloc; align manually if needed )
7575 BYTE *block = (BYTE *)HeapAlloc (GetProcessHeap (), HEAP_ZERO_MEMORY, size + st->align );
7676 if (!block)
7777 return STATUS_INSUFFICIENT_RESOURCES;
@@ -81,7 +81,7 @@ NTSTATUS RlTlsProcessAttach(RL_IMAGE *img)
8181 if (tpl && st->raw_start_va )
8282 {
8383 memcpy (block, st->raw_start_va , tpl);
84- // resto já está zerado pelo HEAP_ZERO_MEMORY
84+ // rest is already zeroed by HEAP_ZERO_MEMORY
8585 }
8686 if (!TlsSetValue (idx, block))
8787 {
@@ -110,7 +110,7 @@ NTSTATUS RlTlsThreadAttach(RL_IMAGE* img)
110110
111111 const RL_TLS_STATE* const st = &img->tls ;
112112
113- // 1) Alocar + copiar template para ESTE thread
113+ // 1) Allocate + copy template for THIS thread
114114 BYTE *block = nullptr ;
115115 if (st->template_size )
116116 {
@@ -157,8 +157,8 @@ NTSTATUS RlTlsThreadDetach(RL_IMAGE *img)
157157 }
158158 }
159159
160- // 2) Liberar bloco TLS do thread (se houver) e limpar o slot
161- void *block = TlsGetValue (st->tls_index ); // ok mesmo se falhar ; ERROR_INVALID_INDEX não se aplica
160+ // 2) Free TLS block from thread and clean slot
161+ void *block = TlsGetValue (st->tls_index ); // ok even if it fails ; ERROR_INVALID_INDEX doesn't apply
162162 if (block)
163163 HeapFree (GetProcessHeap (), 0 , block);
164164 TlsSetValue (st->tls_index , nullptr );
@@ -182,10 +182,10 @@ NTSTATUS RlTlsProcessDetach(RL_IMAGE *img)
182182 }
183183 }
184184
185- // 2) Liberar índice TLS
185+ // 2) Free TLS index
186186 if (st->tls_index != TLS_OUT_OF_INDEXES)
187187 {
188- // (Qualquer bloco remanescente por thread deveria ter sido limpo em ThreadDetach)
188+ // (Any remaining block per thread should have been cleaned in ThreadDetach)
189189 TlsFree (st->tls_index );
190190 st->tls_index = TLS_OUT_OF_INDEXES;
191191 }
0 commit comments