On Wed, Feb 28, 2024 at 10:44:27PM +0100, Sebastian Reitenbach wrote:
> Hi,
> On Wednesday, February 28, 2024 21:13 CET, Theo Buehler 
> <t...@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.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/'
> > 
> do you have robin-map-1.2.1 installed, or some older version?

Yes I saw it on two machines with 1.2.1 installed.

> I haven't seen that here, but can trash that downloading with a patch if 
> necessary.

PORTS_PRIVSEP should catch such things. (The CMakeLists file also has
a tls vs tsl typo)

> 
> I was just working on it (without having any clue what I'm doing here)
> It got rid of the warnings, but looks differently to what you have.
> I'll try your patch below Tomorrow
> 
> cheers,
> Sebastian
> 
> > 
> > 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