[m-rev.] for review: update to Boehm GC v8.2.4

Julien Fischer jfischer at opturion.com
Tue Jul 11 16:24:40 AEST 2023


On Tue, 11 Jul 2023, Peter Wang wrote:

> On Tue, 11 Jul 2023 12:38:40 +1000 Julien Fischer <jfischer at opturion.com> wrote:
>>
>> On Tue, 11 Jul 2023, Peter Wang wrote:
>>
>>> On Tue, 11 Jul 2023 12:16:56 +1000 Julien Fischer <jfischer at opturion.com> wrote:
>>>>
>>>>
>>>> On Tue, 11 Jul 2023, Julien Fischer wrote:
>>>>
>>>>> There is an issue with the 64-bit version of MSVC:
>>>>>
>>>>> ../scripts/ml --grade hlc.gc    --no-mercury-stdlib-dir
>>>>> --trace-init-file ../browser/mer_browser.init --trace-init-file
>>>>> ../mdbcomp/mer_mdbcomp.init --ssdb-init-file ../ssdb/mer_ssdb.init
>>>>> --    -Fechoose_grade.exe choose_grade_init.obj \
>>>>>        choose_grade.obj grade_lib.obj grade_lib.grade_setup.obj
>>>>> grade_lib.grade_solver.obj grade_lib.grade_spec.obj
>>>>> grade_lib.grade_state.obj grade_lib.grade_string.obj
>>>>> grade_lib.grade_structure.obj grade_lib.grade_vars.obj
>>>>> var_value_names.obj \
>>>>>        ../trace/libmer_trace.lib ../trace/libmer_eventspec.lib
>>>>> ../ssdb/libmer_ssdb.lib ../browser/libmer_browser.lib
>>>>> ../mdbcomp/libmer_mdbcomp.lib ../library/libmer_std.lib
>>>>> ../runtime/libmer_rt.lib ../boehm_gc/libgc.lib
>>>>> libgc.lib(misc.obj) : error LNK2019: unresolved external symbol
>>>>> __imp_MessageBoxA referenced in function GC_win32_MessageBoxA
>>>>
>>>> The following diff for boehm_gc/NT_MAKEFILE will resolve it.
>>>> (I don't now why message box in the fatal error handler is now the
>>>> default.)
>>>>
>>>
>>> Thanks. It looks like I made a mistake last year when preparing
>>> release-8_2-mercury-20221006-rc by losing the commit
>>> "Avoid linking with user32.dll on Windows." which does this:
>>>
>>> diff --git a/misc.c b/misc.c
>>> index 99747ecd..239fc433 100644
>>> --- a/misc.c
>>> +++ b/misc.c
>>> @@ -34,6 +34,8 @@
>>> # endif
>>> # define NOSERVICE
>>> # include <windows.h>
>>> +/* Mercury-specific: avoid linking with user32.dll */
>>> +#define DONT_USE_USER32_DLL
>>> #endif
>>>
>>> Should we:
>>> 1. define NO_MSGBOX_ON_ERROR, which prevents calling MessageBox
>>>    completely
>>> 2. define DONT_USE_USER32_DLL, which prevents statically linking to
>>>    user32.dll, but will try to look up MessageBox dynamically?
>>
>> I suggest the latter (i.e. put it back the way it was).  The message
>> box is only used on a fatal error anyway.
>
> Ok, I've pushed a new tag release-8_2-mercury-20230711-rc
> with that change.

Thanks.

A bootcheck with the 64-bit version of MSVC in hlc.gc with the updated
GC succeeds without issue. (I was using the NO_MSGBOX_ON_ERROR fix, but
that shouldn't matter.) I'll do a bootcheck with 32-bit MSVC
(and DONT_USE_USER32_DLL) this evening.

Julien.


More information about the reviews mailing list