0% found this document useful (0 votes)
10 views5 pages

Function Pointer Assignment Flow

Uploaded by

SUMAN SWARAJ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views5 pages

Function Pointer Assignment Flow

Uploaded by

SUMAN SWARAJ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

Note:

___________________________________________________________________________________
__________________________________________________

1. pfn_database.json have two section: 1. assignment and 2. calls

2.

Steps to follow:
___________________________________________________________________________________
__________________________________________________

1. find <function_name>.

2. find callx8

3. scroll up and find function call line and file name and line number.

4. Now go to pfn_database.json

5. Got to call section and search for file_name.

6. go to that dict, having same file name and line number.

7. You will find the ptr_type = xyz there.

8. search xyz in assignment section.

9. you will get multiple, one is correct, rest will come as black list.

10. then select function key from dict and this will be actual function, and
details of this function is in dis file.

Example:
___________________________________________________________________________________
__________________________________________________

Let's take example of function: <tmrrRouter_ProcessSubChDecLink+0x32>

find callx8:

/opt/samba/nxf46137/radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/
tmrrRouter/../../../../../../lib/dabCtrlLib/comps/tmrrRouter/src/tmrrRouter.c:429
prcState |= p_SubChDecEntryLink[idx]-
>pfn_subChDecDataIn(p_SubChDecEntryLink[idx], k_Sync, k_SubChId, p_subChData,
k_Size, k_actionType, &p_Inst->subChDecLinkResultHdl);
222aca04: 0a98 l32i.n a9, a10, 0
222aca06: 0179 s32i.n a7, a1, 0
222aca08: 0009e0 callx8 a9

called function pointer : prcState |= p_SubChDecEntryLink[idx]-


>pfn_subChDecDataIn(p_SubChDecEntryLink[idx], k_Sync, k_SubChId, p_subChData,
k_Size, k_actionType, &p_Inst->subChDecLinkResultHdl);
file name:
radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/tmrrRouter/../../../../../../
lib/dabCtrlLib/comps/tmrrRouter/src/tmrrRouter.c
line number : 429

go to pfn_database.json file and search in call section : tmrrRouter.c


now under result search for line number : 429

{
"file": "tmrrRouter.c",
"line": 429,
"ptr_type": "pfn_SubChDecoderDataIn"
}

function pointer type is : pfn_SubChDecoderDataIn

now search the function pointer type in assignment section : pfn_SubChDecoderDataIn

Found results:

1. {
"file": "handleSinkPktDgTpegToHost.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_SinkPktDgTpegToHost",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x080f2ce0"
}

2. {
"file": "handleDecTDmb.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecTDmb",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x0ba80e20"
}

3. {
"file": "handleDecMusicam.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecMusicam",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x1cb1c180"
}

4. {
"file": "tmrrRouter_GlobalResources.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecMusicam",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x31ea1e00"
}

5. {
"file": "tmrrRouter_GlobalResources.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecDabPlus",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x31ea2158"
}
6. {
"file": "tmrrRouter_GlobalResources.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecTDmb",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x31ea2438"
}

7. {
"file": "tmrrRouter_GlobalResources.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecTDmb",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x31ea27a8"
}

8. {
"file": "tmrrRouter_GlobalResources.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecPacketData",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x31ea2b78"
}

9. {
"file": "handleSinkPad.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_SinkPad",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x256d6bd0"
}

10. {
"file": "handleSinkSrcDec.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_SinkSrcDec",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x026ff390"
}

11. {
"file": "handleSinkSrcDec.c",
"ptr_type": "const pfn_SubChDecoderDataIn",
"function": "process_SinkSrcDec",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x027d2e10"
}

12. {
"file": "handleDecPacketData.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecPacketData",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x372c3f30"
}

13. {
"file": "handleSinkDataToHost.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_SinkDataToHost",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x244f0e60"
}

14. {
"file": "handleDecDabPlus.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecDabPlus",
"dbg_assign_type": 40,
"dbg_ast_adr": "0x1466c540"
}

15. {
"file": "tmrrRouterTb_Select.c",
"ptr_type": "pfn_SubChDecoderDataIn",
"function": "process_DecMusicam",
"dbg_assign_type": 10,
"dbg_ast_adr": "0x0dae67e0"
}

Total potential candidates : 15 ("function": name_of_function)


1 will be correct and 14 will be in black list.

Taking example of 14th potential candidate:

search him in dis file and get the size and create the call graph with size:
<process_DecDabPlus>

searched details:

222acb98 <process_DecDabPlus>:
process_DecDabPlus():
/opt/samba/nxf46137/radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/
tmrrRouter/../../../../../../lib/dabCtrlLib/comps/tmrrRouter/src/
handleDecDabPlus.c:190
return prcState;
}

uint32_t process_DecDabPlus(void *p_inst, const bool k_Sync, const uint8_t


k_SubChId, uint8_t *p_data, const uint32_t k_Size,
const SubChDecLinkActionType k_actionType, void*
p_SubChDecLink_ResultHandler)
{
222acb98: 020136 entry a1, 0x100
222acb9b: 2f6142 s32i a4, a1, 188
222acb9e: 06bd mov.n a11, a6
/opt/samba/nxf46137/radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/
tmrrRouter/../../../../../../lib/dabCtrlLib/comps/tmrrRouter/src/
handleDecDabPlus.c:194
uint32_t prcState = (uint32_t)PRC_STATE_OK;
if (k_Size < AAC_HEADER_LENGTH) // must be > AAC header
{
DS_DEBUG_PRINT_2(print_domain_router, DABPL_DEC_VERBOSE_ERROR, "subChSize
mismatch %d\n", k_Size);
222acba0: 6f9f41 l32r a4, 22288a1c
(11240279 <system_tracing_enable_printing_print_domain_router>)
222acba3: cf0c movi.n a15, 12
222acba5: 026d mov.n a6, a2
222acba7: 336132 s32i a3, a1, 204
222acbaa: 020c movi.n a2, 0
/opt/samba/nxf46137/radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/
tmrrRouter/../../../../../../lib/dabCtrlLib/comps/tmrrRouter/src/
handleDecDabPlus.c:192
if (k_Size < AAC_HEADER_LENGTH) // must be > AAC header
222acbac: 163fb7 bltu a15, a11, 222acbc6
<process_DecDabPlus+0x2e>
/opt/samba/nxf46137/radiosystems/build/hifi5-es2-dbg/lib/dabCtrlLib/comps/
tmrrRouter/../../../../../../lib/dabCtrlLib/comps/tmrrRouter/src/
handleDecDabPlus.c:194
DS_DEBUG_PRINT_2(print_domain_router, DABPL_DEC_VERBOSE_ERROR, "subChSize
mismatch %d\n", k_Size);
222acbaf: 0020c0 memw
222acbb2: 000432 l8ui a3, a4, 0
222acbb5: 80a022 movi a2, 128
222acbb8: 6fcba1 l32r a10, 22288ae4
(800254c0 <process_DecDabPlus.printing_context>)
222acbbb: b38c beqz.n a3, 222acbca
<process_DecDabPlus+0x32>
222acbbd: 6d3b81 l32r a8, 222880ac
(222dc530 <C_DabHifiSubsystem_PrintArray2>)
222acbc0: 0008e0 callx8 a8
222acbc3: 0000c6 j 222acbca
<process_DecDabPlus+0x32>

You might also like