diff options
Diffstat (limited to 'gold/script-sections.cc')
-rw-r--r-- | gold/script-sections.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gold/script-sections.cc b/gold/script-sections.cc index 3bcc9e6..67e3d65 100644 --- a/gold/script-sections.cc +++ b/gold/script-sections.cc @@ -3936,6 +3936,21 @@ Script_sections::create_note_and_tls_segments( saw_tls = true; } + + // If we are making a shared library, and we see a section named + // .interp, and the -dynamic-linker option was not used, then + // put the .interp section in a PT_INTERP segment. This is for + // GNU ld compatibility. + if (strcmp((*p)->name(), ".interp") == 0 + && parameters->options().shared() + && parameters->options().dynamic_linker() == NULL) + { + elfcpp::Elf_Word seg_flags = + Layout::section_flags_to_segment((*p)->flags()); + Output_segment* oseg = layout->make_output_segment(elfcpp::PT_INTERP, + seg_flags); + oseg->add_output_section_to_nonload(*p, seg_flags); + } } } |