[project @ 2002-01-26 17:58:47 by rje]
authorrje <unknown>
Sat, 26 Jan 2002 17:58:47 +0000 (17:58 +0000)
committerrje <unknown>
Sat, 26 Jan 2002 17:58:47 +0000 (17:58 +0000)
commit464f0373f6dfe57a257a0aaa6d8ec0806e27ad88
tree7a0315ac38d6c1b3af793ecd9aa8ebc47feafc14
parentcfe26441dd18aafe89ff02de75ed899053a58538
[project @ 2002-01-26 17:58:47 by rje]
This is a simple fix for a rather obscure bug.

In the heap/stack checking code, we were creating info tables with names of the form stg_gc_X_ret_info, and giving them entry points with names of the form stg_gc_X_ret.

Unfortunately, the mangler expects that if an info table is called Y_info, the entry point should be called Y_ret or Y_entry.

In this case, the mangler thus looks for stg_gc_X_ret_ret and stg_gc_X_ret_entry, neither of which exists.

As a result, the entry points aren't placed directly after the info tables.

Fortunately, the code for the entry points was defined emmediately after the info table definition, and so was *usually* in the right place already.

However, in certain circumstances (that can result from some tweaks on my private tree, and might possibly occur by other means), this was not happening, and thus any attempts to enter the entry point for this info table will cause problems.

The fix is quite simple: rename the info tables so that the mangler finds the entry points and puts them in the right places.

I don't think this commit is likely to have a notable effect on anything else.
ghc/rts/HeapStackCheck.hc