https://sourceware.org/bugzilla/show_bug.cgi?id=33265

            Bug ID: 33265
           Summary: The linker script interpreter does not check for
                    recursion before opening a new file
           Product: binutils
           Version: 2.44
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: kartatz at amanoteam dot com
  Target Milestone: ---

I was messing around with linker scripts when, at some point, I mistakenly
created a linker script that points to itself, causing bfd to recursively
attempt to open the same file over and over. This can be reproduced with:

```
$ echo 'GROUP ( ./libfoo.so )' > ./libfoo.so
$ echo 'int main() {}' > '/main.c
$ gcc -l foo -L . ./main.c
```

It took me some time to figure out what the problem was, since the linker just
hangs forever without outputting any error message.

For reference, older versions of the linker (specifically, the one that comes
with Ubuntu 20.04 by default) output this error message instead:

```
$ gcc -l foo -L . ./main.c -Xlinker -v
<...>
GNU ld (GNU Binutils for Ubuntu) 2.34
/usr/bin/ld: cannot open linker script file ./libfoo.so: Too many open files
collect2: error: ld returned 1 exit status
```

Not a very helpful error message, but still better than outputting no error at
all.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to