ld: use a specific linker script in BPF targets
authorJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 7 Aug 2019 09:40:55 +0000 (11:40 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 7 Aug 2019 11:57:30 +0000 (13:57 +0200)
commitfca8e23c31e6ec37bdcb5cf1d981a39d1e6fb6f6
tree479748460853db0e6bd2bc62f6c80049c6b77c2e
parentfc8de8e227e5146336d654f2fb4f98010d7cf12d
ld: use a specific linker script in BPF targets

This patch makes the elf64bpf emulation to use it's own linker script,
based on elf.sc.  At the moment, the only change is that the BPF
executable doesn't define an entry symbol (BPF programs feature
several entry points scattered in several sections.)

This is a step towards the goal of generating proper ELF executables
that would be loaded by the kernel's libbpf.  We are not there yet:
BPF "programs" should still be linked with -r.

This change removes a warning while linking executables, decreases the
number of unsupported tests in the target from 47 to 29, and increases
the number of expected passes from 104 to 145.

Regtested in x86_64 for all targets.
No regressions.

ld/ChangeLog:

2019-08-07  Jose E. Marchesi  <jose.marchesi@oracle.com>

* scripttempl/elf64bpf.sc: Adapted from elf.sc.
* emulparams/elf64bpf.sh (SCRIPT_NAME): Use elf64bpf.
(EMBEDDED): Define.
* testsuite/ld-bpf/call-1.d: Do not expect a warning regarding an
undefined entry symbol.
* testsuite/ld-bpf/jump-1.d: Likewise.
* testsuite/ld-undefined/undefined.exp: Do not pass '-e entry' to
ld in BPF targets, and do not expect line number information.
* testsuite/ld-srec/srec.exp (run_srec_test): xfail s-record tests
in BPF targets.
ld/ChangeLog
ld/emulparams/elf64bpf.sh
ld/scripttempl/elf64bpf.sc [new file with mode: 0644]
ld/testsuite/ld-bpf/call-1.d
ld/testsuite/ld-bpf/jump-1.d
ld/testsuite/ld-srec/srec.exp
ld/testsuite/ld-undefined/undefined.exp