mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: Re: Best place to discuss other lightweight libraries?
Date: Thu, 25 Apr 2013 08:40:58 +0200	[thread overview]
Message-ID: <20130425064058.GE12689@port70.net> (raw)
In-Reply-To: <20130424191735.GI20323@brightrain.aerifal.cx>

* Rich Felker <dalias@aerifal.cx> [2013-04-24 15:17:35 -0400]:
> On Wed, Apr 24, 2013 at 05:47:26PM +0200, Szabolcs Nagy wrote:
> > (there are some caveats in go as well: it does not call
> > __libc_start_main on startup nor exit on exit so eg atexit
> > handlers wont get called)
> 
> The idea of calling functions in libc without __libc_start_main ever
> having been called sounds highly misguided and potentially dangerous.
> In musl it might mostly work, but with glibc I don't see how it could
> possibly work.

it works because _init is called by the loader before the entry point
and that does enough setup

(when cgo is used then the interpreter is set to /lib/ld-linux.so.2
in the elf header and it calls _init when it loads libc which is
listed in the dynamic section

the entry point is the go runtime which checks if it is in cgo mode
and sets up a separate pthread with libc managed stack and runs c
code there

the elf binary is prepared by the go toolchain, the go world is
statically linked including the wrapper, but there is an object
in the wrapper that is compiled with gcc and references the
extern symbols and uses the c abi, with a trick the go toolchain
knows about all the extern symbols and needed libraries which get
into the dynamic section so the c world is dynamically linked

there are some other runtime details to allow calling from go
into c and then calling back to go from c, bridging the difference
in abi and calling convenion, but basically this is how cgo works)


  reply	other threads:[~2013-04-25  6:40 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-21 16:30 LM
2013-04-21 20:17 ` Rob Landley
2013-04-21 20:24 ` Rob Landley
2013-04-24 11:39   ` LM
2013-04-25 19:30     ` Rob Landley
2013-04-21 23:26 ` Isaac Dunham
2013-04-22 14:53 ` Rich Felker
2013-04-22 15:21   ` Luca Barbato
2013-04-22 16:40     ` LM
2013-04-22 16:47       ` Daniel Cegiełka
2013-04-22 22:07         ` Rich Felker
2013-04-23 12:50           ` LM
2013-04-23 14:40             ` John Spencer
2013-04-23 14:58               ` Rich Felker
2013-04-22 19:31       ` Luca Barbato
2013-04-22 23:24       ` Rob Landley
2013-04-22 23:31         ` Rich Felker
2013-04-23  0:54           ` Rob Landley
2013-04-23  1:46             ` Rich Felker
2013-04-23  5:04               ` Isaac Dunham
2013-04-23 13:47                 ` Rich Felker
2013-04-23 21:25                   ` Luca Barbato
2013-04-23 21:50                   ` Kurt H Maier
2013-04-24  2:37                     ` Rich Felker
2013-04-24  4:43                       ` Kurt H Maier
2013-04-24 13:37                         ` Rich Felker
2013-04-24  0:50                   ` idunham
2013-04-24  6:11                 ` Rob Landley
2013-04-22 21:52     ` Rich Felker
2013-04-22 22:42       ` Luca Barbato
2013-04-22 23:06         ` Rich Felker
2013-04-23  0:26           ` Luca Barbato
2013-04-23  2:14             ` Rob Landley
2013-04-23 19:07               ` Strake
2013-04-23 19:24                 ` Daniel Cegiełka
2013-04-23 21:33                   ` Szabolcs Nagy
2013-04-24 12:12                     ` Zvi Gilboa
2013-04-23 21:34               ` Luca Barbato
2013-04-24 11:18                 ` Daniel Cegiełka
2013-04-24 11:48                   ` Kurt H Maier
2013-04-24 12:32                     ` Daniel Cegiełka
2013-04-24 13:38                       ` Rich Felker
2013-04-24 13:55                         ` Daniel Cegiełka
2013-04-24 13:37                     ` go support (was: Best place to discuss other lightweight libraries?) John Spencer
2013-04-24 13:39                       ` Rich Felker
2013-04-24 16:33                       ` Kurt H Maier
2013-04-24 15:47                     ` Best place to discuss other lightweight libraries? Szabolcs Nagy
2013-04-24 19:17                       ` Rich Felker
2013-04-25  6:40                         ` Szabolcs Nagy [this message]
2013-04-25 19:37                     ` Rob Landley
2013-04-24 13:28                   ` go support (was: Best place to discuss other lightweight libraries?) John Spencer
2013-04-24 13:42                     ` Rich Felker
2013-04-24 14:06                   ` Best place to discuss other lightweight libraries? Christian Neukirchen
2013-04-29 11:41                     ` Daniel Cegiełka
2013-04-29 16:31                       ` Go (was: [musl] Best place to discuss other lightweight libraries?) John Spencer
2013-04-29 16:44                         ` Daniel Cegiełka
2013-04-23  0:31       ` Best place to discuss other lightweight libraries? Rob Landley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130425064058.GE12689@port70.net \
    --to=nsz@port70.net \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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).