postgresql/src/common/link-canary.c
Bruce Momjian 7559d8ebfa Update copyrights for 2020
Backpatch-through: update all files in master, backpatch legal files through 9.4
2020-01-01 12:21:45 -05:00

37 lines
1.2 KiB
C

/*-------------------------------------------------------------------------
* link-canary.c
* Detect whether src/common functions came from frontend or backend.
*
* Copyright (c) 2018-2020, 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
}