Skip to contentSkip to conversation

ltrace: disable elfutils unwinding when libunwind is used

PATCH New Baruch Siach 2 participants 4 messages Dec 5, 2014 – Dec 9, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ltrace: disable elfutils unwinding when libunwind is used

ltrace can't use both.

Fixes:
http://autobuild.buildroot.net/results/a3c/a3c1647578cdeda3aaf672084a9a893f06dbad26/
http://autobuild.buildroot.net/results/fdb/fdb7e760faeda77b263a6dac3e322a25b53e67ff/
http://autobuild.buildroot.net/results/70a/70a0614ca7baf6a46898834a87cd46865f6e3385/

---
 package/ltrace/ltrace.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/ltrace/ltrace.mk +1 -1
index 5c9549f4019b..61e0fb7d57be 100644
@@ -21,7 +21,7 @@ LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4
 # We don't normally do so for uClibc and we can't know if it's external
 ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
 ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),)
-LTRACE_CONF_OPTS += --with-libunwind=yes
+LTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no
 LTRACE_DEPENDENCIES += libunwind
 else
 LTRACE_CONF_OPTS += --with-libunwind=no
Signature · 1 line
2.1.3
#1 lore raw

PATCH 1/1 ltrace: disable elfutils unwinding when libunwind is used

Dear Baruch Siach,

Quoted 17 lines · Baruch Siach

ltrace can't use both.

Fixes:
http://autobuild.buildroot.net/results/a3c/a3c1647578cdeda3aaf672084a9a893f06dbad26/
http://autobuild.buildroot.net/results/fdb/fdb7e760faeda77b263a6dac3e322a25b53e67ff/
http://autobuild.buildroot.net/results/70a/70a0614ca7baf6a46898834a87cd46865f6e3385/

---
 package/ltrace/ltrace.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/ltrace/ltrace.mk +0 -0
index 5c9549f4019b..61e0fb7d57be 100644

package/ltrace/ltrace.mk LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4 · line 24

Quoted 5 lines
package/ltrace/ltrace.mk +1 -1
@@ -21,7 +21,7 @@ LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4
 # We don't normally do so for uClibc and we can't know if it's external
 ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
 ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),)
-LTRACE_CONF_OPTS += --with-libunwind=yes
+LTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no

While I agree with the analysis, I don't agree with the proposed fix:
ltrace selects elfutils unconditionally (see Config.in), so it is quite weird to see ltrace not using it in the end. So I believe the Config.in *and* ltrace dependencies should be updated to reflect the fact that either unwind or elfutils can be used.

Could you work on an updated patch?

Thanks a lot!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 ltrace: disable elfutils unwinding when libunwind is used

Hi Thomas,

Quoted 13 lines · Thomas Petazzoni
Quoted 12 lines · Baruch Siach

ltrace can't use both.

Fixes:
http://autobuild.buildroot.net/results/a3c/a3c1647578cdeda3aaf672084a9a893f06dbad26/
http://autobuild.buildroot.net/results/fdb/fdb7e760faeda77b263a6dac3e322a25b53e67ff/
http://autobuild.buildroot.net/results/70a/70a0614ca7baf6a46898834a87cd46865f6e3385/

---
 package/ltrace/ltrace.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Quoted 16 lines

package/ltrace/ltrace.mk LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4 · line 24

Quoted 10 lines
package/ltrace/ltrace.mk +1 -1
index 5c9549f4019b..61e0fb7d57be 100644
@@ -21,7 +21,7 @@ LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4
 # We don't normally do so for uClibc and we can't know if it's external
 ifeq ($(BR2_PACKAGE_LIBUNWIND),y)
 ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),)
-LTRACE_CONF_OPTS += --with-libunwind=yes
+LTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no

While I agree with the analysis, I don't agree with the proposed fix:
ltrace selects elfutils unconditionally (see Config.in), so it is quite weird to see ltrace not using it in the end. So I believe the Config.in *and* ltrace dependencies should be updated to reflect the fact that either unwind or elfutils can be used.

It turns out that --with-elfutils=no is a misnomer. ltrace depends on libelf regardless of --with-elfutils, so we must have elfutils both in Config.in and in LTRACE_DEPENDENCIES. The only effect of --with-elfutils is on unwinding back-end. Quoting configure.ac:

AS_HELP_STRING([--with-elfutils], [Use elfutils libdwfl unwinding support]),

I'll send a revised version of this patch with a better commit log, and a comment in the code explaining this weirdness.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#3 lore raw

PATCH 1/1 ltrace: disable elfutils unwinding when libunwind is used

Dear Baruch Siach,

Quoted 11 lines · Baruch Siach
Quoted 5 lines

While I agree with the analysis, I don't agree with the proposed fix:
ltrace selects elfutils unconditionally (see Config.in), so it is quite weird to see ltrace not using it in the end. So I believe the Config.in *and* ltrace dependencies should be updated to reflect the fact that either unwind or elfutils can be used.

It turns out that --with-elfutils=no is a misnomer. ltrace depends on libelf regardless of --with-elfutils, so we must have elfutils both in Config.in and in LTRACE_DEPENDENCIES. The only effect of --with-elfutils is on unwinding back-end. Quoting configure.ac:

Quoted 4 lines

AS_HELP_STRING([--with-elfutils], [Use elfutils libdwfl unwinding support]),

I'll send a revised version of this patch with a better commit log, and a comment in the code explaining this weirdness.

Aah, ok. Indeed very confusing. Thanks for clarifying this and posting an updated version with more details!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com