Ignore:
Timestamp:
Nov 18, 2009, 3:02:19 PM (16 years ago)
Author:
[email protected]
Message:

2009-11-18 Thiago Macieira <[email protected]>

Reviewed by Gavin Barraclough.

[Qt] Implement symbol hiding for JSC's JIT functions.

These functions are implemented directly in assembly, so they need the
proper directives to enable/disable visibility. On ELF systems, it's
.hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
Windows, it's not necessary since you have to explicitly export. I
also implemented the AIX idiom, though it's unlikely anyone will
implement AIX/POWER JIT.
https://bugs.webkit.org/show_bug.cgi?id=30864

  • jit/JITStubs.cpp:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/jit/JITStubs.cpp

    r50981 r51141  
    8383#endif
    8484
     85#if PLATFORM(DARWIN)
     86    // Mach-O platform
     87#define HIDE_SYMBOL(name) ".private_extern _" #name
     88#elif PLATFORM(AIX)
     89    // IBM's own file format
     90#define HIDE_SYMBOL(name) ".lglobl " #name
     91#elif PLATFORM(LINUX) || PLATFORM(FREEBSD) || PLATFORM(OPENBSD) || PLATFORM(SOLARIS) || (PLATFORM(HPUX) && PLATFORM(IA64)) || PLATFORM(SYMBIAN) || PLATFORM(NETBSD)
     92    // ELF platform
     93#define HIDE_SYMBOL(name) ".hidden " #name
     94#else
     95#define HIDE_SYMBOL(name)
     96#endif
     97
    8598#if USE(JSVALUE32_64)
    8699
     
    97110".text\n"
    98111".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     112HIDE_SYMBOL(ctiTrampoline) "\n"
    99113SYMBOL_STRING(ctiTrampoline) ":" "\n"
    100114    "pushl %ebp" "\n"
     
    117131asm volatile (
    118132".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     133HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    119134SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
    120135#if !USE(JIT_STUB_ARGUMENT_VA_LIST)
     
    132147asm volatile (
    133148".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     149HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    134150SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
    135151    "addl $0x3c, %esp" "\n"
     
    156172asm volatile (
    157173".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     174HIDE_SYMBOL(ctiTrampoline) "\n"
    158175SYMBOL_STRING(ctiTrampoline) ":" "\n"
    159176    "pushq %rbp" "\n"
     
    182199asm volatile (
    183200".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     201HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    184202SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
    185203    "movq %rsp, %rdi" "\n"
     
    197215asm volatile (
    198216".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     217HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    199218SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
    200219    "addq $0x48, %rsp" "\n"
     
    218237".align 2" "\n"
    219238".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     239HIDE_SYMBOL(ctiTrampoline) "\n"
    220240".thumb" "\n"
    221241".thumb_func " THUMB_FUNC_PARAM(ctiTrampoline) "\n"
     
    244264".align 2" "\n"
    245265".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     266HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    246267".thumb" "\n"
    247268".thumb_func " THUMB_FUNC_PARAM(ctiVMThrowTrampoline) "\n"
     
    383404
    384405asm volatile (
     406".text\n"
    385407".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     408HIDE_SYMBOL(ctiTrampoline) "\n"
    386409SYMBOL_STRING(ctiTrampoline) ":" "\n"
    387410    "pushl %ebp" "\n"
     
    404427asm volatile (
    405428".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     429HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    406430SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
    407431#if !USE(JIT_STUB_ARGUMENT_VA_LIST)
     
    419443asm volatile (
    420444".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     445HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    421446SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
    422447    "addl $0x1c, %esp" "\n"
     
    441466
    442467asm volatile (
     468".text\n"
    443469".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     470HIDE_SYMBOL(ctiTrampoline) "\n"
    444471SYMBOL_STRING(ctiTrampoline) ":" "\n"
    445472    "pushq %rbp" "\n"
     
    475502asm volatile (
    476503".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     504HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    477505SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
    478506    "movq %rsp, %rdi" "\n"
     
    490518asm volatile (
    491519".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     520HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    492521SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
    493522    "addq $0x78, %rsp" "\n"
     
    511540".align 2" "\n"
    512541".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     542HIDE_SYMBOL(ctiTrampoline) "\n"
    513543".thumb" "\n"
    514544".thumb_func " THUMB_FUNC_PARAM(ctiTrampoline) "\n"
     
    537567".align 2" "\n"
    538568".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     569HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    539570".thumb" "\n"
    540571".thumb_func " THUMB_FUNC_PARAM(ctiVMThrowTrampoline) "\n"
     
    554585".align 2" "\n"
    555586".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     587HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    556588".thumb" "\n"
    557589".thumb_func " THUMB_FUNC_PARAM(ctiOpThrowNotCaught) "\n"
     
    568600
    569601asm volatile (
     602".text\n"
    570603".globl " SYMBOL_STRING(ctiTrampoline) "\n"
     604HIDE_SYMBOL(ctiTrampoline) "\n"
    571605SYMBOL_STRING(ctiTrampoline) ":" "\n"
    572606    "stmdb sp!, {r1-r3}" "\n"
     
    585619asm volatile (
    586620".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
     621HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
    587622SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
    588623    "mov r0, sp" "\n"
     
    591626// Both has the same return sequence
    592627".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
     628HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
    593629SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
    594630    "add sp, sp, #36" "\n"
     
    930966        ".align 2" "\n" \
    931967        ".globl " SYMBOL_STRING(cti_##op) "\n" \
     968        HIDE_SYMBOL(cti_##op) "\n"             \
    932969        ".thumb" "\n" \
    933970        ".thumb_func " THUMB_FUNC_PARAM(cti_##op) "\n" \
Note: See TracChangeset for help on using the changeset viewer.