Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | {903} fixed ARM Linux compilation |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
93c780fe9b437f7ad598d19a8fe0d3ec |
User & Date: | ab 2015-02-15 13:20:55 |
2015-02-15
| ||
13:36 | {904} small fixes to MVC blog sample (now working under Linux - please be prepared to see blog.synopse.info be powered by mORMot itself... then we will add a simple MVC forum sample and run our own web site 100% with our framework...) check-in: 3f5020dd93 user: ab tags: trunk | |
13:20 | {903} fixed ARM Linux compilation check-in: 93c780fe9b user: ab tags: trunk | |
13:15 | {902} ExeVerionRetrieve() replaced by the more explicit SetExecutableVersion() function - this commit also includes several fixes for the Linux platform check-in: 9b60596cae user: ab tags: trunk | |
Changes to SynLog.pas.
2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 .... 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 .... 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 .... 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 .... 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 |
RtlCaptureStackBackTrace: function(FramesToSkip, FramesToCapture: cardinal; BackTrace, BackTraceHash: pointer): byte; stdcall; {$endif} {$STACKFRAMES ON} function TSynLog._Release: Integer; {$ifndef CPU64} var aStackFrame: PtrInt; {$endif} begin if fFamily.Level*[sllEnter,sllLeave]<>[] then begin LockAndGetThreadContext; with fThreadContext^ do if RecursionCount>0 then begin with Recursion[RecursionCount-1] do begin ................................................................................ if RtlCaptureStackBackTrace(1,1,@Caller,nil)=0 then Caller := 0 else dec(Caller,5); // ignore caller op codes {$else} Caller := 0; // no stack trace yet under Linux64 {$endif} {$else} asm mov eax,[ebp+16] // +4->_IntfClear +16->initial caller mov aStackFrame,eax end; Caller := aStackFrame-5; {$endif} end; DoEnterLeave(sllLeave); end; dec(RecursionCount); end; result := RefCount; ................................................................................ aFamily := Family; fFamily := aFamily; InitializeCriticalSection(fThreadLock); {$ifdef MSWINDOWS} if RtlCaptureStackBackTraceRetrieved=btUntested then begin if OSVersion<wXP then RtlCaptureStackBackTraceRetrieved := btFailed else begin @RtlCaptureStackBackTrace := GetProcAddress(GetModuleHandle(kernel32),'RtlCaptureStackBackTrace'); if @RtlCaptureStackBackTrace=nil then RtlCaptureStackBackTraceRetrieved := btFailed else RtlCaptureStackBackTraceRetrieved := btOK; end; end; {$ifdef CPU64} assert(RtlCaptureStackBackTraceRetrieved=btOK); ................................................................................ if RtlCaptureStackBackTrace(1,1,@aStackFrame,nil)=0 then aStackFrame := 0 else dec(aStackFrame,5); // ignore call TSynLog.Enter op codes {$else} aStackFrame := 0; // No stack trace yet under Linux64 {$endif} {$else} asm mov eax,[ebp+4] // retrieve caller EIP from push ebp; mov ebp,esp sub eax,5 // ignore call TSynLog.Enter op codes mov aStackFrame,eax end; {$endif} with Recursion[RecursionCount] do begin Instance := aInstance; if aInstance=nil then ClassType := pointer(aInstance) else ClassType := PPointer(aInstance)^; MethodName := aMethodName; ................................................................................ if RtlCaptureStackBackTrace(1,1,@aCaller,nil)=0 then aCaller := 0 else dec(aCaller,5); // ignore call TSynLog.Enter op codes {$else} aCaller := 0; // no stack trace yet under Linux64 {$endif} {$else} asm mov eax,[ebp+4] // retrieve caller EIP from push ebp; mov ebp,esp sub eax,5 // ignore call TSynLog.Enter op codes mov aCaller,eax end; {$endif} TSynMapFile.Log(fWriter,aCaller,false); finally LogTrailerUnLock(Level); if LastError<>0 then SetLastError(LastError); end; |
> > > > > > > | > > > > > > > > |
2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 .... 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 .... 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 .... 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 .... 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 |
RtlCaptureStackBackTrace: function(FramesToSkip, FramesToCapture: cardinal; BackTrace, BackTraceHash: pointer): byte; stdcall; {$endif} {$STACKFRAMES ON} function TSynLog._Release: Integer; {$ifndef CPU64} {$ifndef PUREPASCAL} var aStackFrame: PtrInt; {$endif} {$endif} begin if fFamily.Level*[sllEnter,sllLeave]<>[] then begin LockAndGetThreadContext; with fThreadContext^ do if RecursionCount>0 then begin with Recursion[RecursionCount-1] do begin ................................................................................ if RtlCaptureStackBackTrace(1,1,@Caller,nil)=0 then Caller := 0 else dec(Caller,5); // ignore caller op codes {$else} Caller := 0; // no stack trace yet under Linux64 {$endif} {$else} {$ifdef PUREPASCAL} Caller := 0; // e.g. ARM Linux {$else} asm mov eax,[ebp+16] // +4->_IntfClear +16->initial caller mov aStackFrame,eax end; Caller := aStackFrame-5; {$endif} {$endif} end; DoEnterLeave(sllLeave); end; dec(RecursionCount); end; result := RefCount; ................................................................................ aFamily := Family; fFamily := aFamily; InitializeCriticalSection(fThreadLock); {$ifdef MSWINDOWS} if RtlCaptureStackBackTraceRetrieved=btUntested then begin if OSVersion<wXP then RtlCaptureStackBackTraceRetrieved := btFailed else begin @RtlCaptureStackBackTrace := GetProcAddress( GetModuleHandle(kernel32),'RtlCaptureStackBackTrace'); if @RtlCaptureStackBackTrace=nil then RtlCaptureStackBackTraceRetrieved := btFailed else RtlCaptureStackBackTraceRetrieved := btOK; end; end; {$ifdef CPU64} assert(RtlCaptureStackBackTraceRetrieved=btOK); ................................................................................ if RtlCaptureStackBackTrace(1,1,@aStackFrame,nil)=0 then aStackFrame := 0 else dec(aStackFrame,5); // ignore call TSynLog.Enter op codes {$else} aStackFrame := 0; // No stack trace yet under Linux64 {$endif} {$else} {$ifdef PUREPASCAL} aStackFrame := 0; // e.g. ARM Linux {$else} asm mov eax,[ebp+4] // retrieve caller EIP from push ebp; mov ebp,esp sub eax,5 // ignore call TSynLog.Enter op codes mov aStackFrame,eax end; {$endif} {$endif} with Recursion[RecursionCount] do begin Instance := aInstance; if aInstance=nil then ClassType := pointer(aInstance) else ClassType := PPointer(aInstance)^; MethodName := aMethodName; ................................................................................ if RtlCaptureStackBackTrace(1,1,@aCaller,nil)=0 then aCaller := 0 else dec(aCaller,5); // ignore call TSynLog.Enter op codes {$else} aCaller := 0; // no stack trace yet under Linux64 {$endif} {$else} {$ifdef PUREPASCAL} aCaller := 0; // e.g. ARM Linux {$else} asm mov eax,[ebp+4] // retrieve caller EIP from push ebp; mov ebp,esp sub eax,5 // ignore call TSynLog.Enter op codes mov aCaller,eax end; {$endif} {$endif} TSynMapFile.Log(fWriter,aCaller,false); finally LogTrailerUnLock(Level); if LastError<>0 then SetLastError(LastError); end; |
Changes to SynopseCommit.inc.
1 |
'1.18.902'
|
| |
1 |
'1.18.903'
|