Closed Bug 1451372 Opened 2 years ago Closed 2 years ago

32-Bit OS/X Build of Spidermonkey fails to find libatomic

Categories

(Core :: JavaScript Engine, defect)

Unspecified
macOS
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla61
Tracking Status
firefox61 --- fixed

People

(Reporter: mgaudet, Assigned: bbouvier)

Details

Attachments

(1 file)

STR: (tested revision ff0efa4132f0 ) 

1. mkdir js/src/build_DBG.OBJ && cd js/src/build_DBG.OBJ && ../configure --disable-optimize --enable-debug --enable-warnings-as-errors --disable-tests --target=i386-apple-darwin16.7.0 # This last argument used to allow a 32-bit build on OS/X 
2. make -jN 

Expected result: Build successfully. 

Actual result: Link error: 

libmozglue.dylib
rm -f libmozglue.dylib
/usr/bin/clang++ -std=gnu++14 --target=i386-darwin16.7.0 -Qunused-arguments -Qunused-arguments -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wwrite-strings -Wno-invalid-offsetof -Wclass-varargs -Wloop-analysis -Wc++1z-compat -Wcomma -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-unknown-warning-option -Wno-return-type-c-linkage -fno-sized-deallocation -fno-common -stdlib=libc++ -fno-rtti -fno-exceptions -fno-math-errno -pthread -pipe -g -fno-omit-frame-pointer -Werror  -fPIC  -o libmozglue.dylib -Wl,-filelist,/Users/mgaudet/mozilla-investigation/js/src/build_32_DBG.OBJ/mozglue/build/libmozglue_dylib.list  -lobjc -framework ExceptionHandling -Wl,-bind_at_load -Wl,-executable_path,/Users/mgaudet/mozilla-investigation/js/src/build_32_DBG.OBJ/dist/bin      -dynamiclib -install_name @executable_path/libmozglue.dylib -compatibility_version 1 -current_version 1 -single_module  -lm  -latomic
ld: library not found for -latomic
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [libmozglue.dylib] Error 1
make[2]: *** [mozglue/build/target] Error 2
make[1]: *** [compile] Error 2
make: *** [default] Error 2


$ /usr/bin/clang++ --version
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

I've not bisected this.
Likely from bug 1451038.
Flags: needinfo?(bbouvier)
Sorry about that and thank you for the report.

Nathan, in the check I've touched [1], would it be enough to test for the "Linux" string here? We were testing for the "Android" string before, and I would expect that Android <= Linux, but maybe they're considered as different targets? Probably there's also a way to do an OR in this mysterious language...

[1] https://searchfox.org/mozilla-central/diff/d8a712a705577a2db425c69dbf9395a19392feee/build/autoconf/toolchain.m4#101
Flags: needinfo?(bbouvier) → needinfo?(nfroyd)
(In reply to Benjamin Bouvier [:bbouvier] from comment #2)
> Nathan, in the check I've touched [1], would it be enough to test for the
> "Linux" string here? We were testing for the "Android" string before, and I
> would expect that Android <= Linux, but maybe they're considered as
> different targets? Probably there's also a way to do an OR in this
> mysterious language...

I think what would pick up Linux and Android would be to test "$OS_ARCH" = "Linux".  We can test "$OS_TARGET" for Linux|Android, but I'd rather not get into too far into the weeds with `test` syntax.

But I don't think we even support 32-bit OS X builds any more...certainly we've ripped out support for OS X versions that supported x86.  I guess it would be nice to pre-emptively solve the case where we're cross-compiling mingw Windows builds with clang, though...
Flags: needinfo?(nfroyd)
JS engine devs still do 32-bit JS shell builds (x86 and ARM simulator) on OS X, so it would be great to keep that working :)
Attached patch fix.patchSplinter Review
Matthiew, can you test this patch and let me know if it fixes the issue, please? Thanks!

(still builds arm32/x86 with clang for me)

https://treeherder.mozilla.org/#/jobs?repo=try&revision=9102bc47827e1254ebfd0d5a61ab7c60ec90d383
Assignee: nobody → bbouvier
Status: NEW → ASSIGNED
Attachment #8965703 - Flags: feedback?(mgaudet)
Comment on attachment 8965703 [details] [diff] [review]
fix.patch

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

Works for me :D
Attachment #8965703 - Flags: feedback?(mgaudet) → feedback+
Comment on attachment 8965703 [details] [diff] [review]
fix.patch

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

Thanks for testing Matthiew!
Attachment #8965703 - Flags: review?(nfroyd)
Comment on attachment 8965703 [details] [diff] [review]
fix.patch

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

Thanks!  Sorry for the runaround. :(
Attachment #8965703 - Flags: review?(nfroyd) → review+
Pushed by bbouvier@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/2af150038b3b
Force libatomic only on 32-bits Linux clang builds; r=froydnj
https://hg.mozilla.org/mozilla-central/rev/2af150038b3b
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla61
You need to log in before you can comment on or make changes to this bug.