[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 5/7] user-i386.ld: Linkerskript .so-tauglich machen



! user-i386.ld: Wenn man __ctor/dtor_start/end__ innerhalb der Input
  Section Description anlegt statt außenrum, kommt ld nicht auf die
  Idee, irgendwelche Orphaned Sections dazwischenzupacken, die als
  Konstruktoren interpretiert nicht so richtig viel Sinn ergeben.

+ user-i386.ld: .dynbss explizit hinzugefügt (das hatte sich ohne den
  Fix zwischen die Konstruktoren gemogelt)

+ user-i386.ld: tmslang-Sektion immer anlegen, auch wenn das Programm
  kein TMS benutzt. Die libc hat Funktionen, die die Sektion benutzen,
  und sobald sie eine .so ist, werden alle Funktionen reingepackt und es
  linkt nicht mehr ohne die Sektion.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/user-i386.ld | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/modules/user-i386.ld b/src/modules/user-i386.ld
index 4709d66..0e3885e 100644
--- a/src/modules/user-i386.ld
+++ b/src/modules/user-i386.ld
@@ -14,6 +14,12 @@ SECTIONS
 	{
 		*(.rodata)
 	}
+    tmslang : {
+        . = .;
+        __start_tmslang = .;
+        *(tmslang)
+        __stop_tmslang = .;
+    }
 	.data ALIGN(4096) : AT(ADDR(.data))
 	{
 		*(.data)
@@ -21,18 +27,19 @@ SECTIONS
 	.bss ALIGN(4096) : AT(ADDR(.bss))
 	{
 		*(.bss)
+		*(.dynbss)
 	}
 
-    __ctor_start__ = .;
     .ctors : AT(ADDR(.ctors)) {
+        __ctor_start__ = .;
         *(.ctors)
+        __ctor_end__ = .;
     }
-    __ctor_end__ = .;
 
-    __dtor_start__ = .;
     .dtors : {
+        __dtor_start__ = .;
         *(.dtors)
+        __dtor_end__ = .;
     }
-    __dtor_end__ = .;
 }
 
-- 
2.1.4