From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21185 invoked by alias); 5 Jun 2016 07:28:33 -0000 Mailing-List: contact gnu-gabi-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: gnu-gabi-owner@sourceware.org Received: (qmail 19469 invoked by uid 89); 5 Jun 2016 07:28:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.1 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=H*R:D*gmail.com X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: mail-oi0-f66.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:subject:reply-to:to:organization:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=Hw1VGrXBAA9ikkTjgLt4MOr65sl0+hReb+UDXOzPCHo=; b=UYFJ2dvPwTvIata13K134Br8lm2I79zqjKb1rcdSo1poiGzn4eRSNJpnEjSaFBGhuO Gm+5ZZYH6wIh/3/nrjvjTbiJ5ALRPtUeHbggKBU7vu5EChFtJWEXemVq58Rperb77cD2 jMlGu/DTi/rfkjqSHWAbDG5rnRKxdwfUxxcVa0T9mYRuzpg/4tSKYpBb+4Zk3XDnRUgH GCiJZXNjf9uf3Oa5kaz2k2R5/8Jd38qWLApanMWRjfGCg8LLXUrPTaiKoOubgv443Nr1 KhkHUqMj4ECarBwb9L/2f+hjegFySsqkPwsAJZzgT1oqykCCtYVk9S/qj7HXJc+/RKNm +mhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:reply-to:to:organization:message-id :date:user-agent:mime-version:content-transfer-encoding; bh=Hw1VGrXBAA9ikkTjgLt4MOr65sl0+hReb+UDXOzPCHo=; b=byRV1+k49MuLlR7g/TZXzDqp3/6EuefZkH/Ic+swayuabUa5SCbZWph/EYnqa2X3iG fPfiU14Xgdcj+qdqi8Aul2Dw/WnqOlvy9eN4RhpdeuYOavjqQkUP6MUsv5F5Tpq3J0DE WnlTmASd7z5HoLtp/GoPV3sQDWtl4WqBy0htUudZ2kj2fzROuCt2irNDXlS4Yoh6ADVr 2qM5qQ2fXAMUWUMtUsf06BfplKZEjyk/P2e62qx7Wh6rd/9asjuFGm8QtBHPzdeTunFQ dfKKNiKmJ2DCgPDdDvKtkN1VePBjmwrPrGT1tF0KZO60Ox5x9T4GED0jdNIx7+DZUOJ0 Pq3g== X-Gm-Message-State: ALyK8tIouYjRVKTuxPcCKFliNk5xX6rMDAO4+LCf/53JQs5vrKJqDNlNgN0q0TfELgoDGg== X-Received: by 10.202.45.77 with SMTP id t74mr5934310oit.23.1465111708781; Sun, 05 Jun 2016 00:28:28 -0700 (PDT) From: Suprateeka R Hegde Subject: Deferred Binding of Function Pointers in SHLIB Reply-To: hegdesmailbox@gmail.com To: gnu-gabi@sourceware.org Organization: HEGDESASPECT Message-ID: <36cd44e9-9f62-6784-17d8-22dd3c41e9f6@gmail.com> Date: Fri, 01 Jan 2016 00:00:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Antivirus: avast! (VPS 160604-2, 04-06-2016), Outbound message X-Antivirus-Status: Clean X-SW-Source: 2016-q2/txt/msg00010.txt.bz2 Hi Consider this case: --- $ cat libmain.c #include extern void foo(void); void (*func_p)(void) = foo; void libmain() { printf("printf()\n"); (*func_p)(); } $ cc -shared -fpic libmain.c -o libmain.so $ cc main.c -L. -lmain -Wl,--unresolved-symbols=ignore-all $ LD_LIBRARY_PATH=. ./a.out ./a.out: symbol lookup error: ./libmain.so: undefined symbol: foo --- Though lazy binding is default, it does not seem to be applicable to shared libraries. However, if the same libmain.c is made into an executable, as in: --- $ cat libmain.c #include extern void foo(void); void (*func_p)(void) = foo; int main() { printf("printf()\n"); (*func_p)(); return 0; } $ cc libmain.c -Wl,--unresolved-symbols=ignore-all $ ./a.out printf() Segmentation fault (core dumped) --- That means lazy binding has happened. I would like to see both shlibs and executable behavior same here. What is the problem if we make this change? This can be part of the GNU-gABI itself. -- Supra