Forum > Embedded - AVR
[CLOSED] Linker map file
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