* Re: architecture independent wordcode files (.zwc) [not found] ` <1010513004337.ZM7197@candle.brasslantern.com> @ 2001-05-13 5:00 ` Paul Lew 2001-05-13 17:10 ` Bart Schaefer 0 siblings, 1 reply; 6+ messages in thread From: Paul Lew @ 2001-05-13 5:00 UTC (permalink / raw) To: zsh-workers; +Cc: Bart Schaefer >>>>> "Bart" == Bart Schaefer <schaefer@candle.brasslantern.com> writes: Bart> On May 12, 1:09pm, Paul Lew wrote: Bart> } Subject: architecture independent wordcode files (.zwc) Bart> } Bart> } Right now we have .zshenv compiled into .zshenv.zwc Bart> } and .zshrc compiled into .zshrc.zwc on the solaris Bart> } machine. However, this does not work for the Linux. I Bart> } got zsh cored when reading the .zwc file for the wrong Bart> } architecture. Bart> } Bart> } The emacs .elc files works on different endian Bart> } machines. Any plan to do the same with .zwc files? Bart> It's supposed to work -- the zcompile doc says: Bart> The created file always contains two versions of the Bart> compiled format, one for big-endian machines and one for Bart> small-endian machines. The upshot of this is that the Bart> compiled file is machine indepen- dent and if it is read or Bart> mapped, only one half of the file is actually used (and Bart> mapped). Bart> If possible, please send a stack trace from your core dump Bart> to zsh-workers. Thanks. muggle paullew Src>> uname -sr Linux 2.2.14-5.0mvfs muggle paullew Src>> file ~/zsh-i686-gdb.core /users/paullew/zsh-i686-gdb.core: ELF 32-bit LSB core file of 'zsh' (signal 11), Intel 80386, version 1 muggle paullew Src>> gdb =zsh ~/zsh-i686-gdb.core GNU gdb 19991004 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux"... Core was generated by `zsh'. Program terminated with signal 11, Segmentation fault. Reading symbols from /lib/libdl.so.2...done. Reading symbols from /lib/libnsl.so.1...done. Reading symbols from /lib/libtermcap.so.2...done. Reading symbols from /lib/libm.so.6...done. Reading symbols from /lib/libc.so.6...done. Reading symbols from /lib/ld-linux.so.2...done. Reading symbols from /lib/libnss_files.so.2...done. Reading symbols from /lib/libnss_nis.so.2...done. #0 0x400b5c27 in strlen (str=0x4001aff8 <Address 0x4001aff8 out of #bounds>) at ../sysdeps/i386/strlen.c:27 27 ../sysdeps/i386/strlen.c: No such file or directory. (gdb) where #0 0x400b5c27 in strlen (str=0x4001aff8 <Address 0x4001aff8 out of #bounds>) at ../sysdeps/i386/strlen.c:27 #1 0x80a8a59 in dupstring (s=0x4001aff8 <Address 0x4001aff8 out of #bounds>) at string.c:39 #2 0x809d869 in ecgetstr (s=0xbffff90c, dup=2, tok=0xbffff880) at parse.c:2110 #3 0x8063ded in addvars (state=0xbffff90c, pc=0x4001a374, export=0) at exec.c:1505 #4 0x8061da0 in execsimple (state=0xbffff90c) at exec.c:753 #5 0x8061f06 in execlist (state=0xbffff90c, dont_change_job=1, exiting=0) at exec.c:806 #6 0x8061d07 in execode (p=0x80f0288, dont_change_job=1, exiting=0) at exec.c:729 #7 0x8079f84 in source (s=0xbffff974 "/users/paullew/.zshenv") at init.c:996 #8 0x807a230 in sourcehome (s=0x80bc7e0 ".zshenv") at init.c:1044 #9 0x8079c49 in run_init_scripts () at init.c:893 #10 0x807aa26 in zsh_main (argc=1, argv=0xbffffb34) at init.c:1204 #11 0x80517b0 in main (argc=1, argv=0xbffffb34) at ./main.c:37 (gdb) quit Please let me know if more info is needed. Thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: architecture independent wordcode files (.zwc) 2001-05-13 5:00 ` architecture independent wordcode files (.zwc) Paul Lew @ 2001-05-13 17:10 ` Bart Schaefer 2001-05-13 17:48 ` Andrej Borsenkow 2001-05-14 7:15 ` Sven Wischnowsky 0 siblings, 2 replies; 6+ messages in thread From: Bart Schaefer @ 2001-05-13 17:10 UTC (permalink / raw) To: zsh-workers A thought that occurred to me, though I don't know if this is actually the problem Paul is having: /********************************************/ /* Defintions for word code */ /********************************************/ typedef unsigned int wordcode; typedef wordcode *Wordcode; There are architectures where `unsigned int' is 16 bits or 64 bits. We should be determining a 32-bit type via configure and using it here. -- Bart Schaefer Brass Lantern Enterprises http://www.well.com/user/barts http://www.brasslantern.com Zsh: http://www.zsh.org | PHPerl Project: http://phperl.sourceforge.net ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: architecture independent wordcode files (.zwc) 2001-05-13 17:10 ` Bart Schaefer @ 2001-05-13 17:48 ` Andrej Borsenkow 2001-05-14 7:15 ` Sven Wischnowsky 1 sibling, 0 replies; 6+ messages in thread From: Andrej Borsenkow @ 2001-05-13 17:48 UTC (permalink / raw) To: zsh-workers On Sun, 13 May 2001, Bart Schaefer wrote: > A thought that occurred to me, though I don't know if this is actually the > problem Paul is having: > > /********************************************/ > /* Defintions for word code */ > /********************************************/ > > typedef unsigned int wordcode; > typedef wordcode *Wordcode; > > > There are architectures where `unsigned int' is 16 bits or 64 bits. We > should be determining a 32-bit type via configure and using it here. > Yes, that occured to me as well. We cover big/little endian case, but what about 32 vs 64 bit systems? There may be subtle differences there, e.g. in the way integer parameter are interpreted. -andrej ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: architecture independent wordcode files (.zwc) 2001-05-13 17:10 ` Bart Schaefer 2001-05-13 17:48 ` Andrej Borsenkow @ 2001-05-14 7:15 ` Sven Wischnowsky 2001-05-14 17:04 ` Paul Lew 1 sibling, 1 reply; 6+ messages in thread From: Sven Wischnowsky @ 2001-05-14 7:15 UTC (permalink / raw) To: zsh-workers; +Cc: Paul Lew Bart Schaefer wrote: > ... > > There are architectures where `unsigned int' is 16 bits or 64 bits. We > should be determining a 32-bit type via configure and using it here. When we added zcompile, I asked if there were systems on which sizeof(int) != 4 but got no reply. And I suggested using a configure test but I still don't know enough about configure to write this test myself... Paul, I had tested it with the three architectures I have access to here: Redhat Linux 5.someting, Solaris 2.6 and Tru64 Unix. That still works for me for the test cases I tried (between the latter to systems this includes the completion system). So I need more information, could you send us the uncompiled files (or a simplified but still not-working version if there's something in there you don't want to show)? Bye Sven -- Sven Wischnowsky wischnow@informatik.hu-berlin.de ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: architecture independent wordcode files (.zwc) 2001-05-14 7:15 ` Sven Wischnowsky @ 2001-05-14 17:04 ` Paul Lew 2001-05-15 8:37 ` PATCH: " Sven Wischnowsky 0 siblings, 1 reply; 6+ messages in thread From: Paul Lew @ 2001-05-14 17:04 UTC (permalink / raw) To: Sven Wischnowsky; +Cc: zsh-workers, Paul Lew [-- Attachment #1: message body text --] [-- Type: text/plain, Size: 1200 bytes --] >>>>> "Sven" == Sven Wischnowsky <wischnow@informatik.hu-berlin.de> writes: Sven> Bart Schaefer wrote: >> ... >> >> There are architectures where `unsigned int' is 16 bits or 64 >> bits. We should be determining a 32-bit type via configure and >> using it here. Sven> When we added zcompile, I asked if there were systems on Sven> which sizeof(int) != 4 but got no reply. And I suggested Sven> using a configure test but I still don't know enough about Sven> configure to write this test myself... Sven> Paul, I had tested it with the three architectures I have Sven> access to here: Redhat Linux 5.someting, Solaris 2.6 and Sven> Tru64 Unix. That still works for me for the test cases I Sven> tried (between the latter to systems this includes the Sven> completion system). So I need more information, could you Sven> send us the uncompiled files (or a simplified but still Sven> not-working version if there's something in there you don't Sven> want to show)? I have lots of startup files for zsh, fortunately, the .zshenv is good enough to trigger the problem. Attached below. -- Paul 05/14/01 09:10 AM -- [-- Attachment #2: .zshenv --] [-- Type: text/plain, Size: 7090 bytes --] #! /auto/insbu-cnstools/bin/zsh -f # # Z shell environment setup # # Created at: 06/05/91 08:44 PM # Last update: 05/12/01 07:34 PM (Edition: 177) # [[ -O /tmp/zshenv-debug.$LOGNAME ]] && . /tmp/zshenv-debug.$LOGNAME #---------------------------------------------------------------# # Command Search Path # #---------------------------------------------------------------# artool=/auto/insbu-cnstools/ar [[ -d $HOME/.zdata ]] || mkdir $HOME/.zdata zpath=$HOME/.zdata/zpath.$(/bin/uname -n) [[ $zpath -nt .zshenv ]] || /bin/rm -f $zpath case $(/bin/uname -sr) in Linux\ 2.2.14*) # Linux redhat 7.0 bindir=binx86 libdir=libx86 zshenv=/bin/zsh ;; SunOS\ 5.5.*) bindir=bin-5.5 libdir=lib-5.5 zshenv=/usr/local/bin/zsh ;; *) bindir=bin libdir=lib zshenv=/auto/insbu-cnstools/bin/zsh ;; esac if [[ -r $zpath ]]; then path=($(< $zpath )) else #odeuname=/usr/sde/tools/common/ode_uname dirs=(.) dirs=($dirs $artool/$bindir $artool/sh $artool/perl) dirs=($dirs /auto/insbu-cnstools/$bindir) #cisco CNS dirs=($dirs /auto/insbu-cnstools/s$bindir) #cisco CNS #dirs=($dirs /auto/insbu-cnstools/Office51/bin) #Star Office dirs=($dirs /auto/cnsadpub/cns/$bindir) #cisco CNS dirs=($dirs /auto/insbu-cnstools/apache/$bindir) #Cisco apache dirs=($dirs /auto/insbu-cnstools/mysql/$bindir) #Cisco mysql dirs=($dirs /opt/AICar1/usrbin) #cisco AR dirs=($dirs /nfs/csc/mib-release/bin) #cisco MIB dirs=($dirs /auto/insbu-cnstools/java/$bindir) #cisco java dirs=($dirs /usr/local/java/bin) dirs=($dirs /usr/local/bin /usr/local/sbin) dirs=($dirs /sw/licensed/sun/SUNWspro/5.0/sparc-sun-solaris2.6/bin) #SunPro C++ dirs=($dirs /usr/dt/bin /router/bin) #cisco dirs=($dirs /sw/current/solaris2bin) #cisco dirs=($dirs /usr/atria/bin) #Clearcase dirs=($dirs /usr/local/ddts/bin) #cisco dirs=($dirs $([[ -r $odeuname ]] && $odeuname -p)) #css stuff dirs=($dirs /www/bin) #mhttpd stuff dirs=($dirs /usr/X11R6/bin /usr/openwin/bin) #SunOS dirs=($dirs /usr/etc/netls) #hpux dirs=($dirs /usr/bin/X11) dirs=($dirs /sbin /usr/sbin /usr/lbin) #osf + ultrix dirs=($dirs /usr/ccs/bin) #solaris dirs=($dirs /usr/X11/bin /usr/openwin/bin) #Linux dirs=($dirs /usr/andrew/bin) #Linux dirs=($dirs /usr/ucb /usr/bin /bin) dirs=($dirs /etc /usr/etc) dirs=($dirs /usr/local/games /usr/games /pub/games) unset odeuname # if [[ $(uname -s) = "OSF1" && $(uname -v) -ge 878 ]]; then # export _RLD_ARGS=-ignore_all_versions #osf 4.0d # #need for less # fi path=() foreach dir ($dirs) if [[ -d $dir ]]; then path=(${path} $dir); fi end echo $path > $zpath chmod go-w $zpath unset dirs dir fi case $(uname) in SunOS) LD_LIBRARY_PATH=/auto/insbu-cnstools/$libdir LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/sw/licensed/sun/SUNWspro/5.0/sparc-sun-solaris2.6/lib export LD_LIBRARY_PATH ;; Linux) LD_LIBRARY_PATH=/auto/insbu-cnstools/$libdir LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH ;; OSF1) export XMCD_LIBDIR=/usr/lib/X11/xmcd ;; *) ;; esac #---------------------------------------------------------------# # Application Environment Variables # #---------------------------------------------------------------# # Allow group write, to protect valueble data, set up .in and .out # file in the directory umask 002 HPATH=~/info/tcsh PAGER=less MORE='-cs' LESS='-Xj5-PM?pb%pb\%. ?f%f:stdin. ?ltLine\: %lt-%lb:Byte\: %bt-%bb.' LESS="$LESS"' ?ssize\: %s. ?m(%i of %m). ?e(EOF) ?x- Next\: %x.$' LESS="${LESS}MicesaO/usr/tmp/less_$UID.xxxxx" EDITOR='vi' #PHONES=~paullew/dat/phones.tip #REMOTE=~paullew/dat/remote.tip #HELPDIR=~/lib/gnuplot-help HELPDIR=$artool/zsh/zsh-help TORSO='-n -c3' FCODES=~/log/$USER.bg FTPR_PASSWORD="-$LOGNAME@cisco.com" # make sure sub-shells are zsh export SHELL=$zshenv # for GNU emacs shell mode ESHELL=/bin/csh TGIF_LOGIC=~/lib/tgif/logic TGIF_FLOWCHART=~/lib/tgif/flowchart TGIF_PETRI=~/lib/tgif/petri TGIF_LATEX=~/lib/tgif/latex GUI_BUILDER=/usr/local/lib/GuiBuilder # Basic types handled by zsh postfix characters, we just use color to # highlight the archive, program source code, etc. LS_COLORS='no=00:fi=00:di=00:ln=00:pi=00:so=00:bd=00:cd=00:ex=00' LS_COLORS="${LS_COLORS}:*.cmd=00;35:*.exe=00;35:*.com=00;35" LS_COLORS="${LS_COLORS}:*.btm=00;35:*.bat=00;35" LS_COLORS="${LS_COLORS}:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31" LS_COLORS="${LS_COLORS}:*.lzh=00;31:*.zip=00;31" LS_COLORS="${LS_COLORS}:*.z=00;31:*.Z=00;31:*.gz=00;31:*.zoo=00;31" LS_COLORS="${LS_COLORS}:*.jpg=01;35:*.gif=01;35:*.bmp=01;35" LS_COLORS="${LS_COLORS}:*.xbm=01;35:*.xpm=01;35:*.tif=01;35" LS_COLORS="${LS_COLORS}:*.c=00;34:*.h=00;34" ICAL_LIBRARY=/usr/local/lib/ical/v2.0p2 # netscape 4.73 (06/15/00 09:08 AM) export MOZILLA_HOME=/auto/insbu-cnstools/netscape # netshow 2.9 (10/04/99 08:08 AM) #export NETSHOW_HOME_DIR=/usr/cns/netshow export PAGER MORE LESS EDITOR PHONES REMOTE HELPDIR TORSO FCODES export TGIF_LOGIC TGIF_FLOWCHART TGIF_PETRI TGIF_LATEX GUI_BUILDER export LS_COLORS FTPR_PASSWORD ICAL_LIBRARY export TZ=PST8PDT # Java stuff - for j2sdk-1.3.0.02 (04/07/01 08:59 PM) CLASSPATH=/auto/insbu-cnstools/java:/auto/insbu-cnstools/java/lib CLASSPATH=$CLASSPATH:/auto/insbu-cnstools/java/jre/lib export CLASSPATH # turn off zle for emacs (04/24/01 02:48 PM) if [[ $EMACS == "t" ]]; then unsetopt zle fi # ssh setup (09/14/99 07:38 AM) # To allow no password ssh and scp if [[ -r ~/.ssh/authorized_keys && $(hash -m ssh-agent) != "" ]]; then # run ssh-agent once for each engineer''s first login /bin/ps -U $(id | sed -n 's/uid=//;s/(.*$//p') | \ grep ssh-agen > /dev/null if [[ $? -ne 0 ]]; then racefile=~/.ssh/ssh-agent.$HOST.tmp echo $pid >> $racefile if [[ $(head -1 $racefile) -eq $pid ]]; then # I am the first one ssh-agent -s > ~/.ssh/ssh-agent.$HOST (sleep 5; rm -f $racefile) & fi unset racefile fi if [[ -r ~/.ssh/ssh-agent.$HOST ]]; then . ~/.ssh/ssh-agent.$HOST fi fi #---------------------------------------------------------------# # Project Environment Variables # #---------------------------------------------------------------# # PAW stuff #export CVSROOT=/nfs/paw/src #export PAWDEV=~lew/paw/u-world.CUR # # CSS ODE stuff #export ODE_VER=ode4.0 #export PRINCIPAL=Paul_Lew #export ODE_DIFF=ode-wdiff #export ODE_VDIFF=ode-ediff # # Cisco Clearcase export CC_PREPEND_PATH=$artool/sh:/auto/insbu-cnstools/bin export CC_DISABLE_COPYRIGHT_CHECK=1 if [[ "$CLEARCASE_ROOT" != "" ]]; then export DOT_TAGS=/vob/cnsar/thin/destiny/.tags fi # Printer Setup # 11/06/00 10:44 AM export LPDEST=sj20-b9 # printer spool directory for StarOffice export STAR_SPOOL_DIR=/tmp # export DISPLAY=${DISPLAY:=$LOGNAME-ultra:0.0} #---------------------------------------------------------------# # source private zshenv setup # #---------------------------------------------------------------# [[ -r $HOME/.zshenv-private ]] && . $HOME/.zshenv-private ## Local Variables: # ## mode: ksh # ## End: # ^ permalink raw reply [flat|nested] 6+ messages in thread
* PATCH: Re: architecture independent wordcode files (.zwc) 2001-05-14 17:04 ` Paul Lew @ 2001-05-15 8:37 ` Sven Wischnowsky 0 siblings, 0 replies; 6+ messages in thread From: Sven Wischnowsky @ 2001-05-15 8:37 UTC (permalink / raw) To: zsh-workers Paul Lew wrote: > ... > > I have lots of startup files for zsh, fortunately, the .zshenv is good > enough to trigger the problem. Attached below. That helped. Obviously I had only tried it with functions that were too small. The zwc files contain the compiled versions for both endianesses, first in the one for the machine the file was compiled on and after that the one for the other endianess. When the shell has to use that other version (with mapping), it has to calculate the offset into the zwc file for the header (containing the directory of files/functions in the zwc file including their positions relative to the header etc.). That worked fine. But it also has to map the part of the part of the zwc it needs and for that it has to adjust the offset to a page boundary. That worked fine, too. But then it forgot to increment the length of the mapped reagion by the difference between the real offset and the aligned one. For large functions that happened to cross a page boundary that could result in the string table of the function being not or only partially mapped. > ... > dirs=(.) > dirs=($dirs $artool/$bindir $artool/sh $artool/perl) > dirs=($dirs /auto/insbu-cnstools/$bindir) #cisco CNS > dirs=($dirs /auto/insbu-cnstools/s$bindir) #cisco CNS > ... Ugh, that's pretty inefficient -- zsh has no problems with arrays definitions spanning multiple lines. Bye Sven Index: Src/parse.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/parse.c,v retrieving revision 1.19 diff -u -r1.19 parse.c --- Src/parse.c 2001/03/07 12:58:41 1.19 +++ Src/parse.c 2001/05/15 08:25:50 @@ -2782,7 +2782,7 @@ { FuncDump d; Wordcode addr; - int fd, off; + int fd, off, mlen; if (other) { static size_t pgsz = 0; @@ -2802,15 +2802,17 @@ pgsz--; } off = len & ~pgsz; - } else + mlen = len + (len - off); + } else { off = 0; - + mlen = len; + } if ((fd = open(dump, O_RDONLY)) < 0) return; fd = movefd(fd); - if ((addr = (Wordcode) mmap(NULL, len, PROT_READ, MAP_SHARED, fd, off)) == + if ((addr = (Wordcode) mmap(NULL, mlen, PROT_READ, MAP_SHARED, fd, off)) == ((Wordcode) -1)) { close(fd); return; -- Sven Wischnowsky wischnow@informatik.hu-berlin.de ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2001-05-15 8:37 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <15101.39024.899564.120545@paullew-ultra.cisco.com> [not found] ` <1010513004337.ZM7197@candle.brasslantern.com> 2001-05-13 5:00 ` architecture independent wordcode files (.zwc) Paul Lew 2001-05-13 17:10 ` Bart Schaefer 2001-05-13 17:48 ` Andrej Borsenkow 2001-05-14 7:15 ` Sven Wischnowsky 2001-05-14 17:04 ` Paul Lew 2001-05-15 8:37 ` PATCH: " Sven Wischnowsky
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).