diff --git a/ChangeLog b/ChangeLog index 86c49a3de6..eabfcb5c50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-07-24 Tom "spot" Callaway + + * 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 [BZ #6724] diff --git a/Makeconfig b/Makeconfig index 7de7621f56..a78615eb6a 100644 --- a/Makeconfig +++ b/Makeconfig @@ -712,6 +712,10 @@ pic-ccflag = -fPIC # This one should always stay like this unless there is a very good reason. PIC-ccflag = -fPIC 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)) # Under --enable-profile, we will build a static library of profiled objects. # The profiled object files are named foo.op. diff --git a/elf/Makefile b/elf/Makefile index e509153547..abb9572166 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -800,7 +800,7 @@ $(objpfx)tst-array5-static.out: $(objpfx)tst-array5-static cmp $@ tst-array5-static.exp > /dev/null ifeq (yesyes,$(have-fpie)$(build-shared)) -CFLAGS-tst-pie1.c += -fpie +CFLAGS-tst-pie1.c += $(pie-ccflag) $(objpfx)tst-pie1.out: $(objpfx)tst-pie1 $(elf-objpfx)$(rtld-installed-name) \ diff --git a/elf/dl-object.c b/elf/dl-object.c index 7780de6304..be4ea38f9f 100644 --- a/elf/dl-object.c +++ b/elf/dl-object.c @@ -1,5 +1,5 @@ /* 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. 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 new = (struct link_map *) calloc (sizeof (*new) + audit_space - + sizeof (struct r_scope_elem) + + sizeof (struct link_map *) + sizeof (*newname) + libname_len, 1); if (new == NULL) return NULL; diff --git a/nptl/sysdeps/unix/sysv/linux/mq_notify.c b/nptl/sysdeps/unix/sysv/linux/mq_notify.c index 1be452a0e0..49ddeae052 100644 --- a/nptl/sysdeps/unix/sysv/linux/mq_notify.c +++ b/nptl/sysdeps/unix/sysv/linux/mq_notify.c @@ -169,7 +169,7 @@ init_mq_netlink (void) if (netlink_socket == -1) { /* 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); #if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC diff --git a/nscd/Makefile b/nscd/Makefile index 51badea201..364ddfe8dd 100644 --- a/nscd/Makefile +++ b/nscd/Makefile @@ -90,7 +90,7 @@ CFLAGS-nscd_initgroups.c = -fexceptions nscd-cflags = -DIS_IN_nscd=1 -D_FORTIFY_SOURCE=2 ifeq (yesyes,$(have-fpie)$(build-shared)) -nscd-cflags += -fpie +nscd-cflags += $(pie-ccflag) endif ifeq (yes,$(have-ssp)) nscd-cflags += -fstack-protector diff --git a/sysdeps/sparc/Makefile b/sysdeps/sparc/Makefile index 9fa5324b41..73b926554e 100644 --- a/sysdeps/sparc/Makefile +++ b/sysdeps/sparc/Makefile @@ -1,6 +1,8 @@ # The Sparc `long double' is a distinct type we support. long-double-fcts = yes +pie-ccflag = -fPIE + ifeq ($(subdir),gmon) sysdep_routines += sparc-mcount endif