i386: Use -Ttext-segment to avoid address collision
authorBen Hutchings <ben@decadent.org.uk>
Sun, 6 Jan 2019 03:19:51 +0000 (03:19 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 6 Jan 2019 19:33:01 +0000 (19:33 +0000)
Building klibc for i386 with binutils 2.31 adds an extra
.note.gnu.property section to klibc.so, the address of which is not
affected by the -Ttext option.  Loading a klibc executable then
fails with the following kernel log message:

9409 (sh.shared): Uhuuh, elf segment at 0000000000600000 requested but the memory is mapped already

I don't exactly see why this is happening, but it is triggered by the
new section and the collision can be avoided by passing -Ttext-segment
instead of -Ttext, similarly to x86_64.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Name i386-use-ttext-segment-to-avoid-address-collision.patch

usr/klibc/arch/i386/MCONFIG

index 1150ecedf799838c6d04239f37c9db26286549a9..bfec004a3c8bf32e4caa30f2289a99f0e1dcfbd1 100644 (file)
@@ -30,7 +30,7 @@ KLIBCBITSIZE  = 32
 # This address needs to be reachable using normal inter-module
 # calls, and work on the memory models for this architecture
 # 96 MB - normal binaries start at 128 MB
-KLIBCSHAREDFLAGS       = -Ttext 0x06000200
+KLIBCSHAREDFLAGS       = -Ttext-segment 0x06000000
 
 # Asm includes for i386 are in the merged x86 tree
 KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/x86/include