I think I found the bug. This structure in COFF.h had 2 pointers _n_nptr[2] that were read in as binary structures from the COFF file. Switching to x64 changes the pointers from 32 to 64 bits which throws off the alignment in the COFF file. Changing back to 32 bit fields as shown below seems to solve the issue. Those fields aren't used in our app anyway,
Code:
struct syment
{
union
{
char _n_name[SYMNMLEN]; /* old COFF version */
struct
{
long _n_zeroes; /* new == 0 */
long _n_offset; /* offset into string table */
} _n_n;
// char *_n_nptr[2]; /* allows for overlaying */
int _n_nptr[2]; /* 2 32 bit fields - tktk - allows for overlaying */
} _n;
long n_value; /* value of symbol */
short n_scnum; /* section number */
unsigned short n_type; /* type and derived type */
char n_sclass; /* storage class */
char n_numaux; /* number of aux. entries */
};