diff --git a/libc-test/src/functionalext/ldso_cfi/ldso_cfi_check.c b/libc-test/src/functionalext/ldso_cfi/ldso_cfi_check.c index 88d5ba655dcebcbef85bee396ce496e7309ba0da..fb0a60b329f622230b8dbe645f91dc8db1807813 100644 --- a/libc-test/src/functionalext/ldso_cfi/ldso_cfi_check.c +++ b/libc-test/src/functionalext/ldso_cfi/ldso_cfi_check.c @@ -358,8 +358,8 @@ void cfi_unmap_dso_from_cfi_shadow_002(void) { printf("["__FILE__"][Line: %d][%s]: entry\n", __LINE__, __func__); struct dso test_dso = {}; - int a = 9; - test_dso.map = (unsigned char *)a; + unsigned char a = 'S'; + test_dso.map = &a; test_dso.map_len = 0; unmap_dso_from_cfi_shadow(&test_dso); printf("["__FILE__"][Line: %d][%s]: end\n", __LINE__, __func__); diff --git a/porting/linux/user/ldso/cfi.c b/porting/linux/user/ldso/cfi.c index e081c29dd7b13353a2ac20f2cb32e34a25913899..0dc71b15963a6b91ace482539e9602dc2e126723 100644 --- a/porting/linux/user/ldso/cfi.c +++ b/porting/linux/user/ldso/cfi.c @@ -176,8 +176,9 @@ static uintptr_t get_cfi_check_addr(uint16_t value, void* func_ptr) LD_LOGD("[CFI] [%{public}s] __arm__ defined!\n", __FUNCTION__); cfi_check_func_addr++; #endif - LD_LOGI("[CFI] [%{public}s] the cfi_check_func_addr is %{public}p!\n", __FUNCTION__, cfi_check_func_addr); - + LD_LOGI("[CFI] [%{public}s] cfi_check_func_addr[%{public}p]\n", __FUNCTION__, cfi_check_func_addr); + LD_LOGD("[CFI] [%{public}s] __cfi_check is in dso[%{public}s]\n", __FUNCTION__, + ((struct dso *)addr2dso((size_t)cfi_check_func_addr))->name); return cfi_check_func_addr; } @@ -490,18 +491,24 @@ static int fill_shadow_value_to_shadow(uintptr_t begin, uintptr_t end, uintptr_t void __cfi_slowpath(uint64_t call_site_type_id, void *func_ptr) { - LD_LOGD("[CFI] [%{public}s] start!\n", __FUNCTION__); + LD_LOGD("[CFI] [%{public}s] called from dso[%{public}s] to dso[%{public}s] func_ptr[%{public}p]\n", + __FUNCTION__, + ((struct dso *)addr2dso((size_t)__builtin_return_address(0)))->name, + ((struct dso *)addr2dso((size_t)func_ptr))->name, + func_ptr); cfi_slowpath_common(call_site_type_id, func_ptr, NULL); - return; } void __cfi_slowpath_diag(uint64_t call_site_type_id, void *func_ptr, void *diag_data) { - LD_LOGD("[CFI] [%{public}s] start!\n", __FUNCTION__); + LD_LOGD("[CFI] [%{public}s] called from dso[%{public}s] to dso[%{public}s] func_ptr[%{public}p]\n", + __FUNCTION__, + ((struct dso *)addr2dso((size_t)__builtin_return_address(0)))->name, + ((struct dso *)addr2dso((size_t)func_ptr))->name, + func_ptr); cfi_slowpath_common(call_site_type_id, func_ptr, diag_data); - return; } \ No newline at end of file