Re: problem building sparse 0.6.0 (sparse-llvm)

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

 




On 28/09/2019 00:00, Luc Van Oostenryck wrote:
> On Fri, Sep 27, 2019 at 09:24:05PM +0100, Ramsay Jones wrote:
>>
>>
>> On 26/09/2019 21:33, Luc Van Oostenryck wrote:
>>> On Thu, Sep 26, 2019 at 07:50:27PM +0100, Ramsay Jones wrote:
>> [snip]
>>> Randy had the problem on llvm-3.8.0.
>>>  
>>>> I haven't looked into the errors/warnings yet, but they seem to
>>>> relate to 'unknown/misused' pseudo-ops used for debug info.
>>>
>>> I really don't think it could be related to the last patch.
>>> I don't use or have access to cygwin but I've tested on Debian
>>> (bullseye/sid) with gcc-7 & gcc-9 and there wasn't any problem with
>>> llvm-8 (on Ubuntu I can only test with llvm-7). So, I'm curious to
>>> know more about this error you're seeing.
>>
>> I forgot to mention, in my previous email, that I was pretty
>> sure this was a platform specific issue, so I am not surprised
>> that you see no problem on Linux.
>>
>> So, tonight, I had a very quick look at the problem. If I use
>> gcc or clang to generate the assembler version of one of the
>> failing tests (backend/pointer-sub.c), then the pseudo-ops used
>> are appropriate for use with a 'coff-type' object file (ie a PE
>> file). However, the assembler produced by sparsec (saved from the
>> output of llc), would typically used in ELF object files ...
>>
>> After studying the output of 'clang -###', I noticed that clang
>> was passing (among other things) a 'triple' parameter to cc1.
>> However, the triple displayed by clang and llc were different:
>>
>> $ llc --version | head -5
>> LLVM (http://llvm.org/):
>>   LLVM version 8.0.1
>>   Optimized build.
>>   Default target: x86_64-unknown-cygwin
>>   Host CPU: haswell
>> $ clang --version
>> clang version 8.0.1 (tags/RELEASE_801/final)
>> Target: x86_64-unknown-windows-cygnus
>> Thread model: posix
>> InstalledDir: /usr/bin
>> $ 
>>
>> I noticed that you could override the target triple used by llc, so
>> decided to give it a try:
>>
>>
>> $ git diff
>> diff --git a/sparsec b/sparsec
>> index bafe2da..8a056e7 100755
>> --- a/sparsec
>> +++ b/sparsec
>> @@ -39,6 +39,7 @@ case "$(uname -s)" in
>>  *CYGWIN*)
>>         # cygwin uses the sjlj (setjmp-longjmp) exception model
>>         LLC_ARCH_OPTS="-exception-model=sjlj"
>> +       LLC_ARCH_OPTS="$LLC_ARCH_OPTS -mtriple=x86_64-unknown-windows-cygnus"
>>         ;;
>>  *)
>>         ;;
>> $ 
>>
>> This fixes the testsuite on cygwin! :-D
> 
> Great!
> 
> 
> The defaut target triple is supposed to be determinated from the host triple
> but from what I've seen LLVM's config system seems to know only about
> x86_64-unknown-cygwin and nothing about *-*-windows-cygnus (config.guess).
> OTOH, the part related to code generation seems to only know about
> x86_64-unknown-windows-cygnus ...
> 
> I suppose that `llvm-config --host-target` returns x86_64-unknown-cygwin ?

Ah no, I had meant to mention this:

  $ llvm-config --host-target
  x86_64-unknown-windows-cygnus
  $ 

... which agrees with clang, but not llc.

ATB,
Ramsay Jones




[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux