<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/109138>109138</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            TLS segment offset calculation different for target i386 and i386-unknown-linux
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          prabhjotsingh3
      </td>
    </tr>
</table>

<pre>
    Hi,

The tls offsets calculation logic seems to be different for target i386 and i386-unknonwn-linux for local-exec model.

Example code :-


```
#include <stdio.h>
__thread int myvar;
int main(void)
{
        myvar = 0;
        return 0;
}
```

For target i386 :-
Command - `clang -ftls-model=local-exec --target=i386 -v thread.c`
```
080484a0 <main>:
 80484a3:       50                      push   %eax
 80484a4: c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
 80484ab:       65 a1 00 00 00 00       mov    %gs:0x0,%eax
 80484b1:       c7 80 fc ff ff ff 00 movl   $0x0,-0x4(%eax)
 80484b8:       00 00 00 
 80484bb:       31 c0                   xor    %eax,%eax
 80484bd:       83 c4 04 add    $0x4,%esp
 80484c0:       5d                      pop %ebp
 80484c1:       c3                      ret

```

For target i386-unknown-linux  :-
Command - `clang -ftls-model=local-exec --target=i386-unknown-linux  -v thread.c`
```
000011a0 <main>:
 11a0:       55                      push   %ebp
    11a1:       89 e5 mov    %esp,%ebp
    11a3:       50                      push %eax
    11a4:       c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
 11ab:       65 c7 05 fc ff ff ff    movl   $0x0,%gs:0xfffffffc
    11b2: 00 00 00 00 
    11b6:       31 c0                   xor %eax,%eax
    11b8:       83 c4 04                add    $0x4,%esp
 11bb:       5d                      pop    %ebp
    11bc:       c3 ret
    11bd:       66 90                   xchg %ax,%ax
    11bf:       90                      nop
```
Would be grateful if anyway could please let me know the reason for this and is there anyway to control this via clang arguments?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVk2P6yYU_TVkc-UIA3achRfzJhN10V2f1OUTxtjmFYMFOJP595U_Ejup33SkFlmeSS73cO7hngD3XtVGyhwl31By2vE-NNblneNF89MGr0zd0F1hy4_8N4XIK8InhF-m9_dGQtAebFV5GTwIrkWveVDWgLa1EuClbD0EC4WEUlWVdNIEqKyDwF0tAyiapcBNOf4T9eYvY827ibQy_XWcp63gOpJXKaC1pdT7NYG3K287LUHYUgKiL9E6OL9TPD_TR0KVEbof57_6UCq7bxB9m6I_foTGSV6CMgHajwt3iH6bQuM3XBlEsotVJSLHGfAwT4B5jGmA6AnwPfkWczL0zqwC6HDapjm-z086LRW-2rYdVIsApVhobmqIqqB9NGqE6GklWxRNGIieRpToAlOVe7Gs97g8zjDLGMeDRmPR9A3RmRRMMYrorawEw-boet8AACKJ5NeHZDYkiwOwBCoBGC_PIKC96DGN4StG5DXCV4ZINsAU3V33GalYaKQJ8PgZbMKDiUbtEX2ZQP9JqogXKHGADA_Uqmp-MP6MF78-8SqyBexO52HCijiNQWxJeLUOFv02OZcLSkZBMMAMeFnCjSeb03y3ThN4tXnlLzbPdjBLvs5ci0S3M50Mnxlwq7Mn4999__80-jPoV_oeYxzHv-j7IbDSLfnXpr9LBzAkr6TLjiCTVWMO-zNt1FPOV1320BpTKnto5__itDh-spk4AE4e7LEBtvitmoZY0yvIgLjm8xBNv-aObWtMENmGNZ7Gp06J47VHP7PJ5nYX4sEpd1PM0ZVx0xSOmwWKph6AbwU-1VctCJvpAGBst9nmf9pel8ORXDseZNVrUBVw8_HOP0CMsU5L7iVoGaCVMNgIQiPBSe6tmc7vRvnp4PZDyMkbQLAgrAnO6mnORXGYjMtd3bfSBI_oeVfmtDzSI9_JPD6QNE2T7MB2TS6OSUUqyRhNy4wmWMQJzg5EJCwrykKKncoJJgwf4yymhFG2jzE5VAwznBzokZMKMSxbrvRe60u7t67eKe97mcf4GNNsp3khtR-vO4QY-Q5jFBEy3H5cPiRFRV97xLBWPvgFJqigZf799z_Ay3ooZL74PNx7vnrLuf0u7Xqn8yaEbvAKImdEzrUKTV_shW0ROQ-rz3-iztmfUgREziNnj8h5LuqSk78DAAD__0AijlA">