mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 09:36:06 +00:00

1. With a Clang that doesn't default to GNU extensions they need to be enabled explicitly. 2. The X86 directory lit config sets it already, there's no reason for this test to do it by itself. 3. The C frontend executable will fail if there's for example a Clang resource file for the C++ mode that sets C++-specific options: ``` + /home/tambre/dev/llvm/build/bin/clang --target=x86_64-unknown-linux-gnu -fPIE -fuse-ld=lld -Wl,--unresolved-symbols=ignore-all -pie -fPIC -shared /home/tambre/dev/llvm/bolt/test/R_ABS.pic.lld.cpp -o /home/tambre/dev/llvm/build/tools/bolt/test/Output/R_ABS.pic.lld.cpp.tmp.so -Wl,-q -fuse-ld=lld clang: warning: argument unused during compilation: '-pie' [-Wunused-command-line-argument] error: invalid argument '-std=c23' not allowed with 'C++' ```
20 lines
580 B
C++
20 lines
580 B
C++
/*
|
|
* Check that we don't assert on a duplicate static relocation added by lld
|
|
* against _Z6myfuncv. The same address has a dynamic relocation against it.
|
|
*
|
|
* This test uses the clang driver + lld and will only succeed on Linux systems
|
|
* with libc available.
|
|
* REQUIRES: system-linux
|
|
*
|
|
* RUN: %clangxx %cxxflags -fPIC -shared %s -o %t.so -Wl,-q -fuse-ld=lld
|
|
* RUN: llvm-bolt %t.so -o %t.so.bolt --relocs
|
|
*/
|
|
|
|
unsigned long long myfunc();
|
|
|
|
unsigned long long (*myglobal)() = myfunc;
|
|
|
|
unsigned long long myfunc() {
|
|
return reinterpret_cast<unsigned long long>(myglobal);
|
|
}
|