Does "makeoptions WITH_CTF=yes" actually work?

Alexander Leidinger netchild at FreeBSD.org
Wed Apr 14 11:23:53 UTC 2010


Quoting Navdeep Parhar <nparhar at gmail.com> (from Wed, 14 Apr 2010  
02:31:30 -0700):

> On Wed, Apr 14, 2010 at 1:58 AM, Alexander Leidinger
> <netchild at freebsd.org> wrote:
>> Quoting Navdeep Parhar <nparhar at gmail.com> (from Wed, 14 Apr 2010 01:33:29
>> -0700):
>>
>>> I read the UPDATING entry that accompanied r206082 and added WITH_CTF=yes
>>> to
>>> my kernel config, hoping to get CTF information in the kernel and all
>>> modules.  No luck.
>>> It appears that NO_CTF remains set to 1 inspite of the undef NO_CTF in
>>> various .mk files
>>> and ctfconvert never runs.
>>
>> This is the output I get in my kernel build directory:
>> ---snip---
>> # make -V NO_CTF -V WITH_CTF
>>
>> yes
>
> Can you also try a "makeoptions WITH_CTF=yes" in your KERNCONF

The above one is with WITH_CTF in my kernel config, but this was  
generated manually with cd /sys/i386/conf; config CONF; cd  
../compile/CONF; make -V...

> and see if the results are as expected?  How was r206082 tested?  I'm
> trying to figure out the differences, if any, between your build setup and
> mine.

I made a buildworld with and without WITH_CTF in src.conf to confirm  
that it works (no installkernel, as the world is known to be not  
useable with CTF), and I did a lot of tests by hand as above  
(config;make).

>> ---snip---
>>
>>> I built the kernel with a "make -j16 buildkernel" in /usr/src.
>>
>> How do you determine if ctfconvert is run or not?
>
> I got rid of the @ in front of all the CTF commands in all the .mk files.  I
> could see that NO_CTF was 1 and so the ctfconvert after || wouldn't
> run.

Can it be that NO_CTF is somewhere, e.g. in src.conf or make.conf or  
in the environment of the shell? Did you do an installworld before?  
The installworld is maybe important, I do not have in mind if  
/ush/share/mk/ or SRC/share/mk is used and as such the NO_CTF which  
was before in /usr/share/mk/* could cause what you see.

> [ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT}  
> ${CTFFLAGS} ${.TARGET}
>
> [ -z "ctfconvert" -o -n "1" ] || ........
>
> Do you see anything different if you remove all the @'s?

I did a "objdump -h *.o | grep SUNW_ctf" and I get a lot of ctf  
sections displayed. Adding the @ in front was the last action I did,  
before that every case was working correctly.

>> If you expect to see
>> ctfconvert lines in the build output: this will not be the case, no matter
>> if you enable it or not. With the current way of handling it, I'm not aware
>> of a way how to print the command when ctfconvert is really executed (we can
>> maybe add an echo which prints out something, but the question is if this is
>> worth the effort).
>>
>> You can run objdump -f <objectfile> and have a look if the .SUNW_ctf section
>> is there to determine if CTF stuff was inserted or not.
>
> I tried this:
> # ctfdump /usr/obj/usr/src/sys/GENERIC/kernel
> /usr/obj/usr/src/sys/GENERIC/kernel does not contain .SUNW_ctf data

That's a lot of output (that I get when I do it on my kernel which was  
build with makeoptions WITH_CTF=yes), if you just want to know if  
there is or is not ctf data in the kernel, the objdump (with -h, and  
not -f as I wrote above) gives just one line if ctf date is present.

Bye,
Alexander.

-- 
http://www.Leidinger.net  Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org     netchild @ FreeBSD.org  : PGP ID = 72077137
	   THE DAILY PLANET

	SUPERMAN SAVES DESSERT!
	Plans to "Eat it later"


More information about the freebsd-current mailing list