1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-18 00:10:04 +00:00

emulators/mupen64plus-core: fix build with clang and lld 19

lld 19 has become more strict about 32-bit relocations that require PIC,
resulting in link errors when building emulators/mupen64plus-core:

      LD  libmupen64plus.so.2.0.0
  ld: error: relocation R_386_32 cannot be used against symbol '__gxx_personality_v0'; recompile with -fPIC
  >>> defined in /usr/lib/libcxxrt.so
  >>> referenced by oglft_c.cpp
  >>>               _obj/osd/oglft_c.o:(.eh_frame+0xFA63)

  ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC
  >>> defined in _obj/osd/oglft_c.o
  >>> referenced by oglft_c.cpp
  >>>               _obj/osd/oglft_c.o:(.eh_frame+0xFA81)

  ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC
  >>> defined in _obj/osd/oglft_c.o
  >>> referenced by oglft_c.cpp
  >>>               _obj/osd/oglft_c.o:(.eh_frame+0xFAB1)

  ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC
  >>> defined in _obj/osd/oglft_c.o
  >>> referenced by oglft_c.cpp
  >>>               _obj/osd/oglft_c.o:(.eh_frame+0xFAE1)

  [...more of these...]

Make it compile with -fPIC even on i386, by adjusting the PIC make
variable. This also removes the need to use -Wl,-znotext as a workaround.

PR:		281906
Approved by:	maintainer timeout (2 weeks)
MFH:		2024Q4
This commit is contained in:
Dimitry Andric 2024-10-06 23:40:43 +02:00
parent 8cf728289c
commit 5416735dea
2 changed files with 20 additions and 1 deletions

View File

@ -19,7 +19,6 @@ USE_GL?= glu
USE_SDL?= sdl2
USE_LDCONFIG?= yes
ONLY_FOR_ARCHS= i386 amd64
LDFLAGS_i386= -Wl,-znotext
RELEASE_DATE?= 20240714
OPTFLAGS= #

View File

@ -0,0 +1,20 @@
--- projects/unix/Makefile.orig 2024-10-06 21:34:50 UTC
+++ projects/unix/Makefile
@@ -61,7 +61,7 @@ ifneq ("$(filter x86_64 amd64,$(HOST_CPU))","")
CPU := X86
ifeq ("$(BITS)", "32")
ARCH_DETECTED := 64BITS_32
- PIC ?= 0
+ PIC ?= 1
else
ARCH_DETECTED := 64BITS
PIC ?= 1
@@ -70,7 +70,7 @@ ifneq ("$(filter pentium i%86,$(HOST_CPU))","")
ifneq ("$(filter pentium i%86,$(HOST_CPU))","")
CPU := X86
ARCH_DETECTED := 32BITS
- PIC ?= 0
+ PIC ?= 1
endif
ifneq ("$(filter ppc macppc socppc powerpc,$(HOST_CPU))","")
CPU := PPC