mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-22 05:24:14 +00:00

MacOSX doesn't pull .o files from .a archives if the symbol that it requires is one which the .o file defines as a common symbol. (Common symbols are those declared without "extern"; the linker will merge together common symbols with the same name, so redeclaring the same variable in two compilation units results in them referring to the same symbol rather than a compilation error). This MacOSX difference from traditional linker behaviour means that "make check" produces link errors: Undefined symbols for architecture x86_64: "_cur_mon", referenced from: _error_vprintf in libqemuutil.a(qemu-error.o) _error_printf in libqemuutil.a(qemu-error.o) _error_printf_unless_qmp in libqemuutil.a(qemu-error.o) _error_print_loc in libqemuutil.a(qemu-error.o) _error_report in libqemuutil.a(qemu-error.o) ld: symbol(s) not found for architecture x86_64 in this case because "cur_mon" is a common symbol in libqemustub.a(mon-set-error.o). In QEMU we don't make any use at all of the common symbol functionality, so we can avoid this problem entirely simply by compiling with -fno-common. Enable this option for all builds, not just MacOSX, so that if we ever inadvertently introduce multiple definitions of some variable that will be immediately spotted as a build error rather than only breaking the MacOSX build. Suggested-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Message-id: 1393451610-24617-1-git-send-email-peter.maydell@linaro.org
…
…
…
…
…
Read the documentation in qemu-doc.html or on http://wiki.qemu-project.org - QEMU team
Description
Languages
C
82.5%
C++
7%
Python
3.3%
Dylan
2.8%
Shell
1.5%
Other
2.6%