[systemd-devel] udev-212 and up on Sparc v8

Mike Gilbert floppym at gentoo.org
Sat Jun 21 08:37:44 PDT 2014


On Sat, Jun 21, 2014 at 11:31 AM, Mike Gilbert <floppym at gentoo.org> wrote:
> On Sat, Jun 21, 2014 at 10:04 AM, Cristian Rodríguez
> <crrodriguez at opensuse.org> wrote:
>> El 21/06/14 01:38, Chase Rayfield escribió:
>>
>>> udev up to version 208 builds correctly on Sparc v8. However 212 and
>>> greater does not.
>>>
>>> Complete build logs of 208 and 214 can be found here:
>>> https://bugs.gentoo.org/show_bug.cgi?id=514016
>>>
>>> Any suggestions or alternatives to how we can fix this would be
>>> appreciated.
>>>
>>> This affects old Sun hardware, Leon Sparc, and the sparc implementation
>>> being developed at temlib.org .... it may also affect other
>>> architectures that I am not aware of.
>>>
>>> Thanks,
>>> Chase Rayfield
>>
>>
>> Not a systemd problem. please ix your tool-chain. systemd does not even use
>> __sync_sub_and_fetch_4(), this is a function that ought to be proviided by
>> the compiler or libgcc .
>>
>
> systemd does use __sync_sub_and_fetch, which probably gets mapped to
> __sync_sub_and_fetch_4 somewhere.
>
> src/shared/refcnt.h:#define REFCNT_DEC(r) (__sync_sub_and_fetch(&(r)._value, 1))

Also, from the gcc manual:

https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/_005f_005fsync-Builtins.html

> Not all operations are supported by all target processors. If a particular operation cannot be implemented on the target processor, a warning will be generated and a call an external function will be generated. The external function will carry the same name as the builtin, with an additional suffix ‘_n’ where n is the size of the data type.

If I interpret that correctly, systemd would need to define
_sync_sub_and_fetch_4 when building for 32-bit processors which do not
support the __sync_sub_and_fetch operation natively.


More information about the systemd-devel mailing list