[BZ,#17836] : -pg -pie doesn't work on x86-64
Commit Message
We compile gcrt1.o with -fPIC to support both "gcc -pg" and "gcc -pie -pg".
Tested on x86-64, i686 and x32. OK for trunk after 2.21 is released?
H.J.
---
[BZ #17836]
* csu/Makefile (extra-objs): Add gmon-start.o if not builing
shared library. Add gmon-start.os otherwise.
($(objpfx)g$(start-installed-name)): Use $(objpfx)S%
$(objpfx)gmon-start.os if builing shared library.
($(objpfx)g$(static-start-installed-name)): Likewise.
---
csu/Makefile | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
Comments
On 13 Jan 2015 06:26, H.J. Lu wrote:
> We compile gcrt1.o with -fPIC to support both "gcc -pg" and "gcc -pie -pg".
> Tested on x86-64, i686 and x32. OK for trunk after 2.21 is released?
looks fine to me
-mike
On Sat, Feb 21, 2015 at 10:03 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> On 13 Jan 2015 06:26, H.J. Lu wrote:
>> We compile gcrt1.o with -fPIC to support both "gcc -pg" and "gcc -pie -pg".
>> Tested on x86-64, i686 and x32. OK for trunk after 2.21 is released?
>
> looks fine to me
> -mike
I checked it in.
Thanks.
@@ -32,7 +32,7 @@ aux = errno
elide-routines.os = libc-tls
static-only-routines = elf-init
csu-dummies = $(filter-out $(start-installed-name),crt1.o Mcrt1.o)
-extra-objs = start.o gmon-start.o \
+extra-objs = start.o \
$(start-installed-name) g$(start-installed-name) $(csu-dummies) \
S$(start-installed-name)
omit-deps = $(patsubst %.o,%,$(start-installed-name) g$(start-installed-name) \
@@ -46,9 +46,11 @@ tests := tst-empty tst-atomic tst-atomic-long
tests-static := tst-empty
ifeq (yes,$(build-shared))
-extra-objs += S$(start-installed-name)
+extra-objs += S$(start-installed-name) gmon-start.os
install-lib += S$(start-installed-name)
generated += start.os
+else
+extra-objs += gmon-start.o
endif
ifneq ($(start-installed-name),$(static-start-installed-name))
@@ -95,10 +97,17 @@ endif
# The profiling startfile is made by linking together the normal
# startfile with gmon-start.o, which defines a constructor function
# to turn on profiling code at startup.
+ifeq (yes,$(build-shared))
+$(addprefix $(objpfx),$(sort g$(start-installed-name) \
+ g$(static-start-installed-name))): \
+ $(objpfx)g%: $(objpfx)S% $(objpfx)gmon-start.os
+ $(link-relocatable)
+else
$(addprefix $(objpfx),$(sort g$(start-installed-name) \
g$(static-start-installed-name))): \
$(objpfx)g%: $(objpfx)% $(objpfx)gmon-start.o
$(link-relocatable)
+endif
# These extra files are sometimes expected by system standard linking
# procedures, but we have nothing for them to do. So compile empty files.