blob: 5933b8e5cd613c5dd34b87211b86a8245a5e4df9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*-------------------------------------------------------------------------
* link-canary.c
* Detect whether src/common functions came from frontend or backend.
*
* Copyright (c) 2018-2021, 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
}
|