Ltrace is broken on ppc64el
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ltrace (Ubuntu) |
Fix Released
|
High
|
Mathieu Trudel-Lapierre | ||
Trusty |
Incomplete
|
Low
|
Mathieu Trudel-Lapierre | ||
Wily |
Won't Fix
|
Low
|
Mathieu Trudel-Lapierre |
Bug Description
[Impact]
ppc64el users of ltrace.
[Test cases]
- ltrace `which ls`
- ltrace /bin/ls /usr
- ltrace ps
- ltrace make (building ltrace itself, for instance)
[Regression potential]
While the changes should fix some of the more common uses of ltrace, the added/modified methods and options may break for some specific calls on ppc64el, or on other architectures (powerpc, arm) which are affected by the changes.
ARM was already failing with the available version of ltrace; this would not change the behavior on ARM.
---
ltrace is not working properly on Ubuntu 15.04 ppc64el.
Example:
ubuntu@
__printf_chk(1, 0x3fffd36dce78, 0x3fffd36dce88, 0x3fffd36dcf28 <unfinished ...>
...
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
There is a patch that fixes this issue:
http://
In order to get the ppc64el, the idea is to get the upstream tree and do a reset until commit eea4ad2cce28975
That would allow to create a patch of 27514 lines
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
ppc64el_support:--- ltrace-
from that stage there is a need to apply a patch to avoid dwarf compilation error:
--- ltrace-
+++ ltrace-
@@ -1,7 +1,6 @@
#pragma once
#include <stdbool.h>
-#include <elfutils/
#include "prototype.h"
#include "library.h"
and a patch to configure.ac
--- ltrace-
+++ ltrace-
@@ -42,7 +43,7 @@ case "${host_cpu}" in
arm*|sa110) HOST_CPU="arm" ;;
cris*) HOST_CPU="cris" ;;
mips*) HOST_CPU="mips" ;;
- powerpc|powerpc64) HOST_CPU="ppc" ;;
+ powerpc|
sun4u|sparc64) HOST_CPU="sparc" ;;
s390x) HOST_CPU="s390" ;;
i?86|x86_64) HOST_CPU="x86" ;;
let us know if you want a patch or if you get the source from upstream
It may also be required to backport the following patches:
03-alpha-debug.h
06-unexpected-
ptrace.diff
Fix to allow compilation of parameters-hfa.exp is
diff --git a/testsuite/
index 9931794..aa9d240 100644
--- a/testsuite/
+++ b/testsuite/
@@ -110,6 +110,7 @@ proc ltrace_compile {source dest type options} {
set result [target_compile $source $dest $type $options];
verbose "result is $result"
+ regsub ".* note: .*$" "$result" "" result;
regsub "\[\r\n\]*$" "$result" "" result;
regsub "^\[\r\n\]*" "$result" "" result;
if { $result != "" && [lsearch $options quiet] == -1} {
Current dev git tree reset to commit :
eea4ad2cce28975
or more recent
bc7551c18a2ea7b
are compiling and tested with only 4 errors.
== Comment: #8 - Thierry Fauck <email address hidden> - 2014-11-28 11:06:41 ==
New fix to allow full testing:
diff --git a/sysdeps/
index c9381c3..5c1dc3a 100644
--- a/sysdeps/
+++ b/sysdeps/
@@ -378,7 +378,8 @@ allocate_hfa(struct fetch_context *ctx, struct process *proc
/* Hetereogeneous struct - get value on GPR or stack. */
if (((hfa_type == ARGTYPE_FLOAT
- && hfa_count <= 8))
+ && hfa_count <= 8
+ && ctx->struct_
== Comment: #9 - Thierry Fauck <email address hidden> - 2014-11-28 11:10:36 ==
As last patch allow full tesing with both sources, changing state
Test Run By root on Fri Nov 28 11:08:10 2014
Native configuration is powerpc64le-
=== tests ===
Schedule of variations:
unix
Running target unix
Using /usr/share/
Using /usr/share/
Using ./config/unix.exp as tool-and-
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
Running ./ltrace.
=== Summary ===
# of expected passes 348
# of unsupported tests 1
tags: | added: architecture-ppc64le bugnameltc-119208 severity-high targetmilestone-inin1504 |
affects: | ubuntu → ltrace (Ubuntu) |
Changed in ltrace (Ubuntu): | |
status: | New → Confirmed |
assignee: | nobody → Taco Screen team (taco-screen-team) |
Changed in ltrace (Ubuntu): | |
importance: | Undecided → High |
status: | Confirmed → Triaged |
Changed in ltrace (Ubuntu Trusty): | |
importance: | Undecided → Low |
Changed in ltrace (Ubuntu): | |
assignee: | Taco Screen team (taco-screen-team) → Adam Conrad (adconrad) |
Changed in ltrace (Ubuntu): | |
assignee: | Adam Conrad (adconrad) → Mathieu Trudel-Lapierre (cyphermox) |
Changed in ltrace (Ubuntu): | |
status: | Triaged → In Progress |
description: | updated |
description: | updated |
Changed in ltrace (Ubuntu Wily): | |
importance: | Undecided → Low |
Changed in ltrace (Ubuntu Trusty): | |
assignee: | nobody → Mathieu Trudel-Lapierre (cyphermox) |
Changed in ltrace (Ubuntu Wily): | |
assignee: | nobody → Mathieu Trudel-Lapierre (cyphermox) |
Changed in ltrace (Ubuntu Trusty): | |
status: | New → In Progress |
------- Comment From <email address hidden> 2014-12-12 16:29 EDT-------
*** Bug 113207 has been marked as a duplicate of this bug. ***