From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: Qun-Ying Newsgroups: comp.lang.ada Subject: gprbuild and Linker_Options bug? Date: Mon, 31 Mar 2014 16:21:51 -0700 Organization: Aioe.org NNTP Server Message-ID: NNTP-Posting-Host: QG+sVfyUW3QoXBz9uF2CgQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:19064 Date: 2014-03-31T16:21:51-07:00 List-Id: With gnat 2013, GPRBUILD GPL 2013 (20130314) (x86_64-pc-linux-gnu) For this simple program: a.gpr: -------- project A is for Main use ("main.adb"); package Linker is for Linker_Options use ("-lgs"); end Linker; end A; main.adb: ---------- with Interfaces.C; use Interfaces.C; with b; use b; procedure Main is revision: aliased revision_t; ret : int; begin ret := b.revision (revision'Access, revision'Size / 8); end Main; b.ads --------- -- simple single function binding for gs to illustrate the bug with Interfaces.C; use Interfaces.C; with Interfaces.C.Strings; with System; package b is type revision_t is limited private; function revision (pr : access revision_t; len : int) return int; pragma Import (C, revision, "gsapi_revision"); private type revision_t is limited record product : Interfaces.C.Strings.chars_ptr; copyright : Interfaces.C.Strings.chars_ptr; revision : long; revisiondate : long; end record; pragma Convention (C_Pass_By_Copy, revision_t); end b; When running under gprbuild -P a, It will failed with the following message: gcc main.o -o main main.o: In function `_ada_main': main.adb:(.text+0x21): undefined reference to `gsapi_revision' collect2: error: ld returned 1 exit status gprbuild: link of main.adb failed Where it fails to use the Linker_Options defined in the project file. But "gnatmake -P a" will build the program without problem. Is this a known problem? Or something I have missed? If added a line of 'pragma Linker_Options ("-lgs")' in b.ads, then gprbuild could build without problem.