mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Remove obsolete darwin dynloader code
not needed since macOS 10.3 (2003)
This commit is contained in:
@ -1,24 +1,15 @@
|
||||
/*
|
||||
* Dynamic loading support for macOS (Darwin)
|
||||
*
|
||||
* If dlopen() is available (Darwin 10.3 and later), we just use it.
|
||||
* Otherwise we emulate it with the older, now deprecated, NSLinkModule API.
|
||||
*
|
||||
* src/backend/port/dynloader/darwin.c
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
#include <dlfcn.h>
|
||||
#else
|
||||
#include <mach-o/dyld.h>
|
||||
#endif
|
||||
|
||||
#include "dynloader.h"
|
||||
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
|
||||
void *
|
||||
pg_dlopen(const char *filename)
|
||||
{
|
||||
@ -34,7 +25,6 @@ pg_dlclose(void *handle)
|
||||
PGFunction
|
||||
pg_dlsym(void *handle, const char *funcname)
|
||||
{
|
||||
/* Do not prepend an underscore: see dlopen(3) */
|
||||
return dlsym(handle, funcname);
|
||||
}
|
||||
|
||||
@ -43,96 +33,3 @@ pg_dlerror(void)
|
||||
{
|
||||
return dlerror();
|
||||
}
|
||||
#else /* !HAVE_DLOPEN */
|
||||
|
||||
/*
|
||||
* These routines were taken from the Apache source, but were made
|
||||
* available with a PostgreSQL-compatible license. Kudos Wilfredo
|
||||
* Sánchez <wsanchez@apple.com>.
|
||||
*/
|
||||
|
||||
static NSObjectFileImageReturnCode cofiff_result = NSObjectFileImageFailure;
|
||||
|
||||
void *
|
||||
pg_dlopen(const char *filename)
|
||||
{
|
||||
NSObjectFileImage image;
|
||||
|
||||
cofiff_result = NSCreateObjectFileImageFromFile(filename, &image);
|
||||
if (cofiff_result != NSObjectFileImageSuccess)
|
||||
return NULL;
|
||||
return NSLinkModule(image, filename,
|
||||
NSLINKMODULE_OPTION_BINDNOW |
|
||||
NSLINKMODULE_OPTION_RETURN_ON_ERROR);
|
||||
}
|
||||
|
||||
void
|
||||
pg_dlclose(void *handle)
|
||||
{
|
||||
NSUnLinkModule(handle, NSUNLINKMODULE_OPTION_NONE);
|
||||
}
|
||||
|
||||
PGFunction
|
||||
pg_dlsym(void *handle, const char *funcname)
|
||||
{
|
||||
NSSymbol symbol;
|
||||
char *symname = (char *) malloc(strlen(funcname) + 2);
|
||||
|
||||
if (!symname)
|
||||
return NULL;
|
||||
|
||||
sprintf(symname, "_%s", funcname);
|
||||
if (NSIsSymbolNameDefined(symname))
|
||||
{
|
||||
symbol = NSLookupAndBindSymbol(symname);
|
||||
|
||||
free(symname);
|
||||
return (PGFunction) NSAddressOfSymbol(symbol);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(symname);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
pg_dlerror(void)
|
||||
{
|
||||
NSLinkEditErrors c;
|
||||
int errorNumber;
|
||||
const char *fileName;
|
||||
const char *errorString = NULL;
|
||||
|
||||
switch (cofiff_result)
|
||||
{
|
||||
case NSObjectFileImageSuccess:
|
||||
/* must have failed in NSLinkModule */
|
||||
NSLinkEditError(&c, &errorNumber, &fileName, &errorString);
|
||||
if (errorString == NULL || *errorString == '\0')
|
||||
errorString = "unknown link-edit failure";
|
||||
break;
|
||||
case NSObjectFileImageFailure:
|
||||
errorString = "failed to open object file";
|
||||
break;
|
||||
case NSObjectFileImageInappropriateFile:
|
||||
errorString = "inappropriate object file";
|
||||
break;
|
||||
case NSObjectFileImageArch:
|
||||
errorString = "object file is for wrong architecture";
|
||||
break;
|
||||
case NSObjectFileImageFormat:
|
||||
errorString = "object file has wrong format";
|
||||
break;
|
||||
case NSObjectFileImageAccess:
|
||||
errorString = "insufficient permissions for object file";
|
||||
break;
|
||||
default:
|
||||
errorString = "unknown failure to open object file";
|
||||
break;
|
||||
}
|
||||
|
||||
return (char *) errorString;
|
||||
}
|
||||
|
||||
#endif /* HAVE_DLOPEN */
|
||||
|
Reference in New Issue
Block a user