[PATCH] [LinkerScript] Handle symbols defined in linker scripts in case of shared lib
Rafael Auler
rafaelauler at gmail.com
Mon Apr 6 08:05:54 PDT 2015
Hi Simon,
LGTM, thanks!
On Mon, Apr 6, 2015 at 10:48 AM, Simon Atanasyan <simon at atanasyan.com>
wrote:
> Hi rafaelauler,
>
> This patch is a follow-up to the rL232409 and allows define symbols in a
> linker script in case of linking shared library.
>
> REPOSITORY
> rL LLVM
>
> http://reviews.llvm.org/D8840
>
> Files:
> lib/ReaderWriter/ELF/DynamicLibraryWriter.h
> test/elf/linkerscript/Inputs/simple-pic.o.yaml
> test/elf/linkerscript/symbol-definition-so.test
>
> Index: lib/ReaderWriter/ELF/DynamicLibraryWriter.h
> ===================================================================
> --- lib/ReaderWriter/ELF/DynamicLibraryWriter.h
> +++ lib/ReaderWriter/ELF/DynamicLibraryWriter.h
> @@ -60,6 +60,7 @@
> }
>
> template <class ELFT> void DynamicLibraryWriter<ELFT>::addDefaultAtoms() {
> + OutputELFWriter<ELFT>::addDefaultAtoms();
> _runtimeFile->addAbsoluteAtom("_end");
> }
>
> @@ -76,6 +77,7 @@
>
> template <class ELFT>
> void DynamicLibraryWriter<ELFT>::finalizeDefaultAtomValues() {
> + OutputELFWriter<ELFT>::finalizeDefaultAtomValues();
> lld::AtomLayout *underScoreEndAtom =
> this->_layout.findAbsoluteAtom("_end");
> assert(underScoreEndAtom);
>
> Index: test/elf/linkerscript/Inputs/simple-pic.o.yaml
> ===================================================================
> --- /dev/null
> +++ test/elf/linkerscript/Inputs/simple-pic.o.yaml
> @@ -0,0 +1,32 @@
> +FileHeader:
> + Class: ELFCLASS64
> + Data: ELFDATA2LSB
> + Type: ET_REL
> + Machine: EM_X86_64
> +
> +Sections:
> + - Name: .text
> + Type: SHT_PROGBITS
> + Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
> + AddressAlign: 4
> + Size: 16
> +
> + - Name: .data
> + Type: SHT_PROGBITS
> + Flags: [ SHF_WRITE, SHF_ALLOC ]
> + AddressAlign: 4
> + Size: 16
> +
> +Symbols:
> + Local:
> + - Name: .data
> + Type: STT_SECTION
> + Section: .data
> + - Name: .text
> + Type: STT_SECTION
> + Section: .text
> + Global:
> + - Name: foo
> + Type: STT_FUNC
> + Section: .text
> + Size: 16
> Index: test/elf/linkerscript/symbol-definition-so.test
> ===================================================================
> --- /dev/null
> +++ test/elf/linkerscript/symbol-definition-so.test
> @@ -0,0 +1,32 @@
> +/*
> +We test whether we can define symbols in a linker script and have them
> exported
> +to the output file symbol table. This test is the same as
> symbol-definition.test
> +but make checking in case of shared library linking.
> +
> +We use the following linker script for this test:
> +*/
> +
> +SECTIONS
> +{
> + .text : { *(.text) }
> + MYSTRING = .;
> + .data : { *(.data) }
> +}
> +
> +/*
> +RUN: yaml2obj -format=elf %p/Inputs/simple-pic.o.yaml -o=%t.o
> +
> +RUN: lld -flavor gnu -target x86_64 -shared -T %s %t.o -o %t.so
> +RUN: llvm-readobj -s -symbols %t.so | FileCheck -check-prefix CHECKSYMS %s
> +
> +CHECKSYMS: Name: .data
> +CHECKSYMS-NEXT: Type: SHT_PROGBITS
> +CHECKSYMS-NEXT: Flags [
> +CHECKSYMS-NEXT: SHF_ALLOC
> +CHECKSYMS-NEXT: SHF_WRITE
> +CHECKSYMS-NEXT: ]
> +CHECKSYMS-NEXT: Address: 0x401060
> +
> +CHECKSYMS: Name: MYSTRING
> +CHECKSYMS-NEXT: Value: 0x401060
> +*/
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150406/1ce0dfcd/attachment.html>
More information about the llvm-commits
mailing list