Re: [PATCH] meson: Work around too strict lld

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/20/23 15:19, Daniel P. Berrangé wrote:
> On Mon, Mar 20, 2023 at 02:54:11PM +0100, Michal Privoznik wrote:
>> With its version 16.0, the LLVM's linker turned on
>> --no-undefined-version by default [1]. This breaks how we detect
>> --version-script= detection, because at the compile time there's
>> no library built yet that we can use to make --version-script=
>> happy. To cancel their choice of defaults, pass
>> --undefined-version. Unfortunately, this flag is LLVM's invention
>> and is not supported by GNU's ld.
>>
>> This all could be avoided if meson provided proper detection of
>> supported linker arguments, but we are far away from that [2].
>>
>> 1: https://reviews.llvm.org/D135402
>> 2: https://github.com/mesonbuild/meson/issues/3047
>>
>> Resolves: https://bugs.gentoo.org/902211
>> Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
>> ---
>>
>> Compile Libvirt? Absolutely Not Gonna.
>>
>> The choice of defaults for LLVM and related subprojects continues
>> to surprise me.
>>
>>  meson.build | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/meson.build b/meson.build
>> index c35823a79a..df0d75449a 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -535,9 +535,13 @@ elif host_machine.system() == 'darwin'
>>    version_script_flags = ''
>>  else
>>    test_file = '@0@/src/libvirt_qemu.syms'.format(meson.project_source_root())
>> +  version_script_flags = ''
>>    if cc.has_link_argument('-Wl,--version-script=@0@'.format(test_file))
>>      version_script_flags = '-Wl,--version-script='
>> -  else
>> +  elif cc.has_multi_link_arguments('-Wl,--undefined-version', '-Wl,--version-script=@0@'.format(test_file))
>> +    version_script_flags = '-Wl,--version-script='
>> +  endif
>> +  if version_script_flags == ''
>>      error('No supported version script link argument found.')
>>    endif
>>  endif
> 
> Should we bother probing for the argument at all ?
> 
> if host_machine.system() == 'windows'
>   version_script_flags = '-Wl,'
> elif host_machine.system() == 'darwin'
>   # macOS libraries don't support symbol versioning
>   version_script_flags = ''
> else
>   test_file = '@0@/src/libvirt_qemu.syms'.format(meson.project_source_root())
>   if cc.has_link_argument('-Wl,--version-script=@0@'.format(test_file))
>     version_script_flags = '-Wl,--version-script='
>   else
>     error('No supported version script link argument found.')
>   endif
> endif
> 
> 
> In terms of our platforms, the 'else' clause is only impacting Linux and
> FreeBSD. Don't both of those platforms support -Wl,--version-script=
> since they both use ELF ?

Yeah, I think we can drop the check completely and went with what you
suggests. V2 on its way.

Michal




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux