Using the SDK11 bootloader, if I recompile the bootloader, package it with nrfutil 0.5.3, and perform a DFU update the original bootloader is erased but the new bootloader never gets copied to the final location by the MBR. I've confirmed that the DFU transfer was successful, valid, etc, and it gets all the way to dfu_bl_image_swap() which calls sd_mbr_command() to copy the actual bootloader from the temporary location to the real location - but this is where it fails.
Reading back the flash after the DFU operation, I can see the new bootloader at 0x49000 (the address passed to sd_mbr_command) but the original bootloader location at 0x77000 is erased. UICR->NRFFW[0] contains the correct bootloader address of 0x77000, and UICR->NRFFW[1] contains the correct MBR settings page address of 0x7E000.
This is being done with the stock SDK11 bootloader and S132 v2.0.1 (tested with v2.0.0 too) with the exception that I've changed the ORIGIN for FLASH in the linker script to 0x77000 (and length correspondingly to 0x7000) and BOOTLOADER_REGION_START to match as 0x77000.
What would cause sd_mbr_command to not copy the valid new bootloader to its destination?