mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 10:50:07 +00:00
Consolidate PIE linking Makefile rules.
This commit is contained in:
parent
25bfbb9e0e
commit
435aa54b3b
@ -1,3 +1,11 @@
|
|||||||
|
2009-06-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* Makeconfig (+link-pie): Define.
|
||||||
|
(+prectorS): Define.
|
||||||
|
(+postctorS): Define.
|
||||||
|
* elf/Makefile ($(objpfx)tst-pie1): Use $(+link-pie).
|
||||||
|
* nscd/Makefile ($(objpfx)nscd): Likewise.
|
||||||
|
|
||||||
2009-04-22 Ryan S. Arnold <rsa@us.ibm.com>
|
2009-04-22 Ryan S. Arnold <rsa@us.ibm.com>
|
||||||
|
|
||||||
[BZ #10107]
|
[BZ #10107]
|
||||||
|
16
Makeconfig
16
Makeconfig
@ -434,6 +434,19 @@ ifndef +link
|
|||||||
$(common-objpfx)libc% $(+postinit),$^) \
|
$(common-objpfx)libc% $(+postinit),$^) \
|
||||||
$(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
|
$(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
|
||||||
endif
|
endif
|
||||||
|
# Command for linking PIE programs with the C library.
|
||||||
|
ifndef +link-pie
|
||||||
|
+link-pie = $(CC) -pie -Wl,-O1 -nostdlib -nostartfiles -o $@ \
|
||||||
|
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||||
|
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
|
||||||
|
$(addprefix $(csu-objpfx),S$(start-installed-name)) \
|
||||||
|
$(+preinit) $(+prectorS) \
|
||||||
|
$(filter-out $(addprefix $(csu-objpfx),start.o \
|
||||||
|
S$(start-installed-name))\
|
||||||
|
$(+preinit) $(link-extra-libs) \
|
||||||
|
$(common-objpfx)libc% $(+postinit),$^) \
|
||||||
|
$(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)
|
||||||
|
endif
|
||||||
# Command for statically linking programs with the C library.
|
# Command for statically linking programs with the C library.
|
||||||
ifndef +link-static
|
ifndef +link-static
|
||||||
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
||||||
@ -538,6 +551,9 @@ ifeq ($(elf),yes)
|
|||||||
+postinit = $(addprefix $(csu-objpfx),crtn.o)
|
+postinit = $(addprefix $(csu-objpfx),crtn.o)
|
||||||
+prector = `$(CC) --print-file-name=crtbegin.o`
|
+prector = `$(CC) --print-file-name=crtbegin.o`
|
||||||
+postctor = `$(CC) --print-file-name=crtend.o`
|
+postctor = `$(CC) --print-file-name=crtend.o`
|
||||||
|
# Variants of the two previous definitions for linking PIE programs.
|
||||||
|
+prectorS = `$(CC) --print-file-name=crtbeginS.o`
|
||||||
|
+postctorS = `$(CC) --print-file-name=crtendS.o`
|
||||||
+interp = $(addprefix $(elf-objpfx),interp.os)
|
+interp = $(addprefix $(elf-objpfx),interp.os)
|
||||||
endif
|
endif
|
||||||
csu-objpfx = $(common-objpfx)csu/
|
csu-objpfx = $(common-objpfx)csu/
|
||||||
|
@ -852,14 +852,7 @@ $(objpfx)tst-pie1.out: $(objpfx)tst-pie1
|
|||||||
$< > $@
|
$< > $@
|
||||||
|
|
||||||
$(objpfx)tst-pie1: $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so
|
$(objpfx)tst-pie1: $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so
|
||||||
$(LINK.o) -pie -Wl,-O1 \
|
$(+link-pie)
|
||||||
$(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
|
||||||
$(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
|
|
||||||
$(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
|
|
||||||
$(LDFLAGS) $(LDFLAGS-$(@F)) \
|
|
||||||
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
|
|
||||||
-o $@ $(objpfx)tst-pie1.o $(objpfx)tst-piemod1.so \
|
|
||||||
$(common-objpfx)libc_nonshared.a
|
|
||||||
|
|
||||||
generated += tst-pie1 tst-pie1.out tst-pie1.o
|
generated += tst-pie1 tst-pie1.out tst-pie1.o
|
||||||
endif
|
endif
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# Copyright (C) 1998,2000,2002,2003,2004,2005,2006,2007,2008
|
# Copyright (C) 1998,2000,2002-2009 Free Software Foundation, Inc.
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -128,13 +127,7 @@ ifeq (yesyes,$(have-fpie)$(build-shared))
|
|||||||
relro-LDFLAGS += -Wl,-z,now
|
relro-LDFLAGS += -Wl,-z,now
|
||||||
|
|
||||||
$(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o))
|
$(objpfx)nscd: $(addprefix $(objpfx),$(nscd-modules:=.o))
|
||||||
$(LINK.o) -pie -Wl,-O1 $(nscd-cflags) \
|
$(+link-pie)
|
||||||
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(relro-LDFLAGS) \
|
|
||||||
$(extra-B-$(@F:lib%.so=%).so) -B$(csu-objpfx) \
|
|
||||||
$(extra-B-$(@F:lib%.so=%).so) $(load-map-file) \
|
|
||||||
$(LDFLAGS) $(LDFLAGS-$(@F)) \
|
|
||||||
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
|
|
||||||
-o $@ $^ $(LDLIBS-nscd) $(common-objpfx)libc_nonshared.a
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# This makes sure -DNOT_IN_libc is passed for all these modules.
|
# This makes sure -DNOT_IN_libc is passed for all these modules.
|
||||||
|
Loading…
Reference in New Issue
Block a user