On Fri, 13 Nov 2009, Raphael Neider wrote:
> Hi,
>
>> extern SIGHANDLER(rtcHandler) ;
>>
>> DEF_INTHIGH (high_int)
>> DEF_HANDLER (SIG_TMR1, rtcHandler)
>> END_DEF
>>
>> and in a separate file:
>>
>> SIGHANDLER (rtcHandler)
>> {
>> ...etc
>> }
>>
>> it compiles fine, but the assembler doesn't like it:
>>
>> interrupts.asm:883:Error [113] Symbol not previously defined
>> (_rtcHandler).
>
>>
>> If I put everything in the same file it works fine.
>>
>> Is this a limitation of the compiler/assembler, or it just failing to
>> output the neccessary extern references for an __interrupt function
>> (which
>> SIGHANDLER expands to), or am I missing something terribly obvious!
>
> The problem here is that the PIC16 backend does not see any use
> of "extern void rtcHandler(void)" and thus incorrectly opts not to
> emit the 'extern _rtcHandler' directive into the .asm file.
>
> You can work around this issue by replacing
>
> extern SIGHANDLER(rtcHandler);
>
> with
>
> extern unsigned rtcHandler;
>
> For variables, the PIC16 backend seems to correctly emit the
> 'extern' directive, and as the routine is only used in the
> assembler/macro, the type is no real issue. This is not clean,
> but works for me.
And it's now working for me too.
Unclean as you say, but it's workable.
Thanks!
Gordon
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user