teak-llvm/lldb/packages/Python/lldbsuite/test/expression_command/pr35310/main.cpp
Davide Italiano 675767a591 Use the DWARF linkage name when importing C++ methods.
When importing C++ methods into clang AST nodes from the DWARF symbol
table, preserve the DW_AT_linkage_name and use it as the linker
("asm") name for the symbol.

Concretely, this enables `expression` to call into names that use the
GNU `abi_tag` extension, and enables lldb to call into code using
std::string or std::list from recent versions of libstdc++. See
https://bugs.llvm.org/show_bug.cgi?id=35310 . It also seems broadly
more robust than relying on the DWARF->clang->codegen pipeline to
roundtrip properly, but I'm not immediately aware of any other cases
in which it makes a difference.

Patch by Nelson Elhage!

Differential Revision:  https://reviews.llvm.org/D40283

llvm-svn: 328658
2018-03-27 19:40:50 +00:00

20 lines
293 B
C++

#include <stdio.h>
class A {
public:
int __attribute__((abi_tag("cxx11"))) test_abi_tag() {
return 1;
}
int test_asm_name() asm("A_test_asm") {
return 2;
}
};
int main(int argc, char **argv) {
A a;
// Break here
a.test_abi_tag();
a.test_asm_name();
return 0;
}