[Dprglist] gcc compiler/linker question - how to force code at given memory location?

Clayton Timmons ctimmons at ieee.org
Thu Jan 30 12:56:09 PST 2020


I'm searching for an answer to a simple question.  My friend Google tried
to help but so far Google hasn't given me a good answer.   I'm hoping some
savvy DPRG member probably has the wisdom I seek.



I'm using a microchip processor writing code in C.   The code consists of
several C source files which are compiled into object code then linked
together.  Something like this simplified example.

gcc -c   foo.c             <<<  compile C code into object file
gcc -c   bar.c             <<<  compile C code into object file

gcc   foo.o  bar.o   -o  foobar.cof     <<<  link all object files together

The final output is in cof format which is converted to hex format used by
the programmer.   There is a map file created by the linker which allows me
to see where all the C functions end up in memory, something like this.

External Symbols in Program Memory (by address):

                     .  .  .
                  0x003b18                  _foo
                     .  .  .
                  0x003e1e                  _bar


My question is -   How can I force the linker to put a specific function at
a specific location?     Say I want the function bar to start at 0x004000.

There should be some compiler or linker directives to accomplish that.

Any help is appreciated.

-Clay Timmons-
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dprg.org/pipermail/dprglist-dprg.org/attachments/20200130/99e71270/attachment.html>


More information about the DPRGlist mailing list