PATCH: BPs in Makeconfig & Makerules
Greg McGary
greg@mcgary.org
Wed Jun 7 16:55:00 GMT 2000
2000-06-07 Greg McGary <greg@mcgary.org>
* Makeconfig (CPPFLAGS-.ob): pass -fbounded-pointers
for all files *.[cS]. (CFLAGS-.ob): Don't optimize sibling calls.
(bppfx): New variable.
* Makerules (elide-bp-thunks): New variable.
(elide-routines.*): Elide BP-* files for all but *.ob.
(sources): Include bp-thunks.
Index: Makeconfig
===================================================================
RCS file: /cvs/glibc/libc/Makeconfig,v
retrieving revision 1.237
diff -u -p -r1.237 Makeconfig
--- Makeconfig 2000/05/29 17:14:26 1.237
+++ Makeconfig 2000/06/07 23:53:46
@@ -619,7 +619,7 @@ CFLAGS-.op = -pg
libtype.op = lib%_p.a
endif
ifeq (yes,$(build-omitfp))
-# Under --enable-omitfp, we build an the library optimized without
+# Under --enable-omitfp, we build the library optimized without
# debugging information using -fomit-frame-pointer, and build an extra
# library with debugging information. The debuggable objects are named foo.og.
object-suffixes += .og
@@ -629,12 +629,14 @@ CFLAGS-.o = $(filter %frame-pointer,$(+c
CFLAGS-.os += -g0 -O99 -fomit-frame-pointer -D__USE_STRING_INLINES
libtype.og = lib%_g.a
endif
+
+bppfx = BP-
ifeq (yes,$(build-bounded))
# Under --enable-bounded, we build the library with `-fbounded-pointers -g'
# to runtime bounds checking. The bounded-pointer objects are named foo.ob.
object-suffixes += .ob
-CPPFLAGS-.ob = -DBOUNDED_POINTERS $(pic-default)
-CFLAGS-.ob = -g -fbounded-pointers
+CPPFLAGS-.ob = -fbounded-pointers $(pic-default)
+CFLAGS-.ob = -g -O2 -fno-optimize-sibling-calls
libtype.ob = lib%_b.a
endif
Index: Makerules
===================================================================
RCS file: /cvs/glibc/libc/Makerules,v
retrieving revision 1.335
diff -u -p -r1.335 Makerules
--- Makerules 2000/04/28 05:07:25 1.335
+++ Makerules 2000/06/07 23:53:47
@@ -418,15 +418,19 @@ ifndef libc.so-version
static-only-routines =
endif
+# Bounded pointer thunks are only built for *.ob
+elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks))
+
elide-routines.oS += $(filter-out $(static-only-routines),\
- $(routines) $(aux) $(sysdep_routines))
-elide-routines.os += $(static-only-routines)
+ $(routines) $(aux) $(sysdep_routines)) \
+ $(elide-bp-thunks)
+elide-routines.os += $(static-only-routines) $(elide-bp-thunks)
# If we have versioned code we don't need the old versions in any of the
# static libraries.
-elide-routines.o += $(shared-only-routines)
-elide-routines.op += $(shared-only-routines)
-elide-routines.og += $(shared-only-routines)
+elide-routines.o += $(shared-only-routines) $(elide-bp-thunks)
+elide-routines.op += $(shared-only-routines) $(elide-bp-thunks)
+elide-routines.og += $(shared-only-routines) $(elide-bp-thunks)
elide-routines.ob += $(shared-only-routines)
# Don't try to use -lc when making libc.so itself.
@@ -466,9 +470,13 @@ endif
# Figure out the source filenames in this directory.
-override sources := $(addsuffix .c,$(filter-out $(elided-routines),\
- $(routines) $(aux) \
- $(sysdep_routines)))
+override sources := $(addsuffix .c,\
+ $(filter-out $(elided-routines),\
+ $(routines) $(aux) \
+ $(sysdep_routines)) \
+ $(addprefix $(bppfx),\
+ $(filter $(routines) $(sysdep_routines),\
+ $(bp-thunks))))
sysdep_routines := $(sysdep_routines)
headers := $(headers) $(sysdep_headers)
More information about the Libc-hacker
mailing list