Forum > Embedded - AVR

[CLOSED] Linker map file

(1/2) > >>

julkas:
On Windows -Xm generates linker map file -

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---Used linker script ...READOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\system.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\heaptrc.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\lnfodwrf.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\exeinfo.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\strings.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\windows.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\objpas.oREADOBJECT C:\OLD_DISK\C_DISK\laz\fpc\3.0.4\units\i386-win32\rtl\fpintres.o 
What does -Xm do for embedded ?





julkas:
How generate linker map file for embedded target ?
Thanks.

Cyrax:
Which embedded target? Please give more info so I or others might fix this problem in the FPC trunk.
EDIT : Ah, AVR. I don't have the utilities for AVR target, but does the AVR cross linker support generation of the map file?
This bugreport of mine can be use as an inspiration : https://bugs.freepascal.org/view.php?id=33982

julkas:

--- Quote from: Cyrax on January 05, 2020, 02:48:22 pm ---Which embedded target? Please give more info so I or others might fix this problem in the FPC trunk.
EDIT : Ah, AVR. I don't have the utilities for AVR target, but does the AVR cross linker support generation of the map file?
This bugreport of mine can be use as an inspiration : https://bugs.freepascal.org/view.php?id=33982

--- End quote ---

See option -Xm

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---$ ppcrossavr.exeFree Pascal Compiler version 3.3.1 [2020/01/01] for avrCopyright (c) 1993-2019 by Florian Klaempfl and othersC:\OLD_DISK\C_DISK\fpc-avr\bin\i386-win32\ppcrossavr.exe [options] <inputfile> [options] Put + after a boolean switch option to enable it, - to disable it.  @<x>   Read compiler options from <x> in addition to the default fpc.cfg  -a     The compiler does not delete the generated assembler file      -a5        Don't generate Big Obj COFF files for GNU Binutils older than 2.25 (Windows, NativeNT)      -al        List sourcecode lines in assembler file      -an        List node info in assembler file (-dEXTDEBUG compiler)      -ao        Add an extra option to external assembler call (ignored for internal)      -ar        List register allocation/release info in assembler file      -at        List temp allocation/release info in assembler file  -A<x>  Output format:      -Adefault  Use default assembler  -b     Generate browser info      -bl        Generate local symbol info  -B     Build all modules  -C<x>  Code generation options:      -C3        Turn on ieee error checking for constants*** press enter ***       -Ca<x>     Select ABI; see fpc -i or fpc -ia for possible values      -Cb        Generate code for a big-endian variant of the target architecture      -Cc<x>     Set default calling convention to <x>      -CD        Create also dynamic library (not supported)      -Ce        Compilation with emulated floating point opcodes      -CE        Generate FPU code which can raise exceptions      -Cf<x>     Select fpu instruction set to use; see fpc -i or fpc -if for possible values      -CF<x>     Minimal floating point constant precision (default, 32, 64)      -Cg        Generate PIC code      -Ch<n>[,m] <n> bytes min heap size (between 1023 and 67107840) and optionally [m] max heap size      -Ci        IO-checking      -Cn        Omit linking stage      -Co        Check overflow of integer operations      -CO        Check for possible overflow of integer operations      -Cp<x>     Select instruction set; see fpc -i or fpc -ic for possible values      -CP<x>=<y>  packing settings         -CPPACKSET=<y>  <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 and 8*** press enter ***          -CPPACKENUM=<y>  <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMAL         -CPPACKRECORD=<y>  <y> record packing: 0 or DEFAULT or NORMAL, 1, 2, 4, 8, 16 and 32      -Cr        Range checking      -CR        Verify object method call validity      -Cs<n>     Set stack checking size to <n>      -Ct        Stack checking (for testing only, see manual)      -CX        Create also smartlinked library  -d<x>  Defines the symbol <x>  -D     Generate a DEF file      -Dd<x>     Set description to <x>      -Dv<x>     Set DLL version to <x>  -e<x>  Set path to executable  -E     Same as -Cn  -fPIC  Same as -Cg  -F<x>  Set file names and paths:      -Fa<x>[,y] (for a program) load units <x> and [y] before uses is parsed      -Fc<x>     Set input codepage to <x>      -FC<x>     Set RC compiler binary name to <x>      -Fd        Disable the compiler's internal directory cache      -FD<x>     Set the directory where to search for compiler utilities      -Fe<x>     Redirect error output to <x>*** press enter ***       -Ff<x>     Add <x> to framework path (Darwin only)      -FE<x>     Set exe/unit output path to <x>      -Fi<x>     Add <x> to include path      -Fl<x>     Add <x> to library path      -FL<x>     Use <x> as dynamic linker      -Fm<x>     Load unicode conversion table from <x>.txt in the compiler dir      -FM<x>     Set the directory where to search for unicode binary files      -FN<x>     Add <x> to list of default unit scopes (namespaces)      -Fo<x>     Add <x> to object path      -Fr<x>     Load error message file <x>      -FR<x>     Set resource (.res) linker to <x>      -Fu<x>     Add <x> to unit path      -FU<x>     Set unit output path to <x>, overrides -FE      -FW<x>     Store generated whole-program optimization feedback in <x>      -Fw<x>     Load previously stored whole-program optimization feedback from <x>  -g     Generate debug information (default format for target)      -gc        Generate checks for pointers (experimental, only available on some targets, might generate false positive)      -gh        Use heaptrace unit (for memory leak/corruption debugging)      -gl        Use line info unit (show more info with backtraces)      -gm        Generate Microsoft CodeView debug information (experimental)*** press enter ***       -go<x>     Set debug information options         -godwarfsets  Enable DWARF 'set' type debug information (breaks gdb < 6.5)         -gostabsabsincludes  Store absolute/full include file paths in Stabs         -godwarfmethodclassprefix  Prefix method names in DWARF with class name         -godwarfcpp  Simulate C++ debug information in DWARF         -godwarfomflinnum  Generate line number information in OMF LINNUM records in MS LINK format in addition to the DWARF debug information (Open Watcom Debugger/Linker compatibility)      -gp        Preserve case in stabs symbol names      -gs        Generate Stabs debug information      -gt        Trash local variables (to detect uninitialized uses; multiple 't' changes the trashing value)      -gv        Generates programs traceable with Valgrind      -gw        Generate DWARFv2 debug information (same as -gw2)      -gw2       Generate DWARFv2 debug information      -gw3       Generate DWARFv3 debug information      -gw4       Generate DWARFv4 debug information (experimental)  -i     Information      -iD        Return compiler date      -iSO       Return compiler OS*** press enter ***       -iSP       Return compiler host processor      -iTO       Return target OS      -iTP       Return target processor      -iV        Return short compiler version      -iW        Return full compiler version      -ia        Return list of supported ABI targets      -ic        Return list of supported CPU instruction sets      -if        Return list of supported FPU instruction sets      -ii        Return list of supported inline assembler modes      -io        Return list of supported optimizations      -ir        Return list of recognized compiler and RTL features      -it        Return list of supported targets      -iu        Return list of supported microcontroller types      -iw        Return list of supported whole program optimizations  -I<x>  Add <x> to include path  -k<x>  Pass <x> to the linker  -l     Write logo  -M<x>  Set language mode to <x>      -Mfpc      Free Pascal dialect (default)      -Mobjfpc   FPC mode with Object Pascal support      -Mdelphi   Delphi 7 compatibility mode      -Mtp       TP/BP 7.0 compatibility mode*** press enter ***       -Mmacpas   Macintosh Pascal dialects compatibility mode      -Miso      ISO 7185 mode      -Mextendedpascal ISO 10206 mode      -Mdelphiunicode Delphi 2009 and later compatibility mode  -n     Do not read the default config files  -o<x>  Change the name of the executable produced to <x>  -O<x>  Optimizations:      -O-        Disable optimizations      -O1        Level 1 optimizations (quick and debugger friendly)      -O2        Level 2 optimizations (-O1 + quick optimizations)      -O3        Level 3 optimizations (-O2 + slow optimizations)      -O4        Level 4 optimizations (-O3 + optimizations which might have unexpected side effects)      -Oa<x>=<y> Set alignment      -Oo[NO]<x> Enable or disable optimizations; see fpc -i or fpc -io for possible values      -Op<x>     Set target cpu for optimizing; see fpc -i or fpc -ic for possible values      -OW<x>     Generate whole-program optimization feedback for optimization <x>; see fpc -i or fpc -iw for possible values      -Ow<x>     Perform whole-program optimization <x>; see fpc -i or fpc -iw for possible values*** press enter ***       -Os        Optimize for size rather than speed  -pg    Generate profile code for gprof (defines FPC_PROFILE)  -R<x>  Assembler reading style:      -Rdefault  Use default assembler for target  -S<x>  Syntax options:      -S2        Same as -Mobjfpc      -Sc        Support operators like C (*=,+=,/= and -=)      -Sa        Turn on assertions      -Sd        Same as -Mdelphi      -Se<x>     Error options. <x> is a combination of the following:         <n> : Compiler halts after the <n> errors (default is 1)         w : Compiler also halts after warnings         n : Compiler also halts after notes         h : Compiler also halts after hints      -Sf        Enable certain features in compiler and RTL; see fpc -i or fpc -ir for possible values)      -Sg        Enable LABEL and GOTO (default in -Mtp and -Mdelphi)      -Sh        Use reference counted strings (ansistring by default) instead of shortstrings      -Si        Turn on inlining of procedures/functions declared as "inline"      -Sj        Allows typed constants to be writeable (default in all modes)      -Sk        Load fpcylix unit*** press enter ***       -SI<x>     Set interface style to <x>         -SIcom     COM compatible interface (default)         -SIcorba   CORBA compatible interface      -Sm        Support macros like C (global)      -So        Same as -Mtp      -Sr        Transparent file names in ISO mode      -Ss        Constructor name must be init (destructor must be done)      -Sv        Support vector processing (use CPU vector extensions if available)      -Sx        Enable exception keywords (default in Delphi/ObjFPC modes)      -Sy        @<pointer> returns a typed pointer, same as $T+  -s     Do not call assembler and linker      -sh        Generate script to link on host      -st        Generate script to link on target      -sr        Skip register allocation phase (use with -alr)  -T<x>  Target operating system:      -Tembedded Embedded  -u<x>  Undefines the symbol <x>  -U     Unit options:      -Un        Do not check where the unit name matches the file name      -Ur        Generate release unit files (never automatically recompiled)      -Us        Compile a system unit*** press enter ***   -v<x>  Be verbose. <x> is a combination of the following letters:      e : Show errors (default)       0 : Show nothing (except errors)      w : Show warnings               u : Show unit info      n : Show notes                  t : Show tried/used files      h : Show hints                  c : Show conditionals      i : Show general info           d : Show debug info      l : Show linenumbers            r : Rhide/GCC compatibility mode      s : Show time stamps            q : Show message numbers      a : Show everything             x : Show info about invoked tools      b : Write file names messages   p : Write tree.log with parse tree          with full path              v : Write fpcdebug.txt with      z : Write output to stderr          lots of debugging info      m<x>,<y> : Do not show messages numbered <x> and <y>  -W<x>  Target-specific options (targets)      -Wp<x>     Specify the controller type; see fpc -i or fpc -iu for possible values      -WX        Enable executable stack (Linux)  -X     Executable options:      -X9        Generate linkerscript for GNU Binutils ld older than version 2.19.1 (Linux)      -Xc        Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Linux)*** press enter ***       -Xd        Do not search default library path (sometimes required for cross-compiling when not using -XR)      -Xe        Use external linker      -Xf        Substitute pthread library name for linking (BSD)      -Xg        Create debuginfo in a separate file and add a debuglink section to executable      -XD        Try to link units dynamically      (defines FPC_LINK_DYNAMIC)      -Xi        Use internal linker      -XLA       Define library substitutions for linking      -XLO       Define order of library linking      -XLD       Exclude default order of standard libraries      -Xm        Generate link map      -XM<x>     Set the name of the 'main' program routine (default is 'main')      -Xn        Use target system native linker instead of GNU ld (Solaris, AIX)      -XP<x>     Prepend the binutils names with the prefix <x>      -Xr<x>     Set the linker's rlink-path to <x> (needed for cross compile, see the ld manual for more information) (BeOS, Linux)      -XR<x>     Prepend <x> to all linker search paths (BeOS, Darwin, FreeBSD, Linux, Mac OS, Solaris)      -Xs        Strip all symbols from executable*** press enter ***       -XS        Try to link units statically (default, defines FPC_LINK_STATIC)      -Xt        Link with static libraries (-static is passed to linker)      -Xv        Generate table for Virtual Entry calls      -XV        Use VLink as external linker       (default on Amiga, MorphOS)      -XX        Try to smartlink units             (defines FPC_LINK_SMART)   -?     Show this help  -h     Shows this help without waiting
AVR Libc Reference Manual - https://www.microchip.com/webdoc/AVRLibcReferenceManual/group__demo__project_1demo_project_map.html

ccrause:
-Xm does indeed not produce a map file, anyway not where I could find it...

You can also try -sh (Generate script to link on host).  As part of the script there is a list of search directories and a list of object files to link.

--- Code: Text  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---SEARCH_DIR("/home/christo/fpc/fpc-avr/src/library/")SEARCH_DIR("./")SEARCH_DIR("/home/christo/fpc/avr-new/rtl/units/avr-embedded-avr5/")SEARCH_DIR("/home/christo/fpc/avr-new/compiler/")INPUT (/home/christo/fpc/fpc-avr/src/examples/blink1/lib/avr-embedded/blink.o/home/christo/fpc/avr-new/rtl/units/avr-embedded-avr5/system.o/home/christo/fpc/avr-new/rtl/units/avr-embedded-avr5/atmega328p.o/home/christo/fpc/fpc-avr/src/examples/blink1/lib/avr-embedded/delay.o/home/christo/fpc/fpc-avr/src/examples/blink1/lib/avr-embedded/simavrinfo.o/home/christo/fpc/fpc-avr/src/examples/blink1/lib/avr-embedded/simavr.o)ENTRY(_START)OUTPUT_FORMAT("elf32-avr","elf32-avr","elf32-avr")OUTPUT_ARCH(avr:5)MEMORY{8<

Navigation

[0] Message Index

[#] Next page

Go to full version