Closed
Bug 854212
Opened 12 years ago
Closed 12 years ago
Build error with jsfuninlines.h:194: undefined reference to `JSFunction::ExtendedFinalizeKind' / jsfuninlines.h:194: undefined reference to `JSFunction::FinalizeKind'
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: dholbert, Assigned: n.nethercote)
References
Details
Attachments
(1 file)
1.29 KB,
patch
|
smaug
:
review+
|
Details | Diff | Splinter Review |
This morning, my local mozilla-central debug build fails to compile, with this error:
1:04.77
1:04.77 ../libjs_static.a(jsinterp.o): In function `js::CloneFunctionObjectIfNotSingleton(JSContext*, JS::Handle<JSFunction*>, JS::Handle<JSObject*>)':
1:04.77 /mozilla/js/src/jsfuninlines.h:194: undefined reference to `JSFunction::ExtendedFinalizeKind'
1:04.77 /mozilla/js/src/jsfuninlines.h:194: undefined reference to `JSFunction::FinalizeKind'
1:04.77 /usr/bin/ld.bfd.real: js: hidden symbol `_ZN10JSFunction12FinalizeKindE' isn't defined
1:04.77 /usr/bin/ld.bfd.real: final link failed: Bad value
1:04.77 collect2: error: ld returned 1 exit status
Reporter | ||
Comment 1•12 years ago
|
||
This was a clobber build, on 64-bit Ubuntu Linux with GCC 4.7.2.
Reporter | ||
Comment 2•12 years ago
|
||
hg bisect says the first bad revision is:
changeset: 126040:82ea4e6d7349
user: Luke Wagner <luke@mozilla.com>
date: Sat Mar 23 05:31:01 2013 -0700
summary: Bug 851421 (part 1) - Clone extended function slots. r=nnethercote.
which makes sense, because that's what added the references to ExtendFinalizeKind/FinalizeKind in jsfuninlines.h (in the last chunk of the cset):
https://hg.mozilla.org/mozilla-central/rev/82ea4e6d7349#l3.2
Blocks: 851421
Reporter | ||
Comment 3•12 years ago
|
||
I suspect that what I'm hitting is "the opposite link error on linux" that Luke referred to in bug 851421 comment 21. (context: it's the opposite of another linking error that was hit on Try at one point, for these symbols being already defined)
Reporter | ||
Comment 4•12 years ago
|
||
My mozconfig looks like:
{
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
ac_add_options --enable-debug --disable-optimize
mk_add_options MOZ_MAKE_FLAGS='-s -j8'
ac_add_options --with-ccache=/usr/bin/ccache
# Don't want installer/updater in my local builds
ac_add_options --disable-installer
ac_add_options --disable-updater
ac_add_options --enable-valgrind
ac_add_options --enable-warnings-as-errors
}
Reporter | ||
Comment 5•12 years ago
|
||
(I'm hitting this in up-to-date mozilla-inbound, too, so it looks like this hasn't been fixed elsewhere yet.)
Comment 6•12 years ago
|
||
This build error happens with the --enable-debug flag.
A non-debug build doesn't fail.
Comment 7•12 years ago
|
||
static const js::gc::AllocKind FinalizeKind
static const js::gc::AllocKind ExtendedFinalizeKind
are defined in jsfun.h:251
Not sure why they aren't being included in debug build, but are in the default one.
Assignee | ||
Comment 8•12 years ago
|
||
I can reproduce this with gcc-4.7 on my Linux box. (I normally use clang-3.2.)
This is mostly explained by
http://stackoverflow.com/questions/4891067/weird-undefined-symbols-of-static-constants-inside-a-struct-class.
Basically, if a |static const| class member is used in a non-const expression,
on Linux (GCC, and sometimes clang) you need to also define it outside of the
class. But on Windows defining it outside the class causes it to be defined
multiple times! The solution, which this patch does, is to assign the constant
to a temporary variable so it's only used in const expressions. I hit the same
problem in bug 747831 -- see the comment in
TokenStream::SourceCoords::SourceCoords in js/src/TokenStream.cpp.
I'll take r+ from whoever can first confirm this fix. Thanks!
Attachment #728783 -
Flags: review?(sstangl)
Attachment #728783 -
Flags: review?(dholbert)
Assignee | ||
Updated•12 years ago
|
Assignee: general → n.nethercote
Comment 9•12 years ago
|
||
Comment on attachment 728783 [details] [diff] [review]
Fix link errors in jsfuninlines.h caused by bug 851421.
This let's me to build m-c
Attachment #728783 -
Flags: review+
Assignee | ||
Comment 10•12 years ago
|
||
Assignee | ||
Updated•12 years ago
|
Attachment #728783 -
Flags: review?(sstangl)
Attachment #728783 -
Flags: review?(dholbert)
Comment 11•12 years ago
|
||
It works for me as well. Thanks! :)
Comment 12•12 years ago
|
||
Have to get m-c working too, so landed there
https://hg.mozilla.org/mozilla-central/rev/631d57b31bb1
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Comment 13•12 years ago
|
||
You need to log in
before you can comment on or make changes to this bug.
Description
•