Page MenuHomeFreeBSD

multimedia/libx264: add -znotext to LDFLAGS on i386, for lld
ClosedPublic

Authored by emaste on Sep 17 2018, 3:12 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Apr 18, 2:02 PM
Unknown Object (File)
Mar 14 2024, 10:50 PM
Unknown Object (File)
Mar 14 2024, 10:47 PM
Unknown Object (File)
Mar 14 2024, 10:46 PM
Unknown Object (File)
Mar 11 2024, 7:42 AM
Unknown Object (File)
Feb 20 2024, 10:39 PM
Unknown Object (File)
Jan 27 2024, 9:25 AM
Unknown Object (File)
Jan 21 2024, 11:49 AM

Details

Summary

Example error:

/usr/bin/ld: error: can't create dynamic relocation R_386_PC32 against symbol: gettimeofday in readonly segment; recompile object files with -fPIC

This port links some non-PIC code, which fails with lld as it defaults to disallowing relocations against read-only segments. For i386 we can just add -znotext unconditionally: for GNU BFD ld it just affirms BFD's existing default.

Original version committed in rS479024, this review represents a preferred approach.

I am not a ports committer, so please explicitly mention approval for commit to the ports tree.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

multimedia/libx264/Makefile
17

Reverse line 17 and 18 so it’s declared before variable is used

The variable substitution/evaluation is done at the end so it works both ways; my natural tendency would be to put them in the other order but this was the one used in the first instance of this approach in review D16813 / rP478120 by @mmokhi.

Any change fixing this issue was (and is) explicitly approved (subject to @emaste confidence in solution/QA) per bugzilla issue comment: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230214#c7

This revision is now accepted and ready to land.Sep 18 2018, 3:02 AM
multimedia/libx264/Makefile
17

Does this need to be wrapped in a if defined(${LDFLAGS_${ARCH}}) block to protect a failure if the variable is not defined for the ARCH the port is being built on?

tobik added inline comments.
multimedia/libx264/Makefile
17

Why? ${LDFLAGS_${ARCH}} for some ARCH != i386 evals to an empty string, so all is good.

This revision was automatically updated to reflect the committed changes.