summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/head/glob.h11
-rw-r--r--usr/src/lib/libc/Makefile.targ6
-rw-r--r--usr/src/lib/libc/i386/Makefile.com7
-rw-r--r--usr/src/lib/libc/port/mapfile-vers8
-rw-r--r--usr/src/lib/libc/port/regex/glob.c17
-rw-r--r--usr/src/lib/libc/sparc/Makefile.com7
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