toolkit/crashreporter/google-breakpad/src/processor/stackwalker_selftest_sol.s

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_selftest_sol.s	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,111 @@
     1.4 +/* Copyright (c) 2007, Google Inc.
     1.5 + * All rights reserved.
     1.6 + *
     1.7 + * Redistribution and use in source and binary forms, with or without
     1.8 + * modification, are permitted provided that the following conditions are
     1.9 + * met:
    1.10 + *
    1.11 + *     * Redistributions of source code must retain the above copyright
    1.12 + * notice, this list of conditions and the following disclaimer.
    1.13 + *     * Redistributions in binary form must reproduce the above
    1.14 + * copyright notice, this list of conditions and the following disclaimer
    1.15 + * in the documentation and/or other materials provided with the
    1.16 + * distribution.
    1.17 + *     * Neither the name of Google Inc. nor the names of its
    1.18 + * contributors may be used to endorse or promote products derived from
    1.19 + * this software without specific prior written permission.
    1.20 + *
    1.21 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    1.22 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    1.23 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    1.24 + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    1.25 + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    1.26 + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    1.27 + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    1.28 + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    1.29 + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    1.30 + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    1.31 + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    1.32 + */
    1.33 +
    1.34 +/* stackwalker_selftest_sol.s
    1.35 + * On Solaris, the recommeded compiler is CC, so we can not use gcc inline
    1.36 + * asm, use this method instead.
    1.37 + *
    1.38 + * How to compile: as -P -L -D_ASM -D_STDC -K PIC -o \
    1.39 + *                 src/processor/stackwalker_selftest_sol.o \
    1.40 + *                 src/processor/stackwalker_selftest_sol.s
    1.41 + *
    1.42 + * Author: Michael Shang
    1.43 + */
    1.44 +
    1.45 +#include <sys/asm_linkage.h>
    1.46 +
    1.47 +#if defined(__i386)
    1.48 +
    1.49 +
    1.50 +ENTRY(GetEBP) 
    1.51 +      pushl    %ebp
    1.52 +      movl     %esp,%ebp
    1.53 +      subl     $0x00000004,%esp
    1.54 +      movl     0x00000000(%ebp),%eax
    1.55 +      movl     %eax,0xfffffffc(%ebp)
    1.56 +      movl     0xfffffffc(%ebp),%eax
    1.57 +      leave    
    1.58 +      ret      
    1.59 +SET_SIZE(GetEBP)
    1.60 +
    1.61 +ENTRY(GetEIP) 
    1.62 +      pushl    %ebp
    1.63 +      movl     %esp,%ebp
    1.64 +      subl     $0x00000004,%esp
    1.65 +      movl     0x00000004(%ebp),%eax
    1.66 +      movl     %eax,0xfffffffc(%ebp)
    1.67 +      movl     0xfffffffc(%ebp),%eax
    1.68 +      leave    
    1.69 +      ret      
    1.70 +SET_SIZE(GetEIP)
    1.71 +
    1.72 +ENTRY(GetESP) 
    1.73 +      pushl    %ebp
    1.74 +      movl     %esp,%ebp
    1.75 +      subl     $0x00000004,%esp
    1.76 +      movl     %ebp,%eax
    1.77 +      movl     %eax,0xfffffffc(%ebp)
    1.78 +      movl     0xfffffffc(%ebp),%eax
    1.79 +      addl     $0x00000008,%eax
    1.80 +      leave    
    1.81 +      ret      
    1.82 +SET_SIZE(GetESP)
    1.83 +
    1.84 +
    1.85 +#elif defined(__sparc)
    1.86 +
    1.87 +
    1.88 +ENTRY(GetPC)
    1.89 +      save     %sp, -120, %sp
    1.90 +      mov      %i7, %i4
    1.91 +      inccc    8, %i4
    1.92 +      mov      %i4, %i0
    1.93 +      ret      
    1.94 +      restore  
    1.95 +SET_SIZE(GetPC)
    1.96 +
    1.97 +ENTRY(GetSP)
    1.98 +      save     %sp, -120, %sp
    1.99 +      mov      %fp, %i4
   1.100 +      mov      %i4, %i0
   1.101 +      ret      
   1.102 +      restore  
   1.103 +SET_SIZE(GetSP)
   1.104 +
   1.105 +ENTRY(GetFP)
   1.106 +      save     %sp, -120, %sp
   1.107 +      ld       [%fp + 56], %g1
   1.108 +      mov      %g1, %i0
   1.109 +      ret      
   1.110 +      restore  
   1.111 +SET_SIZE(GetFP)
   1.112 +
   1.113 +
   1.114 +#endif  // __i386 || __sparc

mercurial