Issue 150070
Summary [CFI] duplicate symbols on aliased weak function
Labels compiler-rt:cfi, LTO
Assignees
Reporter vitalybuka
    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)
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to