Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Mar 2010 14:29:23 -0500
From:      Nathan Whitehorn <nwhitehorn@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   Review/testing request: changing the detection of data_addr/text_addr
Message-ID:  <4BAA6813.7060604@freebsd.org>

next in thread | raw e-mail | index | archive | help
We currently detect the offical "text" and "data" addresses for ELF 
files in kern/imgact_elf.c by the heuristic of calling whichever section 
contains the executable's entry point the text section and everything 
else data. In general, both this concept and the very few things that 
use them are obsolete and rare. The data addresses are, however, used in 
obreak() to find the current break. On powerpc64, this logic fails, 
because the entry point points to a function descriptor in the data 
section, causing sbrk() to fail, which in turn breaks profiling.

The patch at http://people.freebsd.org/~nwhitehorn/textseg.diff changes 
this algorithm to make the official text area be the largest executable 
segment, and all others data. The patch has been tested on sparc64, 
amd64, powerpc, and (of course) powerpc64, with no evident bad effects.

I would appreciate any comments, as well as tests on other 
architectures. The main symptom of getting these values wrong is that 
sbrk() stops working correctly, so I have put a simple test program for 
sbrk() at http://people.freebsd.org/~nwhitehorn/sbrktest.c.
-Nathan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BAA6813.7060604>