Ticket #2747: 0004-Update-dlerror-usage.patch

File 0004-Update-dlerror-usage.patch, 3.1 KB (added by Patrick Gauvin, on 06/26/16 at 17:36:41)
  • cpukit/libdl/dlfcn-shell.c

    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) 
    3838int
    3939shell_dlopen (int argc, char* argv[])
    4040{
    41   int arg;
     41  int   arg;
     42  char *err;
    4243  for (arg = 1; arg < argc; arg++)
    4344  {
    4445    void* handle = dlopen (argv[arg], RTLD_NOW | RTLD_GLOBAL);
    shell_dlopen (int argc, char* argv[]) 
    5354      printf ("handle: %p %s\n", handle, message);
    5455    }
    5556    else
    56       printf ("error: %s\n", dlerror ());
     57    {
     58      err = dlerror ();
     59      printf ("error: %s\n", err ? err : "");
     60    }
    5761  }
    5862  return 0;
    5963}
  • testsuites/libtests/dl01/dl-load.c

    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) 
    2727  int    call_ret;
    2828  int    unresolved;
    2929  char*  message = "loaded";
     30  char*  err;
    3031
    3132  printf("load: /dl-o1.o\n");
    3233
    3334  handle = dlopen ("/dl-o1.o", RTLD_NOW | RTLD_GLOBAL);
    3435  if (!handle)
    3536  {
    36     printf("dlopen failed: %s\n", dlerror());
     37    err = dlerror ();
     38    printf ("dlopen failed: %s\n", err ? err : "");
    3739    return 1;
    3840  }
    3941
    int dl_load_test(void) 
    6769
    6870  if (dlclose (handle) < 0)
    6971  {
    70     printf("dlclose failed: %s\n", dlerror());
     72    err = dlerror ();
     73    printf ("dlclose failed: %s\n", err ? err : "");
    7174    return 1;
    7275  }
    7376
  • testsuites/libtests/dl02/dl-load.c

    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) 
    2121  void* handle;
    2222  int   unresolved;
    2323  char* message = "loaded";
     24  char* err;
    2425
    2526  printf("load: %s\n", name);
    2627
    2728  handle = dlopen (name, RTLD_NOW | RTLD_GLOBAL);
    2829  if (!handle)
    2930  {
    30     printf("dlopen failed: %s\n", dlerror());
     31    err = dlerror ();
     32    printf ("dlopen failed: %s\n", err ? err : "");
    3133    return NULL;
    3234  }
    3335
    int dl_load_test(void) 
    4850  call_t call;
    4951  int    call_ret;
    5052  int    ret;
     53  char*  err;
    5154
    5255  o1 = dl_load_obj("/dl-o1.o");
    5356  if (!o1)
    int dl_load_test(void) 
    8386
    8487  if (dlclose (o1) < 0)
    8588  {
    86     printf("dlclose o1 failed: %s\n", dlerror());
     89    err = dlerror ();
     90    printf ("dlclose o1 failed: %s\n", err ? err : "");
    8791    ret = 1;
    8892  }
    8993
    int dl_load_test(void) 
    9195
    9296  if (dlclose (o2) < 0)
    9397  {
    94     printf("dlclose o1 failed: %s\n", dlerror());
     98    err = dlerror ();
     99    printf ("dlclose o2 failed: %s\n", err ? err : "");
    95100    ret = 1;
    96101  }
    97102