1
0
Fork 0

restored "fext" sematics

This commit is contained in:
torusrxxx 2016-08-23 12:06:30 +08:00
parent 740684100c
commit cdafdb2b8b
12 changed files with 147 additions and 149 deletions

View File

@ -169,7 +169,11 @@ static bool getLabel(duint addr, char* label)
duint start;
if(FunctionGet(addr, &start, nullptr) && addr == start)
{
sprintf_s(label, MAX_LABEL_SIZE, "sub_%p", start);
#ifdef _WIN64
sprintf_s(label, MAX_LABEL_SIZE, "sub_%llX", start);
#else //x86
sprintf_s(label, MAX_LABEL_SIZE, "sub_%X", start);
#endif //_WIN64
retval = true;
}
}

View File

@ -49,14 +49,6 @@
//defines
#define deflen 1024
#ifdef _WIN64 //defined by default
//#define fhex "%.16llX"
//#define fext "ll"
#else
//#define fhex "%.8X"
//#define fext ""
#endif // _WIN64
enum arch
{
notfound,

View File

@ -19,7 +19,11 @@ public:
static String NodeToString(const CFNode & n)
{
return StringUtils::sprintf("start: %p, %p\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
#ifdef _WIN64
return StringUtils::sprintf("start: %p, %lld\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
#else //x86
return StringUtils::sprintf("start: %p, %d\nend: %p\nfunction: %p", n.start, n.icount, n.end, n.parentGraph); //TODO: %llu or %u
#endif //_WIN64
}
static const char* GetNodeColor(const CFGraph & graph, const CFNode & node)
@ -62,7 +66,7 @@ public:
parent.first);
}
result += "}";
return result;
return std::move(result);
}
const CFGraph* GetFunctionGraph(duint entry) const

View File

@ -49,6 +49,15 @@ void dprintf(const char* Format, ...)
va_end(args);
}
void dprintf_untranslated(const char* Format, ...)
{
va_list args;
va_start(args, Format);
dprintf_args_untranslated(Format, args);
va_end(args);
}
/**
\brief Print a formatted string to the console.
\param format The printf format to use (see documentation of printf for more information).

View File

@ -7,6 +7,7 @@ void dputs(const char* Text);
void dprintf(const char* Format, ...);
void dprintf_args(const char* Format, va_list Args);
void dputs_untranslated(const char* Text);
void dprintf_untranslated(const char* Format, ...);
void dprintf_args_untranslated(const char* Format, va_list Args);
#endif // _CONSOLE_H

View File

@ -192,7 +192,11 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
}
if(data.size() != retsize)
{
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
#ifdef _WIN64
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %llu, got %llu)")), retsize, data.size());
#else //x86
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %u, got %u)")), retsize, data.size());
#endif //_WIN64
return false;
}
buffer = String((char*)data.data(), data.size());
@ -211,7 +215,11 @@ bool tryassembledata(duint addr, unsigned char* dest, int destsize, int* size, c
}
if(data.size() != retsize)
{
sprintf_s(error, MAX_ERROR_SIZE, "invalid size (expected %p, got %p)", retsize, data.size()); //TODO: %llu or %u
#ifdef _WIN64
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %llu, got %llu)")), retsize, data.size());
#else //x86
sprintf_s(error, MAX_ERROR_SIZE, GuiTranslateText(QT_TRANSLATE_NOOP("DBG", "invalid size (expected %u, got %u)")), retsize, data.size());
#endif //_WIN64
return false;
}
buffer = String((char*)data.data(), data.size());

View File

@ -1001,138 +1001,84 @@ void cbRtrStep()
}
}
void cbTOCNDStep()
static void cbTXCNDStep(bool bStepInto, void (*callback)())
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
if(traceCondition && traceCondition->ContinueTrace())
{
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(GetContextDataEx(hActiveThread, UE_CIP));
StepOver((void*)cbTOCNDStep);
(bStepInto ? StepInto : StepOver)(callback);
}
else
{
auto steps = dbgcleartracecondition();
#ifdef _WIN64
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %llu steps!\n"), steps);
#else //x86
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
#endif //_WIN64
cbRtrFinalStep();
}
}
void cbTOCNDStep()
{
cbTXCNDStep(false, cbTOCNDStep);
}
void cbTICNDStep()
{
cbTXCNDStep(true, cbTICNDStep);
}
static void cbTXXTStep(bool bStepInto, bool bInto, void (*callback)())
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
if(traceCondition && traceCondition->ContinueTrace())
// Trace record
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
if(!traceCondition)
{
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(GetContextDataEx(hActiveThread, UE_CIP));
StepInto((void*)cbTICNDStep);
}
else
{
auto steps = dbgcleartracecondition();
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
_dbg_dbgtraceexecute(CIP);
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
cbRtrFinalStep();
return;
}
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && (TraceRecord.getHitCount(CIP) == 0 ^ bInto)) || !traceCondition->ContinueTrace())
{
_dbg_dbgtraceexecute(CIP);
auto steps = dbgcleartracecondition();
#ifdef _WIN64
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %llu steps!\n"), steps);
#else //x86
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
#endif //_WIN64
cbRtrFinalStep();
return;
}
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(CIP);
(bStepInto ? StepInto : StepOver)(callback);
}
void cbTIBTStep()
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
// Trace record
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
if(!traceCondition)
{
_dbg_dbgtraceexecute(CIP);
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
cbRtrFinalStep();
return;
}
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) == 0) || !traceCondition->ContinueTrace())
{
_dbg_dbgtraceexecute(CIP);
auto steps = dbgcleartracecondition();
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
cbRtrFinalStep();
return;
}
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(CIP);
StepInto((void*)cbTIBTStep);
cbTXXTStep(true, false, cbTIBTStep);
}
void cbTOBTStep()
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
// Trace record
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
if(!traceCondition)
{
_dbg_dbgtraceexecute(CIP);
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
cbRtrFinalStep();
return;
}
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) == 0) || !traceCondition->ContinueTrace())
{
_dbg_dbgtraceexecute(CIP);
auto steps = dbgcleartracecondition();
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
cbRtrFinalStep();
return;
}
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(CIP);
StepOver((void*)cbTOBTStep);
cbTXXTStep(false, false, cbTIBTStep);
}
void cbTIITStep()
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
// Trace record
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
if(!traceCondition)
{
_dbg_dbgtraceexecute(CIP);
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
cbRtrFinalStep();
return;
}
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) != 0) || !traceCondition->ContinueTrace())
{
_dbg_dbgtraceexecute(CIP);
auto steps = dbgcleartracecondition();
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
cbRtrFinalStep();
return;
}
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(CIP);
StepInto((void*)cbTIITStep);
cbTXXTStep(true, true, cbTIBTStep);
}
void cbTOITStep()
{
hActiveThread = ThreadGetHandle(((DEBUG_EVENT*)GetDebugData())->dwThreadId);
// Trace record
duint CIP = GetContextDataEx(hActiveThread, UE_CIP);
if(!traceCondition)
{
_dbg_dbgtraceexecute(CIP);
dprintf(QT_TRANSLATE_NOOP("DBG", "Bad tracing state.\n"));
cbRtrFinalStep();
return;
}
if((TraceRecord.getTraceRecordType(CIP) != TraceRecordManager::TraceRecordNone && TraceRecord.getHitCount(CIP) != 0) || !traceCondition->ContinueTrace())
{
_dbg_dbgtraceexecute(CIP);
auto steps = dbgcleartracecondition();
dprintf(QT_TRANSLATE_NOOP("DBG", "Trace finished after %u steps!\n"), steps);
cbRtrFinalStep();
return;
}
if(bTraceRecordEnabledDuringTrace)
_dbg_dbgtraceexecute(CIP);
StepOver((void*)cbTOITStep);
cbTXXTStep(false, true, cbTIBTStep);
}
static void cbCreateProcess(CREATE_PROCESS_DEBUG_INFO* CreateProcessInfo)

View File

@ -249,7 +249,11 @@ void disasmprint(duint addr)
disasmget(addr, &instr);
dprintf(">%d:\"%s\":\n", instr.type, instr.instruction);
for(int i = 0; i < instr.argcount; i++)
dprintf(" %d:%d:%p:%p:%p\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
#ifdef _WIN64
dprintf(" %d:%d:%llX:%llX:%llX\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
#else //x86
dprintf(" %d:%d:%X:%X:%X\n", i, instr.arg[i].type, instr.arg[i].constant, instr.arg[i].value, instr.arg[i].memvalue);
#endif //_WIN64
}
static bool isasciistring(const unsigned char* data, int maxlen)

View File

@ -68,15 +68,15 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
{
if(!valuesignedcalc()) //signed numbers
#ifdef _WIN64
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
sprintf(format_str, "%%s=%%.%dllX (%%llud)\n", valsize); // TODO: This and the following statements use "%llX" for a "int"-typed variable. Maybe we can use "%X" everywhere?
#else //x86
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
sprintf(format_str, "%%s=%%.%dX (%%ud)\n", valsize);
#endif //_WIN64
else
#ifdef _WIN64
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
sprintf(format_str, "%%s=%%.%dllX (%%lld)\n", valsize);
#else //x86
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
sprintf(format_str, "%%s=%%.%dX (%%d)\n", valsize);
#endif //_WIN64
dprintf(format_str, *argv, value, value);
}
@ -92,27 +92,31 @@ CMDRESULT cbBadCmd(int argc, char* argv[])
{
if(!valuesignedcalc()) //signed numbers
#ifdef _WIN64
sprintf(format_str, "%%s=%%.%llud (%%llud)\n", valsize);
sprintf(format_str, "%%s=%%.%dllX (%%llud)\n", valsize);
#else //x86
sprintf(format_str, "%%s=%%.%ud (%%ud)\n", valsize);
sprintf(format_str, "%%s=%%.%dX (%%ud)\n", valsize);
#endif //_WIN64
else
#ifdef _WIN64
sprintf(format_str, "%%s=%%.%lld (%%lld)\n", valsize);
sprintf(format_str, "%%s=%%.%dllX (%%lld)\n", valsize);
#else //x86
sprintf(format_str, "%%s=%%.%d (%%d)\n", valsize);
sprintf(format_str, "%%s=%%.%dX (%%d)\n", valsize);
#endif //_WIN64
#ifdef _WIN64
sprintf(format_str, "%%.%llud (%%llud)\n", valsize);
sprintf(format_str, "%%.%dllX (%%llud)\n", valsize);
#else //x86
sprintf(format_str, "%%.%ud (%%ud)\n", valsize);
sprintf(format_str, "%%.%dX (%%ud)\n", valsize);
#endif //_WIN64
dprintf(format_str, value, value);
}
else
{
sprintf(format_str, "%%.%d\n", valsize);
dprintf(format_str, value);
#ifdef _WIN64
sprintf(format_str, "%%.%dllX\n", valsize);
#else //x86
sprintf(format_str, "%%.%dX\n", valsize);
#endif //_WIN64
dprintf_untranslated(format_str, value);
}
}
}
@ -157,12 +161,16 @@ CMDRESULT cbInstrVar(int argc, char* argv[])
{
if(value > 15)
#ifdef _WIN64
dprintf("DBG", "%s=%p (%llud)\n", argv[1], value, value);
dprintf_untranslated("%s=%llX (%llud)\n", argv[1], value, value);
#else //x86
dprintf("%s=%p (%ud)\n", argv[1], value, value);
dprintf_untranslated("%s=%X (%ud)\n", argv[1], value, value);
#endif //_WIN64
else
dprintf("%s=%p\n", argv[1], value);
#ifdef _WIN64
dprintf_untranslated("%s=%llX\n", argv[1], value);
#else //x86
dprintf_untranslated("%s=%X\n", argv[1], value);
#endif //_WIN64
}
return STATUS_CONTINUE;
}
@ -306,12 +314,16 @@ CMDRESULT cbInstrVarList(int argc, char* argv[])
{
if(value > 15)
#ifdef _WIN64
dprintf("%s=%p (%llud)\n", name, value, value);
dprintf_untranslated("%s=%llX (%llud)\n", name, value, value);
#else //x86
dprintf("%s=%p (%ud)\n", name, value, value);
dprintf_untranslated("%s=%X (%ud)\n", name, value, value);
#endif //_WIN64
else
dprintf("%s=%p\n", name, value);
#ifdef _WIN64
dprintf_untranslated("%s=%llX\n", name, value);
#else //x86
dprintf_untranslated("%s=%X\n", name, value);
#endif //_WIN64
}
}
}
@ -2594,8 +2606,11 @@ CMDRESULT cbInstrSavedata(int argc, char* argv[])
dputs(QT_TRANSLATE_NOOP("DBG", "Failed to write file..."));
return STATUS_ERROR;
}
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[%p] written to \"%s\" !\n"), addr, size, argv[1]);
#ifdef _WIN64
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% llX] written to \"%s\" !\n"), addr, size, argv[1]);
#else //x86
dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% X] written to \"%s\" !\n"), addr, size, argv[1]);
#endif
return STATUS_CONTINUE;
}
@ -2721,7 +2736,11 @@ CMDRESULT cbHandleClose(int argc, char* argv[])
dprintf(QT_TRANSLATE_NOOP("DBG", "DuplicateHandle failed: %s\n"), ErrorCodeToName(GetLastError()).c_str());
return STATUS_ERROR;
}
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %p closed!\n"), handle);
#ifdef _WIN64
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %llX closed!\n"), handle);
#else //x86
dprintf(QT_TRANSLATE_NOOP("DBG", "Handle %X closed!\n"), handle);
#endif
return STATUS_CONTINUE;
}

View File

@ -36,6 +36,9 @@ static String printValue(FormatValueType value, ValueType::ValueType type)
case ValueType::UnsignedDecimal:
result = StringUtils::sprintf("%llu", valuint);
break;
case ValueType::Hex:
result = StringUtils::sprintf("%llX", valuint);
break;
#else //x86
case ValueType::SignedDecimal:
result = StringUtils::sprintf("%d", valuint);
@ -43,10 +46,10 @@ static String printValue(FormatValueType value, ValueType::ValueType type)
case ValueType::UnsignedDecimal:
result = StringUtils::sprintf("%u", valuint);
break;
#endif //_WIN64
case ValueType::Hex:
result = StringUtils::sprintf("%p", valuint);
result = StringUtils::sprintf("%X", valuint);
break;
#endif //_WIN64
case ValueType::Pointer:
result = StringUtils::sprintf("%p", valuint);
break;

View File

@ -365,7 +365,11 @@ String StringUtils::ToCompressedHex(unsigned char* buffer, size_t size)
result.push_back(HEXLOOKUP[lastCh & 0xF]);
}
else if(repeat > 2)
result.append(StringUtils::sprintf("{%p}", repeat));
#ifdef _WIN64
result.append(StringUtils::sprintf("{%llX}", repeat));
#else //x86
result.append(StringUtils::sprintf("{%X}", repeat));
#endif //_WIN64
}
return result;
}

View File

@ -1312,7 +1312,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
if(!GetModuleFileNameExW(fdProcessInfo->hProcess, (HMODULE)modbase, szModName, MAX_PATH))
{
if(!silent)
dprintf("could not get filename of module %p\n", modbase);
dprintf(QT_TRANSLATE_NOOP("DBG", "could not get filename of module %p\n"), modbase);
}
else
{
@ -1320,7 +1320,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
if(!mod)
{
if(!silent)
dprintf("unable to load library %s\n", szModName);
dprintf(QT_TRANSLATE_NOOP("DBG", "unable to load library %s\n"), szModName);
}
else
{
@ -1435,7 +1435,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
return true;
for(int i = 0; i < found; i++)
if(i != kernel32)
dprintf("%p\n", addrfound()[i]);
dprintf_untranslated("%p\n", addrfound()[i]);
}
else
{
@ -1443,7 +1443,7 @@ bool valapifromstring(const char* name, duint* value, int* value_size, bool prin
if(!printall || silent)
return true;
for(int i = 1; i < found; i++)
dprintf("%p\n", addrfound()[i]);
dprintf_untranslated("%p\n", addrfound()[i]);
}
return true;
}
@ -1556,7 +1556,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
*value = 0;
if(value_size)
*value_size = 0;
@ -1615,7 +1615,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
if(!valfromstring(ptrstring.c_str(), value, silent, baseonly))
{
if(!silent)
dprintf("noexpr failed on %s\n", ptrstring.c_str());
dprintf(QT_TRANSLATE_NOOP("DBG", "noexpr failed on %s\n"), ptrstring.c_str());
return false;
}
duint addr = *value;
@ -1623,7 +1623,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
if(!MemRead(addr + seg_offset, value, read_size))
{
if(!silent)
dputs("failed to read memory");
dputs(QT_TRANSLATE_NOOP("DBG", "failed to read memory"));
return false;
}
if(value_size)
@ -1637,7 +1637,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging!");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
*value = 0;
if(value_size)
*value_size = 0;
@ -1655,7 +1655,7 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
*value = 0;
if(value_size)
*value_size = 0;
@ -1710,12 +1710,16 @@ bool valfromstring_noexpr(const char* string, duint* value, bool silent, bool ba
}
else if(strstr(string, "sub_") == string) //then come sub_ functions
{
auto result = sscanf(string, "sub_%p", value) == 1;
#ifdef _WIN64
bool result = sscanf(string, "sub_%llX", value) == 1;
#else //x86
bool result = sscanf(string, "sub_%X", value) == 1;
#endif //_WIN64
duint start;
return result && FunctionGet(*value, &start, nullptr) && *value == start;
}
if(!silent)
dprintf("invalid value: \"%s\"!\n", string);
dprintf(QT_TRANSLATE_NOOP("DBG", "invalid value: \"%s\"!\n"), string);
return false; //nothing was OK
}
@ -2187,7 +2191,7 @@ bool valtostring(const char* string, duint value, bool silent)
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
return false;
}
int len = (int)strlen(string);
@ -2229,7 +2233,7 @@ bool valtostring(const char* string, duint value, bool silent)
if(!MemPatch(temp, &value_, read_size))
{
if(!silent)
dputs("failed to write memory");
dputs(QT_TRANSLATE_NOOP("DBG", "failed to write memory"));
return false;
}
GuiUpdateAllViews(); //repaint gui
@ -2241,7 +2245,7 @@ bool valtostring(const char* string, duint value, bool silent)
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging!");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
return false;
}
bool ok = setregister(string, value);
@ -2266,7 +2270,7 @@ bool valtostring(const char* string, duint value, bool silent)
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging"));
return false;
}
bool set = false;
@ -2281,7 +2285,7 @@ bool valtostring(const char* string, duint value, bool silent)
if(!DbgIsDebugging())
{
if(!silent)
dputs("not debugging!");
dputs(QT_TRANSLATE_NOOP("DBG", "not debugging!"));
return false;
}
setfpuvalue(string + 1, value);