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)
next prev parent 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).