in bad map, VCPU PMEM has 64KB free, I'm suspecting one of your overlay code section is too large (>64KB) so the linker can't place it in the available 64KB
;*********************************************************************************
;Memory map:
; Address space with id 0:
; r-x |0x00000000..0x0000ffff| memory .vpram (65536 bytes)
; |0x00010000..0x0001ffff| memory free space (65536 bytes)
;*********************************************************************************
From your good map, the 6 overlay sections are listed as below. For example .pebm_code_du_ul_c (61880 bytes) , if you added more code in this section its size would be increased and >64KB
;*********************************************************************************
; Address space with id 4:
; |0x00000000..0xe037ffff| memory free space (3761766400 bytes)
; r-x |0xe0380000..0xe0381297| memory .pebm_code_du_ul_a (4760 bytes)
...
; r-x |0xe0381400..0xe0381f6f| memory .pebm_code_du_ul_b (2928 bytes)
; r-x |0xe0381f70..0xe0391127| memory .pebm_code_du_ul_c (61880 bytes)
...
; r-x |0xe0394f00..0xe039afc7| memory .pebm_code_du_dl_a (24776 bytes)
; r-x |0xe039afc8..0xe039be47| memory .pebm_code_du_dl_b (3712 bytes)
; r-x |0xe039be48..0xe039d0df| memory .pebm_code_du_dl_c (4760 bytes)