mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 02:32:08 +00:00
35c163020a
This introduces the symbol rewriter. This is an IR->IR transformation that is implemented as a CodeGenPrepare pass. This allows for the transparent adjustment of the symbols during compilation. It provides a clean, simple, elegant solution for symbol inter-positioning. This technique is often used, such as in the various sanitizers and performance analysis. The control of this is via a custom YAML syntax map file that indicates source to destination mapping, so as to avoid having the compiler to know the exact details of the source to destination transformations. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221548 91177308-0d34-0410-b5e6-96231b3b80d8
47 lines
670 B
Plaintext
47 lines
670 B
Plaintext
function: {
|
|
source: source_function,
|
|
target: target_function,
|
|
}
|
|
|
|
global variable: {
|
|
source: source_variable,
|
|
target: target_variable,
|
|
}
|
|
|
|
function: {
|
|
source: source_function_(.*),
|
|
transform: target_\1,
|
|
}
|
|
|
|
global variable: {
|
|
source: source_variable_(.*),
|
|
transform: target_\1,
|
|
}
|
|
|
|
function: {
|
|
source: naked_source_function,
|
|
target: naked_target_function,
|
|
naked: true,
|
|
}
|
|
|
|
function: {
|
|
source: imported_function,
|
|
target: exported_function,
|
|
}
|
|
|
|
function: {
|
|
source: missing_global_leader_prefix,
|
|
target: DO_NOT_REWRITE,
|
|
}
|
|
|
|
function: {
|
|
source: first_callee,
|
|
target: renamed_callee,
|
|
}
|
|
|
|
global alias: {
|
|
source: _ZN1SC1Ev,
|
|
target: _ZN1SD1Ev,
|
|
}
|
|
|