* Makeconfig: Define pie-ccflag and PIE-ccflag variables.

* elf/Makefile: Use pie-ccflag variable.
	* nscd/Makefile: Likewise.
	* sysdeps/sparc/Makefile: Set $(pie-ccflag) to -fPIE.
This commit is contained in:
Ulrich Drepper 2008-07-26 22:22:24 +00:00
parent 3f414923cf
commit 7b91359b2c
7 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2008-07-24 Tom "spot" Callaway <tcallawa@redhat.com>
* Makeconfig: Define pie-ccflag and PIE-ccflag variables.
* elf/Makefile: Use pie-ccflag variable.
* nscd/Makefile: Likewise.
* sysdeps/sparc/Makefile: Set $(pie-ccflag) to -fPIE.
2008-07-21 Andreas Krebbel <krebbel1@de.ibm.com> 2008-07-21 Andreas Krebbel <krebbel1@de.ibm.com>
[BZ #6724] [BZ #6724]

View File

@ -712,6 +712,10 @@ pic-ccflag = -fPIC
# This one should always stay like this unless there is a very good reason. # This one should always stay like this unless there is a very good reason.
PIC-ccflag = -fPIC PIC-ccflag = -fPIC
endif endif
# This can be changed by a sysdep makefile
pie-ccflag = -fpie
# This one should always stay like this unless there is a very good reason.
PIE-ccflag = -fPIE
ifeq (yes,$(build-profile)) ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects. # Under --enable-profile, we will build a static library of profiled objects.
# The profiled object files are named foo.op. # The profiled object files are named foo.op.

View File

@ -800,7 +800,7 @@ $(objpfx)tst-array5-static.out: $(objpfx)tst-array5-static
cmp $@ tst-array5-static.exp > /dev/null cmp $@ tst-array5-static.exp > /dev/null
ifeq (yesyes,$(have-fpie)$(build-shared)) ifeq (yesyes,$(have-fpie)$(build-shared))
CFLAGS-tst-pie1.c += -fpie CFLAGS-tst-pie1.c += $(pie-ccflag)
$(objpfx)tst-pie1.out: $(objpfx)tst-pie1 $(objpfx)tst-pie1.out: $(objpfx)tst-pie1
$(elf-objpfx)$(rtld-installed-name) \ $(elf-objpfx)$(rtld-installed-name) \

View File

@ -1,5 +1,5 @@
/* Storage management for the chain of loaded shared objects. /* Storage management for the chain of loaded shared objects.
Copyright (C) 1995-2002, 2004, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 1995-2002,2004,2006,2007,2008 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
@ -50,7 +50,7 @@ _dl_new_object (char *realname, const char *libname, int type,
#endif #endif
new = (struct link_map *) calloc (sizeof (*new) + audit_space new = (struct link_map *) calloc (sizeof (*new) + audit_space
+ sizeof (struct r_scope_elem) + sizeof (struct link_map *)
+ sizeof (*newname) + libname_len, 1); + sizeof (*newname) + libname_len, 1);
if (new == NULL) if (new == NULL)
return NULL; return NULL;

View File

@ -169,7 +169,7 @@ init_mq_netlink (void)
if (netlink_socket == -1) if (netlink_socket == -1)
{ {
/* Just a normal netlink socket, not bound. */ /* Just a normal netlink socket, not bound. */
if (have_sock_cloexec) if (have_sock_cloexec >= 0)
{ {
netlink_socket = socket (AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0); netlink_socket = socket (AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0);
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC #if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC

View File

@ -90,7 +90,7 @@ CFLAGS-nscd_initgroups.c = -fexceptions
nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2
ifeq (yesyes,$(have-fpie)$(build-shared)) ifeq (yesyes,$(have-fpie)$(build-shared))
nscd-cflags += -fpie nscd-cflags += $(pie-ccflag)
endif endif
ifeq (yes,$(have-ssp)) ifeq (yes,$(have-ssp))
nscd-cflags += -fstack-protector nscd-cflags += -fstack-protector

View File

@ -1,6 +1,8 @@
# The Sparc `long double' is a distinct type we support. # The Sparc `long double' is a distinct type we support.
long-double-fcts = yes long-double-fcts = yes
pie-ccflag = -fPIE
ifeq ($(subdir),gmon) ifeq ($(subdir),gmon)
sysdep_routines += sparc-mcount sysdep_routines += sparc-mcount
endif endif