Re: [HACKERS] Should libedit be preferred to libreadline? - Mailing list pgsql-patches

From Andrew Dunstan
Subject Re: [HACKERS] Should libedit be preferred to libreadline?
Date
Msg-id 43826B68.7020803@dunslane.net
Whole thread Raw
In response to Should libedit be preferred to libreadline?  (Seneca Cunningham <scunning@ca.afilias.info>)
Responses Re: [HACKERS] Should libedit be preferred to libreadline?
Re: [HACKERS] Should libedit be preferred to libreadline?
List pgsql-patches
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/abstracts/sg246034.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/products/aixos/linux/download.html
>[6] IBM Redbook "Developing and Porting C and C++ Applications on AIX",
>      page 110
>    http://www.redbooks.ibm.com/abstracts/sg245674.html?Open
>    http://www.redbooks.ibm.com/redbooks/pdfs/sg245674.pdf
>
>

[patch snipped]

pgsql-patches by date:

Previous
From: Seneca Cunningham
Date:
Subject: Should libedit be preferred to libreadline?
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] Should libedit be preferred to libreadline?