From: Sergey Vlasov <vsu@altlinux.ru>
To: Junio C Hamano <junkio@cox.net>
Cc: Marco Roeland <marco.roeland@xs4all.nl>,
git@vger.kernel.org, pasky@suse.cz
Subject: Re: [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm
Date: Thu, 29 Jun 2006 13:04:00 +0400 [thread overview]
Message-ID: <20060629130400.c280de67.vsu@altlinux.ru> (raw)
In-Reply-To: <7vbqsdynvu.fsf@assigned-by-dhcp.cox.net>
[-- Attachment #1: Type: text/plain, Size: 2668 bytes --]
On Wed, 28 Jun 2006 14:24:37 -0700 Junio C Hamano wrote:
> Marco Roeland <marco.roeland@xs4all.nl> writes:
>
> > Even for Linux someone mentioned that probably i386 is the exception in
> > _not_ needing the -fPIC linkage. It might even be specific to the Perl
> > "xs" implementation specifics?
In general, -fPIC is required when building shared libraries. On some
systems (e.g., Linux/i386) you can get away without -fPIC, but with a
penalty on memory use and load time: non-PIC code will need relocations,
therefore its pages will no longer be shared between different
processes, and relocations will be performed immediately after loading
the shared library.
> USE_PIC is for pleasing Perly git and nothing else right now.
>
> > So I should have added "Works for me (TM)"! ;-)
>
> That would have been more explicit way to tell me that this is a
> partial solution and I should solicit help from people on other
> platforms.
>
> By the way, I had an impression that compiling things with -fPIC
> when not necessary was generally a bad idea from performance
> point of view. If that is the case we might want to compile,
> under USE_PIC, everything with -fPIC in a separate area to
> compile and link with Git.xs, without affecting the C-only core
> code.
This is exactly what libtool does (if both static and shared libraries
are compiled, each file is compiled twice - once with -fPIC -DPIC, and
once without these options).
But I suspect that even libtool won't help with Perl anyway, unless we
create a proper libgit.so and then link our Perl extension with it.
> I suspect this would largely depend on the architecture. I ran
> git-fsck-objects compiled with and without -fPIC (after "make
> clean" to rebuild everything) on a fully packed copy of the
> linux-2.6 repository on my x86_64 box, and did not see
> meaningful differences:
>
> : gitster; /usr/bin/time ../git.junio/git-fsck-objects-no-pic --full
> 109.71user 5.01system 1:54.89elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (14major+1834967minor)pagefaults 0swaps
> : gitster; /usr/bin/time ../git.junio/git-fsck-objects-with-pic --full
> 109.05user 4.97system 1:54.08elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (0major+1834981minor)pagefaults 0swaps
> : gitster;
This is because most of time is spent inside SHA-1 and zlib routines,
which are the same in these cases. Using mozilla-sha1 code might show
some difference.
And the effect of -fPIC on x86_64 is smaller than on i386, because
x86_64 has 2x more registers than i386, therefore loss of one register
is less noticeable.
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
next prev parent reply other threads:[~2006-06-29 9:04 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-28 18:35 [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm Marco Roeland
2006-06-28 18:53 ` Junio C Hamano
2006-06-28 18:59 ` Junio C Hamano
2006-06-28 19:21 ` Marco Roeland
2006-06-28 19:55 ` [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.xs Marco Roeland
2006-06-28 20:52 ` [PATCH] Makefile: set USE_PIC on Linux x86_64 for linking with Git.pm Pavel Roskin
2006-06-29 22:22 ` Jakub Narebski
2006-06-30 0:03 ` Pavel Roskin
2006-06-30 0:29 ` Jakub Narebski
2006-06-28 19:08 ` Marco Roeland
2006-06-28 21:24 ` Junio C Hamano
2006-06-29 9:04 ` Sergey Vlasov [this message]
2006-06-29 9:58 ` Josef Weidendorfer
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=20060629130400.c280de67.vsu@altlinux.ru \
--to=vsu@altlinux.ru \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=marco.roeland@xs4all.nl \
--cc=pasky@suse.cz \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.