You can't rename the locations, because by your own admission, they don't exist. In this case, if you're not worried about maintaing control flow information and just want to see the name that corresponds to the address, you can do a couple of things.
You can write an IDAPython script to:
- Parse your text file
- Locate all of the unresolved BL calls, extract the address
- Look up the name in your parsed symbol information
- Create a comment in the database with the symbol name using the idc.MakeComm(ea, symbol_name) function
This will get you an inline comment with the symbol name, something like this:
BL 0x12345678a # _memmap
Make an Enum from the Symbol Info
If you wanted to change the representation of the raw address to a string, you can create an enum out of the data in the text file, and then apply that enum to the operand of all the BL instructions that have unresolved targets. This should effectively give you a name for that call target, even though the address doesn't exist in the database, like so:
You can accomplish this a couple of ways: by using the IDAPython enum functions (AddEnum/AddConstEx), assuming you have processed your text file into a list of tuples of (symbol, addr):
id = idc.AddEnum(index, "MyEnum", flags)
for symbol, addr in text_info:
idc.AddConstEx(id, symbol, value, bmask)
You can then use the idc.OpEnumEx() function wherever you have a raw address in your BL instruction to set that operand to your enum type.
You can also convert your text information file into a C header file with a single enum representing your mapping, but this is a bit more tedious.
Be warned, this is only cosmetic. Attempting to utilize any of the xref capabilities will fail, because it's not actually an address in the database, just a symbolic representation of the immediate value.
Both of the previously described methods will get you the information you want without adding items to the Names list.
If you wanted to maintain control flow information and get them to "show up correctly in the disassembly", you would have to create plt/got segments to simulate the rest of your address space. It's a bit more complicated, but doable if you need to do more complex analysis or want to take advantage of IDA's library recognition and type propagation. Sounds like you just need the visual assistance of the symbol name, though. Hope this helps.