Re: tools-windows-msvc runtime error

Frederik Seiffert <[email protected]> Tue, 18 Jul 2023 12:47:31 +0200
Newsgroups gmane.comp.lib.gnustep.devel,gmane.comp.lib.gnustep.bugs,gmane.comp.lib.gnustep.general
Message-ID <[email protected]>
I tried adding /INCREMENTAL:NO, but the issue persists.

Also the documentation says that incremental linking is disabled when =
the output file doesn=E2=80=99t exist, which is confirmed by this log =
after deleting the .exe:
> LINK : test.exe not found or not built by the last incremental link; =
performing full link

Frederik


> Am 18.07.2023 um 11:07 schrieb David Chisnall =
<[email protected]>:
>=20
> Did you remember to disable incremental linking?
>=20
> Last time I tested it, LINK.EXE did work, but if you had incremental =
linking enabled (I think it=E2=80=99s on by default?) then it inserts =
random padding into the Objective-C runtime=E2=80=99s metadata sections, =
which corrupt various things.
>=20
> David
>=20
>> On 18 Jul 2023, at 08:34, Frederik Seiffert <[email protected]> =
wrote:
>>=20
>> Thanks, I reproduced the issue here. It turns out using the Microsoft =
linker causes this issue, but using LLD works fine. I=E2=80=99m not sure =
why or since when this is, as using link.exe definitely worked for me at =
one point, but now using either VS 2019 or 2022 causes this crash as =
soon as objc_msgSend() is called. Maybe David has an idea what could be =
going on here?
>>=20
>> Anyway, passing -fuse-ld=3Dlld should get you going. I would also add =
/Z7 to produce debug symbols as well:
>>=20
>> clang-cl -I C:\GNUstep\x64\Debug\include -fobjc-runtime=3Dgnustep-2.0 =
-Xclang -fexceptions -Xclang -fobjc-exceptions -fblocks -DGNUSTEP =
-DGNUSTEP_WITH_DLL -DGNUSTEP_RUNTIME=3D1 -D_NONFRAGILE_ABI=3D1 =
-D_NATIVE_OBJC_EXCEPTIONS -DGSWARN -DGSDIAGNOSE /MDd /Z7 /c test.m
>>=20
>> clang-cl test.obj gnustep-base.lib objc.lib dispatch.lib -fuse-ld=3Dlld=
 /MDd /Z7 -o test.exe /link /LIBPATH:C:\GNUstep\x64\Debug\lib
>>=20
>> I=E2=80=99ve updated the toolchain readme to add this flag in the =
example.
>>=20
>> Hope that helps.
>> Frederik
>>=20
>>=20
>>> Am 18.07.2023 um 03:00 schrieb loserist <[email protected]>:
>>>=20
>>> Sure! The following is it:
>>>=20
>>> * thread #1, stop reason =3D Exception 0xc0000005 encountered at =
address 0x7ffcec4e1048: Access violation reading locatio
>>> n 0x00000000
>>> * frame #0: 0x00007ffcec4e1048 objc.dll`objc_msgSend + 40
>>> frame #1: 0x00007ff645cc1154 abc.exe
>>> frame #2: 0x00007ff645cc142c abc.exe
>>> frame #3: 0x00007ffcfb967614 kernel32.dll`BaseThreadInitThunk + 20
>>> frame #4: 0x00007ffcfc1826b1 ntdll.dll`RtlUserThreadStart + 33
>>> Thanks!
>>=20
>>=20
>=20