Hello George, You're right that SDCC doesn't adjust the librarry search path when --xstack is used. As a work-around you can use --nostdlib to suppress the default path and add -L/usr/local/share/sdcc/lib/huge-xstack-auto to point to the proper library. There is no need to remove the huge- stack-auto directory.
HTH, Maarten > 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