I have also filed a support case and will report back if I hear back from them. The over-arching issue is that when you have a fixed stack OTA firmware update, the BLE component 'lives' in the Bootloader project, not the Bootloadable project. So this makes it complicated to use BLE-specific API in the Bootloadable (for me, anyway).
Here is the solution thanks to Anjana:
1) Add KEEP(*(i.CyBle_GapUpdateAdvData*)) and
KEEP(*(.text.CyBle_GapUpdateAdvData*)) in cm0gcc.ld of Bootloader project.
2) build bootloader and run mk.bat
3) Add the API definition in OTAMandatory.h file of Bootloadable project as an extern. Eg as below
extern CYBLE_API_RESULT_T CyBle_GapUpdateAdvData
CYBLE_GAPP_DISC_DATA_T * advDiscData,
CYBLE_GAPP_SCAN_RSP_DATA_T * advScanRespData