From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13055 invoked from network); 15 Mar 2004 11:46:30 -0000 Received: from sunsite.dk (130.225.247.90) by ns1.primenet.com.au with SMTP; 15 Mar 2004 11:46:30 -0000 Received: (qmail 5421 invoked by alias); 15 Mar 2004 11:46:04 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 7183 Received: (qmail 9250 invoked from network); 15 Mar 2004 11:31:02 -0000 Received: from localhost (HELO sunsite.dk) (127.0.0.1) by localhost with SMTP; 15 Mar 2004 11:31:02 -0000 X-MessageWall-Score: 0 (sunsite.dk) Received: from [62.189.77.219] by sunsite.dk (MessageWall 1.0.8) with SMTP; 15 Mar 2004 11:31:0 -0000 Received: by sonic.uk.dev.micromuse.co.uk (Postfix, from userid 1444) id 0F96C1D010F; Mon, 15 Mar 2004 11:30:58 +0000 (GMT) Subject: Re: 4.2.0-pre-4 From: Ibraheem Umaru-Mohammed To: Peter Stephenson Cc: Zsh users list In-Reply-To: <18540.1079117926@csr.com> References: <18540.1079117926@csr.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Message-Id: <1079350257.7098.6.camel@sonic> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Mon, 15 Mar 2004 11:30:57 +0000 On Fri, 2004-03-12 at 18:58, Peter Stephenson wrote: > Peter Stephenson wrote: > > It ought to be possible to use `nm' on some other system to verify the > > symbols that need exporting, and hence keep the list up to date, but I > > don't think I'm going to have time for that. > > I lied. Should have waited to release 4.2.0-pre-4. This patch (the > first two hunks) will probably be needed on AIX. Sent to zsh-users in > case it affects anybody downloading that. > > (I'm assuming that stdout@@GLIBC_2.0 don't need exporting...) > > Index: Src/Zle/zle_misc.c > =================================================================== > RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_misc.c,v > retrieving revision 1.10 > diff -u -r1.10 zle_misc.c > --- Src/Zle/zle_misc.c 8 Mar 2004 11:44:14 -0000 1.10 > +++ Src/Zle/zle_misc.c 12 Mar 2004 18:40:07 -0000 > @@ -73,7 +73,7 @@ > } > > /**/ > -int > +mod_export int > selfinsertunmeta(char **args) > { > lastchar &= 0x7f; > Index: Src/Zle/zle_utils.c > =================================================================== > RCS file: /cvsroot/zsh/zsh/Src/Zle/zle_utils.c,v > retrieving revision 1.8 > diff -u -r1.8 zle_utils.c > --- Src/Zle/zle_utils.c 29 Oct 2003 19:17:48 -0000 1.8 > +++ Src/Zle/zle_utils.c 12 Mar 2004 18:40:07 -0000 > @@ -388,7 +388,7 @@ > * The message must be metafied. */ > > /**/ > -void mod_export > +mod_export void > showmsg(char const *msg) > { > char const *p; > Index: Util/check_exports > =================================================================== > RCS file: Util/check_exports > diff -N Util/check_exports > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ Util/check_exports 12 Mar 2004 18:40:07 -0000 > @@ -0,0 +1,64 @@ > +#!/usr/local/bin/perl -w > + > +# Attempt to scan executable, libraries, and .export files after > +# a zsh build to see if all necessary symbols appear in the .export file > +# (and hence with `mod_export' in the source file). This keeps AIX happy. > +# Probably severely system dependent, but known to run on Fedora Core 1, > +# at least. Not needed on AIX itself... you can tell if doesn't link. > + > +if (! -f "zsh") { > + die "Can't file zsh, are we in the Src directory of the build?\n"; > +} > + > +my (%defined, %undefined, %exported); > + > +foreach my $file ("zsh", glob("*.so */*.so")) { > + next unless -f $file; > + > + my $exports = $file; > + $exports =~ s/\.so//; > + $exports .= ".export"; > + if (-f $exports) { > + open EXPORT, $exports or die "Can't read $exports: $!\n"; > + my $href = $exported{$file} = { }; > + while () { > + next if /^#/; > + chomp; > + $href->{$_} = 1; > + } > + close EXPORT; > + } else { > + warn "Hmmm... no .exports file for $file\n"; > + } > + > + open PIPE, "nm $file |" or die "Can't popen nm"; > + while () { > + s/^[0-9a-f]*\s+//; > + my ($type, $sym) = split; > + # ignore local symbols (lower case) > + if ($type =~ /^[TBAD]/) { > + if (!defined $defined{$sym}) { > + $defined{$sym} = $file; > + } > + } elsif ($type eq 'U') { > + # could skip undefined from zsh and zsh.so, but what the heck > + my $ref = \$undefined{$sym}; > + if (defined $$ref) { > + push @$$ref, $file; > + } else { > + $$ref = [ $file ]; > + } > + } > + } > + close PIPE or die "nm failed"; > +} > + > +foreach $sym (keys %undefined) { > + my $deffile = $defined{$sym}; > + if (defined $deffile) { > + if (!$exported{$deffile}{$sym}) { > + printf "%-20s: %-20s: %s\n", $sym, $defined{$sym}, > + join(" ", @{$undefined{$sym}}); > + } > + } > +} Peter, It has all finally compiled on AIX 5.2, and all seems to work correctly. Thanks for taking the time to look at this - much appreciated. Cheers, --ibraheem.