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