diff options
Diffstat (limited to 'lib/tevent')
-rw-r--r-- | lib/tevent/Makefile.in | 7 | ||||
-rwxr-xr-x | lib/tevent/abi_checks.sh | 31 | ||||
-rw-r--r-- | lib/tevent/configure.ac | 1 | ||||
-rw-r--r-- | lib/tevent/libtevent.m4 | 5 | ||||
-rw-r--r-- | lib/tevent/rules.mk | 2 | ||||
-rw-r--r-- | lib/tevent/tevent.exports | 59 | ||||
-rw-r--r-- | lib/tevent/tevent.signatures | 54 |
7 files changed, 157 insertions, 2 deletions
diff --git a/lib/tevent/Makefile.in b/lib/tevent/Makefile.in index 253b1e1d12..f3deb9df45 100644 --- a/lib/tevent/Makefile.in +++ b/lib/tevent/Makefile.in @@ -39,6 +39,10 @@ LIBS = $(TALLOC_LIBS) $(TEVENT_LIBS) @LIBS@ TEVENT_OBJ = @TEVENT_OBJ@ @LIBREPLACEOBJ@ +SONAMEFLAG = @SONAMEFLAG@ +VERSIONSCRIPT = @VERSIONSCRIPT@ +EXPORTSFILE = @EXPORTSFILE@ + default: all include $(teventdir)/tevent.mk @@ -48,7 +52,7 @@ all:: showflags dirs $(PROGS) $(TEVENT_SOLIB) libtevent.a install:: all $(TEVENT_SOLIB): $(TEVENT_OBJ) - $(SHLD) $(SHLD_FLAGS) $(LDFLAGS) $(LIBS) -o $@ $(TEVENT_OBJ) @SONAMEFLAG@$(TEVENT_SONAME) + $(SHLD) $(SHLD_FLAGS) $(LDFLAGS) $(LIBS) -o $@ $(TEVENT_OBJ) $(VERSIONSCRIPT) $(EXPORTSFILE) $(SONAMEFLAG)$(TEVENT_SONAME) shared-build: all ${INSTALLCMD} -d $(sharedbuilddir)/lib @@ -65,6 +69,7 @@ installcheck:: test install clean:: rm -f *.o *.a */*.o + rm -fr abi distclean:: clean rm -f config.log config.status config.h config.cache diff --git a/lib/tevent/abi_checks.sh b/lib/tevent/abi_checks.sh new file mode 100755 index 0000000000..83082ad401 --- /dev/null +++ b/lib/tevent/abi_checks.sh @@ -0,0 +1,31 @@ +#!/bin/bash +make clean + +mkdir abi +ABI_CHECKS="-aux-info abi/\$@.X" +make ABI_CHECK="$ABI_CHECKS" + +for i in abi/*.X; do cat $i | grep 'tevent\.h'; done | sort | uniq | awk -F "extern " '{ print $2 }' > abi/signatures + +cat > abi/exports << EOF +{ + global: +EOF +cat abi/signatures | awk -F '(' '{ print $1 }' | awk -F ' ' '{ print " "$NF";" }' | tr -d '*' | sort >> abi/exports +cat >> abi/exports << EOF + + local: *; +}; +EOF + +rm -fr abi/*.X + +diff -u tevent.signatures abi/signatures +if [ "$?" != "0" ]; then + echo "WARNING: Possible ABI Change!!" +fi + +diff -u tevent.exports abi/exports +if [ "$?" != "0" ]; then + echo "WARNING: Export file may be outdated!!" +fi diff --git a/lib/tevent/configure.ac b/lib/tevent/configure.ac index 0d3f21d7d7..d40e02e15a 100644 --- a/lib/tevent/configure.ac +++ b/lib/tevent/configure.ac @@ -7,6 +7,7 @@ AC_LIBREPLACE_ALL_CHECKS AC_LD_EXPORT_DYNAMIC AC_LD_SONAMEFLAG +AC_LD_VERSIONSCRIPT AC_LD_PICFLAG AC_LD_SHLIBEXT AC_LIBREPLACE_SHLD diff --git a/lib/tevent/libtevent.m4 b/lib/tevent/libtevent.m4 index 20730b17d6..4162ba30f9 100644 --- a/lib/tevent/libtevent.m4 +++ b/lib/tevent/libtevent.m4 @@ -38,3 +38,8 @@ if test x"$ac_cv_header_sys_epoll_h" = x"yes" -a x"$ac_cv_func_epoll_create" = x AC_DEFINE(HAVE_EPOLL, 1, [Whether epoll available]) fi +if test x"$VERSIONSCRIPT" != "x"; then + EXPORTSFILE=tevent.exports + AC_SUBST(EXPORTSFILE) +fi + diff --git a/lib/tevent/rules.mk b/lib/tevent/rules.mk index 28a2515b01..c197e930a3 100644 --- a/lib/tevent/rules.mk +++ b/lib/tevent/rules.mk @@ -12,7 +12,7 @@ showflags:: .c.o: @echo Compiling $*.c @mkdir -p `dirname $@` - @$(CC) $(PICFLAG) $(CFLAGS) -c $< -o $@ + @$(CC) $(PICFLAG) $(CFLAGS) $(ABI_CHECK) -c $< -o $@ distclean:: rm -f *~ */*~ diff --git a/lib/tevent/tevent.exports b/lib/tevent/tevent.exports new file mode 100644 index 0000000000..7d55c17e5d --- /dev/null +++ b/lib/tevent/tevent.exports @@ -0,0 +1,59 @@ +{ + global: + _tevent_add_fd; + _tevent_add_signal; + _tevent_add_timer; + tevent_backend_list; + tevent_context_init; + tevent_context_init_byname; + _tevent_create_immediate; + tevent_fd_get_flags; + tevent_fd_set_auto_close; + tevent_fd_set_close_fn; + tevent_fd_set_flags; + tevent_loop_allow_nesting; + _tevent_loop_once; + tevent_loop_set_nesting_hook; + _tevent_loop_until; + _tevent_loop_wait; + tevent_queue_add; + _tevent_queue_create; + tevent_queue_length; + tevent_queue_start; + tevent_queue_stop; + _tevent_req_callback_data; + _tevent_req_create; + _tevent_req_data; + tevent_req_default_print; + _tevent_req_done; + _tevent_req_error; + tevent_req_is_error; + tevent_req_is_in_progress; + _tevent_req_nomem; + _tevent_req_notify_callback; + tevent_req_poll; + tevent_req_post; + tevent_req_print; + tevent_req_received; + tevent_req_set_callback; + tevent_req_set_endtime; + tevent_req_set_print_fn; + _tevent_schedule_immediate; + tevent_set_abort_fn; + tevent_set_debug; + tevent_set_debug_stderr; + tevent_set_default_backend; + tevent_signal_support; + tevent_timeval_add; + tevent_timeval_compare; + tevent_timeval_current; + tevent_timeval_current_ofs; + tevent_timeval_is_zero; + tevent_timeval_set; + tevent_timeval_until; + tevent_timeval_zero; + tevent_wakeup_recv; + tevent_wakeup_send; + + local: *; +}; diff --git a/lib/tevent/tevent.signatures b/lib/tevent/tevent.signatures new file mode 100644 index 0000000000..fab5f64559 --- /dev/null +++ b/lib/tevent/tevent.signatures @@ -0,0 +1,54 @@ +struct tevent_signal *_tevent_add_signal (struct tevent_context *, TALLOC_CTX *, int, int, tevent_signal_handler_t, void *, const char *, const char *); +int _tevent_loop_once (struct tevent_context *, const char *); +int _tevent_loop_wait (struct tevent_context *, const char *); +void tevent_fd_set_close_fn (struct tevent_fd *, tevent_fd_close_fn_t); +void tevent_fd_set_auto_close (struct tevent_fd *); +uint16_t tevent_fd_get_flags (struct tevent_fd *); +void tevent_fd_set_flags (struct tevent_fd *, uint16_t); +_Bool tevent_signal_support (struct tevent_context *); +void tevent_set_abort_fn (void (*) (const char *)); +int tevent_set_debug (struct tevent_context *, void (*) (void *, enum tevent_debug_level, const char *, __va_list_tag *), void *); +int tevent_set_debug_stderr (struct tevent_context *); +void tevent_req_set_callback (struct tevent_req *, tevent_req_fn, void *); +void *_tevent_req_callback_data (struct tevent_req *); +void *_tevent_req_data (struct tevent_req *); +void tevent_req_set_print_fn (struct tevent_req *, tevent_req_print_fn); +char *tevent_req_default_print (struct tevent_req *, TALLOC_CTX *); +char *tevent_req_print (TALLOC_CTX *, struct tevent_req *); +struct tevent_req *_tevent_req_create (TALLOC_CTX *, void *, size_t, const char *, const char *); +_Bool tevent_req_set_endtime (struct tevent_req *, struct tevent_context *, struct timeval); +void _tevent_req_notify_callback (struct tevent_req *, const char *); +void _tevent_req_done (struct tevent_req *, const char *); +_Bool _tevent_req_error (struct tevent_req *, uint64_t, const char *); +_Bool _tevent_req_nomem (const void *, struct tevent_req *, const char *); +struct tevent_req *tevent_req_post (struct tevent_req *, struct tevent_context *); +_Bool tevent_req_is_in_progress (struct tevent_req *); +_Bool tevent_req_poll (struct tevent_req *, struct tevent_context *); +_Bool tevent_req_is_error (struct tevent_req *, enum tevent_req_state *, uint64_t *); +void tevent_req_received (struct tevent_req *); +struct tevent_req *tevent_wakeup_send (TALLOC_CTX *, struct tevent_context *, struct timeval); +_Bool tevent_wakeup_recv (struct tevent_req *); +int tevent_timeval_compare (const struct timeval *, const struct timeval *); +struct timeval tevent_timeval_zero (void); +struct timeval tevent_timeval_current (void); +struct timeval tevent_timeval_set (uint32_t, uint32_t); +struct timeval tevent_timeval_until (const struct timeval *, const struct timeval *); +_Bool tevent_timeval_is_zero (const struct timeval *); +struct timeval tevent_timeval_add (const struct timeval *, uint32_t, uint32_t); +struct timeval tevent_timeval_current_ofs (uint32_t, uint32_t); +struct tevent_queue *_tevent_queue_create (TALLOC_CTX *, const char *, const char *); +_Bool tevent_queue_add (struct tevent_queue *, struct tevent_context *, struct tevent_req *, tevent_queue_trigger_fn_t, void *); +void tevent_queue_start (struct tevent_queue *); +void tevent_queue_stop (struct tevent_queue *); +size_t tevent_queue_length (struct tevent_queue *); +void tevent_loop_allow_nesting (struct tevent_context *); +void tevent_loop_set_nesting_hook (struct tevent_context *, tevent_nesting_hook, void *); +int _tevent_loop_until (struct tevent_context *, _Bool (*) (void *), void *, const char *); +struct tevent_context *tevent_context_init (TALLOC_CTX *); +struct tevent_context *tevent_context_init_byname (TALLOC_CTX *, const char *); +const char **tevent_backend_list (TALLOC_CTX *); +void tevent_set_default_backend (const char *); +struct tevent_fd *_tevent_add_fd (struct tevent_context *, TALLOC_CTX *, int, uint16_t, tevent_fd_handler_t, void *, const char *, const char *); +struct tevent_timer *_tevent_add_timer (struct tevent_context *, TALLOC_CTX *, struct timeval, tevent_timer_handler_t, void *, const char *, const char *); +struct tevent_immediate *_tevent_create_immediate (TALLOC_CTX *, const char *); +void _tevent_schedule_immediate (struct tevent_immediate *, struct tevent_context *, tevent_immediate_handler_t, void *, const char *, const char *); |