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

Ian MacLarty maclarty at csse.unimelb.edu.au
Mon Jul 5 14:35:32 AEST 2010


On Mon, Jul 5, 2010 at 2:21 PM, Paul Bone <pbone at csse.unimelb.edu.au> wrote:
> 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?
>

There is a static declaration.  It is the definition that is missing.
I'm not sure if the static keyword makes any difference if the
function is defined in assembler.  It doesn't appear to (running nm on
the .o files yields the same results).

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

Yes I know.  That was just a hack I used to test my theory.

> 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?

The definition, as far as I can tell, is done with some inline
assembler.  There is no C code definition of the function, which is
why gcc complains.

Ian.

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list