From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manfred Hollstein To: ian@cygnus.com Cc: bfd@cygnus.com, gas2@cygnus.com, bug-gnu-utils@gnu.org Subject: BUG in binutils-2.9.1/ld on m88k-motorola-sysv3 Date: Tue, 07 Jul 1998 04:00:00 -0000 Message-id: <13729.64373.444444.251863@slsvhmt> X-SW-Source: 1998/msg00059.html Given this small C source /* foo.c */ extern char global_var; main () { global_var = 1; } /* EOF */ should result in an executable with undefined symbols, shouldn't it? binutils-2.9.1/ld fails to recognize this and produces an executable without any complaint, which will core dump when running, of course. I've built the stuff using: $ env CC=sparc-sun-solaris2.5.1-gcc 'CFLAGS=-O0 -g ' LDFLAGS=-g ' \ LINGUAS=de es fr it' 'INSTALL=/tools/gnu/bin/install -c' \ 'INSTALL_DATA=/tools/gnu/bin/install -c -m 644' \ 'INSTALL_PROGRAM=/tools/gnu/bin/install -c -m 755' \ /bin/sh ../binutils-2.9.1/configure --host=sparc-sun-solaris2.5.1 \ --target=delta88 --build=sparc-sun-solaris2.5.1 \ --srcdir=../binutils-2.9.1 \ --prefix=/u/b60/manfred/gnu/sparc-sun-solaris2.5.1 \ --enable-targets=delta88,m68k-motorola-sysv,m88k-motorola-sysv3,m68k-unknown-ieee \ --enable-shared=no --verbose $ gmake -wk SHELL=/u/b60/manfred/gnu/sparc-sun-solaris2.5.1/bin/bash all check info To simplify checking, fixing (I've already debugged, but cannot find the reason), ... I've appended a small 88k assembler source, which can be used to demonstrate the problem. file "foo.s" text align 8 global __start __start: or.u r13,r0,hi16(_global_var) or r12,r0,1 st.b r12,r13,lo16(_global_var) jmp r1 $ ./gas/as-new -o foo.o foo.s $ ./binutils/nm-new foo.o 00000010 b .bss 00000010 d .data 00000000 t .text 00000000 T __start U _global_var Looks good, so far; but, when linking, NO complaint: $ ./ld/ld-new -o a.out foo.o $ ./binutils/nm-new a.out 004000c8 b .bss 004000c8 d .data 000200b8 t .text 000200c8 T __.fini_end 000200c8 T __.fini_start 000200b8 T __.init.end 000200b8 T __.init.start 000200c8 T __.initp.end 000200c8 T __.initp.start 000200c8 T __.tdesc_start 000200b8 T __.text.start 000200c8 T __.text_end 004000c8 B __end 000200b8 T __start 004000c8 D _edata 004000c8 B _end 000200c8 T _etext U _global_var As you can see, "global_var" is still undefined. This problem isn't new, I can easily reproduce it with binutils-2.7 - funnily, we've been using this linker already without problems for many million lines of C/C++ code :-? Any ideas? Thanks -- Manfred Hollstein If you have any questions about GNU software: Hindenburgstr. 13/1 < mailto:manfred@s-direktnet.de > 75446 Wiernsheim, FRG < http://www.s-direktnet.de/HomePages/manfred/ > PGP key: < http://www.s-direktnet.de/HomePages/manfred/manfred.asc >