[LLVMdev] misc CVS patches

Misha Brukman
Wed, 20 Apr 2005 15:55:31 -0000

On Wed, Apr 20, 2005 at 12:12:54PM +0200, Markus F.X.J. Oberhumer
wrote:
> Misha Brukman wrote:
> >On Tue, Apr 19, 2005 at 07:01:40AM +0200, Markus F.X.J. Oberhumer
> >wrote: Have you considered using bugpoint for your codegen debugging
> >needs?  http://llvm.cs.uiuc.edu/docs/Bugpoint.html#codegendebug
>
> Well, the (critical) bug in question was
> http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=548 , and I'm not sure if
> bugpoint could have helped me reducing the testcase down from a huge
> program.

Actually, that is the `point' of bugpoint, pun intended.  :)

> But then, I've never looked too closely - is there a small tutorial ?

http://llvm.cs.uiuc.edu/docs/HowToSubmitABug.html

About the only thing we haven't gotten to `bugpoint' is front-end
miscompilations -- those test cases need to be narrowed down by hand,
but once your code is in LLVM bytecode, bugpoint can rip it into shreds.

> >For the isExecutable patch, you check to see if it's a file first
before
> >calling access(), but that precludes that function being used on a
> >directory (which is a valid sys::Path object and could be queried for
> >being executable), so I think it's unnecessary.
>
> I'm pretty sure that the semantics of isExecutable() means "can I
> excecute a _file_".  Without this patch FindExecutable() returns
> directories on $PATH - see
> http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=545 .

You and Reid have a point.  I'm convinced.  Patched, bug closed.

> > I also applied your patch to ignore dangling symlinks.
>
> Fine, so http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=543 can be closed.

As per Reid's comment, I'll leave it open until this issue is resolved:

3. Figure out why ThrowErrno isn't appending the standard operating
system error message that would tell us why the status couldn't be
obtained.

> >Finally, I applied your patch to ArchiveWriter with minor
> >modifications -- please see llvm-commits or the web archive.
>
> I didn't use get{u,g}id() because that's not portable - I think we
> need another abstraction in the System library for these.

Hmm, seems like it's available on the Unices that we support: Linux, OS
X, and SunOS.  Man page lists getgid() as conforming to POSIX and BSD
4.3, so I'm assuming *BSD has them too (can't confirm for lack of a *BSD
system).  As soon as we run into a Unix system that we want to support,
we might have to go the abstraction route, but it seems to work for our
currently-supported platforms.

> Do you really want external patches for this ? A simple Perl script
> that runs on all *.h and *.cpp files, and a local commit from your
> side would be much simpler. The testsuite should also be enhanced to
> daily report files with trailing whitespace. Please note that this not
> purely academic - trailing whitespace are a horror for anyone
> maintaining external patches against a CVS tree.

I'll look into this.

Thanks,
--
Misha Brukman :: http://misha.brukman.net :: http://llvm.cs.uiuc.edu