From 9270514cae8887fe57b94ea8ea01c7659e8d2d6c Mon Sep 17 00:00:00 2001
From: Patrick Gauvin <gauvin@hcs.ufl.edu>
Date: Sun, 26 Jun 2016 13:06:07 -0400
Subject: [PATCH 4/4] Update dlerror usage
Handles possible NULL return value
Updates #xxx
---
cpukit/libdl/dlfcn-shell.c | 8 ++++++--
testsuites/libtests/dl01/dl-load.c | 7 +++++--
testsuites/libtests/dl02/dl-load.c | 11 ++++++++---
3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/cpukit/libdl/dlfcn-shell.c b/cpukit/libdl/dlfcn-shell.c
index 3746711..12c737a 100644
a
|
b
|
convert_ascii_to_voidp (const char* arg) |
38 | 38 | int |
39 | 39 | shell_dlopen (int argc, char* argv[]) |
40 | 40 | { |
41 | | int arg; |
| 41 | int arg; |
| 42 | char *err; |
42 | 43 | for (arg = 1; arg < argc; arg++) |
43 | 44 | { |
44 | 45 | void* handle = dlopen (argv[arg], RTLD_NOW | RTLD_GLOBAL); |
… |
… |
shell_dlopen (int argc, char* argv[]) |
53 | 54 | printf ("handle: %p %s\n", handle, message); |
54 | 55 | } |
55 | 56 | else |
56 | | printf ("error: %s\n", dlerror ()); |
| 57 | { |
| 58 | err = dlerror (); |
| 59 | printf ("error: %s\n", err ? err : ""); |
| 60 | } |
57 | 61 | } |
58 | 62 | return 0; |
59 | 63 | } |
diff --git a/testsuites/libtests/dl01/dl-load.c b/testsuites/libtests/dl01/dl-load.c
index e8f84bd..7441808 100644
a
|
b
|
int dl_load_test(void) |
27 | 27 | int call_ret; |
28 | 28 | int unresolved; |
29 | 29 | char* message = "loaded"; |
| 30 | char* err; |
30 | 31 | |
31 | 32 | printf("load: /dl-o1.o\n"); |
32 | 33 | |
33 | 34 | handle = dlopen ("/dl-o1.o", RTLD_NOW | RTLD_GLOBAL); |
34 | 35 | if (!handle) |
35 | 36 | { |
36 | | printf("dlopen failed: %s\n", dlerror()); |
| 37 | err = dlerror (); |
| 38 | printf ("dlopen failed: %s\n", err ? err : ""); |
37 | 39 | return 1; |
38 | 40 | } |
39 | 41 | |
… |
… |
int dl_load_test(void) |
67 | 69 | |
68 | 70 | if (dlclose (handle) < 0) |
69 | 71 | { |
70 | | printf("dlclose failed: %s\n", dlerror()); |
| 72 | err = dlerror (); |
| 73 | printf ("dlclose failed: %s\n", err ? err : ""); |
71 | 74 | return 1; |
72 | 75 | } |
73 | 76 | |
diff --git a/testsuites/libtests/dl02/dl-load.c b/testsuites/libtests/dl02/dl-load.c
index 5bb40dc..5e74e0e 100644
a
|
b
|
static void* dl_load_obj(const char* name) |
21 | 21 | void* handle; |
22 | 22 | int unresolved; |
23 | 23 | char* message = "loaded"; |
| 24 | char* err; |
24 | 25 | |
25 | 26 | printf("load: %s\n", name); |
26 | 27 | |
27 | 28 | handle = dlopen (name, RTLD_NOW | RTLD_GLOBAL); |
28 | 29 | if (!handle) |
29 | 30 | { |
30 | | printf("dlopen failed: %s\n", dlerror()); |
| 31 | err = dlerror (); |
| 32 | printf ("dlopen failed: %s\n", err ? err : ""); |
31 | 33 | return NULL; |
32 | 34 | } |
33 | 35 | |
… |
… |
int dl_load_test(void) |
48 | 50 | call_t call; |
49 | 51 | int call_ret; |
50 | 52 | int ret; |
| 53 | char* err; |
51 | 54 | |
52 | 55 | o1 = dl_load_obj("/dl-o1.o"); |
53 | 56 | if (!o1) |
… |
… |
int dl_load_test(void) |
83 | 86 | |
84 | 87 | if (dlclose (o1) < 0) |
85 | 88 | { |
86 | | printf("dlclose o1 failed: %s\n", dlerror()); |
| 89 | err = dlerror (); |
| 90 | printf ("dlclose o1 failed: %s\n", err ? err : ""); |
87 | 91 | ret = 1; |
88 | 92 | } |
89 | 93 | |
… |
… |
int dl_load_test(void) |
91 | 95 | |
92 | 96 | if (dlclose (o2) < 0) |
93 | 97 | { |
94 | | printf("dlclose o1 failed: %s\n", dlerror()); |
| 98 | err = dlerror (); |
| 99 | printf ("dlclose o2 failed: %s\n", err ? err : ""); |
95 | 100 | ret = 1; |
96 | 101 | } |
97 | 102 | |