I think I found a bug in ble_dfu_bonded.c.
In ble_dfu_buttonless_bootloader_start_prepare() there is a call to gscm_local_database_has_changed(). The problem is that this function is only present if PM_SERVICE_CHANGED_ENABLED is 1. If this has been disabled, then you will get a linker error.
I removed the linker error by putting a #if(PM_SERVICE_CHANGED_ENABLED == 1) #endif around the gscm_local_database_has_changed() function call.
Is PM_SERVICE_CHANGED_ENABLED required for bonded DFU support? I disabled it because I am running close to the flash limit even with optimizations...