I'll backup Max on this one.
Although, it isn't due to your using up all of the available data space. The common reason for this (note the “.udata”) is that a data block is limited to 256 bytes. The total for global variables declared within a single MPLAB project file (e.g., user_routines.c/.h) cannot exceed 256 bytes. Use of “static” not withstanding.
It's a byproduct of how the linker allocates the available 256 byte blocks of data space.
P.S. Care to test what the declaration limit is per routine within a project file?
It's not 256.
