From 25123621e72daf757b53fe8b5f28130a98016988 Mon Sep 17 00:00:00 2001 From: Jan Blunck Date: Thu, 5 Nov 2009 18:13:18 +0100 Subject: [PATCH] Add linker script and libust initializer object This adds a libust initializer object which gets linked automagically if you link against libust.so, which is a linker skript from now on. The object file just ensures that the libust is initialized properly without forcing the user of the library to care about calling MARKER_LIB and TRACEPOINT_LIB explicitly. Signed-off-by: Jan Blunck --- Makefile.am | 14 +++++++++++++- libust-initializer.c | 15 +++++++++++++++ libust.ldscript.in | 4 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 libust-initializer.c create mode 100644 libust.ldscript.in diff --git a/Makefile.am b/Makefile.am index 1bdedea2..f8815700 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,5 +1,17 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = libust tests libmallocwrap ustd ustctl libinterfork include -EXTRA_DIST = doc +EXTRA_DIST = doc libust.ldscript.in libust-initializer.c dist_bin_SCRIPTS = usttrace + +ldscriptsdir = $(libdir) +ldscripts_DATA = libust.so libust-initializer.o + +CLEANFILES = $(ldscripts_DATA) + +libust_FORMAT := $(shell case $(shell uname -m) in (i*86) echo elf32-i386 ;; (x86_64) echo elf64-x86-64 ;; (ppc) echo elf32-powerpc ;; (ppc64) echo elf64-powerpc ;; (s390) echo elf32-s390 ;; (s390x) echo elf64-s390 ;; esac) +libust.so: libust.ldscript.in + $(SED) -e "s@\@FORMAT\@@${libust_FORMAT}@" -e "s@\@PATH\@@${libdir}@g" < $< > $@ + +libust-initializer.o: libust-initializer.c + $(CC) -c $(CFLAGS) -o $@ $< diff --git a/libust-initializer.c b/libust-initializer.c new file mode 100644 index 00000000..7c474659 --- /dev/null +++ b/libust-initializer.c @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2009 Novell Inc. + * + * Author: Jan Blunck + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License version 2.1 as + * published by the Free Software Foundation. + */ + +#include +#include + +MARKER_LIB; +TRACEPOINT_LIB; diff --git a/libust.ldscript.in b/libust.ldscript.in new file mode 100644 index 00000000..3babac68 --- /dev/null +++ b/libust.ldscript.in @@ -0,0 +1,4 @@ +/* GNU ld script + Use the shared library, but the link with initializer too */ +OUTPUT_FORMAT(@FORMAT@) +GROUP ( @PATH@/libust.so.0 @PATH@/libust-initializer.o ) -- 2.34.1