Last Comment Bug 719742 - expand-libs doesn't put .i_o object files from Linux PGO first pass in a list
: expand-libs doesn't put .i_o object files from Linux PGO first pass in a list
Status: RESOLVED FIXED
:
Product: Core
Classification: Components
Component: Build Config (show other bugs)
: Trunk
: All All
: -- normal (vote)
: mozilla12
Assigned To: Mike Hommey [:glandium]
:
:
Mentors:
Depends on:
Blocks: 702179 702158
  Show dependency treegraph
 
Reported: 2012-01-20 02:27 PST by Mike Hommey [:glandium]
Modified: 2012-01-30 22:54 PST (History)
5 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
Override OBJ_SUFFIX used in expandlibs on Linux PGO first pass (4.34 KB, patch)
2012-01-20 02:39 PST, Mike Hommey [:glandium]
no flags Details | Diff | Splinter Review
Make expandlibs properly handle the case where OBJ_SUFFIX is .i_o on Linux PGO first pass (11.66 KB, patch)
2012-01-20 10:26 PST, Mike Hommey [:glandium]
no flags Details | Diff | Splinter Review
Make expandlibs properly handle the case where OBJ_SUFFIX is .i_o on Linux PGO first pass (11.67 KB, patch)
2012-01-23 01:37 PST, Mike Hommey [:glandium]
ted: review+
Details | Diff | Splinter Review

Description Mike Hommey [:glandium] 2012-01-20 02:27:33 PST
This leads to a failure to build with skia in bug 702158
Comment 1 Mike Hommey [:glandium] 2012-01-20 02:39:07 PST
Created attachment 590158 [details] [diff] [review]
Override OBJ_SUFFIX used in expandlibs on Linux PGO first pass

Kato-san, can you try this patch?
Comment 2 Makoto Kato [:m_kato] 2012-01-20 03:37:57 PST
build failed on js shell.  Do you need for --verbose?


https://tbpl.mozilla.org/?tree=Try&rev=4b1c3357254b

/tools/python/bin/python2.5 /builds/slave/try-lnx/build/js/src/config/pythonpath.py -I../config /builds/slave/try-lnx/build/js/src/config/expandlibs_exec.py --uselist --  /usr/bin/ccache /tools/gcc-4.5-0moz3/bin/g++ -o js  -fno-rtti -pedantic -Wall -Wpointer-arith -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wcast-align -Wno-invalid-offsetof -Wno-variadic-macros -Werror=return-type -Wno-long-long -pthread -pipe  -DNDEBUG -DTRIMMED -g -fprofile-generate -O3 -fomit-frame-pointer js.i_o jsworkers.i_o jsoptparse.i_o jsheaptools.i_o   -lpthread    -fprofile-generate -Wl,-rpath-link,../../../dist/bin -Wl,-rpath-link,/builds/slave/try-lnx/build/obj-firefox/dist/lib   -Wl,--whole-archive ../../../dist/lib/libmozglue.a -Wl,--no-whole-archive -rdynamic -L../../../dist/bin -L../../../dist/lib -L/builds/slave/try-lnx/build/obj-firefox/dist/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl ../editline/libeditline.a ../libjs_static.a -ldl    
../libjs_static.a(CTypes.i_o): In function `~ClosureInfo':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.h:348: undefined reference to `ffi_closure_free'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::PointerType::CreateInternal(JSContext*, JSObject*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:3305: undefined reference to `ffi_type_pointer'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::InitTypeClasses(JSContext*, JSObject*)':
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:104: undefined reference to `ffi_type_uint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:105: undefined reference to `ffi_type_sint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:106: undefined reference to `ffi_type_sint16'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:107: undefined reference to `ffi_type_sint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:108: undefined reference to `ffi_type_uint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:109: undefined reference to `ffi_type_uint16'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:110: undefined reference to `ffi_type_uint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:111: undefined reference to `ffi_type_sint16'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:112: undefined reference to `ffi_type_uint16'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:113: undefined reference to `ffi_type_sint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:114: undefined reference to `ffi_type_uint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:115: undefined reference to `ffi_type_sint64'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:116: undefined reference to `ffi_type_uint64'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:117: undefined reference to `ffi_type_sint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:118: undefined reference to `ffi_type_uint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:119: undefined reference to `ffi_type_sint64'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:120: undefined reference to `ffi_type_uint64'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:121: undefined reference to `ffi_type_uint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:122: undefined reference to `ffi_type_sint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:123: undefined reference to `ffi_type_sint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:124: undefined reference to `ffi_type_uint32'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:125: undefined reference to `ffi_type_float'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:126: undefined reference to `ffi_type_double'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:127: undefined reference to `ffi_type_float'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:128: undefined reference to `ffi_type_double'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:129: undefined reference to `ffi_type_uint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:130: undefined reference to `ffi_type_sint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:131: undefined reference to `ffi_type_uint8'
/builds/slave/try-lnx/build/js/src/ctypes/typedefs.h:132: undefined reference to `ffi_type_uint16'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::InitTypeClasses(JSContext*, JSObject*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:924: undefined reference to `ffi_type_void'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::StructType::BuildFFIType(JSContext*, JSObject*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:4315: undefined reference to `ffi_type_uint8'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::PrepareCIF(JSContext*, js::ctypes::FunctionInfo*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:4803: undefined reference to `ffi_prep_cif'
../libjs_static.a(CTypes.i_o): In function `~ClosureInfo':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.h:348: undefined reference to `ffi_closure_free'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::CClosure::Create(JSContext*, JSObject*, JSObject*, JSObject*, JS::Value, void (**)())':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:5434: undefined reference to `ffi_closure_alloc'
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:5441: undefined reference to `ffi_prep_closure_loc'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::CClosure::ClosureStub(ffi_cif*, void*, void**, void*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:5531: undefined reference to `ffi_type_void'
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:5579: undefined reference to `ffi_type_void'
../libjs_static.a(CTypes.i_o): In function `js::ctypes::FunctionType::Call(JSContext*, unsigned int, JS::Value*)':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.cpp:5211: undefined reference to `ffi_call'
../libjs_static.a(CTypes.i_o): In function `~ClosureInfo':
/builds/slave/try-lnx/build/js/src/ctypes/CTypes.h:348: undefined reference to `ffi_closure_free'
collect2: ld returned 1 exit status
Comment 3 Mike Hommey [:glandium] 2012-01-20 10:26:30 PST
Created attachment 590244 [details] [diff] [review]
Make expandlibs properly handle the case where OBJ_SUFFIX is .i_o on Linux PGO first pass

This one should work better
Comment 4 Marco Castelluccio [:marco] 2012-01-22 15:52:41 PST
Makoto, did you send the patches to try? If you're busy I can do it.
Comment 5 Makoto Kato [:m_kato] 2012-01-22 19:26:16 PST
build is success, but unfortunately test seems to be failed.

https://tbpl.mozilla.org/php/getParsedLog.php?id=8747589&tree=Try&full=1

TEST-UNEXPECTED-FAIL | /builds/slave/try-lnx64/build/config/tests/unit-expandlibs.py | line 103, _method: ['tmpIQahbi/b.o', 'tmpIQahbi/c.o'] != ['tmpIQahbi/libd.a', 'tmpIQahbi/libf.so']
TEST-UNEXPECTED-FAIL | /builds/slave/try-lnx64/build/config/tests/unit-expandlibs.py | line 103, _method: ['tmpz273wo/b.obj', 'tmpz273wo/c.obj'] != ['tmpz273wo/d.lib', 'tmpz273wo/f.lib']
Comment 6 Mike Hommey [:glandium] 2012-01-23 01:37:02 PST
Created attachment 590656 [details] [diff] [review]
Make expandlibs properly handle the case where OBJ_SUFFIX is .i_o on Linux PGO first pass

Same as the previous one, but with a fix for the test failure (which was an error in the reorder change, and reorder is not (yet) involved when building, so the try build result is still relevant)
Comment 7 Ted Mielczarek [:ted.mielczarek] 2012-01-23 13:10:49 PST
Comment on attachment 590656 [details] [diff] [review]
Make expandlibs properly handle the case where OBJ_SUFFIX is .i_o on Linux PGO first pass

Review of attachment 590656 [details] [diff] [review]:
-----------------------------------------------------------------

::: config/expandlibs.py
@@ +88,5 @@
>  
> +def isObject(path):
> +    '''Returns whether the given path points to an object file, that is,
> +    ends with OBJ_SUFFIX or .i_o'''
> +    return os.path.splitext(path)[1] in [conf.OBJ_SUFFIX, '.i_o']

It's a little weird that this is hardcoded here, but I guess it's hardcoded in config.mk too.
Comment 9 :Ms2ger (⌚ UTC+1/+2) 2012-01-25 07:01:45 PST
https://hg.mozilla.org/mozilla-central/rev/747d47aadb59

Note You need to log in before you can comment on or make changes to this bug.