Subject: Compilation issues during compilation of an application
To: None <tech-toolchain@netbsd.org>
From: Bharat Joshi <bharat.josh@gmail.com>
List: tech-toolchain
Date: 12/16/2005 14:54:25
Hi All,
We have an internal NetBSD distribution which differs from
standard NetBSD distribution because we have defined our own malloc
library instead of usual malloc.
I am compiling loader "ld.elf_so" which defines its own "malloc".
The loader was compiling without any issues with below mentioned
commands.
Command to compile "ld.elf_so" is as follows:
Command for compiling:
i386--netbsdelf-gcc -O3 -fomit-frame-pointer -Wall -Wstrict-prototypes
-Wmissing-prototypes -Wpointer-arith -Wno-sign-compare -Wno-traditional
-Wno-uninitialized -Werror -fpic -DELFSIZE=3D32 -DLIBDIR=3D\"/usr/lib\"
<includes> -c <sourcefile>
Command for linking:
i386--netbsdelf-gcc -shared -symbolic -nostartfiles -Wl,-non_shared
-Wl,-e -Wl,.rtld_start -o <output> <objectfiles> -L<libpath> -lc_pic
-lmalloc -lc -lgcc
Note: our internal malloc library is also linked but gcc never throw
any error for multiple definition of "malloc".
I wanted to create a profiling load of this application so I add
"-pg" flag in the compilation. Compilation threw a warning that "-pg"
and "-fomit-frame-pointer" can not be enabled together. So I removed
"-fomit-frame-pointer" flag. Now compilation threw following warning:
(malloc.o)(.text+0x5d0): In function `malloc':
: multiple definition of `malloc'
malloc.o(.text+0x0): first defined here
lib/gcc-lib/i386--netbsdelf/3.3.3/../../../../i386--netbsdelf/bin/ld:
Warning: size of symbol `malloc' changed from 280 in malloc.o to 107 in
usr/lib/libmalloc.a(malloc.o)
I am trying to figure out the difference "-pg" flag would have made
here so that compilation failed with the above error. I tried searching
through webpages but could not find the reason for this.
If any more information is required, please let me know.
Any help would be greatly appreciated.
Thanks & Regards,
Bharat Joshi
PS:
"gcc" version used for compilation is:
Thread model: posix
gcc version 3.3.3 (NetBSD nb3 20040520)
Linker "i386--netbsdelf/bin/ld" version used for linking is:
GNU ld version 2.14 20030612