mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-22 16:37:31 +09:00
parent
470a6e4401
commit
13fcc4a046
949 changed files with 95662 additions and 444 deletions
|
|
@ -2,6 +2,16 @@
|
|||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# Darwin gives a leading '_' to symbols defined in C code.
|
||||
#ifdef XP_DARWIN
|
||||
#define SYM(x) _ ## x
|
||||
#define CFI_STARTPROC
|
||||
#define CFI_ENDPROC
|
||||
#define CFI_DEF_CFA_OFFSET(offset)
|
||||
#define CFI_OFFSET(reg, offset)
|
||||
#define CFI_DEF_CFA_REGISTER(reg)
|
||||
#define CFI_DEF_CFA(reg, offset)
|
||||
#else
|
||||
#define SYM(x) x
|
||||
#define CFI_STARTPROC .cfi_startproc
|
||||
#define CFI_ENDPROC .cfi_endproc
|
||||
|
|
@ -9,6 +19,7 @@
|
|||
#define CFI_OFFSET(reg, offset) .cfi_offset reg, offset
|
||||
#define CFI_DEF_CFA_REGISTER(reg) .cfi_def_cfa_register reg
|
||||
#define CFI_DEF_CFA(reg, offset) .cfi_def_cfa reg, offset
|
||||
#endif
|
||||
|
||||
.intel_syntax noprefix
|
||||
|
||||
|
|
@ -16,7 +27,9 @@
|
|||
# uint32_t argc, nsXPTCVariant* argv);
|
||||
.text
|
||||
.global SYM(NS_InvokeByIndex)
|
||||
#ifndef XP_DARWIN
|
||||
.type NS_InvokeByIndex, @function
|
||||
#endif
|
||||
.align 4
|
||||
SYM(NS_InvokeByIndex):
|
||||
CFI_STARTPROC
|
||||
|
|
@ -103,5 +116,7 @@ SYM(NS_InvokeByIndex):
|
|||
ret
|
||||
CFI_ENDPROC
|
||||
|
||||
#ifndef XP_DARWIN
|
||||
// Magic indicating no need for an executable stack
|
||||
.section .note.GNU-stack, "", @progbits ; .previous
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -53,7 +53,9 @@ __asm__ (
|
|||
is what xptcstubs uses. */
|
||||
".align 2\n\t"
|
||||
".globl " SYMBOL_UNDERSCORE "NS_InvokeByIndex\n\t"
|
||||
#ifndef XP_MACOSX
|
||||
".type " SYMBOL_UNDERSCORE "NS_InvokeByIndex,@function\n"
|
||||
#endif
|
||||
SYMBOL_UNDERSCORE "NS_InvokeByIndex:\n\t"
|
||||
"pushl %ebp\n\t"
|
||||
"movl %esp, %ebp\n\t"
|
||||
|
|
@ -89,5 +91,7 @@ __asm__ (
|
|||
"movl %ebp, %esp\n\t"
|
||||
"popl %ebp\n\t"
|
||||
"ret\n"
|
||||
#ifndef XP_MACOSX
|
||||
".size " SYMBOL_UNDERSCORE "NS_InvokeByIndex, . -" SYMBOL_UNDERSCORE "NS_InvokeByIndex\n\t"
|
||||
#endif
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
#include "xptcprivate.h"
|
||||
#include "xptiprivate.h"
|
||||
|
||||
#if !defined(__arm__) && !defined(LINUX)
|
||||
#error "This code is for Linux ARM only. Please check if it works for you, too.\nDepends strongly on gcc behaviour."
|
||||
#if !defined(__arm__) && !(defined(LINUX) || defined(XP_DARWIN))
|
||||
#error "This code is for Linux/iOS ARM only. Please check if it works for you, too.\nDepends strongly on gcc behaviour."
|
||||
#endif
|
||||
|
||||
/* Specify explicitly a symbol for this function, don't try to guess the c++ mangled symbol. */
|
||||
|
|
|
|||
|
|
@ -66,11 +66,20 @@ PrepareAndDispatch(uint32_t methodIndex, nsXPTCStubBase* self, uint32_t* args)
|
|||
}
|
||||
} // extern "C"
|
||||
|
||||
#if !defined(XP_MACOSX)
|
||||
|
||||
#define STUB_HEADER(a, b) ".hidden " SYMBOL_UNDERSCORE "_ZN14nsXPTCStubBase" #a "Stub" #b "Ev\n\t" \
|
||||
".type " SYMBOL_UNDERSCORE "_ZN14nsXPTCStubBase" #a "Stub" #b "Ev,@function\n"
|
||||
|
||||
#define STUB_SIZE(a, b) ".size " SYMBOL_UNDERSCORE "_ZN14nsXPTCStubBase" #a "Stub" #b "Ev,.-" SYMBOL_UNDERSCORE "_ZN14nsXPTCStubBase" #a "Stub" #b "Ev\n\t"
|
||||
|
||||
#else
|
||||
|
||||
#define STUB_HEADER(a, b)
|
||||
#define STUB_SIZE(a, b)
|
||||
|
||||
#endif
|
||||
|
||||
// gcc3 mangling tends to insert the length of the method name
|
||||
#define STUB_ENTRY(n) \
|
||||
asm(".text\n\t" \
|
||||
|
|
@ -103,12 +112,16 @@ asm(".text\n\t" \
|
|||
// static nsresult SharedStub(uint32_t methodIndex) __attribute__((regparm(1)))
|
||||
asm(".text\n\t"
|
||||
".align 2\n\t"
|
||||
#if !defined(XP_MACOSX)
|
||||
".type " SYMBOL_UNDERSCORE "SharedStub,@function\n\t"
|
||||
#endif
|
||||
SYMBOL_UNDERSCORE "SharedStub:\n\t"
|
||||
"leal 0x08(%esp), %ecx\n\t"
|
||||
"movl 0x04(%esp), %edx\n\t"
|
||||
"jmp " SYMBOL_UNDERSCORE "PrepareAndDispatch\n\t"
|
||||
#if !defined(XP_MACOSX)
|
||||
".size " SYMBOL_UNDERSCORE "SharedStub,.-" SYMBOL_UNDERSCORE "SharedStub"
|
||||
#endif
|
||||
);
|
||||
|
||||
#define SENTINEL_ENTRY(n) \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue