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 */
};