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: g.oikono...@lboro.ac.uk
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
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to