Opened 4 years ago

Closed 4 years ago

#61398 closed defect (duplicate)

gcc48: error: non-local symbol required in directive

Reported by: dbl001 (dbl) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.6.3
Keywords: Cc:
Port: gcc48

Description

Building gcc4.8 on OS X 10.11.6.

:info:build <stdin>:69:17: error: non-local symbol required in directive
:info:build         .no_dead_strip L_OBJC_Module
:info:build                        ^
:info:build make[2]: *** [NXConstStr.lo] Error 1

Change History (7)

comment:1 Changed 4 years ago by kencu (Ken)

This is a well-known error -- the clang assembler doesn't like symbols that start with L.

THere is a fix here 56996 but i never pushed it to the main repo.

And there are a couple of other tickets in Trac about the same error. Search for "L_OBJC_Module" in the search box in the top right corner here and you'll find them.

comment:2 Changed 4 years ago by mf2k (Frank Schima)

Keywords: gcc4.8 removed
Port: gcc48 added; gcc4.8 removed

comment:3 Changed 4 years ago by dbl001 (dbl)

Do you think that your patch 'gcc48-high-sierra.zip' work on:

  1. 10.11.6
  2. Xcode 8.2.1?

Thanks in advance.

Version 1, edited 4 years ago by dbl001 (dbl) (previous) (next) (diff)

comment:4 Changed 4 years ago by kencu (Ken)

yes it probably will -- it did in 2018, and nothing much has changed.

MacPorts as a group more-or-less made a decision to cut off trying to fix older gcc versions (< gcc5) for newer systems. Are you able to use gcc5 (or greater)? It works better.

If only gcc48 can fulfill you, then the patch I posted up in the the other ticket will likely work with minimal hassles. The test suite for g++ had too many errors for me to push on it in 2018, and the same logic will hold now.

comment:5 Changed 4 years ago by dbl001 (dbl)

Do you advise that I remove gcc48 and then make gcc9 or gcc10 the active port?

$ port select --list gcc
Available versions for gcc:
	mp-gcc10
	mp-gcc48 (active)
	mp-gcc49
	mp-gcc5
	mp-gcc9
	none

comment:6 in reply to:  5 Changed 4 years ago by kencu (Ken)

Replying to dbl001:

Do you advise that I remove gcc48 and then make gcc9 or gcc10 the active port?

Oh, absolutely, if your code base has been maintained at all. gcc10 has many improvements over gcc48, but some old, bitrotted code may not compile with gcc10 without updates.

Every version of a compiler is more strict than the one before, so code needs to be cleaned up on an ongoing basis. Which is good, really...

comment:7 in reply to:  4 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: duplicate
Status: newclosed
Summary: Error: Failed to build gcc48: command execution failedgcc48: error: non-local symbol required in directive

Replying to kencu:

MacPorts as a group more-or-less made a decision to cut off trying to fix older gcc versions (< gcc5) for newer systems.

It's more that nobody wanted to spend time developing a fix. If you did, why not commit it?

Duplicate of #56996.

Note: See TracTickets for help on using tickets.