[prev in list] [next in list] [prev in thread] [next in thread] 

List:       microblaze-uclinux
Subject:    SV: [microblaze-uclinux] Compiler/linker problem (?)
From:       Lars <lpn1328 () yahoo ! se>
Date:       2008-06-26 20:56:07
Message-ID: 967588.86809.qm () web27106 ! mail ! ukl ! yahoo ! com
[Download RAW message or body]

Hello Rod,

We had a problem with stings not being handled correctly. It was similar in that the \
binary ran fine but some strings printed garbage or the wrong string. We did not go \
into detail but by trial and error we found that compiling with -fwritable-strings \
helped.

Hope to be of some help!

Lars Peterson

--- Den ons 2008-06-25 skrev Rod Campbell <rod@linearacoustic.com>:

> Från: Rod Campbell <rod@linearacoustic.com>
> Ämne: [microblaze-uclinux] Compiler/linker problem (?)
> Till: "mblaze-uClinux list" <microblaze-uclinux@itee.uq.edu.au>
> Datum: onsdag 25 juni 2008 23.10
> Hi,
> 
> I've been using uClinux 2.4 on microblaze successfully
> for a few years.  
> Just recently I ran into a problem that I wonder if anyone
> else has 
> seen  (and if anyone has any insights).
> 
> My uClinux program runs fine except for one problem.  The
> symptom is 
> that a pointer to a string (stored in an array of string
> pointers) is 
> corrupted.  Naturally I thought that I was just doing
> something goofy 
> somewhere in my code.  After checking it out, I found to my
> surprise 
> that the corruption exists in the bflt executable itself. 
> 
> The module code basically looks like this:
> 
> // many string arrays
> 
> char *strVals[14] =
> {"1+1 ", "1/0 ", "2/0 ",
> "3/0 ",
> "3/0L", "2/1 ", "2/1L",
> "3/1 ",
> "3/1L", "2/2 ", "2/2L",
> "3/2 ",
> "3/2L", "Pass"};
> 
> // more string arrays and other variables
> 
> const unsigned char PcmBypass = 8; 
> 
> // start of functions
> 
> When I look at dump of the bflt exe, I see that in the
> array of pointers 
> that is created for strVals[], the 5th pointer points to
> the storage 
> area for PcmBypass instead of where "3/0L" is
> stored.   I looked at the 
> executable file while it was still in flash (not after
> being loaded into 
> RAM for execution).
> 
> If I change the definition of PcmBypass to "unsigned
> char PcmBypass = 8; 
> ", meaning I just remove the "const", it
> compiles and runs fine.
> 
> If I use mb-objdump to explore the elf file created by
> mb-gcc, I don't 
> see any problems - I see the array of strVals[] pointers
> and they look 
> correct.
> 
> I compiled and ran an earlier version of the program and
> saw the same 
> type of problem; the only difference was that the PcmBypass
> pointer 
> clobbered a pointer in a different array.
> 
> I reference the variable PcmBypass in code only once, and
> that is in the 
> same file that it is defined in.  There are no "extern
> unsigned char 
> PcmBypass" statements.
> 
> The exe I create is made up of several files and the exe
> itself is large 
> but by no means the largest I've built - about 180K
> bytes.  I am using 
> the stock microblaze-elf-tools-20060213 tools supplied with
> 2.4.32-uc0  
> uClinux.
> 
> Any insights would be appreciated.
> 
> Rod Campbell     
> 
> 
> 
> 
> ___________________________
> microblaze-uclinux mailing list
> microblaze-uclinux@itee.uq.edu.au
> Project Home Page :
> http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
> Mailing List Archive :
> http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/


      ___________________________________________________
Sök efter kärleken!
Hitta din tvillingsjäl på Yahoo! Dejting: \
http://ad.doubleclick.net/clk;185753627;24584539;x?http://se.meetic.yahoo.net/index.php?mtcmk=148783


___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic