Date: Wed, 9 Dec 1998 19:48:06 +0100 (CET) From: cejkar@dcse.fee.vutbr.cz To: FreeBSD-gnats-submit@FreeBSD.ORG Subject: bin/9035: Bad __progname content in ELF programs Message-ID: <199812091848.TAA18006@kazi.dcse.fee.vutbr.cz>
next in thread | raw e-mail | index | archive | help
>Number: 9035 >Category: bin >Synopsis: Bad __progname content in ELF programs >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Dec 9 10:50:00 PST 1998 >Last-Modified: >Originator: Rudolf Cejka >Organization: FEE TU Brno, Czech Republic >Release: FreeBSD 3.0-CURRENT i386 >Environment: ELFoized current -current :-) [YY-MM-DD: 98-12-09] >Description: For aout programs, __progname variable contains only program name. For ELF programs, __progname variable contains program name with full path (i386 & alpha). ( There must be something wrong. If this difference is right you must fix at least manpage for err*()/warn*() or err*()/warn*() itself: ... In all cases, the last component of the program name, a colon character, and a space are output ... ... Which for ELF programs at this time doen't apply. ) >How-To-Repeat: Simple program test.c: #include <stdio.h> extern char *__progname; int main(void) { printf("%s\n", __progname); return 0; } gives there results: # gcc -aout -o test test.c # ./././test test # gcc -elf -o test test.c # ./././test ./././test >Fix: Patch is taken from /usr/src/lib/csu/i386/crt0.c. It isn't tested so you must review my patch! patch /usr/src/lib/csu/i386-elf/crt1.c: (You need similar patch for /usr/src/lib/csu/alpha/crt1.c!) --- crt1.c Wed Sep 9 10:11:21 1998 +++ /tmp/crt1.c.new Wed Dec 9 19:43:17 1998 @@ -72,8 +72,13 @@ argc = * (int *) (argv - 1); env = argv + argc + 1; environ = env; - if(argc > 0) + if(argc > 0 && argv[0]) { + register char *s; __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } if(&_DYNAMIC != 0) atexit(rtld_cleanup); --=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-- Rudolf Cejka (cejkar@dcse.fee.vutbr.cz; http://www.fee.vutbr.cz/~cejkar) Technical University of Brno, Faculty of El. Engineering and Comp. Science Bozetechova 2, 612 66 Brno, Czech Republic >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812091848.TAA18006>