Re: Microchip COFF file format changes for 8-bit tools

Chen Xiao Fan <[email protected]>
Newsgroups gmane.comp.hardware.microcontrollers.gnupic
Message-ID <3B8AEFFADD3DD4118F8100508BACEC2C0A2890EB@spex>
What does this mean to gputils/gpsim/sdcc?

----- Original Message ----- 
From: "James Grosbach" <[email protected]>
Newsgroups: gmane.comp.hardware.microcontrollers.gnupic
Sent: Tuesday, July 19, 2005 3:26 AM
Subject: Microchip COFF file format changes for 8-bit tools


> Hi folks,
> 
> I'd like to give you good folks a bit of a heads up that our COFF file
> format is changing with the forthcoming (v3.00) release of MPLAB C18.
> 
> This is all information which will be documented in the updated compiler
> User's Guide, but I figured a summary might be useful to you.
> 
> Specifically, the following changes are being made:
> 
> * Magic number
> Since the file format is changing, the magic number will change so the
> new and the old formats are distinguishable from one another. The magic
> number will be changed to 0x1240.
> 
> The floating point format used is inferable from the magic number. If
> the magic number is 0x1234, the floating point format is MCHP, else it
> is IEEE. This will still result in an incorrect assumption for v2.4x
> compilers, but that is an issue currently and not something a more
> involved design would solve. This is purely an inference MPLAB will make
> based on the magic number, but again, it may be useful information to
> know what's happening.
> 
> 
> * Symbol table type information
> The n_type field in the syment data structure will be widened from 16
> bits to 32 bits to provide for the additional content needed to encode
> for additional type information. This will widen all symbol table
> entries, including auxiliary entries, by 16 bits. All other symbol table
> entry structures will need 16 bits of padding added to the end of the
> structure.
> 
> For the n_type field, the base type and the derived type sub-fields will 
> each be expanded by one bit to encode additional information.
> 
> The additional base type values representable are:
> 16  T_LNGDOUBLE Long double floating point (unused by C18)
> 17  T_SLONG   Short long integer
> 18  T_USLONG  Unsigned short long integer
> 
> The derived type values will be:
> 1 DT_RAMPTR (was DT_PTR, now exclusively references data memory)
> 4 DT_ROMPTR Pointer to program memory
> 
> * Version information
> The vstamp field in the optional header is currently unused by Microchip
> applications and is reserved for version stamp information.
> This field will be used to specify version information for the
> generating application. For linked files, the version of the linker will
> be stored. 
> 
> The field will be widened from 16 bits to 32 bits.
> 
> Microchip version numbers are of the form XX.YY.ZZ. The version stamp
> will be derived as vstamp=XX*10000+YY*100+ZZ. A version stamp value of 
> zero indicates that a version number is not specified.
> 
> I hope this information will prove useful to you. If you have any
> questions, please feel free to contact me and I'll do my best to answer.
> I am subscribed to this mailing list, although I check it somewhat
> infrequently, so for any on-list questions I would greatly appreciate it
> if you would include my address as a CC to help make sure I don't miss
> it.
> 
> 
> Regards,
>  Jim Grosbach
> 
> -- 
> James Grosbach
> Principal Compiler Engineer
> Microchip Technology
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.