This commit is contained in:
parent
95f0a78342
commit
3fdbcb41f3
59
args-newline.diff
Normal file
59
args-newline.diff
Normal file
@ -0,0 +1,59 @@
|
||||
2008-09-12 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* infcmd.c (construct_inferior_arguments): Handle newlines
|
||||
specially.
|
||||
|
||||
testsuite/:
|
||||
* gdb.base/args.exp: Add tests for newlines.
|
||||
|
||||
--- gdb/infcmd.c.~1.211.~ 2008-09-12 11:12:15.000000000 +0200
|
||||
+++ gdb/infcmd.c 2008-09-12 16:25:48.000000000 +0200
|
||||
@@ -271,7 +271,7 @@ construct_inferior_arguments (struct gdb
|
||||
|
||||
/* We over-compute the size. It shouldn't matter. */
|
||||
for (i = 0; i < argc; ++i)
|
||||
- length += 2 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
|
||||
+ length += 3 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
|
||||
|
||||
result = (char *) xmalloc (length);
|
||||
out = result;
|
||||
@@ -291,9 +291,21 @@ construct_inferior_arguments (struct gdb
|
||||
{
|
||||
for (cp = argv[i]; *cp; ++cp)
|
||||
{
|
||||
- if (strchr (special, *cp) != NULL)
|
||||
- *out++ = '\\';
|
||||
- *out++ = *cp;
|
||||
+ if (*cp == '\n')
|
||||
+ {
|
||||
+ /* A newline cannot be quoted with a backslash (it
|
||||
+ just disappears), only by putting it inside
|
||||
+ quotes. */
|
||||
+ *out++ = '\'';
|
||||
+ *out++ = '\n';
|
||||
+ *out++ = '\'';
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (strchr (special, *cp) != NULL)
|
||||
+ *out++ = '\\';
|
||||
+ *out++ = *cp;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
--- gdb/testsuite/gdb.base/args.exp.~1.15.~ 2008-08-09 15:44:54.000000000 +0200
|
||||
+++ gdb/testsuite/gdb.base/args.exp 2008-09-12 16:11:20.000000000 +0200
|
||||
@@ -96,4 +96,12 @@ args_test "one empty (with single quotes
|
||||
set GDBFLAGS "-nx --args $binfile 1 '' '' 3"
|
||||
args_test "two empty (with single quotes)" {{1} {''} {''} {3}}
|
||||
|
||||
+# try with arguments containing literal newlines.
|
||||
+
|
||||
+set GDBFLAGS "-nx --args $binfile 1 {\n} 3"
|
||||
+args_test "one newline" {{1} {\\n} {3}}
|
||||
+
|
||||
+set GDBFLAGS "-nx --args $binfile 1 {\n} {\n} 3"
|
||||
+args_test "two newlines" {{1} {\\n} {\\n} {3}}
|
||||
+
|
||||
set GDBFLAGS $old_gdbflags
|
6012
cell-combined.diff
Normal file
6012
cell-combined.diff
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:01f907a21d8743e4c263887137fc19d5bb5aa4211aa5f3220981d121eca20a72
|
||||
size 15465207
|
3
gdb-6.8.50.20080912-cvs.tar.bz2
Normal file
3
gdb-6.8.50.20080912-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a111a5de16ce2b20aee06861152178301ebfac4112f87ccf9bfc9af92d1ac2fb
|
||||
size 15498271
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 12 11:36:50 CEST 2008 - schwab@suse.de
|
||||
|
||||
- Update to head of trunk.
|
||||
- Add Cell combined debugger patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 4 11:30:34 CEST 2008 - schwab@suse.de
|
||||
|
||||
|
11
gdb.spec
11
gdb.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package gdb (Version 6.8.50.20080904)
|
||||
# spec file for package gdb (Version 6.8.50.20080912)
|
||||
#
|
||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@ -36,12 +36,13 @@ Group: Development/Tools/Debuggers
|
||||
AutoReqProv: on
|
||||
PreReq: %{install_info_prereq}
|
||||
Summary: The GNU Debugger
|
||||
Version: 6.8.50.20080904
|
||||
Version: 6.8.50.20080912
|
||||
Release: 1
|
||||
%define sss -cvs
|
||||
Source: gdb-%{version}%{sss}.tar.bz2
|
||||
Patch: cell-combined.diff
|
||||
Patch1: find-pc-sect-line.diff
|
||||
Patch2: warn.patch
|
||||
Patch2: args-newline.diff
|
||||
Patch3: readline-5.1-random.patch
|
||||
Patch4: readnever.patch
|
||||
Patch5: gstack.patch
|
||||
@ -109,6 +110,7 @@ Authors:
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}%{sss}
|
||||
%patch -p1
|
||||
%patch1
|
||||
%patch2
|
||||
%patch3
|
||||
@ -192,6 +194,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Fri Sep 12 2008 schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
- Add Cell combined debugger patch.
|
||||
* Thu Sep 04 2008 schwab@suse.de
|
||||
- Update to head of trunk.
|
||||
* Fri Aug 15 2008 schwab@suse.de
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- gdb/breakpoint.c
|
||||
+++ gdb/breakpoint.c
|
||||
@@ -4045,6 +4045,7 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
@@ -4119,6 +4119,7 @@ describe_other_breakpoints (CORE_ADDR pc
|
||||
printf_filtered (" (thread %d)", b->thread);
|
||||
printf_filtered ("%s%s ",
|
||||
((b->enable_state == bp_disabled ||
|
||||
@ -8,7 +8,7 @@
|
||||
b->enable_state == bp_call_disabled)
|
||||
? " (disabled)"
|
||||
: b->enable_state == bp_permanent
|
||||
@@ -4120,6 +4121,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
@@ -4194,6 +4195,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
ALL_BP_LOCATIONS (b)
|
||||
if (b->owner->enable_state != bp_disabled
|
||||
&& b->owner->enable_state != bp_call_disabled
|
||||
@ -16,7 +16,7 @@
|
||||
&& b->enabled
|
||||
&& !b->shlib_disabled
|
||||
&& b->address == address /* address / overlay match */
|
||||
@@ -4155,6 +4157,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
@@ -4229,6 +4231,7 @@ check_duplicates_for (CORE_ADDR address,
|
||||
{
|
||||
if (b->owner->enable_state != bp_disabled
|
||||
&& b->owner->enable_state != bp_call_disabled
|
||||
@ -24,7 +24,7 @@
|
||||
&& b->enabled && !b->shlib_disabled
|
||||
&& b->address == address /* address / overlay match */
|
||||
&& (!overlay_debugging || b->section == section)
|
||||
@@ -4681,6 +4684,60 @@ disable_breakpoints_in_unloaded_shlib (s
|
||||
@@ -4760,6 +4763,60 @@ disable_breakpoints_in_unloaded_shlib (s
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,7 +85,7 @@
|
||||
static void
|
||||
create_fork_vfork_event_catchpoint (int tempflag, char *cond_string,
|
||||
enum bptype bp_kind)
|
||||
@@ -7432,6 +7489,7 @@ breakpoint_re_set_one (void *bint)
|
||||
@@ -7555,6 +7612,7 @@ breakpoint_re_set_one (void *bint)
|
||||
if (not_found
|
||||
&& (b->condition_not_parsed
|
||||
|| (b->loc && b->loc->shlib_disabled)
|
||||
@ -95,7 +95,7 @@
|
||||
|
||||
--- gdb/breakpoint.h
|
||||
+++ gdb/breakpoint.h
|
||||
@@ -144,6 +144,7 @@ enum enable_state
|
||||
@@ -142,6 +142,7 @@ enum enable_state
|
||||
automatically enabled and reset when the call
|
||||
"lands" (either completes, or stops at another
|
||||
eventpoint). */
|
||||
@ -103,7 +103,7 @@
|
||||
bp_permanent /* There is a breakpoint instruction hard-wired into
|
||||
the target's code. Don't try to write another
|
||||
breakpoint instruction on top of it, or restore
|
||||
@@ -827,6 +828,10 @@ extern void remove_thread_event_breakpoi
|
||||
@@ -842,6 +843,10 @@ extern void remove_thread_event_breakpoi
|
||||
|
||||
extern void disable_breakpoints_in_shlibs (void);
|
||||
|
||||
@ -116,7 +116,7 @@
|
||||
|
||||
--- gdb/dwarf2read.c
|
||||
+++ gdb/dwarf2read.c
|
||||
@@ -1256,7 +1256,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
@@ -1257,7 +1257,7 @@ dwarf2_build_psymtabs (struct objfile *o
|
||||
else
|
||||
dwarf2_per_objfile->loc_buffer = NULL;
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
{
|
||||
--- gdb/elfread.c
|
||||
+++ gdb/elfread.c
|
||||
@@ -678,7 +678,7 @@ elf_symfile_read (struct objfile *objfil
|
||||
@@ -680,7 +680,7 @@ elf_symfile_read (struct objfile *objfil
|
||||
/* If we are reinitializing, or if we have never loaded syms yet,
|
||||
set table to empty. MAINLINE is cleared so that *_read_psymtab
|
||||
functions do not all also re-initialize the psymbol table. */
|
||||
@ -138,7 +138,7 @@
|
||||
mainline = 0;
|
||||
--- gdb/infrun.c
|
||||
+++ gdb/infrun.c
|
||||
@@ -1806,6 +1806,11 @@ handle_inferior_event (struct execution_
|
||||
@@ -1958,6 +1958,11 @@ handle_inferior_event (struct execution_
|
||||
#endif
|
||||
target_terminal_inferior ();
|
||||
|
||||
@ -161,7 +161,7 @@
|
||||
|
||||
/* Prototypes for local functions */
|
||||
|
||||
@@ -278,7 +280,16 @@ init_entry_point_info (struct objfile *o
|
||||
@@ -271,7 +273,16 @@ init_entry_point_info (struct objfile *o
|
||||
CORE_ADDR
|
||||
entry_point_address (void)
|
||||
{
|
||||
@ -186,10 +186,10 @@
|
||||
#include "target.h"
|
||||
#include "inferior.h"
|
||||
+#include "command.h"
|
||||
#include "gdbthread.h"
|
||||
|
||||
#include "gdb_assert.h"
|
||||
|
||||
@@ -280,8 +281,6 @@ static char *debug_loader_name;
|
||||
@@ -286,8 +287,6 @@ static CORE_ADDR main_lm_addr;
|
||||
|
||||
/* Local function prototypes */
|
||||
|
||||
@ -198,7 +198,7 @@
|
||||
static CORE_ADDR bfd_lookup_symbol (bfd *, char *);
|
||||
|
||||
/*
|
||||
@@ -387,6 +386,8 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
@@ -524,6 +523,8 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
Elf32_External_Dyn *x_dynp_32;
|
||||
Elf64_External_Dyn *x_dynp_64;
|
||||
struct bfd_section *sect;
|
||||
@ -207,7 +207,7 @@
|
||||
|
||||
if (abfd == NULL)
|
||||
return 0;
|
||||
@@ -394,11 +395,20 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
@@ -531,11 +532,20 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
if (arch_size == -1)
|
||||
return 0;
|
||||
|
||||
@ -228,16 +228,16 @@
|
||||
|
||||
/* Read in .dynamic from the BFD. We will get the actual value
|
||||
from memory later. */
|
||||
@@ -438,7 +448,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
gdb_byte ptr_buf[8];
|
||||
@@ -577,7 +587,7 @@ scan_dyntag (int dyntag, bfd *abfd, CORE
|
||||
CORE_ADDR ptr_addr;
|
||||
|
||||
ptr_type = builtin_type (target_gdbarch)->builtin_data_ptr;
|
||||
- ptr_addr = dyn_addr + (buf - bufstart) + arch_size / 8;
|
||||
+ ptr_addr = relocated_dyn_addr + (buf - bufstart) + arch_size / 8;
|
||||
if (target_read_memory (ptr_addr, ptr_buf, arch_size / 8) == 0)
|
||||
dyn_ptr = extract_typed_address (ptr_buf,
|
||||
builtin_type_void_data_ptr);
|
||||
@@ -793,11 +803,55 @@ svr4_current_sos (void)
|
||||
dyn_ptr = extract_typed_address (ptr_buf, ptr_type);
|
||||
*ptr = dyn_ptr;
|
||||
@@ -983,11 +993,55 @@ svr4_current_sos (void)
|
||||
decide when to ignore it. */
|
||||
if (IGNORE_FIRST_LINK_MAP_ENTRY (new) && ldsomap == 0)
|
||||
{
|
||||
@ -294,7 +294,7 @@
|
||||
int errcode;
|
||||
char *buffer;
|
||||
|
||||
@@ -804,10 +860,8 @@ svr4_current_sos (void)
|
||||
@@ -1005,10 +1059,8 @@ svr4_current_sos (void)
|
||||
}
|
||||
xfree (buffer);
|
||||
|
||||
@ -307,7 +307,7 @@
|
||||
free_so (new);
|
||||
else
|
||||
{
|
||||
@@ -906,24 +960,6 @@ svr4_fetch_objfile_link_map (struct objf
|
||||
@@ -1059,24 +1111,6 @@ svr4_fetch_objfile_link_map (struct objf
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -332,8 +332,8 @@
|
||||
/* Return 1 if PC lies in the dynamic symbol resolution code of the
|
||||
SVR4 run time loader. */
|
||||
static CORE_ADDR interp_text_sect_low;
|
||||
@@ -1466,6 +1502,8 @@ svr4_solib_create_inferior_hook (void)
|
||||
while (stop_signal != TARGET_SIGNAL_TRAP);
|
||||
@@ -1604,6 +1638,8 @@ svr4_solib_create_inferior_hook (void)
|
||||
while (tp->stop_signal != TARGET_SIGNAL_TRAP);
|
||||
stop_soon = NO_STOP_QUIETLY;
|
||||
#endif /* defined(_SCO_DS) */
|
||||
+
|
||||
@ -343,7 +343,7 @@
|
||||
static void
|
||||
--- gdb/solib.c
|
||||
+++ gdb/solib.c
|
||||
@@ -411,15 +411,37 @@ symbol_add_stub (void *arg)
|
||||
@@ -432,8 +432,22 @@ symbol_add_stub (void *arg)
|
||||
/* Have we already loaded this shared object? */
|
||||
ALL_OBJFILES (so->objfile)
|
||||
{
|
||||
@ -366,25 +366,26 @@
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
/* Open a second BFD for this file. */
|
||||
@@ -446,8 +460,15 @@ symbol_add_stub (void *arg)
|
||||
sap = build_section_addr_info_from_section_table (so->sections,
|
||||
so->sections_end);
|
||||
|
||||
- so->objfile = symbol_file_add (so->so_name, so->from_tty,
|
||||
- sap, 0, OBJF_SHARED);
|
||||
- so->objfile = symbol_file_add_from_bfd (abfd, so->from_tty,
|
||||
- sap, 0, OBJF_SHARED);
|
||||
+ if (so->main_p)
|
||||
+ {
|
||||
+ so->objfile = symbol_file_add (so->so_name, /*so->from_tty*/ 0,
|
||||
+ sap, 1, 0);
|
||||
+ so->objfile = symbol_file_add_from_bfd (abfd, 0, sap, 1, 0);
|
||||
+ so->main_relocated = 1;
|
||||
+ }
|
||||
+ else
|
||||
+ so->objfile = symbol_file_add (so->so_name, so->from_tty,
|
||||
+ sap, 0, OBJF_SHARED);
|
||||
+ so->objfile = symbol_file_add_from_bfd (abfd, so->from_tty,
|
||||
+ sap, 0, OBJF_SHARED);
|
||||
+
|
||||
free_section_addr_info (sap);
|
||||
|
||||
return (1);
|
||||
@@ -599,28 +621,7 @@ update_solib_list (int from_tty, struct
|
||||
@@ -627,28 +648,7 @@ update_solib_list (int from_tty, struct
|
||||
/* Fill in the rest of each of the `struct so_list' nodes. */
|
||||
for (i = inferior; i; i = i->next)
|
||||
{
|
||||
@ -414,7 +415,7 @@
|
||||
|
||||
/* Notify any observer that the shared object has been
|
||||
loaded now that we've added it to GDB's tables. */
|
||||
@@ -716,6 +717,39 @@ solib_add (char *pattern, int from_tty,
|
||||
@@ -744,6 +744,39 @@ solib_add (char *pattern, int from_tty,
|
||||
}
|
||||
}
|
||||
|
||||
@ -465,9 +466,9 @@
|
||||
struct objfile *objfile; /* objfile for loaded lib */
|
||||
struct section_table *sections;
|
||||
struct section_table *sections_end;
|
||||
@@ -130,6 +132,10 @@ struct so_list *master_so_list (void);
|
||||
@@ -133,6 +135,10 @@ struct so_list *master_so_list (void);
|
||||
/* Find solib binary file and open it. */
|
||||
extern int solib_open (char *in_pathname, char **found_pathname);
|
||||
extern bfd *solib_bfd_open (char *in_pathname);
|
||||
|
||||
+/* Add the list of sections in so_list to the target to_sections. */
|
||||
+extern void add_to_target_sections (int, struct target_ops *,
|
||||
@ -489,7 +490,7 @@
|
||||
reinit_frame_cache ();
|
||||
--- gdb/symfile.c
|
||||
+++ gdb/symfile.c
|
||||
@@ -779,7 +779,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
@@ -784,7 +784,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
|
||||
/* Now either addrs or offsets is non-zero. */
|
||||
|
||||
@ -498,7 +499,7 @@
|
||||
{
|
||||
/* We will modify the main symbol table, make sure that all its users
|
||||
will be cleaned up if an error occurs during symbol reading. */
|
||||
@@ -807,7 +807,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
@@ -812,7 +812,7 @@ syms_from_objfile (struct objfile *objfi
|
||||
|
||||
We no longer warn if the lowest section is not a text segment (as
|
||||
happens for the PA64 port. */
|
||||
@ -507,7 +508,7 @@
|
||||
{
|
||||
asection *lower_sect;
|
||||
asection *sect;
|
||||
@@ -971,14 +971,14 @@ new_symfile_objfile (struct objfile *obj
|
||||
@@ -918,14 +918,14 @@ new_symfile_objfile (struct objfile *obj
|
||||
/* If this is the main symbol file we have to clean up all users of the
|
||||
old main symbol file. Otherwise it is sufficient to fixup all the
|
||||
breakpoints that may have been redefined by this symbol file. */
|
||||
@ -524,7 +525,7 @@
|
||||
{
|
||||
breakpoint_re_set ();
|
||||
}
|
||||
@@ -1024,7 +1024,7 @@ symbol_file_add_with_addrs_or_offsets (b
|
||||
@@ -971,7 +971,7 @@ symbol_file_add_with_addrs_or_offsets (b
|
||||
interactively wiping out any existing symbols. */
|
||||
|
||||
if ((have_full_symbols () || have_partial_symbols ())
|
||||
@ -533,7 +534,7 @@
|
||||
&& from_tty
|
||||
&& !query ("Load new symbol table from \"%s\"? ", name))
|
||||
error (_("Not confirmed."));
|
||||
@@ -1208,6 +1208,11 @@ symbol_file_clear (int from_tty)
|
||||
@@ -1160,6 +1160,11 @@ symbol_file_clear (int from_tty)
|
||||
symfile_objfile->name)
|
||||
: !query (_("Discard symbol table? "))))
|
||||
error (_("Not confirmed."));
|
||||
@ -545,7 +546,7 @@
|
||||
free_all_objfiles ();
|
||||
|
||||
/* solib descriptors may have handles to objfiles. Since their
|
||||
@@ -2469,6 +2474,8 @@ reread_symbols (void)
|
||||
@@ -2451,6 +2456,8 @@ reread_symbols (void)
|
||||
/* Discard cleanups as symbol reading was successful. */
|
||||
discard_cleanups (old_cleanups);
|
||||
|
||||
|
153
warn.patch
153
warn.patch
@ -1,153 +0,0 @@
|
||||
--- sim/common/gentmap.c
|
||||
+++ sim/common/gentmap.c
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
|
||||
struct tdefs {
|
||||
char *symbol;
|
||||
--- sim/ppc/debug.c
|
||||
+++ sim/ppc/debug.c
|
||||
@@ -29,6 +29,10 @@
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
+#ifdef HAVE_STRING_H
|
||||
+#include <string.h>
|
||||
+#endif
|
||||
+
|
||||
int ppc_trace[nr_trace_options];
|
||||
|
||||
typedef struct _trace_option_descriptor {
|
||||
--- sim/ppc/ppc-instructions
|
||||
+++ sim/ppc/ppc-instructions
|
||||
@@ -3965,12 +3965,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
0, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4010,12 +4012,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
1, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4055,12 +4059,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
0, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4100,12 +4106,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
1, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4145,12 +4153,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
0, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4190,12 +4200,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
1, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4235,12 +4247,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
0, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
||||
@@ -4280,12 +4294,14 @@
|
||||
fpscr_vxsnan | fpscr_vximz,
|
||||
1, /*single?*/
|
||||
0) /*negate?*/) {
|
||||
+ union { double d; unsigned64 u; } tmp;
|
||||
invalid_arithemetic_operation(processor, cia,
|
||||
- (unsigned64*)&product, *frA, 0, *frC,
|
||||
+ &tmp.u, *frA, 0, *frC,
|
||||
0, /*instruction_is_frsp*/
|
||||
0, /*instruction_is_convert_to_64bit*/
|
||||
0, /*instruction_is_convert_to_32bit*/
|
||||
0); /*single-precision*/
|
||||
+ product = tmp.d;
|
||||
}
|
||||
else {
|
||||
/*HACK!*/
|
Loading…
x
Reference in New Issue
Block a user