Building on OS X: Undefined symbols ___emutls_v.prng_state and ___emutls_v.prng_state_data

Bug #1453436 reported by Siguza
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Won't Fix
Undecided
Unassigned

Bug Description

Trying to build qemu on my system fails during linking with the error:

Undefined symbols for architecture x86_64:
  "___emutls_v.prng_state", referenced from:
      _main in region-test.o
      __GLOBAL__sub_I_65535_0_region_test.c in region-test.o
  "___emutls_v.prng_state_data", referenced from:
      _main in region-test.o
      __GLOBAL__sub_I_65535_0_region_test.c in region-test.o

My setup:

OS: OS X 10.10.3, 64bit
gcc: 5.1.0
clang: 6.1.0

configure command:

configure --prefix="$HOME/local" --cc=clang --host-cc=clang --cxx=clang++

It makes no difference whether I try to build in the source directory or somewhere else.
It is the same for qemu release 2.3.0 and qemu git@f8340b360b9bc29d48716ba8aca79df2b9544979.

Now this is clearly happening in the pixman submodule, but it does not seem to be a pixman issue, as I can clone git://anongit.freedesktop.org/pixman @cf086d4949092861dc3729465a3881d229cc1060 and build it without any errors with just :

configure --prefix="$HOME/local"
make

It also works with

configure --prefix="$HOME/local" CC=clang CXX=clang++
make

although then OpenMP is disabled.
Also, running

nm qemu/pixman/test/utils.o

gives me (amongst other stuff):

0000000000000020 C ___emutls_v.prng_state
0000000000000020 C ___emutls_v.prng_state_data

So the symbols are actually there, it's really just linking that fails.

Tags: build osx
Revision history for this message
Peter Maydell (pmaydell) wrote : Re: [Qemu-devel] [Bug 1453436] [NEW] Building on OS X: Undefined symbols ___emutls_v.prng_state and ___emutls_v.prng_state_data

On 9 May 2015 at 19:19, Molt <email address hidden> wrote:
> Public bug reported:
>
> Trying to build qemu on my system fails during linking with the error:
>
> Undefined symbols for architecture x86_64:
> "___emutls_v.prng_state", referenced from:
> _main in region-test.o
> __GLOBAL__sub_I_65535_0_region_test.c in region-test.o
> "___emutls_v.prng_state_data", referenced from:
> _main in region-test.o
> __GLOBAL__sub_I_65535_0_region_test.c in region-test.o
>
> My setup:
>
> OS: OS X 10.10.3, 64bit
> gcc: 5.1.0
> clang: 6.1.0
>
> configure command:
>
> configure --prefix="$HOME/local" --cc=clang --host-cc=clang
> --cxx=clang++

I build on OSX 10.10.3 with that clang version, but I build with
the system pixman (in /opt/X11 and presumably part of the optional
X11 OSX download), so I guess that's the difference in our setups
here.

I tried building having configured --without-system-pixman,
but that seems to fail to compile much earlier than your error:

make[3]: *** No rule to make target `pixman-combine.h.template',
needed by `pixman-combine32.h'. Stop.

-- PMM

Revision history for this message
Siguza (siguza) wrote :

I have XQuartz 2.7.7 installed and there is no pixman in /opt/X11/bin.

Revision history for this message
Peter Maydell (pmaydell) wrote :

It's /opt/X11/lib/libpixman-1.dylib and /opt/X11/include/pixman-1/ for me, but yes, it's possible I've got that from somewhere other than XQuartz.

Revision history for this message
Siguza (siguza) wrote :

Ah well, I only have the "normal" PATH set, not library or include path.
But I managed to build qemu now by just building pixman separately.

Revision history for this message
Thomas Huth (th-huth) wrote :

According to comment #4, the build finally worked, so I'm closing this ticket now.

Changed in qemu:
status: New → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.