[bug #53338] base configure script does not detect nonfragile ABI correctly

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
URL:
  <http://savannah.gnu.org/bugs/?53338>

                 Summary: base configure script does not detect nonfragile ABI
correctly
                 Project: GNUstep
            Submitted by: leeg
            Submitted on: Tue 13 Mar 2018 09:34:29 PM UTC
                Category: Base/Foundation
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any

    _______________________________________________________

Details:

Platform: linux (fedora core 27)
Compiler: clang 5.0.1
ObjC runtime: libobjc2

GNUstep-make was configured with '--enable-objc-nonfragile-abi'. I see in the
gnustep-config output:

$ gnustep-config --objc-flags
-MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1
-DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -fexceptions
-fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -fobjc-nonfragile-abi
-D_NONFRAGILE_ABI -pthread -fPIC -g -DDEBUG -fno-omit-frame-pointer -Wall
-DGSWARN -DGSDIAGNOSE -Wno-import -fobjc-runtime=gnustep-1.8.1 -fblocks
-fobjc-runtime=gnustep-1.8.1 -fgnu-runtime
-fconstant-string-class=NSConstantString -I.
-I/home/leeg/GNUstep/Library/Headers -I/usr/local/include

GNUstep-base configure script, when configured either with no flags or with
--disable-mixedabi, does not detect the nonfragile abi. Then building -base
fails, because I requested the nonfragile ABI but it can't find it. I find
that if I compile the test program:

$ clang config/config.non-fragile-ivars.m
$ ./a.out
$ echo $?
1 [i.e. no nonfragile ABI detected]

however:

$ clang -fobjc-runtime=gnustep-1.8.1 config/config.non-fragile-ivars.m
$ ./a.out
$ echo $?
0 [i.e. it was detected!]

If I edit GSConfig.h by hand to change GS_NONFRAGILE=1, then -base builds and
'make check' succeeds.

The expected behaviour is that ./configure correctly detects the nonfragile
ABI availability.




    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
Follow-up Comment #1, bug #53338 (project gnustep):

I found the issue in the base/configure script that is causing this problem.
the -fobjc-nonfragile-abi flag was removed from the script when it is testing
for non fragile abi support so it always fails. This issue starts on line 8061
and a missing line between 8081 and 8082.  I'll try to attach a screen shot of
the file comparison.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
Additional Item Attachment, bug #53338 (project gnustep):

File name: Screen Shot 2018-04-22 at 12.25.22 PM.png Size:902 KB


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
Follow-up Comment #2, bug #53338 (project gnustep):

Sorry I missed seeing the original bug report here.

I think this is probably referencing some old version of GNUstep, because it's
talking about '-fobjc-nonfragile-abi'.

David said that option doesn't work properly in clang, so it has been removed
from gnustep (so there should be no more '--enable-objc-nonfragile-abi' option
in gnustep-make).

When you want the nonfragile abi, you should be configuring gnustep-make using
--with-library-combo=ng-gnu-gnu which should automatically use the nonfragile
abi.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
Follow-up Comment #3, bug #53338 (project gnustep):

Except that ARC requires the -fobjc-nonfragile-abi flag.  If you specify
-fobjc-arc without -fobjc-nonfragile-abi flag then the compile will fail with
the message "error: -fobjc-arc is not supported on platforms using the legacy
runtime"

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep
Reply | Threaded
Open this post in threaded view
|

[bug #53338] base configure script does not detect nonfragile ABI correctly

dsdsdsds
Follow-up Comment #4, bug #53338 (project gnustep):

> Except that ARC requires the -fobjc-nonfragile-abi flag.

It doesn't on my systems (and shouldn't afaik with any version of clang).  I
expect the error you got is because you aren't specifying the correct runtime,
not because you aren't specifying the obsolete/broken -fobjc-nonfragile-abi
flag.

If you are using current gnustep-make configured to support it (ie
--with-library-combo=ng-gnu-gnu) then it should work because the build system
should be compiling with the correct flags, but if you are specifying compiler
flags manually in environment variables etc you are expected to know what you
are doing and it's not really a gnustep issue.

Try configuring gnustep-make to use the new compiler/runtime features (ng),
and see if there are any problems then.


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?53338>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/bug-gnustep