On 6/26/08, Tomáš Smetana <[EMAIL PROTECTED]> wrote:
> Hello,
>   when trying the new version I encountered a problem with linking on my
>  desktop (Fedora 8, i386, gcc 4.1.2):
>
>  + cc -O -L. -L/home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib -o 
> ksh pmain.o libshell.a 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libdll.a -ldl 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libast.a 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libcmd.a 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libast.a 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libast.a -lm 
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libast.a
>  
> /home/tsmetana/upstream/ksh-2008-06-24/arch/linux.i386/lib/libast.a(getenv.o):
>  In function `_ast_getenv':
>  getenv.c:(.text+0x0): multiple definition of `_ast_getenv'
>  libshell.a(name.o):name.c:(.text+0xf7e): first defined here
>  collect2: ld returned 1 exit status
>  mamake [cmd/ksh93]: *** exit code 1 making ksh
>
>  I think the problem is the misplaced #undef getenv in getenv.c, so here's my
>  proposed fix:
[snip]

Attached (as"ast_ksh_20080624_getenv_link_fix.diff.txt") is a
prototype patch which should fix the problem (it works on Solaris
11/SPARC+x86).

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) [EMAIL PROTECTED]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 7950090
 (;O/ \/ \O;)
diff -r -u src_original/cmd/ksh93/sh/init.c src/cmd/ksh93/sh/init.c
--- src_original/cmd/ksh93/sh/init.c    2008-06-25 13:41:52.000000000 -0500
+++ src/cmd/ksh93/sh/init.c     2008-06-26 08:18:45.373909800 -0500
@@ -46,6 +46,9 @@
 #include       "lexstates.h"
 #include       "version.h"
 
+char *sh_getenv(const char *name);
+char* sh_setenviron(const char *name);
+
 #if SHOPT_MULTIBYTE
     char e_version[]   = "\n@(#)$Id: Version M "SH_RELEASE" $\0\n";
 #else
@@ -1158,8 +1161,8 @@
        shp->bltindata.shexit = sh_exit;
        shp->bltindata.shbltin = sh_addbuiltin;
 #if _AST_VERSION >= 20080617L
-       shp->bltindata.shgetenv = getenv;
-       shp->bltindata.shsetenv = setenviron;
+       shp->bltindata.shgetenv = sh_getenv;
+       shp->bltindata.shsetenv = sh_setenviron;
        astintercept(&shp->bltindata,1);
 #endif
 #if 0
diff -r -u src_original/cmd/ksh93/sh/name.c src/cmd/ksh93/sh/name.c
--- src_original/cmd/ksh93/sh/name.c    2008-06-20 12:55:53.000000000 -0500
+++ src/cmd/ksh93/sh/name.c     2008-06-26 07:28:30.725424000 -0500
@@ -2532,7 +2532,7 @@
 /*
  * This version of getenv uses the hash storage to access environment values
  */
-char *getenv(const char *name)
+char *sh_getenv(const char *name)
 /*@
        assume name!=0;
 @*/ 
@@ -2568,7 +2568,7 @@
 /*
  * Override libast setenv()
  */
-char* setenviron(const char *name)
+char* sh_setenviron(const char *name)
 {
        register Namval_t *np;
        if(name)
_______________________________________________
ast-developers mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-developers

Reply via email to