Bug 770230 - js doesn't compile on ARM due to "Your compiler does not follow the C++ specification for temporary object destruction order." error
Summary: js doesn't compile on ARM due to "Your compiler does not follow the C++ speci...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ARMTracker
TreeView+ depends on / blocked
 
Reported: 2011-12-24 14:29 UTC by Peter Robinson
Modified: 2012-01-26 14:42 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-01-26 14:42:51 UTC


Attachments (Terms of Use)

Description Peter Robinson 2011-12-24 14:29:49 UTC
js fails to build on ARM due to the following error during configure:

configure: error: Your compiler does not follow the C++ specification for temporary object destruction order.
RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.y3Ssej (%prep)
    Bad exit status from /var/tmp/rpm-tmp.y3Ssej (%prep)
Child returncode was: 1

http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=238249

Looking at the configure.in test case its documented as:

dnl ========================================================
dnl Test for correct temporary object destruction order
dnl ========================================================
dnl We want to make sure the compiler follows the C++ spec here as 
dnl xpcom and the string classes depend on it (bug 235381).

Comment 1 Pavel Alexeev 2012-01-01 21:08:10 UTC
Are you think it is incorrect check? I think it is gcc issue on arm. Reassigning.

Comment 2 Jakub Jelinek 2012-01-01 21:46:44 UTC
Can you post the relevant config.log snippet (what compiler messages were emitted if any, if it was a compile time failure or runtime failure)?

Can you compile:
extern "C" void exit(int);
class A {
public:
  A(int& x) : mValue(x) {}
  ~A() { mValue--; }
  operator char**() { return 0; }
private:
  int& mValue;
};
void func(char **arg) {}
int m=2;
void test() {
  func(A(m));
  if (m==1) m = 0;
}
int main() {
  test();
  return(m);
}

and run it, see what exit status it returned with?

Comment 3 Peter Robinson 2012-01-26 14:42:51 UTC
Fixed. Issue in js.


Note You need to log in before you can comment on or make changes to this bug.