[PATCH] D29278: [ELF] Bypass section type check #2

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 30 08:51:34 PST 2017


grimar added a comment.

In https://reviews.llvm.org/D29278#660494, @evgeny777 wrote:

> I see. I'm not sure about the motivation behind those flag/type checks. @grimar has just found out that they prevent linux kernel from linking ....


Yes I tried to fix it in a some nice way at first, but found my solution will not work. So issue is next:

  # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
  # RUN: echo "SECTIONS { .notes : { *(.note.*) } }" > %t.script
  # RUN: ld.lld --script %t.script --build-id %t.o -o %t
  
  ## Check that synthetic .note.gnu.build-id links fine with non-alloc note.
  .section .note.1
  .quad 0

Testcase above should work. Linux kernel contains script:

  .notes : AT(ADDR(.notes) - 0xffffffff80000000) { __start_notes = .; *(.note.*) __stop_notes = .; } :text :note

and called with --build-id.

We create allocatable synthetic section  .note.gnu.build-id and fail to combine it with other non allocatable sections .note.*
At first I tried to ignore check for synthetic input sections, but that will not work in general case.

Now I am not sure what is good solution for that.


Repository:
  rL LLVM

https://reviews.llvm.org/D29278





More information about the llvm-commits mailing list