mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-06 20:06:56 +02:00
97c39498e5
Backpatch-through: certain files through 9.4
37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/*-------------------------------------------------------------------------
|
|
* link-canary.c
|
|
* Detect whether src/common functions came from frontend or backend.
|
|
*
|
|
* Copyright (c) 2018-2019, PostgreSQL Global Development Group
|
|
*
|
|
* IDENTIFICATION
|
|
* src/common/link-canary.c
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#include "c.h"
|
|
|
|
#include "common/link-canary.h"
|
|
|
|
/*
|
|
* This function just reports whether this file was compiled for frontend
|
|
* or backend environment. We need this because in some systems, mainly
|
|
* ELF-based platforms, it is possible for a shlib (such as libpq) loaded
|
|
* into the backend to call a backend function named XYZ in preference to
|
|
* the shlib's own function XYZ. That's bad if the two functions don't
|
|
* act identically. This exact situation comes up for many functions in
|
|
* src/common and src/port, where the same function names exist in both
|
|
* libpq and the backend but they don't act quite identically. To verify
|
|
* that appropriate measures have been taken to prevent incorrect symbol
|
|
* resolution, libpq should test that this function returns true.
|
|
*/
|
|
bool
|
|
pg_link_canary_is_frontend(void)
|
|
{
|
|
#ifdef FRONTEND
|
|
return true;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|