move allocation of talloc contexts into link-time constructor

This is much more optimal than checking if the context exists every
time we allocate the respective object.
diff --git a/openbsc/src/msgb.c b/openbsc/src/msgb.c
index ae13346..52edf2d 100644
--- a/openbsc/src/msgb.c
+++ b/openbsc/src/msgb.c
@@ -33,9 +33,6 @@
 {
 	struct msgb *msg;
 
-	if (!tall_msgb_ctx)
-		tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 1, "msgb");
-
 	msg = _talloc_zero(tall_msgb_ctx, sizeof(*msg) + size, name);
 
 	if (!msg)
@@ -76,3 +73,8 @@
 	
 	return llist_entry(lh, struct msgb, list);
 }
+
+static __attribute__((constructor)) void on_dso_load_trau_msgb(void)
+{
+	tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 1, "msgb");
+}