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

    <tr>
        <th>Summary</th>
        <td>
            Towards eliminating the global ctx variable for lld/wasm
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            lld
      </td>
    </tr>

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

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

<pre>
    The goal is to drop the [reset](https://github.com/llvm/llvm-project/pull/118440#issuecomment-2516296560) function as pointed here.

For this we can do the following (inspired by changes in lld/ELF & https://maskray.me/blog/2024-11-17-removing-global-state-from-lld)

- [ ] Move driver into ctx and add LinkerDriver::ctx 

1. https://github.com/llvm/llvm-project/commit/f596d82385a0fdf45543fb4266dc9832f4b64d8d#diff-5514d8102381f1f4b47bfb1caf0b7c06bbc3b3d2677c6844d0001eb022b64d88
2. https://github.com/llvm/llvm-project/commit/bffb26f1531ecfe209b84f77b170ddb0df991351#diff-5514d8102381f1f4b47bfb1caf0b7c06bbc3b3d2677c6844d0001eb022b64d88R94

- [ ] Move Config into ctx and migrate LinkerDriver member functions to use `ctx.arg.x` instead of
`config->x`

1. https://github.com/llvm/llvm-project/commit/d9045420ae8c1b986232a44b9e3073793eec7f8a
2. https://github.com/llvm/llvm-project/commit/e1a1f18022089969d4e7e1686a6dff3980b6ccb1
3. https://github.com/llvm/llvm-project/commit/eba30b3370e1269ec9772e75c3818080cb1f272a#diff-1a6e8fdd6339ca831ba81ed9fb4f94c42419f91d67c9e16322b71a3e011b42d2

- [ ] Add Context aware diagnostic functions

1. https://github.com/llvm/llvm-project/commit/201d7607f87afff999b1257d27569a3053b85143#diff-aab11f6988e1c802cd24d6e9842068288284b0a06366b0121f37493c929bd8e0R55

- [ ] Pass ctx to bAlloc/saver/uniqueSaver

1. https://github.com/llvm/llvm-project/commit/a626eb2a2fcda460eaad7bd6f2bdfdfa8f0f23c2#diff-5514d8102381f1f4b47bfb1caf0b7c06bbc3b3d2677c6844d0001eb022b64d88R109
2. https://github.com/llvm/llvm-project/commit/2991a4e2097ab3f32d37fdceab08c658836e312c#diff-ba5e9bcbcabe54e23f58f9466afb49d9720373eb11b9b3a42ddc2d653b035594

- [ ] Miscallaneous like 

1. Move symtab into ctx (https://github.com/llvm/llvm-project/commit/df0864e761107b07e38f5503e0cbee0cebb4c5e8#diff-9e4503a72c1e0c0a2743852386d5e9a99574f6e6a25be24160269e729fb1e433)
2. Pass ctx to InputFiles (https://github.com/llvm/llvm-project/commit/49865107d49b2be86d9ff5474d081c49d1556213_
3. etc

- [ ] Finally we can get rid of reset and the ctx global variable . Also let Ctx inherit from CommonLinkerContext

1. https://github.com/llvm/llvm-project/commit/73bb022b469a32eb5aee30f2947f3cea5e903caa#diff-5514d8102381f1f4b47bfb1caf0b7c06bbc3b3d2677c6844d0001eb022b64d88R115
2. https://github.com/llvm/llvm-project/commit/8f238f662c8237b88392f8a94469cd50d86636d6


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVs2O4zjSfBr5QthIJv8PPni6x8AHzAcsZue-yCSTNrdlqVaS6-ftF1J1TaEbc5mtOtkCATIyIzIyaJ7bZRA5du6Xzn3d0X25jtORhvsyzleb9I7H8nL84yrqMlKv2qyWUZVpfFDLVVTnfplklqVzXzuM12V5mDtz6vDc4fnSluudD3m8dXju-8e3n_3DNP5b8tLh-eHe9x2etY7WQoemzfNd8ni7ybDs0WmPyTsPHSZV70Ne2jgomtXD2IZFirrKJIcOTh2czuOklmub1ZOoTIMq44avjn0_PrXhojqMbZgf2iRF8YvKVxouMqs2qL4vHZ5__e2sOvTqxxpuNH-b6OVwkw7P3I-XDs8IaPda73XYT3IbH9tw2V_6kanfzwstsq_TeNtvt6ZXcPu1T6pzX9X_j4-iytQeZVJtWEaVl2dFQ1FUivqtDd9k-rqdrgjMaT19vUIf1N_u7trItv6pLvkS0URHUEu1zllT2aL3JadosFr2tsTSoSmt1r1z2paoAU3UVVfLNnBlnakChwyeORs2BX0I2UdrCwBoYUDc7okdnPAjeLlWRl-1M1pyFYTE0dYQWAcohaHUlLRx-rPw_p7sXxL1ZRxqu_xI1K1dJlrkB7LUTW4s058a3WbkPovqPOTl-UDT5fDceVBtmBehosa6vuchbw_sO_PrevwJTJcE1lkEkpg1p-jRIFnLSQwEE5IRyaFG-ihDoklXHQERYko-FStBtI-efKnVpAjsc2bdwcl86B0mA2xMANHok-QUAkpw2UQdIUJmXTEgvSlBk5dYS_HGpEzRaKaopaTKtiabLVqdatLFh5xEe4PIQZMR0JotFvxZBqdSVhUs8rwoeqJJVGl0GcZ5afmd7k8gDkGX4CHUGKjWmlJijS4UDM4nMuAMR6eteSuUiLWuPsUoOkfAXNAWLylaBB8xRoyWgcAb7xk06mqCTSYnTFyiwO_O_VzrP2ieN5kvo-JT34-5w_NMqxnh-T60_9zln9vXx6slj14YCWsuZD0IUQlcfEUutVSKFSqajJ824BrSRyWPKWmyqxkFYlMNFhNqyUIMMXsXo_FiNOY3zExOEmfOxOKsoKku1mS9p8o2lRQQTDDCWnNiQxZLyVi8MwzGub9wpDZn6nsaZLzPqm_f5H01bG41v9wW4ne3-l8W8ruRVIjeSvBaQ2AIYmJ1DoxAZhHIwmyzk_hWbRLrwFDArAUyEAZrokMTfXGSKCUXbPXiCR0LWu1hHeeAqbIWa8zrrsTDDyr8v-HhvpxbL_PHirEpeqchFJsYWaIvqVZngy0QdbapaOc8avOvV7uSJf_c_HMbqO9f3tLFRRY1tdXH1RZ_ts2w5o0V-GsWUI80NeJe1EGd-nlUvSzqy_Ks2nCVqS1qTQnqy3i7jcPrLvnuM58wXsHwpn27WgcKOxIxUDHZUE2WVZhgMtHnjZd2Hx2vWNHE6j3miCZwjCZhjZSs9SkXByV6b3zxr-3ZlaMpySTayVEHY4LBBGF3PWbvpCYdI0BBdBV9tMlXZqqxiC-7dlzzm0ZIEDFiOBRAbylxLVSsZe4syI1af1iRHsbpsttS6VHrpCPsemLp5y0uI24hD9fcPB23wvh-mTsLfZuX-f2CpS29HP8Yn2gqs5K-3dpAy5pKV81818sqnT81U8fpey59ovm2u0_98W-3doM9b_F6Q_54xP8GAAD__yvSoPM">