mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: Re: How to build libc.a with -fPIC for all archive members?
Date: Mon, 10 Feb 2014 15:07:21 +0100	[thread overview]
Message-ID: <20140210140721.GK1685@port70.net> (raw)
In-Reply-To: <52F8C782.4060308@f-prot.com>

* Oliver Schneider <musl-mailinglist@f-prot.com> [2014-02-10 12:35:14 +0000]:
> how can I build the static library from the musl source, but compiling
> with -fPIC?
> 
> I tried the obvious:
> 
> CFLAGS=-fPIC ./configure --enable-gcc-wrapper --disable-shared

this should work

> and then built. But I am getting the following linker error still
> (albeit for a different member function and object file than before):
> 
> /usr/local/musl/lib/libc.a(memmove.o): relocation R_X86_64_PC32 against
> symbol `memcpy' can not be used when making a shared object; recompile
> with -fPIC
> final link failed: Bad value

i think you miss -Bsymbolic-functions linker flags when you link the .so

this avoids relocations of all .so internal function calls

(which should be always on when building any library unless you explicitly
document that a sepecific function may be hijacked (interposed) through
ldpreloading otherwise the mismatch between the library internal and
library external abi can break semantics)

> The reason I want to do this, is to have a statically linked .so. I.e.
> an .so that has no external dependency other than the system calls. Or
> is this known to conflict with the ever-present glibc in some way?

how would you use that? somehow it will need to be loaded but
the loader must not interfere with the static linked libc

or would you use the .so as the loader?

(klibc does something like that: they put all libc code in a .so, they don't
use -fPIC because they load the .so at fixed address and all binaries that
are dynlinked to it are compiled against a fixed .so that has its sha1 checksum
in its name, that way you can have something that looks like dynamic linking
but actually it's more like a set of split static binaries that happens to
share one half of their code that contains all of libc)


  parent reply	other threads:[~2014-02-10 14:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-10 12:35 Oliver Schneider
2014-02-10 13:27 ` Oliver Schneider
2014-02-10 14:04   ` Oliver Schneider
2014-02-10 14:07 ` Szabolcs Nagy [this message]
2014-02-10 19:43 ` Rich Felker

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=20140210140721.GK1685@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).