[m-rev.] for review: deconstruct.named_arg for java

Paul Bone pbone at csse.unimelb.edu.au
Mon Jul 5 14:21:32 AEST 2010


On Mon, Jul 05, 2010 at 02:04:23PM +1000, Ian MacLarty wrote:
> 
> What seems to be happening is that functions are being declared with
> a prototype like the following:
> 
>     static void mercury__tree234__LCMCpr_insert2_1_4_0(void) __asm__("_entry_" "mercury__tree234__LCMCpr_insert2_1_4_0")
> 
> and then being referred to without being defined in C code.
> The functions are in fact defined using assembly code.
> 
> It seems to be the fact that the function is declared static that is
> causing gcc to expect a definition of the function in the same file.
> Removing the static keyword appears to fix the problem.
> 
> Here is the hack I used to test this:

Why is there a static definition but no declaration?  In other words, are these
symbols really indented to be static?

If this is true then they should be created using a different preprocessor
macro, rather than making a static macro create non-static declarations.

Alternativly, is there a missing (static) definition of these symbols?  I
wouldn't think so otherwise the linker wuld fail to link the executable.  Can
GCC see the static definitions if they exist?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 489 bytes
Desc: Digital signature
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20100705/e9b1b47e/attachment.sig>


More information about the reviews mailing list