<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62329>62329</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-cl/lld-link .def files ordinals don't work at all
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Jimbopython
</td>
</tr>
</table>
<pre>
When using clang-cl/lld-link with a def file for a shared dll, the ordinals placed in the def file have no impact at all.
1. The exported functions in the resulting dll are always in the same order, ignoring the sequence specified in the def file
2. With MSVC, the numbers don't have to be ongoing. There can be spaces between the ordinals.
Visual Studio 2022
MSVC: 17.5.4
llvm 15.0.1/16.0.1
Example:
CMake:
```
cmake_minimum_required(VERSION 3.15)
project(foobar C)
set(CMAKE_C_STANDARD 11)
add_library(foobar SHARED lib.c lib.def)
```
lib.h:
```
__declspec(dllexport) void foo(void);
__declspec(dllexport) void bar(void);
```
lib.c:
```
#include "lib.h"
#include <stdio.h>
void foo(void) {
printf("Foo!\n");
}
void bar(void) {
printf("Bar!\n");
}
```
lib.def:
```
EXPORTS
foo @2
bar @4
```
The result from dumpbin with MSVC native is:
```
2 0 00001010 foo
4 1 00001020 bar
```
The result from dumpbin with clang-cl/lld-link is:
```
1 0 00001000 foo
2 1 00001010 bar
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclV1v4ygXxz8NuTmqBdh5u_BFmhc9z646s2qqzt5FGI5jthg8gNvpt19hJ22604xWK0XEcF74nT_2QYSgjxaxJNNbMt1MRB8b58vfdFu57jU2zk4qp17Lbw1a6IO2R5BG2OONNITvjFE3RtsneNGxAQEKa6i1QaidBwGhER4VKGMIX0NsEJxX2goToDNCogJth-W3uEY8I1gHuu2EjCAiCGMyQjeErsaRZfDQIOCPzvmICureyqidDedcHkNvYgJVxoDwCMK8iNc3exDtwIE-QemjdT45Dyb83qOVCKFDqWv9M-DIwDP4lgq-2z-uz5XZvq3QB1DOEj6PYyXRQYXg7NFpexzAPYIUNq2GTkgMUGF8QbQf1PlQ8KMOvTCwj73SDjjlfFwfNs9XwObZNCvGNWOeW2DTjGaM8B2bDQ8XubY_RNsZJPlpvr4TT-8zMqOn3zCVrXjCQ6utbvv24PF7rz0qwheP2_v9_79-gTxjU8KXo3fn3V8oI-GL2rlKeFi_mcYxYDKu71a_bw_rw_5h9WWzut8AY__wE0odjK688K_vyfb_W91vN2B0lclhVFi_x33kPkmhq6y5VtrhoFCadMqEL5Qx49tE-BKenVZQO0f4Ij2mPfLbfxVUCf9J0FU2eY2N8FxbaXqFQDgfyzif-aUtX4eotEtFbi-T_1wBkPmJBgCg89rGmvAF4XyX3BiZrm3a4hJ7vrnI9qG0i2yXqW6Tzy9TXZUineUVMbZ__vH1_mE_TmrngBT0pEV6LUhBi18kf3hrB1B714Lq267SduxW6fsBK6J-RtDhGgBPklGglFJGGR2EHQxFMrCTgdNBo_9I8llDvU7ELonoBRG_JGLXiSaqzNUyX4oJlmy24Hkxnc3ppCmFYNVM5ksxFVW-rFi9FHmNuKyqirIlW0x0ySnPacELVrAip1mhhGBM5krOCyZzSgqKrdAmS40oc_440SH0WM54zpcTIyo04XzT-DI53VT9MZCCGh1ieA-LOhosPxMmO7fi8H6ZnHvui_NPpztj0ntTNjF2g458R_juqGPTV5l07ZDv-fx389a6dgNtIHw3AP8dAAD__9KxDQE">