diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | libio/iofopncook.c | 12 | ||||
-rw-r--r-- | libio/libioP.h | 2 | ||||
-rw-r--r-- | libio/vtables.c | 2 |
4 files changed, 25 insertions, 0 deletions
@@ -1,3 +1,12 @@ +2016-07-06 Samuel Thibault <samuel.thibault@ens-lyon.org> + + * libio/iofopncook.c (_IO_cookie_read, _IO_cookie_write, + _IO_cookie_seek, _IO_cookie_close, _IO_old_cookie_seek) + [!PTR_DEMANGLE]: Do not call PTR_DEMANGLE. + (set_callbacks) [!PTR_MANGLE]: Do not call PTR_MANGLE. + * libio/libioP.h (IO_set_accept_foreign_vtables) + [!PTR_MANGLE]: Do not call PTR_MANGLE. + 2016-07-05 H.J. Lu <hongjiu.lu@intel.com> [BZ #20314] diff --git a/libio/iofopncook.c b/libio/iofopncook.c index ae5df17..0d05fe6 100644 --- a/libio/iofopncook.c +++ b/libio/iofopncook.c @@ -44,7 +44,9 @@ _IO_cookie_read (_IO_FILE *fp, void *buf, _IO_ssize_t size) { struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp; cookie_read_function_t *read_cb = cfile->__io_functions.read; +#ifdef PTR_DEMANGLE PTR_DEMANGLE (read_cb); +#endif if (read_cb == NULL) return -1; @@ -57,7 +59,9 @@ _IO_cookie_write (_IO_FILE *fp, const void *buf, _IO_ssize_t size) { struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp; cookie_write_function_t *write_cb = cfile->__io_functions.write; +#ifdef PTR_DEMANGLE PTR_DEMANGLE (write_cb); +#endif if (write_cb == NULL) { @@ -77,7 +81,9 @@ _IO_cookie_seek (_IO_FILE *fp, _IO_off64_t offset, int dir) { struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp; cookie_seek_function_t *seek_cb = cfile->__io_functions.seek; +#ifdef PTR_DEMANGLE PTR_DEMANGLE (seek_cb); +#endif return ((seek_cb == NULL || (seek_cb (cfile->__cookie, &offset, dir) @@ -91,7 +97,9 @@ _IO_cookie_close (_IO_FILE *fp) { struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp; cookie_close_function_t *close_cb = cfile->__io_functions.close; +#ifdef PTR_DEMANGLE PTR_DEMANGLE (close_cb); +#endif if (close_cb == NULL) return 0; @@ -140,10 +148,12 @@ static void set_callbacks (_IO_cookie_io_functions_t *target, _IO_cookie_io_functions_t source) { +#ifdef PTR_MANGLE PTR_MANGLE (source.read); PTR_MANGLE (source.write); PTR_MANGLE (source.seek); PTR_MANGLE (source.close); +#endif *target = source; } @@ -228,7 +238,9 @@ _IO_old_cookie_seek (_IO_FILE *fp, _IO_off64_t offset, int dir) struct _IO_cookie_file *cfile = (struct _IO_cookie_file *) fp; int (*seek_cb) (_IO_FILE *, _IO_off_t, int) = (int (*) (_IO_FILE *, _IO_off_t, int)) cfile->__io_functions.seek;; +#ifdef PTR_DEMANGLE PTR_DEMANGLE (seek_cb); +#endif if (seek_cb == NULL) return _IO_pos_BAD; diff --git a/libio/libioP.h b/libio/libioP.h index 54dc35c..3e12876 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -906,7 +906,9 @@ extern void (*IO_accept_foreign_vtables) (void) attribute_hidden; static inline void IO_set_accept_foreign_vtables (void (*flag) (void)) { +#ifdef PTR_MANGLE PTR_MANGLE (flag); +#endif atomic_store_relaxed (&IO_accept_foreign_vtables, flag); } diff --git a/libio/vtables.c b/libio/vtables.c index e364ea0..b361f44 100644 --- a/libio/vtables.c +++ b/libio/vtables.c @@ -41,7 +41,9 @@ _IO_vtable_check (void) #ifdef SHARED /* Honor the compatibility flag. */ void (*flag) (void) = atomic_load_relaxed (&IO_accept_foreign_vtables); +#ifdef PTR_DEMANGLE PTR_DEMANGLE (flag); +#endif if (flag == &_IO_vtable_check) return; |