[ruby-core:118845] [Ruby master Bug#20677] error: mach-o section specifier requires a segment whose length is between 1 and 16 characters

Issue #20677 has been reported by ryandesign (Ryan Carsten Schmidt). ---------------------------------------- Bug #20677: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters https://bugs.ruby-lang.org/issues/20677 * Author: ryandesign (Ryan Carsten Schmidt) * Status: Open * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ruby (the development version as of 2024-08-11) does not build on macOS 11 or earlier with Apple Clang 1300 or earlier: ``` coroutine/amd64/Context.S:74:14: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters .pushsection .note.gnu.property, "a" ^ coroutine/amd64/Context.S:86:12: error: .popsection without corresponding .pushsection .popsection ^ make: *** [coroutine/amd64/Context.o] Error 1 ``` Here is the bug I filed with MacPorts about this: https://trac.macports.org/ticket/70537 It does build on newer systems with Apple Clang 1316 or later and on older systems when using a newer llvm.org clang compiler but it would be better if a newer compiler were not required. -- https://bugs.ruby-lang.org/

Issue #20677 has been updated by mame (Yusuke Endoh). Assignee set to kjtsanaktsidis (KJ Tsanaktsidis) @kjtsanaktsidis Could you take a look? ---------------------------------------- Bug #20677: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters https://bugs.ruby-lang.org/issues/20677#change-109413 * Author: ryandesign (Ryan Carsten Schmidt) * Status: Open * Assignee: kjtsanaktsidis (KJ Tsanaktsidis) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ruby (the development version as of 2024-08-11) does not build on macOS 11 or earlier with Apple Clang 1300 or earlier: ``` coroutine/amd64/Context.S:74:14: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters .pushsection .note.gnu.property, "a" ^ coroutine/amd64/Context.S:86:12: error: .popsection without corresponding .pushsection .popsection ^ make: *** [coroutine/amd64/Context.o] Error 1 ``` Here is the bug I filed with MacPorts about this: https://trac.macports.org/ticket/70537 It does build on newer systems with Apple Clang 1316 or later and on older systems when using a newer llvm.org clang compiler but it would be better if a newer compiler were not required. -- https://bugs.ruby-lang.org/

Issue #20677 has been updated by kjtsanaktsidis (KJ Tsanaktsidis). Ah. I might have to add some feature detection to the configure script for this when deciding if BTI/PAC is available. Can you tell me, does it work if you compile with `ASFLAGS=-fno-integrated-as`? ---------------------------------------- Bug #20677: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters https://bugs.ruby-lang.org/issues/20677#change-109425 * Author: ryandesign (Ryan Carsten Schmidt) * Status: Open * Assignee: kjtsanaktsidis (KJ Tsanaktsidis) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ruby (the development version as of 2024-08-11) does not build on macOS 11 or earlier with Apple Clang 1300 or earlier: ``` coroutine/amd64/Context.S:74:14: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters .pushsection .note.gnu.property, "a" ^ coroutine/amd64/Context.S:86:12: error: .popsection without corresponding .pushsection .popsection ^ make: *** [coroutine/amd64/Context.o] Error 1 ``` Here is the bug I filed with MacPorts about this: https://trac.macports.org/ticket/70537 It does build on newer systems with Apple Clang 1316 or later and on older systems when using a newer llvm.org clang compiler but it would be better if a newer compiler were not required. -- https://bugs.ruby-lang.org/

Issue #20677 has been updated by kjtsanaktsidis (KJ Tsanaktsidis).
deciding if BTI/PAC is available.
Silly me, this is about amd64. So what you're running into is that I added a `.note.gnu.property` to the amd64 one in https://github.com/ruby/ruby/commit/8ec67052e67dff62b828820e381a94a3acc73459 and it's unconditional in whether the __CET__ macro is defined or not. The arm64 property only gets emitted if BTI/PAC-RET is enabled. I actually don't understand how this works at all even on modern macOS; AFAICT the max section size is still 16 chars (https://github.com/llvm/llvm-project/blob/82fdfd4aa7f60b1f8e715211b925a7f2bf...). Looking into it some more... ---------------------------------------- Bug #20677: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters https://bugs.ruby-lang.org/issues/20677#change-109459 * Author: ryandesign (Ryan Carsten Schmidt) * Status: Open * Assignee: kjtsanaktsidis (KJ Tsanaktsidis) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ruby (the development version as of 2024-08-11) does not build on macOS 11 or earlier with Apple Clang 1300 or earlier: ``` coroutine/amd64/Context.S:74:14: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters .pushsection .note.gnu.property, "a" ^ coroutine/amd64/Context.S:86:12: error: .popsection without corresponding .pushsection .popsection ^ make: *** [coroutine/amd64/Context.o] Error 1 ``` Here is the bug I filed with MacPorts about this: https://trac.macports.org/ticket/70537 It does build on newer systems with Apple Clang 1316 or later and on older systems when using a newer llvm.org clang compiler but it would be better if a newer compiler were not required. -- https://bugs.ruby-lang.org/

Issue #20677 has been updated by kjtsanaktsidis (KJ Tsanaktsidis). https://github.com/ruby/ruby/pull/11405 - I think this should fix it. It seems new toolchains truncate the section name, rather than throwing that error about "length is between 1 and 16 characters", but in any case the section is meaningless on MacOS so it's best to just not emit it. ---------------------------------------- Bug #20677: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters https://bugs.ruby-lang.org/issues/20677#change-109460 * Author: ryandesign (Ryan Carsten Schmidt) * Status: Open * Assignee: kjtsanaktsidis (KJ Tsanaktsidis) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ruby (the development version as of 2024-08-11) does not build on macOS 11 or earlier with Apple Clang 1300 or earlier: ``` coroutine/amd64/Context.S:74:14: error: mach-o section specifier requires a segment whose length is between 1 and 16 characters .pushsection .note.gnu.property, "a" ^ coroutine/amd64/Context.S:86:12: error: .popsection without corresponding .pushsection .popsection ^ make: *** [coroutine/amd64/Context.o] Error 1 ``` Here is the bug I filed with MacPorts about this: https://trac.macports.org/ticket/70537 It does build on newer systems with Apple Clang 1316 or later and on older systems when using a newer llvm.org clang compiler but it would be better if a newer compiler were not required. -- https://bugs.ruby-lang.org/
participants (3)
-
kjtsanaktsidis (KJ Tsanaktsidis)
-
mame (Yusuke Endoh)
-
ryandesign (Ryan Carsten Schmidt)