mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 07:34:33 +00:00
Use .size and .type on ELF systems; this helps tools that map
addresses to symbols. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63962 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3f4c81de0a
commit
9036d80d7b
@ -59,6 +59,16 @@ static TargetJITInfo::JITCompilerFn JITCompilerFunction;
|
|||||||
#define ASMCALLSUFFIX
|
#define ASMCALLSUFFIX
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// For ELF targets, use a .size and .type directive, to let tools
|
||||||
|
// know the extent of functions defined in assembler.
|
||||||
|
#if defined(__ELF__)
|
||||||
|
# define SIZE(sym) ".size " #sym ", . - " #sym "\n"
|
||||||
|
# define TYPE_FUNCTION(sym) ".type " #sym ", @function\n"
|
||||||
|
#else
|
||||||
|
# define SIZE(sym)
|
||||||
|
# define TYPE_FUNCTION(sym)
|
||||||
|
#endif
|
||||||
|
|
||||||
// Provide a convenient way for disabling usage of CFI directives.
|
// Provide a convenient way for disabling usage of CFI directives.
|
||||||
// This is needed for old/broken assemblers (for example, gas on
|
// This is needed for old/broken assemblers (for example, gas on
|
||||||
// Darwin is pretty old and doesn't support these directives)
|
// Darwin is pretty old and doesn't support these directives)
|
||||||
@ -82,6 +92,7 @@ extern "C" {
|
|||||||
".text\n"
|
".text\n"
|
||||||
".align 8\n"
|
".align 8\n"
|
||||||
".globl " ASMPREFIX "X86CompilationCallback\n"
|
".globl " ASMPREFIX "X86CompilationCallback\n"
|
||||||
|
TYPE_FUNCTION(X86CompilationCallback)
|
||||||
ASMPREFIX "X86CompilationCallback:\n"
|
ASMPREFIX "X86CompilationCallback:\n"
|
||||||
CFI(".cfi_startproc\n")
|
CFI(".cfi_startproc\n")
|
||||||
// Save RBP
|
// Save RBP
|
||||||
@ -160,6 +171,7 @@ extern "C" {
|
|||||||
CFI(".cfi_restore %rbp\n")
|
CFI(".cfi_restore %rbp\n")
|
||||||
"ret\n"
|
"ret\n"
|
||||||
CFI(".cfi_endproc\n")
|
CFI(".cfi_endproc\n")
|
||||||
|
SIZE(X86CompilationCallback)
|
||||||
);
|
);
|
||||||
# else
|
# else
|
||||||
// No inline assembler support on this platform. The routine is in external
|
// No inline assembler support on this platform. The routine is in external
|
||||||
@ -174,6 +186,7 @@ extern "C" {
|
|||||||
".text\n"
|
".text\n"
|
||||||
".align 8\n"
|
".align 8\n"
|
||||||
".globl " ASMPREFIX "X86CompilationCallback\n"
|
".globl " ASMPREFIX "X86CompilationCallback\n"
|
||||||
|
TYPE_FUNCTION(X86CompilationCallback)
|
||||||
ASMPREFIX "X86CompilationCallback:\n"
|
ASMPREFIX "X86CompilationCallback:\n"
|
||||||
CFI(".cfi_startproc\n")
|
CFI(".cfi_startproc\n")
|
||||||
"pushl %ebp\n"
|
"pushl %ebp\n"
|
||||||
@ -213,6 +226,7 @@ extern "C" {
|
|||||||
CFI(".cfi_restore %ebp\n")
|
CFI(".cfi_restore %ebp\n")
|
||||||
"ret\n"
|
"ret\n"
|
||||||
CFI(".cfi_endproc\n")
|
CFI(".cfi_endproc\n")
|
||||||
|
SIZE(X86CompilationCallback)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Same as X86CompilationCallback but also saves XMM argument registers.
|
// Same as X86CompilationCallback but also saves XMM argument registers.
|
||||||
@ -221,6 +235,7 @@ extern "C" {
|
|||||||
".text\n"
|
".text\n"
|
||||||
".align 8\n"
|
".align 8\n"
|
||||||
".globl " ASMPREFIX "X86CompilationCallback_SSE\n"
|
".globl " ASMPREFIX "X86CompilationCallback_SSE\n"
|
||||||
|
TYPE_FUNCTION(X86CompilationCallback_SSE)
|
||||||
ASMPREFIX "X86CompilationCallback_SSE:\n"
|
ASMPREFIX "X86CompilationCallback_SSE:\n"
|
||||||
CFI(".cfi_startproc\n")
|
CFI(".cfi_startproc\n")
|
||||||
"pushl %ebp\n"
|
"pushl %ebp\n"
|
||||||
@ -276,6 +291,7 @@ extern "C" {
|
|||||||
CFI(".cfi_restore %ebp\n")
|
CFI(".cfi_restore %ebp\n")
|
||||||
"ret\n"
|
"ret\n"
|
||||||
CFI(".cfi_endproc\n")
|
CFI(".cfi_endproc\n")
|
||||||
|
SIZE(X86CompilationCallback_SSE)
|
||||||
);
|
);
|
||||||
# else
|
# else
|
||||||
void X86CompilationCallback2(intptr_t *StackPtr, intptr_t RetAddr);
|
void X86CompilationCallback2(intptr_t *StackPtr, intptr_t RetAddr);
|
||||||
@ -312,7 +328,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// X86CompilationCallback - This is the target-specific function invoked by the
|
/// X86CompilationCallback2 - This is the target-specific function invoked by the
|
||||||
/// function stub when we did not know the real target of a call. This function
|
/// function stub when we did not know the real target of a call. This function
|
||||||
/// must locate the start of the stub or call site and pass it into the JIT
|
/// must locate the start of the stub or call site and pass it into the JIT
|
||||||
/// compiler function.
|
/// compiler function.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user