On 201105 1718, Daniele Buono wrote:
> LLVM's linker, LLD, supports the keyword "INSERT AFTER", starting with
> version 11.
> However, when multiple sections are defined in the same "INSERT AFTER",
> they are added in a reversed order, compared to BFD's LD.
>
> This patch makes fork_fuzz.ld generic enough to work with both linkers.
> Each section now has its own "INSERT AFTER" keyword, so proper ordering is
> defined between the sections added.
>
Hi Daniele,
Good to know that LLVM now has support for "INSERT AFTER" :)
I compared the resulting symbols between __FUZZ_COUNTERS_{START,END}
(after linking with BFD) before/after this patch, and they look good. I
also ran a test-build with OSS-Fuzz container and confirmed that the
resulting binary also had proper symbols.
Reviewed-by: Alexander Bulekov <[email protected]>
Tested-by: Alexander Bulekov <[email protected]>
Thanks
> Signed-off-by: Daniele Buono <[email protected]>
> ---
> tests/qtest/fuzz/fork_fuzz.ld | 12 +++++++++++-
> 1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/tests/qtest/fuzz/fork_fuzz.ld b/tests/qtest/fuzz/fork_fuzz.ld
> index bfb667ed06..cfb88b7fdb 100644
> --- a/tests/qtest/fuzz/fork_fuzz.ld
> +++ b/tests/qtest/fuzz/fork_fuzz.ld
> @@ -16,6 +16,11 @@ SECTIONS
> /* Lowest stack counter */
> *(__sancov_lowest_stack);
> }
> +}
> +INSERT AFTER .data;
> +
> +SECTIONS
> +{
> .data.fuzz_ordered :
> {
> /*
> @@ -34,6 +39,11 @@ SECTIONS
> */
> *(.bss._ZN6fuzzer3TPCE);
> }
> +}
> +INSERT AFTER .data.fuzz_start;
> +
> +SECTIONS
> +{
> .data.fuzz_end : ALIGN(4K)
> {
> __FUZZ_COUNTERS_END = .;
> @@ -43,4 +53,4 @@ SECTIONS
> * Don't overwrite the SECTIONS in the default linker script. Instead insert
> the
> * above into the default script
> */
> -INSERT AFTER .data;
> +INSERT AFTER .data.fuzz_ordered;
> --
> 2.17.1
>