Bug 197576

Summary: [arm] lang/libobjc2 on ARM does not build the correct exception code.
Product: Ports & Packages Reporter: Sean Bruno <sbruno>
Component: Individual Port(s)Assignee: David Chisnall <theraven>
Status: Closed FIXED    
Severity: Affects Some People CC: Andrew, freebsd-arm
Priority: --- Flags: bugzilla: maintainer-feedback? (theraven)
Version: Latest   
Hardware: arm   
OS: Any   
URL: http://chips.ysv.freebsd.org/data/11armv6-11armv6/2015-02-12_15h33m26s/logs/errors/gnustep-base-1.24.6_6.log

Description Sean Bruno freebsd_committer freebsd_triage 2015-02-12 18:16:58 UTC
I'm a bit confused what the actual error in configure is in the buildlog keeping this from building.  I've linked to the log in the URL.

#define HAVE_OBJC_ROOT_CLASS_ATTRIBUTE 1

configure: exit 1
(end of "config.log")
*** Error code 1

Stop.
make: stopped in /usr/ports/lang/gnustep-base
====>> Cleaning up wrkdir
===>  Cleaning for gnustep-base-1.24.6_6
Comment 1 Bugzilla Automation freebsd_committer freebsd_triage 2015-02-12 18:16:58 UTC
Auto-assigned to maintainer theraven@FreeBSD.org
Comment 2 David Chisnall freebsd_committer freebsd_triage 2015-02-16 10:42:44 UTC
The real error is here:

/usr/local/lib/libobjc.so: undefined reference to `_Unwind_SetIP'
/usr/local/lib/libobjc.so: undefined reference to `_Unwind_SetGR'

This is a bit odd, as both of these are inline functions, which wrap ARM-specific things, in unwind-arm.h in libobjc2:

http://svn.gna.org/viewcvs/*checkout*/gnustep/libs/libobjc2/trunk/unwind-arm.h?revision=37753

I can only imagine getting this if somehow the compiler is not defining __arm__ in the libobjc2 build.
Comment 3 Andrew Turner freebsd_committer freebsd_triage 2015-02-16 11:03:16 UTC
I updated libgcc_s.so to make these functions in r278023, previously they were macros.

https://svnweb.freebsd.org/base?view=revision&revision=278023

There may be issues depending on which header whichever part of libobjc.so that is complaining used. We expect it to be a function, other places think it should be a macro.
Comment 4 David Chisnall freebsd_committer freebsd_triage 2015-02-16 11:15:35 UTC
libobjc2 provides its own version of these, as it has to work on platforms where the generic unwinder only does what the ARM EHABI spec says it does.  They're in the unwind-arm.h header.  One possibility is that we're accidentally including some system unwind.h instead of the correct one when building libobjc2?
Comment 5 Sean Bruno freebsd_committer freebsd_triage 2015-05-02 19:16:14 UTC
http://chips.ysv.freebsd.org/data/11armv6-default/2015-04-26_21h50m34s/logs/libobjc2-1.7_1.log

Builds fine now on armv6 via qemu-bsd-user emulation.