What steps will reproduce the problem?
1. Build with g++ -m32 (not defining -msse2)
I did:
$ cmake . -DCMAKE_CXX_FLAGS=-m32
with g++-4.8.4
2. $ nm -n libyuv.a | grep ScaleRowDown2_SSE2
U ScaleRowDown2_SSE2
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
r1437; Linux
Please provide any additional information below.
Currently there are 3 places this is defined in the public headers [1] with
slightly different conditionals. When trying to directly link with the object
files [2] many of the SSE2 symbols are undefined. Matching row.h and
scale_row.h seems to correct the problem in [2]. Any reason these are different?
[1]
include/libyuv/scale_row.h-#if defined(__pnacl__) || defined(__CLR_VER) ||
defined(COVERAGE_ENABLED) || \
include/libyuv/scale_row.h- defined(TARGET_IPHONE_SIMULATOR)
include/libyuv/scale_row.h:#define LIBYUV_DISABLE_X86
--
include/libyuv/planar_functions.h-#if defined(__pnacl__) || defined(__CLR_VER)
|| defined(COVERAGE_ENABLED) || \
include/libyuv/planar_functions.h- defined(TARGET_IPHONE_SIMULATOR) || \
include/libyuv/planar_functions.h- (defined(__i386__) && !defined(__SSE2__))
|| \
include/libyuv/planar_functions.h- ((defined(_MSC_VER) &&
!defined(__clang__)) && defined(__clang__))
include/libyuv/planar_functions.h:#define LIBYUV_DISABLE_X86
--
include/libyuv/row.h-#if defined(__pnacl__) || defined(__CLR_VER) ||
defined(COVERAGE_ENABLED) || \
include/libyuv/row.h- defined(TARGET_IPHONE_SIMULATOR) || \
include/libyuv/row.h- (defined(__i386__) && !defined(__SSE2__))
include/libyuv/row.h:#define LIBYUV_DISABLE_X86
[2]
http://build.webmproject.org/jenkins/job/libvpx%20compile%20options/20254/arch=x
86-linux-gcc,config=rtcd/console
third_party/libyuv/source/scale_any.cc.o: In function `ScaleRowDown2_Any_SSE2':
scale_any.cc:(.text+0x42): undefined reference to `ScaleRowDown2_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown2Linear_Any_SSE2':
scale_any.cc:(.text+0xc2): undefined reference to `ScaleRowDown2Linear_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown2Box_Any_SSE2':
scale_any.cc:(.text+0x142): undefined reference to `ScaleRowDown2Box_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function `ScaleRowDown4_Any_SSE2':
scale_any.cc:(.text+0x1c2): undefined reference to `ScaleRowDown4_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown4Box_Any_SSE2':
scale_any.cc:(.text+0x242): undefined reference to `ScaleRowDown4Box_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown34_Any_SSSE3':
scale_any.cc:(.text+0x2d5): undefined reference to `ScaleRowDown34_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown34_0_Box_Any_SSSE3':
scale_any.cc:(.text+0x375): undefined reference to `ScaleRowDown34_0_Box_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown34_1_Box_Any_SSSE3':
scale_any.cc:(.text+0x415): undefined reference to `ScaleRowDown34_1_Box_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown38_Any_SSSE3':
scale_any.cc:(.text+0x4b5): undefined reference to `ScaleRowDown38_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown38_3_Box_Any_SSSE3':
scale_any.cc:(.text+0x554): undefined reference to `ScaleRowDown38_3_Box_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleRowDown38_2_Box_Any_SSSE3':
scale_any.cc:(.text+0x5f4): undefined reference to `ScaleRowDown38_2_Box_SSSE3'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleARGBRowDown2_Any_SSE2':
scale_any.cc:(.text+0x682): undefined reference to `ScaleARGBRowDown2_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleARGBRowDown2Linear_Any_SSE2':
scale_any.cc:(.text+0x702): undefined reference to
`ScaleARGBRowDown2Linear_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleARGBRowDown2Box_Any_SSE2':
scale_any.cc:(.text+0x782): undefined reference to `ScaleARGBRowDown2Box_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleARGBRowDownEven_Any_SSE2':
scale_any.cc:(.text+0x80e): undefined reference to `ScaleARGBRowDownEven_SSE2'
third_party/libyuv/source/scale_any.cc.o: In function
`ScaleARGBRowDownEvenBox_Any_SSE2':
scale_any.cc:(.text+0x89e): undefined reference to
`ScaleARGBRowDownEvenBox_SSE2'
Original issue reported on code.google.com by jz...@google.com on 25 Jul 2015 at 2:00
Original issue reported on code.google.com by
jz...@google.com
on 25 Jul 2015 at 2:00