Hi,

I've found the following bug in GNAT when building dynamic libraries using
project files:

Ada spec (p.ads)
================

package P is

   procedure Dummy;

end P;

Ada body (p.adb)
================

package body P is

   -----------
   -- Dummy --
   -----------

   procedure Dummy is
   begin
      null;
   end Dummy;

end P;

Project file (lib_project.gpr)
===========================

project Lib_Project is

   for Source_Files use ("p.ads", "p.adb");
   for Library_Name use "my_lib";
   for Library_Dir use "./libs";
   for Object_Dir use "./objects";
   for Library_Kind use "relocatable";

end Lib_Project;

Command:
=========

% gnatmake -p -P lib_project.gpr
% ls objects libs

Expected behavior:
==================

% gnatmake -p -P lib_project.gpr
object directory "/Volumes/Stock/Dev/gnat_bug_report/./objects" created
library directory "/Volumes/Stock/Dev/gnat_bug_report/./libs" created
gcc -c -fPIC -I- -gnatA /Volumes/Stock/Dev/gnat_bug_report/p.adb

building relocatable library for project lib_project
/Volumes/Stock/Dev/gcc-4.3_trunk/bin/gcc -dynamiclib -o
/Volumes/Stock/Dev/gnat_bug_report/libs/libmy_lib.dylib
-L/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib/
-fPIC
-L/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib/
-lgnat-4.3 -Wl,-flat_namespace -shared-libgcc
/Volumes/Stock/Dev/gnat_bug_report/objects/p.o
/usr/bin/ld: warning can't open dynamic library: /libgcc_s.1.dylib referenced
from:
/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib//libgnat-4.3.dylib
(checking for undefined symbols may be affected) (No such file or directory,
errno = 2)

[The warning issued by the linker here is another independant bug (see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30572)]

% ls objects libs
libs:
libmy_lib.dylib p.ali

objects:
p.ali   p.o

Actual behavior:
================

% gnatmake -p -P lib_project.gpr
object directory "/Volumes/Stock/Dev/gnat_bug_report/./objects" created
library directory "/Volumes/Stock/Dev/gnat_bug_report/./libs" created
gcc -c -fPIC -I- -gnatA /Volumes/Stock/Dev/gnat_bug_report/p.adb

building relocatable library for project lib_project
/Volumes/Stock/Dev/gcc-4.3_trunk/bin/gcc -dynamiclib -o libmy_lib.dylib
-L/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib/
-fPIC
-L/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib/
-lgnat-4.3 -Wl,-flat_namespace -shared-libgcc
/Volumes/Stock/Dev/gnat_bug_report/objects/p.o
/usr/bin/ld: warning can't open dynamic library: /libgcc_s.1.dylib referenced
from:
/Volumes/Stock/Dev/gcc-4.3_trunk/lib/gcc/i686-apple-darwin8/4.3.0/adalib//libgnat-4.3.dylib
(checking for undefined symbols may be affected) (No such file or directory,
errno = 2)

% ls objects libs
libs:
p.ali

objects:
libmy_lib.dylib p.ali           p.o


The library file libmy_lib.dylib is created in the object directory. This
causes a problem if we want to link against this library...

The attached patch fixes this problem.

Here is my system configuration:

* the exact version of GCC, as shown by "gcc -v";

Using built-in specs.
Target: i686-apple-darwin8
Configured with: ../gcc_trunk/configure --disable-nls
--prefix=/Volumes/Stock/dev/gcc-4.3_trunk --host=i686-apple-darwin8
--target=i686-apple-darwin8 --build=i686-apple-darwin8 --enable-languages=c,ada
--with-gmp=/opt/local
Thread model: posix
gcc version 4.3.0 20071206 (experimental) (GCC)

* the system type (uname -a);

Darwin xxxxxxxxx.xxxx.xx 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10
18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386

* the options when GCC was configured/built;

../gcc_trunk/configure --disable-nls --prefix=/Volumes/Stock/dev/gcc-4.3_trunk
--host=i686-apple-darwin8 --target=i686-apple-darwin8
--build=i686-apple-darwin8 --enable-languages=c,ada --with-gmp=/opt/local


-- 
           Summary: Dynamic library created in Object_Dir instead of
                    Library_Dir in *-darwin*
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bechir dot zalila at gmail dot com
 GCC build triplet: i686-apple-darwin8
  GCC host triplet: i686-apple-darwin8
GCC target triplet: i686-apple-darwin8


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34358

Reply via email to