You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
postgres/src/port
Thomas Munro 2189f49c42 Handle ReadFile() EOF correctly on Windows. 7 years ago
..
.gitignore Build src/port files as a library with -fPIC, and use that in libpq. 8 years ago
Makefile Make use of compiler builtins and/or assembly for CLZ, CTZ, POPCNT. 7 years ago
README Always use our own versions of *printf(). 8 years ago
chklocale.c Update copyright for 2019 8 years ago
crypt.c ANSI-ify a few straggler K&R-style function definitions. 7 years ago
dirent.c Fix error handling of readdir() port implementation on first file lookup 7 years ago
dirmod.c Update copyright for 2019 8 years ago
dlopen.c Initial pgindent run for v12. 7 years ago
erand48.c Update copyright for 2019 8 years ago
fls.c Update copyright for 2019 8 years ago
fseeko.c Update copyright for 2019 8 years ago
getaddrinfo.c Update copyright for 2019 8 years ago
getopt.c Use our own getopt() on OpenBSD. 7 years ago
getopt_long.c Phase 3 of pgindent updates. 9 years ago
getpeereid.c Update copyright for 2019 8 years ago
getrusage.c Update copyright for 2019 8 years ago
gettimeofday.c Phase 3 of pgindent updates. 9 years ago
inet_aton.c Correct include file name in inet_aton fallback. 9 years ago
inet_net_ntop.c Phase 2 pgindent run for v12. 7 years ago
isinf.c ANSI-ify a few straggler K&R-style function definitions. 7 years ago
kill.c Update copyright for 2019 8 years ago
mkdtemp.c Update copyright for 2019 8 years ago
noblock.c Update copyright for 2019 8 years ago
open.c Assert that pgwin32_signal_initialize() has been called early enough. 7 years ago
path.c Phase 2 pgindent run for v12. 7 years ago
pg_bitutils.c Fix typos and inconsistencies in code comments 7 years ago
pg_crc32c_armv8.c Update copyright for 2019 8 years ago
pg_crc32c_armv8_choose.c Update copyright for 2019 8 years ago
pg_crc32c_sb8.c Update copyright for 2019 8 years ago
pg_crc32c_sse42.c Update copyright for 2019 8 years ago
pg_crc32c_sse42_choose.c Update copyright for 2019 8 years ago
pg_strong_random.c Update copyright for 2019 8 years ago
pgcheckdir.c Update copyright for 2019 8 years ago
pgmkdirp.c
pgsleep.c Update copyright for 2019 8 years ago
pgstrcasecmp.c Update copyright for 2019 8 years ago
pgstrsignal.c Improve what pg_strsignal prints if we haven't got strsignal(3). 7 years ago
pqsignal.c Update copyright for 2019 8 years ago
pread.c Handle ReadFile() EOF correctly on Windows. 7 years ago
pthread-win32.h
pwrite.c Fix more typos and inconsistencies in the tree 7 years ago
qsort.c Phase 2 pgindent run for v12. 7 years ago
qsort_arg.c Phase 2 pgindent run for v12. 7 years ago
quotes.c Update copyright for 2019 8 years ago
random.c Update copyright for 2019 8 years ago
rint.c Rethink how to get float.h in old Windows API for isnan/isinf 8 years ago
snprintf.c Phase 2 pgindent run for v12. 7 years ago
sprompt.c Update copyright for 2019 8 years ago
srandom.c Update copyright for 2019 8 years ago
strerror.c Update copyright for 2019 8 years ago
strlcat.c
strlcpy.c Update copyright for 2019 8 years ago
strnlen.c Update copyright for 2019 8 years ago
strtof.c Initial pgindent run for v12. 7 years ago
system.c Update copyright for 2019 8 years ago
tar.c Allow pg_basebackup to stream transaction log in tar mode 10 years ago
thread.c Update copyright for 2019 8 years ago
unsetenv.c Update copyright for 2019 8 years ago
win32.ico
win32env.c Update copyright for 2019 8 years ago
win32error.c Update copyright for 2019 8 years ago
win32security.c Update copyright for 2019 8 years ago
win32setlocale.c Deal with yet another issue related to "Norwegian (Bokmål)" locale. 7 years ago
win32ver.rc Stamp 12.1. 7 years ago

README

src/port/README

libpgport
=========

libpgport must have special behavior. It supplies functions to both
libraries and applications. However, there are two complexities:

1) Libraries need to use object files that are compiled with exactly
the same flags as the library. libpgport might not use the same flags,
so it is necessary to recompile the object files for individual
libraries. This is done by removing -lpgport from the link line:

# Need to recompile any libpgport object files
LIBS := $(filter-out -lpgport, $(LIBS))

and adding infrastructure to recompile the object files:

OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
connect.o misc.o path.o exec.o \
$(filter strlcat.o, $(LIBOBJS))

The problem is that there is no testing of which object files need to be
added, but missing functions usually show up when linking user
applications.

2) For applications, we use -lpgport before -lpq, so the static files
from libpgport are linked first. This avoids having applications
dependent on symbols that are _used_ by libpq, but not intended to be
exported by libpq. libpq's libpgport usage changes over time, so such a
dependency is a problem. Windows, Linux, and macOS use an export list to
control the symbols exported by libpq.