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


Previous by date: 18 Jul 2005 20:22:17 +0100 Re: [gnupic] sdcc/PIC howto, first draft is up, Peter Onion
Next by date: 18 Jul 2005 20:22:17 +0100 Sample Code for howto, Philippe BEAU
Previous in thread:
Next in thread:

Subject: Microchip COFF file format changes for 8-bit tools
From: James Grosbach ####@####.####
Date: 18 Jul 2005 20:22:17 +0100
Message-Id: <20050718192628.GA22890@humbaba>

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

Previous by date: 18 Jul 2005 20:22:17 +0100 Re: [gnupic] sdcc/PIC howto, first draft is up, Peter Onion
Next by date: 18 Jul 2005 20:22:17 +0100 Sample Code for howto, Philippe BEAU
Previous in thread:
Next in thread:


Powered by ezmlm-browse 0.20.