I'm running into this same issue internally too.

Its seems kind of unfortunate that `intptr_t*` is neither compatible
with `int64_t*` nor `int32_t*`.  The code in question (which has thus
far been fairly portable) seems to make this assumption.  Could/Should
we change `int32_t*` so that it also `long` and therefore
interchangeable with `size_t`?
On Fri, Jul 27, 2018 at 11:53 AM Dan Gohman <[email protected]> wrote:
>
> Hello,
>
> The change you described to ProtobufOnceType here seems like it should work. 
> Going forward, this code in newer versions of protobuf has changed and looks 
> like it should avoid this problem. This patch:
>
> https://github.com/google/protobuf/commit/0400cca3236de1ca303af38bf81eab332d042b7c#diff-c1a3f69dda9164a2db00255845f17a34R97
>
> changed the type of ProtobufOnceType.
>
> Dan
>
>
> On Fri, Jul 27, 2018 at 2:30 AM, Александр Гурьянов <[email protected]> 
> wrote:
>>
>> I believe that protobuf have this defenition of types (for 32bit build):
>>
>> typedef int32 Atomic32;
>> typedef int64 Atomic64;
>>
>> typedef intptr_t AtomicWord;
>> typedef internal::AtomicWord ProtobufOnceType;
>>
>> AtomicWord should be same as Atomic32, so if you say that intptr_t still
>> remains 32bit integer then easiest fix will be:
>>
>> Change in atomicops.h defenition of AtomicWord to:
>>
>> #ifdef EMSCRIPTEN
>> typedef Atomic32 AtomicWord;
>> #else
>> typedef intptr_t AtomicWord;
>> #endif
>>
>> This will not be safe if "things" are changed. If I force protobuf to 64bit,
>> error still there because Atomic64 will be long long, but intptr_t
>> long. Probably it's
>> better to compile with -DGOOGLE_PROTOBUF_NO_THREAD_SAFETY, but I never
>> have success
>> to building it with that flag.
>>
>> Anyway now it works.
>> пт, 27 июл. 2018 г. в 10:58, Александр Гурьянов <[email protected]>:
>> >
>> > I think because with this change now I can't compile protobuf library,
>> > with this error:
>> >
>> > protobuf-3.0.2/src/google/protobuf/stubs/once.h:135:30: error: cannot
>> > initialize a parameter of type 'const volatile
>> > google::protobuf::internal::Atomic32 *' (aka 'const volatile int *')
>> > with an lvalue of type 'google::protobuf::ProtobufOnceType *' (aka
>> > 'long *')
>> >   if (internal::Acquire_Load(once) != ONCE_STATE_DONE) {
>> >
>> > I just found this error, I will keep your updated if I can solve it.
>> >
>> > вт, 24 июл. 2018 г. в 19:33, Alon Zakai <[email protected]>:
>> > >
>> > > On incoming and 1.38.10 we landed
>> > >
>> > > https://github.com/kripken/emscripten/pull/5916
>> > >
>> > > which changes the type of size_t etc. from int to long. This helps 
>> > > synchronize the asm.js and wasm ABIs, and will be convenient for future 
>> > > versions of wasm (wasm64).
>> > >
>> > > This should not be noticeable in most cases, as it remains a 32-bit 
>> > > integer. However, if you depend on the name mangling of a C++ function 
>> > > that uses `size_t` (like in `EXPORTED_FUNCTIONS`), then the name might 
>> > > change slightly ('m' replaces 'j' for size_t). You also need to rebuild 
>> > > source files to bitcode so your bitcode is in sync with the system 
>> > > libraries after they are rebuilt with this change (rebuilding for any 
>> > > new version is recommended anyhow - we rebuild system libraries at that 
>> > > time). Finally, printf of a size_t using %u etc. may now show a warning 
>> > > (but is harmless), which you can avoid with adding a z, %zu etc.
>> > >
>> > > - Alon
>> > >
>> > > --
>> > > You received this message because you are subscribed to the Google 
>> > > Groups "emscripten-discuss" group.
>> > > To unsubscribe from this group and stop receiving emails from it, send 
>> > > an email to [email protected].
>> > > For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to