[m-rev.] for post-commit review: fix io section of transition guide

Julien Fischer jfischer at opturion.com
Wed Feb 11 14:57:52 AEDT 2015


Hi Zoltan,

On Wed, 11 Feb 2015, Zoltan Somogyi wrote:

>
>
> On Wed, 11 Feb 2015 13:05:36 +1100 (AEDT), Julien Fischer <jfischer at opturion.com> wrote:
>> You seem to have committed another change along with this one
>> which adds MR_hash_string5, MR_hash_string6 etc.   This has
>> broken building of the stage2 library.
>
> That would be the change that Paul is looking at, whose
> log message and diff were posted as {Log,DIFF}.string_hash.
> I forgot that I "git add"ed the files in the same workspace
> without committing and pushing the commit.
>
> However, the diff was tested, and my bootcheck worked
> just fine. What kind of breakage are you experiencing?


When linking the stage 2 library:

....

ranlib -c   libmer_std.a
Undefined symbols for architecture x86_64:
   "_MR_hash_string5", referenced from:
       <predicate 'library.mercury_std_library_module'/1 mode 0> in
library.pic_o
       <predicate
'ops:ClassMethod_for_ops:op_table::ops:mercury_op_table:arity0:::ops.lookup_op_2_2_p'/0
mode 10001> in ops.pic_o
       <predicate
'ops:ClassMethod_for_ops:op_table::ops:mercury_op_table:arity0:::ops.lookup_op_infos_4_4_p'/0
mode 10001> in ops.pic_o
       <predicate
'ops:ClassMethod_for_ops:op_table::ops:mercury_op_table:arity0:::ops.lookup_op_infos_4'/4
mode 0> in ops.pic_o
       <predicate
'ops:ClassMethod_for_ops:op_table::ops:mercury_op_table:arity0:::ops.lookup_op_2'/2
mode 0> in ops.pic_o
       <predicate 'ops.lookup_mercury_postfix_op'/4 mode 0> in ops.pic_o
       <predicate 'ops.lookup_mercury_binary_prefix_op'/5 mode 0> in
ops.pic_o
       ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)

Since there are separate versions of MR_hash_string5 and friends for GCC
and non-GCC, I suspect the issue is that the non-GCC version has not
been tested.

Aside: I haven't look at this in detail but it's possible clang could
also use the GCC definitions of these macros depeding on what GCC
extensions they make use of.

Cheers,
Julien.



More information about the reviews mailing list