[fpc-pascal] StackTop and StackBottom are bogus in a Win32/64 Dll

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Fri Jul 6 18:16:06 CEST 2012

OBones wrote:
> Hello all,
> I'm writing Dlls here and am also doing low level analysis of the stack 
> and its content.
> To do that, I use the StackTop and StackBottom global variables which 
> used to work fine in an exe file.
> Problem is, when in a DLL, StackTop is always zero and StackBottom is 
> the exact opposite of StackLength.
> I thus looked as to where this might come from, and discovered that it 
> comes from the fact that StackTop is only ever calculated from within 
> Exe_entry which obviously is not called for a DLL.
> Is anyone else seeing this?

I've not got into that level of detail, but I've noted that in Linux 
(and possibly Solaris) you have to turn off stack checking when 
generating a shared library (otherwise when the main program calls into 
the library it's unhappy) but not in the main program (i.e. the library 
can call into the main program and is always happy) which I think is 
consistent with what you're saying.

Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

More information about the fpc-pascal mailing list