Coverage Report

Created: 2025-07-03 06:49

/src/postgres/src/common/link-canary.c
Line
Count
Source (jump to first uncovered line)
1
/*-------------------------------------------------------------------------
2
 * link-canary.c
3
 *    Detect whether src/common functions came from frontend or backend.
4
 *
5
 * Copyright (c) 2018-2025, PostgreSQL Global Development Group
6
 *
7
 * IDENTIFICATION
8
 *    src/common/link-canary.c
9
 *
10
 *-------------------------------------------------------------------------
11
 */
12
#include "c.h"
13
14
#include "common/link-canary.h"
15
16
/*
17
 * This function just reports whether this file was compiled for frontend
18
 * or backend environment.  We need this because in some systems, mainly
19
 * ELF-based platforms, it is possible for a shlib (such as libpq) loaded
20
 * into the backend to call a backend function named XYZ in preference to
21
 * the shlib's own function XYZ.  That's bad if the two functions don't
22
 * act identically.  This exact situation comes up for many functions in
23
 * src/common and src/port, where the same function names exist in both
24
 * libpq and the backend but they don't act quite identically.  To verify
25
 * that appropriate measures have been taken to prevent incorrect symbol
26
 * resolution, libpq should test that this function returns true.
27
 */
28
bool
29
pg_link_canary_is_frontend(void)
30
0
{
31
#ifdef FRONTEND
32
  return true;
33
#else
34
0
  return false;
35
0
#endif
36
0
}