<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150070>150070</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[CFI] duplicate symbols on aliased weak function
</td>
</tr>
<tr>
<th>Labels</th>
<td>
compiler-rt:cfi,
LTO
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
vitalybuka
</td>
</tr>
</table>
<pre>
cat ../b.c
```
void f(void) {}
int main(int argc, char **argv) {
argv[0] = (char *)f;
void (*fp)(void) = (void (*)(void))argv[0];
fp();
}
```
cat ../a.c
```
__attribute__((weak)) void f(void) {}
extern void ff(void) __attribute__((alias("f")));
```
clang ../b.c ../a.c -fsanitize=cfi-icall -flto=thin -fvisibility=hidden -fuse-ld=lld -o x -Wl,-save-temps -Wl,--thinlto-jobs=1
```
ld.lld: error: duplicate symbol: f.cfi
>>> defined at b.c
>>> /tmp/x.lto.b-0cd040.o:(f.cfi)
>>> defined at a.c
>>> /tmp/x.lto.a-1b6f8e.o:(.text.f.cfi+0x0)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8lM-PqzYQx_-a4WIZmXHYwIEDuxSpUqVeKvUYGf9I_J7BETZp0r--MiHZvNd2JUuM7fFnvjMeI0Kwx0nrBsp3KLtMLPHk5-Zio3C3YfkussGrWyNFJHkO2A-5BNbCG9sGay_eKmIAq2QA1gT277Dvkhdr7RTJKOwEWCVTzEcJ-EHkScwEsAVsxXy8PE6xlpB1Xr4zKDsCvCOA1ad3bYDf3daogBVga86A9Wv8-6kXjx_2AeuXGBsvMaq0uU43-S9J3sezCuJfVTgcRIyzHZaoD4eVVf2lxfd7PPJljfQ16nnafF6d_oMpnBVhNdEA4h3_qftHxdKJ6fi8tqdyQk0Qk432bw28k8ZSK4VzhBoXPfAunuxEqLnYYAfrbLwB705WKZ1Wl6CpU8A75xShnlwJ_dMBftAgLppGPZ7DY4UmkIuefvNDAN4VPyl0KncJ1RI9z35OhlrOzkoRNQm3cfAurZlcGpuO8l_ugyht7KQVEZFs7fjcAuzjeAbsr7mLPh8ok4rtWO6Bt4DVnYX1_-HE1zhBi-HNVPqBy6O-xnyDvrMr29CPJDPVcFXzWmS6KfYlR1bygmenpqoGLBTuaqlYiTvzVpnSlPptz6XYDUWR2QYZlmyPWOyx4jwXqtbKFIKXhvFBV7BjehTW5c5dxtzPx8yGsOimKBnbs8yJQbuwPmpE6cezdXqmcwTermIR8AMQf_vj92SXXTY3CUSH5Rhgx5wNMXyio41u_UN89L-md_nzNQXiJ7K2plYktT0xyySj9VO2zK45xXgOa8V6wP5o42kZculHwD6F2D70PPtvWkbAfk0lAPZbNpcG_wkAAP__2BlV2Q">