diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2024-10-06 21:40:43 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2024-10-20 10:01:20 +0000 |
commit | fd6294088c037ae77d6bcd0efa50c585d97c8d08 (patch) | |
tree | a813f9d372500a828d5d4978d428a2c3b7ed94cd | |
parent | 045150b2cda816ef0410ab12b6ce155369fd6dd4 (diff) |
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
(cherry picked from commit 5416735dea6160ac4efb3cd847936a3213ab1502)
-rw-r--r-- | emulators/mupen64plus-core/Makefile | 1 | ||||
-rw-r--r-- | emulators/mupen64plus-core/files/patch-projects_unix_Makefile | 20 |
2 files changed, 20 insertions, 1 deletions
diff --git a/emulators/mupen64plus-core/Makefile b/emulators/mupen64plus-core/Makefile index 0193eebc1d44..eef7478a88da 100644 --- a/emulators/mupen64plus-core/Makefile +++ b/emulators/mupen64plus-core/Makefile @@ -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= # diff --git a/emulators/mupen64plus-core/files/patch-projects_unix_Makefile b/emulators/mupen64plus-core/files/patch-projects_unix_Makefile new file mode 100644 index 000000000000..6445ad2a0454 --- /dev/null +++ b/emulators/mupen64plus-core/files/patch-projects_unix_Makefile @@ -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 |