Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 770230

Summary: js doesn't compile on ARM due to "Your compiler does not follow the C++ specification for temporary object destruction order." error
Product: [Fedora] Fedora Reporter: Peter Robinson <pbrobinson>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: jakub, pahan
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-01-26 14:42:51 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 245418    

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.