Hahnfeld added a comment.

In D65819#1627036 <https://reviews.llvm.org/D65819#1627036>, @ABataev wrote:

> In D65819#1627032 <https://reviews.llvm.org/D65819#1627032>, @Hahnfeld wrote:
>
> > In D65819#1617736 <https://reviews.llvm.org/D65819#1617736>, @Hahnfeld 
> > wrote:
> >
> > > Will this patch change the ability to consume a bundled object file 
> > > without calling the unbundler? Using known ELF tools on the produced 
> > > object files was an important design decision and IIRC was somewhat 
> > > important for using build systems that are unaware of the bundled format.
> >
> >
> > Ping.
>
>
> Missed this. We still produce correct object files, so all the tools will 
> work with this.


I agree on a technical level that it's still a "correct" object, but not what I 
was looking for: The host object file will only be in the bundled section, so 
you cannot examine it without unbundling.

For example, with a small test file and `clang -fopenmp -fopenmp-targets=x86_64 
-c test.c` I saw the following:

  $ nm test.o                                       
  0000000000000000 t .omp_offloading.requires_reg
  0000000000000000 T test
                   U __tgt_register_requires

After applying this patch, the output is empty which might be a problem in 
certain cases.



================
Comment at: tools/clang-offload-bundler/ClangOffloadBundler.cpp:373
 /// In order to bundle we create an IR file with the content of each section 
and
 /// use incremental linking to produce the resulting object. We also add 
section
 /// with a single byte to state the name of the component the main object file
----------------
Please update if needed.


================
Comment at: tools/clang-offload-bundler/ClangOffloadBundler.cpp:534
 
     // Do the incremental linking. We write to the output file directly. So, we
     // close it and use the name to pass down to clang.
----------------
Please update if needed.


================
Comment at: tools/clang-offload-bundler/ClangOffloadBundler.cpp:541-549
     std::vector<StringRef> ClangArgs = {"clang",
-                                        "-r",
+                                        "-c",
                                         "-target",
                                         TargetName.c_str(),
                                         "-o",
                                         OutputFileNames.front().c_str(),
-                                        InputFileNames[HostInputIndex].c_str(),
----------------
I think we should revert this change and just bundle the host object file as we 
do for all other targets.


================
Comment at: tools/clang-offload-bundler/ClangOffloadBundler.cpp:572
       if (Failed) {
         errs() << "error: incremental linking by external tool failed.\n";
         return true;
----------------
Please update if needed.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65819/new/

https://reviews.llvm.org/D65819



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to