Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
/*
|
|
|
|
* Debugger memory handling
|
|
|
|
*
|
|
|
|
* Copyright 1993 Eric Youngdale
|
|
|
|
* Copyright 1995 Alexandre Julliard
|
2006-02-06 10:27:32 +00:00
|
|
|
* Copyright 2000-2005 Eric Pouech
|
2002-03-09 23:29:33 +00:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
2006-05-18 12:49:52 +00:00
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
2000-03-08 16:44:54 +00:00
|
|
|
#include <string.h>
|
2004-06-04 00:59:16 +00:00
|
|
|
#include <stdio.h>
|
2000-03-24 21:19:02 +00:00
|
|
|
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
#include "debugger.h"
|
2004-06-04 00:59:16 +00:00
|
|
|
#include "wine/debug.h"
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
|
1996-09-28 18:11:01 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
void* be_cpu_linearize(HANDLE hThread, const ADDRESS64* addr)
|
1996-09-28 18:11:01 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
assert(addr->Mode == AddrModeFlat);
|
2006-07-26 09:57:27 +00:00
|
|
|
return (void*)(DWORD_PTR)addr->Offset;
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
1999-05-22 10:36:22 +00:00
|
|
|
|
2018-06-12 22:53:18 +00:00
|
|
|
BOOL be_cpu_build_addr(HANDLE hThread, const dbg_ctx_t *ctx, ADDRESS64* addr,
|
2021-10-04 12:16:23 +00:00
|
|
|
unsigned seg, DWORD64 offset)
|
2000-03-08 16:44:54 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
addr->Mode = AddrModeFlat;
|
|
|
|
addr->Segment = 0; /* don't need segment */
|
|
|
|
addr->Offset = offset;
|
|
|
|
return TRUE;
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
1999-05-22 10:36:22 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
void* memory_to_linear_addr(const ADDRESS64* addr)
|
2000-03-08 16:44:54 +00:00
|
|
|
{
|
2018-06-12 22:53:16 +00:00
|
|
|
return dbg_curr_process->be_cpu->linearize(dbg_curr_thread->handle, addr);
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
1999-05-22 10:36:22 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
BOOL memory_get_current_pc(ADDRESS64* addr)
|
2000-03-08 16:44:54 +00:00
|
|
|
{
|
2018-06-12 22:53:16 +00:00
|
|
|
assert(dbg_curr_process->be_cpu->get_addr);
|
|
|
|
return dbg_curr_process->be_cpu->get_addr(dbg_curr_thread->handle, &dbg_context,
|
2004-06-04 00:59:16 +00:00
|
|
|
be_cpu_addr_pc, addr);
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
Release 980809
Sat Aug 8 19:11:46 1998 Marcus Meissner <marcus@jet.franken.de>
* [*/*]
Added some missing WINAPI and some missing prototypes for
functions.
* [controls/static.c]
Got rid of the MODULE32_LookupHMODULE error showing up for every
message box.
* [windows/winproc.c]
WM_NOTIFY 16->32 mapping (AOL Instant Messenger or however it is called).
* [misc/winsock.c]
hostent/servent/protoent should not use the same static buffers.
(has broken nt3.15 finger.exe which does hp=gethostbyname(), then
getservbyname("finger","tcp") and the references hp->h_addr_list[0]).
Sat Aug 8 13:21:24 1998 Alexandre Julliard <julliard@lrc.epfl.ch>
* [include/server.h] [tools/make_requests] [server/request.c]
[server/trace.c]
Automated part of the client/server request code generation.
Added tracing of client/server communication.
* [scheduler/*.c] [server/process.c]
Added support for server-side handles.
* [scheduler/thread.c]
Added DLL_THREAD_ATTACH/DETACH notifications.
* [configure.in]
Added check for -lsocket.
* [windows/winproc.c]
Return the thunk address in WINPROC_GetProc if the function types
don't match.
Sat Aug 8 02:44:04 1998 Douglas Ridgway <ridgway@winehq.com>
* [windows/winproc.c][windows/win.c][windows/message.c]
Documentation for CallWindowProc, SetWindowLong, DispatchMessage,
WaitMessage, GetMessage, and PeekMessage.
Sat Aug 8 01:00:00 1998 Juergen Schmied <juergen.schmied@metronet.de>
* [controls/commctrl.c][controls/widgets.c][include/builtin32.h]
[include/commctrl.h][relay32/builtin32.c][relay32/comctl32.spec]
[tools/build.c] [relay32/shell32.spec]
Added the functionality of the LibMain function. The common
controls are properly initialized now.
* [controls/treeview.c][memory/atom.c][scheduler/thread.c][windows/class.c]
[windows/msgbox.c][windows/win.c]
Put TRACE in, put SetLastError() in.
* [include/interfaces.h]
Added IClassFactory::LockServer.
* [include/ole2.h]
Added struct for LPOLEMENUGROUPWIDTHS32, HOLEMENU32.
* [include/shell.h][include/shlobj.h][misc/shell.c][ole/folders.c]
Reorganized and many structs and classes (IShellBrowser,IShellView)
added. shell32.dll should work in many cases now.
Started SHGetFileInfoA implementeation, rewrote SHGetPathFromIDList32A.
New Shell32LibMain started ShellIconCache Implementation.
* [misc/shellord.c]
Rewrote ILCombine, ILGetSize
New stubs SHFind_InitMenuPopup, FileMenu_Create, ShellExecuteEx,
SHSetInstanceExplorer, SHGetInstanceExplorer, SHFreeUnusedLibraries.
* [include/winerror.h]
Class and window related error codes added.
* [memory/heap.c]
Changed lstrlen32A to strlen to get rid of milions of TRACE lines.
* [misc/ddeml.c]
First lines for DdeCreateStringHandle32A / DdeFreeStringHandle32.
* [misc/network.c][relay32/mpr.spec]
Fixed some bugs, changed ordinals.
* [windows/class.c]
Workarounds for incorrect hInstance handling. Fixes parts of
MSWord95/Excel95 and Money95.
Thu Aug 6 21:05:35 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [windows/nonclient.c][misc/tweak.c][include/tweak.h]
[documentation/win95look]
Removed some tweak variables. They are no longer needed.
* [files/dos_fs.c]
Added check for null pointer in DOSFS_GetDevice().
* [controls/tooltips.c][include/commctrl.h]
Improved tooltips.
* [controls/status.c][include/commctrl.h]
Cleaned up code and added tooltip support.
* [controls/toolbar.c][include/commctrl.h]
Added tooltip support.
* [documentation/common_controls]
Updated.
Thu Aug 6 00:05:22 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [include/ver.h] [misc/ver.c]
Write VIF_BUFFTOOSMALL, not VIF_BUFTOSMALL.
* [debugger/hash.c] [debugger/stabs.c]
Make debug output more friendly for posting.
* [files/file.c]
Partial implementation of OF_SHARE_EXCLUSIVE.
Needed for Quicklogic/QuickChip (InstallShield).
* [files/profile.c]
When a cached-only entry is found, return it.
* [graphics/x11drv/xfont.c]
Accept a space as delimiter for a fontname and inhibit overrun
(Make xplasim.ex from the Phillips Coolrunner CPLD suite proceed).
* [miscemu/main.c]
Delay setting IF1632_CallLargeStack after loading the executables.
Stops fpgaexp.exe from the Viewlogic FPGA suite from crashing when
showing the Blinker error Message Box.
* [misc/network.c]
Make WNetGetConnection16 recognise a CDROM as a local drive.
* [multimedia/mmsystem.c]
Preliminary check for MCI_ALL_DEVICE_ID in MCI_Close by a FIXME.
Tue Aug 4 21:15:23 1998 James Juran <jrj120@psu.edu>
* [ole/ole2nls.c]
Fixed bug in CompareString32A. strcmp() doesn't necessarily
return -1, 0, or 1, which the previous code depended on.
Changed name of is_punctuation to OLE2NLS_isPunctuation.
Made NORM_IGNOREWIDTH not print a FIXME message in
LCMapString32A.
Other debugging messages, documentation, and code cleanups.
* [objects/font.c] [relay32/gdi32.spec] [include/winerror.h]
Added stub for GetFontData32, and added GDI_ERROR constant
to winerror.h.
Tue Aug 4 07:44:43 1998 Ove Kaaven <ovek@arcticnet.no>
* [multimedia/mmio.c]
Implemented mmioSetBuffer, mmioAdvance, mmioAscend, and
mmioCreateChunk to the best of my knowledge. But watch out,
there's bound to be bugs in there...
* [include/mmsystem.h] [multimedia/mmsystem.c]
Hacked in support for 32-bit multimedia function callbacks.
* [AUTHORS] [misc/shell.c]
Selfishly credited my authorship. Hopefully I'm excused.
* [include/dosexe.h] [include/module.h] [loader/dos/*]
[loader/module.c] [loader/task.c] [Makefile.in]
[configure.in] [Makefile.in]
Added DOS EXE (MZ) loader and virtual machine. Task
structure integration thanks to Ulrich Weigand.
* [files/dos_fs.c]
Work around a null pointer dereference if ioctlGetDeviceInfo-ing
a FILE_DupUnixHandle'd file (i.e. GetStdHandle'd).
* [include/miscemu.h] [include/winnt.h] [loader/main.c]
[memory/global.c] [msdos/dpmi.c] [msdos/dosmem.c]
Added support for DOS memory images, and added
DOSMEM_ResizeBlock() and DOSMEM_Available().
* [msdos/int21.c]
Added support for the DOS virtual machine, tweaked handle
assignment to avoid stdio clashes, forced INT21_FindNext to exit
wildcardless searches after finding one entry, added AH=7, 8, 9,
C, 48, 49, 4A, and 7160 CL=1 (Get Short Filename), and made the
long filename calls only respond if running with with -winver
win95.
* [objects/cursoricon.c]
DestroyCursor32 and DestroyIcon32 should now free the objects
(hopefully) correctly.
Sun Aug 2 21:42:09 1998 Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>
* [graphics/psdrv/*] [include/psdrv.h]
Added PPD file parsing - at the moment it reads a file called
default.ppd from the directory in which you start Wine. Page sizes
other than A4 should now work (landscape may not). All fonts that are
present on your printer (according to the PPD) should be available,
providing you have the AFM files. Fonts should now be the correct size.
Graphics is still basically lines only. See graphics/psdrv/README .
* [misc/printdrv.c]
Yet more Drv[Get/Set]PrinterData fixes.
Fri Jul 31 21:33:22 1998 Per Lindstrm <pelinstr@algonet.se>
* [relay32/crtdll.spec] [misc/crtdll.c]
Added stub for freopen, _findfirst, _findnext, _fstat and _read.
* [files/directory.c]
Modified warning message.
Wed Jul 29 11:25:28 1998 Luiz Otavio L. Zorzella <zorzella@nr.conexware.com>
* [objects/font.c]
Added stub for GetFontData.
* [multimedia/msvideo.c]
Created this file to hold the msvideo.dll calls (and maybe also
msvfw32.dll).
* [objects/cursoricon.c]
Added search in Global Heap for cursor when trying to destroy it
with DestroyCursor16. This test should be done in many (all?)
other functions that use FreeResource.
* [controls/treeview.c] [include/commctrl.h]
Minor correction in name and addition of many placeholders for TVM
messages in TREEVIEW_WindowProc.
* [msdos/dpmi.c]
Fixed a bug in DPMI_xrealloc where in a copy of a memory region
"A" of size "a" to a region "B" of size "b", "b" bytes were being
copied, instead of "a", as the new version does. This both
increases speed, as well as avoids segfaults.
1998-08-09 12:47:43 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
BOOL memory_get_current_stack(ADDRESS64* addr)
|
2003-10-15 21:14:08 +00:00
|
|
|
{
|
2018-06-12 22:53:16 +00:00
|
|
|
assert(dbg_curr_process->be_cpu->get_addr);
|
|
|
|
return dbg_curr_process->be_cpu->get_addr(dbg_curr_thread->handle, &dbg_context,
|
2004-06-04 00:59:16 +00:00
|
|
|
be_cpu_addr_stack, addr);
|
2003-10-15 21:14:08 +00:00
|
|
|
}
|
|
|
|
|
2005-05-23 10:25:56 +00:00
|
|
|
static void memory_report_invalid_addr(const void* addr)
|
2000-09-24 03:15:50 +00:00
|
|
|
{
|
2006-07-26 09:57:27 +00:00
|
|
|
ADDRESS64 address;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
|
|
|
address.Mode = AddrModeFlat;
|
|
|
|
address.Segment = 0;
|
2012-05-29 17:14:31 +00:00
|
|
|
address.Offset = (ULONG_PTR)addr;
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("*** Invalid address ");
|
|
|
|
print_address(&address, FALSE);
|
2007-02-10 09:48:25 +00:00
|
|
|
dbg_printf(" ***\n");
|
Release 951003
Sun Oct 1 15:48:34 1995 Alexandre Julliard <julliard@sunsite.unc>
* [controls/menu.c]
Fixed GetMenuString() for non-string items.
* [debugger/*.c]
First attempt to check validity of pointers before memory
accesses. For now only segmented pointers are checked.
* [debugger/dbg.y] [memory/ldt.c]
Added possibility to dump only one segment with 'info segment'.
* [include/bitmaps/ocr_*]
Added all OEM cursors as XPM bitmaps.
* [include/cursoricon.h] [objects/cursoricon.c]
Rewrote all cursor and icon management to use the same memory
layout as Windows, and to factor common code between icons and
cursors. Implemented icon directory lookup to find the best
matching icon (i.e. the color one).
Implemented CopyCursor() and DumpIcon().
* [loader/module.c]
For disabled built-in modules, we now try to load the Windows DLL
first, and if this fails we fall back to using the built-in module
anyway.
* [memory/global.c]
Fixed GlobalHandle() to return the correct selector in the high
word even if we are passed a handle in the first place.
* [miscemu/instr.c]
Take into account the size of the operand and of the stack segment
when incrementing the stack pointer.
Avoid referencing FS_reg and GS_reg on *BSD.
* [objects/dib.c]
All DIB functions now accept a BITMAPCOREHEADER format bitmap.
Monochrome DIBs are created as monochrome bitmap iff they are
black and white.
* [objects/oembitmap.c]
Added support for OEM cursors, changed OBM_LoadIcon to use the new
icon memory layout.
* [rc/sysres_Fr.rc]
Added French [Fr] language support.
* [win32/environment.c]
Fixed GetCommandLineA() to use current PDB.
* [windows/event.c] [windows/winpos.c]
Simulate a mouse motion event upon SetWindowPos() to force the
cursor to be set correctly.
Sat Sep 30 17:49:32 Cameron Heide (heide@ee.ualberta.ca)
* [win32/*]
New Win32 kernel functions: GetACP, GetCPInfo,
GetEnvironmentVariableA, GetFileType, GetLastError, GetOEMCP,
GetStartupInfoA, GetTimeZoneInformation, SetEnvironmentVariable,
SetFilePointer, SetLastError, VirtualAlloc, VirtualFree,
WriteFile. Completed implementations of GetCommandLineA.
* [include/kernel32.h]
New file.
* [loader/main.c]
Call initialization function for Win32 data (doesn't currently do
anything).
* [misc/main.c]
Implemented GetEnvironmentVariableA, SetEnvironmentVariableA.
Sat Sep 30 00:26:56 1995 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [windows/winpos.c][miscemu/emulate.c][loader/module.c]
[misc/commdlg.c]
Misc. bug fixes
Fri Sep 29 16:16:13 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [*/*]
For Winelib, explicit casts have been placed where warnings were
usually generated.
printf formats which give the format for printing a handle as
"%04x" or something similar have been changed to use the NPFMT
macro defined in include/wintypes.h. Some times, explicit casts
were also necessary.
Parameter, field, and variable declarations have been made more
exact, such as converting 'WORD wParam' to 'WPARAM wParam' or
'WORD hFont' to 'HFONT hFont'.
Any call of the form GetWindowWord(hwnd,GWW_HINSTANCE) has been
replaced with a call to WIN_GetWindowInstance(hwnd).
* [controls/combo.c]
Added WINELIB32 support in CLBoxGetCombo().
* [include/dialog.h]
Commented out the '#ifndef WINELIB' around the '#pragma pack(1)'.
winelib needs the packing as well (e.g. when accessing resources
like sysres_DIALOG_SHELL_ABOUT_MSGBOX).
* [include/windows.h]
Got rid of the F[a-k] macros, which were cluttering up the global
namespace.
* [include/windows.h] [windows/defwnd.c]
Added Win32 messages WM_CTLCOLOR*.
* [include/wintypes.h]
Put in preprocessor '#define WINELIB32' if appropriate and changed
the types of some typedefs (WPARAM, HANDLE) based on this.
* [loader/module.c] [toolkit/miscstubs.c]
Added #ifdef'd portion in LoadModule to handle loading a WINElib
module (already loaded, just init values). '#ifdef'ed out the
definition for GetWndProcEntry16 and added a new version to
toolkit/miscstubs.c.
* [misc/shell.c]
Adjusted the lengths of AppName and AppMisc from 512,512 to 128,906.
Same amount of total storage, but much more reasonable. Also, changed
calls to strcpy() in ShellAbout() to calls to strncpy() instead.
This was a difficult bug to track down, but the AppMisc field was
being initialized with the contributers text, which was much larger
than 512 characters.
* [toolkit/atom.c]
New file for atom-handling functions. Copied from memory/atom.c and
then heavily modified. Right now, it's just a linked list of atoms.
Consider it as a hash table with just one entry. It's easily changed
later.
* [toolkit/heap.c]
Commented out the heap functions with a "#ifdef WINELIB16" and put in
a Win32 version (which is basically a modified copy).
* [toolkit/sup.c] [toolkit/miscstubs.c]
Moved the stuff I put in toolkit/sup.c into toolkit/miscstubs.c and
added quite a few more stubs.
* [toolkit/winmain.c]
Rearranged startup code in _WinMain. I think this will work.
* [toolkit/Makefile.in]
Added targets for 'hello' and 'hello2' in case anyone cares to try
out the sample programs.
Wed Sep 27 23:13:43 1995 Anand Kumria <akumria@ozemail.com.au>
* [miscemu/int2f.c] [miscemu/vxd.c] [if1632/winprocs.spec]
First attempt at support for some VxDs. Comm, Shell and Pagefile.
Tue Sep 26 21:34:45 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
DOS_SimplifyPath: Also remove "/./" from path. (Happens when
starting applications like 'wine ./excel.exe')
Sat Sep 23 23:32:40 1995 Morten Welinder <terra@diku.dk>
* [configure.in]
Avoid relative path for wine.ini.
* [rc/sysres_Da.rc]
Support for Danish [Da] language.
* [misc/main.c] [miscemu/cpu.c]
Return the processor we're running on correctly.
* [miscemu/int2f.c]
Minor stuff in int 0x2f, function 0x16.
Sat Sep 23 1995 17:58:04 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [misc/shell.c] [misc/main.c]
Implement saving and loading of the registry database (needed for
OLE). Very experimental. Fixed ShellExecute().
* [miscemu/int21.c]
EEXIST is not a critical error condition for mkdir().
Fri Sep 22 01:33:34 1995 Alex Korobka <alex@phm6.pharm.sunysb.edu>
* [include/shell.h] [misc/shell.c]
Implemented 4 drag/drop functions with documented functionality.
* [multimedia/time.c]
"Fixed" MMSysTimeCallback kludge so Excel5 loads up without crashing.
* [*/*]
Added new files, more message definitions, structures, debug info,
etc. Rewrote message logging functions to produce output similar
to WinSight. Check out -debugmsg +message option.
* [misc/file.c]
Fixed GetDriveType return value.
* [windows/message.c]
Hooks are invoked in normal order.
* [miscemu/*]
Added some functions and interrupts.
* [misc/shell.c]
Implemented Drag... functions.
Thu Sep 21 23:50:12 1995 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [rc/sysres_Fi.rc] [rc/sysres.rc]
First attempt at Finnish [Fi] language support.
1995-10-03 17:06:08 +00:00
|
|
|
}
|
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
/***********************************************************************
|
|
|
|
* memory_read_value
|
|
|
|
*
|
|
|
|
* Read a memory value.
|
|
|
|
*/
|
|
|
|
BOOL memory_read_value(const struct dbg_lvalue* lvalue, DWORD size, void* result)
|
2000-03-08 16:44:54 +00:00
|
|
|
{
|
2005-05-23 10:25:56 +00:00
|
|
|
BOOL ret = FALSE;
|
|
|
|
|
2021-12-08 13:43:56 +00:00
|
|
|
if (lvalue->in_debuggee)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2005-05-23 10:25:56 +00:00
|
|
|
void* linear = memory_to_linear_addr(&lvalue->addr);
|
|
|
|
if (!(ret = dbg_read_memory(linear, result, size)))
|
|
|
|
memory_report_invalid_addr(linear);
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2005-05-23 10:25:56 +00:00
|
|
|
if (lvalue->addr.Offset)
|
|
|
|
{
|
2006-07-26 09:57:27 +00:00
|
|
|
memcpy(result, (void*)(DWORD_PTR)lvalue->addr.Offset, size);
|
2005-05-23 10:25:56 +00:00
|
|
|
ret = TRUE;
|
|
|
|
}
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2007-02-10 09:48:25 +00:00
|
|
|
return ret;
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
Release 951003
Sun Oct 1 15:48:34 1995 Alexandre Julliard <julliard@sunsite.unc>
* [controls/menu.c]
Fixed GetMenuString() for non-string items.
* [debugger/*.c]
First attempt to check validity of pointers before memory
accesses. For now only segmented pointers are checked.
* [debugger/dbg.y] [memory/ldt.c]
Added possibility to dump only one segment with 'info segment'.
* [include/bitmaps/ocr_*]
Added all OEM cursors as XPM bitmaps.
* [include/cursoricon.h] [objects/cursoricon.c]
Rewrote all cursor and icon management to use the same memory
layout as Windows, and to factor common code between icons and
cursors. Implemented icon directory lookup to find the best
matching icon (i.e. the color one).
Implemented CopyCursor() and DumpIcon().
* [loader/module.c]
For disabled built-in modules, we now try to load the Windows DLL
first, and if this fails we fall back to using the built-in module
anyway.
* [memory/global.c]
Fixed GlobalHandle() to return the correct selector in the high
word even if we are passed a handle in the first place.
* [miscemu/instr.c]
Take into account the size of the operand and of the stack segment
when incrementing the stack pointer.
Avoid referencing FS_reg and GS_reg on *BSD.
* [objects/dib.c]
All DIB functions now accept a BITMAPCOREHEADER format bitmap.
Monochrome DIBs are created as monochrome bitmap iff they are
black and white.
* [objects/oembitmap.c]
Added support for OEM cursors, changed OBM_LoadIcon to use the new
icon memory layout.
* [rc/sysres_Fr.rc]
Added French [Fr] language support.
* [win32/environment.c]
Fixed GetCommandLineA() to use current PDB.
* [windows/event.c] [windows/winpos.c]
Simulate a mouse motion event upon SetWindowPos() to force the
cursor to be set correctly.
Sat Sep 30 17:49:32 Cameron Heide (heide@ee.ualberta.ca)
* [win32/*]
New Win32 kernel functions: GetACP, GetCPInfo,
GetEnvironmentVariableA, GetFileType, GetLastError, GetOEMCP,
GetStartupInfoA, GetTimeZoneInformation, SetEnvironmentVariable,
SetFilePointer, SetLastError, VirtualAlloc, VirtualFree,
WriteFile. Completed implementations of GetCommandLineA.
* [include/kernel32.h]
New file.
* [loader/main.c]
Call initialization function for Win32 data (doesn't currently do
anything).
* [misc/main.c]
Implemented GetEnvironmentVariableA, SetEnvironmentVariableA.
Sat Sep 30 00:26:56 1995 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [windows/winpos.c][miscemu/emulate.c][loader/module.c]
[misc/commdlg.c]
Misc. bug fixes
Fri Sep 29 16:16:13 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [*/*]
For Winelib, explicit casts have been placed where warnings were
usually generated.
printf formats which give the format for printing a handle as
"%04x" or something similar have been changed to use the NPFMT
macro defined in include/wintypes.h. Some times, explicit casts
were also necessary.
Parameter, field, and variable declarations have been made more
exact, such as converting 'WORD wParam' to 'WPARAM wParam' or
'WORD hFont' to 'HFONT hFont'.
Any call of the form GetWindowWord(hwnd,GWW_HINSTANCE) has been
replaced with a call to WIN_GetWindowInstance(hwnd).
* [controls/combo.c]
Added WINELIB32 support in CLBoxGetCombo().
* [include/dialog.h]
Commented out the '#ifndef WINELIB' around the '#pragma pack(1)'.
winelib needs the packing as well (e.g. when accessing resources
like sysres_DIALOG_SHELL_ABOUT_MSGBOX).
* [include/windows.h]
Got rid of the F[a-k] macros, which were cluttering up the global
namespace.
* [include/windows.h] [windows/defwnd.c]
Added Win32 messages WM_CTLCOLOR*.
* [include/wintypes.h]
Put in preprocessor '#define WINELIB32' if appropriate and changed
the types of some typedefs (WPARAM, HANDLE) based on this.
* [loader/module.c] [toolkit/miscstubs.c]
Added #ifdef'd portion in LoadModule to handle loading a WINElib
module (already loaded, just init values). '#ifdef'ed out the
definition for GetWndProcEntry16 and added a new version to
toolkit/miscstubs.c.
* [misc/shell.c]
Adjusted the lengths of AppName and AppMisc from 512,512 to 128,906.
Same amount of total storage, but much more reasonable. Also, changed
calls to strcpy() in ShellAbout() to calls to strncpy() instead.
This was a difficult bug to track down, but the AppMisc field was
being initialized with the contributers text, which was much larger
than 512 characters.
* [toolkit/atom.c]
New file for atom-handling functions. Copied from memory/atom.c and
then heavily modified. Right now, it's just a linked list of atoms.
Consider it as a hash table with just one entry. It's easily changed
later.
* [toolkit/heap.c]
Commented out the heap functions with a "#ifdef WINELIB16" and put in
a Win32 version (which is basically a modified copy).
* [toolkit/sup.c] [toolkit/miscstubs.c]
Moved the stuff I put in toolkit/sup.c into toolkit/miscstubs.c and
added quite a few more stubs.
* [toolkit/winmain.c]
Rearranged startup code in _WinMain. I think this will work.
* [toolkit/Makefile.in]
Added targets for 'hello' and 'hello2' in case anyone cares to try
out the sample programs.
Wed Sep 27 23:13:43 1995 Anand Kumria <akumria@ozemail.com.au>
* [miscemu/int2f.c] [miscemu/vxd.c] [if1632/winprocs.spec]
First attempt at support for some VxDs. Comm, Shell and Pagefile.
Tue Sep 26 21:34:45 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
DOS_SimplifyPath: Also remove "/./" from path. (Happens when
starting applications like 'wine ./excel.exe')
Sat Sep 23 23:32:40 1995 Morten Welinder <terra@diku.dk>
* [configure.in]
Avoid relative path for wine.ini.
* [rc/sysres_Da.rc]
Support for Danish [Da] language.
* [misc/main.c] [miscemu/cpu.c]
Return the processor we're running on correctly.
* [miscemu/int2f.c]
Minor stuff in int 0x2f, function 0x16.
Sat Sep 23 1995 17:58:04 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [misc/shell.c] [misc/main.c]
Implement saving and loading of the registry database (needed for
OLE). Very experimental. Fixed ShellExecute().
* [miscemu/int21.c]
EEXIST is not a critical error condition for mkdir().
Fri Sep 22 01:33:34 1995 Alex Korobka <alex@phm6.pharm.sunysb.edu>
* [include/shell.h] [misc/shell.c]
Implemented 4 drag/drop functions with documented functionality.
* [multimedia/time.c]
"Fixed" MMSysTimeCallback kludge so Excel5 loads up without crashing.
* [*/*]
Added new files, more message definitions, structures, debug info,
etc. Rewrote message logging functions to produce output similar
to WinSight. Check out -debugmsg +message option.
* [misc/file.c]
Fixed GetDriveType return value.
* [windows/message.c]
Hooks are invoked in normal order.
* [miscemu/*]
Added some functions and interrupts.
* [misc/shell.c]
Implemented Drag... functions.
Thu Sep 21 23:50:12 1995 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [rc/sysres_Fi.rc] [rc/sysres.rc]
First attempt at Finnish [Fi] language support.
1995-10-03 17:06:08 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
/***********************************************************************
|
|
|
|
* memory_write_value
|
|
|
|
*
|
|
|
|
* Store a value in memory.
|
|
|
|
*/
|
|
|
|
BOOL memory_write_value(const struct dbg_lvalue* lvalue, DWORD size, void* value)
|
2000-06-04 01:33:21 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
BOOL ret = TRUE;
|
2005-11-17 11:51:53 +00:00
|
|
|
DWORD64 os;
|
2000-09-24 03:15:50 +00:00
|
|
|
|
2010-04-19 20:33:46 +00:00
|
|
|
if (!types_get_info(&lvalue->type, TI_GET_LENGTH, &os)) return FALSE;
|
|
|
|
if (size != os)
|
|
|
|
{
|
2022-04-08 07:12:30 +00:00
|
|
|
dbg_printf("Size mismatch in memory_write_value, got %I64u from type while expecting %lu\n",
|
|
|
|
os, size);
|
2010-04-19 20:33:46 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|
2002-05-31 23:06:46 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
/* FIXME: only works on little endian systems */
|
2021-12-08 13:43:56 +00:00
|
|
|
if (lvalue->in_debuggee)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2005-05-23 10:25:56 +00:00
|
|
|
void* linear = memory_to_linear_addr(&lvalue->addr);
|
|
|
|
if (!(ret = dbg_write_memory(linear, value, size)))
|
|
|
|
memory_report_invalid_addr(linear);
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2006-07-26 09:57:27 +00:00
|
|
|
memcpy((void*)(DWORD_PTR)lvalue->addr.Offset, value, size);
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
return ret;
|
2000-06-04 01:33:21 +00:00
|
|
|
}
|
|
|
|
|
2021-12-08 13:44:27 +00:00
|
|
|
/* transfer a block of memory
|
|
|
|
* the two lvalue:s are expected to be of same size
|
|
|
|
*/
|
|
|
|
BOOL memory_transfer_value(const struct dbg_lvalue* to, const struct dbg_lvalue* from)
|
|
|
|
{
|
|
|
|
DWORD64 size_to, size_from;
|
|
|
|
BYTE tmp[256];
|
|
|
|
BYTE* ptr = tmp;
|
|
|
|
BOOL ret;
|
|
|
|
|
|
|
|
if (to->bitlen || from->bitlen) return FALSE;
|
|
|
|
if (!types_get_info(&to->type, TI_GET_LENGTH, &size_to) ||
|
|
|
|
!types_get_info(&from->type, TI_GET_LENGTH, &size_from) ||
|
|
|
|
size_from != size_to) return FALSE;
|
|
|
|
/* optimize debugger to debugger transfer */
|
|
|
|
if (!to->in_debuggee && !from->in_debuggee)
|
|
|
|
{
|
|
|
|
memcpy(memory_to_linear_addr(&to->addr), memory_to_linear_addr(&from->addr), size_from);
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
if (size_to > sizeof(tmp))
|
|
|
|
{
|
|
|
|
ptr = malloc(size_from);
|
|
|
|
if (!ptr) return FALSE;
|
|
|
|
}
|
|
|
|
ret = memory_read_value(from, size_from, ptr) &&
|
|
|
|
memory_write_value(to, size_from, ptr);
|
|
|
|
if (size_to > sizeof(tmp)) free(ptr);
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
/***********************************************************************
|
|
|
|
* memory_examine
|
|
|
|
*
|
|
|
|
* Implementation of the 'x' command.
|
|
|
|
*/
|
2005-03-03 14:10:17 +00:00
|
|
|
void memory_examine(const struct dbg_lvalue *lvalue, int count, char format)
|
Release 951003
Sun Oct 1 15:48:34 1995 Alexandre Julliard <julliard@sunsite.unc>
* [controls/menu.c]
Fixed GetMenuString() for non-string items.
* [debugger/*.c]
First attempt to check validity of pointers before memory
accesses. For now only segmented pointers are checked.
* [debugger/dbg.y] [memory/ldt.c]
Added possibility to dump only one segment with 'info segment'.
* [include/bitmaps/ocr_*]
Added all OEM cursors as XPM bitmaps.
* [include/cursoricon.h] [objects/cursoricon.c]
Rewrote all cursor and icon management to use the same memory
layout as Windows, and to factor common code between icons and
cursors. Implemented icon directory lookup to find the best
matching icon (i.e. the color one).
Implemented CopyCursor() and DumpIcon().
* [loader/module.c]
For disabled built-in modules, we now try to load the Windows DLL
first, and if this fails we fall back to using the built-in module
anyway.
* [memory/global.c]
Fixed GlobalHandle() to return the correct selector in the high
word even if we are passed a handle in the first place.
* [miscemu/instr.c]
Take into account the size of the operand and of the stack segment
when incrementing the stack pointer.
Avoid referencing FS_reg and GS_reg on *BSD.
* [objects/dib.c]
All DIB functions now accept a BITMAPCOREHEADER format bitmap.
Monochrome DIBs are created as monochrome bitmap iff they are
black and white.
* [objects/oembitmap.c]
Added support for OEM cursors, changed OBM_LoadIcon to use the new
icon memory layout.
* [rc/sysres_Fr.rc]
Added French [Fr] language support.
* [win32/environment.c]
Fixed GetCommandLineA() to use current PDB.
* [windows/event.c] [windows/winpos.c]
Simulate a mouse motion event upon SetWindowPos() to force the
cursor to be set correctly.
Sat Sep 30 17:49:32 Cameron Heide (heide@ee.ualberta.ca)
* [win32/*]
New Win32 kernel functions: GetACP, GetCPInfo,
GetEnvironmentVariableA, GetFileType, GetLastError, GetOEMCP,
GetStartupInfoA, GetTimeZoneInformation, SetEnvironmentVariable,
SetFilePointer, SetLastError, VirtualAlloc, VirtualFree,
WriteFile. Completed implementations of GetCommandLineA.
* [include/kernel32.h]
New file.
* [loader/main.c]
Call initialization function for Win32 data (doesn't currently do
anything).
* [misc/main.c]
Implemented GetEnvironmentVariableA, SetEnvironmentVariableA.
Sat Sep 30 00:26:56 1995 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [windows/winpos.c][miscemu/emulate.c][loader/module.c]
[misc/commdlg.c]
Misc. bug fixes
Fri Sep 29 16:16:13 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [*/*]
For Winelib, explicit casts have been placed where warnings were
usually generated.
printf formats which give the format for printing a handle as
"%04x" or something similar have been changed to use the NPFMT
macro defined in include/wintypes.h. Some times, explicit casts
were also necessary.
Parameter, field, and variable declarations have been made more
exact, such as converting 'WORD wParam' to 'WPARAM wParam' or
'WORD hFont' to 'HFONT hFont'.
Any call of the form GetWindowWord(hwnd,GWW_HINSTANCE) has been
replaced with a call to WIN_GetWindowInstance(hwnd).
* [controls/combo.c]
Added WINELIB32 support in CLBoxGetCombo().
* [include/dialog.h]
Commented out the '#ifndef WINELIB' around the '#pragma pack(1)'.
winelib needs the packing as well (e.g. when accessing resources
like sysres_DIALOG_SHELL_ABOUT_MSGBOX).
* [include/windows.h]
Got rid of the F[a-k] macros, which were cluttering up the global
namespace.
* [include/windows.h] [windows/defwnd.c]
Added Win32 messages WM_CTLCOLOR*.
* [include/wintypes.h]
Put in preprocessor '#define WINELIB32' if appropriate and changed
the types of some typedefs (WPARAM, HANDLE) based on this.
* [loader/module.c] [toolkit/miscstubs.c]
Added #ifdef'd portion in LoadModule to handle loading a WINElib
module (already loaded, just init values). '#ifdef'ed out the
definition for GetWndProcEntry16 and added a new version to
toolkit/miscstubs.c.
* [misc/shell.c]
Adjusted the lengths of AppName and AppMisc from 512,512 to 128,906.
Same amount of total storage, but much more reasonable. Also, changed
calls to strcpy() in ShellAbout() to calls to strncpy() instead.
This was a difficult bug to track down, but the AppMisc field was
being initialized with the contributers text, which was much larger
than 512 characters.
* [toolkit/atom.c]
New file for atom-handling functions. Copied from memory/atom.c and
then heavily modified. Right now, it's just a linked list of atoms.
Consider it as a hash table with just one entry. It's easily changed
later.
* [toolkit/heap.c]
Commented out the heap functions with a "#ifdef WINELIB16" and put in
a Win32 version (which is basically a modified copy).
* [toolkit/sup.c] [toolkit/miscstubs.c]
Moved the stuff I put in toolkit/sup.c into toolkit/miscstubs.c and
added quite a few more stubs.
* [toolkit/winmain.c]
Rearranged startup code in _WinMain. I think this will work.
* [toolkit/Makefile.in]
Added targets for 'hello' and 'hello2' in case anyone cares to try
out the sample programs.
Wed Sep 27 23:13:43 1995 Anand Kumria <akumria@ozemail.com.au>
* [miscemu/int2f.c] [miscemu/vxd.c] [if1632/winprocs.spec]
First attempt at support for some VxDs. Comm, Shell and Pagefile.
Tue Sep 26 21:34:45 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
DOS_SimplifyPath: Also remove "/./" from path. (Happens when
starting applications like 'wine ./excel.exe')
Sat Sep 23 23:32:40 1995 Morten Welinder <terra@diku.dk>
* [configure.in]
Avoid relative path for wine.ini.
* [rc/sysres_Da.rc]
Support for Danish [Da] language.
* [misc/main.c] [miscemu/cpu.c]
Return the processor we're running on correctly.
* [miscemu/int2f.c]
Minor stuff in int 0x2f, function 0x16.
Sat Sep 23 1995 17:58:04 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [misc/shell.c] [misc/main.c]
Implement saving and loading of the registry database (needed for
OLE). Very experimental. Fixed ShellExecute().
* [miscemu/int21.c]
EEXIST is not a critical error condition for mkdir().
Fri Sep 22 01:33:34 1995 Alex Korobka <alex@phm6.pharm.sunysb.edu>
* [include/shell.h] [misc/shell.c]
Implemented 4 drag/drop functions with documented functionality.
* [multimedia/time.c]
"Fixed" MMSysTimeCallback kludge so Excel5 loads up without crashing.
* [*/*]
Added new files, more message definitions, structures, debug info,
etc. Rewrote message logging functions to produce output similar
to WinSight. Check out -debugmsg +message option.
* [misc/file.c]
Fixed GetDriveType return value.
* [windows/message.c]
Hooks are invoked in normal order.
* [miscemu/*]
Added some functions and interrupts.
* [misc/shell.c]
Implemented Drag... functions.
Thu Sep 21 23:50:12 1995 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [rc/sysres_Fi.rc] [rc/sysres.rc]
First attempt at Finnish [Fi] language support.
1995-10-03 17:06:08 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
int i;
|
|
|
|
char buffer[256];
|
2006-07-26 09:57:27 +00:00
|
|
|
ADDRESS64 addr;
|
2005-03-03 14:10:17 +00:00
|
|
|
void *linear;
|
2004-08-22 22:35:36 +00:00
|
|
|
|
2006-01-23 15:26:40 +00:00
|
|
|
types_extract_as_address(lvalue, &addr);
|
|
|
|
linear = memory_to_linear_addr(&addr);
|
Release 951003
Sun Oct 1 15:48:34 1995 Alexandre Julliard <julliard@sunsite.unc>
* [controls/menu.c]
Fixed GetMenuString() for non-string items.
* [debugger/*.c]
First attempt to check validity of pointers before memory
accesses. For now only segmented pointers are checked.
* [debugger/dbg.y] [memory/ldt.c]
Added possibility to dump only one segment with 'info segment'.
* [include/bitmaps/ocr_*]
Added all OEM cursors as XPM bitmaps.
* [include/cursoricon.h] [objects/cursoricon.c]
Rewrote all cursor and icon management to use the same memory
layout as Windows, and to factor common code between icons and
cursors. Implemented icon directory lookup to find the best
matching icon (i.e. the color one).
Implemented CopyCursor() and DumpIcon().
* [loader/module.c]
For disabled built-in modules, we now try to load the Windows DLL
first, and if this fails we fall back to using the built-in module
anyway.
* [memory/global.c]
Fixed GlobalHandle() to return the correct selector in the high
word even if we are passed a handle in the first place.
* [miscemu/instr.c]
Take into account the size of the operand and of the stack segment
when incrementing the stack pointer.
Avoid referencing FS_reg and GS_reg on *BSD.
* [objects/dib.c]
All DIB functions now accept a BITMAPCOREHEADER format bitmap.
Monochrome DIBs are created as monochrome bitmap iff they are
black and white.
* [objects/oembitmap.c]
Added support for OEM cursors, changed OBM_LoadIcon to use the new
icon memory layout.
* [rc/sysres_Fr.rc]
Added French [Fr] language support.
* [win32/environment.c]
Fixed GetCommandLineA() to use current PDB.
* [windows/event.c] [windows/winpos.c]
Simulate a mouse motion event upon SetWindowPos() to force the
cursor to be set correctly.
Sat Sep 30 17:49:32 Cameron Heide (heide@ee.ualberta.ca)
* [win32/*]
New Win32 kernel functions: GetACP, GetCPInfo,
GetEnvironmentVariableA, GetFileType, GetLastError, GetOEMCP,
GetStartupInfoA, GetTimeZoneInformation, SetEnvironmentVariable,
SetFilePointer, SetLastError, VirtualAlloc, VirtualFree,
WriteFile. Completed implementations of GetCommandLineA.
* [include/kernel32.h]
New file.
* [loader/main.c]
Call initialization function for Win32 data (doesn't currently do
anything).
* [misc/main.c]
Implemented GetEnvironmentVariableA, SetEnvironmentVariableA.
Sat Sep 30 00:26:56 1995 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [windows/winpos.c][miscemu/emulate.c][loader/module.c]
[misc/commdlg.c]
Misc. bug fixes
Fri Sep 29 16:16:13 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [*/*]
For Winelib, explicit casts have been placed where warnings were
usually generated.
printf formats which give the format for printing a handle as
"%04x" or something similar have been changed to use the NPFMT
macro defined in include/wintypes.h. Some times, explicit casts
were also necessary.
Parameter, field, and variable declarations have been made more
exact, such as converting 'WORD wParam' to 'WPARAM wParam' or
'WORD hFont' to 'HFONT hFont'.
Any call of the form GetWindowWord(hwnd,GWW_HINSTANCE) has been
replaced with a call to WIN_GetWindowInstance(hwnd).
* [controls/combo.c]
Added WINELIB32 support in CLBoxGetCombo().
* [include/dialog.h]
Commented out the '#ifndef WINELIB' around the '#pragma pack(1)'.
winelib needs the packing as well (e.g. when accessing resources
like sysres_DIALOG_SHELL_ABOUT_MSGBOX).
* [include/windows.h]
Got rid of the F[a-k] macros, which were cluttering up the global
namespace.
* [include/windows.h] [windows/defwnd.c]
Added Win32 messages WM_CTLCOLOR*.
* [include/wintypes.h]
Put in preprocessor '#define WINELIB32' if appropriate and changed
the types of some typedefs (WPARAM, HANDLE) based on this.
* [loader/module.c] [toolkit/miscstubs.c]
Added #ifdef'd portion in LoadModule to handle loading a WINElib
module (already loaded, just init values). '#ifdef'ed out the
definition for GetWndProcEntry16 and added a new version to
toolkit/miscstubs.c.
* [misc/shell.c]
Adjusted the lengths of AppName and AppMisc from 512,512 to 128,906.
Same amount of total storage, but much more reasonable. Also, changed
calls to strcpy() in ShellAbout() to calls to strncpy() instead.
This was a difficult bug to track down, but the AppMisc field was
being initialized with the contributers text, which was much larger
than 512 characters.
* [toolkit/atom.c]
New file for atom-handling functions. Copied from memory/atom.c and
then heavily modified. Right now, it's just a linked list of atoms.
Consider it as a hash table with just one entry. It's easily changed
later.
* [toolkit/heap.c]
Commented out the heap functions with a "#ifdef WINELIB16" and put in
a Win32 version (which is basically a modified copy).
* [toolkit/sup.c] [toolkit/miscstubs.c]
Moved the stuff I put in toolkit/sup.c into toolkit/miscstubs.c and
added quite a few more stubs.
* [toolkit/winmain.c]
Rearranged startup code in _WinMain. I think this will work.
* [toolkit/Makefile.in]
Added targets for 'hello' and 'hello2' in case anyone cares to try
out the sample programs.
Wed Sep 27 23:13:43 1995 Anand Kumria <akumria@ozemail.com.au>
* [miscemu/int2f.c] [miscemu/vxd.c] [if1632/winprocs.spec]
First attempt at support for some VxDs. Comm, Shell and Pagefile.
Tue Sep 26 21:34:45 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
DOS_SimplifyPath: Also remove "/./" from path. (Happens when
starting applications like 'wine ./excel.exe')
Sat Sep 23 23:32:40 1995 Morten Welinder <terra@diku.dk>
* [configure.in]
Avoid relative path for wine.ini.
* [rc/sysres_Da.rc]
Support for Danish [Da] language.
* [misc/main.c] [miscemu/cpu.c]
Return the processor we're running on correctly.
* [miscemu/int2f.c]
Minor stuff in int 0x2f, function 0x16.
Sat Sep 23 1995 17:58:04 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [misc/shell.c] [misc/main.c]
Implement saving and loading of the registry database (needed for
OLE). Very experimental. Fixed ShellExecute().
* [miscemu/int21.c]
EEXIST is not a critical error condition for mkdir().
Fri Sep 22 01:33:34 1995 Alex Korobka <alex@phm6.pharm.sunysb.edu>
* [include/shell.h] [misc/shell.c]
Implemented 4 drag/drop functions with documented functionality.
* [multimedia/time.c]
"Fixed" MMSysTimeCallback kludge so Excel5 loads up without crashing.
* [*/*]
Added new files, more message definitions, structures, debug info,
etc. Rewrote message logging functions to produce output similar
to WinSight. Check out -debugmsg +message option.
* [misc/file.c]
Fixed GetDriveType return value.
* [windows/message.c]
Hooks are invoked in normal order.
* [miscemu/*]
Added some functions and interrupts.
* [misc/shell.c]
Implemented Drag... functions.
Thu Sep 21 23:50:12 1995 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [rc/sysres_Fi.rc] [rc/sysres.rc]
First attempt at Finnish [Fi] language support.
1995-10-03 17:06:08 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
if (format != 'i' && count > 1)
|
|
|
|
{
|
2004-08-22 22:35:36 +00:00
|
|
|
print_address(&addr, FALSE);
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf(": ");
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (format)
|
|
|
|
{
|
|
|
|
case 'u':
|
|
|
|
if (count == 1) count = 256;
|
2005-05-24 11:46:25 +00:00
|
|
|
memory_get_string(dbg_curr_process, linear,
|
2004-08-22 22:35:36 +00:00
|
|
|
TRUE, TRUE, buffer, min(count, sizeof(buffer)));
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("%s\n", buffer);
|
|
|
|
return;
|
|
|
|
case 's':
|
|
|
|
if (count == 1) count = 256;
|
2005-05-24 11:46:25 +00:00
|
|
|
memory_get_string(dbg_curr_process, linear,
|
2004-08-22 22:35:36 +00:00
|
|
|
TRUE, FALSE, buffer, min(count, sizeof(buffer)));
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("%s\n", buffer);
|
|
|
|
return;
|
|
|
|
case 'i':
|
2004-08-22 22:35:36 +00:00
|
|
|
while (count-- && memory_disasm_one_insn(&addr));
|
2004-06-04 00:59:16 +00:00
|
|
|
return;
|
|
|
|
case 'g':
|
|
|
|
while (count--)
|
|
|
|
{
|
|
|
|
GUID guid;
|
2005-05-23 10:25:56 +00:00
|
|
|
if (!dbg_read_memory(linear, &guid, sizeof(guid)))
|
|
|
|
{
|
|
|
|
memory_report_invalid_addr(linear);
|
|
|
|
break;
|
|
|
|
}
|
2022-01-27 10:15:55 +00:00
|
|
|
dbg_printf("{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
|
2004-06-04 00:59:16 +00:00
|
|
|
guid.Data1, guid.Data2, guid.Data3,
|
|
|
|
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3],
|
|
|
|
guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
|
2004-08-22 22:35:36 +00:00
|
|
|
linear = (char*)linear + sizeof(guid);
|
|
|
|
addr.Offset += sizeof(guid);
|
2004-06-04 00:59:16 +00:00
|
|
|
if (count)
|
|
|
|
{
|
2004-08-22 22:35:36 +00:00
|
|
|
print_address(&addr, FALSE);
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf(": ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
|
|
|
|
#define DO_DUMP2(_t,_l,_f,_vv) { \
|
|
|
|
_t _v; \
|
|
|
|
for (i = 0; i < count; i++) { \
|
2005-05-23 10:25:56 +00:00
|
|
|
if (!dbg_read_memory(linear, &_v, sizeof(_t))) \
|
|
|
|
{ memory_report_invalid_addr(linear); break; } \
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf(_f, (_vv)); \
|
2004-08-22 22:35:36 +00:00
|
|
|
addr.Offset += sizeof(_t); \
|
|
|
|
linear = (char*)linear + sizeof(_t); \
|
|
|
|
if ((i % (_l)) == (_l) - 1 && i != count - 1) \
|
|
|
|
{ \
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("\n"); \
|
2004-08-22 22:35:36 +00:00
|
|
|
print_address(&addr, FALSE); \
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf(": "); \
|
|
|
|
} \
|
|
|
|
} \
|
|
|
|
dbg_printf("\n"); \
|
2009-12-14 21:05:34 +00:00
|
|
|
}
|
2004-06-04 00:59:16 +00:00
|
|
|
#define DO_DUMP(_t,_l,_f) DO_DUMP2(_t,_l,_f,_v)
|
|
|
|
|
2009-12-14 21:05:34 +00:00
|
|
|
case 'x': DO_DUMP(int, 4, " %8.8x"); break;
|
|
|
|
case 'd': DO_DUMP(unsigned int, 4, " %4.4d"); break;
|
|
|
|
case 'w': DO_DUMP(unsigned short, 8, " %04x"); break;
|
|
|
|
case 'a':
|
|
|
|
if (sizeof(DWORD_PTR) == 4)
|
|
|
|
{
|
2021-11-26 16:30:16 +00:00
|
|
|
DO_DUMP(DWORD_PTR, 4, " %8.8Ix");
|
2009-12-14 21:05:34 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-11-26 16:30:16 +00:00
|
|
|
DO_DUMP(DWORD_PTR, 2, " %16.16Ix");
|
2009-12-14 21:05:34 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 'c': DO_DUMP2(char, 32, " %c", (_v < 0x20) ? ' ' : _v); break;
|
|
|
|
case 'b': DO_DUMP2(char, 16, " %02x", (_v) & 0xff); break;
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2000-04-13 19:31:58 +00:00
|
|
|
}
|
|
|
|
|
2021-12-07 17:45:45 +00:00
|
|
|
BOOL memory_fetch_integer(const struct dbg_lvalue* lvalue, unsigned size,
|
|
|
|
BOOL is_signed, dbg_lgint_t* ret)
|
|
|
|
{
|
|
|
|
/* size must fit in ret and be a power of two */
|
|
|
|
if (size > sizeof(*ret) || (size & (size - 1))) return FALSE;
|
|
|
|
|
2021-12-08 13:44:08 +00:00
|
|
|
if (lvalue->bitlen)
|
|
|
|
{
|
|
|
|
struct dbg_lvalue alt_lvalue = *lvalue;
|
|
|
|
dbg_lguint_t mask;
|
|
|
|
DWORD bt;
|
|
|
|
/* FIXME: this test isn't sufficient, depending on start of bitfield
|
|
|
|
* (ie a 64 bit field can spread across 9 bytes)
|
|
|
|
*/
|
|
|
|
if (lvalue->bitlen > 8 * sizeof(dbg_lgint_t)) return FALSE;
|
|
|
|
alt_lvalue.addr.Offset += lvalue->bitstart >> 3;
|
|
|
|
/*
|
|
|
|
* Bitfield operation. We have to extract the field.
|
|
|
|
*/
|
|
|
|
if (!memory_read_value(&alt_lvalue, sizeof(*ret), ret)) return FALSE;
|
|
|
|
mask = ~(dbg_lguint_t)0 << lvalue->bitlen;
|
|
|
|
*ret >>= lvalue->bitstart & 7;
|
|
|
|
*ret &= ~mask;
|
2021-12-07 17:45:45 +00:00
|
|
|
|
2021-12-08 13:44:08 +00:00
|
|
|
/*
|
|
|
|
* OK, now we have the correct part of the number.
|
|
|
|
* Check to see whether the basic type is signed or not, and if so,
|
|
|
|
* we need to sign extend the number.
|
|
|
|
*/
|
|
|
|
if (types_get_info(&lvalue->type, TI_GET_BASETYPE, &bt) &&
|
|
|
|
(bt == btInt || bt == btLong) && (*ret & (1 << (lvalue->bitlen - 1))))
|
|
|
|
{
|
|
|
|
*ret |= mask;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2021-12-07 17:45:45 +00:00
|
|
|
{
|
2021-12-08 13:44:08 +00:00
|
|
|
/* we are on little endian CPU */
|
|
|
|
memset(ret, 0, sizeof(*ret)); /* clear unread bytes */
|
|
|
|
if (!memory_read_value(lvalue, size, ret)) return FALSE;
|
|
|
|
|
|
|
|
/* propagate sign information */
|
|
|
|
if (is_signed && size < 8 && (*ret >> (size * 8 - 1)) != 0)
|
|
|
|
{
|
|
|
|
dbg_lguint_t neg = -1;
|
|
|
|
*ret |= neg << (size * 8);
|
|
|
|
}
|
2021-12-07 17:45:45 +00:00
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOL memory_store_integer(const struct dbg_lvalue* lvalue, dbg_lgint_t val)
|
|
|
|
{
|
|
|
|
DWORD64 size;
|
|
|
|
if (!types_get_info(&lvalue->type, TI_GET_LENGTH, &size)) return FALSE;
|
2021-12-08 13:44:32 +00:00
|
|
|
if (lvalue->bitlen)
|
|
|
|
{
|
|
|
|
struct dbg_lvalue alt_lvalue = *lvalue;
|
|
|
|
dbg_lguint_t mask, dst;
|
|
|
|
|
|
|
|
/* FIXME: this test isn't sufficient, depending on start of bitfield
|
|
|
|
* (ie a 64 bit field can spread across 9 bytes)
|
|
|
|
*/
|
|
|
|
if (lvalue->bitlen > 8 * sizeof(dbg_lgint_t)) return FALSE;
|
|
|
|
/* mask is 1 where bitfield is present, 0 outside */
|
|
|
|
mask = (~(dbg_lguint_t)0 >> (sizeof(val) * 8 - lvalue->bitlen)) << (lvalue->bitstart & 7);
|
|
|
|
alt_lvalue.addr.Offset += lvalue->bitstart >> 3;
|
|
|
|
val <<= lvalue->bitstart & 7;
|
|
|
|
if (!memory_read_value(&alt_lvalue, (unsigned)size, &dst)) return FALSE;
|
|
|
|
val = (dst & ~mask) | (val & mask);
|
|
|
|
return memory_write_value(&alt_lvalue, (unsigned)size, &val);
|
|
|
|
}
|
2021-12-07 17:45:45 +00:00
|
|
|
/* this is simple if we're on a little endian CPU */
|
|
|
|
return memory_write_value(lvalue, (unsigned)size, &val);
|
|
|
|
}
|
|
|
|
|
2021-12-08 13:44:38 +00:00
|
|
|
BOOL memory_fetch_float(const struct dbg_lvalue* lvalue, double *ret)
|
|
|
|
{
|
|
|
|
DWORD64 size;
|
|
|
|
if (!types_get_info(&lvalue->type, TI_GET_LENGTH, &size)) return FALSE;
|
|
|
|
/* FIXME: this assumes that debuggee and debugger use the same
|
|
|
|
* representation for reals
|
|
|
|
*/
|
|
|
|
if (size > sizeof(*ret)) return FALSE;
|
|
|
|
if (!memory_read_value(lvalue, size, ret)) return FALSE;
|
|
|
|
|
|
|
|
if (size == sizeof(float)) *ret = *(float*)ret;
|
|
|
|
else if (size != sizeof(double)) return FALSE;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
2021-12-07 17:45:45 +00:00
|
|
|
|
2021-12-08 13:44:44 +00:00
|
|
|
BOOL memory_store_float(const struct dbg_lvalue* lvalue, double *ret)
|
|
|
|
{
|
|
|
|
DWORD64 size;
|
|
|
|
if (!types_get_info(&lvalue->type, TI_GET_LENGTH, &size)) return FALSE;
|
|
|
|
/* FIXME: this assumes that debuggee and debugger use the same
|
|
|
|
* representation for reals
|
|
|
|
*/
|
|
|
|
if (size > sizeof(*ret)) return FALSE;
|
|
|
|
if (size == sizeof(float))
|
|
|
|
{
|
|
|
|
float f = *ret;
|
|
|
|
return memory_write_value(lvalue, size, &f);
|
|
|
|
}
|
|
|
|
if (size != sizeof(double)) return FALSE;
|
|
|
|
return memory_write_value(lvalue, size, ret);
|
|
|
|
}
|
|
|
|
|
2005-05-24 11:46:25 +00:00
|
|
|
BOOL memory_get_string(struct dbg_process* pcs, void* addr, BOOL in_debuggee,
|
|
|
|
BOOL unicode, char* buffer, int size)
|
2000-03-08 16:44:54 +00:00
|
|
|
{
|
2006-06-30 19:37:38 +00:00
|
|
|
SIZE_T sz;
|
2004-06-04 00:59:16 +00:00
|
|
|
WCHAR* buffW;
|
2000-03-08 16:44:54 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
buffer[0] = 0;
|
|
|
|
if (!addr) return FALSE;
|
2004-08-22 22:35:36 +00:00
|
|
|
if (in_debuggee)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2005-08-19 10:26:23 +00:00
|
|
|
BOOL ret;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2005-08-19 10:26:23 +00:00
|
|
|
if (!unicode) ret = pcs->process_io->read(pcs->handle, addr, buffer, size, &sz);
|
|
|
|
else
|
|
|
|
{
|
2022-07-20 12:28:42 +00:00
|
|
|
buffW = malloc(size * sizeof(WCHAR));
|
2005-08-19 10:26:23 +00:00
|
|
|
ret = pcs->process_io->read(pcs->handle, addr, buffW, size * sizeof(WCHAR), &sz);
|
|
|
|
WideCharToMultiByte(CP_ACP, 0, buffW, sz / sizeof(WCHAR), buffer, size,
|
|
|
|
NULL, NULL);
|
2022-07-20 12:28:42 +00:00
|
|
|
free(buffW);
|
2005-08-19 10:26:23 +00:00
|
|
|
}
|
|
|
|
if (size) buffer[size-1] = 0;
|
|
|
|
return ret;
|
2004-08-22 22:35:36 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2005-03-28 14:17:51 +00:00
|
|
|
lstrcpynA(buffer, addr, size);
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2004-08-22 22:35:36 +00:00
|
|
|
return TRUE;
|
2000-03-08 16:44:54 +00:00
|
|
|
}
|
Release 951003
Sun Oct 1 15:48:34 1995 Alexandre Julliard <julliard@sunsite.unc>
* [controls/menu.c]
Fixed GetMenuString() for non-string items.
* [debugger/*.c]
First attempt to check validity of pointers before memory
accesses. For now only segmented pointers are checked.
* [debugger/dbg.y] [memory/ldt.c]
Added possibility to dump only one segment with 'info segment'.
* [include/bitmaps/ocr_*]
Added all OEM cursors as XPM bitmaps.
* [include/cursoricon.h] [objects/cursoricon.c]
Rewrote all cursor and icon management to use the same memory
layout as Windows, and to factor common code between icons and
cursors. Implemented icon directory lookup to find the best
matching icon (i.e. the color one).
Implemented CopyCursor() and DumpIcon().
* [loader/module.c]
For disabled built-in modules, we now try to load the Windows DLL
first, and if this fails we fall back to using the built-in module
anyway.
* [memory/global.c]
Fixed GlobalHandle() to return the correct selector in the high
word even if we are passed a handle in the first place.
* [miscemu/instr.c]
Take into account the size of the operand and of the stack segment
when incrementing the stack pointer.
Avoid referencing FS_reg and GS_reg on *BSD.
* [objects/dib.c]
All DIB functions now accept a BITMAPCOREHEADER format bitmap.
Monochrome DIBs are created as monochrome bitmap iff they are
black and white.
* [objects/oembitmap.c]
Added support for OEM cursors, changed OBM_LoadIcon to use the new
icon memory layout.
* [rc/sysres_Fr.rc]
Added French [Fr] language support.
* [win32/environment.c]
Fixed GetCommandLineA() to use current PDB.
* [windows/event.c] [windows/winpos.c]
Simulate a mouse motion event upon SetWindowPos() to force the
cursor to be set correctly.
Sat Sep 30 17:49:32 Cameron Heide (heide@ee.ualberta.ca)
* [win32/*]
New Win32 kernel functions: GetACP, GetCPInfo,
GetEnvironmentVariableA, GetFileType, GetLastError, GetOEMCP,
GetStartupInfoA, GetTimeZoneInformation, SetEnvironmentVariable,
SetFilePointer, SetLastError, VirtualAlloc, VirtualFree,
WriteFile. Completed implementations of GetCommandLineA.
* [include/kernel32.h]
New file.
* [loader/main.c]
Call initialization function for Win32 data (doesn't currently do
anything).
* [misc/main.c]
Implemented GetEnvironmentVariableA, SetEnvironmentVariableA.
Sat Sep 30 00:26:56 1995 Niels de Carpentier <niels@cindy.et.tudelft.nl>
* [windows/winpos.c][miscemu/emulate.c][loader/module.c]
[misc/commdlg.c]
Misc. bug fixes
Fri Sep 29 16:16:13 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [*/*]
For Winelib, explicit casts have been placed where warnings were
usually generated.
printf formats which give the format for printing a handle as
"%04x" or something similar have been changed to use the NPFMT
macro defined in include/wintypes.h. Some times, explicit casts
were also necessary.
Parameter, field, and variable declarations have been made more
exact, such as converting 'WORD wParam' to 'WPARAM wParam' or
'WORD hFont' to 'HFONT hFont'.
Any call of the form GetWindowWord(hwnd,GWW_HINSTANCE) has been
replaced with a call to WIN_GetWindowInstance(hwnd).
* [controls/combo.c]
Added WINELIB32 support in CLBoxGetCombo().
* [include/dialog.h]
Commented out the '#ifndef WINELIB' around the '#pragma pack(1)'.
winelib needs the packing as well (e.g. when accessing resources
like sysres_DIALOG_SHELL_ABOUT_MSGBOX).
* [include/windows.h]
Got rid of the F[a-k] macros, which were cluttering up the global
namespace.
* [include/windows.h] [windows/defwnd.c]
Added Win32 messages WM_CTLCOLOR*.
* [include/wintypes.h]
Put in preprocessor '#define WINELIB32' if appropriate and changed
the types of some typedefs (WPARAM, HANDLE) based on this.
* [loader/module.c] [toolkit/miscstubs.c]
Added #ifdef'd portion in LoadModule to handle loading a WINElib
module (already loaded, just init values). '#ifdef'ed out the
definition for GetWndProcEntry16 and added a new version to
toolkit/miscstubs.c.
* [misc/shell.c]
Adjusted the lengths of AppName and AppMisc from 512,512 to 128,906.
Same amount of total storage, but much more reasonable. Also, changed
calls to strcpy() in ShellAbout() to calls to strncpy() instead.
This was a difficult bug to track down, but the AppMisc field was
being initialized with the contributers text, which was much larger
than 512 characters.
* [toolkit/atom.c]
New file for atom-handling functions. Copied from memory/atom.c and
then heavily modified. Right now, it's just a linked list of atoms.
Consider it as a hash table with just one entry. It's easily changed
later.
* [toolkit/heap.c]
Commented out the heap functions with a "#ifdef WINELIB16" and put in
a Win32 version (which is basically a modified copy).
* [toolkit/sup.c] [toolkit/miscstubs.c]
Moved the stuff I put in toolkit/sup.c into toolkit/miscstubs.c and
added quite a few more stubs.
* [toolkit/winmain.c]
Rearranged startup code in _WinMain. I think this will work.
* [toolkit/Makefile.in]
Added targets for 'hello' and 'hello2' in case anyone cares to try
out the sample programs.
Wed Sep 27 23:13:43 1995 Anand Kumria <akumria@ozemail.com.au>
* [miscemu/int2f.c] [miscemu/vxd.c] [if1632/winprocs.spec]
First attempt at support for some VxDs. Comm, Shell and Pagefile.
Tue Sep 26 21:34:45 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/dos_fs.c]
DOS_SimplifyPath: Also remove "/./" from path. (Happens when
starting applications like 'wine ./excel.exe')
Sat Sep 23 23:32:40 1995 Morten Welinder <terra@diku.dk>
* [configure.in]
Avoid relative path for wine.ini.
* [rc/sysres_Da.rc]
Support for Danish [Da] language.
* [misc/main.c] [miscemu/cpu.c]
Return the processor we're running on correctly.
* [miscemu/int2f.c]
Minor stuff in int 0x2f, function 0x16.
Sat Sep 23 1995 17:58:04 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [misc/shell.c] [misc/main.c]
Implement saving and loading of the registry database (needed for
OLE). Very experimental. Fixed ShellExecute().
* [miscemu/int21.c]
EEXIST is not a critical error condition for mkdir().
Fri Sep 22 01:33:34 1995 Alex Korobka <alex@phm6.pharm.sunysb.edu>
* [include/shell.h] [misc/shell.c]
Implemented 4 drag/drop functions with documented functionality.
* [multimedia/time.c]
"Fixed" MMSysTimeCallback kludge so Excel5 loads up without crashing.
* [*/*]
Added new files, more message definitions, structures, debug info,
etc. Rewrote message logging functions to produce output similar
to WinSight. Check out -debugmsg +message option.
* [misc/file.c]
Fixed GetDriveType return value.
* [windows/message.c]
Hooks are invoked in normal order.
* [miscemu/*]
Added some functions and interrupts.
* [misc/shell.c]
Implemented Drag... functions.
Thu Sep 21 23:50:12 1995 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [rc/sysres_Fi.rc] [rc/sysres.rc]
First attempt at Finnish [Fi] language support.
1995-10-03 17:06:08 +00:00
|
|
|
|
2008-10-18 07:15:10 +00:00
|
|
|
BOOL memory_get_string_indirect(struct dbg_process* pcs, void* addr, BOOL unicode, WCHAR* buffer, int size)
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
{
|
2020-04-04 09:30:13 +00:00
|
|
|
void* ad = 0;
|
2006-06-30 19:37:38 +00:00
|
|
|
SIZE_T sz;
|
2000-04-30 12:21:15 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
buffer[0] = 0;
|
2008-10-18 07:15:10 +00:00
|
|
|
if (addr &&
|
2020-04-04 09:30:13 +00:00
|
|
|
pcs->process_io->read(pcs->handle, addr, &ad, pcs->be_cpu->pointer_size, &sz) && sz == pcs->be_cpu->pointer_size && ad)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2008-10-18 07:15:10 +00:00
|
|
|
LPSTR buff;
|
|
|
|
BOOL ret;
|
|
|
|
|
|
|
|
if (unicode)
|
|
|
|
ret = pcs->process_io->read(pcs->handle, ad, buffer, size * sizeof(WCHAR), &sz) && sz != 0;
|
|
|
|
else
|
|
|
|
{
|
2022-07-20 12:28:42 +00:00
|
|
|
if ((buff = malloc(size)))
|
2008-10-18 07:15:10 +00:00
|
|
|
{
|
|
|
|
ret = pcs->process_io->read(pcs->handle, ad, buff, size, &sz) && sz != 0;
|
|
|
|
MultiByteToWideChar(CP_ACP, 0, buff, sz, buffer, size);
|
2022-07-20 12:28:42 +00:00
|
|
|
free(buff);
|
2008-10-18 07:15:10 +00:00
|
|
|
}
|
|
|
|
else ret = FALSE;
|
|
|
|
}
|
|
|
|
if (size) buffer[size-1] = 0;
|
|
|
|
return ret;
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
return FALSE;
|
|
|
|
}
|
2000-04-30 12:21:15 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
/*
|
|
|
|
* Convert an address offset to hex string. If mode == 32, treat offset as
|
|
|
|
* 32 bits (discard upper 32 bits), if mode == 64 use all 64 bits, if mode == 0
|
|
|
|
* treat as either 32 or 64 bits, depending on whether we're running as
|
|
|
|
* Wine32 or Wine64.
|
|
|
|
*/
|
|
|
|
char* memory_offset_to_string(char *str, DWORD64 offset, unsigned mode)
|
|
|
|
{
|
|
|
|
if (mode != 32 && mode != 64)
|
|
|
|
{
|
|
|
|
#ifdef _WIN64
|
|
|
|
mode = 64;
|
|
|
|
#else
|
|
|
|
mode = 32;
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
if (mode == 32)
|
|
|
|
sprintf(str, "0x%08x", (unsigned int) offset);
|
|
|
|
else
|
2022-04-11 07:43:55 +00:00
|
|
|
sprintf(str, "%#016I64x", offset);
|
2006-07-26 09:57:27 +00:00
|
|
|
|
|
|
|
return str;
|
|
|
|
}
|
|
|
|
|
2021-12-08 13:43:50 +00:00
|
|
|
static void dbg_print_sdecimal(dbg_lgint_t sv)
|
2006-09-25 20:45:39 +00:00
|
|
|
{
|
2021-12-08 13:43:50 +00:00
|
|
|
dbg_printf("%I64d", sv);
|
2006-09-25 20:45:39 +00:00
|
|
|
}
|
|
|
|
|
2021-12-08 13:43:44 +00:00
|
|
|
static void dbg_print_hex(DWORD size, dbg_lgint_t sv)
|
2010-02-16 08:36:21 +00:00
|
|
|
{
|
|
|
|
if (!sv)
|
|
|
|
dbg_printf("0");
|
|
|
|
else
|
2021-12-01 14:30:53 +00:00
|
|
|
/* clear unneeded high bits, esp. sign extension */
|
2021-12-08 13:43:44 +00:00
|
|
|
dbg_printf("%#I64x", sv & (~(dbg_lguint_t)0 >> (8 * (sizeof(dbg_lgint_t) - size))));
|
2010-02-16 08:36:21 +00:00
|
|
|
}
|
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
static void print_typed_basic(const struct dbg_lvalue* lvalue)
|
|
|
|
{
|
2021-12-07 17:45:45 +00:00
|
|
|
dbg_lgint_t val_int;
|
2004-06-04 00:59:16 +00:00
|
|
|
void* val_ptr;
|
2021-10-04 13:00:20 +00:00
|
|
|
double val_real;
|
2005-11-17 11:51:53 +00:00
|
|
|
DWORD64 size64;
|
2004-08-22 22:35:36 +00:00
|
|
|
DWORD tag, size, count, bt;
|
2006-06-18 19:30:45 +00:00
|
|
|
struct dbg_type type = lvalue->type;
|
|
|
|
struct dbg_type sub_type;
|
2010-02-03 20:47:07 +00:00
|
|
|
struct dbg_lvalue sub_lvalue;
|
2000-04-30 12:21:15 +00:00
|
|
|
|
2006-06-18 19:30:45 +00:00
|
|
|
if (!types_get_real_type(&type, &tag)) return;
|
2002-05-31 23:06:46 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
switch (tag)
|
|
|
|
{
|
|
|
|
case SymTagBaseType:
|
2006-06-18 19:30:45 +00:00
|
|
|
if (!types_get_info(&type, TI_GET_LENGTH, &size64) ||
|
|
|
|
!types_get_info(&type, TI_GET_BASETYPE, &bt))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
|
|
|
WINE_ERR("Couldn't get information\n");
|
|
|
|
RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
|
2014-08-10 01:38:49 +00:00
|
|
|
return;
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2005-11-17 11:51:53 +00:00
|
|
|
size = (DWORD)size64;
|
2004-06-04 00:59:16 +00:00
|
|
|
switch (bt)
|
|
|
|
{
|
|
|
|
case btInt:
|
2006-08-27 06:50:33 +00:00
|
|
|
case btLong:
|
2021-12-07 17:45:45 +00:00
|
|
|
if (!memory_fetch_integer(lvalue, size, TRUE, &val_int)) return;
|
2010-12-26 14:21:11 +00:00
|
|
|
dbg_print_hex(size, val_int);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case btUInt:
|
2006-08-27 06:50:33 +00:00
|
|
|
case btULong:
|
2021-12-07 17:45:45 +00:00
|
|
|
if (!memory_fetch_integer(lvalue, size, FALSE, &val_int)) return;
|
2010-12-26 14:21:11 +00:00
|
|
|
dbg_print_hex(size, val_int);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case btFloat:
|
2021-12-08 13:44:38 +00:00
|
|
|
if (!memory_fetch_float(lvalue, &val_real)) return;
|
2021-10-04 13:00:20 +00:00
|
|
|
dbg_printf("%f", val_real);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case btChar:
|
2021-12-07 17:45:45 +00:00
|
|
|
if (!memory_fetch_integer(lvalue, size, TRUE, &val_int)) return;
|
2022-05-20 15:03:27 +00:00
|
|
|
if (size == 1 && isprint((char)val_int))
|
2011-03-15 20:18:21 +00:00
|
|
|
dbg_printf("'%c'", (char)val_int);
|
2004-06-04 00:59:16 +00:00
|
|
|
else
|
2022-05-20 15:03:27 +00:00
|
|
|
dbg_print_hex(size, val_int);
|
|
|
|
break;
|
|
|
|
case btWChar:
|
|
|
|
if (!memory_fetch_integer(lvalue, size, TRUE, &val_int)) return;
|
|
|
|
if (size == 2 && iswprint((WCHAR)val_int))
|
|
|
|
dbg_printf("L'%lc'", (WCHAR)val_int);
|
|
|
|
else
|
|
|
|
dbg_print_hex(size, val_int);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
2008-06-11 19:39:54 +00:00
|
|
|
case btBool:
|
2021-12-07 17:45:45 +00:00
|
|
|
if (!memory_fetch_integer(lvalue, size, TRUE, &val_int)) return;
|
2008-06-11 19:39:54 +00:00
|
|
|
dbg_printf("%s", val_int ? "true" : "false");
|
|
|
|
break;
|
2004-06-04 00:59:16 +00:00
|
|
|
default:
|
2022-02-07 07:40:49 +00:00
|
|
|
WINE_FIXME("Unsupported basetype %lu\n", bt);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case SymTagPointerType:
|
2010-04-12 19:18:25 +00:00
|
|
|
if (!types_array_index(lvalue, 0, &sub_lvalue))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2010-02-03 20:47:07 +00:00
|
|
|
dbg_printf("Internal symbol error: unable to access memory location %p",
|
|
|
|
memory_to_linear_addr(&lvalue->addr));
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
}
|
2010-02-03 20:47:07 +00:00
|
|
|
val_ptr = memory_to_linear_addr(&sub_lvalue.addr);
|
|
|
|
if (types_get_real_type(&sub_lvalue.type, &tag) && tag == SymTagBaseType &&
|
|
|
|
types_get_info(&sub_lvalue.type, TI_GET_BASETYPE, &bt) &&
|
|
|
|
types_get_info(&sub_lvalue.type, TI_GET_LENGTH, &size64))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
|
|
|
char buffer[1024];
|
|
|
|
|
2005-10-10 10:27:22 +00:00
|
|
|
if (!val_ptr) dbg_printf("0x0");
|
2022-05-20 15:03:27 +00:00
|
|
|
else if ((bt == btChar && size64 == 1) || (bt == btWChar && size64 == 2))
|
2010-02-03 20:47:07 +00:00
|
|
|
{
|
2021-12-08 13:43:56 +00:00
|
|
|
if (memory_get_string(dbg_curr_process, val_ptr, sub_lvalue.in_debuggee,
|
2022-05-20 15:03:27 +00:00
|
|
|
bt == btWChar, buffer, sizeof(buffer)))
|
|
|
|
dbg_printf("%s\"%s\"", bt == btWChar ? "L" : "", buffer);
|
2010-02-03 20:47:07 +00:00
|
|
|
else
|
|
|
|
dbg_printf("*** invalid address %p ***", val_ptr);
|
|
|
|
break;
|
|
|
|
}
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2010-02-03 20:47:07 +00:00
|
|
|
dbg_printf("%p", val_ptr);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case SymTagArrayType:
|
|
|
|
case SymTagUDT:
|
|
|
|
if (!memory_read_value(lvalue, sizeof(val_ptr), &val_ptr)) return;
|
|
|
|
dbg_printf("%p", val_ptr);
|
|
|
|
break;
|
|
|
|
case SymTagEnum:
|
|
|
|
{
|
|
|
|
BOOL ok = FALSE;
|
|
|
|
|
2021-11-26 16:30:40 +00:00
|
|
|
if (!types_get_info(&type, TI_GET_LENGTH, &size64) ||
|
2021-12-07 17:45:45 +00:00
|
|
|
!memory_fetch_integer(lvalue, size64, TRUE, &val_int)) return;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2006-06-18 19:30:45 +00:00
|
|
|
if (types_get_info(&type, TI_GET_CHILDRENCOUNT, &count))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2004-08-22 22:35:36 +00:00
|
|
|
char buffer[sizeof(TI_FINDCHILDREN_PARAMS) + 256 * sizeof(DWORD)];
|
|
|
|
TI_FINDCHILDREN_PARAMS* fcp = (TI_FINDCHILDREN_PARAMS*)buffer;
|
|
|
|
WCHAR* ptr;
|
|
|
|
VARIANT variant;
|
|
|
|
int i;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
|
|
|
fcp->Start = 0;
|
|
|
|
while (count)
|
|
|
|
{
|
|
|
|
fcp->Count = min(count, 256);
|
2006-06-18 19:30:45 +00:00
|
|
|
if (types_get_info(&type, TI_FINDCHILDREN, fcp))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2006-06-18 19:30:45 +00:00
|
|
|
sub_type.module = type.module;
|
2004-06-04 00:59:16 +00:00
|
|
|
for (i = 0; i < min(fcp->Count, count); i++)
|
|
|
|
{
|
2006-06-18 19:30:45 +00:00
|
|
|
sub_type.id = fcp->ChildId[i];
|
|
|
|
if (!types_get_info(&sub_type, TI_GET_VALUE, &variant))
|
2004-06-04 00:59:16 +00:00
|
|
|
continue;
|
2021-11-26 16:30:34 +00:00
|
|
|
switch (V_VT(&variant))
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2021-11-26 16:30:40 +00:00
|
|
|
case VT_I1: ok = (val_int == V_I1(&variant)); break;
|
|
|
|
case VT_I2: ok = (val_int == V_I2(&variant)); break;
|
2021-11-26 16:30:34 +00:00
|
|
|
case VT_I4: ok = (val_int == V_I4(&variant)); break;
|
2021-11-26 16:30:40 +00:00
|
|
|
case VT_I8: ok = (val_int == V_I8(&variant)); break;
|
2021-11-26 16:30:34 +00:00
|
|
|
default: WINE_FIXME("Unsupported variant type (%u)\n", V_VT(&variant));
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
2021-12-01 14:30:47 +00:00
|
|
|
if (ok && types_get_info(&sub_type, TI_GET_SYMNAME, &ptr) && ptr)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2021-12-01 14:30:47 +00:00
|
|
|
dbg_printf("%ls", ptr);
|
2004-06-04 00:59:16 +00:00
|
|
|
HeapFree(GetProcessHeap(), 0, ptr);
|
2019-06-04 18:28:23 +00:00
|
|
|
count = 0; /* so that we'll get away from outer loop */
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2008-09-10 07:39:24 +00:00
|
|
|
count -= min(count, 256);
|
|
|
|
fcp->Start += 256;
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
}
|
2021-12-08 13:43:50 +00:00
|
|
|
if (!ok) dbg_print_sdecimal(val_int);
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
2022-02-07 07:40:49 +00:00
|
|
|
WINE_FIXME("Unsupported tag %lu\n", tag);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
2000-04-30 12:21:15 +00:00
|
|
|
}
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
2004-06-04 00:59:16 +00:00
|
|
|
* print_basic
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
*
|
2004-06-04 00:59:16 +00:00
|
|
|
* Implementation of the 'print' command.
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
*/
|
2008-05-23 18:04:55 +00:00
|
|
|
void print_basic(const struct dbg_lvalue* lvalue, char format)
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
{
|
2004-08-22 22:35:36 +00:00
|
|
|
if (lvalue->type.id == dbg_itype_none)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
|
|
|
dbg_printf("Unable to evaluate expression\n");
|
|
|
|
return;
|
|
|
|
}
|
2000-04-30 12:21:15 +00:00
|
|
|
|
2008-05-01 11:57:18 +00:00
|
|
|
if (format != 0)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
2008-05-23 18:05:01 +00:00
|
|
|
unsigned size;
|
2021-12-07 17:45:51 +00:00
|
|
|
dbg_lgint_t res = types_extract_as_lgint(lvalue, &size, NULL);
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2008-05-01 11:57:18 +00:00
|
|
|
switch (format)
|
|
|
|
{
|
|
|
|
case 'x':
|
2021-12-08 13:43:44 +00:00
|
|
|
dbg_print_hex(size, res);
|
2008-05-01 11:57:18 +00:00
|
|
|
return;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2008-05-01 11:57:18 +00:00
|
|
|
case 'd':
|
2021-12-08 13:43:50 +00:00
|
|
|
dbg_print_sdecimal(res);
|
2008-05-01 11:57:18 +00:00
|
|
|
return;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2008-05-01 11:57:18 +00:00
|
|
|
case 'c':
|
|
|
|
dbg_printf("%d = '%c'", (char)(res & 0xff), (char)(res & 0xff));
|
|
|
|
return;
|
|
|
|
|
|
|
|
case 'u':
|
2022-03-18 16:25:24 +00:00
|
|
|
dbg_printf("%d = '%lc'", (WCHAR)(res & 0xFFFF), (WCHAR)(res & 0xFFFF));
|
2008-05-01 11:57:18 +00:00
|
|
|
return;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
2008-05-01 11:57:18 +00:00
|
|
|
case 'i':
|
|
|
|
case 's':
|
|
|
|
case 'w':
|
|
|
|
case 'b':
|
|
|
|
dbg_printf("Format specifier '%c' is meaningless in 'print' command\n", format);
|
2006-11-24 21:18:51 +00:00
|
|
|
}
|
2000-04-30 12:21:15 +00:00
|
|
|
}
|
2008-05-01 11:57:18 +00:00
|
|
|
if (lvalue->type.id == dbg_itype_segptr)
|
|
|
|
{
|
2021-12-08 13:43:50 +00:00
|
|
|
dbg_print_sdecimal(types_extract_as_lgint(lvalue, NULL, NULL));
|
2008-05-01 11:57:18 +00:00
|
|
|
}
|
|
|
|
else print_typed_basic(lvalue);
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
}
|
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
void print_bare_address(const ADDRESS64* addr)
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
{
|
2006-07-26 09:57:27 +00:00
|
|
|
char hexbuf[MAX_OFFSET_TO_STR_LEN];
|
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
switch (addr->Mode)
|
|
|
|
{
|
|
|
|
case AddrModeFlat:
|
2006-07-26 09:57:27 +00:00
|
|
|
dbg_printf("%s", memory_offset_to_string(hexbuf, addr->Offset, 0));
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case AddrModeReal:
|
|
|
|
case AddrMode1616:
|
2006-07-26 09:57:27 +00:00
|
|
|
dbg_printf("0x%04x:0x%04x", addr->Segment, (unsigned) addr->Offset);
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
|
|
|
case AddrMode1632:
|
2006-07-26 09:57:27 +00:00
|
|
|
dbg_printf("0x%04x:%s", addr->Segment,
|
|
|
|
memory_offset_to_string(hexbuf, addr->Offset, 32));
|
2004-06-04 00:59:16 +00:00
|
|
|
break;
|
2004-08-22 22:35:36 +00:00
|
|
|
default:
|
2018-02-10 16:46:06 +00:00
|
|
|
dbg_printf("Unknown mode %x", addr->Mode);
|
2004-08-22 22:35:36 +00:00
|
|
|
break;
|
1997-02-02 19:01:52 +00:00
|
|
|
}
|
2000-07-25 12:51:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/***********************************************************************
|
2004-06-04 00:59:16 +00:00
|
|
|
* print_address
|
2000-07-25 12:51:56 +00:00
|
|
|
*
|
2004-06-04 00:59:16 +00:00
|
|
|
* Print an 16- or 32-bit address, with the nearest symbol if any.
|
2000-07-25 12:51:56 +00:00
|
|
|
*/
|
2006-07-26 09:57:27 +00:00
|
|
|
void print_address(const ADDRESS64* addr, BOOLEAN with_line)
|
2000-07-25 12:51:56 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
char buffer[sizeof(SYMBOL_INFO) + 256];
|
|
|
|
SYMBOL_INFO* si = (SYMBOL_INFO*)buffer;
|
2021-11-26 16:30:22 +00:00
|
|
|
DWORD_PTR lin = (DWORD_PTR)memory_to_linear_addr(addr);
|
2005-01-31 11:34:59 +00:00
|
|
|
DWORD64 disp64;
|
|
|
|
DWORD disp;
|
2021-11-26 16:30:22 +00:00
|
|
|
IMAGEHLP_MODULE im;
|
2000-07-25 12:51:56 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
print_bare_address(addr);
|
Release 970112
Sat Jan 11 18:17:59 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/menu.c]
Updated to new Win32 types.
* [controls/listbox.c]
Fixed Winfile extended selection bug.
* [files/directory.c]
Changed DIR_SearchPath to return both long and short file names.
* [files/dos_fs.c]
Implemented VFAT ioctl to retrieve the original short filenames
from a VFAT filesystem (Linux only for now).
Replaced DOSFS_GetUnixFileName()/DOSFS_GetDosTrueName() by
DOS_GetFullName().
Properly implemented GetShortPathName() and GetFullPathName().
Made all functions re-entrant.
* [files/file.c] [misc/main.c]
Replaced -allowreadonly option by -failreadonly. The default is
now to report success when opening a read-only file for writing.
* [objects/metafile.c]
Fixed bug in DIB bitmaps pointer calculation.
* [scheduler/process.c]
Implemented environment strings and Get/SetStdHandle with process
environment block.
* [tools/build.c]
Rewrote BuildContext32() to avoid instructions that may not be
supported by all assemblers.
Fri Jan 10 17:11:09 1997 David Faure <david.faure@ifhamy.insa-lyon.fr>
* [windows/event.c]
Created table keyc2vkey, which associate a vkey(+extended bit) to
any keycode. Changed EVENT_event_to_vkey to use this table to
return the correct vkey. Changed EVENT_ToAscii to get the keycode
from this table too. Assigned OEM specific vkeys arbitrarily.
Fri Jan 10 09:26:17 1997 John Harvey <john@division.co.uk>
* [misc/winsock.c] [misc/winsoc_async.c]
Fixed svr4 header files.
Changed bzero() to memset().
* [tools/fnt2bdf.c]
Removed bcopy() and used memcpy() instead.
* [debugger/msc.c]
Include string.h instead of strings.h
* [debugger/stabs.c]
Include string.h instead of strings.h.
Define __ELF__ for svr4 systems.
* [loader/signal.c]
Use wait() instead of wait4() which doesnt exist on Unixware.
* [memory/global.c]
Use sysconf() instead of getpagesize() for svr4 systems.
Thu Jan 9 21:07:20 1997 Robert Pouliot <krynos@clic.net>
* [Make.rules.in] [Makefile.in] [make_os2.sh] [rc/Makefile.in]
[tools/Makefile.in] [documentation/wine_os2.txt]
Patches for OS/2 support. Note that it doesn't compile yet.
Tue Jan 7 20:03:53 1997 Eric Youngdale <eric@sub2304.jic.com>
* [debugger/*]
Many more debugger improvements (see debugger/README for details).
Tue Jan 7 15:12:21 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [windows/graphics.c] [objects/text.c] [graphics/x11drv/*]
[graphics/metafiledrv/*]
Moved some device dependent code into the resp. subdirs.
* [include/gdi.h] [include/metafiledrv.h] [include/x11drv.h]
Prototypes added,
DC_FUNCTIONS: GetPixel added, some unnecessary functions removed.
* [objects/region.c]
CreatePolyPolygonRgn32 added.
* [files/dos_fs.c]
QueryDosDevice added.
* [misc/lstr.c]
FormatMessage: broken heap management fixed.
* [scheduler/process.c] [scheduler/thread.c]
Get/SetThreadPriority/PriorityClass added.
Mon Jan 6 21:55:30 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
* [misc/keyboard.c]
ToAscii : Use EVENT_ToAscii instead.
* [windows/event.c]
keypad_key : Do not convert XK_Mode_switch to VK_MENU; recognize
keypad cursor keys.
EVENT_event_to_vkey : New function, to transform a X keycode
into a MSwin vkey + extended bit.
EVENT_ToAscii : New function, to transform a vkey + extended bit
(+ key state table) into ascii char(s), using XLookupString, and
recognizing dead chars.
EVENT_key : Transform AltGr into Ctrl+Alt sequence; call
EVENT_event_to_vkey for keycode to vkey conversion; fixed
previous, context and extended bits.
* [windows/keyboard.c]
Include stddebug.h, to get -debugmsg messages.
GetKeyState : Handle VK_MBUTTON case.
GetKeyboardState, SetKeyboardState : Debugging messages added.
* [windows/message.c]
TranslateMessage : Handle dead chars.
Mon Jan 6 20:10:11 1997 Dominik Strasser <bm424953@muenchen.org>
* [if1632/crtdll.spec] [misc/crtdll.c]
C++ functions new/delete/set_new_handler implemented.
Mon Jan 6 15:48:15 1997 Frans van Dorsselaer <dorssel@rulhmpc49.LeidenUniv.nl>
* [controls/edit.c] [include/windows.h]
Moved the edit control to 32 bits.
Included new (win95) message definitions in windows.h
Implemented EM_SCROLLCARET, EM_SETMARGINS, EM_GETMARGINS,
EM_GETLIMITTEXT, EM_POSFROMCHAR, EM_CHARFROMPOS.
Broke EM_SETWORDBREAKPROC (internal wordwrap still works).
Fixed some bugs, introduced a couple of others.
Text buffer is now initially in 32-bit heap.
* [controls/EDIT.TODO] [controls/combo.c] [controls/widgets.c]
[if1632/wprocs.spec] [library/miscstubs.c] [windows/defdlg.c]
[misc/commdlg.c]
Updated to work with 32-bit edit control.
Sat Jan 4 22:07:27 1997 O.Flebbe <O.Flebbe@science-computing.uni-tuebingen.de>
* [loader/pe_image.c]
Use mmap rather then malloc. Better workaround for clean
segments.
1997-01-12 18:32:19 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
si->SizeOfStruct = sizeof(*si);
|
|
|
|
si->MaxNameLen = 256;
|
2021-11-26 16:30:22 +00:00
|
|
|
im.SizeOfStruct = 0;
|
|
|
|
if (SymFromAddr(dbg_curr_process->handle, lin, &disp64, si) && disp64 < si->Size)
|
|
|
|
{
|
|
|
|
dbg_printf(" %s", si->Name);
|
|
|
|
if (disp64) dbg_printf("+0x%I64x", disp64);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
im.SizeOfStruct = sizeof(im);
|
|
|
|
if (!SymGetModuleInfo(dbg_curr_process->handle, lin, &im)) return;
|
|
|
|
dbg_printf(" %s", im.ModuleName);
|
|
|
|
if (lin > im.BaseOfImage)
|
|
|
|
dbg_printf("+0x%Ix", lin - im.BaseOfImage);
|
|
|
|
}
|
2004-06-04 00:59:16 +00:00
|
|
|
if (with_line)
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
{
|
2009-12-12 11:19:44 +00:00
|
|
|
IMAGEHLP_LINE64 il;
|
2004-06-04 00:59:16 +00:00
|
|
|
|
|
|
|
il.SizeOfStruct = sizeof(il);
|
2021-11-26 16:30:22 +00:00
|
|
|
if (SymGetLineFromAddr64(dbg_curr_process->handle, lin, &disp, &il))
|
2022-02-07 07:40:49 +00:00
|
|
|
dbg_printf(" [%s:%lu]", il.FileName, il.LineNumber);
|
2021-11-26 16:30:22 +00:00
|
|
|
if (im.SizeOfStruct == 0) /* don't display again module if address is in module+disp form */
|
|
|
|
{
|
|
|
|
im.SizeOfStruct = sizeof(im);
|
|
|
|
if (SymGetModuleInfo(dbg_curr_process->handle, lin, &im))
|
|
|
|
dbg_printf(" in %s", im.ModuleName);
|
|
|
|
}
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
}
|
2004-06-04 00:59:16 +00:00
|
|
|
}
|
Release 950817
Thu Aug 17 19:30:14 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [*/Makefile.in]
Removed winelibclean target, as it doesn't work anyway.
* [controls/button.c]
Avoid drawing the focus rectangle outside of the button.
* [controls/widgets.c]
Fixed bug with the size of the reserved bytes for the Edit
control (caused Eudora to crash).
* [debugger/*] [include/debugger.h]
Unified debugger address handling. Segmented and linear addresses
are no grouped in a single type DBG_ADDR.
All commands now accept seg:off addresses.
Module entry points are now loaded upon first entry to the
debugger, so that entry points of the loaded executable also
appear in the symbol table.
* [include/registers.h] [miscemu/*.c]
Register macros are now of the form 'AX_reg(context)' instead of 'AX'.
This makes code less readable, but will prevent a lot of name
clashes with other definitions. It also avoids a hidden reference
to the 'context' variable.
* [ipc/dde_atom.c] [misc/atom.c]
All *AddAtom and *FindAtom functions now take a SEGPTR parameter,
to allow supporting integer atoms.
Moved atom.c to memory/ directory.
* [loader/task.c]
Fixed environment allocation to compute the size dynamically.
Added 'windir' environment variable.
Fixed GetDOSEnvironment() to return the current task environment.
* [windows/message.c]
Fixed bug in MSG_GetWindowForEvent().
Wed Aug 9 11:40:43 1995 Marcus Meissner <msmeissn@faui01.informatik.uni-erlangen.de>
* [include/ole.h]
Added a lot of structures from my Borland Manual. Neither complete,
nor 100% right (check please)
* [misc/shell.c]
Fixed some of the Reg* functions.
Enhanced ShellExecute.
Please test: wine "regedit.exe /v" mplayer.exe soundrec.exe
Do YOU know the format of \WINDOWS\REG.DAT? Mail me please :)
* [misc/dos_fs.c]
Make umsdos mounted windows dirs work again.
* [miscemu/emulate.c]
Added some comments, preimplementation of subfunction 7.
* [multimedia/mmsystem.c]
Implemented mciSendString. not complete, not clean, not
necessarily working (only checked with a program which uses
'cdaudio' (one working program is cool.exe, a shareware waveditor
with cdaudio play facilities.)
* [multimedia/mcicda.c]
Segptr fixes in DriverProc
Default cdrom drive in Linux is /dev/cdrom ... usually a symbolic
link to your real cdrom device.
Tue Aug 8 19:41:50 CDT 1995 Daniel Schepler <dks2@cec.wustl.edu>
* [loader/resource.c]
Don't crash in a LoadString to NULL
* [loader/resource.c]
Fixed accelerators to work with modifiers. (ALT-x modifiers still
won't work unless the ALT keypress exited the menu.)
* [misc/file.c]
Expand a file to the current offset with an _lwrite of size zero.
* [misc/file.c]
Set a newly created file to read-write instead of write-only.
Sun Aug 6 20:28:35 1995 Anand Kumria <akumria@ozemail.com.au>
* [misc/main.c] [include/msdos.h]
Fixed to return DOS version 6.22, and the correct byte order
for Windows programs.
Wed Aug 2 12:36:33 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/options.h] [memory/global.c] [misc/main.c]
Make the new IPC run-time selectible, disabling it by default.
(I think it's only useful for libwine, anyway.)
* [loader/task.c] [memory/selector.c]
In FreeSelector(), walk up the stack and fix the frames.
* [objects/dib.c]
Missing break statement in DIB_SetImageBits_RLE8().
In GetDIBits(), set the compression flag in the bitmap info to zero.
* [windows/dialog.c]
GetNextDlgGroupItem() needs to treat the first child as if it had
an implicit WS_GROUP bit set.
Mon Jul 31 15:44:47 EDT 1995 Louis-D. Dubeau <ldd@step.polymtl.ca>
* [misc/dos_fs.c]
Quick'n dirty fix for the initialisation of the Z: information
structure.
1995-08-17 17:11:36 +00:00
|
|
|
|
2006-07-26 09:57:27 +00:00
|
|
|
BOOL memory_disasm_one_insn(ADDRESS64* addr)
|
2004-06-04 00:59:16 +00:00
|
|
|
{
|
|
|
|
char ch;
|
2002-05-25 21:18:34 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
print_address(addr, TRUE);
|
|
|
|
dbg_printf(": ");
|
|
|
|
if (!dbg_read_memory(memory_to_linear_addr(addr), &ch, sizeof(ch)))
|
2002-05-25 21:18:34 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("-- no code accessible --\n");
|
|
|
|
return FALSE;
|
2002-05-25 21:18:34 +00:00
|
|
|
}
|
2018-06-12 22:53:16 +00:00
|
|
|
dbg_curr_process->be_cpu->disasm_one_insn(addr, TRUE);
|
2004-06-04 00:59:16 +00:00
|
|
|
dbg_printf("\n");
|
|
|
|
return TRUE;
|
2002-05-25 21:18:34 +00:00
|
|
|
}
|
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
void memory_disassemble(const struct dbg_lvalue* xstart,
|
2004-12-06 16:35:33 +00:00
|
|
|
const struct dbg_lvalue* xend, int instruction_count)
|
2002-05-25 21:18:34 +00:00
|
|
|
{
|
2006-07-26 09:57:27 +00:00
|
|
|
static ADDRESS64 last = {0,0,0};
|
2021-12-18 19:07:54 +00:00
|
|
|
dbg_lgint_t stop = 0;
|
2004-12-06 16:35:33 +00:00
|
|
|
int i;
|
2003-08-07 02:56:35 +00:00
|
|
|
|
2004-06-04 00:59:16 +00:00
|
|
|
if (!xstart && !xend)
|
|
|
|
{
|
|
|
|
if (!last.Segment && !last.Offset) memory_get_current_pc(&last);
|
|
|
|
}
|
|
|
|
else
|
2002-05-25 21:18:34 +00:00
|
|
|
{
|
2004-06-04 00:59:16 +00:00
|
|
|
if (xstart)
|
2006-01-23 15:26:40 +00:00
|
|
|
types_extract_as_address(xstart, &last);
|
2004-12-06 16:35:33 +00:00
|
|
|
if (xend)
|
|
|
|
stop = types_extract_as_integer(xend);
|
2002-05-25 21:18:34 +00:00
|
|
|
}
|
2004-12-06 16:35:33 +00:00
|
|
|
for (i = 0; (instruction_count == 0 || i < instruction_count) &&
|
|
|
|
(stop == 0 || last.Offset <= stop); i++)
|
|
|
|
memory_disasm_one_insn(&last);
|
2002-05-25 21:18:34 +00:00
|
|
|
}
|
2006-02-06 10:27:32 +00:00
|
|
|
|
2022-04-29 09:43:12 +00:00
|
|
|
BOOL memory_get_register(DWORD regno, struct dbg_lvalue* lvalue, char* buffer, int len)
|
2006-02-06 10:27:32 +00:00
|
|
|
{
|
|
|
|
const struct dbg_internal_var* div;
|
|
|
|
|
2006-11-24 21:18:42 +00:00
|
|
|
/* negative register values are wine's dbghelp hacks
|
2010-08-25 19:43:46 +00:00
|
|
|
* see dlls/dbghelp/dbghelp_private.h for the details
|
2006-11-24 21:18:42 +00:00
|
|
|
*/
|
|
|
|
switch (regno)
|
|
|
|
{
|
|
|
|
case -1:
|
|
|
|
if (buffer) snprintf(buffer, len, "<internal error>");
|
|
|
|
return FALSE;
|
|
|
|
case -2:
|
|
|
|
if (buffer) snprintf(buffer, len, "<couldn't compute location>");
|
|
|
|
return FALSE;
|
|
|
|
case -3:
|
|
|
|
if (buffer) snprintf(buffer, len, "<is not available>");
|
|
|
|
return FALSE;
|
|
|
|
case -4:
|
|
|
|
if (buffer) snprintf(buffer, len, "<couldn't read memory>");
|
|
|
|
return FALSE;
|
2010-08-25 19:43:46 +00:00
|
|
|
case -5:
|
|
|
|
if (buffer) snprintf(buffer, len, "<has been optimized away by compiler>");
|
|
|
|
return FALSE;
|
2006-11-24 21:18:42 +00:00
|
|
|
}
|
2006-12-02 16:43:08 +00:00
|
|
|
|
2018-06-12 22:53:16 +00:00
|
|
|
for (div = dbg_curr_process->be_cpu->context_vars; div->name; div++)
|
2006-02-06 10:27:32 +00:00
|
|
|
{
|
|
|
|
if (div->val == regno)
|
|
|
|
{
|
2022-04-29 09:43:12 +00:00
|
|
|
if (!stack_get_register_frame(div, lvalue))
|
2006-12-02 16:43:08 +00:00
|
|
|
{
|
2010-03-30 19:37:01 +00:00
|
|
|
if (buffer) snprintf(buffer, len, "<register %s not accessible in this frame>", div->name);
|
|
|
|
return FALSE;
|
2006-12-02 16:43:08 +00:00
|
|
|
}
|
|
|
|
|
2008-12-05 03:59:30 +00:00
|
|
|
if (buffer) lstrcpynA(buffer, div->name, len);
|
2006-02-06 10:27:32 +00:00
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
}
|
2022-02-07 07:40:49 +00:00
|
|
|
if (buffer) snprintf(buffer, len, "<unknown register %lu>", regno);
|
2006-02-06 10:27:32 +00:00
|
|
|
return FALSE;
|
|
|
|
}
|