This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Andreas Jaeger <aj@suse.de> writes: > your latest patch breaks compilation of a static only glibc: Sorry about that. My checkin exposed what looks like a bug in Makerules: all of the elide-routines.o* macros are defined inside `ifeq (yes,$(build-shared))', so that a static-only build never gets a definition for elide-routines.oS (or any of the others). Question: do the contents of the static library differ when we're also building a shared library? If the static library contents are invariant, then the patch below is proper. If the static library content depends on whether or not there's a shared library configured, then the patch is wrong and needs some more work. In any case, the content of the profiled, debug, and bounded libraries ought not be influenced by the presence of the shared library. This patch moves all of the elide-routines.o* definitions outside the conditional: 2000-06-21 Greg McGary <greg@mcgary.org> * Makerules (elide-routines.*, elide-bp-thunks): Define unconditionally. Index: Makerules =================================================================== RCS file: /cvs/glibc/libc/Makerules,v retrieving revision 1.338 diff -u -p -r1.338 Makerules --- Makerules 2000/06/21 02:31:29 1.338 +++ Makerules 2000/06/21 10:37:41 @@ -369,6 +369,30 @@ define sed-remove-objpfx endef endif +# Modify the list of routines we build for different targets + +ifeq (yes,$(build-shared)) +ifndef libc.so-version +# Undefine this because it can't work when we libc.so is unversioned. +static-only-routines = +endif +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-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-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) + # Shared library building. ifeq (yes,$(build-shared)) @@ -412,26 +436,6 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \ $(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so) endef - -ifndef libc.so-version -# Undefine this because it can't work when we libc.so is unversioned. -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-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-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. # Also omits crti.o and crtn.o, which we do not want
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |