amd64/76224: gcc fails to invoke ld properly, ld fails to examine ldconfig -32's libraries

Jonathan Dama jd at
Thu Jan 13 14:30:59 PST 2005

>Number:         76224
>Category:       amd64
>Synopsis:       gcc fails to invoke ld properly, ld fails to examine ldconfig -32's libraries
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-amd64
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jan 13 22:30:35 GMT 2005
>Originator:     Jonathan Dama
>Release:        FreeBSD-5.3/amd64
Caltech VLSI Group
FreeBSD 5.3-STABLE FreeBSD 5.3-STABLE #0: Mon Jan 10 11:53:44 PST 2005     root at  amd64

Though /usr/bin/ld reports that it can make elf_i386_fbsd, cc -m32 simple-c-file.c does not properly build

gcc does not translate -m32 to mean that ld must be envoked with /usr/lib32 bits instead of /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o

also mistakenly gives: -dynamic-linker /libexec/ and -L/usr/lib instead of -dynamic-linker /libexec/ and -L/usr/lib32

Following simple test program (main.c):
#include <stdio.h>
int main() { printf("Hello world\n"); return 0; }

jd at carbon:~/tmp/cdemo>cc -m32 -v -o test main.c

Using built-in specs.
Configured with: FreeBSD/amd64 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728
 /usr/libexec/cc1 -quiet -v -D_LONGLONG main.c -quiet -dumpbase main.c -m32 -aux
base main -version -o /var/tmp//ccGKzqtl.s
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
End of search list.
GNU C version 3.4.2 [FreeBSD] 20040728 (amd64-fbsdproj-freebsd)
        compiled by GNU C version 3.4.2 [FreeBSD] 20040728.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
 /usr/bin/as -V -Qy --32 -o /var/tmp//ccdmrhyt.o /var/tmp//ccGKzqtl.s
GNU assembler version 2.15 [FreeBSD] 2004-05-23 (x86_64-obrien-freebsd) using BF
D version 2.15 [FreeBSD] 2004-05-23
 /usr/bin/ld -m elf_i386_fbsd -V -dynamic-linker /libexec/ -o test /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib -melf_i386_fbsd /var/tmp//ccdmrhyt.o -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
GNU ld version 2.15 [FreeBSD] 2004-05-23
  Supported emulations:
/usr/bin/ld: skipping incompatible /usr/lib/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc      

More information about the freebsd-amd64 mailing list