Summary: | Mk/Uses/objc.mk: fix build of objc ports with GCC-based architectures | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Ports & Packages | Reporter: | Piotr Kubaj <pkubaj> | ||||||
Component: | Ports Framework | Assignee: | Mark Linimon <linimon> | ||||||
Status: | Closed Not Accepted | ||||||||
Severity: | Affects Only Me | CC: | linimon, theraven | ||||||
Priority: | --- | ||||||||
Version: | Latest | ||||||||
Hardware: | Any | ||||||||
OS: | Any | ||||||||
Attachments: |
|
Description
Piotr Kubaj
2019-02-06 05:29:51 UTC
Created attachment 201787 [details]
updated patch to objc.mk
IIUC the suggested patch changes the behavior on tier-1. I propose a patch not to do so. In addition, don't we need to include a dependency on binutils in the tier-2 case?
(In reply to Mark Linimon from comment #1) I tried linking using base ld and it seems to work, so no binutils from ports are needed. Please can you test whether the -base test suite works (gmake check in the build directory)? On amd64, you can link with BFD ld, but the resulting library doesn't actually work, which is why we enforce lld. A few things don't work with lld, but do work with gold and so we use gold for those (they're marked LLD_UNSAFE). Setting LD=ld is almost certainly wrong, because if ld is ld.bfd then this produces nonfunctional binaries for most Objective-C code. Does just setting LLD_UNSAFE unconditionally on powerpc64 for Objective-C things work? This will make them fall back to gold with the existing logic, and gold appears to work for Objective-C at least as well as lld (on amd64). The log file is also a bit confusing. It appeas to be passing -fobjc-runtime=gnustep-1.8 to the builds. The latest changes set this to gnustep-2.0, which was an ABI-breaking change and is responsible for triggering the issues with BFD ld. Please make sure that this is what you see in the compile lines when testing. Hm, ok. It doesn't work. I guess we can close it :( I'd be quite happy just marking anything that uses objc as broken on platforms that clang doesn't support. GCC supports an archaic dialect of Objective-C and anyone that actually tries to use it will likely have a poor experience. (In reply to David Chisnall from comment #6) No problem, it doesn't work anyway. There's WiP to migrate to Clang and elfv2 for FreeBSD 13 so I hope we'll soon be able to unbreak it. |