Hello all,

Thanks for the replies.

Maarten, I did try with -L at the start and as expected it got confused by 
multiple symbol definitions. Then I used --nostdlib and the linker started 
failing to find various things, for example:
?ASlink-Warning-Undefined Global '__sdcc_banked_call' referenced by module 
'putchar'
?ASlink-Warning-Undefined Global '___fssub' referenced by module 
'printf_large'

Turns out that with --nostdlib, I need to 
add -lmcs51.lib -llibfloat.lib -lliblong.lib -llibint.lib for it to link 
properly. Makes sense, only I didn't think of trying that at the time so I 
just nuked the unused libraries.

Anyhow, I'm about to file a bug report as Borut suggested.

Thanks again guys, much appreciated
geo

----- Original Message ----- 
From: "Maarten Brock" <sourceforge.br...@dse.nl>
To: <sdcc-user@lists.sourceforge.net>
Sent: 20 June 2010 12:21
Subject: Re: [Sdcc-user] Linker Searches Wrong libdir with --xstack?


> 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
> 


------------------------------------------------------------------------------
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