Hello all,
I decided to experiment with --model-huge --stack-auto --xstack so I built
from sources on Linux (Ubuntu 10.04).
Does sdcc ignore --xstack when auto-appending to the libdir? Looks like it
searches into huge-stack-auto instead of huge-xstack-auto (same for large).
I'm sending you details of how I built the compiler, what happened when I
tried to build my project and the output of --print-search-dirs with various
combinations of arguments. I'm also sending you info of what I did to fix
this.
Am I doing something really wrong here or is this a bug?
Thanks ever so much for reading this, all. Any tips would be appreciated.
Warm regards
George
sdcc -v
SDCC : mcs51 2.9.7 #5844 (Jun 18 2010) (Linux)
I configured with:
./configure --disable-gbz80-port --disable-z80-port --disable-ds390-port
--disable-ds400-port
--disable-pic-port --disable-pic16-port --disable-hc08-port
Then I ran make
Then I moved into device/lib, added huge and removed small and medium from
incl.mk. Then:
make model-mcs51-stack-auto
make model-mcs51-xstack-auto
After I installed, my library path had the following (among others):
huge-stack-auto
huge-xstack-auto
large-stack-auto
large-xstack-auto
However, when I compiled my project with --model-huge --stack-auto --xstack
, the linker started complaining about incorrect library build options (just
a sample here, repeated many times):
?ASlink-Warning-Conflicting sdcc options:
"-mmcs51 --model-huge --xstack" in module "contiki_sensinode_main" and
"-mmcs51 --model-huge" in module "_gptrput".
But I was certain I had built libraries correctly so I started looking into
the default library search paths through --print-search-dirs:
sdcc --model-huge --print-search-dirs
...
libdir:
/usr/local/bin/../share/sdcc/lib/huge
/usr/local/share/sdcc/lib/huge
sdcc --model-huge --stack-auto --print-search-dirs
...
libdir:
/usr/local/bin/../share/sdcc/lib/huge-stack-auto
/usr/local/share/sdcc/lib/huge-stack-auto
sdcc --model-huge --stack-auto --xstack --print-search-dirs
...
libdir:
/usr/local/bin/../share/sdcc/lib/huge-stack-auto
/usr/local/share/sdcc/lib/huge-stack-auto
So, it appears that the --xstack option is being ignored when auto-appending
to the libdir? Should it not automatically look into <model>-xstack[-auto]
instead? This appears to be the case with --model-large too.
At the start I fixed this by deleting the huge-stack-auto libraries
directory and specifying the correct one through -L. This doesn't really
help though because we then can't turn --xstack off.
Lastly, I looked at the sdcc sources, src/mcs51/main.c and did this at line
735 in revision 5844
--- main.c 2010-06-18 18:23:43.000000000 +0100
+++ main-xstack.c 2010-06-18 18:23:16.000000000 +0100
@@ -733,8 +733,12 @@
return "large";
case MODEL_HUGE:
- if (options.stackAuto)
+ if (options.stackAuto) {
+ if (options.useXstack) {
+ return "huge-xstack-auto";
+ }
return "huge-stack-auto";
+ }
else
return "huge";
This appears to have sorted it. lbdir is now reported correctly for
model-huge --stack-auto both with as well as without --xstack.
sdcc --model-huge --stack-auto --xstack --print-search-dirs
...
libdir:
/usr/local/bin/../share/sdcc/lib/huge-xstack-auto
/usr/local/share/sdcc/lib/huge-xstack-auto
________________________________
George Oikonomou
Post-Doc Research Associate
Computer Science,
Loughborough University.
Email: [email protected]
Web: http://www.spd.gr
________________________________
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user