11-Jun-1996 a-MatH Allowed the ee to work for multiple target machine types. Removed any #ifdef TARGMACPPC &c and changed to if (TargetMachine == mtpmppc). 15-Jan-1996 BryanT *.c *.h sources Use .hxx versions of ee/sapi/cvtypes headers. Don't need ldouble.c. 10-Jan-1996 BryanT *.c *.h Make it compile/link as C++ code. This uncovered a number of problems with functions w/o return values, incorrect enum usage, etc. 09-Jan-1996 BryanT *.c *.h Delete Win16/DOS support. Detab. Format to OSDEBUG standard. Replace _fmemxxx with memxxx. Replace _ftcsxxx with _tcsxxx. Remove PASCAL, FAR, NEAR, LOADDS, LOCAL. Remove C_ONLY and ADDR_xxx usage (the EE is always C++ ADDR_MIXED). 08-Jan-1996 BryanT *.asm *.inc *.lib empty.c mat.c libmain.c Delete Win16/DOS files. sources makefile eecxx.def eecxx.rc Add NT style build process. 07-Aug-1995 SanjayS debfmt.c dllmain.c Support automatic display of unicode strings/arrays. 03-Jul-1995 SanjayS debtyper.c Don't allow arithmetic on void pointers. 28-Jun-1995 Sanjays debapi.c debsup.c debfmt.c debsym.c Allow settings bps on bound virtual functions. We figure out the derived most class and construct the name of the func preceded by is class scope i.e. CFoo::vfunc and then try to set a bp on that. 27-Apr-1995 Sanjays debeval.c Fix virtual func ptr evals. We read the vtable ptr as a sym (4 byte value) and need to take this value and work out the actual unfixed up address. 30-Mar-1995 Sanjays debsup.c debfmt.c Support multiple level auto-expand rules. Support -> in autoexpand strings. 30-Mar-1995 v-LeoL debsup.c Special case __$ReturnUdt in SetFcniParm for pretty printing function signature 21-Mar-1995 Sanjays debsup.c GetParmTM did not intialize pExState like is should. 22-Feb-1995 v-LeoL debbind.c debeval.c shfunc.h MIPS Function evaluation debexpr.h debsym.c Cleanup eent.mak Use msvcrtd for DEBUG build 10-Jan-1995 v-LeoL debeval.c debbind.c Support for $ReturnValue on MIPS ldouble.h Use pragma pack(push/pop) 06-Jan-1995 v-LeoL debsym.c Tune fValidInProlog to toss out only SP/S8 regrel symbols debsrch.c Olympus 3763 -- Fix to avoid Float10 use on MIPS 14-Dec-1994 v-LeoL debsym.c fValidInProlog assumes that offsets are FP relative -- MIPS are SP relative so return FALSE for all symbols. [An optimization would be to pass in frame size and then test offset >= framesize+16] 13-Dec-1994 v-LeoL deblex.c L"a" was getting lexed as IDENT STRING. moved Ident test after string test and added L'a' support. 16-Nov-1994 SanjayS debsym.c Cull search at first hit for Auto expand in Multiple inheritance scenarios. debwalk.c Incorrect handling of MBCS filenames. debutil.c Fix Olympus:2864. Change check for type validity. 07-Nov-1994 SanjayS debsup.c Speed up GetMemberIA for the common case. 03-Nov-1994 SanjayS debsup.c debapi.c debexpr.h Added EEGetBCIA to support the this window in the IDE. 11-Oct-1994 RicoM debsup.c pCxt was not initialized while getting the ith child of a class if the class reference variable. Olympus #1723 23-Sept-1994 RicoM debutil.c debfmt.c Revisiting Dolphin Bug #14596. Now using the context from the expression to find UDT symbols. We had been trying to make a context from the HMOD but this turns out to be unsafe see debutil.c 21-Sept-1994 RicoM debbind.c debexpr.h debsym.c Allow binding to labels inside of functions even if the frame for that function has not been instantiated yet (this regressed when we tryed to not let you bind to arguments of functions that were not yet instantiated) 02-Sept-1994 GeorgioP debbind.c debexpr.h debsym.c Support display of function arguments while being in the prolog of the function. 31-Aug-1994 RicoM debbind.c Minor fix to auto-expand to avoid re-freeing memory 31-Aug-1994 GeorgioP debfmt.c Low budget unicode display via the ",mu" and ",su" format specifiers 25-Aug-1994 GeorgioP debapi.c debbind.c debeval.c debexpr.h debfmt.c debparse.c debsup.c debsym.c debsym.h debutil.c dllmain.c Support auto-expansion of class members. Each TM that is a class or a pointer to a class has now a list of auto-expanded child TMs that are created and displayed based on expansion rules that reside in the "AutoExpand" section of "msvc.ini". (E.g., a rule like CPoint = x=,y= allows displaying points like point = {x=1,y=2} instead of point = {...}) 27-Jul-1994 GeorgioP debbind.c debeval.c debexpr.h deblex.c debparse.c debsrch.c debsym.c debutil.c debwalk.c expr2.z Support the "$ReturnValue" keyword that binds to the return value of the current function (assuming the current function is ready to return). This feature enables the kernel (or even the user) to access the return value of the current function. The kernel can also get the return value of a function that has just returned, by using an appropriate context. Implementation (x86 only): A new operator, OP_retval, has been added in order to handle "$ReturnValue" as a special identifier. If the return value resides in a register, the OP_retval node is marked as a register value. The reg field that used to be a union member in the evaluation node is now a separate struct, so that register-storage information do not overwrite type information. Register-handling code has been extended to handle registers having non-trivial types. 11-Jul-1994 RicoM debutil.c Bug #14596. Fixed SetDPtr so that it doesn't fault if it can't find the type that it is looking for in the module that it's supposed to be in. This now "masks" a more serious problem that forward reference type need to be looked up using the context that is in the evaluation node (when HMOD != NULL) instead of the global context (which may be totally inappropriate for that node). Also, a fake node and context should be created when formatting pointers to functions instead of just faking the HMOD. 16-Jun-1994 Georgiop debsrch.c Apply this adjustment at the end of LoadAddress [Dolphin #13652] (Code under #if THISADJUST, until the compiler bug gets fixed) debexpr.h debsup.c Fixed counting of overloaded methods in GetClassiChild. 13-Jun-1994 Georgiop debbind.c debexpr.h debsup.c Addition to the previous change: since the cost of EEcChildrenTM is now higher (due to potential presence of static members) and since the kernel calls EEcChildrenTM quite often (via LTIsExpandableTM), we now save the child count in the TM. Also BindStMember now saves and restores pCxt 12-Jun-1994 Georgiop debbind.c debexpr.h debsup.c Do not display non-present static data members when expanding a class TM. EEcChildrenTM and EEGetChildTM ignore static data members that are not present. In addition search state for GetClassiChild is saved in the TM so that search for child (i+1) can continue from the point where search for child i ended. 31-May-1994 v-LeoL debsup.c Avoid using pCxt in ResolveAddr. When called from EEInfoFromTM this is undefined. Use pExState->cxt instead. 19-May-1994 Geogiop debexpr.h debsym.c debwalk.c The context list returned by EEGetCXTLFromTM contained a starting context from which the corresponding symbol was visible, not the exact context where the symbol was found. The kernel needs to know the exact context for each symbol in order to set breakpoints properly. I extended eval_t to accomodate full context information, so that SearchSym can store the context where a symbol was found. 14-May-1994 Georgiop debbind.c debeval.c debfmt.c debsrch.c debtyper.c debutil.c Provided support for T_(U)INT1 types (FORTRAN uses them) [Dolphin #12021] 12-May-1994 Georgiop debtyper.c CastNode was not setting ADDR_IS_OFF32 properly, and PushUserValue ended up pushing 2 bytes instead of 4 for function arguments that were cast to ptrs. [Dolphin #12157] 06-May-1994 Georgiop debexpr.h debparse.c debapi.c debsup.c Allow transformation of template names to a 'canonical' form only when EEParse is called. In other cases (e.g., when ParseBind is called) the expression should have been generated by the EE and should be in canonical form already. This optimization makes the EE more tolerant to debug info idiosyncracies as we avoid transforming template names that have been generated by the compiler (even if these are not really 'canonical' as far as the EE is concerned). [Dolphin #11696] 04-May-1994 Georgiop debbind.c debeval.c debexpr.h debfmt.c deblex.c debparse.c debsrch.c debsym.c debtyper.c debutil.c Enhanced support for __int64: common binary and unary opearations can now accept int64 operands, and int64 string conversions have been enabled. Floating point <-> int64 conversions are not supported yet in order to avoid build problems due to potential unsupported operations by the compiler. Code involving pointer segments and offsets does not treat int64 in a special manner. 25-Apr-1994 v-LeoL shfunc.h debsup.c Support for locals inside nested procedures. C++EH Catch blocks and SEH finally blocks and SEH filters are implemented via nested procedures on MIPS 22-Apr-1994 Georgiop debsym.c AddVBType was not updating "*ppList" and "pList->MaxIndex" following a reallocation of "*phList". This could eventually cause a heap corruption and a GPF. [Dolphin #10293] 21-Apr-1994 Georgiop debbind.c Disabled overloaded operator functionality for "&". The EE uses the non-overloaded "&" operator internally for constructing child expressions. When rebinding nested child expressions the EE would waste a lot of time looking for potential overloads of "&". As a result the watch window would become extremely slugish and the IDE would appear to be hung. [Dolphin #10293] 20-Apr-1994 Georgiop debbind.c BindSymbol prefers binding to a non-UDT symbol in case both a UDT and a non-UDT have the same name and appear in the same scope. (Most of the time, the user really wants the variable, not the type) [Dolphin #10794] 18-Apr-1994 v-LeoL debeval.c debbind.c Change error for Mips func eval from ERR_CALLSEQ to ERR_NOFUNCEVAL 15-Apr-1994 v-LeoL debeval.c Fix warning debtyper.c Another place to call ResolveAddr 15-Apr-1994 Georgiop debeval.c debexpr.h debfmt.c debsrch.c debtyper.c debutil.c fmtstr.h Provided minimal support for __int64, as the EE would hang or misbehave while handling this type. Most operations on __int64 are not supported yet, but __int64 variables can be evaluated and displayed in hex. [Dolphin 10611] 11-Apr-1994 Georgiop debfmt.c debutil.c [Dolphin 10456] FormatExpand now handles a SetNodeType failure that could set the underlying type of an array to T_NOTYPE and cause a divide by 0 exception. SetNodeType resolves fwd references to underlying array types while setting the node of an array type. This is done in order to avoid having to resolve the type at a later time, when the appropriate context for the symbol search may be unavailable. 07-Apr-1994 Georgiop debtree.c AddLeaf and AddNode were not checking for stack space in the syntax tree before adding a new node. This could cause a memory corruption and a GPF, since the the tree stack size is fixed (although the rest of the tree may grow). [Dolphin #10293] 05-Apr-1994 v-LeoL debbind.c debeval.c debtyper.c Fix uninitialized local (Dolphin 7755) and enable some MAC/PPC ifdefs for MIPS too. 04-Apr-1994 v-LeoL debsym.c If we find something in the publics don't save uninitialized CXT [fix is MIPS only for now] 01-Apr-1994 Georgiop debsup.c Changed GetNameFromHSYM to skip the numeric leaf before accessing the symbol name. The "value" field of CONSTSYM has fixed length at compile time, and is followed by the "name" field. In fact CONSTSYM is a numeric leaf that may have variable length, and we ended up treating the last bytes of the numeric leaf as part of the symbol name. [Dolphin #9323] debtyper.c CastNode now sets the ADDR_IS_FLAT flag. (EvalMem was emitting a segmented address after calling CastNode.) [Dolphin #9941] debfmt.c Do not allow garbage following a format specifier; allow only trailing white space. [Dolphin #9902, #9903] debexpr.h debbind.c debutil.c debeval.c Added routine for checking if pointer subtraction is allowed, as the existing check for type equality was too restrictive. [Dolphin #8914] 01-Apr-1994 MarkBro debfmt.c: Changed size of buffer in EvalMem (bigger) and now handle buffer (in) is smaller than local copy of buffer (DOLPHIN:9942) 31-Mar-1994 v-LeoL debutil.c Protect against unaligned numeric leafs Also avoid Float10 when updating REAL32 and REAL64 30-Mar-1994 v-LeoL debsup.c Handle REGREL in InfoFromTM (use ResolveAddr to get BASE+off rather than just off) Also fix ResolveAddr to handle S8 correctly when at Top of Stack OSDEBUG4 does not return correct adrBase when alloca frame is topmost. 30-Mar-1994 Georgiop debwalk.c: OP_uscope now contains an eval_t node. BindBScope uses the eval_t node of its left child (which can be a unary scope operator) to set the CLASS_GLOBALTYPE flag. Since OP_uscope contained no eval_t node this was resulting to a memory corruption. [Dolphin 9185] debtree.c GetExpr was not skipping over embedded hSym values properly and returned garbage, preventing editing of child TMs in the locals window. [Dolphin 9842] 25-Mar-1994 Georgiop debsym.c debeval.c MatchArgs and EvalFunction were not handling fwd references to enum types. [Dolphin 3659] 24-Mar-1994 Georgiop debfmt.c Fixed formatting of const/volatile type qualifiers. (A type like "const Foo const *" was being displayed as "const const Foo *") [dolphin 5043] 23-Mar-1994 v-LeoL debeval.c As the EE knows nothing about how to make a MIPSCALL function call use ERR_CALLSEQ 16-Mar-1994 Georgiop debexpr.h debsym.c debutil.c Worked around the following bug: While self debugging, bp at LTIsExpandableTM and watch "{,,een0cxxd.dll}(pexstate_t*){*}phtm" The resulting expression is not expandable, because while in EEIsExpandable, we call SetNodeType and try to resolve a forward reference by performing a symbol search in the default context instead of {,,een0cxxd.dll} Since we cannot always update pCxt before calling SetNodeType, resolve potential forward references in undelrying types when they are first introduced int the evaluation node. 04-Mar-1994 Georgiop debbind.c debeval.c debexpr.h Dolphin #5503: We GP-faulted while binding an expression like Foo::m_array[Foo::m_staticCount], because we needed to fake up a stack entry even if ST was not NULL. Now we always push a faked entry unless there is a preceding bnOp (".", "->", etc); in that case a class stack entry has already been pushed onto the stack. debsup.c Dolphin #8336: When dereferencing a "reference to pointer" we should dereference the underlying pointer (this is what EEIsExpandable implies when it returns EEPOINTER) debparse.c pExState->strIndexSav should not be set by XFormExpr, since at that time the actual parsing has not started and the value of strIndex is unknown. 01-Mar-1994 v-LeoL debsup.c Dolphin #7908. Intel avoid printing 'this' param by checking for negative offset. Centaur has 0 offset for this (or even positive) so special case it. debutil.c Dolphin #7945 debeval.c Dolphin #7945. OSDSaveRegister currently broken on MIPS so avoid calling in EvalFunction if doing EvalProto (EvalProto returns anyway without restoring) 24-Feb-1994 Georgiop debexpr.h CLEAR_EVAL_FLAGS was only clearing out part of the flags structure. (the "bits" struct in vbits_t had grown beyond 32bits in size, and the clr field was too small for clearing all bits.) debbind.c Restricted the symbol search to class names only, when binding the left operand of "::". The EE would erroneously bind the class name at the left of "::" to the corresponding constructor and rewrite the expression by inserting the "this" pointer. (This in turn prevented binding static members like Foo::m_static when the "this" pointer was not in scope). 23-Feb-1994 Georgiop debdef.h deberr.c debexpr.h debfmt.c eent.mak eemc.mak errors.h resource.h (new file) debmsb.rc (new file) dllmain.c (new file) Moved error messages to string resources so that they can be localized. 21-Feb-1994 RicoM debsym.c We no longer check the type index in the globals for and exact match with the type index in the class for static data members. This is because sometimes it doesn't match (e.g. unspecified length arrays) 20-Feb-1994 Georgiop debapi.c debbind.c deberr.c debfmt.c deblex.c debparse.c debsrch.c debsup.c debsym.c debutil.c debwalk.c debexpr.h Changes to use tchar.h - DBCS enabling 16-Feb-1994 RicoM debsym.c If nested type forward ref cannot be converted into a real type then pretend we didn't find the symbol we were looking for in the nested type and proceed with the search instead of returning an OMF error and abandoning the search 15-Feb-1994 DaveS errors.h debeval.c Fix function eval for mac68k. We still don't eval funcs, but now we will eval BPs and prototypes. Also, I've added a new error message for attempting function eval. 10-Feb-1994 Georgiop debbind.c debeval.c Fixed expansion of function calls that return references to derived classes. Such function calls are now treated as lvalues (as per the C++ spec), and it is possible to bind child expressions (such as base classes) that need the address of the referenced object. 02-Feb-1994 Georgiop debexpr.h deblex.c debeval.c Dolphin #5663: Work around for a compiler optimization bug: replaced instaces of "(float)DoubleFromFloat10" with new inlined function "FloatFromFloat10". debutil.c Dolphin #5783: RemoveIndir should clear the EVAL_IS_LABEL flag. 04-Feb-1994 Georgiop [by RicoM] debeval.c Dolphin 5530: Handle subtraction of void* pointers (fail gracefully). Misc: Fixed bug in Store32 -- ADDR packet uninitialized debsym.c Dolphin 5465: Fail symbol searches on member functions that are not instantiated in the current .exe/.dll (i.e. if a class imports member function you must be in the scope of the function to set a breakpoint -- the kernel does this search automatically) 29-Jan-1994 Georgiop debapi.c debeval.c debexpr.h debsup.c debutil.c expr2.z Implemented evaluation caching mechanism: child TMs can now be evaluated incrementally by reusing the evaluated result of a parent TM. 27-Jan-1994 MarkBro debfmt.c: Restored _MBCS enabled code from previous whoops debparse.c: Change _MBCS #ifdef's to #ifNdef's _SBCS 26-Jan-1994 BillJoy debsym.c pulled MHOmfUnLock (hCFlag) inside the #if !defined(TARGMAC68K) 23-Jan-1994 RicoM debutil.c debsym.c Fixed calls to GetUdtDefnTIndex() so that the type index corresponds to the module that the type is being looked up in. Fixes Dolf#5544 23-Jan-1994 RicoM debapi.c shfunc.h Added stub implementation of EEInvalidateCache per GeorgioP 21-Jan-1994 MikeMo makefile Added -WX: no warnings allowed. 12-Jan-1994 Georgiop debsup.c debbind.c Special handling of context operators when generating synthesized expressions. Unified context handling scheme. Minor bug fixes and misc. cleanup for can vs cxx builds. debexpr.h debsrch.c debsup.c debsym.c debwalk.c Misc. cleanup for can vs cxx builds. 22-Dec-1993 MikeMo debsym.c Dolphin #4678: realloc was the wrong size. 06-Dec-1993 Georgiop debutil.c SetNodeType was not restoring PTR_REG_IREG and PTR_REG_HIBYTE of an enregistered pointer. 04-Dec-1993 Georgiop debeval.c debbind.c Modified EvalFunction in order to fixe dolphin 1170: When a simple variable is passed by ref we need to pass a pointer to the variable (i.e., treat it in the same way we currently treat passing classes by ref). Modified Push?Args functions in debbind.c in order to restore the PTR_UTYPE macros (when handling args that are passed by ref) that had somehow disappeared. debsym.c: Updated comment header for SearchSym in an attempt to document some of its side-effects. Didn't change any code. debparse.c Changed the condition on which a special path is taken when parsing consecutive closing ')' of nested function calls in order to fix dolphin #3404. Changed FParseExpr to treat 'by', 'wo', 'dw' as identifiers if they follow a '.' or a '->' (in that case they are probably struct memebers, not commands). (dolphin #977) debutil.c debfmt.c TypeDefSize and Format now use the f32bit flag ti decide on whether a based pointer is 16-bit or 32-bit wide (there is no distinction between these in codeview information). (dolphin #979) 30-Nov-1993 MarkBro debsym.c: Corrected initialization of localeval in SearchRoot for nested symbols. Was asserting since the previous initialization of localeval of *pvF didn't have an associated module 05-Nov-1993 RicoM debsup.c Corrected off by one error allocating space for derived most class cast 01-Nov-1993 RicoM debsup.c EECChildren now returns 1 for # children of a pointer to a primitive type 26-Oct-1993 Stevesm debapi.c We had to initialize some of the global variables in EEFormatCXTFromPCXT for NB10 restart with breakpoints. Resolving forward reference UDTs caused us to invoke SearchSym. We needed to initialize pCxt, pExState and various Eval Stack variables 30-Oct-1993 Georgiop The EE was displaying bogus values for missing static class members. Now if a static data member is missing the corresponding expression binds properly and its evaluation or expansion is prevented. Affected files: debsym.c: SearchQualName sets the HSYM of the eval node to 0 in order to indicate a missing static data member. It also sets a global flag in the TM to prevent expansion. debeval.c: StructEval returns an error in case an evaluation of a missing static data member or function is attempted. errors.h: added ERR_STMEMBERNP ("static member not present") error debexpr.h: added fNotPresent flag in the state field of TMs debapi.c: EEIsExpandable: do not expand expressions that contain missing static data members. 29-Oct-1993 Georgiop debbind.c: BindDot allows binding of expressions like {main,,}foo.bar where foo is not yet in context and bar is a (non-virtual) member function. This allows setting certain break points when restarting a debugging session [dolphin #2433]. This fix addresses part of a more general issue, i.e., what happens if part of an expression cannot be bound, but the expression itself is bindable (i.e., does not need all the information of the part that cannot be bound). In general the EE does not allow binding of such expressions -- this fix overrides this behavior. 20-Oct-1993 Georgiop debexpr.h: debeval.c: debbind.c: debapi.c: Backed out the change made on 10-15-93 (fPreventEval flag). Now EEDereferenceTM verifies that the downcast node is bindable. This involves an extra call to EEGetChildTM, but results in better UI. BindCast does not allow illegal casts that pertain to the class hierarchy (e.g., casting a vitr. base ptr to a derived class ptr). [dolphin #2751] 15-Oct-1993 Georgiop debexpr.h: debeval.c: debbind.c: Introduced fPreventEval in the TM state in order to prevent evaluation of certain expressions. This is used together with the auto class cast feature as follows: Neither DereferenceTM or cChildrenTM check the validity of the cast required to build the derived class node (it would be too costly to do so). If BindCast discovers an illegal cast it lets the expression bind properly (so that the kernel can query the expression name) but prevents the evaluation of the node (which would produce meaningless results) 15-Oct-1993 Georgiop debeval.c: Minor changes in VFuncAddr2 and StructEval in order to support evaluation of virtual functino addresses. These should fix dolphin bug #2223 14-Oct-1993 Georgiop Dolphin bugs 299, 2312, 2223 debsup.c: UpdateMem was not resetting properly the EVAL_IS_BPREL flag. (dolphin 299) debeval.c: StructEval now produces an ERR_NOTEVALUATABLE instead of ERR_INTERNAL if VFuncAddress2 fails. VFuncAddress2 may fail if the object does not have a valid vfptr -- dolphin 2223. (The problem of computing the right address of a virtual function still exists) EvalAddrOf() was not handling references properly. RemoveIndir() was not handling CV_PTR_NEAR32 types. 13-Oct-1993 Georgiop debfmt.c: FormatCXT has been changed to append an argument type list to function names in context strings, so that the kernel can disambiguate overloaded functions. debbind.c: ContextToken() now accepts tokens that contain a parenthesized substring. This allows parsing of contexts generated by FormatCXT. The parenthesized part is ignored, since BindContext cannot deal with overloaded functions debbind.c: Bug fix in BindContext: Typing "{foo,,}bar" in the watch window before starting a debugging session would cause an assertion in sapi, as BindContext was attempting to call SHGetNextMod passing a NULL hExe. This call has been removed. 12-Oct-1993 Georgiop Bug fix for Dolphin #2109: attempt to cast a register to a UDT during evaluation of an assignment failed due to the NULL hmod in the evaluation node of the register. debeval.c: Check if ST has a null hmod before calling CastNode() in Assign().In that case use the hmod found in STP 08-Oct-1993 Georgiop Further enhancements to auto class casting: nested class support, pointer adjustment when casting from "pointer to base" to "pointer to derived" debapi.c: debexpr.h: shfunc.h: New API EEEnableAutoClassCast debparse.c: debbind.c: Modified ParseTypeName and ParseType to allow contexts in type strings. Added CastBaseToDeriv(). debsup.c: GetDerivClassName generates a context together with the type name. Minor changes in the way the magic node is formatted 05-Oct-1993 RicoM Minor bug fixes debsup.c debapi.c Skip LF_MODIFIER nodes during auto class cast so that auto class cast works even on const or volatile pointers Don't ever use BIND_fSupBase as it prevents expansion of members found in base classes in 01-Oct-1993 Georgiop Implemented automatic detection of the type of a class object pointed by a ptr, in case the ptr points to an enclosed base class object which has a vtable. debexpr.h: Added hDClassName in pexstate_t to hold the derived class name. debsup.c Added GetDerivClassName, modified DereverenceTM to set hDClassName, and cChildren, GettChildTM to use hDClassName. debapi.h Minor changes due to hDClassName addition in the TM 29-Sep-1993 SanjayS debeval.c Don't force operand of ++ and -- to be treated as an lvalue in EvalPostIncDec and EvalPreIncDec. 28-Sep-1993 SanjayS debbind.c Free the correct memory handles in BinaryOperator, even if a realloc happens. 27-Sep-1993 MarkBro debfmt.c: Added fix for ensuring that the types table checked for a type matches the hmod of the symbol. 24-Sep-1993 Georgiop debfmt.c Use the mod for the type we back from SHModFromCxt when formatting a pointer to function value. 24-Sep-1993 Georgiop debfmt.c Dolphin #1389: Changed Format() to set the proper hmod in the evaluation node. 25-Aug-1993 Georgiop debapi.c dogfood.mak eent.mak makefile.mak Replaced LANG and LANGID macros with EELANG and EELANGID respectively 20-Aug-1992 SanjayS debsup.c debwalk.c debexpr.h Checked in changes made by Georgiop to fix problem where any TM created using EEGetTMFromHSYM would return a bogus string when EEGetExprFromTM was called on it. See log made by Georgios below... N.B. Georgios was in Greece so his changes.txt was checked in later... 19-Aug-1993 Georgiop debsup.c debwalk.c debexpr.h Changed GetExpr to replace HSYMs found in the expression string with the corresponding symbol names. dogfood.mak Added /MD /W3 to the compiler command line 12-Aug-1993 MikeMo debtyper.c Fix a bug I introduced way back in February: when casting int to FOO*, where FOO* is not a primitive type, CastNode() was treating FOO* as a primitive type (e.g. doing CV_MODE on it and stuff). 10-Aug-1993 MikeMo debbind.c debparse.c debsup.c debsym.c Fix bugs in the use of MHMemReAlloc. Some calls were assuming that the handle value could change, and others were assuming that it could not. The former is correct: the handle value CAN change. 09-Aug-1993 GeorgioP debutil.c Modified erroneous (but harmless) code in GetUdtDefnTindex that generated compiler warning. 09-Aug-1993 GeorgioP Implemented "quick binding" for child TM's that represent member functions. Bind info are stored in the TM during the child TM creation and the bind phase is bypassed. Currently such TMs are not evaluatable. Affected files: debapi.c: Modified GetChildTM, added GetParmTM debeval.c: DoEval now fails gracefully if the TM has no eval stack. debexpr.h: Modified/added prototypes for GetChildTM, GetParmTM, ParseBind debsup.c: Modified GetChildTM, replaced SetClassiName with GetClassiChild 15-Jul-1993 GeorgioP debbind.c debeval.c debfmt.c debtyper.c debutil.c Fixes to avoid some compiler warnings 15-Jul-1993 GeorgioP debbind.c: One-line fix (Replaced '==' with '!=' on line 3023): AddrOf should not set EVAL_STATE(ST) to rvalue in case ST is a type (dolphin #1169) 15-Jul-1993 GeorgioP debparse.c: Added XFormExpr and GetToken for template support. debbind.c: GetId looks for matching <>'s in order to treat template class names as identifiers. debexpr.h: Added hExStrSav, strIndexSav, ExLenSav in exstate_t. These hold info about the original string in case it has been modified by XFormExpr. debwalk.c: GetExpr now uses the saved string if it exists. debsup.c: DupTM duplicates the saved string debapi.c: EEFreeTM frees the saved string 07-Jul-1993 DanS debfmt.c cuda:5647, display T_NOTYPE and default cases with 4 bytes for 32-bit addresses, 2 bytes for 16-bit. 02-Jul-1993 MikeMo debapi.c cuda#5595: EEGetTMFromHSYM now returns EENOMEMORY instead of EECATASTROPHIC if a memory allocation fails. This allows the callstack to come up with an empty stack instead of crashing. 01-Jul-1993 DanS debfmt.c debbind.c cuda:5546, transfer all addr bits from ptr to sym in ref case. initialize type in AddrOf case for &(int &bar) case. 29-Jun-1993 DanS debutil.c cuda:5515, if type packing leaves dupes, we can end up with sym recs to have type indices that don't point into the correct type index "tree". the trick is to find a fix that won't break searching for ambiguous methods. what we settled on was in fnCmp to a) if name matched exactly (case sensitive), b) the type that we were carrying around for the method was not the same as the one on the symbol record, then c) we would say they are equivalent if there were no overloads (overloadCount == 1). 22-Jun-1993 DanS debsym.c cuda:5345, don't let registers/line #'s be evaluated in an explicit class/struct scope. \-------------------End Conflict-------------------/ 16-Jun-1993 DanS debbind.c cuda:5171 (and more!) propagate an explicit context from the left bind tree to the right during BindDot and BindPointsTo. this handles the case where we have {,,foo.dll}fooStruct and we want to expand it. trouble is that the expansion results in an expr like this: ({,,foo.dll}fooStruct).fooMember. the context is bound to the right side and not applied to the right hand side for the type lookups. an alternative fix would be to always carry a context around on every symbol node or to elevate the context precedence so that we end up with {,,foo.dll}(fooStruct).fooMember instead. 14-Jun-1993 DanS debbind.c debeval.c cuda:5124, vtshape tables not dumped correctly. debeval.c wasn't passing on all of the address from ptr to sym in VFuncAddress. debbind.c had some unused code removed. 28-May-1993 DanS debsym.c cuda:4886, add case S_LTHREAD32 to SymToNode so that we can look at static (local and module) TLS variables. 25-May-1993 DanS debsrch.c cuda:4798, use all 4 bytes of 32-bit regs when loading symval debutil.c cuda:4799, xfer all data pertaining to register values from pv to nv in SetNodeType for any case that is a register. 25-May-1993 MikeMo debfmt.c cuda#4793: EVAL_IS_NPTR32 and EVAL_IS_FPTR32 return FALSE for arrays, which was causing trouble for code which assumed they would return TRUE for arrays as well as pointers. 06-May-1993 RicoM debsym.c CUDA #4305: SetValue() now also avoids referencing "this" when accessing a BASE class name that was found in the context of a member function. It used to turn FOO::bar into this->FOO::bar if you were in a member function of a class derived from FOO. 06-May-1993 RicoM debsym.c CUDA #4030: SetValue() now avoids referencing "this" when accessing static data members from a class that was implicitly in scope. This lets us refer to a static data member from within a static member function without having to qualify with the class name. The old way we'd be told that we could find "this" even though we didn't really need it. 05-May-1993 RicoM debutil.c CUDA #4067: SetNodeType() needs to preserve the EVAL_IS_LABEL bit or else labels get treated as data and can't be fixed up correctly 04-May-1993 DanS ldouble.c ldouble.h debfmt.c deblex.c eent.mak cuda:2119, low budget float10 support using CRT internals. debfmt.c deblex.c debeval.c debsrch.c debsup.c debsym.c debtyper.c debutil.c debwalk.c change near to NEAR all over the place because new compiler removed near do nothing keyword 03-May-1993 RicoM debfmt.c CUDA #4028: FormatLong() renamed to ExtendToLong() which more accurately reflects what it does. Bug #4028 says that (unsigned char)255,d formats as '-1'. The problem here is that in the ,d case ExtendToLong() always did a sign-extend even when converting from an unsigned type. There is now a check to see if we are converting from a unsigned type, or if we need an unsigned result. In either of these two cases no-sign extension is performed. 30-Apr-1993 RicoM debeval.c CUDA #4044: VerifyFormat needed to check the return code of its CastNode() calls to prevent trying to format a float as memory for instance (i.e. float f; ?f,m) 30-Apr-1993 RicoM debeval.c CUDA #4020: EvalFunction stack handling changed so that any temporary objects that were pushed on the stack (e.g. string literals are not removed until the whole expression has been evaluated. This handles nested/multiple functions 29-Apr-1993 RicoM debsrch.c CUDA #2962: LoadAddress wasn't always using pExState->frame.DS for the segment value (sometimes it used just 0) 29-Apr-1993 MikeMo debfmt.c cuda#4043: The IDE displays chars with null value as '\x00', but CV displays them as ''. 29-Apr-1993 RicoM debeval.c EvalFunction and VFuncAddress2 both preserve the EMI and MODE parts of the address when they copy the results of EvalUtil() into the address part of the expression. This allows us to correctly fixup/unfixup vtable addresses... EvalFunction was also modified to correctly compute the logical address of a near virtual function without consulting CS (which doesn't work anyway) CUDA #3949 is now completely fixed 28-Apr-1993 RicoM debeval.c EvalFunction doesn't try to restore the registers if it fails before they've been saved anymore... This makes CUDA #3949 not fault anymore, but we still can't call the function... 27-Apr-1993 MikeMo debsup.c Revision of the change mentioned below on 21-Apr: this change is in Cuda after all. EEInfoFromTM won't automatically dereference pointers. 26-Apr-1993 RicoM debbind.c debeval.c CUDA #3743, use 32 bit types in bind/eval of 'by', 'wo', and 'dw' ops 23-Apr-1993 RicoM debeval.c Push function addresses on the stack in EvalFunction in the prototype case. CUDA #3673 21-Apr-1993 MikeMo debsup.c Under Dolphin, EEInfoFromTM won't automatically dereference pointers. 09-Apr-1993 SanjayS deblex.c Added additional overflow check in ParseIntConst. 08-Apr-1993 SanjayS debeval.c debbind.c EvalSegOp and BindSegOp were disallowing T_INT4's. Fixed this as integral constants are always typed INT in 32-bits. Added check in EvalSegOp to make sure that the value of the segment portion is in range. 08-Apr-1993 MikeMo debexpr.h debbind.c debeval.c debfmt.c deblex.c debparse.c debsrch.c debtyper.c * exstate_t.state now contains an 'f32bit' flag, which indicates whether this expression has 32-bit ints and pointer offsets. This should usually be used instead of the 'fWin32' global (now removed) or the 'CVTargetInfo' function. * Various expressions that used to return type T_SHORT or T_USHORT for C boolean operations like "a != b" and "!x", have been changed to return T_INT2 or T_INT4 as appropriate. * T_RCHAR is now treated as a signed char as it should, rather than unsigned. (There is still one case we don't handle correctly, which is too hard to fix: if someone compiles a C++ program with -J, we'll still be treating chars as signed. But this is a rare case.) * In hex display, chars are always displayed with two hex bytes even if variable's value is negative; shorts always with four hex bytes. * Fixed value display of things like "sc,d" and "sc,u" where sc is a signed char. * When lexing a constant for 32-bit, return T_LONG or T_ULONG if user explicitly appended 'u' and/or 'l'. * Fixed rules for "integral promotion." * Fixed rules for the "usual arithmetic conversions." 06-Apr-1993 MikeMo debtyper.c Cuda#2616: "eip == label" did not work, because the code was attempting to cast the label from a 32-bit address to a 16-bit address. 30-Mar-1993 Brucejo debutil.c debsup.c Fix 16 <--> 32 bit ptr casting problem. This caused the array expansion to fail. The macro N_EVAL_PTRTYPE was checking more than just the type, the tests were changed to check just the type. Also, examine return from SetNodeType and assert on false for the array element counting. This should help catch this kind of bug easier. 04-Mar-1993 MikeMo fmtstr.h debfmt.c Clean up code which maps a primitive type to a string. In the process, fix cuda#2558 (vars of type "int *" not displaying their type correctly). 29-Feb-1993 DavidGra debsup.c debsym.c debutil.c Added S_[L|G]Thread cases where appropriate in order to support thread local storage. 08-Feb-1993 MikeMo debbind.c debeval.c debfmt.c debtyper.c debutil.c fmtstr.h Fixes for 32-bit pointers. Main fix was in CastNode() in debtyper.c: we now correctly cast between 32-bit pointers to different types. Other small fixes. 01-Feb-1993 MikeMo makefile Added -Zp4 to NT builds. We haven't tracked down why this is needed, but it is. 30-Jan-1993 MikeMo debfmt.c debsup.c shfunc.h makefile Added support for the debugger to pass a flag which indicates whether it wants hex constants to be in upper case or lower case. (Flag is in eeapi.h.) This option is ON by default when building the NT DLL, OFF for all others. Also cleaned up some M68K code that had far more ifdefs than it needed to. 09-Jan-1993 Georgiop debbind.c: debeval.c: Modified BindContext and EvalContext to treat bp-relative l-values without converting them to r-values if the explicit context is the same as the current context (workaround for caviar #6902). 07-Jan-1993 Georgiop debfmt.c: Extended EvalMem functionality to handle word, dword and ascii display (i.e., now the following specifiers are accepted: m, mb, mw, md, ma. The default (m) is byte display. 05-Jan-1993 Georgiop debexpr.h Made SearchBasePtrBase global debutil.c Now SetNodeType calls SearchBasePtrBase in order to find the base symbol of a based pointer. debsym.c Disabled calling of SearchBasePtrBase from Searchsym. 05-Jan-1993 Georgiop debfmt.c Implemented 'm' format specifier for memory dumps. "addr,m" displays 16 bytes in hex and their ascii equivalents if printable. 29-Dec-1992 Georgiop debsrch.c Changed LoadSymVal to load additional bytes if a bitfield crosses a byte boundary (caviar #6610). Also fixed an off-by-one error in the index used for accessing BitsToBytes[]. (Related bugs: 3120, 3107) debeval.c SBitField was polluting neighboring bits during a bitfield assignment. Now LoadSymVal is called after the type of the node has been set to the underlying type of the bitfield. 23-Dec-1992 Georgiop debapi.c Defined two new functions FpMask and FpRestore in order to mask and restore floating point exceptions under WINDOWS3. This is now used by EEParse, EEvaluateTM and EEGetValueFromTM. (affects caviar #6765 and #6372) 22-Dec-1992 Georgiop debutil.c Restored old behavior of SetNodeType regarding based pointers and added an extra symbol search. If the symbol on which the pointer is based is bp-relative we get the base information from the copy of symbol record in the type section, otherwise we call SearchSym and do a module/global search. This fix should permit dereferencing based pointers that are members of a struct, or double dereferencing of a pointer to a based pointer. (caviar #6413) 18-Dec-1992 Georgiop debapi.c: Mask fp exceptions before calling DoEval --cav. #6372 17-Dec-1992 Georgiop debexpr.c: Fixed return value in GetChildTM prototype (EESTATUS instead of bool_t). debsup.c: GetChildTM now returns EEGENERAL if the parent TM is not expandable. This should fix caviar #6381 14-Dec-1992 Georgiop debexpr.h: Temporary change: added CVFTargetInfo() until it is implemented by the kernel. debbind.c: Modified ParseType to handle 32-bit ptrs (cuda #960) deblex.c: Modified ParseString for 32bit support (cuda #908) debtyper.c: Modified CvtPtr, CastNode, CvtSizeDown, NormalizeBase for 32bit support (cuda #857) debsym.c: SetAmbiant now supports NEAR32 (cuda #960) 05-Dec-1992 Georgiop debapi.c: EEGetChildTM now initializes pExState puts any error messages to the parent TM. If it fails it frees the child TM. Caviar 5387 debfmt.c: Removed "NYI" message. FormatClass now prints "{...}" in all cases. debsym.c: MatchArgs: If the argument is a type, require an exact match (i.e., identical type indices). In general when matching args we ignore certain modifiers (e.g., const). In this case we want to be very strict, since we are probably dumping a class and we want to let all overloaded methods bind properly. Otherwise a "symbol is ambiguous" message may appear instead of a function name when dumping a class. 03-Dec-1992 MikeMo deblexer.asm Fixed 32-bit version to have the correct size for the elements of the LexTable: 6 bytes per element rather than 4. Now lexing works. deblex.c deblexer.asm Changed ParseOp from pascal to stdcall. (Actually in deblex.c it's defined PASCAL, which is stdcall.) 01-Dec-1992 Georgiop errors.h: Added ERR_NOSTACKFRAME: "variable needs stack frame" debsym.c: Changed SearchSym to stop the search for a symbol that has been found and has been rejected because of the fact that we are in the prolog of a function. Instead of searching the parent scope we now set an error message and return HR_error. this fix should also handle the case ?{foo}i where foo is a function that has not been invoked yet and i is a local variable in the scope of foo. In that case BindContext will create a context based on the address of foo, and things will go on as if we were in the prolog of foo. --caviar #5898 25-Nov-1992 Georgiop Caviar #5563: error gracefully when a FORTRAN complex type is encountered. Affected files: errors.h: Added new message "type not supported" debutil.c: Error detection in UpdateMem, TypeSizePrim debtyper.c: Error detection in IntegralPromote, CheckType, CastNode Also changed CastNode to allow casting of an enum to an int. debsrch.c: Error detection in LoadSymVal debbind.c: Error detection in BindByteOps, Function 21-Nov-1992 Georgiop debeval.c: Added code in PlusMinus to compute the address of a huge array element. --caviar 2120 Disabled function evaluation for functions that return large classes or structs (this is because of differences in calling conventions that do not appear in codeview information.) Changed EvalDot to call EvalStruct instead of EvalElem if the Right child is a reference. This should correct the problem of miscalculating the return value when evaluating a function that returns a reference to a class. (Changes related to caviar #5425.) 18-Nov-1992 Georgiop debparse.c: Added a special case in FParseExpr in order to parse nested function calls of the form "fun1(arg1,fun2(arg2))" --cav. #3678 debsym.c: The test in SearchSym that restricts the function search if an explicit context is given was moved one level up (from SYM_EXE to SYM_GLOBAL) because of the changes in the symbol handler. In addition this test has been enhanced in order to terminate the search only if a symbol has already been found. This should fix the problem described in caviar #5321 (empty error message). CheckDupAmb uses function addresses again in order to determine if a function is already on the list. A new ADDR field has been added to search_t struct for this reason. --caviar #5564 Merged change from .420 tree: added explicit casts to (char far *) for the args of _fstrncmp(). This should not affect the generated code, since we compile large model anyway. --#5575 debexpr.h: Added ADDR field in search_t. Removed the old address_t field, as it was not being used. debfmt.c: Added missing quote (') in _fmt_char_zr --caviar #5513 12-Nov-1992 Georgiop debsym.c: Changed MatchArgs to tolerate duplicate functions. pName->best is not updated if the current function is the same as the best one so far. Changed CheckDupAmb to compare function names and types instead of addresses. (It was broken because it was accessing a volatile evaluation node) -- Caviar #4791 11-Nov-1992 Georgiop debsym.c: DebLoadConst does not change the type of an enum to the underlying type any more. This helps proper argument matching. (caviar #3716, 3718). debfmt.c: Format(): In order to display an enum constant as an int, cast it to the underlying type before displaying it. 05-Nov-1992 Georgiop debeval.c: EvalAddrOf now sets an error message instead of asserting if it sees anything but an l-value (caviar #5191) debsym.c: Fixed coding error: '==' was being used instead of '=' in some assignements related to pExState->err_num. (caviar #4517) 28-Oct-1992 MikeMo deblexer.asm For NT, changed from C to PASCAL. deblex.c Under NT Beta 1, PASCAL is defined to __stdcall, but we want to declare ParseOp (which is defined in deblexer.asm) as actually being pascal, so I changed the prototype from using PASCAL to using _pascal. shfunc.h debapi.c Use EXPCALL calling convention for exported functions. eent.mak No longer need to invoke CVTOMF. 27-Oct-1992 Georgiop debsym.c: Changed SearchSym to handle failures of PushStack. This should prevent a GP fault in low memory conditions (caviar 4075) debutil.c: Added check in GrowStack to avoid unlimited growth of stack. Removed corresponding check from PushStack. (caviar 4075) debfmt.c: Increased the size of tempbuf in VerifyFormat so that FLT_MAX can be printed using %f format. Doubles and Long Doubles that are too large to be printed in %f format, are now printed in %e format. (caviar #4049, also related to #933). 20-Oct-1992 MarkBro debapi.c: Changed order of checking in EEGetExtendedInfo. It was checking for ETIPOINTER before ETIARRAY. The problem was that arrays are always pointers, but pointers aren't necessisarily arrays. So now, check to see if the htm is an array before a pointer. 16-Oct-1992 Georgiop debeval.c: Added VFuncAddress2 function in order to compute the address of a virtual function if the offset in the vtable is given (VFuncAddress does a similar thing, but uses the function index, not the offset). This should solve caviar #4094. (Also inlined these functions as they were called only once.) debsym.c Modified MatchArgs in order to allow matching a far pointer with an array that has the same underlying type. Based pointer matching is not supported. (caviar #3713) Also changed definitions of vtabind (UOFFSET instead of ushort) and made the EE skip 4 bytes instead of 2 when accessing the vtab offset in an LF_MLIST record. (caviar #4342) 16-Oct-1992 MikeMo cvinfo.h cvtypes.h eeapi.h shapi.h types.h Deleted, moved to the CVINC.420 project. makefile *.mak Modified to support the new CVINC.420 project. 15-Oct-1992 Georgiop debsym.c: Modified MatchArgs to handle actual arguments that are references. This should fix the third function call mentioned in caviar #4182. Also changed two error messages to ERR_AMBIGUOUS instead of ERR_ARGLIST. 14-Oct-1992 Georgiop debbind.c: Changed the way VerifyFormat treated floating point format specifiers: Now g,e,f can be used with any floating point type. All prefixes except h are accepted, but are actually ignored: the EE uses the right prefix based on the size of the corresponding size. (caviar #933, #4058) 13-Oct-1992 GlennN debsym.c: bug 4380. SearchRoot() changed to ignore returns of NOTYPE when it encounters a nested unnamed ENUM type. By doing this searches of classes with unnamed enums will not abort prematurely. After review from SteveSm We put a check around the break, we only do this if we are binding a breakpoint so that we minimize the potential impact. 11-Oct-1992 MikeMo debapi.c debbind.c deberr.c debsup.c debsym.c debexpr.h errors.h: Added hErrStr to the exstate_t structure to save additional info about an error, so that if a "symbol not found" error occurs we can tell the user what symbol wasn't found. makefile: Changed NT build to use -Z7 instead of -Zi, and to not use -f since cl3232 doesn't recognize it. 10-Oct-1992 MikeMo *.mak makefile: Cleaned up some of the make stuff, to reduce needless repetition. types.h: SEGBASED(x) maps to _based(x) for 16-bit, nothing for 32-bit INLINE maps to __inline (the EE uses this) _fstrcmp maps to strcmp on NT debapi.c: Removed eedllinit(); link sets entry point to _CRT_INIT directly. debbind.c deberr.c debfmt.c debeval.c deblex.c debparse.c debsym.c: Use SEGBASED instead of _based. deberr.c debfmt.c: Fix lots of bogus based/unbased warnings. *.* Lots of fixes to get it working under NT. 07-Oct-1992 Georgiop debbind.c: BindBScope now reorganizes the tree if its left child foo has been rewritten as "this->foo". Reorganizing is necessary to restore operator priority (the bscope operator has higher priority than '->'). This should fix caviar #932, 2571. 06-Oct-1992 Georgiop debparse.c: Added a static table with the primitive type names. This table is scanned when an expression like "(token) op ..." is parsed, where op is an operator that has a binary and a unary form (e.g, +, -, *, &). If "token" is a primitive type name we know that the expression is a type cast and the operator is unary (caviar #3836) 05-Oct-1992 Georgiop debeval.c Added a new function (IsStringLiteral) that gets called by EvalFunction before the invokation of PushString. PushString is not called unless there is actually a quoted string in the expression that needs to be pushed on the user's stack. (this should solve caviar #4152) 05-Oct-1992 v-natjm makefile: Modified these two files to handle the new Visual eew0cxx.mak: C++ DLL names 04-Oct-1992 Georgiop debsup.c 'format' pointer in GetChildTM was incorrectly typed as static. 04-Oct-1992 Georgiop debeval.c Fix for caviar #932,4092,4099: EvalFunction fakes a stack entry before evaluating Lchild (if the Lchild node is OP_bscope). 04-Oct-1992 MikeMo debapi.c Fixed EEGetAccessFromTM: (1) it failed to handle a number of error cases; (2) it was allocating a much bigger buffer than it needed. Also commented the little bugger. Changed two uses of "C_only" to "C_ONLY". 02-Oct-1992 JimSa debbind.c Need to fail for _segment in BuildType() when debugging 32 bit .exe. (Cuda #962) debsym.c Needed to set addr.flat32 bit for S_*32 symbols in SymToNode(). This was only bein done for M68K but needed to be done for all 32 bit expression evaluation. (Cuda #1030) 01-Oct-1992 Georgiop debsup.c: GetChildTM uses radix of parent TM for generating array indices (caviar #3910, see also #872) 30-Sep-1992 GlennN debapi.c eeapi.h shfunc.h added parameter fForceBind to pass to EEBind from this call. 30-Sep-1992 Georgiop debeval.c: Changed Relational() and Arith() for special handling of near null pointer comparison (caviar #3699, #3654) DoEval() now allocates EStack space if hEStack is Null (caviar #3804) EvalFunction() was not handling correctly references to integers constants (caviar #3712) debbind.c: PushCArgs, PushPArgs, PushFargs: if the argument is a reference use SetNodeType for the underlying type in order to remove modifiers. (caviar #3712) errors.h: Changed "implicit conversion required" message to "argument type not supported" (caviar #3843) 29-Sep-1992 v-natjm eew0cxx.mak: Added /NOE to link command line to avoid the linker error on multiple symbols for WEP (Build with C800) 21-Sep-1992 Georgiop debsym.c: SkipModifiers now handles primitive types 18-Sep-1992 DanS eentcxx.mak remove ntmain.obj, -base switch, use libcmt.lib debapi.c add call to _CRT_INIT from eedllinit coffbase.txt ntmain.c removed from project 17-Sep-1992 Georgiop debexpr.h Added overloadCount field in search_t. debsym.c: Changed MatchArgs, MatchFunction and MatchMethod to require exact type matches for overloaded function calls. debbind.c: Disabled error checking for string literals. BindCast now propagates type info to the OP_CAST node. This is necessary for calling functions with cast string literals as arguments. debeval.c: Changed the conditions under which PushString is called by EvalFunction debutil.c: SetNodeType now sets PTR_UTYPE for primitive pointer types (changes related to caviar #919) 10-Sep-1992 Georgiop debsym.c: Changed SetBPValue to save the offset of a class member (caviar #1756) 10-Sep-1992 DanS debeval.c: far -> FAR (portability) deblexer.asm: rewrote ParseOp for 32-bit i386, used HOST32 macro to key 32-bit code. debsym.c: far -> FAR (portability) debutil.c: far -> FAR (portability) makefile: added eentcxx opprec.c: bug on using pointer from strpbrk w/o checking for NULL eentcxx.mak: added for NT build of EE coffbase.txt: HACK! copied from NT for basing DLLs in NT. 4-Sept-1992 Rossg cvinfo.h Update to cvinfo with LF_VARSTRING numeric leaf 03-Sep-1992 Georgiop debutil.c: TypeDefSize now handles T_CHAR, T_UCHAR, T_INT2, T_UINT2 T_INT4, T_UINT4 when dealing with bitfields. 01-Sep-1992 Georgiop debbind.c: debeval.c: Changed T_PCHAR to T_PRCHAR so that string literals can be passed as arguments to functions. (Caviar #3127 -- this was a regression caused by the changes on 16-Jul-92) 28-Aug-1992 Georgiop debbind.c: Bug fix in ParseType: restore original start and length of type string. debtyper.d: Do not allow casting of an object to a pointer. 28-Aug-1992 Georgiop debapi.c: Do not print "public " when displaying access type info. 25-Aug-1992 Georgiop eeapi.h: debapi.h: Added extra argument in EEGetAccessFromTM, so that one can choose between the full text and the abbreviated version 24-Aug-1992 Georgiop debeval.c: Changed EvalFunction to call EvalUtil in case the formal argument type is a reference to a class. (caviar #914) debsym.c: MatchArgs now allows references. Both changes are for caviar #914 20-Aug-1992 Georgiop debsym.c: Removed a line from MatchFunction that accessed pSymClass. This line had been added (incorrectly) in order to support propagation of access type info, and could produce a GPfault. 19-Aug-1992 MarkBro debapi.c: Added missing entries in the EXF struct in EEInitializeExpr. 18-Aug-1992 MarkBro dosdll.asm: Added missing entries in the dosx exe header. 16-Aug-1992 Georgiop debapi.c: Comment out DASSERT in EEGetAccessFromTM (conversion functions did not bind ok, so EEGetAccessFromTM was hitting the assersion) debeval.c: restore access flags after evaluation debsym.c: support propagation of access type information 11-Aug-1992 Georgiop debapi.c: ParseBind now uses the radix stored in the TM. This is a fix for Caviar #872 23-Jul-1992 Georgiop debeval.c: EvalBScope faked up a stack entry if CLASS_GLOBALTYPE(pv) was true, and the stack was empty. However, in cases like ?C::foo(5) CLASS_GLOBALTYPE may be true, and the stack is not empty (i.e., it contains the argument to the function), yet a separate entry is required on the stack. The change was to enable faking up a stack entry in this case. 23-Jul-1992 Georgiop debsym.c: Disabled the code in SearchQualName that tried a symbol even if there was not exact type match when binding breakpoints. According to RossG this was a hack for an incomplete pack problem that should have been fixed by now. Disabling this code resolves Caviar #1081. 23-Jul-1992 Georgiop debapi.c: accessstr = {" ", "private ", "protected ", "public "} (Changed uppercase 'P' to lowercase after a request from Sequoia people) 21-Jul-1992 Georgiop debbind.c: Fixed ParseType to retain type information if the type is an alias to a primitive type. [Caviar # 2271] 17-Jul-1992 Georgiop debfmt.c: Fixed bug in FormatProc, in order to print the function return type if select is 0. This takes care of bugs 1142 and 2343. The kernel should also be modified to call EEGetTypeFromTM using a handle to a Name. That way EEGetTypeFromTM will insert the name in the proper place and a function name will be displayed as "void foo(void)", not "void (void) foo". 16-Jul-1992 Georgiop deblex.c: ParseString now sets type to T_RCHAR instead of T_CHAR. This takes care of bug 917, although the real problem (EE does not distinguish between explicit and implicit casts) remains. 16-Jul-1992 Georgiop errors.h: Added ERR_NOMODIFIABLELV (l-value is not modifiable) debbind.c: BindAssign now checks for non-modifiable l-values (arrays, functions, or constants) -- CAVIAR bug 952 09-Jul-1992 Georgiop debapi.c: eeapi.c: Added a new enumarator as a return value for EEIsExpandableTM: ETYPEPTR denotes that the TM is a type that is expandable as a pointer to a type. (The underlying type may or may not be expandable). This solves CAVIAR bug 927.