mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 05:47:26 +08:00
* configure.in: Recognize aix4 specially as some aspects
of aix4 need different handling than aix3. * configure: Updated. * config/powerpc/{aix4.mh,aix4.mt,tm-ppc-aix4.h}: New files specific to aix4 support on the power pc. * config/powerpc/tm-ppc-aix.h (DONT_RELOCATE_SYMFILE_OBJFILE): Do not defined. The aix4 specific target files will do that. * config/rs6000/{aix4,mh,aix4,mt,tm-rs6000-aix4.h}: New files specific to aix4 support on the rs6000. * config/rs6000/tm-rs6000.h (CONVERT_FROM_FUNC_PTR_ADDR): Don't do the conversion if the pointer is not a magic aix function pointer. * rs6000-tdep.c: Include objfiles.h and symtab.h. (is_magic_function_pointer): New function. * rs6000-tdep.c (skip_prologue): Refine check for frameless functions. Handle b .+4 emitted by aix4 compilers. Only allow one load of a minimal toc pointer. Handle aix4 compiler's code for alloca. * rs6000-tdep.c (find_toc_address): Report an error if no toc was found rather than possibly core dumping. * partial-stab.h: Handle extra field generated by the aix4 compiler for enumerations. * stabsread.c (read_enum_type): Likewise.
This commit is contained in:
@ -1,3 +1,33 @@
|
|||||||
|
Sat Aug 12 15:34:54 1995 Jeffrey A. Law <law@rtl.cygnus.com>
|
||||||
|
|
||||||
|
* configure.in: Recognize aix4 specially as some aspects
|
||||||
|
of aix4 need different handling than aix3.
|
||||||
|
* configure: Updated.
|
||||||
|
* config/powerpc/{aix4.mh,aix4.mt,tm-ppc-aix4.h}: New files
|
||||||
|
specific to aix4 support on the power pc.
|
||||||
|
* config/powerpc/tm-ppc-aix.h (DONT_RELOCATE_SYMFILE_OBJFILE): Do
|
||||||
|
not defined. The aix4 specific target files will do that.
|
||||||
|
* config/rs6000/{aix4,mh,aix4,mt,tm-rs6000-aix4.h}: New files
|
||||||
|
specific to aix4 support on the rs6000.
|
||||||
|
|
||||||
|
* config/rs6000/tm-rs6000.h (CONVERT_FROM_FUNC_PTR_ADDR): Don't
|
||||||
|
do the conversion if the pointer is not a magic aix function
|
||||||
|
pointer.
|
||||||
|
* rs6000-tdep.c: Include objfiles.h and symtab.h.
|
||||||
|
(is_magic_function_pointer): New function.
|
||||||
|
|
||||||
|
* rs6000-tdep.c (skip_prologue): Refine check for frameless
|
||||||
|
functions. Handle b .+4 emitted by aix4 compilers. Only
|
||||||
|
allow one load of a minimal toc pointer. Handle aix4 compiler's
|
||||||
|
code for alloca.
|
||||||
|
|
||||||
|
* rs6000-tdep.c (find_toc_address): Report an error if no toc was
|
||||||
|
found rather than possibly core dumping.
|
||||||
|
|
||||||
|
* partial-satb.h: Handle extra field generated by the aix4 compiler
|
||||||
|
for enumerations.
|
||||||
|
* stabsread.c (read_enum_type): Likewise.
|
||||||
|
|
||||||
Sat Aug 12 03:18:04 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
|
Sat Aug 12 03:18:04 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
|
||||||
|
|
||||||
* rs6000-tdep.c (extract_return_value): Fix returning of values
|
* rs6000-tdep.c (extract_return_value): Fix returning of values
|
||||||
|
@ -23,12 +23,15 @@ Things-to-keep:
|
|||||||
|
|
||||||
aix.mh
|
aix.mh
|
||||||
aix.mt
|
aix.mt
|
||||||
|
aix4.mh
|
||||||
|
aix4.mt
|
||||||
gdbserve.mt
|
gdbserve.mt
|
||||||
nm-aix.h
|
nm-aix.h
|
||||||
ppc-eabi.mt
|
ppc-eabi.mt
|
||||||
ppc-nw.mt
|
ppc-nw.mt
|
||||||
ppcle-eabi.mt
|
ppcle-eabi.mt
|
||||||
tm-ppc-aix.h
|
tm-ppc-aix.h
|
||||||
|
tm-ppc-aix4.h
|
||||||
tm-ppc-eabi.h
|
tm-ppc-eabi.h
|
||||||
tm-ppc-nw.h
|
tm-ppc-nw.h
|
||||||
tm-ppcle-eabi.h
|
tm-ppcle-eabi.h
|
||||||
|
24
gdb/config/powerpc/aix4.mh
Normal file
24
gdb/config/powerpc/aix4.mh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Host: IBM PowerPC running AIX4
|
||||||
|
|
||||||
|
XM_FILE= xm-aix.h
|
||||||
|
XDEPFILES=
|
||||||
|
|
||||||
|
NAT_FILE= nm-aix.h
|
||||||
|
NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o rs6000-nat.o xcoffread.o
|
||||||
|
|
||||||
|
# When compiled with cc, for debugging, this argument should be passed.
|
||||||
|
# We have no idea who our current compiler is though, so we skip it.
|
||||||
|
# MH_CFLAGS = -bnodelcsect
|
||||||
|
|
||||||
|
# Because of shared libraries, we risk ending up with *two*
|
||||||
|
# incompatible versions of malloc if we use GNU malloc ...
|
||||||
|
MMALLOC =
|
||||||
|
MMALLOC_DISABLE = -DNO_MMALLOC
|
||||||
|
|
||||||
|
# A bug in the AIX 3.2 libc.a results in unresolved references for .scalb and
|
||||||
|
# .finite because we call ldexp via floatformat. Circumvent by adding -lm.
|
||||||
|
XM_CLIBS= -lm
|
||||||
|
|
||||||
|
# Rumor has it that libtermcap is "not really functional", and that
|
||||||
|
# -lcurses is better.
|
||||||
|
TERMCAP= -lcurses
|
3
gdb/config/powerpc/aix4.mt
Normal file
3
gdb/config/powerpc/aix4.mt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Target: PowerPC running AIX4
|
||||||
|
TDEPFILES= rs6000-tdep.o xcoffsolib.o
|
||||||
|
TM_FILE= tm-ppc-aix4.h
|
@ -20,9 +20,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||||||
#ifndef TM_PPC_AIX_H
|
#ifndef TM_PPC_AIX_H
|
||||||
#define TM_PPC_AIX_H
|
#define TM_PPC_AIX_H
|
||||||
|
|
||||||
/* The main executable doesn't need relocation in aix4. */
|
|
||||||
#define DONT_RELOCATE_SYMFILE_OBJFILE
|
|
||||||
|
|
||||||
/* Use generic RS6000 definitions. */
|
/* Use generic RS6000 definitions. */
|
||||||
#include "rs6000/tm-rs6000.h"
|
#include "rs6000/tm-rs6000.h"
|
||||||
|
|
||||||
|
32
gdb/config/powerpc/tm-ppc-aix4.h
Normal file
32
gdb/config/powerpc/tm-ppc-aix4.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* Macro definitions for Power PC running AIX4.
|
||||||
|
Copyright 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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. */
|
||||||
|
|
||||||
|
#ifndef TM_PPC_AIX4_H
|
||||||
|
#define TM_PPC_AIX4_H
|
||||||
|
|
||||||
|
/* The main executable doesn't need relocation in aix4. Otherwise
|
||||||
|
it looks just like any other AIX system. */
|
||||||
|
#define DONT_RELOCATE_SYMFILE_OBJFILE
|
||||||
|
|
||||||
|
/* Use generic RS6000 definitions. */
|
||||||
|
#include "rs6000/tm-rs6000.h"
|
||||||
|
|
||||||
|
#define GDB_TARGET_POWERPC
|
||||||
|
|
||||||
|
#endif /* TM_PPC_AIX4_H */
|
@ -21,6 +21,8 @@ Do-first:
|
|||||||
|
|
||||||
Things-to-keep:
|
Things-to-keep:
|
||||||
|
|
||||||
|
aix4.mh
|
||||||
|
aix4.mt
|
||||||
nm-rs6000.h
|
nm-rs6000.h
|
||||||
nm-rs6000ly.h
|
nm-rs6000ly.h
|
||||||
rs6000.mh
|
rs6000.mh
|
||||||
@ -29,6 +31,7 @@ rs6000.mt
|
|||||||
rs6000lynx.mt
|
rs6000lynx.mt
|
||||||
tm-rs6000.h
|
tm-rs6000.h
|
||||||
tm-rs6000ly.h
|
tm-rs6000ly.h
|
||||||
|
tm-rs6000-aix4.h
|
||||||
xm-rs6000.h
|
xm-rs6000.h
|
||||||
xm-rs6000ly.h
|
xm-rs6000ly.h
|
||||||
|
|
||||||
|
24
gdb/config/rs6000/aix4.mh
Normal file
24
gdb/config/rs6000/aix4.mh
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Host: IBM RS/6000 running AIX4
|
||||||
|
|
||||||
|
XM_FILE= xm-rs6000.h
|
||||||
|
XDEPFILES=
|
||||||
|
|
||||||
|
NAT_FILE= nm-rs6000.h
|
||||||
|
NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o rs6000-nat.o xcoffread.o
|
||||||
|
|
||||||
|
# When compiled with cc, for debugging, this argument should be passed.
|
||||||
|
# We have no idea who our current compiler is though, so we skip it.
|
||||||
|
# MH_CFLAGS = -bnodelcsect
|
||||||
|
|
||||||
|
# Because of shared libraries, we risk ending up with *two*
|
||||||
|
# incompatible versions of malloc if we use GNU malloc ...
|
||||||
|
MMALLOC =
|
||||||
|
MMALLOC_DISABLE = -DNO_MMALLOC
|
||||||
|
|
||||||
|
# A bug in the AIX 3.2 libc.a results in unresolved references for .scalb and
|
||||||
|
# .finite because we call ldexp via floatformat. Circumvent by adding -lm.
|
||||||
|
XM_CLIBS= -lm
|
||||||
|
|
||||||
|
# Rumor has it that libtermcap is "not really functional", and that
|
||||||
|
# -lcurses is better.
|
||||||
|
TERMCAP= -lcurses
|
3
gdb/config/rs6000/aix4.mt
Normal file
3
gdb/config/rs6000/aix4.mt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Target: IBM RS/6000 running AIX4
|
||||||
|
TDEPFILES= rs6000-tdep.o xcoffsolib.o
|
||||||
|
TM_FILE= tm-rs6000-aix4.h
|
29
gdb/config/rs6000/tm-rs6000-aix4.h
Normal file
29
gdb/config/rs6000/tm-rs6000-aix4.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/* Macro definitions for RS/6000 running AIX4.
|
||||||
|
Copyright 1995 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
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. */
|
||||||
|
|
||||||
|
#ifndef TM_RS6000_AIX4_H
|
||||||
|
#define TM_RS6000_AIX4_H
|
||||||
|
|
||||||
|
/* The main executable doesn't need relocation in aix4. */
|
||||||
|
#define DONT_RELOCATE_SYMFILE_OBJFILE
|
||||||
|
|
||||||
|
/* Use generic RS6000 definitions. */
|
||||||
|
#include "rs6000/tm-rs6000.h"
|
||||||
|
|
||||||
|
#endif /* TM_RS6000_AIX4_H */
|
2
gdb/configure
vendored
2
gdb/configure
vendored
@ -2139,6 +2139,7 @@ pn-*-*) gdb_target=pn ;;
|
|||||||
powerpc-*-netware*) gdb_target=ppc-nw
|
powerpc-*-netware*) gdb_target=ppc-nw
|
||||||
configdirs="${configdirs} nlm" ;;
|
configdirs="${configdirs} nlm" ;;
|
||||||
|
|
||||||
|
powerpc-*-aix4*) gdb_target=aix4 ;;
|
||||||
powerpc-*-aix*) gdb_target=aix ;;
|
powerpc-*-aix*) gdb_target=aix ;;
|
||||||
powerpc-*-eabi*) gdb_target=ppc-eabi ;;
|
powerpc-*-eabi*) gdb_target=ppc-eabi ;;
|
||||||
powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
||||||
@ -2146,6 +2147,7 @@ powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
|||||||
pyramid-*-*) gdb_target=pyramid ;;
|
pyramid-*-*) gdb_target=pyramid ;;
|
||||||
|
|
||||||
rs6000-*-lynxos*) gdb_target=rs6000lynx ;;
|
rs6000-*-lynxos*) gdb_target=rs6000lynx ;;
|
||||||
|
rs6000-*-aix4*) gdb_target=aix4 ;;
|
||||||
rs6000-*-*) gdb_target=rs6000 ;;
|
rs6000-*-*) gdb_target=rs6000 ;;
|
||||||
|
|
||||||
sparc-*-aout*) gdb_target=sparc-em ;;
|
sparc-*-aout*) gdb_target=sparc-em ;;
|
||||||
|
@ -379,6 +379,7 @@ pn-*-*) gdb_target=pn ;;
|
|||||||
powerpc-*-netware*) gdb_target=ppc-nw
|
powerpc-*-netware*) gdb_target=ppc-nw
|
||||||
configdirs="${configdirs} nlm" ;;
|
configdirs="${configdirs} nlm" ;;
|
||||||
|
|
||||||
|
powerpc-*-aix4*) gdb_target=aix4 ;;
|
||||||
powerpc-*-aix*) gdb_target=aix ;;
|
powerpc-*-aix*) gdb_target=aix ;;
|
||||||
powerpc-*-eabi*) gdb_target=ppc-eabi ;;
|
powerpc-*-eabi*) gdb_target=ppc-eabi ;;
|
||||||
powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
||||||
@ -386,6 +387,7 @@ powerpcle-*-eabi*) gdb_target=ppcle-eabi ;;
|
|||||||
pyramid-*-*) gdb_target=pyramid ;;
|
pyramid-*-*) gdb_target=pyramid ;;
|
||||||
|
|
||||||
rs6000-*-lynxos*) gdb_target=rs6000lynx ;;
|
rs6000-*-lynxos*) gdb_target=rs6000lynx ;;
|
||||||
|
rs6000-*-aix4*) gdb_target=aix4 ;;
|
||||||
rs6000-*-*) gdb_target=rs6000 ;;
|
rs6000-*-*) gdb_target=rs6000 ;;
|
||||||
|
|
||||||
sparc-*-aout*) gdb_target=sparc-em ;;
|
sparc-*-aout*) gdb_target=sparc-em ;;
|
||||||
|
@ -484,6 +484,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
if (*p++ == 'e')
|
if (*p++ == 'e')
|
||||||
{
|
{
|
||||||
|
/* The aix4 compiler emits extra crud before the members. */
|
||||||
|
if (*p == '-')
|
||||||
|
{
|
||||||
|
/* Skip over the type (?). */
|
||||||
|
while (*p != ':')
|
||||||
|
p++;
|
||||||
|
|
||||||
|
/* Skip over the colon. */
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
/* We have found an enumerated type. */
|
/* We have found an enumerated type. */
|
||||||
/* According to comments in read_enum_type
|
/* According to comments in read_enum_type
|
||||||
a comma could end it instead of a semicolon.
|
a comma could end it instead of a semicolon.
|
||||||
|
@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "target.h"
|
#include "target.h"
|
||||||
#include "gdbcore.h"
|
#include "gdbcore.h"
|
||||||
|
#include "symfile.h"
|
||||||
|
#include "objfiles.h"
|
||||||
|
|
||||||
#include "xcoffsolib.h"
|
#include "xcoffsolib.h"
|
||||||
|
|
||||||
@ -214,6 +216,7 @@ skip_prologue (pc, fdata)
|
|||||||
int cr_reg = 0;
|
int cr_reg = 0;
|
||||||
int reg;
|
int reg;
|
||||||
int framep = 0;
|
int framep = 0;
|
||||||
|
int minimal_toc_loaded = 0;
|
||||||
static struct rs6000_framedata zero_frame;
|
static struct rs6000_framedata zero_frame;
|
||||||
|
|
||||||
*fdata = zero_frame;
|
*fdata = zero_frame;
|
||||||
@ -262,10 +265,12 @@ skip_prologue (pc, fdata)
|
|||||||
|
|
||||||
} else if ((op & 0xffff0000) == 0x3c000000) { /* addis 0,0,NUM, used for >= 32k frames */
|
} else if ((op & 0xffff0000) == 0x3c000000) { /* addis 0,0,NUM, used for >= 32k frames */
|
||||||
fdata->offset = (op & 0x0000ffff) << 16;
|
fdata->offset = (op & 0x0000ffff) << 16;
|
||||||
|
fdata->frameless = 0;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
} else if ((op & 0xffff0000) == 0x60000000) { /* ori 0,0,NUM, 2nd half of >= 32k frames */
|
} else if ((op & 0xffff0000) == 0x60000000) { /* ori 0,0,NUM, 2nd half of >= 32k frames */
|
||||||
fdata->offset |= (op & 0x0000ffff);
|
fdata->offset |= (op & 0x0000ffff);
|
||||||
|
fdata->frameless = 0;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
} else if ((op & 0xffff0000) == lr_reg) { /* st Rx,NUM(r1) where Rx == lr */
|
} else if ((op & 0xffff0000) == lr_reg) { /* st Rx,NUM(r1) where Rx == lr */
|
||||||
@ -282,6 +287,9 @@ skip_prologue (pc, fdata)
|
|||||||
} else if (op == 0x48000005) { /* bl .+4 used in -mrelocatable */
|
} else if (op == 0x48000005) { /* bl .+4 used in -mrelocatable */
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
} else if (op == 0x48000004) { /* b .+4 (xlc) */
|
||||||
|
break;
|
||||||
|
|
||||||
} else if (((op & 0xffff0000) == 0x801e0000 || /* lwz 0,NUM(r30), used in V.4 -mrelocatable */
|
} else if (((op & 0xffff0000) == 0x801e0000 || /* lwz 0,NUM(r30), used in V.4 -mrelocatable */
|
||||||
op == 0x7fc0f214) && /* add r30,r0,r30, used in V.4 -mrelocatable */
|
op == 0x7fc0f214) && /* add r30,r0,r30, used in V.4 -mrelocatable */
|
||||||
lr_reg == 0x901e0000) {
|
lr_reg == 0x901e0000) {
|
||||||
@ -293,6 +301,7 @@ skip_prologue (pc, fdata)
|
|||||||
|
|
||||||
} else if ((op & 0xfc000000) == 0x48000000) { /* bl foo, to save fprs??? */
|
} else if ((op & 0xfc000000) == 0x48000000) { /* bl foo, to save fprs??? */
|
||||||
|
|
||||||
|
fdata->frameless = 0;
|
||||||
/* Don't skip over the subroutine call if it is not within the first
|
/* Don't skip over the subroutine call if it is not within the first
|
||||||
three instructions of the prologue. */
|
three instructions of the prologue. */
|
||||||
if ((pc - orig_pc) > 8)
|
if ((pc - orig_pc) > 8)
|
||||||
@ -312,16 +321,20 @@ skip_prologue (pc, fdata)
|
|||||||
|
|
||||||
/* update stack pointer */
|
/* update stack pointer */
|
||||||
} else if ((op & 0xffff0000) == 0x94210000) { /* stu r1,NUM(r1) */
|
} else if ((op & 0xffff0000) == 0x94210000) { /* stu r1,NUM(r1) */
|
||||||
|
fdata->frameless = 0;
|
||||||
fdata->offset = SIGNED_SHORT (op);
|
fdata->offset = SIGNED_SHORT (op);
|
||||||
offset = fdata->offset;
|
offset = fdata->offset;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
} else if (op == 0x7c21016e) { /* stwux 1,1,0 */
|
} else if (op == 0x7c21016e) { /* stwux 1,1,0 */
|
||||||
|
fdata->frameless = 0;
|
||||||
offset = fdata->offset;
|
offset = fdata->offset;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Load up minimal toc pointer */
|
/* Load up minimal toc pointer */
|
||||||
} else if ((op >> 22) == 0x20f) { /* l r31,... or l r30,... */
|
} else if ((op >> 22) == 0x20f
|
||||||
|
&& ! minimal_toc_loaded) { /* l r31,... or l r30,... */
|
||||||
|
minimal_toc_loaded = 1;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* store parameters in stack */
|
/* store parameters in stack */
|
||||||
@ -340,10 +353,18 @@ skip_prologue (pc, fdata)
|
|||||||
/* Set up frame pointer */
|
/* Set up frame pointer */
|
||||||
} else if (op == 0x603f0000 /* oril r31, r1, 0x0 */
|
} else if (op == 0x603f0000 /* oril r31, r1, 0x0 */
|
||||||
|| op == 0x7c3f0b78) { /* mr r31, r1 */
|
|| op == 0x7c3f0b78) { /* mr r31, r1 */
|
||||||
|
fdata->frameless = 0;
|
||||||
framep = 1;
|
framep = 1;
|
||||||
fdata->alloca_reg = 31;
|
fdata->alloca_reg = 31;
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
/* Another way to set up the frame pointer. */
|
||||||
|
} else if ((op & 0xfc1fffff) == 0x38010000) { /* addi rX, r1, 0x0 */
|
||||||
|
fdata->frameless = 0;
|
||||||
|
framep = 1;
|
||||||
|
fdata->alloca_reg = (op & ~0x38010000) >> 21;
|
||||||
|
continue;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -376,7 +397,6 @@ skip_prologue (pc, fdata)
|
|||||||
}
|
}
|
||||||
#endif /* 0 */
|
#endif /* 0 */
|
||||||
|
|
||||||
fdata->frameless = (pc == orig_pc);
|
|
||||||
fdata->offset = - fdata->offset;
|
fdata->offset = - fdata->offset;
|
||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
@ -1194,15 +1214,34 @@ find_toc_address (pc)
|
|||||||
{
|
{
|
||||||
int ii, toc_entry, tocbase = 0;
|
int ii, toc_entry, tocbase = 0;
|
||||||
|
|
||||||
|
toc_entry = -1;
|
||||||
for (ii=0; ii < loadinfotextindex; ++ii)
|
for (ii=0; ii < loadinfotextindex; ++ii)
|
||||||
if (pc > loadinfo[ii].textorg && loadinfo[ii].textorg > tocbase) {
|
if (pc > loadinfo[ii].textorg && loadinfo[ii].textorg > tocbase) {
|
||||||
toc_entry = ii;
|
toc_entry = ii;
|
||||||
tocbase = loadinfo[ii].textorg;
|
tocbase = loadinfo[ii].textorg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (toc_entry == -1)
|
||||||
|
error ("Unable to find TOC entry for pc 0x%x\n", pc);
|
||||||
return loadinfo[toc_entry].dataorg + loadinfo[toc_entry].toc_offset;
|
return loadinfo[toc_entry].dataorg + loadinfo[toc_entry].toc_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return nonzero if ADDR (a function pointer) is in the data space and
|
||||||
|
is therefore a special function pointer. */
|
||||||
|
|
||||||
|
int
|
||||||
|
is_magic_function_pointer (addr)
|
||||||
|
CORE_ADDR addr;
|
||||||
|
{
|
||||||
|
struct obj_section *s;
|
||||||
|
|
||||||
|
s = find_pc_section (addr);
|
||||||
|
if (s && s->the_bfd_section->flags & SEC_CODE)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef GDB_TARGET_POWERPC
|
#ifdef GDB_TARGET_POWERPC
|
||||||
int
|
int
|
||||||
gdb_print_insn_powerpc (memaddr, info)
|
gdb_print_insn_powerpc (memaddr, info)
|
||||||
|
@ -3073,6 +3073,18 @@ read_enum_type (pp, type, objfile)
|
|||||||
return error_type (pp);
|
return error_type (pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The aix4 compiler emits an extra field before the enum members;
|
||||||
|
my guess is it's a type of some sort. Just ignore it. */
|
||||||
|
if (**pp == '-')
|
||||||
|
{
|
||||||
|
/* Skip over the type. */
|
||||||
|
while (**pp != ':')
|
||||||
|
(*pp)++;
|
||||||
|
|
||||||
|
/* Skip over the colon. */
|
||||||
|
(*pp)++;
|
||||||
|
}
|
||||||
|
|
||||||
/* Read the value-names and their values.
|
/* Read the value-names and their values.
|
||||||
The input syntax is NAME:VALUE,NAME:VALUE, and so on.
|
The input syntax is NAME:VALUE,NAME:VALUE, and so on.
|
||||||
A semicolon or comma instead of a NAME means the end. */
|
A semicolon or comma instead of a NAME means the end. */
|
||||||
|
Reference in New Issue
Block a user