pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/libosmo-asn1-tcap/+/42219?usp=email )
Change subject: WIP: talloc
......................................................................
WIP: talloc
Change-Id: I6d885527caa5b60011b4fac341b93026ab1833d9
---
M configure.ac
M debian/control
M include/osmocom/tcap/asn_internal.h
M libosmo-asn1-tcap.pc.in
M src/Makefile.am
M src/tcap.c
M tests/parse/Makefile.am
7 files changed, 27 insertions(+), 8 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-asn1-tcap
refs/changes/19/42219/1
diff --git a/configure.ac b/configure.ac
index 5082daf..28aa608 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,8 @@
AC_SUBST([ASN_MODULE_CFLAGS])
+PKG_CHECK_MODULES(TALLOC, [talloc >= 2.1.0])
+
# The following test is taken from WebKit's webkit.m4
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden "
diff --git a/debian/control b/debian/control
index 2dee434..52ffffe 100644
--- a/debian/control
+++ b/debian/control
@@ -10,6 +10,7 @@
git,
libtool,
pkg-config,
+ libtalloc-dev (>= 2.1.0)
Standards-Version: 3.9.6
Vcs-Browser: https://gitea.osmocom.org/ss7-in-c/libosmo-asn1-tcap
Vcs-Git: https://gitea.osmocom.org/ss7-in-c/libosmo-asn1-tcap
@@ -25,7 +26,9 @@
Package: libosmo-asn1-tcap-dev
Section: libdevel
Architecture: any
-Depends: libosmo-asn1-tcap1 (= ${binary:Version}), ${misc:Depends}
+Depends: libosmo-asn1-tcap1 (= ${binary:Version}),
+ libtalloc-dev (>= 2.1.0),
+ ${misc:Depends}
Multi-Arch: same
Description: Development headers for utility library for ASN.1 of TCAP (SS7)
diff --git a/include/osmocom/tcap/asn_internal.h
b/include/osmocom/tcap/asn_internal.h
index bf5b510..f4337d3 100644
--- a/include/osmocom/tcap/asn_internal.h
+++ b/include/osmocom/tcap/asn_internal.h
@@ -7,6 +7,7 @@
*/
#ifndef ASN_INTERNAL_H
#define ASN_INTERNAL_H
+#include <talloc.h>
#ifndef __EXTENSIONS__
#define __EXTENSIONS__ /* for Sun */
#endif
@@ -34,10 +35,11 @@
#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version
*/
int get_asn1c_environment_version(void); /* Run-time version */
-#define CALLOC(nmemb, size) calloc(nmemb, size)
-#define MALLOC(size) malloc(size)
-#define REALLOC(oldptr, size) realloc(oldptr, size)
-#define FREEMEM(ptr) free(ptr)
+extern void *tcap_talloc_asn1_ctx;
+#define CALLOC(nmemb, size) talloc_zero_size(tcap_talloc_asn1_ctx,
(nmemb) * (size))
+#define MALLOC(size) talloc_size(tcap_talloc_asn1_ctx, size)
+#define REALLOC(oldptr, size)
talloc_realloc_size(tcap_talloc_asn1_ctx, oldptr, size)
+#define FREEMEM(ptr) talloc_free(ptr)
#define asn_debug_indent 0
#define ASN_DEBUG_INDENT_ADD(i) do{}while(0)
diff --git a/libosmo-asn1-tcap.pc.in b/libosmo-asn1-tcap.pc.in
index 17971a1..80dd622 100644
--- a/libosmo-asn1-tcap.pc.in
+++ b/libosmo-asn1-tcap.pc.in
@@ -6,5 +6,6 @@
Name: ASN.1 library for TCAP protocol (SS7)
Description: C Utility Library
Version: @VERSION@
+Requires.private: talloc
Libs: -L${libdir} -losmo-asn1-tcap
Cflags: -I${includedir}/
diff --git a/src/Makefile.am b/src/Makefile.am
index 6c2f830..42089af 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,4 +1,4 @@
-AM_CFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/src/skel
$(ASN_MODULE_CFLAGS)
+AM_CFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)/src/skel
$(ASN_MODULE_CFLAGS) $(TALLOC_CFLAGS)
SKEL_SRC = \
skel/ANY.c \
@@ -201,6 +201,8 @@
libosmo_asn1_tcap_la_LDFLAGS = -version-info $(LIBVERSION) -no-undefined
-export-symbols-regex '^osmo_'
+libosmo_asn1_tcap_la_LIBADD = $(TALLOC_LIBS)
+
libosmo_asn1_tcap_la_SOURCES = \
tcap.c \
$(ASN_MODULE_SRC)
@@ -239,6 +241,13 @@
# #include <...> in *.c and *.h files
cd $(top_srcdir)/src/gen && \
../../move-asn1-header-files.sh osmocom/tcap $(ASN_MODULE_INC)
+#Patch mem alloc defines to use talloc:
+ sed -i "s/#define\tASN_INTERNAL_H/#define\tASN_INTERNAL_H\n#include
<talloc.h>/g" $(top_srcdir)/include/osmocom/tcap/asn_internal.h
+ sed -i "s/#define\tCALLOC/extern void
*tcap_talloc_asn1_ctx;\n#define\tCALLOC/g"
$(top_srcdir)/include/osmocom/tcap/asn_internal.h
+ sed -i "s/calloc(nmemb, size)/talloc_zero_size(tcap_talloc_asn1_ctx,
(nmemb) * (size))/g" $(top_srcdir)/include/osmocom/tcap/asn_internal.h
+ sed -i "s/malloc(size)/talloc_size(tcap_talloc_asn1_ctx, size)/g"
$(top_srcdir)/include/osmocom/tcap/asn_internal.h
+ sed -i "s/realloc(oldptr,
size)/talloc_realloc_size(tcap_talloc_asn1_ctx, oldptr, size)/g"
$(top_srcdir)/include/osmocom/tcap/asn_internal.h
+ sed -i "s/free(ptr)/talloc_free(ptr)/g"
$(top_srcdir)/include/osmocom/tcap/asn_internal.h
# Move skeleton *.c files to src/skel
rm -rf $(top_srcdir)/src/skel
mkdir $(top_srcdir)/src/skel
diff --git a/src/tcap.c b/src/tcap.c
index 68c7d9c..f5303ac 100644
--- a/src/tcap.c
+++ b/src/tcap.c
@@ -26,6 +26,8 @@
#include <osmocom/tcap/asn_codecs.h>
#include <osmocom/tcap/TCAP_TCMessage.h>
+void *tcap_talloc_asn1_ctx;
+
int osmo_asn1_tcap_decode(struct TCAP_TCMessage *tcapmsg, const uint8_t *data,
size_t data_len)
{
diff --git a/tests/parse/Makefile.am b/tests/parse/Makefile.am
index 821865d..1a449fe 100644
--- a/tests/parse/Makefile.am
+++ b/tests/parse/Makefile.am
@@ -1,8 +1,8 @@
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -I$(top_srcdir)/src
-AM_CFLAGS = -Wall
+AM_CFLAGS = -Wall $(TALLOC_CFLAGS)
AM_LDFLAGS = -no-install
-LDADD = $(top_builddir)/src/.libs/libosmo-asn1-tcap.a
+LDADD = $(top_builddir)/src/.libs/libosmo-asn1-tcap.a $(TALLOC_LIBS)
check_PROGRAMS = \
tcap_parse_test \
--
To view, visit https://gerrit.osmocom.org/c/libosmo-asn1-tcap/+/42219?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: libosmo-asn1-tcap
Gerrit-Branch: master
Gerrit-Change-Id: I6d885527caa5b60011b4fac341b93026ab1833d9
Gerrit-Change-Number: 42219
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>