Subject: toolchain/24386: Toolchain cannot create executables
To: None <gnats-bugs@gnats.NetBSD.org>
From: Matthias Scheler <tron@colwyn.zhadum.de>
List: netbsd-bugs
Date: 02/11/2004 14:44:49
>Number:         24386
>Category:       toolchain
>Synopsis:       Toolchain cannot create executables
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 11 13:45:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     
>Release:        NetBSD 1.6ZJ
>Organization:
Matthias Scheler                                  http://scheler.de/~matthias/
>Environment:
System: NetBSD lyssa.zhadum.de 1.6ZJ NetBSD 1.6ZJ (LYSSA) #0: Wed Feb 11 09:50:06 CET 2004 tron@lyssa.zhadum.de:/src/sys/compile/LYSSA i386
Architecture: i386
Machine: i386
>Description:
When I tried to update a package under today's NetBSD-current the "configure"
scripted bailed out because the C compiler couldn't create an executable.
I tried it manually with a small program and got the same results:


#include <stdio.h>

int
main(int argc, char **argv)
{
        (void) puts("Buuh");
        return (0);
}
tron@lyssa:~>cat tt.c

#include <stdio.h>

int
main(int argc, char **argv)
{
        (void) puts("Buuh");
        return (0);
}

"ktruss" reveals what goes wrong:

 24521 cc       access("/usr/bin/../libexec/crt0.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crt0.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/libexec/crt0.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crti.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crti.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/libexec/crti.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtbegin.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtbegin.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/libexec/crtbegin.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtend.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtend.o", 0x4) : cannot open crt0.o: No such file or directory
 24521 cc       access("/usr/libexec/crtend.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtn.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/bin/../libexec/crtn.o", 0x4) Err#2 ENOENT
 24521 cc       access("/usr/libexec/crtn.o", 0x4) Err#2 ENOENT

For some reason unknown to me the object files with the startup code etc.
are not search in "/usr/libexec" although they still get installed to
"/usr/lib" as usual.

>How-To-Repeat:
Try to compile a C program.

>Fix:
A work arround is to create links in "/usr/libexec".

>Release-Note:
>Audit-Trail:
>Unformatted: