[BZ #715] cvs/fedora-glibc-20050211T1037
authorRoland McGrath <roland@gnu.org>
Fri, 11 Feb 2005 10:17:19 +0000 (10:17 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 11 Feb 2005 10:17:19 +0000 (10:17 +0000)
* Makefile (installed-stubs): New variable.
Set to $(inst_includedir)/gnu/stubs.h if $(biarch) is no,
or to $(inst_includedir)/gnu/stubs-$(biarch).h if otherwise.
[$(biarch) != no] (install-others-nosubdir): Add $(installed-stubs).
($(inst_includedir)/gnu/stubs.h): Use $(installed-stubs) for this
rule's target.
($(inst_includedir)/gnu/stubs.h): New target, install from ...
* include/stubs-biarch.h: New file.

* shlib-versions (i.86-.*-.*): Add WORDSIZE64 line mapping to x86_64.

* Makeconfig ($(common-objpfx)soversions.mk): Depend on Makeconfig.
Emit defn for variable `biarch'.

* include/stub-tag.h: Update comment.

ChangeLog
Makeconfig
Makefile
include/stub-tag.h
include/stubs-biarch.h [new file with mode: 0644]
shlib-versions

index af6789b..2be28ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
 2005-02-11  Roland McGrath  <roland@redhat.com>
 
+       [BZ #715]
+       * Makefile (installed-stubs): New variable.
+       Set to $(inst_includedir)/gnu/stubs.h if $(biarch) is no,
+       or to $(inst_includedir)/gnu/stubs-$(biarch).h if otherwise.
+       [$(biarch) != no] (install-others-nosubdir): Add $(installed-stubs).
+       ($(inst_includedir)/gnu/stubs.h): Use $(installed-stubs) for this
+       rule's target.
+       ($(inst_includedir)/gnu/stubs.h): New target, install from ...
+       * include/stubs-biarch.h: New file.
+
+       * shlib-versions (i.86-.*-.*): Add WORDSIZE64 line mapping to x86_64.
+
+       * Makeconfig ($(common-objpfx)soversions.mk): Depend on Makeconfig.
+       Emit defn for variable `biarch'.
+
+       * include/stub-tag.h: Update comment.
+
        * scripts/soversions.awk: Fix default version set handling.
 
 2005-02-10  Roland McGrath  <roland@redhat.com>
index 3060532..4c3a4e3 100644 (file)
@@ -792,8 +792,10 @@ $(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
               -v os='$(config-os)' \
               -f $^ > $@T
        mv -f $@T $@
-$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i
-       (while read which lib number setname; do \
+$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
+       (seen_DEFAULT=0; seen_WORDSIZE32=0; seen_WORDSIZE64=0; \
+        while read which lib number setname; do \
+          eval seen_$$which=1; \
           test x"$$which" = xDEFAULT || continue; \
           case $$number in \
             [0-9]*) echo "$$lib.so-version=.$$number"; \
@@ -802,6 +804,12 @@ $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i
                     echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
           esac; \
         done; \
+        case "$$seen_DEFAULT$$seen_WORDSIZE32$$seen_WORDSIZE64" in \
+          100) echo biarch = no;; \
+          101) echo biarch = 32;; \
+          ?1?) echo biarch = 64;; \
+          *) echo >&2 BUG; exit 2;; \
+        esac; \
         echo soversions.mk-done = t;) < $< > $@T; exit 0
        mv -f $@T $@
 endif
index c2f4ae3..dc7a6f1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -157,13 +157,25 @@ others: $(common-objpfx)testrun.sh
 
 subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
 
+ifeq ($(biarch),no)
+installed-stubs = $(inst_includedir)/gnu/stubs.h
+else
+installed-stubs = $(inst_includedir)/gnu/stubs-$(biarch).h
+
+$(inst_includedir)/gnu/stubs.h: include/stubs-biarch.h $(+force)
+       $(INSTALL_DATA) $< $@
+
+install-others-nosubdir: $(installed-stubs)
+endif
+
+
 # Since stubs.h is never needed when building the library, we simplify the
 # hairy installation process by producing it in place only as the last part
 # of the top-level `make install'.  It depends on subdir_install, which
 # iterates over all the subdirs; subdir_install in each subdir depends on
 # the subdir's stubs file.  Having more direct dependencies would result in
 # extra iterations over the list for subdirs and many recursive makes.
-$(inst_includedir)/gnu/stubs.h: include/stubs-prologue.h subdir_install
+$(installed-stubs): include/stubs-prologue.h subdir_install
        $(make-target-directory)
        @rm -f $(objpfx)stubs.h
        (sed '/^@/d' $<; LC_ALL=C sort $(subdir-stubs)) > $(objpfx)stubs.h
index 3004d6f..d4d10c8 100644 (file)
@@ -1,5 +1,4 @@
 /* This header is included into every file that declares a stub function.
- * The build process looks for this header in .d files to decide whether
- * or not it needs to scan the corresponding .c file for entries to add to
- * <gnu/stubs.h>.
- */
+   It is obsolete now, but hasn't died to avoid removing all those
+   #include's.  Every such file should use the `stub_warning' macro for
+   each of its functions, and that is sufficient.  */
diff --git a/include/stubs-biarch.h b/include/stubs-biarch.h
new file mode 100644 (file)
index 0000000..fc086bd
--- /dev/null
@@ -0,0 +1,12 @@
+/* This file selects the right generated file of `__stub_FUNCTION' macros
+   based on the architecture being compiled for.  */
+
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 32
+# include <gnu/stubs-32.h>
+#elif __WORDSIZE == 64
+# include <gnu/stubs-64.h>
+#else
+# error "unexpected value for __WORDSIZE macro"
+#endif
index aaeb966..58e923e 100644 (file)
@@ -35,6 +35,7 @@ powerpc64-.*-linux.*  DEFAULT                 GLIBC_2.3
 # Configuration                WORDSIZE[32|64]         Alternate configuration
 # -------------                ----------              -----------------------
 x86_64-.*-.*           WORDSIZE32              i686-@VENDOR@-@OS@
+i.86-.*-.*             WORDSIZE64              x86_64-@VENDOR@-@OS@
 s390x-.*-.*            WORDSIZE32              s390-@VENDOR@-@OS@
 s390-.*-.*             WORDSIZE64              s390x-@VENDOR@-@OS@
 powerpc64-.*-.*                WORDSIZE32              powerpc-@VENDOR@-@OS@