On Tue, Feb 12, 2008 at 09:43:11PM -0600, Jeffrey Ollie wrote:
I'm having some difficulty building Asterisk in Rawhide now that
GCC
has been upgraded to 4.3. As you can see from [1] the build error out
because of some undefined symbols (__sync_fetch_and_add_4 and
__sync_sub_and_fetch_4). From what I've been able to figure out from
googling around is that these two functions are no longer available
when building with '-march=i386' because i386 processors don't have
the atomic operations that are required.
No longer is a wrong word. __sync_fetch_and_add never worked for
-march=i386, it can't - there is no atomic instruction on i386 ISA through
which that could be implemented.
The "solution" that I have
seen proposed is to build with '-march=i686'. Unless someone has some
other solution, I'd like to start building Asterisk as i686 in Rawhide
rather than i386.
Rather use -march=i486 -mtune=generic, and don't bother with using
non-i386.rpm rpms. glibc/libstdc++/libgomp is built -march=i486 in
i386.rpm packages already (NPTL doesn't support pre-i486), so Fedora for
a few releases won't boot on pre-i486 anyway. On the other side, some
people still use i586-ish CPUs (or i686 without cmov, that's the same deal)
with Fedora, so limiting packages to i686 would hurt.
Jakub