mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	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 e6afa8918c461c1dd80c5063a950518fa4e950cd 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
This commit is contained in:
		
							parent
							
								
									0c6828fa98
								
							
						
					
					
						commit
						8670b9b999
					
				@ -329,7 +329,11 @@ $(shlib): $(OBJS) | $(SHLIB_PREREQS)
 | 
			
		||||
	rm -f $(stlib)
 | 
			
		||||
	$(LINK.static) $(stlib) $^
 | 
			
		||||
	$(RANLIB) $(stlib)
 | 
			
		||||
ifeq (,$(SHLIB_EXPORTS))
 | 
			
		||||
	$(MKLDEXPORT) $(stlib) $(shlib) >$(exports_file)
 | 
			
		||||
else
 | 
			
		||||
	( echo '#! $(shlib)'; $(AWK) '/^[^#]/ {printf "%s\n",$$1}' $(SHLIB_EXPORTS) ) >$(exports_file)
 | 
			
		||||
endif
 | 
			
		||||
	$(COMPILER) -o $(shlib) $(stlib) -Wl,-bE:$(exports_file) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK)
 | 
			
		||||
	rm -f $(stlib)
 | 
			
		||||
	$(AR) $(AROPT) $(stlib) $(shlib)
 | 
			
		||||
 | 
			
		||||
@ -28,5 +28,5 @@ applications.
 | 
			
		||||
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.
 | 
			
		||||
dependency is a problem.  Windows, Linux, AIX, and macOS use an export
 | 
			
		||||
list to control the symbols exported by libpq.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user