diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/head/glob.h | 11 | ||||
-rw-r--r-- | usr/src/lib/libc/Makefile.targ | 6 | ||||
-rw-r--r-- | usr/src/lib/libc/i386/Makefile.com | 7 | ||||
-rw-r--r-- | usr/src/lib/libc/port/mapfile-vers | 8 | ||||
-rw-r--r-- | usr/src/lib/libc/port/regex/glob.c | 17 | ||||
-rw-r--r-- | usr/src/lib/libc/sparc/Makefile.com | 7 |
6 files changed, 55 insertions, 1 deletions
diff --git a/usr/src/head/glob.h b/usr/src/head/glob.h index 6396682cbf..83bb998563 100644 --- a/usr/src/head/glob.h +++ b/usr/src/head/glob.h @@ -152,12 +152,23 @@ typedef struct glob_t { #define GLOB_ABORTED (-1) /* GLOB_ERR set or errfunc return!=0 */ #define GLOB_ABEND GLOB_ABORTED /* backward compatibility */ + #ifdef __PRAGMA_REDEFINE_EXTNAME +#if !defined(_LP64) && _FILE_OFFSET_BITS == 64 +#pragma redefine_extname glob _glob_ext64 +#pragma redefine_extname globfree _globfree_ext64 +#else #pragma redefine_extname glob _glob_ext #pragma redefine_extname globfree _globfree_ext +#endif /* !_LP64 && _FILE_OFFSET_BITS == 64 */ #else /* __PRAGMA_REDEFINE_EXTNAME */ +#if !defined(_LP64) && _FILE_OFFSET_BITS == 64 +#define glob _glob_ext64 +#define globfree _globfree_ext64 +#else #define glob _glob_ext #define globfree _globfree_ext +#endif /* !_LP64 && _FILE_OFFSET_BITS == 64 */ #endif /* __PRAGMA_REDEFINE_EXTNAME */ extern int glob(const char *_RESTRICT_KYWD, int, int(*)(const char *, int), diff --git a/usr/src/lib/libc/Makefile.targ b/usr/src/lib/libc/Makefile.targ index 2322885346..9f9f6d2dfb 100644 --- a/usr/src/lib/libc/Makefile.targ +++ b/usr/src/lib/libc/Makefile.targ @@ -127,6 +127,12 @@ pics/%64.o: $(LIBCBASE)/../port/print/%.c $(COMPILE.c) -o $@ $< $(POST_PROCESS_O) +pics/%64.o: $(LIBCBASE)/../port/regex/%.c + $(COMPILE.c) -DM_I18N_MB -DI18N \ + -I$(LIBCBASE)/../port/regex \ + -I$(LIBCBASE)/../port/gen -o $@ $< + $(POST_PROCESS_O) + pics/%64.o: $(LIBCBASE)/../port/stdio/%.c $(COMPILE.c) -o $@ $< $(POST_PROCESS_O) diff --git a/usr/src/lib/libc/i386/Makefile.com b/usr/src/lib/libc/i386/Makefile.com index 25ba0a2743..4ebd6473a9 100644 --- a/usr/src/lib/libc/i386/Makefile.com +++ b/usr/src/lib/libc/i386/Makefile.com @@ -962,6 +962,9 @@ PORTREGEX= \ regex.o \ wordexp.o +PORTREGEX64= \ + glob64.o + MOSTOBJS= \ $(STRETS) \ $(CRTOBJS) \ @@ -984,6 +987,7 @@ MOSTOBJS= \ $(PORTPRINT_C89) \ $(PORTPRINT_W) \ $(PORTREGEX) \ + $(PORTREGEX64) \ $(PORTSTDIO) \ $(PORTSTDIO64) \ $(PORTSTDIO_C89) \ @@ -1216,6 +1220,9 @@ $(SYSOBJS64:%=pics/%) := \ $(PORTGEN64:%=pics/%) := \ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +$(PORTREGEX64:%=pics/%) := \ + CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 + $(PORTSTDIO64:%=pics/%) := \ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 diff --git a/usr/src/lib/libc/port/mapfile-vers b/usr/src/lib/libc/port/mapfile-vers index a0e21e250f..f7f6e6a137 100644 --- a/usr/src/lib/libc/port/mapfile-vers +++ b/usr/src/lib/libc/port/mapfile-vers @@ -93,6 +93,14 @@ $if _x86 && _ELF64 $add amd64 $endif +SYMBOL_VERSION ILLUMOS_0.17 { # glob(3C) LFS +$if lf64 + protected: + _glob_ext64; + _globfree_ext64; +$endif +} ILLUMOS_0.16; + SYMBOL_VERSION ILLUMOS_0.16 { # timerfd protected: timerfd_create; diff --git a/usr/src/lib/libc/port/regex/glob.c b/usr/src/lib/libc/port/regex/glob.c index 425f9c8724..642d4f67d2 100644 --- a/usr/src/lib/libc/port/regex/glob.c +++ b/usr/src/lib/libc/port/regex/glob.c @@ -106,6 +106,19 @@ extern int old_glob(const char *, int, int (*)(const char *, int), old_glob_t *); extern void old_globfree(old_glob_t *); +/* + * The various extensions to glob(3C) allow for stat and dirent structures to + * show up whose size may change in a largefile environment. If libc defines + * _FILE_OFFSET_BITS to be 64 that is the key to indicate that we're building + * the LFS version of this file. As such, we rename the public functions here, + * _glob_ext() and _globfree_ext() to have a 64 suffix. When building the LFS + * version, we do not include the old versions. + */ +#if !defined(_LP64) && _FILE_OFFSET_BITS == 64 +#define _glob_ext _glob_ext64 +#define _globfree_ext _globfree_ext64 +#endif /* !_LP64 && _FILE_OFFSET_BITS == 64 */ + #define DOLLAR '$' #define DOT '.' #define EOS '\0' @@ -1261,6 +1274,8 @@ g_Ctoc(const wcat_t *str, char *buf, uint_t len) return (1); } +#if defined(_LP64) || _FILE_OFFSET_BITS != 64 + /* glob() function with legacy glob structure */ int old_glob(const char *pattern, int flags, int (*errfunc)(const char *, int), @@ -1333,4 +1348,4 @@ old_globfree(old_glob_t *pglob) } -/* End */ +#endif /* _LP64 || _FILE_OFFSET_BITS != 64 */ diff --git a/usr/src/lib/libc/sparc/Makefile.com b/usr/src/lib/libc/sparc/Makefile.com index 94036d831e..2228bc848a 100644 --- a/usr/src/lib/libc/sparc/Makefile.com +++ b/usr/src/lib/libc/sparc/Makefile.com @@ -996,6 +996,9 @@ PORTREGEX= \ regex.o \ wordexp.o +PORTREGEX64= \ + glob64.o + VALUES= values-Xa.o MOSTOBJS= \ @@ -1021,6 +1024,7 @@ MOSTOBJS= \ $(PORTPRINT_C89) \ $(PORTPRINT_W) \ $(PORTREGEX) \ + $(PORTREGEX64) \ $(PORTSTDIO) \ $(PORTSTDIO64) \ $(PORTSTDIO_C89) \ @@ -1280,6 +1284,9 @@ $(SYSOBJS64:%=pics/%) := \ $(PORTGEN64:%=pics/%) := \ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +$(PORTREGEX64:%=pics/%) := \ + CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 + $(PORTSTDIO64:%=pics/%) := \ CPPFLAGS += -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 |