1993-03-23 01:19:58 +00:00
|
|
|
/* Macro definitions for GDB for a Sun 4 running Solaris 2
|
1998-04-11 05:43:33 +00:00
|
|
|
Copyright 1989, 1992, 1993, 1994, 1995, 1997, 1998
|
|
|
|
Free Software Foundation, Inc.
|
1993-03-23 01:19:58 +00:00
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
1995-08-02 03:41:12 +00:00
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
1993-03-23 01:19:58 +00:00
|
|
|
|
|
|
|
#include "sparc/tm-sparc.h"
|
|
|
|
#include "tm-sysv4.h"
|
1994-01-22 09:41:47 +00:00
|
|
|
|
1994-03-01 21:20:19 +00:00
|
|
|
/* There are two different signal handler trampolines in Solaris2. */
|
|
|
|
#define IN_SIGTRAMP(pc, name) \
|
|
|
|
((name) \
|
|
|
|
&& (STREQ ("sigacthandler", name) || STREQ ("ucbsigvechandler", name)))
|
1994-01-22 09:41:47 +00:00
|
|
|
|
1994-03-01 21:20:19 +00:00
|
|
|
/* The signal handler gets a pointer to an ucontext as third argument
|
|
|
|
if it is called from sigacthandler. This is the offset to the saved
|
|
|
|
PC within it. sparc_frame_saved_pc knows how to deal with
|
|
|
|
ucbsigvechandler. */
|
1994-01-22 09:41:47 +00:00
|
|
|
#define SIGCONTEXT_PC_OFFSET 44
|
1993-03-31 00:29:22 +00:00
|
|
|
|
1993-03-23 01:19:58 +00:00
|
|
|
#if 0 /* FIXME Setjmp/longjmp are not as well doc'd in SunOS 5.x yet */
|
|
|
|
|
|
|
|
/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a
|
|
|
|
comment in <machine/setjmp.h>! */
|
|
|
|
|
|
|
|
#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */
|
|
|
|
|
|
|
|
#define JB_ONSSTACK 0
|
|
|
|
#define JB_SIGMASK 1
|
|
|
|
#define JB_SP 2
|
|
|
|
#define JB_PC 3
|
|
|
|
#define JB_NPC 4
|
|
|
|
#define JB_PSR 5
|
|
|
|
#define JB_G1 6
|
|
|
|
#define JB_O0 7
|
|
|
|
#define JB_WBCNT 8
|
|
|
|
|
|
|
|
/* Figure out where the longjmp will land. We expect that we have just entered
|
|
|
|
longjmp and haven't yet setup the stack frame, so the args are still in the
|
|
|
|
output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we
|
|
|
|
extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
|
|
|
|
This routine returns true on success */
|
|
|
|
|
|
|
|
extern int
|
|
|
|
get_longjmp_target PARAMS ((CORE_ADDR *));
|
|
|
|
|
|
|
|
#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
|
|
|
|
#endif /* 0 */
|
1994-01-21 17:53:57 +00:00
|
|
|
|
* config/sparc/tm-sun4sol2.h, dbxread.c: Rename
N_SO_ADDRESS_MAYBE_MISSING to SOFUN_ADDRESS_MAYBE_MISSING.
* symtab.h (minimal_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]: Add
filename field.
* elfread.c (record_minimal_symbol_and_info),
minsyms.c, symtab.h (prim_record_minimal_symbol_and_info): Return
newly created symbol.
* elfread.c (elf_symtab_read) [SOFUN_ADDRESS_MAYBE_MISSING]:
Set filename field of minimal symbol.
* symmisc.c (dump_msymbols) [SOFUN_ADDRESS_MAYBE_MISSING]:
Print filename field.
* minsyms.c, symtab.h (lookup_minimal_symbol): New arg sfile.
* symm-tdep.c, somsolib.c, hppa-tdep.c, c-exp.y, f-exp.y,
m2-exp.y, nindy-tdep.c, m3-nat.c, irix5-nat.c, hpread.c,
os9kread.c, breakpoint.c, alpha-tdep.c, valops.c, symtab.c,
printcmd.c, dbxread.c: Change callers to pass NULL for sfile.
* dbxread.c (process_one_symbol) [SOFUN_ADDRESS_MAYBE_MISSING]:
Find address of function from minimal symbols.
* partial-stab.h, case 'f', 'F': Call find_stab_function_addr
instead of getting pst->textlow from the stab.
* minsyms.c (find_stab_function_addr): New function.
1995-02-09 07:00:45 +00:00
|
|
|
/* The SunPRO compiler puts out 0 instead of the address in N_SO symbols,
|
|
|
|
and for SunPRO 3.0, N_FUN symbols too. */
|
|
|
|
#define SOFUN_ADDRESS_MAYBE_MISSING
|
1994-05-03 15:13:26 +00:00
|
|
|
|
1995-03-25 09:25:06 +00:00
|
|
|
extern char *sunpro_static_transform_name PARAMS ((char *));
|
|
|
|
#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
|
1998-04-11 05:43:33 +00:00
|
|
|
#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$')
|
1995-02-09 20:21:46 +00:00
|
|
|
|
1994-05-03 15:13:26 +00:00
|
|
|
#define FAULTED_USE_SIGINFO
|
1994-07-02 08:55:43 +00:00
|
|
|
|
|
|
|
/* Enable handling of shared libraries for a.out executables. */
|
|
|
|
#define HANDLE_SVR4_EXEC_EMULATORS
|
1996-05-06 21:27:37 +00:00
|
|
|
|
|
|
|
/* Macros to extract process id and thread id from a composite pid/tid */
|
|
|
|
#define PIDGET(pid) ((pid) & 0xffff)
|
|
|
|
#define TIDGET(pid) (((pid) >> 16) & 0xffff)
|
|
|
|
|
1998-04-11 05:43:33 +00:00
|
|
|
/* Macro to extract carry from given regset. */
|
|
|
|
#define PROCFS_GET_CARRY(regset) ((regset)[R_PSR] & PS_FLAG_CARRY)
|
|
|
|
|
1996-05-14 07:02:56 +00:00
|
|
|
#ifdef HAVE_THREAD_DB_LIB
|
|
|
|
|
1996-05-06 21:27:37 +00:00
|
|
|
extern char *solaris_pid_to_str PARAMS ((int pid));
|
|
|
|
#define target_pid_to_str(PID) solaris_pid_to_str (PID)
|
1996-05-14 07:02:56 +00:00
|
|
|
|
1996-05-15 01:09:57 +00:00
|
|
|
#else
|
|
|
|
|
|
|
|
extern char *procfs_pid_to_str PARAMS ((int pid));
|
|
|
|
#define target_pid_to_str(PID) procfs_pid_to_str (PID)
|
|
|
|
|
1996-05-14 07:02:56 +00:00
|
|
|
#endif
|