diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | Makeconfig | 12 | ||||
-rw-r--r-- | Makefile | 14 | ||||
-rw-r--r-- | include/stub-tag.h | 7 | ||||
-rw-r--r-- | include/stubs-biarch.h | 12 | ||||
-rw-r--r-- | shlib-versions | 1 |
6 files changed, 56 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index af6789bc43..2be28bacb5 100644 --- 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> diff --git a/Makeconfig b/Makeconfig index 306053241d..4c3a4e344c 100644 --- a/Makeconfig +++ b/Makeconfig @@ -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 diff --git a/Makefile b/Makefile index c2f4ae32a5..dc7a6f177a 100644 --- 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 diff --git a/include/stub-tag.h b/include/stub-tag.h index 3004d6f429..d4d10c8341 100644 --- a/include/stub-tag.h +++ b/include/stub-tag.h @@ -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 index 0000000000..fc086bd894 --- /dev/null +++ b/include/stubs-biarch.h @@ -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 diff --git a/shlib-versions b/shlib-versions index aaeb9669b2..58e923e717 100644 --- a/shlib-versions +++ b/shlib-versions @@ -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@ |