Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * link-canary.c 3 : * Detect whether src/common functions came from frontend or backend. 4 : * 5 : * Copyright (c) 2018-2024, 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 26584 : pg_link_canary_is_frontend(void) 30 : { 31 : #ifdef FRONTEND 32 26494 : return true; 33 : #else 34 90 : return false; 35 : #endif 36 : }