This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On Mon, Jan 25, 2010 at 3:10 AM, Stern, Eli <eli.stern@ti.com> wrote:
> In the constellation described below, the linker does not detect an unresolved symbol. This is only detected at run-time.
> Seems to me the problem arises from the use of "-ffunction-sections" and "--gc-sections".
>
> The problem was detected with the following tool releases:
> - gcc 4.2.0, binutils 2.19
> - gcc 3.4.6, binutils 2.15.92.0.2
>
>
> Is this a bug or a misuse of the tools?
>
> Suppose the following files:
>
> a.c: This file is compiled using "-ffunction-sections", then "ar" is used to create a statis library.
> extern void unresolved_detected_at_runtime_not_at_linktime(void);
> void bar_in_a(void)
> {
> ? ?;
> }
>
> void call_unresolved(void)
> {
> ? ?unresolved_detected_at_runtime_not_at_linktime();
> }
>
> so.c: This file is compiled to create a shared library.
> extern void unresolved_detected_at_runtime_not_at_linktime(void);
> void foo_in_so(void)
> {
> ? ?unresolved_detected_at_runtime_not_at_linktime();
> }
>
>
> main.c:
> extern void bar_in_a();
> extern void foo_in_so(void);
> int main(int argc, char *argv[])
> {
> ? ?foo_in_so();
> ? ?bar_in_a();
>
> ? ?return 0;
> }
>
> Note that the symbol "unresolved_detected_at_runtime_not_at_linktime" is not defined at all.
>
> Use the following script to build:
> #!/bin/bash -x
> gcc -ffunction-sections -c a.c -o a.o
> ar rc a.a a.o
> gcc -fPIC -c so.c -o so.o
> gcc -shared -o so.so so.o
> gcc -c main.c -o main.o
> gcc -o main main.o -Wl,--gc-sections a.a ./so.so
>
> All goes well (actually, not so well, since the linker failed to detect an unresolved symbol), till we try to run the executable:
>
> $ ./main
> ./main: symbol lookup error: ./so.so: undefined symbol: unresolved_detected_at_runtime_not_at_linktime
> $
>
>
Here is a patch. OK to install?
Thanks.
--
H.J.
---
bfd/
2010-01-25 Alan Modra <amodra@gmail.com>
H.J. Lu <hongjiu.lu@intel.com>
PR ld/11218
* elflink.c (elf_link_output_extsym): Do not ignore undefined
symbols with ref_regular set when gc_sections is active.
ld/testsuite/
2010-01-25 H.J. Lu <hongjiu.lu@intel.com>
PR ld/11218
* ld-gc/dummy.s: New.
* ld-gc/pr11218-1.c: Likewise.
* ld-gc/pr11218-2.c: Likewise.
* ld-gc/pr11218.d: Likewise.
Attachment:
binutils-pr11218-1.patch
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |