diff options
-rw-r--r-- | ChangeLog | 29 | ||||
-rw-r--r-- | Makerules | 2 | ||||
-rwxr-xr-x | config.guess | 3 | ||||
-rwxr-xr-x | config.sub | 2 | ||||
-rw-r--r-- | elf/dl-lookup.c | 8 | ||||
-rw-r--r-- | elf/dl-version.c | 1 | ||||
-rw-r--r-- | elf/dlvsym.c | 1 | ||||
-rw-r--r-- | elf/link.h | 1 | ||||
-rw-r--r-- | math/Makefile | 9 | ||||
-rw-r--r-- | math/test-matherr.c | 23 | ||||
-rw-r--r-- | sysdeps/posix/Makefile | 8 | ||||
-rw-r--r-- | sysdeps/posix/mk-stdiolim.c | 32 |
12 files changed, 85 insertions, 34 deletions
@@ -1,3 +1,32 @@ +1997-06-26 02:06 Ulrich Drepper <drepper@cygnus.com> + + * Makerules ($(common-objpfx)libc.so): Use $(load-map-file) in + dependency, not $(libc-map). + + * sysdeps/posix/mk-stdiolim.c: Pretty print. + +1997-06-25 15:54 Fila Kolodny <fila@ibi.com> + + * sysdeps/posix/Makefile ($(common-objpfx)bits/stdio_lim.h): Don't + conditionalize this on whether we are cross-compiling. + +1997-06-21 15:47 H.J. Lu <hjl@gnu.ai.mit.edu> + + * elf/dl-lookup.c (do_lookup): Use default definition + for a default versioned symbol. + + * elf/dl-version.c (_dl_check_map_versions): Set the hidden field. + + * elf/dlvsym.c (__dlvsym): Set the hidden field to 1. + + * elf/link.h (r_found_version): Add the hidden field. + + * math/test-matherr.c: New file. + + * math/Makefile (tests): Add test-matherr. + (libm-support): Put back s_matherr. + (static-only-routines, aux): Remove s_matherr. + 1997-06-23 23:39 Ulrich Drepper <drepper@cygnus.com> * string/Makefile (headers): Change bytesex.h to bits/endian.h. @@ -383,7 +383,7 @@ libc-map = $(..)libc.map $(common-objpfx)libc.so: $(elfobjdir)/soinit.so \ $(common-objpfx)libc_pic.a \ $(elfobjdir)/sofini.so $(elfobjdir)/ld.so \ - $(libc-map) + $(load-map-file) $(build-shlib) ifdef libc.so-version $(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so diff --git a/config.guess b/config.guess index c4bca5f..c22925b 100755 --- a/config.guess +++ b/config.guess @@ -613,6 +613,9 @@ EOF mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} @@ -150,7 +150,7 @@ case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ - | arme[lb] | pyramid \ + | arme[lb] | pyramid | mn10200 | mn10300 \ | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ | alpha | we32k | ns16k | clipper | i370 | sh \ | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c index 15da23d..4cc1f2d 100644 --- a/elf/dl-lookup.c +++ b/elf/dl-lookup.c @@ -151,10 +151,12 @@ do_lookup (const char *undef_name, unsigned long int hash, } else { - /* We can match the version information. */ + /* We can match the version information or use the + default one. */ ElfW(Half) ndx = verstab[symidx] & 0x7fff; - if (map->l_versions[ndx].hash != version->hash - || strcmp (map->l_versions[ndx].name, version->name)) + if ((map->l_versions[ndx].hash != version->hash + || strcmp (map->l_versions[ndx].name, version->name)) + && (version->hidden || map->l_versions[ndx].hash)) /* It's not the version we want. */ continue; } diff --git a/elf/dl-version.c b/elf/dl-version.c index f7df980..d06fd5c 100644 --- a/elf/dl-version.c +++ b/elf/dl-version.c @@ -274,6 +274,7 @@ _dl_check_map_versions (struct link_map *map, int verbose) { ElfW(Half) ndx = aux->vna_other & 0x7fff; map->l_versions[ndx].hash = aux->vna_hash; + map->l_versions[ndx].hidden = aux->vna_other & 0x8000; map->l_versions[ndx].name = &strtab[aux->vna_name]; map->l_versions[ndx].filename = &strtab[ent->vn_file]; diff --git a/elf/dlvsym.c b/elf/dlvsym.c index ca8e25d..18cb892 100644 --- a/elf/dlvsym.c +++ b/elf/dlvsym.c @@ -95,6 +95,7 @@ __dlvsym (void *handle, const char *name, const char *version_str) /* Compute hash value to the version string. */ args.version.name = version_str; + args.version.hidden = 1; args.version.hash = _dl_elf_hash (version_str); /* We don't have a specific file where the symbol can be found. */ args.version.filename = NULL; @@ -87,6 +87,7 @@ struct r_found_version const char *name; ElfW(Word) hash; + int hidden; const char *filename; }; diff --git a/math/Makefile b/math/Makefile index 4f2537d..5a86f92 100644 --- a/math/Makefile +++ b/math/Makefile @@ -29,9 +29,7 @@ headers := math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.h \ distribute := math_private.h machine/asm.h machine/endian.h # FPU support code. -aux := fpu_control setfpucw s_matherr - -static-only-routines := s_matherr +aux := fpu_control setfpucw # Build the -lm library. @@ -40,7 +38,7 @@ extra-libs-others = $(extra-libs) libm-map := libm.map -libm-support = k_standard s_lib_version s_signgam \ +libm-support = k_standard s_lib_version s_matherr s_signgam \ s_lrint s_llrint s_lround s_llround \ fclrexcpt fgetexcptflg fraiseexcpt fsetexcptflg \ ftestexcept fegetround fesetround fegetenv feholdexcpt \ @@ -79,7 +77,7 @@ distribute += $(long-c-yes:=.c) # Rules for the test suite. tests = test-float test-double $(test-longdouble-$(long-double-fcts)) \ - test-ifloat test-idouble + test-ifloat test-idouble test-matherr # We do the `long double' tests only if this data type is available and # distrinct from `double'. # @@ -95,6 +93,7 @@ LDLIBS-test-ildoubl = libm LDLIBS-test-float = libm LDLIBS-test-double = libm LDLIBS-test-ldouble = libm +LDLIBS-test-matherr = libm distribute += libm-test.c diff --git a/math/test-matherr.c b/math/test-matherr.c new file mode 100644 index 0000000..91657a8 --- /dev/null +++ b/math/test-matherr.c @@ -0,0 +1,23 @@ +#undef _SVID_SOURCE +#define _SVID_SOURCE +#include <math.h> +#include <stdio.h> +#include <stdlib.h> + +static int fail = 1; + +int +matherr (struct exception *s) +{ + printf ("matherr is working\n"); + fail = 0; + return 1; +} + +int +main (void) +{ + _LIB_VERSION = _SVID_; + acos (2.0); + return fail; +} diff --git a/sysdeps/posix/Makefile b/sysdeps/posix/Makefile index 358114a..7806e4e 100644 --- a/sysdeps/posix/Makefile +++ b/sysdeps/posix/Makefile @@ -19,17 +19,9 @@ ifneq (yes,$(inhibit-stdio_lim)) # Disable these rules if we generate stdio_lim.h by other means. -ifeq (yes,$(cross-compiling)) -$(common-objpfx)bits/stdio_lim.h: - @echo - @echo "You must build <bits/stdio_lim.h> by hand. Stop." - @echo - @exit 1 -else $(common-objpfx)bits/stdio_lim.h: $(common-objpfx)mk-stdiolim $(dir $<)$(notdir $<) > $@-t mv $@-t $@ -endif # Turn into a version that works when cd'd into $(objdir). mk-stdiolim-CFLAGS = $(patsubst -I$(shell pwd)//%,-I/%,\ diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c index 8491624..7009c4e 100644 --- a/sysdeps/posix/mk-stdiolim.c +++ b/sysdeps/posix/mk-stdiolim.c @@ -23,49 +23,49 @@ main() { /* These values correspond to the code in sysdeps/posix/tempname.c. Change the values here if you change that code. */ - printf("#define L_tmpnam %u\n", sizeof("/usr/tmp/") + 9); - printf("#define TMP_MAX %u\n", 62 * 62 * 62); + printf ("#define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9); + printf ("#define TMP_MAX %u\n", 62 * 62 * 62); - puts ("#ifdef __USE_POSIX"); - printf("#define L_ctermid %u\n", sizeof("/dev/tty")); - printf("#define L_cuserid 9\n"); - puts ("#endif"); + puts ("#ifdef __USE_POSIX"); + printf ("# define L_ctermid %u\n", sizeof ("/dev/tty")); + printf ("# define L_cuserid 9\n"); + puts ("#endif"); /* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so <bits/local_lim.h> will not define them if they are run-time - variant (which is the case in the Hurd). ANSI still requires + variant (which is the case in the Hurd). ISO still requires that FOPEN_MAX and FILENAME_MAX be defined, however. */ - printf("#define FOPEN_MAX %u\n", + printf ("#define FOPEN_MAX %u\n", #ifdef OPEN_MAX - OPEN_MAX + OPEN_MAX #else /* This is the minimum number of files that the implementation guarantees can be open simultaneously. OPEN_MAX not being defined means the maximum is run-time variant; but POSIX.1 requires that it never be less than _POSIX_OPEN_MAX, so that is a good minimum to use. */ - _POSIX_OPEN_MAX + _POSIX_OPEN_MAX #endif - ); + ); - printf("#define FILENAME_MAX %u\n", + printf ("#define FILENAME_MAX %u\n", #ifdef PATH_MAX - PATH_MAX + PATH_MAX #else /* This is supposed to be the size needed to hold the longest file name string the implementation guarantees can be opened. PATH_MAX not being defined means the actual limit on the length - of a file name is runtime-variant (or it is unlimited). ANSI + of a file name is runtime-variant (or it is unlimited). ISO says in such a case FILENAME_MAX should be a good size to allocate for a file name string. POSIX.1 guarantees that a file name up to _POSIX_PATH_MAX chars long can be opened, so this value must be at least that. */ - 1024 /* _POSIX_PATH_MAX is 255. */ + 1024 /* _POSIX_PATH_MAX is 255. */ #endif - ); + ); exit(0); } |