mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-26 05:20:30 +00:00
b5ddc1014c
* xm-hppah.h: if __STDC__ is not defined, define HPPA_COMPILER_BUG. symtab.c (decode_line_1): avoid a bug in the HP9000/700 native compiler; see the comment in the file. Here's the comment from the file: /* FIXME: The native HP 9000/700 compiler has a bug which appears when optimizing this file with target i960-vxworks. I haven't been able to construct a simple test case. The problem is that in the second call to SKIP_PROLOGUE below, the compiler somehow does not realize that the statement val = find_pc_line (...) will change the values of the fields of val. It extracts the elements into registers at the top of the block, and does not update the registers after the call to find_pc_line. You can check this by inserting a printf at the end of find_pc_line to show what values it is returning for val.pc and val.end and another printf after the call to see what values the function actually got (remember, this is compiling with cc -O, with this patch removed). You can also examine the assembly listing: search for the second call to skip_prologue; the LDO statement before the next call to find_pc_line loads the address of the structure which find_pc_line will return; if there is a LDW just before the LDO, which fetches an element of the structure, then the compiler still has the bug. */
58 lines
1.8 KiB
C
58 lines
1.8 KiB
C
/* Parameters for hosting on an HPPA-RISC machine running HPUX, for GDB.
|
|
Copyright 1991, 1992 Free Software Foundation, Inc.
|
|
|
|
Contributed by the Center for Software Science at the
|
|
University of Utah (pa-gdb-bugs@cs.utah.edu).
|
|
|
|
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
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|
|
|
/* Host is big-endian. */
|
|
#define HOST_BYTE_ORDER BIG_ENDIAN
|
|
|
|
/* Avoid "INT_MIN redefined" warnings -- by defining it here, exactly
|
|
the same as in the system <machine/machtypes.h> file. */
|
|
#undef INT_MIN
|
|
#define INT_MIN 0x80000000
|
|
|
|
#ifndef hp800
|
|
#define USG
|
|
#endif
|
|
|
|
#ifndef __STDC__
|
|
/* This define is discussed in decode_line_1 in symtab.c */
|
|
#define HPPA_COMPILER_BUG
|
|
#endif
|
|
|
|
#define HAVE_TERMIO
|
|
|
|
#define KERNEL_U_ADDR 0
|
|
|
|
/* What a coincidence! */
|
|
#define REGISTER_U_ADDR(addr, blockend, regno) \
|
|
{ addr = (int)(blockend) + REGISTER_BYTE (regno);}
|
|
|
|
#define U_REGS_OFFSET 0
|
|
|
|
/* HP uses non-ANSI definitions, but with void * results. */
|
|
#define MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
|
|
extern void *
|
|
memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
|
|
|
|
extern void *
|
|
memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
|
|
|