Release Notes for MPLINK™ Object Linker and Utilities v4.36
MPLINK Object Linker v4.36
MPLIB™ Object Librarian v4.36
MP2COD COFF to COD File Converter v4.36
MP2HEX COFF to HEX File Converter v4.36
11 June 2010

Table of Contents
  1. Important Backward Compatibility Notes
  2. What's New in v4.3x
  3. What's Been Fixed Since v4.30
  4. Command Line Device Options Supported
  5. Operating System Support List
  6. Known Problems
  7. Customer Support
  1. Important Backward Compatibility Notes

  2. COFF File Format Replaces COD File Format

    Due to the elimination of the COD Format from MPASM ouput, and the use of COFF format instead, new flags have been added to COFF files that are generated by C18 v3.30 and MPASM v5.30. These flags are only recognized by MPLINK v4.30 and above. MPLINK v4.30 and above continue to recognize the old COFF files. However, earlier versions of MPLINK may not recognize new COFF files.

    Corrected behavior for programs with no high priority Interrupt Service Routine (ISR) due to removal of the vectors region from linker scripts (BIN18-70)

    This note is only applicable to programs with the following characteristics:

    1. Explicitly defined low priority ISR and
    2. No defined high priority ISR and
    3. Has the High priority interrupt enabled (either explicity or by not disabling the default)

    In the previous versions of the linker scripts (with the vectors region), no code or data was being placed between the High/Low-priority interrupt vectors. Consequently, with the arrival of a High-priority interrupt, the execution of the program would (erroneously) fall into the low-priority ISR. With the removal of the vectors region from the linker scripts, other data or code may be placed at the addresses between the High and Low priority interrupt vectors. This results in a non-deterministic behavior, upon the arrival of a high priority interrupt for these programs.

    MPLINK Linker and MPLAB IDE Compatibilty

    Due to a change in COFF file format, MPLAB C18 v3.00 and later will not be compatible with versions of MPLINK Linker prior to v4.00 or versions of the MPLAB IDE prior to v7.21.

    MPLINK Linker v4.00 and later will have backward compatibility to earlier versions at the source level only. Any existing object files or libraries compiled with earlier versions of the tools will not link using new versions of the tools. They will need to be recompiled from source.

    If the user attempts to use this release with object files or libraries compiled with earlier versions of MPLAB C18, MPLINK Linker, and MPASM Assembler, the error message that will be received will be similar to:

    Error - Coff file format for 'C:\mcc18\lib/c018i.o' is out of date.
    

    If the user attempts to use an old version of MPLINK Linker to link object files or libraries compiled with this release, the error message that will be received will be similar to:

    Error - Coff file format for 'C:\mcc18\lib/c018i.o' does not appear to be a valid COFF file.
    
  3. What's New in v4.3x


      • Early adopter part support has been added. See "Devices" below.


      • Old linker scripts will no longer be included in new installations. Only the generic linker scripts will be included. For example, 18F4550.lkr, 18F4550i.lkr, 18F4550_e.lkr and 18F4550i_e.lkr (which would be found under MCC18/lkr for the compiler) will no longer be installed. Instead, only 18F4550_g.lkr will be installed (which can be found under MCC18/bin/LKR for the compiler).
        Note: Installing over an older installation will not remove the old linker scripts, but updates will only be made to the new generic linker scripts.

      • The following beta devices have been renamed from "L" devices to "LF" devices:
        18L13K22 to 18LF13K22
        18L13K50 to 18LF13K50
        18L14K22 to 18LF14K22
        18L14K50 to 18LF14K50
        18L24J11 to 18LF24J11
        18L24J50 to 18LF24J50
        18L25J11 to 18LF25J11
        18L25J50 to 18LF25J50
        18L26J11 to 18LF26J11
        18L26J50 to 18LF26J50
        18L44J11 to 18LF44J11
        18L44J50 to 18LF44J50
        18L45J11 to 18LF45J11
        18L45J50 to 18LF45J50
        18L46J11 to 18LF46J11
        18L46J50 to 18LF46J50

      Introduced in v4.22 from BIN18-72
      Request for new #define and #if/else style directives for linker scripts.

      As an extension to the new features implemented for BIN18-72, now MPLINK has made available:

      1. /p command-line flag allows the user or IDE to define the part number for the linker. If this flag is used, MPLINK will select the correct generic linker script from the \lkr directory relative to the location of the executable and use it to build the project.
      2. /u command-line flag allows the user or IDE to define symbols that will be used by the linker to resolve the conditional directives inside the linker script. For more details on this please refer to the MPASM/MPLINK/MPLIB Users Guide.
      3. Customized Linker Scripts:
        1. The existing (old) linker scripts will be removed (in the future) from the distribution tree and only the generic linker scripts will be supported. The existing projects with local linker scripts will continue to work and user can decide if they want to use their local linker script or just eliminate it and let the linker to use the generic one. However, regarding the projects that use the default linker script, we recommend that users move to the new paradigm of not having any linker script.
        2. Customization of linker scripts is no different than before. Users can use their existing linker script or take a generic linker script and apply their modifications, and include it in their project. For more details on how to do this modification please refer to the MPASM/MPLINK/MPLIB Users Guide.
      4. Generic Linker Scripts:
        Using the conditional directives, now a single generic linker script, per device, replaces the various existing linker scripts, eliminating the need for an explicit selection of a linker-script inside the MPLAB projects. Through the /p and /u command-line flags, the IDE communicates the part number and different debug and part specific information to MPLINK. Accordingly, MPLINK selects the proper generic linker script and uses it to link the entire project. Any combination of the following build possibilities will automatically be handled without the user needing to worry about linker scripts:
        1. Build for debug or no debug for various debuggers
        2. Build for C or assembly only projects
        3. Build for extended or traditional mode (for PIC18)
  4. What's Been Fixed Since v4.30:


    1. Problems resolved between v4.35 and v4.36:

      (BIN18-116)
      Need to add RESERVED keyword to the linker script

      (BIN18-122)
      Correct the end address for eedata in the linker script for 16F882.

      (BIN18-124)
      MPLINK does not recognize MCP250XX

    2. Problems resolved between v4.34 and v4.35:

      (BIN18-4)
      MPLIB truncates filenames containing a forward-slash path delimiter

      (BIN18-110)
      Add /i command line option description to MPLINK help documentation

      (BIN18-114)
      Enable linker to also search the linker script at {linkerexepath}../lkr and linkerexepath}../LKR by default.

      (BIN18-115)
      For midrange devices, the one byte used by debug executable is not safe

      (BIN18-117)
      idloc locations are not PROTECTed in the device 16F877

    3. Problems resolved between v4.33 and v4.34:

      (BIN18-104)
      Internal Coff output file is corrupt, error is generated when the code has empty code and data sections

      (BIN18-108)
      Add support to allocate large objects (size more than one bank size) in Linear Memory for enhanced midrange devices (PIC16F193x).

    4. Problems resolved between v4.32 and v4.33:

      (BIN18-107)
      MPLINK fails to link for the device 18F86K95.

    5. Problems resolved between v4.31 and v4.32:

      None


    6. Problems resolved between v4.30 and v4.31:

      None


  5. Command Line Device Options Supported

  6. 10F200       10F202       10F204       10F206
    10F220       10F222
    
    12C508       12C508A      12C509       12C509A
    12C671       12C672
    12CE518      12CE519      12CE673      12CE674
    12CR509A
    12F1822      12F1840*
    12F508       12F509       12F510       12F519
    12F520       12F609       12F615       12F617 
    12F629       12F635       12F675       12F683
    12HV609      12HV615
    12LF1822     12LF1840*
    
    14000
    
    16C432       16C433       16C505       16C52
    16C54        16C54A       16C54B       16C54C
    16C55        16C554       16C557       16C558
    16C55A       16C56        16C56A       16C57
    16C57C       16C58A       16C58B
    16C5X
    16C61        16C62        16C620       16C620A
    16C621       16C621A      16C622       16C622A
    16C62A       16C62B       16C63        16C63A
    16C64        16C642       16C64A       16C65
    16C65A       16C65B       16C66        16C662
    16C67        16C71        16C710       16C711
    16C712       16C715       16C716       16C717
    16C72        16C72A       16C73        16C73A
    16C73B       16C74        16C745
    16C74A       16C74B       16C76        16C765
    16C77        16C770       16C771       16C773
    16C774       16C781       16C782       16C84
    16C923       16C924       16C925       16C926
    16CE623      16CE624      16CE625
    16CR54       16CR54A      16CR54B      16CR54C
    16CR56A      16CR57A      16CR57B      16CR57C
    16CR58A      16CR58B      16CR62       16CR620A
    16CR63       16CR64       16CR65       16CR72
    16CR83       16CR84
    16CXX
    16F1516*     16F1517*     16F1518*     16F1519*
    16F1823      16F1824      16F1825      16F1826
    16F1827      16F1828      16F1829      16F1933
    16F1934      16F1936      16F1937      16F1938 
    16F1939      16F1946      16F1947 
    16F505       16F506       16F526       16F54
    16F57
    16F59        16F610       16F616       16F627
    16F627A      16F628       16F628A      16F630
    16F631       16F636       16F639       16F648A
    16F676       16F677       16F684       16F685
    16F687       16F688       16F689       16F690
    16F707       16F716       16F72        16F720 
    16F721       16F722       16F722A      16F723
    16F723A 
    16F724       16F726       16F727       16F73
    16F737       16F74        16F747       16F76
    16F767
    16F77        16F777       16F785       16F818
    16F819       16F83        16F84        16F84A
    16F87        16F870       16F871       16F872
    16F873       16F873A      16F874       16F874A
    16F876       16F876A      16F877       16F877A
    16F88        16F882       16F883       16F884
    16F886       16F887       16F913       16F914
    16F916       16F917       16F946
    
    16LF720      16LF721      16LF722A     16LF723 
    16LF1516*    16LF1517*    16LF1518*    16LF1519*
    16LF1823     16LF1824     16LF1825     16LF1826
    16LF1827     16LF1828     16LF1829 
    16LF1933     16LF1934     16LF1936     16LF1937 
    16LF1938     16LF1939     16LF1946     16LF1947 
    16LF707      16LF722      16LF723      16LF724
    16LF726      16LF727
    
    16HV540      16HV610      16HV616      16HV785
    
    17C42        17C42A       17C43        17C44
    17C752       17C756       17C756A      17C762
    17C766
    17CR42       17CR43
    17CXX
    
    18C242       18C252       18C442       18C452 
    18C601       18C658       18C801       18C858 
    
    18F1220      18F1230      18F1320      18F1330
    18F13K22     18F13K50     18F14K22     18F14K50
    18F2220      18F2221      18F2320      18F2321      
    18F2331      18F23K20     18F23K22     18F2410 
    18F242       18F2420      18F2423      18F2431 
    18F2439      18F2450      18F2455      18F2458
    18F248       18F2480      18F24J10     18F24J11 
    18F24J50     18F24K20     18F24K22  
    18F2510      18F2515      18F252       18F2520 
    18F2523      18F2525      18F2539      18F2550 
    18F2553      18F258       18F2580      18F2585 
    18F25J10     18F25J11     18F25J50     18F25K20
    18F25K22     18F25K80  
    18F2610      18F2620      18F2680      18F2682      
    18F2685      18F26J11     18F26J13     18F26J50     
    18F26J53     18F26K20     18F26K22     18F26K80 
    18F27J13     18F27J53 
    18F4220      18F4221      18F4320      18F4321
    18F43K20     18F4331      18F43K22 
    18F4410      18F442       18F4420 
    18F4423      18F4431      18F4439      18F4450
    18F4455      18F4458      18F448       18F4480 
    18F44J10     18F44J11     18F44J50     18F44K20     
    18F44K22     18F4510      18F4515 
    18F452       18F4520      18F4523      18F4525 
    18F4539      18F4550      18F4553      18F458 
    18F4580      18F4585      18F45J10     18F45J11 
    18F45J50     18F45K20     18F45K22     18F45K80 
    18F4610      18F4620      
    18F4680      18F4682      18F4685      18F46J11 
    18F46J13     18F46J50     18F46J53     18F46K20     
    18F46K22     18F46K80 
    18F47J13     18F47J53     18F6310      
    18F6390      18F6393      18F63J11     18F63J90
    18F6410      18F6490      18F6493 
    18F64J11     18F64J90     18F6520 
    18F6525      18F6527      18F6585      18F65J10 
    18F65J11     18F65J15     18F65J50     18F65J90
    18F65K22     18F65K80     18F65K90 
    18F6620      18F6621      18F6622      18F6627 
    18F6628      18F6680      18F66J10     18F66J11
    18F66J15     18F66J16     18F66J50     18F66J55
    18F66J60     18F66J65     18F66J90     18F66J93 
    18F66K22     18F66K80     18F66K90     
    18F6720      18F6722      18F6723      18F67J10 
    18F67J11     18F67J50     18F67J60     18F67J90 
    18F67J93     18F67K22     18F67K90 
    18F8310      18F8390      18F8393      18F83J11
    18F83J90     18F8410      18F8490 
    18F8493      18F84J11     18F84J90
    18F8520      18F8525      18F8527      18F8585 
    18F85J10     18F85J11     18F85J15     18F85J50
    18F85J90     18F85K22     18F85K90     18F8620      
    18F8621      18F8622 
    18F8627      18F8628      18F8680      18F86J10 
    18F86J11     18F86J15     18F86J16     18F86J50
    18F86J55     18F86J60     18F86J65     18F86J72 
    18F86J90     18F86J93     18F86K22     18F86K27
    18F86K90 
    18F8720      18F8722      18F8723      18F87J10
    18F87J11     18F87J50     18F87J60     18F87J72 
    18F87J90     18F87J93     18F87K22     18F87K90 
    18F96J60     18F96J65     18F97J60
    
    18LF13K22    18LF13K50    18LF14K22    18LF14K50 
    18LF23K22    18LF24J11    18LF24J50    18LF24K22 
    18LF25J11    18LF25J50    18LF25K22    18LF25K80*
    18LF26J11    18LF26J13    18LF26J50    18LF26J53 
    18LF26K22    18LF26K80* 
    18LF27J13    18LF27J53    18LF43K22    18LF44J11    
    18LF44J50    18LF44K22    18LF45J11    18LF45J50
    18LF45K22    18LF45K80*   18LF46J11
    18LF46J13    18LF46J50    18LF46J53    18LF46K22 
    18LF46K80*   18LF47J13    18LF47J53 
    18LF65K80*   18LF66K80*
    
    EEPROM16     EEPROM8
    
    MCV08A       MCV14A       MCV18A       MCV18E
    MCV20USB     MCV28A
    
    RF509AF      RF509AG      RF675F       RF675H
    RF675K
    

    *Note: Early adopter support has been added for these devices since last release

    THE PARTS CORRESPONDING TO THESE OPTIONS MAY NOT ALL BE COMMERCIALLY AVAILABLE.

    The part selection is specified at assembly time and contained within the object file. An appropriate linker command file is necessary to properly link for the chosen part.

  7. Operating System Support List

  8. Windows 2000, Windows XP and 32-bit Windows Vista

  9. Known Problems

  10. (BIN18-3 / 22483)
    MPLIB is unable to work with MPLAB C18 files compiled in the static overlay model.
    For example, the source code:
            int add( int a, int b )
            {
               int c;
           
               c = a + b;
               return c;
            }
    
    can be compiled and archived with the commands:
            mcc18 test.c -sco
            mplib -c test.lib test.o
    
    However, attempting to list the files in the archive link the archive will result in the error:
            Error - Coff file 'test.o' could not read string table.
            Error - Could not build member 'test.o' in library file './test.lib'.
    
    (BIN18-5 / 3224)
    MPLINK Linker always links in the section which loads initialized data from program memory to data memory, even though it is not required.


    (BIN18-21 / 18214)
    If MPLINK.EXE is invoked without arguments, an error message stating "Error spawning _mplink.exe" is emitted. This message is spurious; it can be ignored.


    (BIN18-22 / 18432)
    An interrupt with locals of "overlay" storage class which calls a function reachable from main is incorrectly viewed as recursive.
    For example, the program:
            int g (void) {
              return 2;
            }
    
            void f (void);
            #pragma interrupt f
            void f (void) {
              overlay int x;
              x = g ();
            }
    
            void main (void) {
              int x;
              x = g ();
            }
    
    Will cause a linker error, stating that 'g' is recursive and has locals of "overlay" storage class. The workaround is to use "auto" instead of "overlay" in the interrupt.


    (BIN18-26 / 19225)
    MPLINK Linker may generate an assertion failure on programs which contain a section of zero length. The workaround is to remove such sections from the program.


    (BIN18-27 / 20403)
    The '/r' option of MP2HEX does not work correctly for ranges specified outside of any existing data.
    For example, given the following source, 't.asm':
            LIST P=12C508
            CODE 0x100
            MOVLW 0
            MOVLW 1
            MOVLW 2
            MOVLW 3
            END
    
    After assembly, execute 'mp2hex.exe t.o /r 0x104-0x104'. The hex file content is:
            :02 0000 04 0000FA
            :02 0206 00 030C E7
            :00 0000 01 FF
    
    The data record shows the instruction 'MOVLW 3' at address 0x103, but 0x103 was not specified in the range.
    Since no data exists at 0x104 in the COFF file, there should be no data bytes in the hex file.


    (BIN18-29 / 22228)
    Quiet mode (/q) disables the printing of errors and warnings to standard out.


    (BIN18-33 / 22947)
    The /? command-line option may give the following error message on Windows 2000:
            Error - unknown switch: /r
    
    Use the /h option instead.


    (BIN18-50 / 27314)
    Program memory utilization is not correct in map files generated for PIC18F87J10.


    (BIN18-53 / 28114)
    The linker may disregard the section information in the last IDATA due to CONFIG syntax directives.


  11. Customer Support


    Microchip provides online support via our home page at:
    http://www.microchip.com

    Technical support is available through the web site at:
    http://support.microchip.com

    A forum for discussion of Microchip products and tools is available at:
    http://forum.microchip.com