On Sun, Feb 25, 2024 at 10:13:44PM +0100, Sebastian Reitenbach wrote:
> On Sunday, February 25, 2024 16:44 CET, Mark Kettenis 
> <mark.kette...@xs4all.nl> wrote:
> 
> > > x11/gnustep/libobjc2.log
> > > ld: warning: __objc_block_trampoline_sret: missing endbr64
> > > ld: warning: __objc_block_trampoline: missing endbr64
> > > ld: warning: objc_msgSend: missing endbr64
> > > ld: warning: objc_msgSend_fpret: missing endbr64
> > > ld: warning: objc_msgSend_stret: missing endbr64
> > 
> > I guess this is very similay to devel/objfw.  Just add endbr64 to
> > those functions like we did there.  No aarch64 support here by the
> > looks of it.
> 
> Above version of libobjc2 is old, but due to build errors, and runtime 
> errors, I was 
> unable to upgrade. However, a new version was released just a few days ago, 
> and that one even builds
> and doesn't show runtime errors so far.
> I updated one test box, to get these new ld warnings, there are only these 
> left on amd64:
> 
> ld: warning: objc_msgSend: missing endbr64
> ld: warning: objc_msgSend_fpret: missing endbr64
> ld: warning: objc_msgSend_stret: missing endbr64
> 
> Which are all the platforms, that need such fix? I see objc_msgSend_fpret for 
> aarch64, arm, 
> amd64, i386, mips and riscv64.
> 
> Attached patch to update to the new 2.2 release, without any fixes for the 
> missing endbr64.
> 
> Sebastian

Not sure what to do for riscv64.

The diff below on top of what you committed a few minutes ago should do
the trick. However, the port needs fixing because of this:

[1/9] Performing download step (git clone) for 'robinmap-populate'
Cloning into 'robinmap-src'...
fatal: unable to access 'https://github.com/Tessil/robin-map/': Could not 
resolve host: github.com
Cloning into 'robinmap-src'...
fatal: unable to access 'https://github.com/Tessil/robin-map/': Could not 
resolve host: github.com
Cloning into 'robinmap-src'...
fatal: unable to access 'https://github.com/Tessil/robin-map/': Could not 
resolve host: github.com
-- Had to git clone more than once: 3 times.
CMake Error at 
robinmap-subbuild/robinmap-populate-prefix/tmp/robinmap-populate-gitclone.cmake:39
 (message):
  Failed to clone repository: 'https://github.com/Tessil/robin-map/'


Index: patches/patch-block_trampolines_S
===================================================================
RCS file: patches/patch-block_trampolines_S
diff -N patches/patch-block_trampolines_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-block_trampolines_S   28 Feb 2024 20:08:24 -0000
@@ -0,0 +1,19 @@
+Index: block_trampolines.S
+--- block_trampolines.S.orig
++++ block_trampolines.S
+@@ -22,6 +22,7 @@
+ // x86-64 trampoline
+ 
////////////////////////////////////////////////////////////////////////////////
+ .macro trampoline arg0, arg1
++      endbr64
+       mov   -0x1007(%rip), \arg1   # Load the block pointer into the second 
argument
+       xchg  \arg1, \arg0           # Swap the first and second arguments
+       jmp   *-0x1008(%rip)         # Call the block function
+@@ -121,6 +122,7 @@
+ // AArch64 (ARM64) trampoline
+ 
////////////////////////////////////////////////////////////////////////////////
+ .macro trampoline arg0, arg1
++      bti c
+       adr x17, #-4096
+       mov \arg1, \arg0
+       ldp \arg0, x17, [x17]
Index: patches/patch-objc_msgSend_aarch64_S
===================================================================
RCS file: patches/patch-objc_msgSend_aarch64_S
diff -N patches/patch-objc_msgSend_aarch64_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-objc_msgSend_aarch64_S        28 Feb 2024 20:08:24 -0000
@@ -0,0 +1,12 @@
+Index: objc_msgSend.aarch64.S
+--- objc_msgSend.aarch64.S.orig
++++ objc_msgSend.aarch64.S
+@@ -47,7 +47,7 @@
+ #   define EH_NOP .seh_nop
+ #else
+ // Marks the real start and end of the function
+-#   define EH_START .cfi_startproc
++#   define EH_START .cfi_startproc; bti c
+ #   define EH_END .cfi_endproc
+ 
+ // The following directives are either not
Index: patches/patch-objc_msgSend_x86-64_S
===================================================================
RCS file: patches/patch-objc_msgSend_x86-64_S
diff -N patches/patch-objc_msgSend_x86-64_S
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-objc_msgSend_x86-64_S 28 Feb 2024 20:08:24 -0000
@@ -0,0 +1,12 @@
+Index: objc_msgSend.x86-64.S
+--- objc_msgSend.x86-64.S.orig
++++ objc_msgSend.x86-64.S
+@@ -8,7 +8,7 @@
+ #     define SECOND_ARGUMENT %rdx
+ #     define THIRD_ARGUMENT %r8
+ #else
+-#     define START_PROC(x) .cfi_startproc
++#     define START_PROC(x) .cfi_startproc; endbr64
+ #     define END_PROC(x) .cfi_endproc
+ #     define FRAME_OFFSET(x) .cfi_adjust_cfa_offset x
+ #     define FIRST_ARGUMENT_STR "%rdi"

Reply via email to