1195972f6Sopenharmony_ciFrom 970d9d6fd15c433af20bbbd7418c5e9773d58471 Mon Sep 17 00:00:00 2001
2195972f6Sopenharmony_ciFrom: jiangheng <jiangheng12@huawei.com>
3195972f6Sopenharmony_ciDate: Mon, 7 Mar 2022 21:08:13 +0800
4195972f6Sopenharmony_ciSubject: [PATCH] remove chose_dlsym_handle function, set handle to RTLD_NEXT
5195972f6Sopenharmony_ci
6195972f6Sopenharmony_ci---
7195972f6Sopenharmony_ci src/api/posix_api.c | 33 +--------------------------------
8195972f6Sopenharmony_ci 1 file changed, 1 insertion(+), 32 deletions(-)
9195972f6Sopenharmony_ci
10195972f6Sopenharmony_cidiff --git a/src/api/posix_api.c b/src/api/posix_api.c
11195972f6Sopenharmony_ciindex eff9f46..bce07f5 100644
12195972f6Sopenharmony_ci--- a/src/api/posix_api.c
13195972f6Sopenharmony_ci+++ b/src/api/posix_api.c
14195972f6Sopenharmony_ci@@ -64,33 +64,6 @@ void posix_api_fork(void)
15195972f6Sopenharmony_ci     posix_api->get_socket = chld_get_socket;
16195972f6Sopenharmony_ci }
17195972f6Sopenharmony_ci 
18195972f6Sopenharmony_ci-static int chose_dlsym_handle(void *__restrict* khandle)
19195972f6Sopenharmony_ci-{
20195972f6Sopenharmony_ci-    void *dlhandle;
21195972f6Sopenharmony_ci-    int (*gazelle_epoll_create)(int size);
22195972f6Sopenharmony_ci-    dlhandle = dlopen ("liblstack.so", RTLD_LAZY);
23195972f6Sopenharmony_ci-    if (dlhandle == NULL) {
24195972f6Sopenharmony_ci-        return ERR_IF;
25195972f6Sopenharmony_ci-    }
26195972f6Sopenharmony_ci-
27195972f6Sopenharmony_ci-    gazelle_epoll_create = dlsym(dlhandle, "epoll_create");
28195972f6Sopenharmony_ci-    if (gazelle_epoll_create == NULL) {
29195972f6Sopenharmony_ci-        return ERR_MEM;
30195972f6Sopenharmony_ci-    }
31195972f6Sopenharmony_ci-
32195972f6Sopenharmony_ci-    dlclose(dlhandle); 
33195972f6Sopenharmony_ci-
34195972f6Sopenharmony_ci-    *khandle = RTLD_NEXT;
35195972f6Sopenharmony_ci-    if (dlsym(*khandle, "epoll_create") == gazelle_epoll_create) {
36195972f6Sopenharmony_ci-        RTE_LOG(ERR, EAL, "posix api use RTLD_DEFAULT\n");
37195972f6Sopenharmony_ci-        *khandle = RTLD_DEFAULT;
38195972f6Sopenharmony_ci-    } else {
39195972f6Sopenharmony_ci-        RTE_LOG(ERR, EAL, "posix api use RTLD_NEXT\n");
40195972f6Sopenharmony_ci-    }
41195972f6Sopenharmony_ci-
42195972f6Sopenharmony_ci-    return ERR_OK;
43195972f6Sopenharmony_ci-}
44195972f6Sopenharmony_ci-
45195972f6Sopenharmony_ci int posix_api_init(void)
46195972f6Sopenharmony_ci {
47195972f6Sopenharmony_ci /* the symbol we use here won't be NULL, so we don't need dlerror()
48195972f6Sopenharmony_ci@@ -102,11 +75,7 @@ int posix_api_init(void)
49195972f6Sopenharmony_ci 
50195972f6Sopenharmony_ci     posix_api = &posix_api_val;
51195972f6Sopenharmony_ci 
52195972f6Sopenharmony_ci-    void *__restrict handle;
53195972f6Sopenharmony_ci-    int ret = chose_dlsym_handle(&handle);
54195972f6Sopenharmony_ci-    if (ret != ERR_OK) {
55195972f6Sopenharmony_ci-        return ret;
56195972f6Sopenharmony_ci-    }
57195972f6Sopenharmony_ci+    void *__restrict handle = RTLD_NEXT;
58195972f6Sopenharmony_ci 
59195972f6Sopenharmony_ci     /* glibc standard api */
60195972f6Sopenharmony_ci     CHECK_DLSYM_RET_RETURN(posix_api->socket_fn = dlsym(handle, "socket"));
61195972f6Sopenharmony_ci-- 
62195972f6Sopenharmony_ci1.8.3.1
63195972f6Sopenharmony_ci
64