From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/11336 Path: news.gmane.org!.POSTED!not-for-mail From: John Regan Newsgroups: gmane.linux.lib.musl.general Subject: Re: Question about setting argv[0] when manually using dynamic linker Date: Wed, 17 May 2017 11:16:51 -0500 Message-ID: References: <20170517070115.GL6320@example.net> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="f4030435bc7cac5d71054fba9d4b" X-Trace: blaine.gmane.org 1495037825 25153 195.159.176.226 (17 May 2017 16:17:05 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 17 May 2017 16:17:05 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-11351-gllmg-musl=m.gmane.org@lists.openwall.com Wed May 17 18:17:00 2017 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1dB1dE-0006R3-4S for gllmg-musl@m.gmane.org; Wed, 17 May 2017 18:17:00 +0200 Original-Received: (qmail 27997 invoked by uid 550); 17 May 2017 16:17:04 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 27979 invoked from network); 17 May 2017 16:17:03 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=1g1mVXV8uhAj2ZsBG/sWvXHN/cUiMUtcrLBMrJp5PZs=; b=WXYUVblbBPFFbOyVA1QAssqpaaQnFLp1jgv5Lfz56fdYbfJIn8HA/x+Lj6vhnFWcfa aDvYAimchnye+aiqt/3h3HDUuqOfep0vAizsaWp+ReQrK15iJUSdUbjfdf2ZqMxUv5Ts PIR7M3FTDkcFTQ1VzpVFXlTp5/2rPEy6OX6fVhXk2B2lufYgFgrP5dKo7q4DCramEMYE pNR2R6Sv9rXWfH7tgCO+7isNcnMvyxchPI0v92wzIbKgx1EOqkNUelMmB82dSf+l1xvX EWalYJQCE9AdcPzv3sTigvMN6mWqPH/YMRiE6aHMUyIZgO9g266+9b0X5ggZIb+M31fH 07fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=1g1mVXV8uhAj2ZsBG/sWvXHN/cUiMUtcrLBMrJp5PZs=; b=pMi/vUq6XkXvkpopQs7MxPmf4gxLkZZ5qjUhg8I+3hJqVMzKeDeCJ8HP87eNimvsP3 AshwmdSllUoUv7cyC9l3latylDcyYIGL+7JROxcySLTI64qxA2BbsyywkFWAt/z331i/ 9oa1Jpq2k4Gv98rY98U+GaJgAJgdn8KtXAHkTw5lJ73BEInL2jywQ8tNZarQ0nZVPOSh pTs4qPWQ5IUaBybkgTj8VucgukjGhb/hIbsu4ZyVdUbZx3TJe47GR03Ctw9UjX1oyOpo 150NjvIkoMg/auBz50AnepthMtpkG5q7vozx9pB1I7LZZZIe+kasAU9JV//GdQofikBh JzHQ== X-Gm-Message-State: AODbwcBQeSW5JlB+CC63LaYxaBQELMT7CpsP+0uC49pxYD76QnRbhWeo 5BPOwU403EIyeYfpMFnHJ9LYRYlJWw== X-Received: by 10.200.3.129 with SMTP id t1mr3610583qtg.253.1495037811381; Wed, 17 May 2017 09:16:51 -0700 (PDT) In-Reply-To: Xref: news.gmane.org gmane.linux.lib.musl.general:11336 Archived-At: --f4030435bc7cac5d71054fba9d4b Content-Type: text/plain; charset="UTF-8" On Wed, May 17, 2017 at 11:07 AM, mzpqnxow wrote: > BTW, the shell built-in "exec" has -a which can be used to set argv[0] > > Again though, I'm not entire sure I understand your use, so ignore this if > it's irrelevant :> > > On Wed, May 17, 2017 at 07:00 mzpqnxow wrote: > >> Is there any reason you want to avoid simply statically linking the >> program(s) so that it needs no libc or other shared objects at all? >> >> Or did I misunderstand what you're trying to do? >> >> On Wed, May 17, 2017 at 05:05 wrote: >> >>> On Tue, May 16, 2017 at 08:38:56PM -0400, John Regan wrote: >>> > Hi there - I was wondering if it's possible to somehow set argv[0] when >>> > calling the dynamic linker to load a program. >>> ... >>> > I'd like to retain whatever was actually typed on the command line (in >>> this >>> > case, set argv[0] to "app"), since many apps look at argv[0] to change >>> > behavior, ie - gzip vs gunzip. >>> > >>> > I tried seeing if there was some switch I could pass to the linker, >>> etc - >>> > as far as I can tell, there's no easy way to do this. >>> >>> Set argv[0] to whatever you need when you exec*() the dynamic loader, >>> which is straightforward with a binary wrapper (not with a shell). >>> >>> A binary wrapper also adds less overhead then going through a shell. >>> >>> There is imho hardly any incentive to put such functionalty into the >>> loader. I say this even though we are dependent here on such tricks, >>> to work around programs which insist on guessing things when not asked >>> to. >>> >>> Regards, >>> Rune >>> >>> Well, if I statically link I'm unable to dynamically load modules (at least I'm pretty sure that's the case). There's some cases where that might be useful. Right now, I'm really just trying to see "is this doable?". It'd be interesting to be able to distribute a program with its own libc, libraries, etc, and still have the ability to dynamically load modules. --f4030435bc7cac5d71054fba9d4b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Wed, May 17, 2017 at 11:07 AM, mzpqnxow <musl@mzpqnxow.com><= /span> wrote:
BTW, the shell built-i= n "exec" has -a which can be used to set argv[0]

Again though, I'm not entire sure I understand your use, so ig= nore this if it's irrelevant :>

On Wed, May 17, 2017 at 07:00 mzpqnxow <musl@mzpqnxow.com> wrote:
=
Is there any reason you want to avoid s= imply statically linking the program(s) so that it needs no libc or other s= hared objects at all?

Or did I misunderstand what = you're trying to do?

On Wed, May 17, 2017 at 05:05 <u-uy74@aetey.se> wrote:
On Tue, May 16, 2017 at 08:38:56PM -0400, J= ohn Regan wrote:
> Hi there - I was wondering if it's possible to somehow set argv[0]= when
> calling the dynamic linker to load a program.
=C2=A0...
> I'd like to retain whatever was actually typed on the command line= (in this
> case, set argv[0] to "app"), since many apps look at argv[0]= to change
> behavior, ie - gzip vs gunzip.
>
> I tried seeing if there was some switch I could pass to the linker, et= c -
> as far as I can tell, there's no easy way to do this.

Set argv[0] to whatever you need when you exec*() the dynamic loader,
which is straightforward with a binary wrapper (not with a shell).

A binary wrapper also adds less overhead then going through a shell.

There is imho hardly any incentive to put such functionalty into the
loader. I say this even though we are dependent here on such tricks,
to work around programs which insist on guessing things when not asked to.<= br>
Regards,
Rune


Well, if I statical= ly link I'm unable to dynamically load modules (at least I'm pretty= sure that's the case). There's some cases where that might be usef= ul.

Right now, I'm really just = trying to see "is this doable?". It'd be interesting to be ab= le to distribute a program with its own libc, libraries, etc, and still hav= e the ability to dynamically load modules.
--f4030435bc7cac5d71054fba9d4b--