Am 23.06.2012 15:47, schrieb Borut Raz(em:
Raphael,
thanks, I knew who I have to ask for help ;-)
There were many changes since the RC1 release, so I plan to make the
RC2 release earlier: 2012-06-24 and make the RC3 at the date RC2 was
originally planned: 2012-07-01.
I will apply Raphael's patch immediately since the currently generated
code is wrong and it can't be worse with the patch applied. If nobody
finds a mistake in the patch, then the RC2 will be made from
tomorrow's snapshot builds, if not we will have to decide how to
proceed (probably delay the new RC2 date I proposed by few days).
In the mean time: pic14 users please do test!
Works in my case. Thank you all very much.
Regards,
Vinzenz
Borut
On Sat, Jun 23, 2012 at 3:10 PM, Raphael Neider <rnei...@web.de
<mailto:rnei...@web.de>> wrote:
Hi,
The cinit_t structure members are read from the program
memory, they are
never written. I still think that __code qualifier is ok.
Yep, we just need the symbol to find the cinit-structure in ROM.
Has anybody investigated in which svn revision the bug
appeared? If it
was really in rev. 7080, then it is an ugly side
effect of optralloc
branch merge :-(
Nope, I did not (yet) search for the first bad revision.
I think this should be fixed ASAP, before the RC2
release, so any help is welcome. Raphael, can you
please take a look to this problem?
Done. Please find a patch against r7955 attached.
; .line 76; "../idata.c" cptr =
&cinit.entry[0];
MOVLW high (_cinit + 2)
MOVWF r0x1002
MOVLW (_cinit + 2)
MOVWF r0x1003
MOVLW 0x80
MOVWF r0x1004
Similar code is generated once the above patch is applied.
The code gerenator is/was confusing address calculations and data
manipulations: Do we want to read the byte at _cinit and add 2 to
the value found there *xor* do we want to read the byte at address
(_cinit + 2)?
If anyone with a sufficiently large PIC14 program could confirm
that this (a) actually does fix the problem and (b) does not break
other stuff, that would be great.
I can confirm that the fix is executed only twice in the PIC14
library code: only in libsdcc/{regular,enhanced}/idata.c. But due
to the limited code base, this does not tell us too much.
You can compile your projects with --debug-xtra to see messages like
idata.c:76: CHECK: using address of '_cinit' instead of contents
whenever the fix is used during code generation.
Raphael
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user