After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 660302 - audioconvert: build fails with "non-relocatable subtraction expression" on OS X
audioconvert: build fails with "non-relocatable subtraction expression" on OS X
Status: RESOLVED NOTGNOME
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.11.x
Other Mac OS
: Normal normal
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-09-27 22:41 UTC by John Ralls
Modified: 2012-07-19 19:38 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description John Ralls 2011-09-27 22:41:03 UTC
CC     libgstaudioconvert_la-tmp-orc.lo
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:3082:non-relocatable subtraction expression, "LC2" minus "L00000000008$pb"
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:3082:symbol: "L00000000008$pb" can't be undefined in a subtraction expression
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2989:non-relocatable subtraction expression, "LC2" minus "L00000000007$pb"
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2989:symbol: "L00000000007$pb" can't be undefined in a subtraction expression
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2887:non-relocatable subtraction expression, "LC0" minus "L00000000006$pb"
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2887:symbol: "L00000000006$pb" can't be undefined in a subtraction expression
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2806:non-relocatable subtraction expression, "LC0" minus "L00000000005$pb"
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:2806:symbol: "L00000000005$pb" can't be undefined in a subtraction expression
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:unknown:Undefined local symbol L00000000005$pb
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:unknown:Undefined local symbol L00000000006$pb
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:unknown:Undefined local symbol L00000000007$pb
/var/folders/8Z/8ZMrxptP2RW3+U+8ZNMZY++++TI/-Tmp-//ccgP1d6l.s:unknown:Undefined local symbol L00000000008$pb
make[4]: *** [libgstaudioconvert_la-tmp-orc.lo] Error 1

gcc-4.2 and SDK 10.5
Comment 1 John Ralls 2011-09-28 00:00:00 UTC
Same errors with gst-plugins-base-0.10.35.
Comment 2 Tim-Philipp Müller 2011-09-29 11:17:01 UTC
This is with what orc version? Does it work with --disable-orc? It looks more like a toolchain issue to me though.
Comment 3 John Ralls 2011-09-29 13:40:47 UTC
--disable-orc has no effect.

Yes, afaict from googling "non-relocatable subtraction expression" it has something to do with a compiler pass. Unfortunately all I found was reports that similar problems had been fixed without saying how.
Comment 4 Tobias Mueller 2012-01-15 16:46:36 UTC
John, what orc version does this happen with?
Comment 5 John Ralls 2012-01-16 01:59:47 UTC
Sorry, I missed that question the first time around.

There is no orc installed.
Comment 6 Tim-Philipp Müller 2012-01-16 10:46:52 UTC
I still believe this is a toolchain issue, since we're only dealing with plain old C files here.

Have you tried upgrading your compiler?
Comment 7 John Ralls 2012-01-17 05:19:21 UTC
Not so easy on a Mac. I tried today on 10.7.3 (developer preview) which uses llvm-gcc, and didn't get as far: Gstreamer itself failed to build. I'll troubleshoot that some more tomorrow.

Setting that aside, if there's no orc, should it even be trying to build libgstaudioconvert_la-tmp-orc.lo? And is there a way to get it to not delete the temp file so that one can see the code it's complaining about? What generates that temp file, anyway?
Comment 8 Tim-Philipp Müller 2012-01-17 11:34:34 UTC
As far as I can see, it complains about something in the .s file, which is an assembly file generated by the compiler. You need to check the compiler man page to figure out how to make it not delete the temp files or how to just generate the .s and then stop. For gcc, passing -S in CFLAGS might do the trick.

As for orc, if there is no liborc our build will use a back-up file (gstaudioconvertorc-dist.c in this case) with the C fallback code. If liborc exists, we will use the orc compiler to generate the C fallback code.
Comment 9 John Ralls 2012-01-17 18:45:09 UTC
OK, I've figured it out.

The error was that gcc wasn't creating the identifiers L0000000000[5-8]\$pb in the assembly file (though it was creating L0000000000[1-4]\$pb). Undoubtedly a bug in gcc-4.2.1 (I tried building the one file with llvm-gcc and it worked.)

A bit of experimentation found that the bug is triggered by the combination of -g and -O2. Turn off debugger output or change the optimization and it builds fine. Since gtk-osx has its own debug flag setting, I just added --disable-debug to the configure arguments (actually autogenargs for jhbuild) and it's building OK.
Comment 10 Gili 2012-07-19 18:48:03 UTC
Is this fixed by a newer gcc version?
Comment 11 John Ralls 2012-07-19 19:38:49 UTC
It's entirely possible that it's an Apple-only bug -- I haven't tried it on Linux. There will be no newer Apple versions of gcc, they've switched to llvm.