About locate segment question

Dear Sirs,

  There are 2 code rams in my project, 0x0~0x1FFF and 0x8000~0x9FFF.

I have already located the functions of the C file to address 0x8000. 

You could see the ?PR?PROTOCOL_VARIABLE_INIT?PROTOCOL at address 0x8000. (refer to photo1)

But I don't understand why there are another code (?PR?PROTOCOL) still at address 0x10CF.  (refer to photo1 and photo2)

After I check the disassembly code, the compiler generate many symbols for this C file.

I add the ?PROTOCL in the BL_Locate>Code. Yes,I could locate these symbols to address 0x9694  (refer to photo3)

My question is,

  If I want to locate all assembly code for this c file to another address,

I should declare the functions of this C file and symbols which generated by compiler in BL_Locate>Code, is it correct?

If the answer is correct,   is it also able to gurrante that all the assembly code of this c file is already located in the address 0x8000 area?

Thanks for your help in advance.