This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Regarding "Inconsistency detected by ld.so" 32 Bit Elf


Hi All,

I'm working custom 32 Bit PPC linker script in order to tweak the user level process memory allocation/reservation:

I've one standalone application (32 - Bit) for which need contiguous memory layout. Due to the shared libraries falling in a place (libc @0fe40000 and ld @0ffc0000) which is blocking us from using contiguous memory (lower part). 

I tried certain things with prelink tool to relocate those libraries and able to successfully to relocate in expected place. But, I like to achieve the same thing using linker script tweak. 

I believe during process instantiation, When the dynamic loader seeks for the unmapped region there is no mmap in area 0x0f... which resulted in placing the shared libraries @0x0f... 

By default PPC linker is using "-z combreloc" script. I've created one custom linker script on top of comroloc after adding a fack section @0x0f... which resulted in "Inconsistency error" 

Without fake section, custom linker script is working fine. ASLR - PAX and all other randomization are disabled in my system.


Below is an attempt to create a fake block between (00020000 - 0fffffff) with custom linker section included  which resulted libdl to fall @0fe20000 and executable loading is failing with error message "Inconsistency detected by ld.so".

PHDR

TSTSTART PT_LOAD FLAGS (0);

SECTION

  .TSTSTART 0x00020000: ALIGN (0x10000)
    {
    . = 0x0FFDFFFF;
  } :TSTSTART 


Could anyone please share any pointers on this?

Thanks in Advance. 		 	   		  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]