[csw-maintainers] Problems with mapfile and linking

Jan Holzhueter jh at opencsw.org
Wed Sep 19 08:31:29 CEST 2012


Am 18.09.12 17:54, schrieb Ben Walton:
> Hi Jan,
> Is autoconf detecting this properly for certain or just by
> happenstance due to other requirements?  Is -lrt passed on the command
> line that is trying to build transaction.o?  I wonder what the
> configure environment is doing with regard to the new linker maps?
> (It's likely doing the right thing but I haven't looked...)

What autoconf does is first check for it in libc.
This fails do to mapfiles.
Then it checks for it in -lrt which is positive and set to yes.
So the checks here are doing the right thing.
On not sure right now if autoconf does a linking check with -lrt or uses
some other method. Because this should fail too which the same error I
would guess. So something is done different here.

I will have Dago poke at it :)

>> The function fdatasync is defined in 1.22.7 but also since forever in
>> librt. The auto* tool for samba do detect that correctly and add -lrt
>> for linking.
>> The Linker does still fails though with:
>> Undefined                       first referenced
>>  symbol                             in file
>> fdatasync                           ../lib/tdb/common/transaction.o
>> (symbol belongs to unavailable version /lib/libc.so (SUNW_1.22.7))
>> First thought was that -ignore might be a problem here so I removed it
>> didn't help.
> I wonder if this is an ordering issue of the -l parameters and the
> implicit -lc ?

It might be. But I would guess -lc is always at first place so I don't
know who you would order that.

>> I can build samba without fdatasync but this might hit us again so I'm
>> looking for a solution. There probably is none and it's a linker bug but
>> I don't know for sure :)
> And presumably that's a useful function for samba to use so disabling
> it doesn't seem like the best option either.

Well it uses irrc fsync instead of fdatasync if it can't find it.
If I looks at the right place of code fdatasync does call fsync in the
end anyway it just takes other args or something.
So I don't see any real difference here.


More information about the maintainers mailing list