[lttng-dev] [PATCH lttng-tools] Tests: fix make targets using objcopy

Jérémie Galarneau jeremie.galarneau at efficios.com
Thu Jan 7 15:49:02 EST 2016


For future reference, a Pull Request addressing my comments was
submitted and merged.

https://github.com/lttng/lttng-tools/pull/60

Thanks,
Jérémie

On Thu, Dec 17, 2015 at 2:19 PM, Jérémie Galarneau
<jeremie.galarneau at efficios.com> wrote:
> On Wed, Dec 2, 2015 at 1:26 PM, Michael Jeanson <mjeanson at efficios.com> wrote:
>> Add detection for objcopy using AC_CHECK_TOOL and use dedicated make
>> targets for each file.
>>
>> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
>> ---
>>  .gitignore                                          |  2 ++
>>  configure.ac                                        |  6 ++++++
>>  tests/regression/ust/baddr-statedump/Makefile.am    | 21 ++++++++++++++++-----
>>  .../ust/baddr-statedump/test_baddr-statedump.py     |  2 +-
>>  tests/regression/ust/ust-dl/Makefile.am             | 21 ++++++++++++++++-----
>>  tests/regression/ust/ust-dl/test_ust-dl.py          |  2 +-
>>  6 files changed, 42 insertions(+), 12 deletions(-)
>>
>> diff --git a/.gitignore b/.gitignore
>> index 0efccfa..ca08d95 100644
>> --- a/.gitignore
>> +++ b/.gitignore
>> @@ -95,7 +95,9 @@ health_check
>>  tests/regression/ust/python-logging/test_python_logging
>>  /tests/regression/ust/baddr-statedump/prog
>>  /tests/regression/ust/baddr-statedump/prog.debug
>> +/tests/regression/ust/baddr-statedump/prog.strip
>>  /tests/regression/ust/ust-dl/prog
>> +/tests/regression/ust/ust-dl/libfoo.so.debug
>>  /tests/utils/testapp/gen-ust-nevents/gen-ust-nevents
>>  /tests/utils/testapp/gen-ust-tracef/gen-ust-tracef
>>  /tests/regression/tools/live/live_test
>> diff --git a/configure.ac b/configure.ac
>> index 978e3bc..4100fe1 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -28,6 +28,12 @@ AC_PROG_SED
>>  AC_PROG_YACC
>>  LT_INIT
>>
>> +# Check for objcopy, required by the base address statedump and dynamic linker tests
>> +AC_CHECK_TOOL([OBJCOPY], objcopy, no)
>> +AS_IF([test "x$OBJCOPY" = xno],
>> +       [AC_MSG_ERROR([Cannont find objcopy. Install the binutils package.])]
>> +)
>
> The rest of the fix looks good, but this should only disable the
> affected tests since binutils is not a dependancy of lttng-tools.
>
> Regards,
> Jérémie
>
>> +
>>  # Checks for typedefs, structures, and compiler characteristics.
>>  AC_C_INLINE
>>  AC_TYPE_INT32_T
>> diff --git a/tests/regression/ust/baddr-statedump/Makefile.am b/tests/regression/ust/baddr-statedump/Makefile.am
>> index f45c5ae..7caf457 100644
>> --- a/tests/regression/ust/baddr-statedump/Makefile.am
>> +++ b/tests/regression/ust/baddr-statedump/Makefile.am
>> @@ -1,3 +1,7 @@
>> +objcopy_verbose = $(objcopy_verbose_ at AM_V@)
>> +objcopy_verbose_ = $(objcopy_verbose_ at AM_DEFAULT_V@)
>> +objcopy_verbose_0 = @echo OBJCOPY $@;
>> +
>>  AM_CPPFLAGS = -I$(srcdir) -g
>>
>>  noinst_PROGRAMS = prog
>> @@ -7,15 +11,21 @@ prog_LDADD = -llttng-ust -ldl
>>  noinst_SCRIPTS = test_baddr-statedump test_baddr-statedump.py
>>  EXTRA_DIST = test_baddr-statedump test_baddr-statedump.py
>>
>> -all-local: prog$(EXEEXT)
>> +# Extract debug symbols
>> +prog.debug: prog
>> +       $(objcopy_verbose)$(OBJCOPY) --only-keep-debug prog prog.debug
>> +
>> +# Strip and add debuglink
>> +prog.strip: prog.debug
>> +       @cp -f prog prog.strip
>> +       $(objcopy_verbose)$(OBJCOPY) --strip-debug --add-gnu-debuglink=prog.debug prog.strip
>> +
>> +all-local: prog.strip
>>         @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
>>                 for script in $(EXTRA_DIST); do \
>>                         cp -f $(srcdir)/$$script $(builddir); \
>>                 done; \
>>         fi
>> -       objcopy --only-keep-debug prog prog.debug
>> -       strip -g prog
>> -       objcopy --add-gnu-debuglink prog.debug prog
>>
>>  clean-local:
>>         @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
>> @@ -23,4 +33,5 @@ clean-local:
>>                         rm -f $(builddir)/$$script; \
>>                 done; \
>>         fi
>> -       rm -f prog.debug
>> +
>> +CLEANFILES = prog.debug prog.strip
>> diff --git a/tests/regression/ust/baddr-statedump/test_baddr-statedump.py b/tests/regression/ust/baddr-statedump/test_baddr-statedump.py
>> index 308eff4..47ed9d6 100644
>> --- a/tests/regression/ust/baddr-statedump/test_baddr-statedump.py
>> +++ b/tests/regression/ust/baddr-statedump/test_baddr-statedump.py
>> @@ -45,7 +45,7 @@ session_info = create_session()
>>  enable_ust_tracepoint_event(session_info, "*")
>>  start_session(session_info)
>>
>> -test_process = subprocess.Popen(test_path + "prog", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>> +test_process = subprocess.Popen(test_path + "prog.strip", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>  if sys.version_info >= (3, 3):
>>      try:
>>          test_process.wait(5)
>> diff --git a/tests/regression/ust/ust-dl/Makefile.am b/tests/regression/ust/ust-dl/Makefile.am
>> index 4893a97..c12da16 100644
>> --- a/tests/regression/ust/ust-dl/Makefile.am
>> +++ b/tests/regression/ust/ust-dl/Makefile.am
>> @@ -1,3 +1,7 @@
>> +objcopy_verbose = $(objcopy_verbose_ at AM_V@)
>> +objcopy_verbose_ = $(objcopy_verbose_ at AM_DEFAULT_V@)
>> +objcopy_verbose_0 = @echo OBJCOPY $@;
>> +
>>  AM_CPPFLAGS = -I$(srcdir) -g
>>
>>  noinst_PROGRAMS = prog
>> @@ -12,15 +16,21 @@ libfoo_la_LDFLAGS = -module -shared -avoid-version \
>>  noinst_SCRIPTS = test_ust-dl test_ust-dl.py
>>  EXTRA_DIST = test_ust-dl test_ust-dl.py
>>
>> -all-local: libfoo.la
>> +# Extract debug symbols
>> +libfoo.so.debug: libfoo.la
>> +       $(objcopy_verbose)$(OBJCOPY) --only-keep-debug .libs/libfoo.so libfoo.so.debug
>> +
>> +# Strip and add debuglink
>> +libfoo.so: libfoo.so.debug
>> +       @cp -f .libs/libfoo.so libfoo.so
>> +       $(objcopy_verbose)$(OBJCOPY) --strip-debug --add-gnu-debuglink=libfoo.so.debug libfoo.so
>> +
>> +all-local: libfoo.so
>>         @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
>>                 for script in $(EXTRA_DIST); do \
>>                         cp -f $(srcdir)/$$script $(builddir); \
>>                 done; \
>>         fi
>> -       objcopy --only-keep-debug .libs/libfoo.so .libs/libfoo.so.debug
>> -       strip -g .libs/libfoo.so
>> -       objcopy --add-gnu-debuglink .libs/libfoo.so.debug .libs/libfoo.so
>>
>>  clean-local:
>>         @if [ x"$(srcdir)" != x"$(builddir)" ]; then \
>> @@ -28,4 +38,5 @@ clean-local:
>>                         rm -f $(builddir)/$$script; \
>>                 done; \
>>         fi
>> -       rm -f .libs/libfoo.so.debug
>> +
>> +CLEANFILES = libfoo.so libfoo.so.debug
>> diff --git a/tests/regression/ust/ust-dl/test_ust-dl.py b/tests/regression/ust/ust-dl/test_ust-dl.py
>> index 1e5e96b..dc73270 100644
>> --- a/tests/regression/ust/ust-dl/test_ust-dl.py
>> +++ b/tests/regression/ust/ust-dl/test_ust-dl.py
>> @@ -47,7 +47,7 @@ start_session(session_info)
>>
>>  test_env = os.environ.copy()
>>  test_env["LD_PRELOAD"] = "liblttng-ust-dl.so"
>> -test_env["LD_LIBRARY_PATH"] = test_path + ".libs/"
>> +test_env["LD_LIBRARY_PATH"] = test_path
>>  test_process = subprocess.Popen(test_path + "prog",
>>                                  stdout=subprocess.PIPE, stderr=subprocess.PIPE,
>>                                  env=test_env)
>> --
>> 1.9.1
>>
>
>
>
> --
> Jérémie Galarneau
> EfficiOS Inc.
> http://www.efficios.com



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list