PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
hpux.c
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * dynloader.c
4  * dynamic loader for HP-UX using the shared library mechanism
5  *
6  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  *
10  * IDENTIFICATION
11  * src/backend/port/dynloader/hpux.c
12  *
13  * NOTES
14  * all functions are defined here -- it's impossible to trace the
15  * shl_* routines from the bundled HP-UX debugger.
16  *
17  *-------------------------------------------------------------------------
18  */
19 #include "postgres.h"
20 
21 /* System includes */
22 #include <a.out.h>
23 #include <dl.h>
24 
25 #include "dynloader.h"
26 #include "utils/dynamic_loader.h"
27 
28 void *
30 {
31  /*
32  * Use BIND_IMMEDIATE so that undefined symbols cause a failure return
33  * from shl_load(), rather than an abort() later on when we attempt to
34  * call the library!
35  */
36  shl_t handle = shl_load(filename,
37  BIND_IMMEDIATE | BIND_VERBOSE | DYNAMIC_PATH,
38  0L);
39 
40  return (void *) handle;
41 }
42 
44 pg_dlsym(void *handle, char *funcname)
45 {
46  PGFunction f;
47 
48  if (shl_findsym((shl_t *) & handle, funcname, TYPE_PROCEDURE, &f) == -1)
49  f = (PGFunction) NULL;
50  return f;
51 }
52 
53 void
54 pg_dlclose(void *handle)
55 {
56  shl_unload((shl_t) handle);
57 }
58 
59 char *
61 {
62  static char errmsg[] = "shl_load failed";
63 
64  if (errno)
65  return strerror(errno);
66 
67  return errmsg;
68 }
void * pg_dlopen(char *filename)
Definition: hpux.c:29
Datum(* PGFunction)(FunctionCallInfo fcinfo)
Definition: fmgr.h:40
void pg_dlclose(void *handle)
Definition: hpux.c:54
PGFunction pg_dlsym(void *handle, char *funcname)
Definition: hpux.c:44
char * pg_dlerror(void)
Definition: hpux.c:60
#define NULL
Definition: c.h:229
static char * filename
Definition: pg_dumpall.c:90
int errmsg(const char *fmt,...)
Definition: elog.c:797
const char * strerror(int errnum)
Definition: strerror.c:19