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