diff options
Diffstat (limited to 'target/linux/uml/patches-2.6.34')
-rw-r--r-- | target/linux/uml/patches-2.6.34/006-uml_libc_link_errors.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/target/linux/uml/patches-2.6.34/006-uml_libc_link_errors.patch b/target/linux/uml/patches-2.6.34/006-uml_libc_link_errors.patch new file mode 100644 index 0000000000..340a5f2668 --- /dev/null +++ b/target/linux/uml/patches-2.6.34/006-uml_libc_link_errors.patch @@ -0,0 +1,54 @@ +diff --git a/arch/um/kernel/dyn.lds.S b/arch/um/kernel/dyn.lds.S +index 7fcad58..85babf5 100644 +--- a/arch/um/kernel/dyn.lds.S ++++ b/arch/um/kernel/dyn.lds.S +@@ -50,8 +50,21 @@ SECTIONS + .rela.got : { *(.rela.got) } + .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } + .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } +- .rel.plt : { *(.rel.plt) } +- .rela.plt : { *(.rela.plt) } ++ /* Deal with multilib libc */ ++ .rel.plt : ++ { ++ *(.rel.plt) ++ PROVIDE_HIDDEN (__rel_iplt_start = .); ++ *(.rel.iplt) ++ PROVIDE_HIDDEN (__rel_iplt_end = .); ++ } ++ .rela.plt : ++ { ++ *(.rela.plt) ++ PROVIDE_HIDDEN (__rela_iplt_start = .); ++ *(.rela.iplt) ++ PROVIDE_HIDDEN (__rela_iplt_end = .); ++ } + .init : { + KEEP (*(.init)) + } =0x90909090 +diff --git a/arch/um/kernel/uml.lds.S b/arch/um/kernel/uml.lds.S +index e7a6cca..50d80e8 100644 +--- a/arch/um/kernel/uml.lds.S ++++ b/arch/um/kernel/uml.lds.S +@@ -35,6 +35,21 @@ SECTIONS + *(.gnu.warning) + *(.gnu.linkonce.t*) + } ++ /* Deal with multilib libc */ ++ .rel.plt : ++ { ++ *(.rel.plt) ++ PROVIDE_HIDDEN (__rel_iplt_start = .); ++ *(.rel.iplt) ++ PROVIDE_HIDDEN (__rel_iplt_end = .); ++ } ++ .rela.plt : ++ { ++ *(.rela.plt) ++ PROVIDE_HIDDEN (__rela_iplt_start = .); ++ *(.rela.iplt) ++ PROVIDE_HIDDEN (__rela_iplt_end = .); ++ } + + . = ALIGN(PAGE_SIZE); + .syscall_stub : { |