diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2015-04-18 22:26:49 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2015-04-18 22:26:49 +0300 |
commit | 4099793c02b840a26c3e7a83075a126028ce6b86 (patch) | |
tree | 81607fa836f1fa55e10c6ac4643f65f4945fa3e5 | |
parent | 2055b03fe5b26e70a69fe06b93798fb4eac1fbaf (diff) | |
download | illumos-packaging-4099793c02b840a26c3e7a83075a126028ce6b86.tar.gz |
struct-tm.patch: use redefine_extname
-rw-r--r-- | libc/debian/changelog | 2 | ||||
-rw-r--r-- | libc/debian/patches/series | 2 | ||||
-rw-r--r-- | libc/debian/patches/struct-tm.patch | 106 |
3 files changed, 79 insertions, 31 deletions
diff --git a/libc/debian/changelog b/libc/debian/changelog index 2941fc2..cdb4f1f 100644 --- a/libc/debian/changelog +++ b/libc/debian/changelog @@ -2,6 +2,8 @@ libc (4.3+17) UNRELEASED; urgency=medium * debian/patches/__time_t.patch: define __time_t == time_t in time.h for nano + * debian/patches/struct-tm.patch: use redefine_extname instead of + macros: /usr/include/c++/4.9/ctime undefines our macros -- Igor Pashev <pashev.igor@gmail.com> Thu, 02 Apr 2015 23:00:37 +0300 diff --git a/libc/debian/patches/series b/libc/debian/patches/series index 7e06083..fd57eea 100644 --- a/libc/debian/patches/series +++ b/libc/debian/patches/series @@ -115,7 +115,6 @@ rpc_gss.patch no-unwind.patch string-strings.patch gnu-basename.patch -struct-tm.patch i386-regset.patch libnsl-getdomainname.patch remove-statfs.patch @@ -131,3 +130,4 @@ features.patch libld-reg.patch rtld-mmapobj.patch __time_t.patch +struct-tm.patch diff --git a/libc/debian/patches/struct-tm.patch b/libc/debian/patches/struct-tm.patch index fa0f781..7a90175 100644 --- a/libc/debian/patches/struct-tm.patch +++ b/libc/debian/patches/struct-tm.patch @@ -14,7 +14,7 @@ Index: libc/usr/src/head/iso/time_iso.h #ifdef __cplusplus extern "C" { -@@ -94,8 +94,17 @@ struct tm { /* see ctime(3) */ +@@ -94,9 +94,15 @@ struct tm { /* see ctime(3) */ int tm_wday; int tm_yday; int tm_isdst; @@ -27,11 +27,33 @@ Index: libc/usr/src/head/iso/time_iso.h +#endif }; -+#undef mktime -+#define mktime __gnu_mktime - +- #if defined(__STDC__) + extern char *asctime(const struct tm *); +@@ -105,11 +111,21 @@ extern char *ctime(const time_t *); + extern double difftime(time_t, time_t); + extern struct tm *gmtime(const time_t *); + extern struct tm *localtime(const time_t *); +-extern time_t mktime(struct tm *); + extern time_t time(time_t *); + extern size_t strftime(char *_RESTRICT_KYWD, size_t, const char *_RESTRICT_KYWD, + const struct tm *_RESTRICT_KYWD); + ++#ifndef __IN_LIBC ++#ifdef __PRAGMA_REDEFINE_EXTNAME ++extern time_t mktime(struct tm *); ++#pragma redefine_extname mktime __gnu_mktime ++#else ++static time_t mktime(struct tm *___tm) { ++ return __gnu_mktime(___tm); ++} ++#endif ++#endif /* __IN_LIBC */ ++ + #else /* __STDC__ */ + + extern char *asctime(); Index: libc/usr/src/head/time.h =================================================================== --- libc.orig/usr/src/head/time.h @@ -45,43 +67,67 @@ Index: libc/usr/src/head/time.h #include <iso/time_iso.h> #if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ (_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__) -@@ -80,6 +80,10 @@ typedef int timer_t; +@@ -85,10 +85,27 @@ typedef int timer_t; #if defined(__EXTENSIONS__) || \ (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ (_POSIX_C_SOURCE - 0 >= 199506L) || defined(_REENTRANT) -+#undef gmtime_r -+#undef localtime_r -+#define gmtime_r __gnu_gmtime_r -+#define localtime_r __gnu_localtime_r ++ ++#ifndef __IN_LIBC ++#ifdef __PRAGMA_REDEFINE_EXTNAME extern struct tm *gmtime_r(const time_t *_RESTRICT_KYWD, struct tm *_RESTRICT_KYWD); extern struct tm *localtime_r(const time_t *_RESTRICT_KYWD, -@@ -178,6 +182,8 @@ extern int daylight; + struct tm *_RESTRICT_KYWD); ++#pragma redefine_extname gmtime_r __gnu_gmtime_r ++#pragma redefine_extname localtime_r __gnu_localtime_r ++#else /* ! __PRAGMA_REDEFINE_EXTNAME */ ++static struct tm *gmtime_r(const time_t *_RESTRICT_KYWD __t, ++ struct tm *_RESTRICT_KYWD __tm) { ++ return __gnu_gmtime_r(__t, __tm); ++} ++static struct tm *localtime_r(const time_t *_RESTRICT_KYWD __t, ++ struct tm *_RESTRICT_KYWD __tm) { ++ return __gnu_localtime_r(__t, __tm); ++} ++#endif /* __PRAGMA_REDEFINE_EXTNAME */ ++#endif /* __IN_LIBC */ ++ + #endif + + #if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ +@@ -183,7 +200,18 @@ extern int daylight; #if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ defined(__EXTENSIONS__) -+#undef timegm -+#define timegm __gnu_timegm ++ ++#ifndef __IN_LIBC ++#ifdef __PRAGMA_REDEFINE_EXTNAME extern time_t timegm(struct tm *); ++#pragma redefine_extname timegm __gnu_timegm ++#else /* ! __PRAGMA_REDEFINE_EXTNAME */ ++static time_t timegm(struct tm *__tm) { ++ return __gnu_timegm(__tm); ++} ++#endif /* __PRAGMA_REDEFINE_EXTNAME */ ++#endif /* __IN_LIBC */ ++ extern int cftime(char *, char *, const time_t *); extern int ascftime(char *, const char *, const struct tm *); + extern long altzone; Index: libc/usr/src/lib/libc/port/gen/localtime.c =================================================================== --- libc.orig/usr/src/lib/libc/port/gen/localtime.c +++ libc/usr/src/lib/libc/port/gen/localtime.c -@@ -117,6 +117,11 @@ - #include <sys/stat.h> - #include <sys/mman.h> - -+#undef gmtime_r -+#undef localtime_r -+#undef mktime -+#undef timegm +@@ -88,6 +88,8 @@ + * Functions that are common to ctime(3C) and cftime(3C) + */ + + - /* JAN_01_1902 cast to (int) - negative number of seconds from 1970 */ - #define JAN_01_1902 (int)0x8017E880 - #define LEN_TZDIR (sizeof (TZDIR) - 1) -@@ -488,6 +493,14 @@ gmtime_r(const time_t *timep, struct tm ++#define __IN_LIBC + #pragma weak _tzset = tzset + + #undef TZDIR +@@ -488,6 +490,14 @@ gmtime_r(const time_t *timep, struct tm return (offtime_u((time_t)*timep, 0L, p_tm)); } @@ -96,7 +142,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c /* * Accepts a time_t, returns a tm struct based on it, with * no local timezone adjustment. -@@ -507,7 +520,7 @@ gmtime(const time_t *timep) +@@ -507,7 +517,7 @@ gmtime(const time_t *timep) if (p_tm == NULL) /* memory allocation failure */ p_tm = &tm; /* use static buffer and hope for the best */ @@ -105,7 +151,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c } /* -@@ -649,6 +662,34 @@ localtime_r(const time_t *timep, struct +@@ -649,6 +659,34 @@ localtime_r(const time_t *timep, struct return (rt); } @@ -140,7 +186,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c /* * Accepts a time_t, returns a tm struct based on it, correcting * for the local timezone. Produces documented side-effects to -@@ -673,7 +714,7 @@ localtime(const time_t *timep) +@@ -673,7 +711,7 @@ localtime(const time_t *timep) if (p_tm == NULL) /* memory allocation failure */ p_tm = &tm; /* use static buffer and hope for the best */ @@ -149,7 +195,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c } /* -@@ -682,7 +723,7 @@ localtime(const time_t *timep) +@@ -682,7 +720,7 @@ localtime(const time_t *timep) * extern global zone state variables. (See mktime(3C)). */ static time_t @@ -158,7 +204,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c { struct tm _tm; long long t; /* must hold more than 32-bit time_t */ -@@ -823,7 +864,19 @@ mktime1(struct tm *tmptr, int usetz) +@@ -823,7 +861,19 @@ mktime1(struct tm *tmptr, int usetz) mketimerrno = EOVERFLOW; t = -1; } else { @@ -179,7 +225,7 @@ Index: libc/usr/src/lib/libc/port/gen/localtime.c } lmutex_unlock(&_time_lock); -@@ -837,15 +890,26 @@ mktime1(struct tm *tmptr, int usetz) +@@ -837,15 +887,26 @@ mktime1(struct tm *tmptr, int usetz) time_t mktime(struct tm *tmptr) { |