Login

Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.

ARM Community: PRESERVE8 - ARM Community

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

PRESERVE8 Rate Topic: -----

#1 User is offline   jimboker 

  • Member
  • Pip
  • Group: Members
  • Posts: 6
  • Joined: 19-February 08

Posted 14 March 2008 - 02:59 AM

Hi all! I'm compiling a kernel using GNU. Tested the kernel on the hardware, and it works fine. I also generated a library file, name.a, using GNU.

When I compile my firmware source using Codewarrior, i get the error message

Error: L6238E: foo.o(.text) contains invalid call from '~PRES8' function to 'REQ8' function foobar


when linking the library name.a to the firmware source. I know this has something to do with 8byte stack alignment. The function foo.o is a function inside name.a. Any suggestions?

Thanks!
0

#2 User is offline   bhav 

  • Regular Contributor
  • PipPipPip
  • Group: Members
  • Posts: 109
  • Joined: 05-October 06

Posted 14 March 2008 - 06:33 PM

View Postjimboker, on Mar 14 2008, 02:59 AM, said:

Hi all! I'm compiling a kernel using GNU. Tested the kernel on the hardware, and it works fine. I also generated a library file, name.a, using GNU.

When I compile my firmware source using Codewarrior, i get the error message

Error: L6238E: foo.o(.text) contains invalid call from '~PRES8' function to 'REQ8' function foobar


when linking the library name.a to the firmware source. I know this has something to do with 8byte stack alignment. The function foo.o is a function inside name.a. Any suggestions?


That is an error from the ADS or RVDS version of armlink. In newer versions of RVDS, the ARM ABI means it is easier to link objects compiled from one compiler with objects from another compiler. However, without knowing which version you are using, it is difficult to give you any advice.
0

#3 User is offline   jimboker 

  • Member
  • Pip
  • Group: Members
  • Posts: 6
  • Joined: 19-February 08

Posted 17 March 2008 - 12:24 AM

View Postbhav, on Mar 14 2008, 06:33 PM, said:

That is an error from the ADS or RVDS version of armlink. In newer versions of RVDS, the ARM ABI means it is easier to link objects compiled from one compiler with objects from another compiler. However, without knowing which version you are using, it is difficult to give you any advice.



i'm currently using rvds 3.0.1. thanks!
0

#4 User is offline   isogen74 

  • Super Contributor
  • PipPipPipPip
  • Group: Members
  • Posts: 1098
  • Joined: 20-March 07

Posted 17 March 2008 - 10:27 AM

View Postjimboker, on Mar 17 2008, 12:24 AM, said:

i'm currently using rvds 3.0.1. thanks!



What version of GCC did you use to compile the library?
When optimizing software, consider that the quickest code to run is the bit you removed from the call path.
0

#5 User is offline   Tony8584 

  • Member
  • Pip
  • Group: Members
  • Posts: 6
  • Joined: 25-March 08

Posted 01 April 2008 - 01:34 AM

I have met the same problem when I ported the project in ADS1.2 to RVDS3.0. and it is resolved by adding this keywords "PRESERVE8" in the file which contains the interrupt vector table.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic