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.
Alvaro Herrera 3974c4a724 Remove useless "return;" lines 1 周之前
..
.gitignore Build src/port files as a library with -fPIC, and use that in libpq. 1 年之前
Makefile Split all OBJS style lines in makefiles into one-line-per-entry style. 1 月之前
README Always use our own versions of *printf(). 1 年之前
chklocale.c Remove some code for old unsupported versions of MSVC 2 月之前
dirent.c Fix error handling of readdir() port implementation on first file lookup 9 月之前
dirmod.c Update copyright for 2019 11 月之前
dlopen.c Initial pgindent run for v12. 6 月之前
erand48.c Update copyright for 2019 11 月之前
explicit_bzero.c Use explicit_bzero 3 月之前
fls.c Update copyright for 2019 11 月之前
fseeko.c Update copyright for 2019 11 月之前
getaddrinfo.c Avoid conflicts with library versions of inet_net_ntop() and friends. 3 月之前
getopt.c Use our own getopt() on OpenBSD. 10 月之前
getopt_long.c Phase 3 of pgindent updates. 2 年之前
getpeereid.c Update copyright for 2019 11 月之前
getrusage.c Update copyright for 2019 11 月之前
gettimeofday.c Phase 3 of pgindent updates. 2 年之前
inet_aton.c Correct include file name in inet_aton fallback. 2 年之前
inet_net_ntop.c Avoid conflicts with library versions of inet_net_ntop() and friends. 3 月之前
isinf.c ANSI-ify a few straggler K&R-style function definitions. 6 月之前
kill.c Update copyright for 2019 11 月之前
mkdtemp.c Update copyright for 2019 11 月之前
noblock.c Update copyright for 2019 11 月之前
open.c Assert that pgwin32_signal_initialize() has been called early enough. 8 月之前
path.c Phase 2 pgindent run for v12. 6 月之前
pg_bitutils.c Fix typos and inconsistencies in code comments 5 月之前
pg_crc32c_armv8.c Make the order of the header file includes consistent in non-backend modules. 1 月之前
pg_crc32c_armv8_choose.c Update copyright for 2019 11 月之前
pg_crc32c_sb8.c Update copyright for 2019 11 月之前
pg_crc32c_sse42.c Make the order of the header file includes consistent in non-backend modules. 1 月之前
pg_crc32c_sse42_choose.c Update copyright for 2019 11 月之前
pg_strong_random.c Fix compiler warning 3 月之前
pgcheckdir.c Update copyright for 2019 11 月之前
pgmkdirp.c Fix various typos and grammar errors in comments. 4 年之前
pgsleep.c Update copyright for 2019 11 月之前
pgstrcasecmp.c Update copyright for 2019 11 月之前
pgstrsignal.c Improve what pg_strsignal prints if we haven't got strsignal(3). 3 月之前
pqsignal.c In the postmaster, rely on the signal infrastructure to block signals. 1 月之前
pread.c Handle ReadFile() EOF correctly on Windows. 2 週之前
pthread-win32.h Remove cvs keywords from all files. 9 年之前
pwrite.c Fix more typos and inconsistencies in the tree 5 月之前
qsort.c Phase 2 pgindent run for v12. 6 月之前
qsort_arg.c Phase 2 pgindent run for v12. 6 月之前
quotes.c Update copyright for 2019 11 月之前
random.c Update copyright for 2019 11 月之前
rint.c Rethink how to get float.h in old Windows API for isnan/isinf 1 年之前
snprintf.c Remove a couple of unnecessary if-tests. 2 週之前
sprompt.c Fix failures to ignore \r when reading Windows-style newlines. 4 月之前
srandom.c Update copyright for 2019 11 月之前
strerror.c Update copyright for 2019 11 月之前
strlcat.c pgindent run for 9.4 5 年之前
strlcpy.c Update copyright for 2019 11 月之前
strnlen.c Update copyright for 2019 11 月之前
strtof.c Initial pgindent run for v12. 6 月之前
system.c Update copyright for 2019 11 月之前
tar.c Make the order of the header file includes consistent in non-backend modules. 1 月之前
thread.c Fix inconsistencies and typos in the tree 4 月之前
unsetenv.c Update copyright for 2019 11 月之前
win32.ico Revert binary change in copyright year adjustment. 8 年之前
win32env.c Update copyright for 2019 11 月之前
win32error.c Remove useless "return;" lines 1 周之前
win32security.c Update copyright for 2019 11 月之前
win32setlocale.c Deal with yet another issue related to "Norwegian (Bokmål)" locale. 1 月之前
win32ver.rc Stamp HEAD as 13devel. 5 月之前

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.