Unix Technical Forum

Re: [HACKERS] Should libedit be preferred to libreadline?

This is a discussion on Re: [HACKERS] Should libedit be preferred to libreadline? within the Pgsql Patches forums, part of the PostgreSQL category; --> Nice analysis, but we can't hack configure like that. It has to be able to be fully generated from ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > Pgsql Patches

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-18-2008, 01:04 AM
Andrew Dunstan
 
Posts: n/a
Default Re: [HACKERS] Should libedit be preferred to libreadline?


Nice analysis, but we can't hack configure like that. It has to be able
to be fully generated from its sources. I think the other source file
you would need to look at is config/programs.m4. (Not sure about quoting
$ac_popdir - why only that one?)

Also, I suspect we'd want to enable the libedit preference with a switch
rather than just force it, if we want to go this way.

cheers

andrew

Seneca Cunningham wrote:

>It would certainly seem so on AIX.
>
>In tracking down why postgres 8.x would segfault on AIX 5.3, it became
>apparent to me that libreadline.a is a problematic library to link
>against and that libedit.a is preferable (and for reasons other than
>that readline is GPL while postgres is BSD-licensed).
>
>With AIX 5, the easiest way to get a shared object is to pass "-bexpall"
>to the linker. This results in all symbols being exported. The problem
>with this is that the linker will export all of libreadline's and
>libhistory's symbols. In the case of libreadline.so.4 (and .5) on AIX 5
>this includes symbols like strncpy and memmove, but on .4, not memcpy.
>This is likely because libc.a does not export them.
>
>What results from this is that when postgres is linked against readline
>on AIX, it gets these memory functions through readline instead of its
>own code. When readline 4.3 is used (what IBM provides in their "AIX
>Toolbox for Linux"), postgres is known to crash. These segfaults (if
>postgres was compiled with gcc) have occurred on AIX 5.3ML3, AIX 5.3ML1,
>and AIX 5.2ML7. With readline 5.0, postgres merely gets these functions
>through the shared library memory segments instead of the user memory
>segments[6].
>
>While it is possible to build libreadline in a manner that doesn't
>export strncpy, neither of the prebuilt readlines for AIX 5 that I
>checked were both shared and did not export strncpy. IBM's readline[5]
>exports strncpy, UCLA's readline[4] is static. Building a shared
>readline that doesn't export strncpy requires creating export files for
>libreadline and libhistory that only list the symbols that they are
>supposed to export and editing the shared library Makefile to add the
>exports flags to the appropriate linker calls.
>
>Whatever strategy we might take, using readline on AIX requires
>considerable trickery and hacking around with the build environments.
>Simply put, it's ghastly.
>
>On the other hand, the port of NetBSD's editline that I tried[1] works
>without build-hackery to the library and has reasonable exports. The
>only changes to postgres that I needed to make were confined to telling
>the configure script to check for libedit before libreadline and adding
>a test for histedit.h. The attached patch contains my modifications.
>
>It is also possible to use a wrapper like rlwrap[2] instead of linking
>postgres against libreadline or libedit.
>
>[1] port of NetBSD's editline
> http://www.thrysoee.dk/editline/
>[2] rlwrap
> http://utopia.knoware.nl/~hlub/uck/software/
>[3] IBM Redbook "AIX 5L Porting Guide", section 9.2
> http://www.redbooks.ibm.com/abstract...6034.html?Open
> http://www.redbooks.ibm.com/redbooks/pdfs/sg246034.pdf
>[4] UCLA's readline package
> http://aixpdslib.seas.ucla.edu/packages/readline.html
>[5] IBM's readline package
> http://www-03.ibm.com/servers/aix/pr.../download.html
>[6] IBM Redbook "Developing and Porting C and C++ Applications on AIX",
> page 110
> http://www.redbooks.ibm.com/abstract...5674.html?Open
> http://www.redbooks.ibm.com/redbooks/pdfs/sg245674.pdf
>
>


[patch snipped]

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 07:24 PM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.UnixAdminTalk.com