Page MenuHomePhabricator

JamesNagurne (James Nagurne)
User

Projects

User does not belong to any projects.

User Details

User Since
Apr 23 2019, 12:56 PM (26 w, 1 d)

Recent Activity

Fri, Oct 11

JamesNagurne added a comment to D68897: [clang][ifs] Avoid assumption of default visibility in InterfaceStubs tests.

Sadly I'm home from the weekend, so I can't post more diffs for the renaming.
Here's a link to a github search though! I think this would be all the places: https://github.com/llvm/llvm-project/search?q=iterface&unscoped_q=iterface

Fri, Oct 11, 6:23 PM · Restricted Project
JamesNagurne created D68897: [clang][ifs] Avoid assumption of default visibility in InterfaceStubs tests.
Fri, Oct 11, 4:23 PM · Restricted Project
JamesNagurne added a comment to D63978: Clang Interface Stubs merger plumbing for Driver.

Our team maintains a downstream embedded ARM clang distribution and some tests from this commit have begun to fail for us.
For a number of these tests, there was a REQUIRES: x86-registered-target at the top, which has now been removed. Specifically, externstatic.c, merge-conflict-test.c, object-float.c, and object.c are failing.

object* tests seem to be based on object.cpp, which had the REQUIRES line, and externstatic.c also had that line prior to the change.
I see that @compnerd suggested the removal, but were you certain that these tests would work on clang toolchains for which x86 is not a registered target?

For a failure example, here the output of lit for our toolchain. If you can make sense of it, I'd appreciate input on how we can fix or work around it:

> <WORKDIR>/arm-llvm/Release/llvm/bin/clang -c -o - -emit-interface-stubs <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c | <WORKDIR>/arm-llvm/Release/llvm/bin/FileCheck -check-prefix=CHECK-TAPI <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c
 <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c:5:16: error: CHECK-TAPI: expected string not found in input
 // CHECK-TAPI: data: { Type: Object, Size: 4 }
                ^
 <stdin>:1:1: note: scanning from here
 --- !experimental-ifs-v1
 ^

And when run without FileCheck, our raw output:

> <WORKDIR>/arm-llvm/Release/llvm/bin/clang -c -o - -emit-interface-stubs <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c
 --- !experimental-ifs-v1
 IfsVersion: 1.0
 Triple: thumbv7em-ti-none-eabihf
 ObjectFileFormat: ELF
 Symbols:
 ...

I am sorry for this James. I can add back the REQUIRES lines for now and coordinate with you on making sure your downstream bots are not affected again if the REQUIRES are removed again.
By chance are your bots accessible publicly?

Sadly, they are not. It's on our list of things to investigate, but we don't have the resources to do such a thing quite yet.
I'm looking into the 'arm7*' buildbots to see if they are built similar to ours so I am not leaving you entirely without something to look at. However, if it seems to be common knowledge to always include an X86 target, I think I can talk to my team and change up what we do.

These buildbots seem to also do LLVM_TARGETS_TO_BUILD=ARM, and then set the default target triple to a non-x86 triple (the host's)

That could point towards us being in error here. I'll investigate things a little further, and update when I get the chance.
To be clear: this feature should work for any ELF target, correct?

Yes, it is designed to work for all ELF targets but at the moment it is still in an early state. I am on the llvm IRC as zer0_ BTW

Fri, Oct 11, 4:23 PM · Restricted Project, Restricted Project
JamesNagurne added a comment to D63978: Clang Interface Stubs merger plumbing for Driver.

Our team maintains a downstream embedded ARM clang distribution and some tests from this commit have begun to fail for us.
For a number of these tests, there was a REQUIRES: x86-registered-target at the top, which has now been removed. Specifically, externstatic.c, merge-conflict-test.c, object-float.c, and object.c are failing.

object* tests seem to be based on object.cpp, which had the REQUIRES line, and externstatic.c also had that line prior to the change.
I see that @compnerd suggested the removal, but were you certain that these tests would work on clang toolchains for which x86 is not a registered target?

For a failure example, here the output of lit for our toolchain. If you can make sense of it, I'd appreciate input on how we can fix or work around it:

> <WORKDIR>/arm-llvm/Release/llvm/bin/clang -c -o - -emit-interface-stubs <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c | <WORKDIR>/arm-llvm/Release/llvm/bin/FileCheck -check-prefix=CHECK-TAPI <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c
 <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c:5:16: error: CHECK-TAPI: expected string not found in input
 // CHECK-TAPI: data: { Type: Object, Size: 4 }
                ^
 <stdin>:1:1: note: scanning from here
 --- !experimental-ifs-v1
 ^

And when run without FileCheck, our raw output:

> <WORKDIR>/arm-llvm/Release/llvm/bin/clang -c -o - -emit-interface-stubs <WORKDIR>/llvm-project/clang/test/InterfaceStubs/object.c
 --- !experimental-ifs-v1
 IfsVersion: 1.0
 Triple: thumbv7em-ti-none-eabihf
 ObjectFileFormat: ELF
 Symbols:
 ...

I am sorry for this James. I can add back the REQUIRES lines for now and coordinate with you on making sure your downstream bots are not affected again if the REQUIRES are removed again.
By chance are your bots accessible publicly?

Fri, Oct 11, 1:35 PM · Restricted Project, Restricted Project
JamesNagurne added a comment to D63978: Clang Interface Stubs merger plumbing for Driver.

Our team maintains a downstream embedded ARM clang distribution and some tests from this commit have begun to fail for us.
For a number of these tests, there was a REQUIRES: x86-registered-target at the top, which has now been removed. Specifically, externstatic.c, merge-conflict-test.c, object-float.c, and object.c are failing.

Fri, Oct 11, 1:00 PM · Restricted Project, Restricted Project

Sep 13 2019

JamesNagurne added a comment to D67287: [Diagnostics] Add -Wsizeof-array-div.

Ah! My apologies. I had not pulled anything new down, as our process tends to hard-stop until an issue is resolved (something I'm thinking needs to be a little more flexible).

Sep 13 2019, 2:03 PM · Restricted Project
JamesNagurne added a comment to D67287: [Diagnostics] Add -Wsizeof-array-div.

As mentioned in an inline comment, the test only works if the sizeof(int) != sizeof(int *) and sizeof(unsigned long long) == sizeof(int)

Sep 13 2019, 11:39 AM · Restricted Project

Aug 27 2019

JamesNagurne added a comment to D65907: Introduce FileEntryRef and use it when handling includes to report correct dependencies when the FileManager is reused across invocations.

No the windows test failure was different, there were no Deps at all. I'm currently investigating it on a windows VM.

@JamesNagurne I think there's some issue with the working directory, which is not added in your case. Which platform are you running your build/test on? Which cmake options are you using?

I apologize for not giving such information in the first reply. Unfortunately this isn't an easy remote reproduction, as our ToolChain and some integral changes aren't upstreamed. This is an embedded ARM cross-compiled on Linux. Might be able to reproduce with arm-none-none-eabi.
LLVM is built as an external project. Looking at the build system, it looks like we have the CMAKE_ARGS:

-DLLVM_DEFAULT_TARGET_TRIPLE=arm-ti-none-eabi
-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=${CMAKE_SOURCE_DIR}/llvm-project/clang
-DLLVM_TARGETS_TO_BUILD=ARM
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_COMPILER=clang++
-DCMAKE_C_COMPILER=clang
-DLLVM_USE_LINKER=gold
-GNinja

Nothing suspicious, except maybe the default triple and ARM target.
Looking at our (not upstream) toolchain file, we do have some RTLibs, LibInternal, libcxx, and System include changes, along with a -nostdsysteminc to avoid pulling host includes into our cross compiler. However, none of this should affect general "#include" behavior, correct?
Another glance at your changes don't seem to affect any target-specific handling either, at least directly.

Yes, I don't see anything in your changes that is an obvious thing to blame.

I might have to just bite the bullet and drop into the test with a debugger.

I fixed the Windows issue, and it was completely unrelated to your issue. It looks like the FileManager isn't constructing absolute paths when accessing the files, which is somewhat unexpected. It would be useful to debug invocations of getFileEntryRef, to see if the InterndFilename in the function is getting changed into an absolute path or not.

Aug 27 2019, 12:21 PM · Restricted Project, Restricted Project

Aug 23 2019

JamesNagurne added a comment to D65907: Introduce FileEntryRef and use it when handling includes to report correct dependencies when the FileManager is reused across invocations.

No the windows test failure was different, there were no Deps at all. I'm currently investigating it on a windows VM.

@JamesNagurne I think there's some issue with the working directory, which is not added in your case. Which platform are you running your build/test on? Which cmake options are you using?

Aug 23 2019, 4:05 PM · Restricted Project, Restricted Project
JamesNagurne added a comment to D65907: Introduce FileEntryRef and use it when handling includes to report correct dependencies when the FileManager is reused across invocations.

@arphaman you disabled this test on Windows, but did not specify exactly how it fails.
My team works on an embedded ARM compiler (most similar to arm-none-eabi), and we're now seeing failures from DependencyScannerTest. I can't find a buildbot failure for this test so I can't cross-reference to see if we have the same issue.

Aug 23 2019, 11:47 AM · Restricted Project, Restricted Project

Aug 7 2019

JamesNagurne added a comment to D60943: Delay diagnosing asm constraints that require immediates until after inlining.

In case you haven't seen, this commit breaks non-x86 build bots due to the combination of '-triple x86_64*' and '-S'. Some tests that use this target are only looking for AST dumps, and do not actually require such a target. This is not one of those tests, as it's inspecting assembly.
See clang/test/CodeGen/addrsig.c to see how that is handled (via REQUIRES: x86-registered-target).

Aug 7 2019, 12:20 PM · Restricted Project, Restricted Project

Aug 5 2019

JamesNagurne accepted D65745: [llvm-ar][test] Correct tests marked as expected fails.

Our team independently applied and validated this change for our ARM cross compiler running on darwin, and we shared the same failure modes as the darwin compiler. I feel that this is sufficient evidence that the bug is related to the host, not the target.

Aug 5 2019, 8:45 AM · Restricted Project

Jul 26 2019

JamesNagurne added a comment to D64802: [llvm-ar][test] Add tests failing on Darwin.

Hi James,

From my understanding these has been resolving correctly as XFAIL's on upstream Darwin test machines and XFAIL: darwin is used in a few other lit tests. I do not know what cross compiling is tested on the build bots however.

Firstly, does use of XFAIL: system-darwin instead of XFAIL: darwin fix this issue?

Second can you run any of the llvm tests below on your machine and get the expected result? They all use XFAIL: darwin:

  • test\DebugInfo\Generic\empty.ll
  • test\DebugInfo\Generic\gmlt.test
  • test\ExecutionEngine\MCJIT\test-global-ctors.ll
  • test\ExecutionEngine\OrcMCJIT\test-global-ctors.ll

    Finally I believe lit just uses the standard python commands to determine the platform, do the commands below give unexpected output?
import sys
import platform
print(platform.system())
print(sys.platform)

Hopefully this will make finding the cause of the issue easier. If anyone else has suggestions I would be happy to hear them.

Thanks

Jul 26 2019, 1:50 PM · Restricted Project

Jul 25 2019

JamesNagurne added a comment to D64802: [llvm-ar][test] Add tests failing on Darwin.

Our team maintains a downstream embedded ARM cross compiler, and these tests are failing on our Mac validations.
The key problem here I believe is the 'XFAIL: darwin' doesn't seem to work how you expect it to, and I'm not aware of a good alternative that I can suggest. Hopefully you or someone else has one.

Jul 25 2019, 9:08 AM · Restricted Project

Jul 12 2019

JamesNagurne added a comment to D64653: clang/test/Driver/fsanitize.c: Fix -fsanitize=vptr using default target.

I committed this for you in rL365981 (it may have broken a Windows build for a long time. I wanted to fix it soon..). Thanks!

any platform that runs this test will fail with the error:

Not-too-ancient Darwin, FreeBSD, Linux, NetBSD, OpenBSD, Solaris, etc support this, but notable exception is Windows:

% clang -target x86_64-windows -fsanitize=vptr -fno-rtti fsanitize.c '-###'
clang-9: error: unsupported option '-fsanitize=vptr' for target 'x86_64-unknown-windows-msvc'
Jul 12 2019, 10:49 PM · Restricted Project
JamesNagurne created D64653: clang/test/Driver/fsanitize.c: Fix -fsanitize=vptr using default target.
Jul 12 2019, 11:25 AM · Restricted Project
JamesNagurne added a comment to rL365872: test/Driver/fsanitize.c: delete -target x86_64-linux-gnu from tests that should….
Jul 12 2019, 11:10 AM

Jul 9 2019

JamesNagurne added a comment to D61694: Boilerplate for producing XCOFF object files from the PowerPC backend..

Oh dear... I apologize for that lapse of concentration. You are completely correct, someone had modified the signature in a prior commit, and I hadn't gone back far enough to see it.
Thank you for the response.

Jul 9 2019, 3:05 PM · Restricted Project
JamesNagurne added a comment to D61694: Boilerplate for producing XCOFF object files from the PowerPC backend..

Maybe someone can enlighten me as to why the build bots aren't tripping up on this one, but our group is running into this when we pull this commit from the upstream:

Jul 9 2019, 1:39 PM · Restricted Project

Jun 3 2019

JamesNagurne added a comment to D60691: [ARM] Replace fp-only-sp and d16 with fp64 and d32..

Hi Simon et. al., I'm working on a downstream ARM toolchain and have downstreamed this change into our codebase.
We saw that you've fixed the -mfpu=none issue and have taken that as well, but are still running into some issues.

Jun 3 2019, 2:57 PM · Restricted Project, Restricted Project

Apr 26 2019

JamesNagurne abandoned D61087: [libcxxabi] Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS.

Closing this, as a fix has already been committed and validated on our end.

Apr 26 2019, 10:32 AM · Restricted Project

Apr 25 2019

JamesNagurne added a comment to D61087: [libcxxabi] Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS.

I saw that too. Not really too thrilled with the fix itself, since it further fragments the source with directives, but it works.
I do have another question for @EricWF regarding the inclusion of unistd.h, but I should probably take that to a separate forum (though I've commented on the original review that added the inclusion).

Apr 25 2019, 11:23 AM · Restricted Project
JamesNagurne added inline comments to D61087: [libcxxabi] Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS.
Apr 25 2019, 8:57 AM · Restricted Project

Apr 24 2019

JamesNagurne added a comment to D61087: [libcxxabi] Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS.

This is an example of a solution, but I'm not married to the mechanisms by which the results are achieved:

Apr 24 2019, 1:14 PM · Restricted Project
JamesNagurne created D61087: [libcxxabi] Fix build of cxa_guard.cpp on configurations with _LIBCXXABI_HAS_NO_THREADS.
Apr 24 2019, 1:09 PM · Restricted Project
JamesNagurne added a comment to rG70ebeabfb833: Rewrite cxa guard implementation..

@EricWF is there an implicit expectation that all implementations based off libcxx/libcxxabi supports POSIX?
Our downstream ARM toolchain does not supply a unistd.h as part of its custom libc, and it has not been a problem until this revision.

Apr 24 2019, 11:35 AM

Apr 23 2019

JamesNagurne added a comment to rG27df40920369: MS ABI: Support mangling op<=> now that MSVC 2019 has a mangling.

This commit has broken in our downstream tooling, which doesn't use the Microsoft ABI nor (I believe) has modified mangling in any way.

Apr 23 2019, 1:03 PM