Thursday, February 29, 2024

Re: missing endbr64

On Wednesday, February 28, 2024 22:49 CET, Theo Buehler <tb@theobuehler.org> wrote:

> On Wed, Feb 28, 2024 at 10:44:27PM +0100, Sebastian Reitenbach wrote:
> > Hi,
> > On Wednesday, February 28, 2024 21:13 CET, Theo Buehler <tb@theobuehler.org> wrote:
> >
> > > On Sun, Feb 25, 2024 at 10:13:44PM +0100, Sebastian Reitenbach wrote:
> > > > On Sunday, February 25, 2024 16:44 CET, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
> > > >

Tested your patch, the warnings are gone. A couple of apps tested, seems to work.
I don't have a machine where it would cause aborts.

Additionally, the typo fix (which I found in upstream already fixed) also prevents the
Git checkout at configure stage. The revision bump might not be needed, as no packages
could have been built, but someone might have manually built it?

OK?

Sebastian

Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/gnustep/libobjc2/Makefile,v
diff -u -r1.34 Makefile
--- Makefile 28 Feb 2024 19:52:15 -0000 1.34
+++ Makefile 29 Feb 2024 09:54:53 -0000
@@ -4,7 +4,7 @@

# note: this port does not use the gnustep module
VERSION = 2.2
-REVISION = 0
+REVISION = 1
GH_ACCOUNT = gnustep
GH_PROJECT = libobjc2
GH_TAGNAME = v${VERSION}
Index: patches/patch-CMakeLists_txt
===================================================================
RCS file: patches/patch-CMakeLists_txt
diff -N patches/patch-CMakeLists_txt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-CMakeLists_txt 29 Feb 2024 09:54:53 -0000
@@ -0,0 +1,12 @@
+Index: CMakeLists.txt
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -126,7 +126,7 @@ endif ()
+
+ find_package(tsl-robin-map)
+
+-if (NOT tls-robin-map_FOUND)
++if (NOT tsl-robin-map_FOUND)
+ FetchContent_Declare(
+ robinmap
+ GIT_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 29 Feb 2024 09:54:53 -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 29 Feb 2024 09:54:53 -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 29 Feb 2024 09:54:53 -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"

No comments:

Post a Comment