[MacPorts] #49227: gcc5 @5.2.0: fix gcj

MacPorts noreply at macports.org
Mon Oct 19 09:51:31 PDT 2015


#49227: gcc5 @5.2.0: fix gcj
------------------------------------+----------------------
  Reporter:  howarth.at.macports@…  |      Owner:  mww@…
      Type:  defect                 |     Status:  new
  Priority:  Normal                 |  Milestone:
 Component:  ports                  |    Version:  2.3.4
Resolution:                         |   Keywords:  haspatch
      Port:  gcc5                   |
------------------------------------+----------------------

Comment (by howarth.at.macports@…):

 Replying to [comment:10 jeremyhu@…]:
 > graziosi.angelo, you don't understand potential fallout to compiler
 changes.
 >
 > At worst, the compiler produces bad code and anything that it compiled
 needs to be recompiled.  We don't have a mechanism for triggering that, so
 we need to be extra careful taking toolchain changes.
 >
 > If upstream doesn't approve it, we should be even more cautious.
 [[BR]]
 I wouldn't hold my breath for a fix from the FSF gcc developers on this
 issue. The libjava development in FSF gcc (of which boehm-gc is part) is
 pretty much mothballed. There were vague preliminary discussions of
 upgrading the boehm-gc in FSF gcc to 7.2 from the current 6.6 back in 2011
 which never went anywhere...

 http://www.hpl.hp.com/hosted/linux/mail-archives/gc/2011-April/004516.html


 FYI, I don't expect upstream to accept this alignment hack as it is
 specific to darwin's use of a clang 3.7 or later compiled unwinder. Also
 note the comment in boehm-gc/include/private/gcconfig.h...

  * ALIGNMENT is the largest N, such that
  * all pointer are guaranteed to be aligned on N byte boundaries.
  * defining it to be 1 will always work, but perform poorly.

 Since the actual error seen in darwin15 is ....

 * thread #1: tid = 0x20dbb8, 0x00007fff93f37148
 libdyld.dylib`dyld_stub_binder, queue = 'com.apple.main-thread', stop
 reason = instruction step into
     frame #0: 0x00007fff93f37148 libdyld.dylib`dyld_stub_binder
 libdyld.dylib`dyld_stub_binder:
 ->  0x7fff93f37148 <+0>:  pushq  %rbp
     0x7fff93f37149 <+1>:  testq  $0xf, %rsp
     0x7fff93f37150 <+8>:  jne    0x7fff93f372da            ;
 stack_not_16_byte_aligned_error

 setting the ALIGNMENT to 2 simply forces everything on a 16-bit alignment
 and avoids the problem with a reduction in performance. Considering that
 we don't even have a usable gcj on *ANY* gcc past 4.6 and that the
 proposed changes produce *no* regressions in the boehm-gc and libjava test
 suites, I can't see any reason not to use these changes for now.

-- 
Ticket URL: <https://trac.macports.org/ticket/49227#comment:12>
MacPorts <https://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list