From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 51942 invoked by alias); 22 Feb 2016 16:25:43 -0000 Mailing-List: contact gnu-gabi-help@sourceware.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: gnu-gabi-owner@sourceware.org Received: (qmail 51930 invoked by uid 89); 22 Feb 2016 16:25:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Addend, reladyn, readelf, UD:rela.dyn X-Spam-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_50,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-qk0-f173.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=UUQpfoHSqcS4X0UQK/IEMKjPpxHBlzQHR+1gIbfmk0Y=; b=qpD+HkHbRk6veDUxdhngvDOBesQP/bMGW+FtxplQ+UA8bgVLn235ZMBQ1KbZMQnWCx 4egHdzgDvV1oYc4SoN1py5GdLxjIB/jWIfRph/gcwYXjgT8JFurVQmSJvkuEwRsmULmW UnUB7bqIDAM6aONUpuaGGixgLzonZt12CllinM6WDQfNZjj+//IVmERE4Z4HiDJQ4BeY ZJFwx/vVj0dg3HpP/Q5Dau/5cmRm8CH5NlmNUK2ebartaBuNg1TDMZgFi43oSu44loXs fpAaHaoHUpLW3hRXgAI0QpR06hyqf32c+H81k2QUjapfERTax46EhEGBD4L9Tos/kQvm hM6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=UUQpfoHSqcS4X0UQK/IEMKjPpxHBlzQHR+1gIbfmk0Y=; b=KtkbYx/TlB7/3NYZ9VfvR0VDxDJiORkHFWSMkHOj/cvTnnOnmzowB+IvbjW0Fx8nJI dj8s01LytsTUO7N9m3MEvGoZKTAxcq7iK1cdayz+7VPxvPZjeyHdt04Wz8bT3M+65Noo /ohi0MGPLn8lHNmlZiscqa+Z86YDsT0M6J5AsXBVRcMLQbnbbvBysrYZWjOiMh5Xg+M0 HvE5l/dSbSOrQCpbsB2iCe8QeTaZmiJkYS/y505ekWyLwnWPEdaEsqdEvhMb4b+nyAqH HjxoSvp6CDhumC/GiPlbUQ6gh4Ds49SXfYJVzAELqzZnu7yKaeicuzr24Y6oab5P2daM t2Ew== X-Gm-Message-State: AG10YOQK+DCNWZSAmKX7AL9MGZWWYMo10EuT7xx5cPzTHKB9EGXjigxEjZPBzDlXKH+lYrIjNEX7LTGYAwfHBA== MIME-Version: 1.0 X-Received: by 10.55.201.81 with SMTP id q78mr4833787qki.98.1456158338791; Mon, 22 Feb 2016 08:25:38 -0800 (PST) Date: Fri, 01 Jan 2016 00:00:00 -0000 Message-ID: Subject: Specify how undefined weak symbol should be resolved in executable From: "H.J. Lu" To: gnu-gabi@sourceware.org Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2016-q1/txt/msg00004.txt.bz2 Currently when building executable, undefined weak symbol is resolved differently, depending on if the relocatable input is compiled with PIC or not: hjl@gnu-tools-1 weak-1]$ cat x.c extern void __attribute__ ((weak)) fun (void); int main (void) { if (&fun != 0) fun (); return 0; } [hjl@gnu-tools-1 weak-1]$ make gcc -B./ -O2 -o x x.c gcc -B./ -O2 -o y x.c -fPIC readelf -r x Relocation section '.rela.dyn' at offset 0x328 contains 1 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000600870 000200000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 Relocation section '.rela.plt' at offset 0x340 contains 1 entries: Offset Info Type Sym. Value Sym. Name + Addend 000000600890 000100000007 R_X86_64_JUMP_SLO 0000000000000000 __libc_start_main@GLIBC_2.2.5 + 0 There is no dynamic relocation against fun, whose value is resolved to zero at link-time. readelf -r y Relocation section '.rela.dyn' at offset 0x348 contains 2 entries: Offset Info Type Sym. Value Sym. Name + Addend 0000006008a0 000100000006 R_X86_64_GLOB_DAT 0000000000000000 fun + 0 0000006008a8 000300000006 R_X86_64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 Relocation section '.rela.plt' at offset 0x378 contains 1 entries: Offset Info Type Sym. Value Sym. Name + Addend 0000006008c8 000200000007 R_X86_64_JUMP_SLO 0000000000000000 __libc_start_main@GLIBC_2.2.5 + 0 [hjl@gnu-tools-1 weak-1]$ There is dynamic relocation against fun, whose value is resolved at runt-time. We should make it consistent, regardless if input relocatable file is compiled with PIC or not. I raised the issue at gABI: https://groups.google.com/d/msg/generic-abi/Ckq19PfLxyk/eCbXPofkAQAJ But if gABI change is incompatible with other OSes, we need to specify it in GNU ABI. -- H.J.