From: Les S. <sch...@op...> - 2002-09-02 13:06:57
|
i am trying to develop a cross-reference table for some recently inherited source code. under linux, i am compiling fine with sdcc. but when i run cxref on the source, it has trouble with the 8051-register specific stuff in one of the low-level headers. has anyone here had any luck using cxref with sdcc? many thanks les schaffer for example: /usr/local/bin/cxref adc.c comm.c -warn-all -html32-src -I./ -DSDCC -index-all -xref-all -Ocxref -CPP "sdcc -E -C -dD -DSDCC" (null):56: cxref: parse error, unexpected IDENTIFIER, expecting '(' The previous 10, current and next 10 symbols are: -1 | 257 : IDENTIFIER : sfr 0 | 257 : IDENTIFIER : at 1 | 259 : LITERAL : 0xD9 2 | 257 : IDENTIFIER : CMOD 3 | 59 : ';' : ; 4 | 257 : IDENTIFIER : sfr 5 | 257 : IDENTIFIER : at 6 | 259 : LITERAL : 0xDC 7 | 257 : IDENTIFIER : CCAPM2 8 | 59 : ';' : ; 9 | 257 : IDENTIFIER : sfr 10 | 257 : IDENTIFIER : at |
From: Nick Craig-W. <nc...@ax...> - 2002-09-03 14:03:14
|
Les Schaffer <sch...@op...> wrote: > i am trying to develop a cross-reference table for some recently > inherited source code. under linux, i am compiling fine with sdcc. but > when i run cxref on the source, it has trouble with the 8051-register > specific stuff in one of the low-level headers. > > has anyone here had any luck using cxref with sdcc? I haven't tried cxref but we do compile nearly all the source for our project with gcc as well (for the simulator). I use these macros for the purpose /* non SDCC compatibility */ #ifndef SDCC #define code #define data #define xdata #define reentrant #define bit unsigned char #endif /* !SDCC */ These get about 95% of all changes. You also need a few things like this in the header files :- extern volatile data #ifdef SDCC at 0x10 #endif u32 timer_uptime; extern void timer_interrupt_handler(void) #ifdef SDCC interrupt 1 using 1 #endif ; So that non SDCC compiles don't see the at 0x10 bit or the interrupt 1 using 1 bit. I'd imagine that you can get it to work like this since I see csxref uses the C pre-processor. BTW gcc is much better at catching errors than sdcc (use -Wall and -pedantic) so it is well worth taking the time to make your code compile with gcc if only to use it as a kind of "lint". > /usr/local/bin/cxref adc.c comm.c -warn-all -html32-src -I./ -DSDCC > -index-all -xref-all -Ocxref -CPP "sdcc -E -C -dD -DSDCC" -- Nick Craig-Wood nc...@ax... |
From: Les S. <sch...@op...> - 2002-09-03 23:07:21
|
> I'd imagine that you can get it to work like this since I see csxref > uses the C pre-processor. yep, worked fine, many thanks. > BTW gcc is much better at catching errors than sdcc (use -Wall and > -pedantic) so it is well worth taking the time to make your code > compile with gcc if only to use it as a kind of "lint". thanks for the tip, i'll give it a whirl. les schaffer |