Blame SOURCES/glibc-rh1256317-15.patch

147e83
commit 130ac68ca25c9aa65e027e3e37337bc048205c69
147e83
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
147e83
Date:   Wed Nov 19 12:16:00 2014 +0530
147e83
147e83
    Auto-generate libc-modules.h
147e83
    
147e83
    Remove libc-modules.h from the tree and auto-generate it from
147e83
    soversions.i and the list of modules in the built-modules variable
147e83
    defined in Makeconfig.  Macros generated have increasing numbered
147e83
    values, with built-modules having lower values starting from 1,
147e83
    following which a separator value LIBS_BEGIN is added and then finally
147e83
    the library names from soversions.i are appended to the list.  This
147e83
    allows us to conveniently differentiate between the versioned
147e83
    libraries and other built modules, which is needed in errno.h and
147e83
    netdb.h to decide whether to use an internal symbol or an external
147e83
    one.
147e83
    
147e83
    Verified that generated code remains unchanged on x86_64.
147e83
    
147e83
    	* Makeconfig (built-modules): List non-library modules to be
147e83
    	built.
147e83
    	(module-cppflags): Include libc-modules.h for
147e83
    	everything except shlib-versions.v.i.
147e83
    	(CPPFLAGS): Use it.
147e83
    	(before-compile): Add libc-modules.h.
147e83
    	($(common-objpfx)libc-modules.h,
147e83
    	$(common-objpfx)libc-modules.stmp): New targets.
147e83
    	(common-generated): Add libc-modules.h and libc-modules.stmp.
147e83
    	($(common-objpfx)Versions.v.i): Depend on libc-modules.h.
147e83
    	* include/libc-symbols.h: Don't include libc-modules.h.
147e83
    	* include/libc-modules.h: Remove file.
147e83
    	* scripts/gen-libc-modules.awk: New script to generate
147e83
    	libc-modules.h.
147e83
    	* sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls):
147e83
    	Depend on libc-modules.stmp.
147e83
147e83
commit 8a257e2cb50cd8e8e3e2368d80bf325ea4086cf9
147e83
Author: Roland McGrath <roland@hack.frob.com>
147e83
Date:   Thu Apr 9 14:42:29 2015 -0700
147e83
147e83
    Omit libc-modules.h for all .v.i files.
147e83
147e83
Index: glibc-2.17-c758a686/Makeconfig
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/Makeconfig
147e83
+++ glibc-2.17-c758a686/Makeconfig
147e83
@@ -730,19 +730,34 @@ endif	# $(+cflags) == ""
147e83
 # of many little headers in the include directory.
147e83
 libio-include = -I$(..)libio
147e83
 
147e83
+# List of non-library modules that we build.
147e83
+built-modules = iconvprogs iconvdata ldconfig lddlibc4 libmemusage \
147e83
+		libSegFault libpcprofile librpcsvc locale-programs \
147e83
+		memusagestat nonlib nscd extramodules libnldbl
147e83
+
147e83
 in-module = $(subst -,_,$(firstword $(libof-$(basename $(@F))) \
147e83
 				    $(libof-$(
147e83
 				    $(libof-$(@F)) \
147e83
 				    libc))
147e83
 
147e83
+module-cppflags-real = -include $(common-objpfx)libc-modules.h \
147e83
+		       -DIN_MODULE=MODULE_$(in-module)
147e83
+
147e83
+# We don't need libc-modules.h and the MODULE_NAME definition for .v.i
147e83
+# files.  These targets don't (and will likely never need to) use the IS_IN
147e83
+# facility.  In fact, shlib-versions should not use it because that will
147e83
+# create a circular dependency as libc-modules.h is generated from
147e83
+# shlib-versions.
147e83
+module-cppflags = $(if $(filter %.v.i,$(@F)),,$(module-cppflags-real))
147e83
+
147e83
 # These are the variables that the implicit compilation rules use.
147e83
 # Note that we can't use -std=* in CPPFLAGS, because it overrides
147e83
 # the implicit -lang-asm and breaks cpp behavior for .S files--notably
147e83
 # it causes cpp to stop predefining __ASSEMBLER__.
147e83
 CPPFLAGS = $(CPPUNDEFS) $(CPPFLAGS-config) $($(subdir)-CPPFLAGS) \
147e83
-	   $(+includes) $(defines) \
147e83
+	   $(+includes) $(defines) $(module-cppflags) \
147e83
 	   -include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
147e83
-	   $(CPPFLAGS-$(suffix $@)) -DIN_MODULE=MODULE_$(in-module) \
147e83
+	   $(CPPFLAGS-$(suffix $@)) \
147e83
 	   $(foreach lib,$(libof-$(basename $(@F))) \
147e83
 			 $(libof-$(
147e83
 	   $(CPPFLAGS-$(
147e83
@@ -922,6 +937,23 @@ endif
147e83
 postclean-generated += soversions.mk soversions.i \
147e83
 		       shlib-versions.v shlib-versions.v.i
147e83
 
147e83
+before-compile += $(common-objpfx)libc-modules.h
147e83
+ifeq ($(soversions.mk-done),t)
147e83
+# Generate a header with macro definitions for use with the IS_IN macro.
147e83
+# These are the possible values for the IN_MODULE macro defined when building
147e83
+# sources, to identify which module the translation unit is going to be built
147e83
+# into.
147e83
+$(common-objpfx)libc-modules.h: $(common-objpfx)libc-modules.stmp; @:
147e83
+$(common-objpfx)libc-modules.stmp: $(..)scripts/gen-libc-modules.awk \
147e83
+				   $(common-objpfx)soversions.i
147e83
+	$(AWK) -v buildlist="$(subst -,_,$(built-modules))" -f $^ > ${@:stmp=T}
147e83
+	$(move-if-change) ${@:stmp=T} ${@:stmp=h}
147e83
+	touch $@
147e83
+
147e83
+endif
147e83
+
147e83
+common-generated += libc-modules.h libc-modules.stmp
147e83
+
147e83
 # Generate the header containing the names of all shared libraries.
147e83
 # We use a stamp file to avoid unnecessary recompilations.
147e83
 before-compile += $(common-objpfx)gnu/lib-names.h
147e83
Index: glibc-2.17-c758a686/include/libc-modules.h
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/include/libc-modules.h
147e83
+++ /dev/null
147e83
@@ -1,41 +0,0 @@
147e83
-/* Valid values for the IN_MODULE macro, which is defined for each source file
147e83
-   during compilation to indicate which module it is to be built into.
147e83
-
147e83
-   TODO: This file should eventually be auto-generated.  */
147e83
-#define MODULE_libc		1
147e83
-#define MODULE_libpthread	2
147e83
-#define MODULE_rtld		3
147e83
-#define MODULE_libdl		4
147e83
-#define MODULE_libm		5
147e83
-#define MODULE_iconvprogs	6
147e83
-#define MODULE_iconvdata	7
147e83
-#define MODULE_lddlibc4		8
147e83
-#define MODULE_locale_programs	9
147e83
-#define MODULE_memusagestat	10
147e83
-#define MODULE_libutil		12
147e83
-#define MODULE_libBrokenLocale	13
147e83
-#define MODULE_libmemusage	15
147e83
-#define MODULE_libresolv	16
147e83
-#define MODULE_libnss_db	17
147e83
-#define MODULE_libnss_files	18
147e83
-#define	MODULE_libnss_dns	19
147e83
-#define MODULE_libnss_compat	20
147e83
-#define MODULE_libnss_hesiod	21
147e83
-#define MODULE_libnss_nis	22
147e83
-#define MODULE_libnss_nisplus	23
147e83
-#define MODULE_libanl		24
147e83
-#define MODULE_librt		25
147e83
-#define MODULE_libSegFault	26
147e83
-#define MODULE_libthread_db	27
147e83
-#define MODULE_libcidn		28
147e83
-#define MODULE_libcrypt		29
147e83
-#define MODULE_libnsl		30
147e83
-#define MODULE_libpcprofile	31
147e83
-#define MODULE_librpcsvc	32
147e83
-#define MODULE_nscd		33
147e83
-#define MODULE_ldconfig 	34
147e83
-#define MODULE_libnldbl 	35
147e83
-
147e83
-/* Catch-all for test modules and other binaries.  */
147e83
-#define MODULE_nonlib		98
147e83
-#define MODULE_extramodules	99
147e83
Index: glibc-2.17-c758a686/include/libc-symbols.h
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/include/libc-symbols.h
147e83
+++ glibc-2.17-c758a686/include/libc-symbols.h
147e83
@@ -20,9 +20,6 @@
147e83
 #ifndef _LIBC_SYMBOLS_H
147e83
 #define _LIBC_SYMBOLS_H	1
147e83
 
147e83
-/* Pull in definitions for the MODULE_* macros.  */
147e83
-#include <libc-modules.h>
147e83
-
147e83
 #define IS_IN(lib) (IN_MODULE == MODULE_##lib)
147e83
 
147e83
 /* This file's macros are included implicitly in the compilation of every
147e83
Index: glibc-2.17-c758a686/scripts/gen-libc-modules.awk
147e83
===================================================================
147e83
--- /dev/null
147e83
+++ glibc-2.17-c758a686/scripts/gen-libc-modules.awk
147e83
@@ -0,0 +1,34 @@
147e83
+# Generate a header file that defines the MODULE_* macros for each library and
147e83
+# module we build in glibc.  The library names are pulled in from soversions.i
147e83
+# and the additional modules are passed in the BUILDLIST variable.
147e83
+BEGIN {
147e83
+  # BUILDLIST is set from the build-list variable in Makeconfig and is a space
147e83
+  # separated list of non-library modules that we build in glibc.
147e83
+  num = split (buildlist, libs, " ")
147e83
+  # Separate the built modules from the libraries.
147e83
+  libs[++num] = "LIBS_BEGIN"
147e83
+}
147e83
+
147e83
+# Skip over comments.
147e83
+$1 == "#" {
147e83
+  next
147e83
+}
147e83
+
147e83
+# We have only one special case in soversions.i parsing, which is to replace ld
147e83
+# with rtld since that's what we call it throughout the sources.
147e83
+match (FILENAME, ".*soversions.i") {
147e83
+  name = $2
147e83
+  if (name == "ld")
147e83
+    name = "rtld"
147e83
+
147e83
+  # Library names are not duplicated in soversions.i.
147e83
+  libs[++num] = name
147e83
+}
147e83
+
147e83
+# Finally, print out the header file.
147e83
+END {
147e83
+  printf ("/* AUTOGENERATED BY gen-libc-modules.awk, DO NOT EDIT.  */\n\n")
147e83
+  for (l in libs) {
147e83
+    printf ("#define MODULE_%s %d\n", libs[l], l)
147e83
+  }
147e83
+}
147e83
Index: glibc-2.17-c758a686/sysdeps/unix/Makefile
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/sysdeps/unix/Makefile
147e83
+++ glibc-2.17-c758a686/sysdeps/unix/Makefile
147e83
@@ -77,7 +77,8 @@ compile-syscall = $(COMPILE.S) -o $@ -x
147e83
 
147e83
 ifndef avoid-generated
147e83
 $(common-objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
147e83
-			       $(wildcard $(+sysdep_dirs:%=%/syscalls.list))
147e83
+			       $(wildcard $(+sysdep_dirs:%=%/syscalls.list)) \
147e83
+			       $(common-objpfx)libc-modules.stmp
147e83
 	for dir in $(+sysdep_dirs); do \
147e83
 	  test -f $$dir/syscalls.list && \
147e83
 	  { sysdirs='$(sysdirs)' \