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