Skip to content

Commit 8670b9b

Browse files
committed
AIX: Fix missing libpq symbols by respecting SHLIB_EXPORTS.
We make each AIX shared library export all globals found in .o files that originate in the library. That doesn't include symbols acquired by -lpgcommon_shlib. That is good on average, but it became a problem for libpq when commit e6afa89 moved five official libpq API symbols into src/common. Fix this by implementing the SHLIB_EXPORTS mechanism for AIX, so affected libraries export the same symbols that they export on Linux. This reintroduces symbols pg_encoding_to_char, pg_utf_mblen, pg_char_to_encoding, pg_valid_server_encoding, and pg_valid_server_encoding_id. Back-patch to v13, where the aforementioned commit first appeared. While a minor release is usually the wrong time to add or remove symbol exports in libpq or libecpg, we should expect users to want each documented symbol. Tony Reix Discussion: https://postgr.es/m/PR3PR02MB6396742E2FC3E77D37A920BC86C79@PR3PR02MB6396.eurprd02.prod.outlook.com
1 parent 0c6828f commit 8670b9b

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/Makefile.shlib

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,11 @@ $(shlib): $(OBJS) | $(SHLIB_PREREQS)
329329
rm -f $(stlib)
330330
$(LINK.static) $(stlib) $^
331331
$(RANLIB) $(stlib)
332+
ifeq (,$(SHLIB_EXPORTS))
332333
$(MKLDEXPORT) $(stlib) $(shlib) >$(exports_file)
334+
else
335+
( echo '#! $(shlib)'; $(AWK) '/^[^#]/ {printf "%s\n",$$1}' $(SHLIB_EXPORTS) ) >$(exports_file)
336+
endif
333337
$(COMPILER) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK)
334338
rm -f $(stlib)
335339
$(AR) $(AROPT) $(stlib) $(shlib)

src/port/README

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ applications.
2828
from libpgport are linked first. This avoids having applications
2929
dependent on symbols that are _used_ by libpq, but not intended to be
3030
exported by libpq. libpq's libpgport usage changes over time, so such a
31-
dependency is a problem. Windows, Linux, and macOS use an export list to
32-
control the symbols exported by libpq.
31+
dependency is a problem. Windows, Linux, AIX, and macOS use an export
32+
list to control the symbols exported by libpq.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy