Closed
Bug 688999
Opened 13 years ago
Closed 13 years ago
Modifying jemalloc.c doesn't trigger enough relinks
Categories
(Firefox Build System :: General, defect)
Tracking
(Not tracked)
RESOLVED
DUPLICATE
of bug 644608
People
(Reporter: justin.lebar+bug, Unassigned)
References
Details
When I modify jemalloc.c and do a top-level recompile, I don't see anything other than mozutils being relinked. As a result, the changes to jemalloc don't appear when I run Firefox.
I think this is due to bug 677501?
Comment 1•13 years ago
|
||
Mmmmmm...
$ touch memory/jemalloc/jemalloc.c
$ make -C objdir/memory
make: Entering directory `/mnt/objdir/memory'
make export
make[1]: Entering directory `/mnt/objdir/memory'
make -C jemalloc export
make[2]: Entering directory `/mnt/objdir/memory/jemalloc'
/mnt/objdir/config/nsinstall -R -m 644 /mnt/memory/jemalloc/jemalloc.h /mnt/memory/jemalloc/jemalloc_types.h ../../dist/include
make[2]: Leaving directory `/mnt/objdir/memory/jemalloc'
make -C mozutils export
make[2]: Entering directory `/mnt/objdir/memory/mozutils'
make[2]: Nothing to be done for `export'.
make[2]: Leaving directory `/mnt/objdir/memory/mozutils'
make -C mozalloc export
make[2]: Entering directory `/mnt/objdir/memory/mozalloc'
/mnt/objdir/config/nsinstall -R -m 644 /mnt/memory/mozalloc/mozalloc.h /mnt/memory/mozalloc/mozalloc_abort.h /mnt/memory/mozalloc/mozalloc_macro_wrappers.h /mnt/memory/mozalloc/mozalloc_oom.h /mnt/memory/mozalloc/mozalloc_undef_macro_wrappers.h /mnt/memory/mozalloc/throw_gcc.h ../../dist/include/mozilla
make[2]: Leaving directory `/mnt/objdir/memory/mozalloc'
make[1]: Leaving directory `/mnt/objdir/memory'
make libs
make[1]: Entering directory `/mnt/objdir/memory'
make -C jemalloc libs
make[2]: Entering directory `/mnt/objdir/memory/jemalloc'
jemalloc.c
gcc -o jemalloc.o -c -DOSTYPE=\"Linux2.6.38-bpo\" -DOSARCH=Linux -I/mnt/memory/jemalloc -I. -I../../dist/include -I../../dist/include/nsprpub -I/mnt/objdir/dist/include/nspr -I/mnt/objdir/dist/include/nss -fPIC -Wall -W -Wno-unused -Wpointer-arith -Wdeclaration-after-statement -Wcast-align -W -pedantic -Wno-long-long -fno-strict-aliasing -pthread -ffunction-sections -fdata-sections -pipe -DNDEBUG -DTRIMMED -g -Os -freorder-blocks -fomit-frame-pointer -include ../../mozilla-config.h -DMOZILLA_CLIENT -MD -MF .deps/jemalloc.pp /mnt/memory/jemalloc/jemalloc.c
rm -f libjemalloc.a
/usr/bin/python2.6 /mnt/config/pythonpath.py -I../../config /mnt/config/expandlibs_gen.py jemalloc.o > libjemalloc.a.desc
make[2]: Leaving directory `/mnt/objdir/memory/jemalloc'
make -C mozutils libs
make[2]: Entering directory `/mnt/objdir/memory/mozutils'
rm -f libmozutils.a libmozutils.a.desc
/usr/bin/python2.6 /mnt/config/pythonpath.py -I../../config /mnt/config/expandlibs_exec.py --extract -- ar cr libmozutils.a ../jemalloc/libjemalloc.a
ranlib libmozutils.a
/usr/bin/python2.6 /mnt/config/pythonpath.py -I../../config /mnt/config/expandlibs_gen.py ../jemalloc/libjemalloc.a > libmozutils.a.desc
/mnt/objdir/config/nsinstall -R -m 644 libmozutils.a libmozutils.a.desc ../../dist/lib
make[2]: Leaving directory `/mnt/objdir/memory/mozutils'
make -C mozalloc libs
make[2]: Entering directory `/mnt/objdir/memory/mozalloc'
/mnt/objdir/config/nsinstall -R -m 755 libmozalloc.so ../../dist/lib
/mnt/objdir/config/nsinstall -R -m 755 libmozalloc.so ../../dist/bin
/mnt/objdir/config/nsinstall -D ../../dist/sdk/lib
/mnt/objdir/config/nsinstall -R -m 755 libmozalloc.so ../../dist/sdk/lib
make[2]: Leaving directory `/mnt/objdir/memory/mozalloc'
make[1]: Leaving directory `/mnt/objdir/memory'
make tools
make[1]: Entering directory `/mnt/objdir/memory'
make -C jemalloc tools
make[2]: Entering directory `/mnt/objdir/memory/jemalloc'
make[2]: Nothing to be done for `tools'.
make[2]: Leaving directory `/mnt/objdir/memory/jemalloc'
make -C mozutils tools
make[2]: Entering directory `/mnt/objdir/memory/mozutils'
make[2]: Nothing to be done for `tools'.
make[2]: Leaving directory `/mnt/objdir/memory/mozutils'
make -C mozalloc tools
make[2]: Entering directory `/mnt/objdir/memory/mozalloc'
make[2]: Nothing to be done for `tools'.
make[2]: Leaving directory `/mnt/objdir/memory/mozalloc'
make[1]: Leaving directory `/mnt/objdir/memory'
if test -d ../dist/bin ; then touch ../dist/bin/.purgecaches ; fi
make: Leaving directory `/mnt/objdir/memory'
... and $topsrcdir/Makefile.in goes in memory/
And $topsrcdir/memory/Makefile.in only goes under memory/jemalloc is MOZ_MEMORY is defined. Is it ?
Comment 2•13 years ago
|
||
Mozutils is a dynamic library, right? Why would we need to relink anything other then mozutils itself?
Reporter | ||
Comment 3•13 years ago
|
||
(In reply to Benjamin Smedberg [:bsmedberg] from comment #2)
> Mozutils is a dynamic library, right? Why would we need to relink anything
> other then mozutils itself?
I thought because it's libmozutils.a, not libmozutils.so, it had to be linked into something else? But I don't actually understand these things.
> And $topsrcdir/memory/Makefile.in only goes under memory/jemalloc is MOZ_MEMORY is defined. Is it ?
That log is similar to what I see when I do a top-level build; we do recurse into memory/jemalloc and create libmozutils.a. But suppose you actually change jemalloc.c. For instance, I added a malloc_printf() to the beginning of malloc() (around line 6000).
Strangely enough, the first time I added the printf and rebuilt from the top level, it worked. But then I removed the printf, and I'm still seeing the output after four or five top-level rebuild. I don't have my increased-parallelism patch applied, and I've rebuilt with -j1.
Comment 4•13 years ago
|
||
I see. On linux, libmozutils is statically linked to the main binary. But building under browser/app may not have the proper dependencies for that. I believe this is bug 644608.
Reporter | ||
Comment 5•13 years ago
|
||
That looks like exactly the issue I'm seeing. Thanks!
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → DUPLICATE
Comment 6•13 years ago
|
||
Note the patch there should work for you. It just happens to subtly break on windows only.
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•