In revision 4112
a change was made to sdcc/as/z80/z80pst.c which breaks
The documentation for ASxxxx
states that when the ABS flag is specified for an area,
the OVR flag is automatically forced on at the same
time. The change in rev 4112 removes this behaviour,
which breaks the compilation of (at the very least) GBDK.
ABS is the Absolute flag, i.e. a given area must be
placed at a specific place in code memory. OVR is the
Overlay flag, which specifies that the code in a given
area overlays any code that's already in that block of
memory. ABS without OVR seems to be an invalid state --
the inverse of OVR is CON (contiguous), which puts code
after the previous instance of the section, i.e. not at
the given absolute position.
Workaround: Changing the code to use the flags
'(ABS,OVR)' works around the bug. Alternatively,
applying the patch (attached) to the SDCC source tree
will restore the old behaviour.
I'm not sure if this counts as a bug, but it certainly
breaks compilation of A LOT of old code...
Log in to post a comment.