Skip to content

Commit 1de4b9a

Browse files
committed
Modernize dlopen interface code for FreeBSD and OpenBSD.
Remove the hard-wired assumption that __mips__ (and only __mips__) lacks dlopen in FreeBSD and OpenBSD. This assumption is outdated at least for OpenBSD, as per report from an anonymous 9.1 tester. We can perfectly well use HAVE_DLOPEN instead to decide which code to use. Some other cosmetic adjustments to make freebsd.c, netbsd.c, and openbsd.c exactly alike.
1 parent 00a9229 commit 1de4b9a

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

src/backend/port/dynloader/freebsd.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ BSD44_derived_dlerror(void)
6161
void *
6262
BSD44_derived_dlopen(const char *file, int num)
6363
{
64-
#if defined(__mips__)
64+
#if !defined(HAVE_DLOPEN)
6565
snprintf(error_message, sizeof(error_message),
6666
"dlopen (%s) not supported", file);
6767
return NULL;
@@ -78,7 +78,7 @@ BSD44_derived_dlopen(const char *file, int num)
7878
void *
7979
BSD44_derived_dlsym(void *handle, const char *name)
8080
{
81-
#if defined(__mips__)
81+
#if !defined(HAVE_DLOPEN)
8282
snprintf(error_message, sizeof(error_message),
8383
"dlsym (%s) failed", name);
8484
return NULL;
@@ -93,7 +93,7 @@ BSD44_derived_dlsym(void *handle, const char *name)
9393
snprintf(buf, sizeof(buf), "_%s", name);
9494
name = buf;
9595
}
96-
#endif
96+
#endif /* !__ELF__ */
9797
if ((vp = dlsym(handle, (char *) name)) == NULL)
9898
snprintf(error_message, sizeof(error_message),
9999
"dlsym (%s) failed", name);
@@ -104,8 +104,7 @@ BSD44_derived_dlsym(void *handle, const char *name)
104104
void
105105
BSD44_derived_dlclose(void *handle)
106106
{
107-
#if defined(__mips__)
108-
#else
107+
#if defined(HAVE_DLOPEN)
109108
dlclose(handle);
110109
#endif
111110
}

src/backend/port/dynloader/netbsd.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,18 @@ BSD44_derived_dlsym(void *handle, const char *name)
8282
snprintf(error_message, sizeof(error_message),
8383
"dlsym (%s) failed", name);
8484
return NULL;
85-
#elif defined(__ELF__)
86-
return dlsym(handle, name);
8785
#else
8886
void *vp;
87+
88+
#ifndef __ELF__
8989
char buf[BUFSIZ];
9090

9191
if (*name != '_')
9292
{
9393
snprintf(buf, sizeof(buf), "_%s", name);
9494
name = buf;
9595
}
96+
#endif /* !__ELF__ */
9697
if ((vp = dlsym(handle, (char *) name)) == NULL)
9798
snprintf(error_message, sizeof(error_message),
9899
"dlsym (%s) failed", name);

src/backend/port/dynloader/openbsd.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ BSD44_derived_dlerror(void)
6161
void *
6262
BSD44_derived_dlopen(const char *file, int num)
6363
{
64-
#if defined(__mips__)
64+
#if !defined(HAVE_DLOPEN)
6565
snprintf(error_message, sizeof(error_message),
6666
"dlopen (%s) not supported", file);
6767
return NULL;
@@ -78,21 +78,22 @@ BSD44_derived_dlopen(const char *file, int num)
7878
void *
7979
BSD44_derived_dlsym(void *handle, const char *name)
8080
{
81-
#if defined(__mips__)
81+
#if !defined(HAVE_DLOPEN)
8282
snprintf(error_message, sizeof(error_message),
8383
"dlsym (%s) failed", name);
8484
return NULL;
85-
#elif defined(__ELF__)
86-
return dlsym(handle, name);
8785
#else
8886
void *vp;
87+
88+
#ifndef __ELF__
8989
char buf[BUFSIZ];
9090

9191
if (*name != '_')
9292
{
9393
snprintf(buf, sizeof(buf), "_%s", name);
9494
name = buf;
9595
}
96+
#endif /* !__ELF__ */
9697
if ((vp = dlsym(handle, (char *) name)) == NULL)
9798
snprintf(error_message, sizeof(error_message),
9899
"dlsym (%s) failed", name);
@@ -103,8 +104,7 @@ BSD44_derived_dlsym(void *handle, const char *name)
103104
void
104105
BSD44_derived_dlclose(void *handle)
105106
{
106-
#if defined(__mips__)
107-
#else
107+
#if defined(HAVE_DLOPEN)
108108
dlclose(handle);
109109
#endif
110110
}

0 commit comments

Comments
 (0)