[PATCH] D24650: [ELF] - Linkerscript: PR30387 - cannot handle EXCLUDE_FILE in the middle of a input section description.

George Rimar via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 16 13:10:47 PDT 2016


grimar added inline comments.

================
Comment at: lld/trunk/ELF/LinkerScript.cpp:992
@@ +991,3 @@
+// Example: *(.foo.1 EXCLUDE_FILE (*a.o) .foo.2 EXCLUDE_FILE (*b.o) .foo.3)
+void ScriptParser::readSectionExcludes(InputSectionDescription *Cmd) {
+  llvm::Regex ExcludeFileRe;
----------------
grimar wrote:
> ruiu wrote:
> > It's not clear to me what the grammar of this thing is.
> > 
> >   A B EXCLUDE_FILE(C) D E
> > 
> > Does the above pattern mean A, B, D except those matching C, and E? Or A, B, D except those matching C, E except those matching C?
> > 
> > What if the pattern is this?
> > 
> >   A B EXCLUDE_FILE(C) EXCLUDE_FILE(D) E
> > 
> Example from PR30387:
> 
> sec0 EXCLUDE_FILE (zed1.o) sec1  EXCLUDE_FILE (zed2.o) sec2 )
> 
> The semantics according to bfd are:
> Include sec1 from every file but zed1.o
> Include sec2 from every file but zed2.o
> Include sec0 from every file
> 
> So
> ```
> A B EXCLUDE_FILE(C) D E
> ```
> 
> Should be all A, B sections + all D, E excluding those in file C.
> 
> 
> Pattern of 
> ```
> A B EXCLUDE_FILE(C) EXCLUDE_FILE(D) E
> ```
> then should be all A, B + all E except those in file E.
Fix for last:
A B EXCLUDE_FILE(C) EXCLUDE_FILE(D) E
then should be all A, B + all E except those in **file D.**


Repository:
  rL LLVM

https://reviews.llvm.org/D24650





More information about the llvm-commits mailing list